Использовал наработку по отлову урона. Суть в том, чтобы при нанесении урона, при определённых условиях, урон повышался на 25%.
Код
nothing Trig_Damage_event_Actions ( ){
unit u = GetTriggerUnit()
unit a = GetEventDamageSource()
real xu = GetUnitX(u)
real yu = GetUnitY(u)
real dmg = GetEventDamage()
if ((GetUnitAbilityLevel(u, 'Bena') > 0) or (GetUnitAbilityLevel(u, 'Beng') > 0) or (GetUnitAbilityLevel(u, 'Bens') > 0) or (GetUnitAbilityLevel(u, 'Bwea') > 0) or (GetUnitAbilityLevel(u, 'Bweb') > 0)) and ( GetUnitAbilityLevel(a, 'A00Y') > 0 ) and (GetPlayerTechCount(GetOwningPlayer(a), 'R00I', true) > 0) {
UnitDamageTargetBJ( a, u, dmg*0.25, ATTACK_TYPE_MELEE, DAMAGE_TYPE_NORMAL )
if g_dbg == true {DebugTextTagXY(R2SW( 0.25 * dmg, 3, 2), xu, yu) }
}
u = null
a = null
}
//===========================================================================
nothing InitTrig_Damage_event ( ){
gg_trg_Damage_event = CreateTrigger( )
AnyUnitDamagedEvent(gg_trg_Damage_event)
TriggerAddAction( gg_trg_Damage_event, function Trig_Damage_event_Actions )
}
Однако, фаталит при использовании функции UnitDamageTargetBJ() или UnitDamageTarget(), только если урон наносится тому, кто уже получил урон. Если юнитов поменять местами, то все норм. В чем проблема?.
Принятый ответ
зацикленность.
У тебя триггер ловит нанесение урона, затем этому же юниту наносим триггерно урон. Триггер сам себя и зацикливает. Так он будет бесконечно ловить и наносить урон. Это надо либо прервать или заранее исключить такое.
Заранее исключаем:
Выключаем тек триггер <= чтобы не словил нанесения урона
триггерно наносим урона
включаем обратно тек триггер
У тебя триггер ловит нанесение урона, затем этому же юниту наносим триггерно урон. Триггер сам себя и зацикливает. Так он будет бесконечно ловить и наносить урон. Это надо либо прервать или заранее исключить такое.
Заранее исключаем:
Выключаем тек триггер <= чтобы не словил нанесения урона
триггерно наносим урона
включаем обратно тек триггер
`
ОЖИДАНИЕ РЕКЛАМЫ...
Чтобы оставить комментарий, пожалуйста, войдите на сайт.
Отредактирован MpW
У тебя триггер ловит нанесение урона, затем этому же юниту наносим триггерно урон. Триггер сам себя и зацикливает. Так он будет бесконечно ловить и наносить урон. Это надо либо прервать или заранее исключить такое.
Заранее исключаем:
Выключаем тек триггер <= чтобы не словил нанесения урона
триггерно наносим урона
включаем обратно тек триггер
Steal nerves, мде, я понял.
Steal nerves, так что, мне отключать триггер, наносить урон, а затем включать? Или если есть альтернативы получше?
А, ты уже написал, ну ок, так и хотел.