Если вы простой игрок в CSS и не собираетесь делать свой сервер, а также ковыряться в связанных с этим вопросах, можете не читать данный пост. Если вы долгое время держите сервер CSS или любой другой игрушки на движке Source, то вам, скорее всего, уже известна содержащаяся здесь информация. Пост нацелен главным образом на быстрое ознакомление c модификацией серверов, именуемой SourceMod, затрагивая при этом базовые найстройки и команды.
Sourcemod: всё, что вы хотели знать.
Sourcemod: всё, что вы хотели знать.
Назначение SourceMod.
SM главным образом предназначен для облегчения жизни админам сервера. Это удобный, простой, и вместе с тем мощный инструмент. Всем известная плюшка с наказаниями тимкиллеров всеми возможными способами, включая поджигание или превращение в ходячую бомбу, есть плагин к сурсмоду. Конечно, только этим дело не ограничивается, в вашем распоряжении просто уйма стандартных команд и действий. Более удобный кик, бан (чем встроенные, в которых вам нужно либо полностью указать ник игрока, либо его ID). Вы также можете управлять правами доступа к серверу как различных игроков, так и целых кланов, объединенных одним тегом. Создание плагинов является не очень сложной задачей, можно использовать как встроенный скриптовый язык, так и С++.
Установка SourceMod.
1. Качаем.
На момент написания поста версия была 1.2.1. Скачать ее вы можете вот по этой ссылке. Также вам понадобится скачать MetaMod (это уже отдельная история, вкратце скажу, что метамод позволяет запускать несколько модификаций для сервера, в том числе и сурсмод). Все эти разработки являются Open-Source и выпускаются под GPL - если сильно захочется, вы можете ознакомиться с исходниками :).
2. Настраиваем для работы.
Для начала надо настроить MetaMod. Распаковывайте архив в папку с сервером, каталог cstrike.
Например, у меня это "D:\games\Steam\steamapps\<мой аккаунт steam>\source dedicated server\cstrike".
Должна появиться папка addons. В нее мы должны поместить файл metamod.vdf, сгенерированный на этой странице.
Проделав данные манипуляции, запустим сервер и введем команду meta version, чтобы убедиться, что все сделано правильно.
Сейчас можно глубоко вдохнуть и успокоиться - все начальные шаги проделаны :).
Окончательная настройка.
Сервер работает, метамод подключен, сурсмод тоже, осталось самое главное - настроить всё это добро под себя и свой сервер.
Этап 1. Добавляем админа.
Сервером должен кто-то управлять, верно? :) Базовое средство для этого (через rcon) не очень удобно. SourceMod предоставляет следующую схему администрирования и выдачи прав игрокам: вы можете связать определенный набор прав на всевозможные стандартные действия либо с ником игрока, тогда ему придется завести пароль, либо с IP-адресом машины, либо со SteamID нужного нам человека.
Для этого необходимо подредактировать файл admins_simple.ini по адресу "<папка с сервером>/cstrike/addons/sourcemod/configs"
На мой взгляд, самым удобным и надежным является привязка к SteamID (стимайди - ваш уникальный идентификатор в системе стим, узнать его можно открыв в игре консоль и выполнив команду status; это запись вида STEAM_0:1:1234567) .
В этот файл (admins_simple.ini) каждый администратор задается отдельной строчкой. Добавьте себя:
"ВАШ_SteamID" "99:z"
Здесь первое поле - ваш идентификатор (стимайди, айпи, ник), второе поле - уровень иммунитета и права. Данная запись означает, что вы обладаете всеми правами (флаг z) и ваш иммунитет = 99. Иммунитет - число, эдакая система иерархии между админами. Люди с меньшим иммунитетом, чем у вас, не смогут с вами ничего сделать.
Примеры строк:
"STEAM_0:1:16" "bce" // основные права, кик, разбан, иммунитета нет
"!127.0.0.1" "5:z" // полный доступ по ip, иммунитет = 5
Менять значение sv_cheats и выполнять другие читерские команды.
root
z
Включает все флаги, перечисленные выше ( = полный доступ).
ВНИМАНИЕ !
Я бы рекомендовал не копаться, вручную редактируя файл, но пользоваться вот этой программой.
Этап 2. Знакомство с возможностями SM.
1. Резервация слотов.
Достаточно удобная вещь, благодаря которой на сервере всегда (ну или почти всегда) найдется место для админа. Суть заключается в следующем: задаются несколько запасных, иначе говоря, резервных слотов, которые при заполнении сервера останутся свободными, доступными для админов.
Хранятся эти настройки в sourcemod.cfg в "<папка с сервером>/cstrike/cfg/sourcemod"
Таблица настроек резервации слотов:
Переменная
Значения
Описание
sm_reserve_type
0|1|2
0: Резервные слоты могут быть заняты только админами и только после заполнения всех свободных слотов. Игрок в резервном слоте не может быть автоматически кикнут. При заполнении запасных мест сервер становится полным и для админов, и они тоже не могут приконнектиться. Таким образом, на сервер всегда может зайти по крайней мере 1 админ.
1: Если кто-то с доступом к резервным слотом пытается зайти на сервер и при этом все свободные слоты заполнены, то кикается игрок либо с самым высоким пингом, либо с самым долгим временем игры, либо случайно. Таким образом, резервные слоты практически всегда пустуют, за исключением ситуации, при который сервер забит админами :) Используйте, если хотите, чтобы определенные люди всегда могли зайти на сервер.
2: Аналогично 1, но с ограничением числа админов. Как только оно достигнуто, сервер перестает кикать игроков для освобождения слотов и присоединиться к игре может любой.
sm_reserve_slots
#
Количество зарезервированных слотов.
sm_hide_slots
0|1
Скрывать или нет резервные слоты в окне поиска серверов. При установленной в 1 опции сервер на 24 человека, из которых 2 места зарезервированы в браузере будет показано, что сервер рассчитан на 22 человека.
sm_reserve_maxadmins
#
Максимальное число админов на сервере при sm_reserve_type = 2
sm_reserve_kicktype
0|1|2
0: кикается игрок с самым высоким пингом
1: дольше всего находящийся на сервере
2: случайным образом
2. Меню админов.
Каждый администратор может вызвать в игре меню, облегчающее ему жизнь и освобождающее от написания команд в консоли. Забиндите на какую-либо клавишу (я предпочитаю "=") команду sm_admin и пользуйтесь этим. Все (ну или почти все) доступные вам действия будут отображены в этом меню.
3. Базовые команды.
Команды, доступные всем (пишутся в чате):
Команда
Плагин
Формат
Описание
currentmap
basetriggers
Выводит название текущей карты.
ff
basetriggers
Сообщает, включен friendly fire или нет.
nextmap
nextmap
Выводит название следующей карты.
nominate
rockthevote
map
Предложить карту для выбора голосованием.
rtv или rockthevote
rockthevote
Вызвать досрочное голосование за смену карты.
thetime
basetriggers
Показывает текущее время.
timeleft
basetriggers
Показывает, сколько осталось времени до смены карты.
sm_settings
clientprefs
Показывает меню клиентских настроек.
Базовые команды для админов:
Команда
Плагин
Доступ
Формат
Описание
sm_addban
basebans
rcon
время steamid [причина]
Бан по стимайди.
sm_admin
adminmenu
admin
Показывает меню админа.
sm_ban
basebans
ban
#userid|ник минуты|0 [причина]
Простой бан.
sm_banip
basebans
rcon
ip|#userid|ник время [причина]
Бан по айпи.
sm_cancelvote
basecommands
vote
Отменяет текущее голосование.
sm_cvar
basecommands
cvar
переменная [значение]
Показывает или меняет значение серверной переменной.
sm_execcfg
basecommands
config
имя файла.cfg
Выполняет конфиг на сервере.
sm_help
adminhelp
admin
[команда]
Выдает список всех команд с их описанием, также можно указать конкретную команду.
sm_kick
basecommands
kick
#userid|ник [причина]
Кикает игрока.
sm_map
basecommands
map
карта
Меняет карту.
sm_rcon
basecommands
rcon
команда
Выполняет команду через rcon, при этом вы не увидите никаких сообщений.
sm_reloadadmins
basecommands
config
Обновляет список админов и выдает заново права, если потребуется.
sm_unban
basebans
unban
steamid
Разбанивает Steam ID.
sm_who
basecommands
admin
[#userid|ник]
Показывает всех игроков сервера и их права доступа. Можно указать конкретного игрока.
Расширенные команды для админов:
Команда
Плагин
Доступ
Формат
Описание
sm_beacon
basefuncommands
slay
цель
Вокруг цели появляются кольца, что делает ее легко заметной. Нечто наподобие маячка.
sm_burn
basefuncommands
slay
цель [время]
Поджигает игрока на указанное время.
sm_chat
basechat
chat
сообщение
Посылает сообщение в чате всем админам.
sm_csay
basechat
chat
сообщение
Показывает сообщение всем игрокам по центру экрана.
sm_gag
basecomm
chat
цель
Отключает игроку чат.
sm_hsay
basechat
chat
сообщение
Посылает сообщение всем игрокам в рамочке по центру экрана (хинт).
Запрещает игроку пользоваться чатом и микрофоном (отключает их).
sm_slap
basefuncommands
slay
цель [урон]
Дает звучный "пинок" игроку, толкая его в случайном направлении. По умолчанию урон = 0.
sm_slay
basefuncommands
slay
цель
Убивает игрока.
sm_tsay
basechat
chat
[цвет] сообщение
Посылает сообщение всем игрокам, отобразится в левом верхнем углу. По умолчанию цвет белый. Возможные цвета: white, red, green, blue, yellow, purple, cyan, orange, pink, olive, lime, violet, lightblue.
sm_ungag
basecomm
chat
цель
Разрешает пользоваться чатом.
sm_unmute
basecomm
chat
цель
Разрешает говорить по микрофону.
sm_unsilence
basecomm
chat
цель
Возвращает возможность писать в чате и говорить по микрофону.
Команды голосований:
Команда
Плагин
Доступ
Формат
Описание
sm_vote
basevotes
vote
вопрос [ответ1] [ответ2] [ответ3] ...
Начинает опрос с указанными вариантами ответа. Если их нет, то опрос будет типа да\нет.
sm_votealltalk
basefunvotes
vote
Начинает голосование за значение sv_alltalk.
sm_voteban
basevotes
vote, ban
цель [причина]
Начинает голосование за бан игрока на 30 минут.
sm_voteburn
basefunvotes
vote, slay
цель
Начинает голосование за поджигание указанного игрока.
sm_voteff
basefunvotes
vote
Начинает голосование за значение mp_friendlyfire.
sm_votegravity
basefunvotes
vote
значение [значение2] [значение3] ...
Начинает голосование за смену sv_gravity.
sm_votekick
basevotes
vote, kick
цель [причина]
Начинает голосование за кик указанного игрока с сервера.
sm_votemap
basevotes
vote, map
карта [карта2] [карта3] ...
Начинает голосование за карту.
sm_voteslay
basefunvotes
vote, slay
цель
Начинает голосование за убийство конкретного игрока.
4. Базовые настройки.
Хранятся в файле sourcemod.cfg в "<папка с сервером>/cstrike/cfg/sourcemod"
Таблица настроек 1:
Переменная
Знач. по ум.
Описание
sm_show_activity
13
Варианты показа действий админа. Параметр является суммой следующих вариантов:
1: обычные игроки не знают, кто именно произвел действие
2: если 1 вкл., то игрокам будет показан ник админа
4: админы не знают, кто именно выполнил данную команду
8: если 4 вкл., то админы узнают, кто именно это сделал
16: всегда показывать ники полным админам (с флагом z)
По умолчанию установлено 1+4+8
sm_menu_sounds
1
Звуки в менюшках:
1: включены
0: отключены
sm_vote_delay
30
Через сколько секунд можно устроить новое голосование или опрос
sm_datetime_format
"%m/%d/%Y - %H:%M:%S"
Отображение даты в логах. Возможно много вариантов, сверьтесь вот с этим.
sm_immunity_mode
1
Определяет взаимодействие уровней иммунитета при попытке одного админа применить какую-либо команду к другому админу.
0: проигнорировать иммунитет
1: защитить админов с более высоким иммунитетом от админов, у которых иммунитет меньше
2: защитить админов с более высоким иммунитетом от админов, у которых иммунитет меньше либо равен
3: аналогично 2, но админы без иммунитета могут делать друг с другом, что их душа пожелает ;)
sm_flood_time
0.75
Задержка между двумя сообщениями одного и того же игрока во избежание флуда. Необходим плагин antiflood.smx (по умолчанию входит в состав SM)
sm_chat_mode
1
Могут или нет обычные игроки посылать приватные сообщения админам через команду say_team @ник_админа. Требуется basechat.smx
sm_timeleft_interval
0
Время в секундах между сообщениями "Осталось N минут\секунд до конца карты". Диапазон 0 - 1800, 0 - отключено.
Примечание: сюда не включены переменные, относящиеся к резервации слотов.
Есть еще кое-какие настройки, они содержатся в файле core.cfg в папке с конфигами сурсмода.
Таблица настроек 2:
Параметр
Значение по умолчанию
Описание
Logging
on
on - логи пишутся, off - отключены.
LogMode
daily
Определяет, как именно пишутся логи. daily - один файл для одного дня, map - отдельный файл для каждой смены карты, game - писать в логи игры.
ServerLang
en
Язык, используемый на сервере. Допускаются только перечисленные в languages.cfg
PublicChatTrigger
!
Команды, выполненные админом через чат, следующие после этого знака, будут видны всем. Пустая строка отключает данную опцию.
SilentChatTrigger
/
Команды, выполненные админом через чат, следующие после этого знака, не будут отображаться. Пустая строка отключает данную опцию.
SilentFailSuppress
no
Если введенная в чате команда не соответствует никакой из доступных на сервере, то она отобразится в чате, даже если следует после "/" . Установка параметра в yes позволяет избежать этого.
PassInfoVar
_password
Поле для хранения паролей при авторизации по нику.
MenuItemSound
buttons/button14.wav
Звук, воспроизводимый при выборе пункта меню.
MenuExitSound
buttons/combine_button7.wav
Звук, воспроизводимый при выходе из меню.
MenuExitBackSound
buttons/combine_button7.wav
Звук, воспроизводимый при выборе возврата в меню.
AllowClLanguageVar
on
Позволяет игрокам использовать свои родные языки, а не навязывать их сервером. При установке параметра в no у всех людей на данном сервере будет использоваться один и тот же язык.
DisableAutoUpdate
no
Вкл. \ выкл. автоматическое обновление SourceMod'a.
Показывать или нет отладочную информацию. На данном этапе разработки сюда входит только информация об обновлениях.
Этап 3. Радуемся, ликуем.
Заключение.
В общем-то, вы теперь знаете все базовые вещи, касающиеся SourceMod, от его установки до эксплуатации. Если вы заинтересовались - добро пожаловать на страницы вики и форум, где вы найдете уйму информации, например, как писать свои плагины. Этот же пост, поскольку место не резиновое ;) , подошел к логическому завершению. Спасибо за внимание.