После разложения юнита его хэндл освобождается с хэш-таблицы?
Может ли юнит, которые появился занять хэндл юнита, который был разложен?

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

После разложения юнита его хэндл освобождается с хэш-таблицы?
Нет. Он остается в памяти до выхода из карты (если тип разложения на это никак не влияет)
Может ли юнит, которые появился занять хэндл юнита, который был разложен?
Может. И это может быть не только юнит.
`
ОЖИДАНИЕ РЕКЛАМЫ...

Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
0
19
5 лет назад
0
Может. И это может быть не только юнит.
И что делать с этим?
То есть эта система будет некорректно работать?
0
28
5 лет назад
0
Хеш-таблицу точно чистить надо, а то дикие баги начнутся.
KaneThaumaturge:
И что делать с этим?
При смерти юнита удалять все связанные с ним записи в хеше, вот и всё решение.
0
19
5 лет назад
0
При смерти юнита удалять все связанные с ним записи в хеше, вот и всё решение.
эхх, хорошо, а как чистить? Потому что, помню, сохранял null, а загружало прошлого юнита.
0
28
5 лет назад
0
Потому что, помню, сохранял null, а загружало прошлого юнита.
common.j в помощь.
native  RemoveSavedInteger					takes hashtable table, integer parentKey, integer childKey returns nothing
native  RemoveSavedReal						takes hashtable table, integer parentKey, integer childKey returns nothing
native  RemoveSavedBoolean					takes hashtable table, integer parentKey, integer childKey returns nothing
native  RemoveSavedString					takes hashtable table, integer parentKey, integer childKey returns nothing
native  RemoveSavedHandle					takes hashtable table, integer parentKey, integer childKey returns nothing

native  FlushParentHashtable						takes hashtable table returns nothing
native  FlushChildHashtable					takes hashtable table, integer parentKey returns nothing
А ещё вот такое есть.
native  HaveSavedInteger					takes hashtable table, integer parentKey, integer childKey returns boolean
native  HaveSavedReal						takes hashtable table, integer parentKey, integer childKey returns boolean
native  HaveSavedBoolean					takes hashtable table, integer parentKey, integer childKey returns boolean
native  HaveSavedString					    takes hashtable table, integer parentKey, integer childKey returns boolean
native  HaveSavedHandle     				takes hashtable table, integer parentKey, integer childKey returns boolean
2
21
5 лет назад
Отредактирован Raised
2
KaneThaumaturge, если ты удаляешь объект наследующий тип handle из карты, его id освобождается (правда, не мгновенно, а когда до него доберется сборшик мусора). После этого этот же id может быть использован для любого другого хендла. На этом же принципе работают и счетчики хендлов.
0
19
5 лет назад
Отредактирован KaneThaumaturge
0
native FlushParentHashtable takes hashtable table returns nothing
native FlushChildHashtable takes hashtable table, integer parentKey returns nothing
Это очистка хэш таблицы, а то очистка по ключу?
PT153:
native HaveSavedIntegertakes hashtable table, integer parentKey, integer childKey returns boolean
native HaveSavedRealtakes hashtable table, integer parentKey, integer childKey returns boolean
native HaveSavedBooleantakes hashtable table, integer parentKey, integer childKey returns boolean
native HaveSavedStringtakes hashtable table, integer parentKey, integer childKey returns boolean
native HaveSavedHandle takes hashtable table, integer parentKey, integer childKey returns boolean
А это что?
0
21
5 лет назад
0
KaneThaumaturge, пожалуйста используй поиск. В своей статье Ханабиши весьма доступно это расписал.
0
19
5 лет назад
0
Raised, хорошо, спасибо.
0
28
5 лет назад
Отредактирован PT153
0
А это что?
Как у тебя с английским?
Have значит владеть, Saved значит сохранённый, эти функции отвечают на вопрос, а сохранено ли что-нибудь в такой-то в таблице по таким-то ключам.
KaneThaumaturge:
Это очистка хэш таблицы, а то очистка по ключу?
Да, первая чистит всю таблицу, вторая чистит только те ячейки в таблице, что имеют указанный parent ключ.
0
19
5 лет назад
0
PT153, да, я уже понял, с английским все туго. Хоть я и знаю отдельно значение слов Have, Saved, String, но мне почему-то просто лень переводить. Я посмотрел на аргументы и уже понял, спасибо.
Буду вместо GetHandleId использовать UnitUserData, но очищать все буду. Всем спасибо.
0
32
5 лет назад
0
KaneThaumaturge, Ну а чем плох GetHandleId()?
Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
Чтобы оставить комментарий, пожалуйста, войдите на сайт.