Попытался разобраться с hash таблицами, что то видимо не понял, попытался почитать статьи, опять что то не понял.
Если можно пример, как сохранить в таблицу тип предмета = int значение, и как после получить это значение в другом месте (триггере).
(Да, это тот пример, где я прошу сделать за меня, но без конкретного примера я наверное просто не пойму)
Если можно пример, как сохранить в таблицу тип предмета = int значение, и как после получить это значение в другом месте (триггере).
(Да, это тот пример, где я прошу сделать за меня, но без конкретного примера я наверное просто не пойму)
Принятый ответ
Хэш-таблицу это можно представить как таблицу Excel. Каждая ячейка имеет свое местоположение в таблице: номер строки и номер столбца. В морской бой играли? или шахматы? Это как точка имеет свои координаты x,y.
Каждой ячейке еще можно задать тип данных: целое число, реальное число, строка и пр. В нашем случае можно добавлять юнита, эффекты, группы, таймеры и многое др.
Каждой ячейке еще можно задать тип данных: целое число, реальное число, строка и пр. В нашем случае можно добавлять юнита, эффекты, группы, таймеры и многое др.
Хэш-таблица имеет два ключа: key 1 - старший (родительский), и key 2 -младший. В Jass с этим все же попроще. В гуи там немного местами ключи перепутаны. Короче, данные объекта чаще всего записывают на хэндл - номер объекта в игре. Когда в игре создается футман, ему автоматом число присваивают N+0. Создают второго, и ему же присваивают номер N+1. Этот номер хэндла можно получить нативкой GetHandleId
GetHandleId(item) - хэндл итема
GetHandleId(unit) - хэндл юнита итд
GetHandleId(item) - хэндл итема
GetHandleId(unit) - хэндл юнита итд
key 1 | GetHangleId(Item) | |
---|---|---|
key 2 | 1 | 2 |
Итог | тип: таймер. таймер - время жизни итема | тип: целое число. игрок - кому принадлежит итем |
пример выше, я на этот же хэндл могу записать два разных значения. Могу и больше значении записать в таблицу, но наглядная таблица получится огромной, поэтому остановился на двух. И потом выгрузить данные в переменные
`
ОЖИДАНИЕ РЕКЛАМЫ...
Чтобы оставить комментарий, пожалуйста, войдите на сайт.
Отредактирован MpW
Каждой ячейке еще можно задать тип данных: целое число, реальное число, строка и пр. В нашем случае можно добавлять юнита, эффекты, группы, таймеры и многое др.
GetHandleId(item) - хэндл итема
GetHandleId(unit) - хэндл юнита итд
в ячейку можно сохранять спец нативками данные патче 1.24. Там на каждый тип своя нативка (типа сохранить молнию или сохранить юнита. ранее до хэш-таблицы использовали ретурн баг, где могли конвентировать любой объект (юнит, эффект, молнию итд) в число и обратно. но сюда и могли вирусняк записать, поэтому близзарды дали отдельные команды: сохранить/загрузить на каждый тип объекта), но сохранить можно что-то одно. Если там ничего не сохранено, вернет ноль или null. Кстати там есть проверки пустой ли хэндл, и прочее