Действия (actions)
Действия — вторая половина языка истории (первая — условия). Это то, что происходит,
когда игрок заходит на стадию, кликает по точке на карте или берёт под контроль территорию. Формат — объект
{ команда: [аргументы] }, у одной стадии/точки может быть сразу несколько команд.
"actions": {
"add": ["аптечка_армейская:2", "дело_сидоровича"],
"money": ["500"],
"openNotification": ["Задание", "Сидорович просит принести пять шкур кровососа"]
}
Часть команд исполняется мгновенно на устройстве, часть требует подтверждения от backend'а (pdanetwork) —
для сюжетописателя разница не важна практически, но полезно понимать, что игра в этот момент обращается к сети.
Инвентарь, деньги, опыт
| Команда | Аргументы | Что делает |
|---|---|---|
add | "id_предмета:количество" или произвольная строка-флаг | Выдаёт предмет игроку или добавляет текстовый флаг в инвентарь (см. флаги) |
remove | "id_предмета:количество" или точный текст флага | Забирает предмет или удаляет ранее выданный флаг/задание |
money | число (можно отрицательное) | Изменяет количество денег игрока |
xp | число (можно отрицательное) | Изменяет количество опыта игрока |
reset | relation_N (см. ниже) или items | items — полностью очищает инвентарь; relation_N — сбрасывает отношение к конкретной фракции |
Идентификаторы предметов берутся из общего каталога backend'а — в редакторе они выбираются из выпадающего списка, а не вводятся вручную.
Отношения с фракциями
| Команда | Аргументы | Что делает |
|---|---|---|
+ | "relation_<id_фракции>:<величина>" | Улучшает отношение указанной фракции к игроку на заданную величину |
- | "relation_<id_фракции>:<величина>" | Ухудшает отношение указанной фракции к игроку на заданную величину |
Идентификаторы фракций (id) — см. справочник фракций. Подробный разбор шкалы
отношений — в разделе «Система отношений».
Уведомления и заметки
| Команда | Аргументы | Что делает |
|---|---|---|
openNotification / showNotification | заголовок, текст | Показывает всплывающее уведомление игроку |
note | "Заголовок:Текст" | Добавляет заметку в ПДА игрока — удобно для «зацепок», которые игрок сам захочет перечитать |
Навигация по истории
| Команда | Аргументы | Что делает |
|---|---|---|
openStage | [id_стадии] или [id_главы, id_стадии] | Технический переход к стадии, в том числе в другой главе (используется на служебных стадиях type_stage: 5) |
openSeller | id продавца | Открывает торговое окно конкретного NPC-торговца |
syncNow | — | Принудительно синхронизирует прогресс игрока с сервером немедленно, не дожидаясь фонового синка |
exitStory | — | Выходит из истории, оставляя её незавершённой (прогресс сохраняется) |
finishStory | — | Отмечает историю как пройденную |
Звук и музыка
| Команда | Аргументы | Что делает |
|---|---|---|
playMusic | ссылка на трек | Проигрывает трек один раз |
loopMusic | ссылка на трек | Проигрывает трек в цикле (фоновая музыка сцены/главы) |
stopMusic | — | Останавливает музыку |
playSound | ссылка на звук | Проигрывает звуковой эффект |
pauseSound | — | Ставит звук на паузу |
pauseAllSound / resumeAllSound | — | Пауза/возобновление всех звуков разом |
Скрипты (продвинутый уровень)
| Команда | Аргументы | Что делает |
|---|---|---|
script / lua | Lua-код | Выполняет произвольный Lua-скрипт синхронно |
asyncScript / asyncLua | Lua-код | То же, но асинхронно, не блокируя интерфейс |
В редакторе сюжетов для script открывается полноценный редактор кода (CodeMirror).
Это «люк для продвинутых»: если стандартных действий не хватает (сложная логика, вычисления), их можно
реализовать скриптом. Подробностей API, доступного внутри Lua-скрипта, в открытых источниках немного — см.
«Открытые вопросы», в простых историях script обычно не требуется.
Прочее
showAd— показывает рекламу (videoилиsimple); используется в игровых механиках, не завязанных на сюжет историй напрямую.- В коде backend'а встречаются ещё серверные команды
item,item_condition,state,set— их точная семантика не задокументирована в открытом коде редактора и требует уточнения у разработчиков, прежде чем использовать их в истории напрямую (не используйте их «наугад» — предпочитайтеadd/remove/money/xp, которые подтверждённо работают и доступны в UI редактора).
Далее
- Переменные и флаги — как спроектировать состояние истории.
- Задания и чекпоинты — как собрать квестовый журнал поверх флагов.