Фреймворки на коде
Таблицы правил
Храните постоянные данные правил в таблице и читайте их в правилах или используйте как варианты входного значения.
Что такое таблица
Таблица правил это постоянные данные, которые читают ваши правила, например бонус для каждого призвания. Это не состояние игры, и игроки её не меняют. Изменение строки создаёт новую версию игры, как любая другая правка исходников.
Объявите таблицу
Таблица это файл JSON в tables/. Перечислите его в манифесте.
"tables": ["tables/callings.json"]- Строка 10 Пути к файлам таблиц.
{
"id": "callings",
"name": "Callings",
"columns": [
{ "key": "calling", "label": "Calling", "type": "string" },
{ "key": "bonus", "label": "Watch bonus", "type": "number" }
],
"rows": [
{ "calling": "Guard", "bonus": 30 },
{ "calling": "Scout", "bonus": 10 }
]
}- Строки 4-7 Столбцы. У каждого есть ключ, метка и тип: string, number или boolean.
- Строки 8-11 Строки. Каждая строка задаёт значение для каждого столбца и больше ничего.
Framework перечисляет id таблиц, которые он читает.
"tables": ["callings"]- Строка 22 Framework может читать таблицу callings.
| Ограничение | Значение |
|---|---|
| Столбцов в таблице | 64 |
| Строк в таблице | 1000 |
| Таблиц на Framework | 64 |
| Таблиц на игру | 128 |
Читайте таблицу в правиле
table.find принимает id таблицы, столбцы для сопоставления с искомыми значениями и столбцы для возврата с значением по умолчанию для каждого. Он возвращает названные вами столбцы из первой строки, у которой все столбцы сопоставления равны вашим значениям. Если ни одна строка не подходит, он возвращает значения по умолчанию.
export function construct(
name: string,
max_hp: number,
calling: string,
): { name: string; max_hp: number; hp: number; calling: string; watch: number } {
const row = table.find("callings", { calling: calling }, { bonus: 0 });
const bonus: number = row.bonus;
return {
name: name,
max_hp: max_hp,
hp: max_hp,
calling: calling,
watch: 20 + bonus,
};
}- Строка 6 Найдите бонус для призвания. Значение по умолчанию 0.
- Строка 7 Прочитайте столбец результата. Его тип берётся из таблицы, поэтому приведение не нужно.
- Строка 13 Используйте бонус в начальном значении.
Id таблицы это строка, записанная в коде, и Framework должен перечислять эту таблицу. Каждый названный столбец должен существовать, и возвращаются только названные столбцы. Конструктор читает таблицу так же. Значения для сопоставления должны быть переменной, полем или литералом, а не вычисляемым значением.
Эти ошибки находит проверка проекта:
const row = table.find("callings", { calling: calling }, { boost: 0 });has no column 'boost'which manifest.tables does not declare const row = table.find("callings", { calling: calling + "!" }, { bonus: 0 });table.find match values must be a variable, a field or a literalИспользуйте таблицу для вариантов
Текстовое входное значение может брать варианты из одного столбца таблицы. Варианты это разные значения столбца в порядке строк.
"calling": {
"label": "Calling",
"optionsFrom": { "table": "callings", "column": "calling" },
"defaultValue": "Guard"
}- Строка 11 Мастер предлагает значения столбца calling.
- Строка 12 Значение по умолчанию должно быть одним из вариантов.
is not one of this Framework's tablesВходное значение действия типа text может делать то же через запись optionsFrom в объявлении действия. Источник должен давать не меньше 2 вариантов.

