Как выдать модератору точечные права через Server Devcommands
Server Devcommands имеет дополнительную систему прав для выделенного сервера. Она позволяет разрешать отдельные функции обычным игрокам и ограничивать отдельные команды администраторов. Это функции мода, а не расширение vanilla adminlist.txt; полный набор возможностей требует серверной установки.
Проверьте файл и личность игрока
Правила находятся в permissions.yaml в каталоге BepInEx/config. Мод создаёт файл и добавляет записи персонажей, использующих Server Devcommands. Для выдачи прав сопоставьте id аккаунта/хоста и character: автор предупреждает, что один character id легко подделать. Не выдавайте доступ только по отображаемому имени.
Если character не указан, правило распространяется на всех персонажей соответствующего host id. Для полномочий одному персонажу используйте его отдельную запись. При работе с уже существующим файлом сначала сохраните копию и сверяйтесь с автоматически созданной записью нужного игрока.
Различайте значения правил
| Значение | Смысл в системе мода |
|---|---|
| yes | Разрешить конкретную функцию или команду, в том числе не-администратору |
| no | Запретить конкретную функцию или команду, в том числе администратору |
| force | Принудительно включить поддерживаемую функцию; это не гарантия контроля клиента после удаления мода |
Функции Server Devcommands находятся в секции serverdevcommands, команды — в commands. Не переносите названия функций из другого плагина: он должен отдельно поддерживать эту систему и документировать свою секцию. Для commands автор описывает работу с консольными командами независимо от мода.
Создайте группу moderators
Группа — обычная запись с name: moderators, но без id и character. В ней можно задать нужные функции и команды, затем добавить имя группы в groups у проверенной записи персонажа. Начните с небольшого набора полномочий вместо admin: yes.
| Часть примера | Что задать |
|---|---|
| Группа | name: moderators; без id и character |
| Разрешённая функция | В serverdevcommands: mapcoordinates: yes |
| Запрещённая команда | В commands: event: no |
| Участник | Проверенные id и character; groups содержит moderators |
Это пример структуры, а не файл с действующими идентификаторами. Сохраните YAML-вложенность: секции принадлежат своей записи, а не соседнему персонажу. Перед применением проверьте, что редактируете правила нужного сервера и нужной учётной записи.
Проверьте наследование до вывода о доступе
Everyone применяется всегда, даже когда явно не перечислена в groups. Персонаж может состоять в нескольких группах, а группы могут иметь родителей. Индивидуальное правило персонажа перекрывает групповое: если группа разрешает функцию, но в записи персонажа стоит no, она запрещена.
Не угадывайте порядок разрешения конфликтов между несколькими группами: выбранная документация явно подтверждает приоритет персонажа, но не универсальное правило «последняя группа побеждает». При спорном доступе сравните Everyone, группы, индивидуальные правила и исходный статус администратора.
Когда использовать команду permissions
По умолчанию Everyone запрещает команду permissions, чтобы не дать всем редактировать доступ. Владелец может оставить управление через файл или отдельно разрешить команду своему проверенному персонажу. Не включайте её сразу для Everyone или всей группы модераторов без отдельного решения владельца.
| Операция permissions | Назначение |
|---|---|
| add_group <group> <character id or name> | Добавить в группу |
| remove_group <group> <character id or name> | Убрать из указанной группы |
| ban_command <command> <character id or name> | Задать запрет команды |
| clear_command <command> <character id or name> | Удалить индивидуальное правило команды |
| clear_groups <character id or name> | Очистить список групп |
| clear_all <character id or name> | Очистить настройки этой записи |
Команды действуют и для отсутствующего игрока, если его запись уже есть в файле. При отзыве доступа проверьте итоговые права: clear_command убирает переопределение, но команда может снова разрешаться группой или исходным admin-статусом. Очистка записи не равна гарантированному запрету всего.
Ограничения и восстановление управления
Поле admin: yes или no перекрывает обычный список администраторов. Используйте его осознанно: для точечной роли чаще нужны отдельные правила, а не полный admin. Root users из конфигурации — отдельная настройка владельца; README указывает, что её нельзя менять командой dev_config.
Гайд был полезен?