Использую хэш-таблицу в качестве хранилища. Но стал замечать, что не хватает еще одного массива. Мне бы хватило три массива залипить под хранилище.
Допустим, есть магазин, 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 раза - все поймешь.
Загруженные файлы
2
20
7 лет назад
2
многомерность можно имитировать, делая расчет одного из индексов из двух других, как в жнгп реализованы двумерные массивы
то есть SaveUnitHadle(udg_Hash, id, rawcode, 0, u)
преобразуется в SaveUnitHadle(udg_Hash, id, rawcode + 0 * max_rawcode, u)
но будет ограничение по размеру, max_rawcode должно быть константой которая больше чем все rawcod'ы
2
27
7 лет назад
Отредактирован MpW
2
biridius, такое уже делал. Еще вычитанием можно да? потом так запутался нафиг. и две недели парился, ища ошибку. А потом выяснил, что мб дело в ключе. У меня ключ хэш-таблицы был отрицательным? один раз сделал, и у меня boolean не работал
6
32
7 лет назад
6
Структуры vjassа юзать не судьба? Для хранения индекса структуры юзайте хештаблицу или XAT.
1
20
7 лет назад
1
тот код должен работать и с отрицательным третьим индексом (вместо 0), но не с отрицательным равкодом
rawcode + 0 * (max_rawcode - min_rawcode)
min_rawcode поставить как самый отрицательный равкод
ошибка может быть только при переполнении целого числа, когда вся эта сумма стане столь огромной что уйдет в минус
0
27
7 лет назад
Отредактирован MpW
0
quq_CCCP, думаешь, я знаю что такое структуры? или XAT? просто не до конца понимаю как использовать этот vjass. максимум глобалки объявить можно. там вроде можно двухмерные переменные использовать
0
20
7 лет назад
0
Steal nerves, погугли vjass manual, там должно быть все про struct'ы
2
15
7 лет назад
Отредактирован EnergyFrost
2
Steal nerves, лови. Годный такой мануал.
На сишные структуры похожи. Короче. Прочитаешь на 2-3 раза - все поймешь.
Загруженные файлы
Принятый ответ
Чтобы оставить комментарий, пожалуйста, войдите на сайт.