Сейчас 22:30:05 Пятница, 22 ноября, 2024 год
[ x ] Главная ⇒ Форум ⇐ RSS Файлы Cтатьи Картинки В о й т и   или   з а р е г и с т р и р о в а т ь с я


[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Модератор форума: PUVer, SirNikolas, Ty3uK  
[Вопрос] Некорректная работа условий
SmartarosДата: Четверг, 11 Октября 2012, 18:35:04 | Сообщение # 1
9 уровень
Группа: Проверенные
Сообщений: 810
Награды: 0
Репутация: 135
Блокировки:
Code
function SilaTmi_Damaged_Act takes nothing returns nothing
     local unit u = GetEventDamageSource()
     local unit c = GetTriggerUnit()
     local real a = GetUnitFacing(u)
     local real d = GetEventDamage()
     local real ds = d * 0.5
     local real dss = ds * (1. + 0.01 * udg_SilaTmiDeath)
     local real dc = d * (0.4 + 0.05 * GetUnitAbilityLevel(u, Sila_Tmi_Ability_Crit())) * udg_SilaTmiDeath / 5
     local real dcs = dc * (1. + 0.01 * udg_SilaTmiDeath)
     local real dsc = dc * 0.5
     local real dscs = dcs * (1. + 0.01 * udg_SilaTmiDeath)
     local real width = Sila_Tmi_Width(u)
     local real dist = Sila_Tmi_Dist(u)
     local real x1 = GetWidgetX(u) + Cos((a - 90.) * .017) * width / 2
     local real x2 = GetWidgetX(u) + Cos((a + 90.) * .017) * width / 2
     local real x3 = x1 + Cos(a * .017) * dist
     local real x4 = x2 + Cos(a * .017) * dist
     local real y1 = GetWidgetY(u) + Sin((a - 90.) * .017) * width / 2
     local real y2 = GetWidgetY(u) + Sin((a + 90.) * .017) * width / 2
     local real y3 = y1 + Sin(a * .017) * dist
     local real y4 = y2 + Sin(a * .017) * dist
     local group g = CreateGroup()
     local unit b = null
     local integer ch = GetRandomInt(1, 100)
     call GroupEnumUnitsInRange(g, GetWidgetX(u), GetWidgetY(u), d + 100. , null)
     loop
         b = FirstOfGroup(g)
         exitwhen (b == null)
         if IsCoordsIn4Gon(GetWidgetX(b), GetWidgetY(b), x1, y1, x2, y2, x3, y3, x4, y4) == true and b == c and ch <= Sila_Tmi_Crit_Chance(u) and GetUnitAbilityLevel(b, Sila_Tmi_Ability_Slow_Buff()) >= 1 and ChekSpellUnit(u, b) == true then
             call DisableTrigger(GetTriggeringTrigger())
             call UnitDamageTarget(u, b, dcs, false, false, ATTACK_TYPE_CHAOS, DAMAGE_TYPE_UNKNOWN, WEAPON_TYPE_WHOKNOWS)
             call EnableTrigger(GetTriggeringTrigger())
             call DestroyEffect(AddSpecialEffectTarget(Sila_Tmi_Effect_Crit_Slow(), c, "chest"))
             call CritTextTag(dcs, GetWidgetX(u) - 20, GetWidgetY(u) - 20)
         elseif IsCoordsIn4Gon(GetWidgetX(b), GetWidgetY(b), x1, y1, x2, y2, x3, y3, x4, y4) == true and b == c and ch <= Sila_Tmi_Crit_Chance(u) and ChekSpellUnit(u, b) == true then
             call DisableTrigger(GetTriggeringTrigger())
             call UnitDamageTarget(u, b, dc, false, false, ATTACK_TYPE_CHAOS, DAMAGE_TYPE_UNKNOWN, WEAPON_TYPE_WHOKNOWS)
             call EnableTrigger(GetTriggeringTrigger())
             call DestroyEffect(AddSpecialEffectTarget(Sila_Tmi_Effect_Crit(), c, "chest"))
             call CritTextTag(dc, GetWidgetX(u) - 20, GetWidgetY(u) - 20)
         elseif IsCoordsIn4Gon(GetWidgetX(b), GetWidgetY(b), x1, y1, x2, y2, x3, y3, x4, y4) == true and ch <= Sila_Tmi_Crit_Chance(u) and GetUnitAbilityLevel(b, Sila_Tmi_Ability_Slow_Buff()) >= 1 and ChekSpellUnit(u, b) == true then
             call DisableTrigger(GetTriggeringTrigger())
             call UnitDamageTarget(u, b, dscs, false, false, ATTACK_TYPE_CHAOS, DAMAGE_TYPE_UNKNOWN, WEAPON_TYPE_WHOKNOWS)
             call EnableTrigger(GetTriggeringTrigger())
             call DestroyEffect(AddSpecialEffectTarget(Sila_Tmi_Effect_Splash_Slow(), c, "chest"))
         elseif IsCoordsIn4Gon(GetWidgetX(b), GetWidgetY(b), x1, y1, x2, y2, x3, y3, x4, y4) == true and ch <= Sila_Tmi_Crit_Chance(u) and ChekSpellUnit(u, b) == true then
             call DisableTrigger(GetTriggeringTrigger())
             call UnitDamageTarget(u, b, dsc, false, false, ATTACK_TYPE_CHAOS, DAMAGE_TYPE_UNKNOWN, WEAPON_TYPE_WHOKNOWS)
             call EnableTrigger(GetTriggeringTrigger())
             call DestroyEffect(AddSpecialEffectTarget(Sila_Tmi_Effect_Splash(), c, "chest"))
         elseif IsCoordsIn4Gon(GetWidgetX(b), GetWidgetY(b), x1, y1, x2, y2, x3, y3, x4, y4) == true and ChekSpellUnit(u, b) == true then
             call DisableTrigger(GetTriggeringTrigger())
             call UnitDamageTarget(u, b, ds, false, false, ATTACK_TYPE_CHAOS, DAMAGE_TYPE_UNKNOWN, WEAPON_TYPE_WHOKNOWS)
             call EnableTrigger(GetTriggeringTrigger())
             call DestroyEffect(AddSpecialEffectTarget(Sila_Tmi_Effect_Splash(), c, "chest"))
         endif
         call GroupRemoveUnit(g, b)
     endloop
     call DestroyGroup(g)
     set u = null
     set c = null
     set g = null
     set b = null
endfunction


Объясняю: при ударе героем с руки создается триггер на получение урона с этими действиями, проблема в том что условия некорректно работают, т.е. в первом случае если юнит в прямоугольнике, выпал шанс на крит, у него есть такой то бафф и он является тем юнитом по которому прошел урон с руки то нанести такой то урон и сделать на нем такой то эффект
если все выше перечисленное, но без баффа то нанести другой урон и сделать другой эффект
если все как в первом случае только юнит не является тем по которому нанесли урон с руки то нанести третий урон и сделать третий эффект
если все тоже самое но без баффа то нанести четвертый урон и сделать четвертый эффект
если все тоже самое но без крита то нанести пятый урон и сделать четвертый эффект

Вроде как уроны наносятся правильно, но эффекты...
При первом последующем же не критическом ударе на всех юнитах в прямоугольнике создается эффект крит, а на том которого бьешь с руки создается эффект, который должен создаваться на тех в прямоугольники.
Вообще сделал вывод что и урон наверно не правильно работает, вроде условия все правильный но работает не так, или я нуб?
 

NaturekidДата: Четверг, 11 Октября 2012, 18:39:35 | Сообщение # 2
Группа: Заблокированные
Сообщений: 4982
Награды: 3
Репутация: 3347
Блокировки:

Добавлено (11 Октября 2012, 18:39:35)
---------------------------------------------
Просто помнится, ты говорил, что и урон с руки дамиками обрабатываешь


 

SmartarosДата: Четверг, 11 Октября 2012, 18:43:19 | Сообщение # 3
9 уровень
Группа: Проверенные
Сообщений: 810
Награды: 0
Репутация: 135
Блокировки:
физ урон с руки это геройский урон, физ/маг/чистый урон от спелла это дамми урон
 

lawsonДата: Четверг, 11 Октября 2012, 18:51:11 | Сообщение # 4
Группа: Проверенные
Сообщений: 3482
Награды: 0
Репутация: 974
Блокировки:
Quote (Smartaros)
или я нуб?

Ты нуб perded


Nic nie wiem bo mam chuj.
редактирую посты! ВСЕ!
 

  • Страница 1 из 1
  • 1
Поиск:

Copyright © 2006 - 2024 Warcraft3FT.info При копировании материалов c сайта ставьте, пожалуйста, активную обратную ссылку на нас • Design by gReeB04ki ©
Хостинг от uCoz