Создал хеш-таблицу, записал юнита, теперь вопрос - как удалить его от-туда?
Способ записать не существующего юнита не удается (даже если брать пустые переменные)
Почитав статейки нашел функцию удаления - все равно не помогает.

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

В хеш-таблице изначально возвращает null (это если ничего не записано). Помню делал похожую систему только с итемами, при проверке через Load... проверял не пуста ли ячейка (!=null). По какой-то причине, уже не помню, не всегда так работает, неизвестно от чего система не работает, щас лень браться и искать ошибку.
В вашем понимании null на jass:
 null = Нет боевая единица.
Ответ: чтобы записать null, ничего не надо записывать. Чтобы записать ноль у целого (0) или вещественного (0.00) числа, тоже ничего не надо перезаписывать. Если ничего не записано, вернет null или ноль. Пользуемся дебагами и проверяем.
Еще не попутал ли ты ключи местами? Там на гуи 1, 2 на jass перевернуть надо типа 2, 1. Смотрим
смотрим
есть BJ тоже гуи-команды. конвентируем в код и видим есть SaveUnitHandleBJ и SaveUnitHandle. Нужно представить ключи в таком порядке в каком изложены в нативке SaveUnitHandle а не в SaveUnitHandleBJ (ибо потом вас гуи путает):
parentKey - родительский ключ
childKey - младший ключ
представить хэш-таблицу можно как таблицу Excel, parentKey как строку, а childKey как столбик. И по этим вы находите ячейку. Еще в плюсе хэндлы юзать, по хэндлам будете строки находить. Стираете инфу тоже по хэндлу, по родительскому ключу. А если нужно стереть строку используйте FlushChildHashtable
function SaveUnitHandleBJ takes unit whichUnit, integer key, integer missionKey, hashtable table returns boolean
    return SaveUnitHandle(table, missionKey, key, whichUnit)
endfunction

native SaveUnitHandle takes hashtable table, integer parentKey, integer childKey, unit whichUnit returns boolean
проверка
native HaveSavedHandle takes hashtable table, integer parentKey, integer childKey returns boolean
удаление
native RemoveSavedHandle takes hashtable table, integer parentKey, integer childKey returns nothing
и правильно иницировал хэш-таблицу?
`
ОЖИДАНИЕ РЕКЛАМЫ...
4
27
6 лет назад
Отредактирован MpW
4
В хеш-таблице изначально возвращает null (это если ничего не записано). Помню делал похожую систему только с итемами, при проверке через Load... проверял не пуста ли ячейка (!=null). По какой-то причине, уже не помню, не всегда так работает, неизвестно от чего система не работает, щас лень браться и искать ошибку.
В вашем понимании null на jass:
 null = Нет боевая единица.
Ответ: чтобы записать null, ничего не надо записывать. Чтобы записать ноль у целого (0) или вещественного (0.00) числа, тоже ничего не надо перезаписывать. Если ничего не записано, вернет null или ноль. Пользуемся дебагами и проверяем.
Еще не попутал ли ты ключи местами? Там на гуи 1, 2 на jass перевернуть надо типа 2, 1. Смотрим
смотрим
есть BJ тоже гуи-команды. конвентируем в код и видим есть SaveUnitHandleBJ и SaveUnitHandle. Нужно представить ключи в таком порядке в каком изложены в нативке SaveUnitHandle а не в SaveUnitHandleBJ (ибо потом вас гуи путает):
parentKey - родительский ключ
childKey - младший ключ
представить хэш-таблицу можно как таблицу Excel, parentKey как строку, а childKey как столбик. И по этим вы находите ячейку. Еще в плюсе хэндлы юзать, по хэндлам будете строки находить. Стираете инфу тоже по хэндлу, по родительскому ключу. А если нужно стереть строку используйте FlushChildHashtable
function SaveUnitHandleBJ takes unit whichUnit, integer key, integer missionKey, hashtable table returns boolean
    return SaveUnitHandle(table, missionKey, key, whichUnit)
endfunction

native SaveUnitHandle takes hashtable table, integer parentKey, integer childKey, unit whichUnit returns boolean
проверка
native HaveSavedHandle takes hashtable table, integer parentKey, integer childKey returns boolean
удаление
native RemoveSavedHandle takes hashtable table, integer parentKey, integer childKey returns nothing
и правильно иницировал хэш-таблицу?
Принятый ответ
0
23
6 лет назад
0
Steal nerves:
Еще не попутал ли ты ключи местами? Там на гуи 1, 2 на jass перевернуть надо типа 2, 1.
Вот и ответ! Надо же, не знал что в джассе ключи наоборот идут. Думал просто функция чуть по другому выглядит а ключи в том же порядке, а нет.
Все остальное да, знал)
Спасибо :)
Чтобы оставить комментарий, пожалуйста, войдите на сайт.