Нужно узнать удален ли юнит или нет.
Если занести юнита в переменную unit, а затем его удалить и запросить имя юнита, который хранится в переменной unit, то выведет "(null)".
Но если сравнить unit == null, то вернет false, также GetUnitName(unit) == "(null)" тоже false.
Как узнать, удалён юнит или нет?

почему тогда GetUnitName(unit) == "(null)" возвращает false, если в игре выводится (null)
Потому что проверяете на строку, а не на null
if GetUnitName(udg_unit) == null { BJDebugMsg("Удалён") }
else { BJDebugMsg("Не удалён") }
`
ОЖИДАНИЕ РЕКЛАМЫ...

Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
20
Вот, можете посмотреть. Удалить юнита ESC.
Загруженные файлы
30
Игра не сразу удаляет юнита, например:
globals
    unit UNIT
endglobals

function Trig_vd_Actions takes nothing returns nothing
    UNIT = gg_unit_ehpr_0057
    call RemoveUnit(UNIT)
    call BJDebugMsg(I2S(GetHandleId(UNIT))) // Вернёт корректный хэндл
endfunction

function InitTrig_vd takes nothing returns nothing
    set gg_trg_vd = CreateTrigger(  )
    call TriggerAddAction( gg_trg_vd, function Trig_vd_Actions )
endfunction
20
NazarPunk, хорошая инфа, но она не помогает, я проверяю каждые секунду в примере и приравниваю к null, все равно всегда возращает false.
Вот пример.
Загруженные файлы
22
а вы понимаете что такое null? А потом подумай 2 раза и вас осенят!
все хендлы всегда будет жить если его ссылает из любой перемменой!
20
pro100master, почему тогда GetUnitName(unit) == "(null)" возвращает false, если в игре выводится (null)
30
почему тогда GetUnitName(unit) == "(null)" возвращает false, если в игре выводится (null)
Потому что проверяете на строку, а не на null
if GetUnitName(udg_unit) == null { BJDebugMsg("Удалён") }
else { BJDebugMsg("Не удалён") }
Принятый ответ
20
NazarPunk, спасибо, а есть вариант побыстрее, слышал, что строки грузят сильно.
30
а есть вариант побыстрее
Обнуляйте глобалки вручную, и проблемы не будет.
20
Мне нужно узнать, был ли удалён юнит в процессе игры и очищать его из массива переменных. Это для наработки, поэтому будет проще, если сама нароботка будет очищать удалённых юнитов.
30
Это для наработки, поэтому будет проще, если сама нароботка будет очищать удалённых юнитов.
Используйте событие EVENT_UNIT_DECAY и удаляйте юнита из наработки.
20
NazarPunk, если юнит удаляется, то это событие срабатывает?
Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
Чтобы оставить комментарий, пожалуйста, войдите на сайт.