Записи участника ([DUОS]) - Форум


Правила форума ·

Результаты поиска

[DUОS]

#881 | Тема: Баги в триггерах и Jass
Ознакомлю вас с небольшим списком моих "находок" в языке Jass. Находки очень любопытные.

  • Баг: В событии "боевая единица получает урон" (EVENT_UNIT_DAMAGED) не работает действие Wait (TriggerSleepAction).
    Решение: Похоже, что только таймерами или помещением действия Wait в отдельную функцию и вызовом её через ExecuteFunc. Они там работают нормально.

  • Баг: После первой реакции на событие "боевая единица получает урон" (EVENT_UNIT_DAMAGED) даже если захотеть компенсировать урон, это не будет сделано (жизни первый раз не восполнятся).
    Решение: Нужно создать таймер, который запускается одноразово на 0.001 сек., затем уже менять жизни боевой единицы. Сработает на ура. Даже если у юнита одна единица здоровья, он не умрёт, останется в живых.

  • Баг: Почти все стандартные способности WarCraft 3 регистрируют двойное, тройное и даже учетверённое событие получения урона. Из-за этого авторы некоторых карт могут рвать на себе волосы, не понимая, откуда взялся вылет в карте из-за зацикливания урона. С обычной атакой такого не происходит.
    Решение: Во всех триггерах карты с подобным событием нужно всегда ставить условие, которое будет проверять, что полученный урон больше нуля (либо не равен нулю, если вы используете отрицательный урон). В Jass оно выглядит как GetEventDamage() > 0. Не пренебрегайте этим.
Школа - это место, где шлифуют булыжники и портят алмазы. © Роберт Ингерсолл
Поиск: