Таблица данных *(Data Table)* — это неупорядоченная структура для хранения динамических данных в формате ключ-значение, позволяющая хранить в ней данные почти любых типов данных.
Что из этого определения можно понять?
- Таблица данных — некий контейнер, в который можно записать что угодно по уникальному строковому идентификатору Name.
- В отличие от обычных массивов, размер которых фиксирован при создании, таблица данных автоматически расширяется по мере добавления новых записей. Вам не нужно заранее беспокоиться о её вместимости.
Важно понимать, что в редакторе существует два типа таблиц данных, которые различаются по области видимости *(scope)*:
- Глобальная таблица данных — такая таблица создаётся один раз, ещё до начала инициализации карты, и существует всю игровую сессию. Её главной особенностью является то, что доступ к этой таблице данных может осуществляться откуда угодно, из любого триггера, Библиотеки триггеров, и даже из другой подключенной модификации!
- Локальные таблицы данных — эти таблицы данных работают по точно такому же принципу, как и локальные переменные в триггерах, а значит, они создаются заново при каждом срабатывании триггера и автоматически уничтожаются (очищаются) после завершения всех его действий.
Доступ к Глобальной таблице данных карты, имеет даже сторонняя модификация, подключенная через игровой клиент, в режиме схватки. Таким образом при желании можно настроить "общение" карты с модификацией.
Как осуществляется запись в таблицу?
Для записи данных в таблицу используется семейство действий Save Data Table Value {Data Type}, где {Data Type} — это конкретный тип данных, например: Integer, Real, Unit, Unit Group, Player Group и так далее...
Каждое из этих действий принимает 3 параметра:
- Value - Определяет, что? нужно записать в таблицу
- Name - Определяет, строковый ID по которому записать значение в таблицу
- Scope - Определяет, в глобальную или локальную? таблицу нужно записать значение
Как получить значение из таблицы?
Для чтения данных используются функции Value From Data Table {Data Type}. Обратите внимание: это именно функции, которые возвращают значение, а не действия.
Они принимают те же два ключевых параметра, что и при записи:
- Name — строковый ключ, по которому было сохранено значение.
- Scope — указание на глобальную или локальную таблицу.
Записывать значения необходимо либо в переменные подходящего типа данных, либо напрямую передать подобную функцию в параметр необходимого действия или функции
Data Table Instance
"А это ещё что за зверь?"
Data Table Instance — это специальный тип данных, представляющий собой динамически создаваемые экземпляры таблицы данных. Каждый такой экземпляр:
- Изолирован и не конфликтует с другими экземплярами или глобальной таблицей.
- Может быть передан по ссылке в параметры функций и действий.
Для чего они нужны?
Например можно создать динамический буфер данных для каждого игрока.
Вместо того чтобы придумывать сложные ключи для глобальной таблицы (например, "Player_" + "Player Number", вы можете создать отдельный экземпляр Data Table Instance для каждого игрока и просто передавать его в функции
Вместо того чтобы придумывать сложные ключи для глобальной таблицы (например, "Player_" + "Player Number", вы можете создать отдельный экземпляр Data Table Instance для каждого игрока и просто передавать его в функции
А далее настроить функции таким образом, чтобы они абстрактно работали с данными "одного игрока"