Действия (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 | Строка (команда) | Выполняет команду от имени игрока. |
message | MiniMessage текст | Отправляет сообщение в чат игроку. |
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%- и сотни других.
Плейсхолдеры работают в:
titlebodyконтенте.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> создан!"
Как это работает
- Игрок нажимает кнопку → диалог закрывается
- Игрок видит сообщение-подсказку (параметр
value) - Следующее сообщение игрока в чат перехватывается
- Введённый текст подставляется вместо
<input:key> - Выполняется команда
Используйте <input:key> в команде для подстановки введённого текста. Ключ key должен совпадать с названием в <input:key>.