Привязываю к юниту что-то через хеш-таблицу, например:
	call SaveInteger( hashtable, GetHandleId( whichUnit ), 0, integer )
Но привязываю, только, если ранее к этому юниту не привязывалось, то есть:
	if not HaveSavedInteger( hashtable, GetHandleId( whichUnit ), 0 ) then
		call SaveInteger( hashtable, GetHandleId( whichUnit ), 0, integer )
	endif
Так вот, проблема вот в чем: на карте создаётся огромное количество юнитов и к ним крепятся данные, как написано выше. Эти юниты удаляются после смерти и их хендл освобождается, для другого нового созданного юнита. И в итоге, я к юниту не могу что-либо крепить, потому что проверка выдаёт, что в хеш-таблице по данному ключу уже что-то сохранено, потому что новый юнит занял хендл старого юнита. Как это обойти?

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

вариант №1 - не нулить переменные, оставляя утечки номеров хендлов. это безопасно, да, если знаешь, что делаешь.
№2 - ловить UNIT_DEATH и чистить за ним
`
ОЖИДАНИЕ РЕКЛАМЫ...

Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
0
21
7 лет назад
0
biridius, нашел еще такую функцию:
	native RemoveSavedInteger takes hashtable table, integer parentKey, integer childKey returns nothing
думаю, она идеально сюда подходит.
1
23
7 лет назад
1
хендл не бывает копия если он умер хендла уже нет теперь уже будет возврашать 0 поэтому ты получаеш 0 много таких удаленых... Думай головой
2 пункта от Кет: 1.2.1 (безграмотность) без знаков препинания каменты понять очень сложно
0
21
7 лет назад
0
pro100master, лучше бы не отвечал, если не знаешь, что говоришь...((
0
23
7 лет назад
0
Ясно, иди мучай удаление хендла фокусом
0
21
7 лет назад
Отредактирован scopterectus
0
pro100master, когда объект удаляется его хендлайди освобождается и его место может занять другой объект!
0
28
7 лет назад
Отредактирован nvc123
0
pro100master, ты хоть знаешь что такое хэндл?
и что именно возвращает функция GetHandleId
ScopteRectuS:
biridius, нашел еще такую функцию:
	native RemoveSavedInteger takes hashtable table, integer parentKey, integer childKey returns nothing
думаю, она идеально сюда подходит.
если работает то закрывай вопрос
0
23
7 лет назад
0
nvc123, знаю его как и машиный код, удаленый юнит который польностью удаляе из памяти и знать черех хеш самый бредовый...
2 пункта от Кет: 1.2.1 (безграмотность)
3 комментария удалено
0
16
7 лет назад
0
вариант №1 - не нулить переменные, оставляя утечки номеров хендлов. это безопасно, да, если знаешь, что делаешь.
№2 - ловить UNIT_DEATH и чистить за ним
Принятый ответ
Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
Чтобы оставить комментарий, пожалуйста, войдите на сайт.