Если кто не знал - хэштейбл это просто

Добавлен , не публикуется
Когда я первый раз увидел хэш таблицу, я вообще ничего не понял. Куча непонятных команд и непонятно для чего созданные локальные переменные. Мне было бы намного проще освоиться, если было бы описание процесса, перевод жасс-кода на русский язык. Так вот, если кто не знал и хочется освоить хеш, вот приведу перевод на русский.
Сначала нужно создать хэш таблицу, вот как это выглядит:
call InitHashtable()
Ну и присваиваем значение:
set udg_hash = GetLastCreatedHashtable()
Как вы, наверное, уже знаете хэш-таблица у нас работает по принципу ключ-значение. Если не знаете что это значит, поясню: ключ это идентификатор чего-либо, а значение приклеиваются к этому ключу. Можно сказать - ключ это название строки, а значение - это содержание нужного столбца.
Далее вы можете увидеть процедуру присвоения:
call SaveUnitHandle(udg_hash, GetHandleId(t), 1, GetTriggerUnit())
В данном случае мы к ключу "t" прилепили триггер-юнит и занесли его в первый столбик, все операции провели в таблице udg_hash(udg потому что глобальная).
Вот и все, значение занесено, можно теперь эти значение использовать.
set udg_unit = LoadUnitHandle(udg_hash, GetHandleId(t), 1)
Тут мы заранее объявленной переменной unit присвоили значение, вытащенное из таблицы, из строки t и первого столбца.
Далее с unit можно творить все, что можно творить с обычным юнитом.
Чтобы ваша карта не начала лагать, нужно очищать таблицу от мусора.
if GetUnitState(udg_unit, UNIT_STATE_LIFE) < 1 then
 call KillUnit(udg_unit)
 call FlushChildHashtable(udg_hash, GetHandleId(t))
Тут мы проверили сколько у юнита жизней, если меньше одного - убиваем его и очищаем от него таблицу. Далее можно присвоить ключу другие значения или уничтожить и сам ключ:
call FlushParentHashtable(udg_hash, GetHandleId(t))
`
ОЖИДАНИЕ РЕКЛАМЫ...
0
14
11 лет назад
0
хештаблица это просто трёхмерный массив
0
8
11 лет назад
0
0
37
11 лет назад
Отредактирован ScorpioT1000
0
Есть статья: xgm.ru/p/wc3/hashtable
Темак, ты сказал полный бред.
По статье могу добавить, что если меньше 1 хп - не значит, что он мертв. Поищите на форуме IsUnitDead, там была единственно верная функция
0
8
11 лет назад
0
когда я только начал учить хэштейбл мне та статья была малость непонятна. Чтобы сразу освоить ту статью нужны некоторые дополнительные знания, а я тут пытаюсь разжевать для лучшего восприятния.
про 1 хп спасибо
Чтобы оставить комментарий, пожалуйста, войдите на сайт.