TeaHost
Counter-Strike 2cs2администрированиеcounterstrikesharp6 мин. чтения

Выдача прав администратора: админ права на CS2 сервере

Как выдать админ права на CS2 сервере через CounterStrikeSharp: admins.json, группы, флаги доступа, иммунитет и перезагрузка списка без рестарта

Кратко

Админ-права на сервере CS2 выдаются через CounterStrikeSharp: в game/csgo/addons/counterstrikesharp/configs/admins.json для каждого админа указываются SteamID в поле identity, флаги вроде @css/generic, @css/kick, @css/ban и иммунитет от 0 до 100. Повторяющиеся наборы флагов выносят в группы admin_groups.json, а список перечитывается без рестарта командой css_admins_reload.

Чистый дедик 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 меньше путаницы.

Способы достать:

  1. Открыть профиль игрока в Steam и вставить ссылку в любой конвертер SteamID.
  2. Если человек уже на сервере — выполнить в консоли status и посмотреть колонку с ID.
  3. Через RCON тем же status, если сидите не на машине сервера, — как подключиться, разобрано в настройке RCON.

Мелочь, которая стоит нервов: у людей часто несколько аккаунтов Steam, и они присылают ID не того, с которого играют. Всегда проверяйте по status во время реальной игры.

admins.json: минимальный рабочий вид

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:

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 подключаем группу вместо списка флагов:

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 нужен только когда вы обновили сам плагин, а не список людей.

Проверка и типичные грабли

Зашли на сервер, ввели админ-команду, ничего не произошло — идите по списку:

  1. Не тот SteamID. Сверьте с выводом status, а не с тем, что прислал человек в Discord.
  2. Битый JSON. Проверьте файл любым онлайн-валидатором. Одна лишняя запятая — и весь список пуст.
  3. Забыт @css/generic. Многие сторонние плагины считают админом только того, у кого есть базовый флаг.
  4. Команда требует другой флаг. Посмотрите admin_overrides.json или документацию конкретного плагина.
  5. Плагин вообще не загрузился. 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 тут.