в карте используется ht для сохранения данных по id юнита
call SaveInteger(ht,GetHandleId(u),1,999)
call LoadInteger(ht,GetHandleId(u),1)
но проблема в том, что варкрафт при создании и удалении юнитов им присваивает не уникальный GetHandleId
то есть при удалении старого юнита и создании нового есть вероятность назначения GetHandleId от старого удалённого юнита - новому юниту
от чего естественно летит вся ht, т.к. новым юнитам присвоены в ней уже какие-то значения
то есть при удалении старого юнита и создании нового есть вероятность назначения GetHandleId от старого удалённого юнита - новому юниту
от чего естественно летит вся ht, т.к. новым юнитам присвоены в ней уже какие-то значения
как это обходить?
1. как создавать новых юнитов с уникальным GetHandleId ? (конечно удаляя некоторых старых)
2.1. или надо заморачиваться с обнулением значения для GetHandleId(u) в ht перед удалением каждого юнита?
2.2. или надо заморачиваться с обнулением значения для GetHandleId(u) в ht после создания каждого юнита?
1. как создавать новых юнитов с уникальным GetHandleId ? (конечно удаляя некоторых старых)
2.1. или надо заморачиваться с обнулением значения для GetHandleId(u) в ht перед удалением каждого юнита?
2.2. или надо заморачиваться с обнулением значения для GetHandleId(u) в ht после создания каждого юнита?
call FlushChildHashtable(ht,GetHandleId(u))
3. или надо периодически обнулять всю ht и заполнять заново? (разве нет команды очищения ht? только через пересоздание?)
call FlushParentHashtable(ht)
set ht=InitHashtable()
`
ОЖИДАНИЕ РЕКЛАМЫ...
Чтобы оставить комментарий, пожалуйста, войдите на сайт.
Отредактирован nazarpunk
Отредактирован Emafusail
опять же с проверкой если оно нужное и так везде где это нужно потом смело можно освободить Хэндл
тоже столкнулся с таким, поэтому храню значения через StringHash и подгружаю там где мне нужно. Полет нормальный