Добавлен ArchOracle
Есть некий юнит (герой). Он есть на карте, он хранится в переменной. В определённый момент он умирает. Проверка на то, жив ли он показывает смерть. Но спустя некоторое время (около минуты, плюс/минус) проверка на то, жив ли этот юнит показывает то, что он жив. Хотя он никак не воскрешался и, собственно, мёртв.
Принятый ответ
код
//Определяет жив или мертв юнит.
//Есть точный параметр определения, что юнит мертв - UNIT_TYPE_DEAD
//Если юнит удален или его труп разложился и исчез, то тип объекта IsUnitType обнуляется. Но переменные unit u все равно могут содержать инфу, варкрафт не обнуляет значения переменных.
function IsUnitDead takes unit u returns boolean
return IsUnitType( u, UNIT_TYPE_DEAD ) or GetUnitTypeId( u ) < 1
endfunction
проверять хп не всегда хорошо. пользователи пишут что у них регенится хп, даже если юнит мертв (не сталкивался, не исключено). герои могут умереть, и трупы валяются на местах их смерти до сих пор пока не воскресят. еще есть случаи с крестом перерождения (но это отдельный случай)
function IsDead takes unit u returns boolean
return GetWidgetLife(u) < 0.405 or IsUnitType(u,UNIT_TYPE_DEAD)
endfunction
`
ОЖИДАНИЕ РЕКЛАМЫ...
Чтобы оставить комментарий, пожалуйста, войдите на сайт.
Отредактирован MpW
Отредактирован MpW
UNIT_TYPE_DEAD - говорит что юнит мертв (лежащий трупак). Это всегда помогает.
сколько тем на форумах было на эти проверки, избитая проблема =(
Steal nerves, кажется понял. При повышении уровня повышается в том числе и текущее здоровье. А проверка на то, жив ли юнит, видимо, именно уровень здоровья и проверяет.
Отредактирован MpW
давно пользуюсь IsDead от драколича
Отредактирован PT153
Отредактирован PT153
Иначе определяй нативку, и используй её.