Нужно узнать удален ли юнит или нет.
Если занести юнита в переменную 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
NazarPunk, спасибо, а есть вариант побыстрее, слышал, что строки грузят сильно.
0
29
5 лет назад
0
а есть вариант побыстрее
Обнуляйте глобалки вручную, и проблемы не будет.
0
19
5 лет назад
0
Мне нужно узнать, был ли удалён юнит в процессе игры и очищать его из массива переменных. Это для наработки, поэтому будет проще, если сама нароботка будет очищать удалённых юнитов.
0
29
5 лет назад
0
Это для наработки, поэтому будет проще, если сама нароботка будет очищать удалённых юнитов.
Используйте событие EVENT_UNIT_DECAY и удаляйте юнита из наработки.
0
19
5 лет назад
0
NazarPunk, если юнит удаляется, то это событие срабатывает?
2
28
5 лет назад
2
а есть вариант побыстрее, слышал, что строки грузят сильно.
Конечно.
function UnitExists takes unit u returns boolean
    return GetUnitTypeId(u) != 0
endfunction

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