Ввод команд в игре
Введите /toolbox или /8 в чат, чтобы перейти к командной строке Toolbox, затем введите команду. Можно передать команду сразу:
/toolbox mymod
/toolbox mymod echo "Hello world"
/toolbox mymod echo 'A quoted string'
/toolbox mymod echo "Quotes: \"example\"; backslash: \\"
Пробелы разделяют аргументы. Для строки с пробелами используйте одинарные или двойные кавычки. Обратная косая черта экранирует кавычки и саму себя. Незакрытые кавычки вызывают ошибку разбора. В callback поступают строки: числа и логические значения преобразуйте и проверяйте сами.
Регистрация
mod.command предоставляет встроенный модуль команд. add(command, callback[, context]) принимает имя или массив псевдонимов. Имена уникальны без учета регистра; повторная регистрация занятого имени вызывает ошибку. context задает this обработчика.
module.exports = function MyMod(mod) {
mod.command.add(['mymod', 'mm'], (...args) => {
mod.command.message(`Arguments: ${args.join(', ')}`);
});
};
Подкоманды
Вместо функции можно передать объект. Каждый ключ становится подкомандой; вложенные объекты создают следующий уровень. $none вызывается без аргументов, $default — если соответствия не найдено. В $default передается и неизвестное имя подкоманды.
mod.command.add('example', {
$none() {
mod.command.message('Usage: example echo <text> | color blue');
},
$default(name) {
mod.command.message(`Unknown subcommand: ${name}`);
},
echo(...words) {
mod.command.message(words.join(' '));
},
color: {
$default() { mod.command.message('Usage: example color blue'); },
blue() { mod.command.message('<font color="#5555ff">Hello!</font>'); }
}
});
Остальные методы
| Метод | Поведение |
|---|---|
remove(command) |
Удаляет команду или массив псевдонимов |
message(msg) |
Сообщение в канал Toolbox; поддерживает игровую HTML-разметку |
exec(str) |
Исполняет строку команды без /toolbox |
exec(args) |
Исполняет массив уже разделенных аргументов |
exec возвращает true, если найдена команда, и false, если нет; ошибки callback могут распространяться вызывающему коду. message добавляет имя модуля согласно настройкам command. Команды, зарегистрированные через mod.command, удаляются при уничтожении соответствующего интерфейса; при временном отключении функции используйте remove явно. Не вставляйте непроверенный текст в HTML-атрибуты сообщения.
Источники: mods/command/README.md, mods/command/index.js, bin/mod.js. Исходный модуль команд создан Pinkie Pie; в Toolbox он дополнен и встроен в API модулей.