Перейти к основному содержимому

Сборка действий и условий в UI

Раздел «Действия» и «Условия» описывает язык истории на уровне JSON. В редакторе вам не нужно писать JSON руками — есть визуальный конструктор.

Конструктор действий

Для каждой команды из справочника действий редактор показывает подходящий тип поля, а не голое текстовое поле:

  • Выдача предмета (add/remove) — выпадающий список предметов, подтягиваемый напрямую из каталога backend'а (pdanetwork), с количеством. Значит, идентификаторы предметов всегда актуальны и совпадают с тем, что реально существует в игре — опечатка в id невозможна в принципе.
  • Изменение отношений (+/-) — слайдер/выбор фракции и величины, вместо ручного набора строки "relation_4:2".
  • Lua-скрипт (script) — полноценный редактор кода (CodeMirror) с подсветкой синтаксиса — редактор явно выделяет это действие как «для продвинутых», не пряча его за обычным текстовым полем, но и не давая ему такой же дружелюбный UI, как остальным действиям.
  • Остальные команды (звук, уведомления, деньги, опыт) — простые типизированные поля (число, текст, выбор трека).

Конструктор условий

Условия собираются тем же принципом: выбор между «есть предмет/флаг» (has/!has) с подсказкой из каталога, и «сравнение переменной» (выбор имени переменной — money, xp или своя — и оператора). Это снижает риск опечаток в кастомных переменных, из-за которых условие молча перестаёт срабатывать.

Почему это важно для качества истории

Ручное редактирование «сырого» JSON истории всё ещё возможно (импорт/экспорт на главной странице), но рекомендуемый путь — именно UI-конструктор:

  1. Id предметов и структура действий всегда валидны — не нужно свериться со справочником вручную.
  2. Условия визуально группируются рядом с текстом/переходом, к которому относятся — граф легче читать, когда вы возвращаетесь к истории спустя время.
  3. Валидатор редактора (StageValidator) подсвечивает подозрительные места ещё до сохранения.

Далее