Попытался разобраться с hash таблицами, что то видимо не понял, попытался почитать статьи, опять что то не понял.
Если можно пример, как сохранить в таблицу тип предмета = int значение, и как после получить это значение в другом месте (триггере).
(Да, это тот пример, где я прошу сделать за меня, но без конкретного примера я наверное просто не пойму)

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

Хэш-таблицу это можно представить как таблицу Excel. Каждая ячейка имеет свое местоположение в таблице: номер строки и номер столбца. В морской бой играли? или шахматы? Это как точка имеет свои координаты x,y.
Каждой ячейке еще можно задать тип данных: целое число, реальное число, строка и пр. В нашем случае можно добавлять юнита, эффекты, группы, таймеры и многое др.

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

Хэш-таблица имеет два ключа: key 1 - старший (родительский), и key 2 -младший. В Jass с этим все же попроще. В гуи там немного местами ключи перепутаны. Короче, данные объекта чаще всего записывают на хэндл - номер объекта в игре. Когда в игре создается футман, ему автоматом число присваивают N+0. Создают второго, и ему же присваивают номер N+1. Этот номер хэндла можно получить нативкой GetHandleId
GetHandleId(item) - хэндл итема
GetHandleId(unit) - хэндл юнита итд
key 1 GetHangleId(Item)
key 2 1 2
Итог тип: таймер. таймер - время жизни итема тип: целое число. игрок - кому принадлежит итем
пример выше, я на этот же хэндл могу записать два разных значения. Могу и больше значении записать в таблицу, но наглядная таблица получится огромной, поэтому остановился на двух. И потом выгрузить данные в переменные
Принятый ответ
0
2
4 года назад
0
Спасибо, буду разбираться.
0
27
4 года назад
0
JableNine, не за что =)
в ячейку можно сохранять спец нативками данные патче 1.24. Там на каждый тип своя нативка (типа сохранить молнию или сохранить юнита. ранее до хэш-таблицы использовали ретурн баг, где могли конвентировать любой объект (юнит, эффект, молнию итд) в число и обратно. но сюда и могли вирусняк записать, поэтому близзарды дали отдельные команды: сохранить/загрузить на каждый тип объекта), но сохранить можно что-то одно. Если там ничего не сохранено, вернет ноль или null. Кстати там есть проверки пустой ли хэндл, и прочее
Чтобы оставить комментарий, пожалуйста, войдите на сайт.