Как создать свои команды и макросы администратора Valheim
Server Devcommands позволяет создать короткую команду с параметрами, запросить значение через окно ввода и выполнить несколько действий по порядку. Aliases хранятся в alias.yaml и управляются командой alias. Это возможности мода JereKuusela, для которых нужен его обработчик команд.
Подготовьте доступ и исходную команду
Автор требует установить мод на клиент администратора; полные возможности требуют также установки на сервер. SteamID64 администратора должен быть в adminlist.txt. Alias не выдаёт прав: после его развёртывания проверяются существование и разрешение каждой команды.
- Сохраните копию имеющегося alias.yaml из папки конфигурации BepInEx, если он уже существует. Это позволит сверить прежнее определение при изменении.
- Проверьте доступную базовую команду отдельно. Для примеров ниже используются сообщения и вывод текущего ветра, а не создание предметов или изменение мира.
- Введите alias без аргументов и убедитесь, что новое короткое имя не заменит нужное существующее определение.
Создание, просмотр и удаление
| Синтаксис в консоли | Действие |
|---|---|
| alias [name] [command] | Добавляет определение или обновляет существующее |
| alias | Выводит список aliases |
| alias [name] | Удаляет указанное определение |
Для короткого имени сообщения пример по синтаксису автора: alias notice broadcast center. После этого notice "Работы завершены" передаёт фразу команде broadcast center. Это составленный учебный пример; в работающей игре он не проверялся. Broadcast отправляет сообщение всем игрокам, поэтому выберите подходящий момент для проверки.
Параметр в середине команды
Подстановка $$ вставляет переданные параметры в середину определения. Например, alias notice_at broadcast $$ "Работы завершены" оставляет место для позиции сообщения. Вызов notice_at center должен разворачиваться в broadcast center "Работы завершены". Здесь center — значение параметра, а заключённая в кавычки фраза — фиксированная часть определения.
Автор допускает несколько $$ и вложенные aliases. Начните с одного параметра и проверьте развёрнутую базовую команду перед усложнением. Не используйте короткое имя, совпадающее с нужной вам исходной командой, и не рассчитывайте, что alias автоматически исправит недостающий аргумент.
Последовательность и пауза
Несколько команд разделяются точкой с запятой. Учебная диагностическая цепочка: alias wind_twice wind; wait 1000; wind. Вызов wind_twice запрашивает текущий ветер, ждёт 1000 миллисекунд и запрашивает его снова. Это демонстрация порядка и wait, а не измерение погоды в рамках подготовки гайда.
Обработчик сначала разворачивает alias, затем разделяет цепочку и выполняет команды последовательно. Поэтому точка с запятой внутри определения задаёт несколько действий. Пауза измеряется миллисекундами: wait 10000 означает десять секунд.
Запрос значения через окно ввода
Маркер <input> в выполняемой строке вызывает окно ввода и откладывает выполнение до получения значения. Например, broadcast center "<input_Message>" использует именованный запрос. Для <input_Player_name> документация указывает заголовок Player Name. Если запросов несколько, они разрешаются по порядку появления.
Кавычки и ошибки разбора
Кавычки объединяют текст с пробелами в один параметр. В первичном примере broadcast center "<color=red>Hello world</color>" форматированная фраза передаётся целиком. Если сообщение или имя содержит пробелы, проверяйте границы кавычек; не добавляйте лишние кавычки вокруг всей цепочки команд.
- Неизвестное имя: выведите alias и проверьте определение, затем выполните базовую команду отдельно.
- Отказ в доступе: проверьте административные права и разрешение исходной команды. Alias не обходит ограничения.
- Цепочка не разделяется: проверьте настройку multiple_commands; для aliases — aliasing, для $$ — substitution, для кавычек — wrapping.
- Неверный параметр: сначала сократите определение до одной команды и одного значения, затем возвращайте подстановки и паузы.
Обновите или удалите макрос
Повторный alias notice [новая команда] заменяет определение. Для удаления введите alias notice без тела команды, затем проверьте список через alias. Не путайте это с unbind: отдельная система клавиш мода хранится в binds.yaml. Здесь для запуска используется имя команды в консоли, а не назначение клавиши.
Гайд был полезен?