Использовал наработку по отлову урона. Суть в том, чтобы при нанесении урона, при определённых условиях, урон повышался на 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(), только если урон наносится тому, кто уже получил урон. Если юнитов поменять местами, то все норм. В чем проблема?.

Принятый ответ

зацикленность.
У тебя триггер ловит нанесение урона, затем этому же юниту наносим триггерно урон. Триггер сам себя и зацикливает. Так он будет бесконечно ловить и наносить урон. Это надо либо прервать или заранее исключить такое.
Заранее исключаем:
Выключаем тек триггер <= чтобы не словил нанесения урона
триггерно наносим урона
включаем обратно тек триггер
`
ОЖИДАНИЕ РЕКЛАМЫ...
2
27
5 лет назад
Отредактирован MpW
2
зацикленность.
У тебя триггер ловит нанесение урона, затем этому же юниту наносим триггерно урон. Триггер сам себя и зацикливает. Так он будет бесконечно ловить и наносить урон. Это надо либо прервать или заранее исключить такое.
Заранее исключаем:
Выключаем тек триггер <= чтобы не словил нанесения урона
триггерно наносим урона
включаем обратно тек триггер
Принятый ответ
0
19
5 лет назад
0
Точнее не фаталит, игра просто вылетает без сообщения об ошибке.
Steal nerves, мде, я понял.
Steal nerves, так что, мне отключать триггер, наносить урон, а затем включать? Или если есть альтернативы получше?
А, ты уже написал, ну ок, так и хотел.
0
27
5 лет назад
0
KaneThaumaturge, просто ты не единственный кто с таким сталкивался. Еще это не единственный случай. Там приказы сами на себя или циклы без условия выхода
0
19
5 лет назад
0
Steal nerves, да я уже сталкивался с зацикленностью часто, не знаю почему сейчас не додумался сам.
Чтобы оставить комментарий, пожалуйста, войдите на сайт.