Skip to content

ConditionalCommands

Выполнение команды только при выполнении условия.

ConditionalCommands предназначен для использования, когда плагины имеют автоматические команды, которые должны выполняться только при выполнении определенных условий. Он способен выполнять несколько команд с настраиваемыми задержками для каждой команды.

Эта функция была изменена проектом ConditionalCommands от konsolas и уже встроена в Matrix.
Оригинальный проект: https://github.com/konsolas/ConditionalCommands

Использование

/coc <player> unless <condition> do <command>
/coc <player> if <condition> do <command>
/coc help

Условия

Грамматика условий:

<expression>::=<term>{<or><term>}
<term>::=<factor>{<and><factor>}
<factor>::=<comparison>|<not><factor>|(<expression>)
<comparison>::=<constant><comparator><constant>
<constant>::=floating point number or integer
<and>::='&'
<or>::='|'
<not>::='!'
<comparator>::='>'|'='|'<'

Как показано выше, сравниваться могут только числа, и заполнители (placeholders) могут содержать только числа. В случае нескольких операторов сравнения в группе, например, 3>=<2, будет использоваться только первый оператор. Сравнения не могут включать пробелы. Неравенство можно проверить с помощью !(value=value).

Примеры:

/coc RERERE unless -ping->200 do kick RERERE
/coc RERERE if (-ping-<300&-ping->100)&-tps->15.0 do msg RERERE Your ping is between 300 and 100, and the TPS is greater than 15.

Примеры, используемые в конфигурационном файле

yaml
## Jesus
# Проверка предотвращает слишком быстрое движение игрока в жидкостях или хождение по жидкости.
jesus:
  # Включить эту проверку?
  enable: true

  # Необходимое количество нарушений для отмены нелегальных движений (-1 = никогда не отменять)
  cancel_vl: 15

  # Пороговые значения нарушений
  # number_of_violations: '<command>'
  commands:
    10: 'coc %player% if -ping-<120&-tps->19.5 do matrix notify %player% tried to move illegally in liquid (Jesus)'
    25: 'coc %player% if -ping-<50&-tps->19.5&-time_online->10000 do matrix kick %player% Jesus/WaterSpeed/WaterFly Hacks'
    40: 'matrix kick %player% Jesus/WaterSpeed/WaterFly Hacks'

Заполнители (Placeholders)

Заполнители заключены в '-'. Поскольку они применяются с помощью замены, ошибки, вероятно, будут обнаружены во время анализа, если они введены неправильно.

  • ping - Задержка тестируемого игрока.
  • tps - Средний TPS сервера за последние 2 секунды.
  • time_online - Время игрока онлайн в миллисекундах.
  • uptime - Время работы сервера в тиках.
  • player_count - Количество игроков на сервере.
  • perm:<permission> - 1.0, если у игрока есть разрешение, 0.0 в противном случае. Например, -perm:essentials.home-.
  • vl:<check> - Уровень нарушений Matrix для указанной проверки (внутреннее имя). Например, -vl:speed-.
  • chance:<percentage>% - Будет равен 1.0 процент% времени. Например, -chance:34.5%-.

Множественные команды / команды с задержкой

В разделе 'do' выражения можно выполнять несколько команд одновременно, и выбранные команды могут быть выполнены с задержкой, если это необходимо. Разделитель команд — /<delay>/, где целое число между / и / обозначает задержку перед выполнением команды в тиках. Вот некоторые примеры:

/coc konsolas if -vl:killaura->0 do /1200/ ban konsolas 1 minute delayed ban for killaura
/coc konsolas if -perm:some.permission-=1 do /0/ broadcast konsolas has some.permission! /0/ broadcast second broadcast! /20/ broadcast 1 second later!

Режим разработчика

Режим разработчика был удален в встроенной системе условных команд Matrix.

Сделано с ❤️ от RE