Чистый дедик CS2 слова «админ» не знает вообще. Valve даёт ровно одну вещь — RCON-пароль, общий на всех, и через него можно менять карту и банить по IP. Поэтому админ права на CS2 сервере выдаются плагином: он держит список SteamID и раздаёт каждому набор флагов доступа. Ниже — как это делается через CounterStrikeSharp, где лежат конфиги, чем группа отличается от прямой записи и почему перезапускать сервер после правки списка обычно не нужно.
Что должно стоять до выдачи прав
Цепочка всегда одна и та же: Metamod: Source загружает CounterStrikeSharp, а тот уже подхватывает плагины и систему прав. Если админ-плагин не видит ваш SteamID, в 9 случаях из 10 проблема на уровень ниже — не загрузился сам фреймворк.
Порядок установки описан отдельно: Metamod: Source, затем CounterStrikeSharp.
Проверить, что всё поднялось, можно из консоли сервера:
meta list
css_plugins listВ выводе meta list должна быть строка про CounterStrikeSharp со статусом RUNNING.
Как устроены админ права на CS2 сервере: три файла
Все три файла — в одной папке:
game/csgo/addons/counterstrikesharp/configs/admins.json— сам список людей: кто, с какими флагами, с каким иммунитетом.admin_groups.json— группы (шаблоны наборов флагов), чтобы не копировать одно и то же двадцать раз.admin_overrides.json— тонкая подстройка: какая команда какой флаг требует.
Редактировать удобнее прямо в файловом менеджере панели или по SFTP. Главное — не сломать JSON: лишняя запятая перед закрывающей скобкой, и весь список админов молча не загрузится.
Где взять SteamID64
CounterStrikeSharp опознаёт человека по SteamID — удобнее всего SteamID64, длинное число вида 76561198012345678. Старый формат STEAM_0:1:... CSS тоже распознаёт, но с SteamID64 меньше путаницы.
Способы достать:
- Открыть профиль игрока в Steam и вставить ссылку в любой конвертер SteamID.
- Если человек уже на сервере — выполнить в консоли
statusи посмотреть колонку с ID. - Через RCON тем же
status, если сидите не на машине сервера, — как подключиться, разобрано в настройке RCON.
Мелочь, которая стоит нервов: у людей часто несколько аккаунтов Steam, и они присылают ID не того, с которого играют. Всегда проверяйте по status во время реальной игры.
admins.json: минимальный рабочий вид
{
"Vadim": {
"identity": "76561198012345678",
"flags": ["@css/generic", "@css/kick", "@css/chat"],
"immunity": 30
},
"Owner": {
"identity": "76561198087654321",
"flags": ["@css/root"],
"immunity": 100
}
}Ключ верхнего уровня (Vadim, Owner) — просто подпись для вас, игра его не использует. Значение имеет только identity.
Флаг @css/root — это «может всё», включая команды, которые вы ещё не установили. Раздавать его кому-то кроме владельца сервера не стоит: с ним человек спокойно выдаст админку себе и друзьям.
Флаги доступа и что они реально открывают
Флаги — не иерархия, а набор ключей. Плагин при выполнении команды проверяет наличие конкретного флага. Стандартный список, основанный на флагах SourceMod, приведён в документации CounterStrikeSharp:
| Флаг | Что открывает |
|---|---|
@css/generic | Базовый доступ; без него часть плагинов вообще не считает человека админом |
@css/kick | Кик игроков |
@css/ban, @css/unban | Баны и разбаны |
@css/slay | Убить или наказать игрока |
@css/changemap | Смена карты и крупных игровых настроек |
@css/cvar | Правка большинства переменных сервера |
@css/config | Выполнение конфигов через exec |
@css/chat | Особые права в чате |
@css/vote | Запуск голосований |
@css/password | Установка пароля на сервер |
@css/reservation, @css/vip | Резервный слот и VIP-статус |
@css/rcon | Выполнение RCON-команд |
@css/cheats | Включение sv_cheats и читерских команд |
@css/root | Все флаги разом, игнорирует иммунитет |
Сам CounterStrikeSharp команд вроде !kick и !ban не содержит — их добавляют админ-плагины, а флаги лишь говорят, кому они доступны.
Практическое правило: модератору хватает @css/generic, @css/kick, @css/chat, иногда @css/ban. @css/cvar, @css/config и @css/rcon — уже уровень доверенного администратора, потому что с ними можно поднять sv_cheats и превратить паблик в цирк.
Группы вместо копипаста
Когда админов больше пяти, перечислять флаги у каждого — путь к рассинхрону. Заводим admin_groups.json:
{
"#css/moderator": {
"flags": ["@css/generic", "@css/kick", "@css/chat"],
"immunity": 30
},
"#css/admin": {
"flags": ["@css/generic", "@css/kick", "@css/ban", "@css/slay", "@css/changemap", "@css/chat"],
"immunity": 60
}
}И в admins.json подключаем группу вместо списка флагов:
{
"Vadim": {
"identity": "76561198012345678",
"groups": ["#css/moderator"]
}
}Имя группы обязано начинаться с #. Можно совмещать: указать groups и дополнительно дописать личный flags — они сложатся.
Иммунитет: кто кого не может тронуть
immunity — число от 0 до 100. Админ не может применить команду к игроку с иммунитетом выше собственного. Модератор с immunity: 30 не кикнет админа с 60, а владелец со 100 кикнет любого.
Обычная сетка: игроки — 0, VIP — 10, модераторы — 30, админы — 60, владелец — 100. Оставляйте зазоры, чтобы потом можно было воткнуть промежуточную роль, не переписывая весь файл.
Отдельный нюанс: по умолчанию два человека с одинаковым иммунитетом друг друга трогать не могут. Это нормально и снимает половину конфликтов внутри команды.
Применение без перезапуска сервера
После правки JSON не нужно ронять сервер посреди катки. Достаточно выполнить из консоли или по RCON:
css_admins_reloadПлагин перечитает admins.json и admin_groups.json. Если в файле синтаксическая ошибка, в консоли появится исключение — это и есть ваш индикатор, что запятая лишняя.
Полный css_plugins reload нужен только когда вы обновили сам плагин, а не список людей.
Проверка и типичные грабли
Зашли на сервер, ввели админ-команду, ничего не произошло — идите по списку:
- Не тот SteamID. Сверьте с выводом
status, а не с тем, что прислал человек в Discord. - Битый JSON. Проверьте файл любым онлайн-валидатором. Одна лишняя запятая — и весь список пуст.
- Забыт
@css/generic. Многие сторонние плагины считают админом только того, у кого есть базовый флаг. - Команда требует другой флаг. Посмотрите
admin_overrides.jsonили документацию конкретного плагина. - Плагин вообще не загрузился.
css_plugins listпокажет правду быстрее любых догадок.
Ещё одна вещь, о которой забывают: если сервер стоит на турнирный режим, часть команд перехватывает MatchZy и админка работает по своим правилам — об этом в статье про установку MatchZy.
Частые вопросы
Можно ли выдать админку без CounterStrikeSharp?
Технически — только через RCON-пароль, то есть человек получает полный доступ к серверу целиком. Для модератора это неприемлемо: он сможет менять любые переменные. Для нормального разграничения нужен плагин.
Что делать, если админов ведут через базу данных?
Плагины уровня CS2-SimpleAdmin умеют хранить админов в MySQL и синхронизировать их между несколькими серверами. Смысл тот же — флаги и иммунитет, — но список правится через веб или SQL, а не файлом. Для одного сервера это избыточно.
Почему права слетают после обновления игры?
После патча CS2 Metamod и CounterStrikeSharp часто перестают грузиться, пока не выйдут обновлённые сборки. Права при этом никуда не деваются — их просто некому применить. Порядок действий описан в статье про обновление сервера CS2.
Коротко
Ставите Metamod и CounterStrikeSharp, кладёте SteamID64 в admins.json, флаги выносите в группы, расставляете иммунитет с зазорами и применяете всё через css_admins_reload. Дальше остаётся только не раздавать @css/root направо и налево.
Если сервер ещё не поднят и хочется сразу панель с файловым менеджером и консолью — тарифы CS2 тут.