Привязываю к юниту что-то через хеш-таблицу, например:
	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 и чистить за ним
`
ОЖИДАНИЕ РЕКЛАМЫ...

Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
21
Ige, а как же (unit == null) ?
pro100master, я думаю, это не сработает. Т.к. юнит покинет игровую карту только тогда, когда он плоностью разложится (а если труп разлагается полностью - игра его удаляет). Соответственно когда заюзаешь функцию получения юнита, покунувшего регион, игра вернет null.
28
есть ещё 1 способ
атачить через юзер дату и не юзать хэндлы
21
nvc123, тут в примере я просто указал тип интегер, на самом деле используются другие типы.
29
Делаешь структуру со своими данными и пихаешь структуру в юзердату.
28
nvc123, а какая разница какой тип?
всеравно, как доц сказал, через структуру атачишь
иначе могут быть конфликты
а так одна система атача и через неё работает всё остальное
22
я делаю так всегда если юнит вошел в регион карта, то увеличивает индификатор +1 и присвоит массив юнит, каждый созданый 128 раз юнитов, начинаю делать цикл на проверку массива если был удален то номер юнита через структур данные так как можно обрашать структуру как DataUnit(индификатор юнит)
21
Doc, не это не подходит. Я же сказал , что создаётся огромное количество юнитов, а в структуре 8192 по-моему только юнитов можно будет сохранить. если я правильно понял реализацию.
22
ScopteRectuS, 8000 это много зачем вам столько, макс в сражении во всех картах видел максимум 1к а ты хочеш 8к
21
pro100master, у меня юниты создаются каждые 0.16 секунд, и примерно с такой же скоростью дохнут...
22
ScopteRectuS, ты пойми тем больше юнитов то невозможно контрить игру и все ливнут в 1 очередь
Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
Чтобы оставить комментарий, пожалуйста, войдите на сайт.