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

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

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

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