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

Принятый ответ

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

Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
0
19
5 лет назад
0
Вот, можете посмотреть. Удалить юнита ESC.
Загруженные файлы
0
29
5 лет назад
0
Игра не сразу удаляет юнита, например:
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
0
19
5 лет назад
0
NazarPunk, хорошая инфа, но она не помогает, я проверяю каждые секунду в примере и приравниваю к null, все равно всегда возращает false.
Вот пример.
Загруженные файлы
0
23
5 лет назад
0
а вы понимаете что такое null? А потом подумай 2 раза и вас осенят!
все хендлы всегда будет жить если его ссылает из любой перемменой!
0
19
5 лет назад
0
pro100master, почему тогда GetUnitName(unit) == "(null)" возвращает false, если в игре выводится (null)
0
29
5 лет назад
Отредактирован nazarpunk
0
почему тогда GetUnitName(unit) == "(null)" возвращает false, если в игре выводится (null)
Потому что проверяете на строку, а не на null
if GetUnitName(udg_unit) == null { BJDebugMsg("Удалён") }
else { BJDebugMsg("Не удалён") }
Принятый ответ
0
19
5 лет назад
0
NazarPunk, спасибо, а есть вариант побыстрее, слышал, что строки грузят сильно.
0
29
5 лет назад
0
а есть вариант побыстрее
Обнуляйте глобалки вручную, и проблемы не будет.
0
19
5 лет назад
0
Мне нужно узнать, был ли удалён юнит в процессе игры и очищать его из массива переменных. Это для наработки, поэтому будет проще, если сама нароботка будет очищать удалённых юнитов.
0
29
5 лет назад
0
Это для наработки, поэтому будет проще, если сама нароботка будет очищать удалённых юнитов.
Используйте событие EVENT_UNIT_DECAY и удаляйте юнита из наработки.
0
19
5 лет назад
0
NazarPunk, если юнит удаляется, то это событие срабатывает?
Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
Чтобы оставить комментарий, пожалуйста, войдите на сайт.