Skip to content

ConditionalCommands

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

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

Эта функция была модифицирована проектом konsolas' ConditionalCommands и уже встроена в 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