Нужно узнать удален ли юнит или нет.
Если занести юнита в переменную 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
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, если юнит удаляется, то это событие срабатывает?
28
а есть вариант побыстрее, слышал, что строки грузят сильно.
Конечно.
function UnitExists takes unit u returns boolean
    return GetUnitTypeId(u) != 0
endfunction

function UnitDoesNotExist takes unit u returns boolean
    return GetUnitTypeId(u) == 0
endfunction
32
PT153, ну еще на мемхаке, попытатся найти адресс юнита...
Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
Чтобы оставить комментарий, пожалуйста, войдите на сайт.