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

Действия (actions)

Действия — вторая половина языка истории (первая — условия). Это то, что происходит, когда игрок заходит на стадию, кликает по точке на карте или берёт под контроль территорию. Формат — объект { команда: [аргументы] }, у одной стадии/точки может быть сразу несколько команд.

"actions": {
"add": ["аптечка_армейская:2", "дело_сидоровича"],
"money": ["500"],
"openNotification": ["Задание", "Сидорович просит принести пять шкур кровососа"]
}

Часть команд исполняется мгновенно на устройстве, часть требует подтверждения от backend'а (pdanetwork) — для сюжетописателя разница не важна практически, но полезно понимать, что игра в этот момент обращается к сети.

Инвентарь, деньги, опыт

КомандаАргументыЧто делает
add"id_предмета:количество" или произвольная строка-флагВыдаёт предмет игроку или добавляет текстовый флаг в инвентарь (см. флаги)
remove"id_предмета:количество" или точный текст флагаЗабирает предмет или удаляет ранее выданный флаг/задание
moneyчисло (можно отрицательное)Изменяет количество денег игрока
xpчисло (можно отрицательное)Изменяет количество опыта игрока
resetrelation_N (см. ниже) или itemsitems — полностью очищает инвентарь; relation_N — сбрасывает отношение к конкретной фракции

Идентификаторы предметов берутся из общего каталога backend'а — в редакторе они выбираются из выпадающего списка, а не вводятся вручную.

Отношения с фракциями

КомандаАргументыЧто делает
+"relation_<id_фракции>:<величина>"Улучшает отношение указанной фракции к игроку на заданную величину
-"relation_<id_фракции>:<величина>"Ухудшает отношение указанной фракции к игроку на заданную величину

Идентификаторы фракций (id) — см. справочник фракций. Подробный разбор шкалы отношений — в разделе «Система отношений».

Уведомления и заметки

КомандаАргументыЧто делает
openNotification / showNotificationзаголовок, текстПоказывает всплывающее уведомление игроку
note"Заголовок:Текст"Добавляет заметку в ПДА игрока — удобно для «зацепок», которые игрок сам захочет перечитать

Навигация по истории

КомандаАргументыЧто делает
openStage[id_стадии] или [id_главы, id_стадии]Технический переход к стадии, в том числе в другой главе (используется на служебных стадиях type_stage: 5)
openSellerid продавцаОткрывает торговое окно конкретного NPC-торговца
syncNowПринудительно синхронизирует прогресс игрока с сервером немедленно, не дожидаясь фонового синка
exitStoryВыходит из истории, оставляя её незавершённой (прогресс сохраняется)
finishStoryОтмечает историю как пройденную

Звук и музыка

КомандаАргументыЧто делает
playMusicссылка на трекПроигрывает трек один раз
loopMusicссылка на трекПроигрывает трек в цикле (фоновая музыка сцены/главы)
stopMusicОстанавливает музыку
playSoundссылка на звукПроигрывает звуковой эффект
pauseSoundСтавит звук на паузу
pauseAllSound / resumeAllSoundПауза/возобновление всех звуков разом

Скрипты (продвинутый уровень)

КомандаАргументыЧто делает
script / luaLua-кодВыполняет произвольный Lua-скрипт синхронно
asyncScript / asyncLuaLua-кодТо же, но асинхронно, не блокируя интерфейс

В редакторе сюжетов для script открывается полноценный редактор кода (CodeMirror). Это «люк для продвинутых»: если стандартных действий не хватает (сложная логика, вычисления), их можно реализовать скриптом. Подробностей API, доступного внутри Lua-скрипта, в открытых источниках немного — см. «Открытые вопросы», в простых историях script обычно не требуется.

Прочее

  • showAd — показывает рекламу (video или simple); используется в игровых механиках, не завязанных на сюжет историй напрямую.
  • В коде backend'а встречаются ещё серверные команды item, item_condition, state, set — их точная семантика не задокументирована в открытом коде редактора и требует уточнения у разработчиков, прежде чем использовать их в истории напрямую (не используйте их «наугад» — предпочитайте add/remove/money/xp, которые подтверждённо работают и доступны в UI редактора).

Далее