Приветствую)
Возник очередной сложный вопрос. Известно, что после смерти боевая единица не удаляется из памяти игры. Это происходит лишь после ее полного разложения. Функцию RemoveUnit, пока что, во внимание не берем. Когда разложение боевой единицы подходит к концу (и она не герой), то она удаляется с памяти игры и освобождает handle.
Вопрос: Как уловить данный момент очищения handle боевой единицы (учитывая то, что он может быть использован после под другой объект)?
P. S.: Как уловить момент удаления через функцию RemoveUnit? (вариант через define native-функции, то есть ее подмена для последующего отлова как события изменения реальной переменной, не совсем подходит)

вариант через define native-функции, то есть ее подмена для последующего отлова как события изменения реальной переменной, не совсем подходит
Даже интересно, почему?
Как уловить момент очищения handle боевой единицы?
Как вариант - периодическая проверка координат юнита по его хендлу, стали равны 0.0 / 0.0 - юнит был удалён.
Как уловить момент удаления через функцию RemoveUnit?
Вызвать нужную функцию сразу после вызова RemoveUnit, очевидно.
`
ОЖИДАНИЕ РЕКЛАМЫ...

Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
30
вариант через define native-функции, то есть ее подмена для последующего отлова как события изменения реальной переменной, не совсем подходит
Даже интересно, почему?
Как уловить момент очищения handle боевой единицы?
Как вариант - периодическая проверка координат юнита по его хендлу, стали равны 0.0 / 0.0 - юнит был удалён.
Как уловить момент удаления через функцию RemoveUnit?
Вызвать нужную функцию сразу после вызова RemoveUnit, очевидно.
Принятый ответ
32
Clamp, а хендл и не равен 0, проверял правда на триггерах, там довольно долго можно проверить Istriggerenabled. Просто проверять на тип или еще чего, ибо от переменной берется корректный хендл, но по его адресу в таблице уже ничего нету.
Лич вроде писал что хендлы по второму кругу идут очень,очень редко.
Отследить удаление из таблицы хендлов думаю можно только погрузкой через мемхак какой-то либы, которая бы добавила событие на это дело.
28
только если через мемхак
так же следует помнить что хендл не будет освобождён если есть ссылка на этого юнита
хз зачем это может понадобится
30
а хендл и не равен 0
Я где-то предложил проверять сам хендл?
16
знать время смерти каждого юнита (параметры юнита)
создавать таймер и по его истечению юнит разложился и исчез, готово
32
DracoL1ch, ага их еще RemoveUnit делают и еще иллюзии вроде не разлагаются как и варды. Запаришся плодить таймеры и бд, кто скока...
28
DracoL1ch, ещё вроде некоторые действия перезапускают таймер разложения
16
Запарно было и свою систему баунти писать, и таблицы колбеков составлять. Зато месяц мучений - и регулируй что хочешь и как хочешь. Причем вся сложность сугубо в таблицах, а не в коде.
25
Непонятно только зачем это нужно. Что даст для геймплея знание того, что юнит удалился?
А вообще Clamp вроде прав, и при попытке сделать GetUnitЧтототам на удаленном юните будут возвращаться нули.
13
Hanabishi, это сейчас необходимо для одной незамысловатой системы, которая способна рассчитать количество объектов по их типу (бывает очень полезно при debug'е).С остальными все бы ничего, считаются, а вот как организовать вычитание из общего числа боевых единиц полностью разложившихся - пока что рассуждаю с учетом полученной информации.
30
Пушистый, у тебя в карте используется воскрешение или гальванизация?
Алсо количество объектов считают так: объект появился - добавили +1 к счётчику, объект умер - вычли -1 из счётчика, а не странными костылями.
Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
Чтобы оставить комментарий, пожалуйста, войдите на сайт.