Привязываю к юниту что-то через хеш-таблицу, например:
	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
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 и чистить за ним
Принятый ответ
Этот комментарий удален
0
28
7 лет назад
Отредактирован Кет
0
DracoL1ch, я бы 2 вариант юзал
с первым могут быть проблемы если есть арифметика с хэндлами
да и делать намеренную утечку памяти вместо того чтобы просто чистить за собой данные это какой-то жуткий костыль
0
16
7 лет назад
0
nvc123:
это не утечка, это сохранение id хендла, не более. на память не влияет от слова никак, разрушь объект - и сборщик его уберет.
0
29
7 лет назад
0
ну если ты ловишь юнит_дес и чистишь табличку а там вдруг ульт паладина то действительно будет баг.
0
28
7 лет назад
Отредактирован nvc123
0
Doc, ну так учитывать рес надо, это всегда при отлове смерти проверять надо
DracoL1ch, на память это влияет как минимум тем что хэш таблица забита не используемыми значениями
Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
Чтобы оставить комментарий, пожалуйста, войдите на сайт.