Баги в триггерах и Jass - Форум


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

  • Страница 1 из 1
  • 1
Форум » Warcraft III » Триггеры и Jass » Баги в триггерах и Jass (Находки можно постить в этой теме)
Баги в триггерах и Jass

[DUОS]

#1
Ознакомлю вас с небольшим списком моих "находок" в языке Jass. Находки очень любопытные.

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

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

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

Obi-Wanya

#2
Цитата (|DUOS|)
авторы нескольких карт

некоторых*


"У меня нет совести. У меня есть только нервы." Рюноскэ Акутагава.
"Человек всегда бывает в чем-то немножко виноват." Альбер Камю.
Форум » Warcraft III » Триггеры и Jass » Баги в триггерах и Jass (Находки можно постить в этой теме)
  • Страница 1 из 1
  • 1
Поиск: