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