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.
Примеры, используемые в конфигурационном файле
## 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.