Sourcemod: всё, что вы хотели знать.
Введение.
Если вы простой игрок в CSS и не собираетесь делать свой сервер, а также ковыряться в связанных с этим вопросах, можете не читать данный пост. Если вы долгое время держите сервер CSS или любой другой игрушки на движке Source, то вам, скорее всего, уже известна содержащаяся здесь информация. Пост нацелен главным образом на быстрое ознакомление c модификацией серверов, именуемой 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, чтобы убедиться, что все сделано правильно.
Выглядеть должно примерно так:
] meta version
Metamod:Source version 1.7.1
Build ID: 644:f526469efdeb
Loaded As: Valve Server Plugin
Compiled on: Feb 25 2009
Plugin interface version: 10:7
SourceHook version: 4:3
http://www.metamodsource.net/
Теперь переходим непосредственно к SourceMod'y. Распаковываем в ту же папку, перезапускаем сервер, пишем команду sm version
Получить должны нечто вроде:
] sm version
SourceMod Version Information:
SourceMod Version: 1.2.1
SourcePawn Engine: SourcePawn 1.1, jit-x86 (build 1.2.1)
SourcePawn API: v1 = 4, v2 = 3
Compiled on: May 30 2009 23:59:05
Build ID: 2708:69195a250d70
http://www.sourcemod.net/
Сейчас можно глубоко вдохнуть и успокоиться - все начальные шаги проделаны :).
Окончательная настройка.
Сервер работает, метамод подключен, сурсмод тоже, осталось самое главное - настроить всё это добро под себя и свой сервер.
- Этап 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
"BAILOPAN" "abc" "Gab3n" //ник BAILOPAN, пароль"Gab3n": резервация слота, базовые команды + кик
Все возможные флаги доступа:
Описание
Флаг
Назначение (право на...)
reservation
a
Доступ к резервным слотам.
generic
b
Базовый уровень доступа; обязателен для админов.
kick
c
Кик игроков (выброс с сервера).
ban
d
Бан игроков (запрещение доступа к серверу)
unban
e
Снятие банов.
slay
f
Убить или ранить игроков.
changemap
g
Смена карты
cvar
h
Изменение серверных переменных.
config
i
Выполнять произвольные конфиги на сервере.
chat
j
Доп. действия с чатом.
vote
k
Устраивать голосования и управлять ими.
password
l
Установка пароля на сервер.
rcon
m
Использование команд rcon.
cheats
n
Менять значение 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. Базовые команды.
Команды, доступные всем (пишутся в чате):
Команда
Плагин
Формат
Описание
currentmapbasetriggersВыводит название текущей карты.
ffbasetriggersСообщает, включен friendly fire или нет.
nextmapnextmapВыводит название следующей карты.
nominaterockthevotemapПредложить карту для выбора голосованием.
rtv или rockthevoterockthevoteВызвать досрочное голосование за смену карты.
thetimebasetriggersПоказывает текущее время.
timeleftbasetriggersПоказывает, сколько осталось времени до смены карты.
sm_settingsclientprefsПоказывает меню клиентских настроек.
Базовые команды для админов:
Команда
Плагин
Доступ
Формат
Описание
sm_addbanbasebansrconвремя steamid [причина]Бан по стимайди.
sm_adminadminmenuadminПоказывает меню админа.
sm_banbasebansban#userid|ник минуты|0 [причина]Простой бан.
sm_banipbasebansrconip|#userid|ник время [причина]Бан по айпи.
sm_cancelvotebasecommandsvoteОтменяет текущее голосование.
sm_cvarbasecommandscvarпеременная [значение]Показывает или меняет значение серверной переменной.
sm_execcfgbasecommandsconfigимя файла.cfg
Выполняет конфиг на сервере.
sm_helpadminhelpadmin[команда]
Выдает список всех команд с их описанием, также можно указать конкретную команду.
sm_kickbasecommandskick#userid|ник [причина]Кикает игрока.
sm_mapbasecommandsmapкарта
Меняет карту.
sm_rconbasecommandsrconкоманда
Выполняет команду через rcon, при этом вы не увидите никаких сообщений.
sm_reloadadminsbasecommandsconfigОбновляет список админов и выдает заново права, если потребуется.
sm_unbanbasebansunbansteamidРазбанивает Steam ID.
sm_whobasecommandsadmin[#userid|ник]Показывает всех игроков сервера и их права доступа. Можно указать конкретного игрока.
Расширенные команды для админов:
Команда
Плагин
Доступ
Формат
Описание
sm_beaconbasefuncommandsslayцель
Вокруг цели появляются кольца, что делает ее легко заметной. Нечто наподобие маячка.
sm_burnbasefuncommandsslayцель [время]Поджигает игрока на указанное время.
sm_chatbasechatchatсообщение
Посылает сообщение в чате всем админам.
sm_csaybasechatchatсообщение
Показывает сообщение всем игрокам по центру экрана.
sm_gagbasecommchatцель
Отключает игроку чат.
sm_hsaybasechatchatсообщение
Посылает сообщение всем игрокам в рамочке по центру экрана (хинт).
sm_msaybasechatchatсообщение
Показывает сообщение как меню с радиокомандами.
sm_mutebasecommchatцель
Отключает указанному игроку микрофон (голосовой чат).
sm_playbasefuncommandsadminцель файл
Воспроизводит указанный звуковой файл данному игроку.
sm_psaybasechatchatцель сообщение
Посылает приватное сообщение.
sm_saybasechatchatсообщение
Посылает сообщение в чате всем игрокам.
sm_silencebasecommchatцель
Запрещает игроку пользоваться чатом и микрофоном (отключает их).
sm_slapbasefuncommandsslayцель [урон]Дает звучный "пинок" игроку, толкая его в случайном направлении. По умолчанию урон = 0.
sm_slaybasefuncommandsslayцель
Убивает игрока.
sm_tsaybasechatchat[цвет] сообщение
Посылает сообщение всем игрокам, отобразится в левом верхнем углу. По умолчанию цвет белый. Возможные цвета: white, red, green, blue, yellow, purple, cyan, orange, pink, olive, lime, violet, lightblue.
sm_ungagbasecommchatцель
Разрешает пользоваться чатом.
sm_unmutebasecommchatцель
Разрешает говорить по микрофону.
sm_unsilencebasecommchatцель
Возвращает возможность писать в чате и говорить по микрофону.
Команды голосований:
Команда
Плагин
Доступ
Формат
Описание
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.
ForceRestartAfterUpdate
no
Делать рестарт после обновления, или нет.
AutoUpdateURL
Откуда обновлять сурсмод.
DebugSpew
no
Показывать или нет отладочную информацию. На данном этапе разработки сюда входит только информация об обновлениях.
- 1. Резервация слотов.
- Этап 3. Радуемся, ликуем.
Заключение.
В общем-то, вы теперь знаете все базовые вещи, касающиеся SourceMod, от его установки до эксплуатации. Если вы заинтересовались - добро пожаловать на страницы вики и форум, где вы найдете уйму информации, например, как писать свои плагины. Этот же пост, поскольку место не резиновое ;) , подошел к логическому завершению. Спасибо за внимание.
Засим, разрешите откланяться :)