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

Счётчик и тоггл

Два самых частых примитива состояния в любом GUI: числовой счётчик, который можно увеличивать и уменьшать, и бинарный тоггл. Оба показывают систему персональных переменных (varp) и паттерн dual-item для условного отображения.

  • incVarp / decVarp / removeVarp для числовых мутаций
  • setVarp с шорткатом "name::value"
  • Синтаксис плейсхолдера %varp_:name:default%
  • Правило existVarp для проверки “существует ли эта переменная у игрока”
  • Паттерн dual-item: два предмета на одном слоте, у первого правила, второй - фолбек
  • refreshMenu: true, чтобы отображение обновлялось без закрытия и переоткрытия меню

Счётчик использует три действия и плейсхолдер:

  • incVarp: "ame_counter" прибавляет 1 к переменной. Если её нет, плагин сначала автоматически инициализирует её нулём.
  • decVarp: "ame_counter" отнимает 1.
  • removeVarp: "ame_counter" удаляет переменную - фактически сброс в “счётчика нет”.

Отображающий предмет показывает %varp_:ame_counter:0%. Суффикс :0 - значение по умолчанию: когда переменная не существует, плейсхолдер рендерится как 0, а не пустая строка.

Каждое click-действие заканчивается на refreshMenu: true, чтобы отображение обновлялось сразу. Без этого счётчик обновлялся бы только при срабатывании auto-update интервала меню (или никогда, если updateInterval не задан).

Тоггл использует паттерн dual-item: два предмета объявлены на одном слоте, первый рендерится только если его правила проходят, а второй - фолбек.

# Виден, когда тоггл задан
{ slot: 15, material: LIME_DYE, rules { existVarp: "ame_toggle" }, ... }
# Виден, когда тоггл НЕ задан
{ slot: 15, material: GRAY_DYE, ... } # без правил = всегда проходит

Когда у игрока задана переменная ame_toggle, показывается зелёный предмет, и клик удаляет переменную. Когда переменной нет, показывается серый предмет, и клик ставит переменную в “1” (значение неважно для проверки существования, важно лишь, что переменная есть).

Этот паттерн часто используют для вещей вроде “выдать предмет / уже забрано”, “VIP-цена / обычная цена”, “замьючен / размьючен” - любое бинарное состояние, где игрок должен видеть разную картинку.

Чтобы поменять имя переменной, замените ame_counter и ame_toggle везде - в действиях, в правиле existVarp и в плейсхолдере. Берите имена с серверным префиксом, чтобы избежать коллизий с другими меню.

Для счётчика с шагом больше 1 используйте объектную форму:

incVarp: [
{ name: "ame_counter", amount: 5 }
]

После установки example pack:

  1. Положите бандл в plugins/AbstractMenus/menus/example/.
  2. /am reload.
  3. Введите /ame_counter в игре.
  4. Покликайте. Счётчик сохраняется - закройте меню, откройте снова, значение на месте.