Привязываю к юниту что-то через хеш-таблицу, например:
	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
20
7 лет назад
0
Ресайклинг в помощь
0
21
7 лет назад
0
pro100master, у меня юниты создаются каждые 0.16 секунд, и примерно с такой же скоростью дохнут...
0
23
7 лет назад
0
ScopteRectuS, ты пойми тем больше юнитов то невозможно контрить игру и все ливнут в 1 очередь
0
21
7 лет назад
0
pro100master, сил противодействующей стороны достаточно, чтобы сдержать такой натиск противников. Да и карту я делаю только для себя. Просто нравится копашится в редакторе карт.
0
28
7 лет назад
Отредактирован nvc123
0
ScopteRectuS, 8192 одновременно
если они дохнут то структуру нужно удалять
8192 юнитов одновременно игра всеравно не потянет
а чем тебе кстати не нравится вариант с очисткой хэша?
вызывай FlushChildHashtable(hashtable, GetHandleId( whichUnit )) при создании юнита
а потом пиши туда данные
всеравно если раньше там чтото и хранилось то новые данные это перезапишут
0
21
7 лет назад
Отредактирован scopterectus
0
ScopteRectuS:
biridius, нашел еще такую функцию:
	native RemoveSavedInteger takes hashtable table, integer parentKey, integer childKey returns nothing
думаю, она идеально сюда подходит.
nvc123, здесь я уже нашел решение. Но так как здесь продолжили отвечать, я читал, и думал, что могут подсказать решение по-лучше. И действительно, годных ответов было много.
Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
Чтобы оставить комментарий, пожалуйста, войдите на сайт.