Разрешения
Разрешения позволяют выдавать игрокам доступ к функциям плагинов и объединять права в группы, например для привилегий или команды модераторов.
Перед этой статьёй прочитайте статью команды.
Как выглядят разрешения
Разрешение - это строка, обычно в формате имя_плагина.название_разрешения. Плагины регистрируют разрешения в Carbon так же, как в Oxide, поэтому у плагинов для Oxide названия разрешений те же.
Например, у плагина Vanish есть чат-команда /vanish, для которой нужно разрешение vanish.allow:
- имя_плагина -
vanish - название_разрешения -
allow
INFO
Список разрешений плагина обычно есть на его странице, откуда вы его скачали.
Способы выдачи разрешений
- Разрешения пользователю выдаются конкретному игроку.
- Разрешения группе получают все игроки, которые состоят в этой группе.
Группы удобны, когда одинаковый набор прав нужен нескольким игрокам: например, для привилегии VIP или состава модерации.
Группы по умолчанию
Carbon автоматически добавляет игроков в группы по уровню доступа:
| Группа | Кто в неё попадает |
|---|---|
default | игроки |
moderator | игроки с правами модератора (authLevel 1) |
admin | игроки с правами владельца (authLevel 2) |
Если уровень доступа игрока изменился, после перезахода Carbon сам уберёт его из группы, которая ему больше не положена. Названия групп и автоматическую выдачу можно поменять в разделе Permissions файла carbon/config.json.
Команды
WARNING
В примерах <...> обозначает обязательный параметр, а [...] - необязательный. Сами скобки в командах писать не нужно.
Группы
- Показать все группы:
c.show groups - Показать участников и разрешения группы:
c.show group <группа>, напримерc.show group admin - Создать группу:
c.group add <группа> [название] [ранг], напримерc.group add vip - Удалить группу:
c.group remove <группа>, напримерc.group remove vip - Назначить родительскую группу:
c.group parent <группа> [родитель]. Группа будет наследовать разрешения родителя.
Игроки в группах
- Добавить игрока в группу:
c.usergroup add <Steam64ID> <группа>, напримерc.usergroup add 76561198000000000 vip - Убрать игрока из группы:
c.usergroup remove <Steam64ID> <группа>
Выдача и отзыв разрешений
- Показать группы и разрешения игрока:
c.show user <Steam64ID> - Показать, каким игрокам и группам выдано разрешение:
c.show perm <разрешение>, напримерc.show perm vanish.allow - Показать все зарегистрированные разрешения:
c.show perms - Выдать разрешение игроку:
c.grant user <Steam64ID> <разрешение>, напримерc.grant user 76561198000000000 vanish.allow - Выдать разрешение группе:
c.grant group <группа> <разрешение>, напримерc.grant group admin vanish.allow - Забрать разрешение у игрока:
c.revoke user <Steam64ID> <разрешение> - Забрать разрешение у группы:
c.revoke group <группа> <разрешение>
INFO
Эти команды выдают разрешения и группы навсегда. Для временных привилегий понадобится отдельный плагин.
Панель администратора
Разрешения удобно настраивать и прямо в игре. Откройте панель командой /cpanel и перейдите во вкладку Permissions: там можно выдавать и забирать разрешения и группы, создавать группы и назначать им родительские группы.
Хранение прав в SQLite
По умолчанию Carbon хранит группы и права в формате Protobuf, как Oxide. На крупных серверах, где за годы накопились сотни тысяч игроков, эти данные целиком держатся в памяти и заново сохраняются при каждом сохранении сервера.
Для таких серверов в Carbon есть хранение прав в базе SQLite. Команда c.migrate_perms_sql переносит группы, игроков и их разрешения в базу servers/<identity>/carbon.perms.db и переключает сервер на неё без перезапуска и перезагрузки плагинов. Вернуться обратно можно командой c.migrate_perms_proto.
WARNING
Пока сервер работает в режиме SQLite, база заблокирована: читать и изменять её при работающем сервере нельзя.
Заключение
Теперь вы умеете выдавать разрешения игрокам и группам. Не забывайте читать описания плагинов и следить за их обновлениями: в новых версиях могут появиться новые разрешения.