Использую хэш-таблицу в качестве хранилища. Но стал замечать, что не хватает еще одного массива. Мне бы хватило три массива залипить под хранилище.
Допустим, есть магазин, 1 ключ - его хэндл, 2 ключ - типы предмета (равкод итема), 3 ключ - номер).
Представьте, если можно как-нибудь сохранить вот так (примерно)
call SaveUnitHadle(udg_Hash, id, rawcode, 0, u)
call SaveBoolean(udg_Hash, id, rawcode, 1, true)
call SaveInteger(udg_Hash, id, rawcode, 2, 5)
Хотя так сохранить нельзя никак =(( Хэш-таблица использует два ключа.
Кстати вроде использовал обычный массив от переменной, то там индекс не такой большой. Нельзя туда ни хэндлы всунуть, ни равкоды. А в хэш-таблицу все влезает, и норм. Существует способ решения?
глупый вопрос
Еще вопрос, если сохранить в одну ячейку юнита, то повторно сохранив другой тип (например, boolean), то перезаписывается юнит на boolean? Просто что-то подумал, а что если можно было туда засунуть несколько разных типов(integer, unit, group и др.) в одну ячейку
call SaveUnitHadle(udg_Hash, id, 0, u)
call SaveBoolean(udg_Hash, id, 0, true)

Steal nerves, лови. Годный такой мануал.
На сишные структуры похожи. Короче. Прочитаешь на 2-3 раза - все поймешь.
Загруженные файлы
`
ОЖИДАНИЕ РЕКЛАМЫ...
22
многомерность можно имитировать, делая расчет одного из индексов из двух других, как в жнгп реализованы двумерные массивы
то есть SaveUnitHadle(udg_Hash, id, rawcode, 0, u)
преобразуется в SaveUnitHadle(udg_Hash, id, rawcode + 0 * max_rawcode, u)
но будет ограничение по размеру, max_rawcode должно быть константой которая больше чем все rawcod'ы
27
biridius, такое уже делал. Еще вычитанием можно да? потом так запутался нафиг. и две недели парился, ища ошибку. А потом выяснил, что мб дело в ключе. У меня ключ хэш-таблицы был отрицательным? один раз сделал, и у меня boolean не работал
32
Структуры vjassа юзать не судьба? Для хранения индекса структуры юзайте хештаблицу или XAT.
22
тот код должен работать и с отрицательным третьим индексом (вместо 0), но не с отрицательным равкодом
rawcode + 0 * (max_rawcode - min_rawcode)
min_rawcode поставить как самый отрицательный равкод
ошибка может быть только при переполнении целого числа, когда вся эта сумма стане столь огромной что уйдет в минус
27
quq_CCCP, думаешь, я знаю что такое структуры? или XAT? просто не до конца понимаю как использовать этот vjass. максимум глобалки объявить можно. там вроде можно двухмерные переменные использовать
15
Steal nerves, лови. Годный такой мануал.
На сишные структуры похожи. Короче. Прочитаешь на 2-3 раза - все поймешь.
Загруженные файлы
Принятый ответ
Чтобы оставить комментарий, пожалуйста, войдите на сайт.