call UnitDamageTargetBJ( GetEventDamageSource() , GetTriggerUnit(), GetEventDamage()*5, ATTACK_TYPE_HERO, DAMAGE_TYPE_NORMAL )
Такой способ крашит карту, орать не нужно ибо я ковыряю функции.

Буквально вчера такое же разбирал у себя. Краш лечится предусловием. Перед нанесением урона сохранить в Custom Value (UserData) боевой единицы какое-то число, которое бы говорило о нанесении урона, после нанесения урона - убираете. Для триггера, ловящего урон поставить условие, что юниты с таким установленным числом не проходят по событию детекта урона (чтобы триггерный урон не ловился и не получалась рекурсия).
`
ОЖИДАНИЕ РЕКЛАМЫ...

Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
3
Судя по этой строчке у тебя образуется бесконечный цикл, ты ловишь урон, и тут же снова его наносишь запуская эту же функцию до бесконечности. Попробуй отключать триггер отлова урона перед нанесением бонусного урона и включать после.
29
Почему вы не используете логическую переменную для фильтрации входящего урона?
Конечно будет крашить.
И вообще, это ж BJ,
Вот сама нативка, к которой обращается это BJ фнукция
native UnitDamageTarget takes unit whichUnit, widget target, real amount, boolean attack, boolean ranged, attacktype attackType, damagetype damageType, weapontype weaponType returns boolean
13
Буквально вчера такое же разбирал у себя. Краш лечится предусловием. Перед нанесением урона сохранить в Custom Value (UserData) боевой единицы какое-то число, которое бы говорило о нанесении урона, после нанесения урона - убираете. Для триггера, ловящего урон поставить условие, что юниты с таким установленным числом не проходят по событию детекта урона (чтобы триггерный урон не ловился и не получалась рекурсия).
Принятый ответ
4
Ответ на вопрос "Можно ли реализовать подобное без орб эффектов?" - Можно!
6
Alexander122:
Ответ на вопрос "Можно ли реализовать подобное без орб эффектов?" - Можно!
ЮМОРИСТ
28
Буквально вчера такое же разбирал у себя. Краш лечится предусловием. Перед нанесением урона сохранить в Custom Value (UserData) боевой единицы какое-то число, которое бы говорило о нанесении урона, после нанесения урона - убираете. Для триггера, ловящего урон поставить условие, что юниты с таким установленным числом не проходят по событию детекта урона (чтобы триггерный урон не ловился и не получалась рекурсия).
Custom Value может использоваться.
Вот нормальное решение.
call DisableTrigger(GetTriggeringTrigger())
call UnitDamageTargetBJ( GetEventDamageSource() , GetTriggerUnit(), GetEventDamage()*5, ATTACK_TYPE_HERO, DAMAGE_TYPE_NORMAL )
call EnableTrigger(GetTriggeringTrigger())
13
PT153, да, потом я начал так блокировать отлов урона, когда анализ записей в хэше не устроил)
29
PT153, можно было и не выключать триггер, а обойтись логической переменной.
if NoDamageReaction  then
else
set  NoDamageReaction = true 
call UnitDamageTarget ( GetEventDamageSource() , GetTriggerUnit(), GetEventDamage()*5, true, false, ATTACK_TYPE_HERO, DAMAGE_TYPE_NORMAL, null )
set  NoDamageReaction = false
endif
28
можно было и не выключать триггер, а обойтись логической переменной.
В итоге у тебя сработает триггер, начнётся проверятся условие. Зачем так, если можно просто выключить триггер, это обойдётся в меньше строк кода и без создания переменных.
Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
Чтобы оставить комментарий, пожалуйста, войдите на сайт.