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

Действия (Actions)

Действия определяют, что произойдет, когда игрок нажмет на кнопку в диалоге. Вы можете указывать как одно действие, так и цепочку действий.

🔗 Одиночное действие

button:
text: "Текст"
action:
type: command
value: "say Привет!"

⛓ Цепочка действий (Multi-Action)

Действия выполняются последовательно сверху вниз.

button:
text: "Получить бонус"
action:
- type: command
value: "give %player_name% diamond 1"
- type: message
value: "<green>Вы получили алмаз!"
- type: close

🛠 Доступные типы действий

ТипЗначениеОписание
commandСтрока (команда)Выполняет команду от имени консоли.
playercommandСтрока (команда)Выполняет команду от имени игрока.
messageMiniMessage текстОтправляет сообщение в чат игроку.
urlСсылка (URL)Отправляет в чат кликабельную ссылку.
close(пусто)Закрывает текущий диалог.
openИмя менюОткрывает другое меню из папки menus/.
inputТекст (prompt)Запрашивает ввод текста в чате и подставляет в команду.

Пример playercommand

Используется, когда нужно выполнить команду от имени игрока (например, для плагинов, проверяющих пермишены игрока):

buttons:
upgrade:
text: "<green>Улучшить"
action:
- type: playercommand
value: "myplugin-buy-item"

🧩 Переменные и Плейсхолдеры

Встроенные

  • <player> — никнейм игрока (устарело, используйте PAPI).

Переменные ввода (Inputs)

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

  • <input:ID> — заменяется на значение поля с указанным ID.

Пример сохранения профиля:

inputs:
age:
type: number-range
label: "Ваш возраст"
buttons:
save:
text: "Сохранить"
action:
- type: command
value: "profile set-age <player> <input:age>"
- type: message
value: "Возраст <input:age> сохранен!"

PlaceholderAPI (PAPI)

Если на сервере установлен PlaceholderAPI, вы можете использовать любые плейсхолдеры:

  • %player_name%
  • %vault_balance%
  • %essentials_nickname%
  • и сотни других.

Плейсхолдеры работают в:

  • title
  • body контенте.
  • text и hover кнопок.
  • value действий (например, в командах).

Условные плейсхолдеры (Conditional)

Вы можете отображать разный текст в зависимости от значения плейсхолдера:

buttons:
toggle_fire:
text: "<gray>Fire: <%easyscript_ws_fire_%?red:green>●</gray> <%easyscript_ws_fire_%?ON:OFF>"

Синтаксис: <%плейсхолдер%?значение_если_истина:значение_если_ложь>

Пример:

  • Если %easyscript_ws_fire_% = true → покажет "red" и "ON"
  • Если %easyscript_ws_fire_% = false → покажет "green" и "OFF"

💬 Input (Ввод в чате)

Позволяет запросить у игрока текстовый ввод через чат. Сообщение игрока перехватывается и не отправляется в чат (чтобы избежать спама).

Параметры

ПараметрОписание
valueСообщение-подсказка, которое увидит игрок.
keyУникальный ключ для подстановки введённого текста (по умолчанию: chatinput).
commandКоманда, которая выполнится после ввода.
playercommandКоманда от имени игрока.
oninputСписок действий после ввода.

Базовый пример

buttons:
addmember:
text: "Добавить игрока"
action:
- type: input
value: "<green>Введите никнейм игрока в чат:"
key: playername
command: "ws addmember <input:playername>"

Пример с несколькими действиями

buttons:
createworld:
text: "Создать мир"
action:
- type: input
value: "<green>Введите название мира:"
key: worldname
oninput:
- type: command
value: "ws create <input:worldname>"
- type: message
value: "<green>Мир <input:worldname> создан!"

Как это работает

  1. Игрок нажимает кнопку → диалог закрывается
  2. Игрок видит сообщение-подсказку (параметр value)
  3. Следующее сообщение игрока в чат перехватывается
  4. Введённый текст подставляется вместо <input:key>
  5. Выполняется команда
подсказка

Используйте <input:key> в команде для подстановки введённого текста. Ключ key должен совпадать с названием в <input:key>.