Добавлен
Вот такой код (в этом случае три точки), не всегда, но может сработать, даже если один из юнитов мертв.
if not IsUnitDeadBJ(udg_CAPITAN) and not IsUnitDeadBJ(udg_CAPITAN_SC) then
...
endif
P.S. Никаких вейтов не юзал в коде, он мгновенный.
В чем может быть причина?

не юзайте бж говно функции
 GetWidgetLife( unit ) < 0.405 or IsUnitType( unit, UNIT_TYPE_DEAD )
Вот это должно помочь.
`
ОЖИДАНИЕ РЕКЛАМЫ...

Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
30
GetWidgetLife( unit ) < 0.405
Неоднократно было показано, что такое количество здоровья у юнита может быть только если его специально задать триггерно.
Кроме того, число "0.4" ничем не хуже числа "0.405", и даже лучше: в нём меньше знаков.
32
Clamp, ой да всем насрать, это копипаст IsUnitDead описную 10 лет назад вексом в спелл систем.
Щяс там из за 2х знаков все сломается.
21
После юзания функции от драколича все подобные проблемы, что мёртвый иногда не мёртвый, испарились
30
Щяс там из за 2х знаков все сломается.
Именно в результате такого подхода растущие в геометрической прогрессии мощности железа постоянно не успевают за растущими требованиями софта. Существует антипаттерн преждевременной оптимизации, но это определённо не тот случай.
12
Мне вот до сих пор интерестно, что там близзы наворотили в алгоритме такого, что юнит мертвый не при хп меньше 0.5, как при стандартном округлении, а при 0.405. Как такое вообще можно ухитриться сделать, а?
30
что там близзы наворотили в алгоритме такого, что юнит мертвый не при хп меньше 0.5
Это не близы, а Vexorian наворотил, а дальше "так повелось". По факту такое хп у юнита только вручную можно сделать, проблема надумана.
32
Clamp, нет, именно после 0.405 юниту вручают - UNIT_TYPE_DEAD и забирают остаток хп, кстати говоря. Лич вроде недавно колупал этот участок кода, уже и не помню всех подробностей, но там много интересного. Кстати хп никогда не может быть меньше 0, после смерти все уроны игнорируют юнита, т.е нельзя никак нанести урон мертвому юниту. При смерти юнитам вручают особое сало, так они не будут авто атаковать и прочее, к слову все ауры не блокируются этим салом и распространяются пока юнит\герой не разложился. При этом произойдет баг если что то сделать с аурой, в коде аур ошибка, если пойдет пересчет допустимых целей чтобы вручить им бафф ауры, туда обязательно попадет её источник (разумеется если он есть в допустымых целях) и мы видим фатал. Никогда не меняйте уровни аур у дохлых юнитов, так же не пытайтесь сделать с ними что нить еще.
17
Это не близы, а Vexorian наворотил, а дальше "так повелось". По факту такое хп у юнита только вручную можно сделать, проблема надумана.
Вот только что столкнулся с багой, не мог понять в чём дело. Вариак не воспринимал мёртвых как мёртвых.
Триггерно я здоровье не менял.
Выяснилось, что бага иногда воспроизводится если в отряде врага есть юнит, ообладающий волной исцеления. Возможно волна исцеления с учётом задержки её применения в некоторых случаях восстанавливает здоровье уже дохлым юнитам.
26
Cancel, скорее всего в момент проверки его ХП больше 0.
Почекай это.
28
Тут достаточно подробно описано, сколько у юнита может быть минимальное хп. И это значение чуть меньше 0.405. Но в любом случае это не имеет значения, есть UnitAlive отсюда, а в луа эта функция изначально доступна.
Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
Чтобы оставить комментарий, пожалуйста, войдите на сайт.