Ставим Source Dedicated Server
Сегодня я расскажу вам о том, как ставится Source Dedicated Server (далее SRCDS).
I. Установка:

0. Прежде чем приступить к установке, необходимо сказать пару слов о hldsupdatetool. hldsudpdatetool - это единый инструмент для установки и обновления серверов на базе Steam, включя игры Valve на базе HL1 и HL2, а в будущем и сторонние игры, например Red Orchestra.

1. Качаем "дистрибутив" hldsupdatetool со ссылки http://www.steampowered.com/download/hldsupdatetool.exe и сохраняем во временную папку.

2. Запускаем и проходим короткий мастер установки, заключающийся по большей части в серии нажатий Next и указании папки, в которой будет стоять сервер. Папку указываем на свое усмотрение, в примере будет использована папка c:\server.

3. Идем в папку c:\server и запускаем лежащий там пока в гордом одиночестве файл hldsupdatetool.exe. Это приведет к обновлению hldsupdatetool.exe до последней версии.

4. Создаем батник для установки и последующего обновления сервера (можно обойтись и без него, в этом случае просто используйте тот же синтаксис в командной строке).

Запустите notepad.exe и в появившемся окне напишите следующее:

code:
start /wait c:\server\hldsupdatetool.exe
start /wait c:\server\hldsupdatetool.exe -command update -game "Counter-Strike Source" -dir .
exit

Сохраните файл в папке c:\server с названием update.bat (название файла можете сдалть любое, главное, чтобы расширение было .bat, а не txt!)

Теперь немного о том, что этот батник делает:

Первая строка просто запускает hldsupdatetool, чтобы скачать его последнюю версию, если таковая есть и дожидается пока этот процесс окончится.
Вторая строка запускает установку или обновление сервера Counter-Strike: Source в ту же папку, где находится hldsupdatool.exe и дожидается окончания этого процесса. Для создания сервера HL2DM или DODS используйте в параметре -game значение "hl2mp" или "dods" соответственно (кавычки обязательны!).
Третья строчка гарантирует окончание работы батника по завершению всех команд.

5. Запускаем update.bat. После запуска батника начнется процесс установки сервера. При начальной установке скачивается более гигабайта данных, поэтому в зависимости от скорости вашего соединения, процесс может быть достаточно длительным. После окончания установки, батник закроется самостоятельно.

II. Базовая настройка

Прежде чем приступить к запуску сервера, желательно его настроить. Подавляющее большинство настроек SRCDS выполняется с помощью файла server.cfg, расположенного в папке cfg установленной игры (/cstrike/cfg для Counter-Strike: Source, /hl2mp/cfg для HL2DM, /dod/cfg для Day of Defeat: Source).

При отсутствии этого файла (как например при начальной становке) сервер запускается со значениями по умолчанию.

Пример файла server.cfg для Counter-Strike: Source можно найти здесь - http://newbie.nashalife.ru/mani/server.cfg Детальное описание всех настроек выходит за рамки данной статьи.

Другие файлы, на которые вам стоит обратить внимание (на примере CSS, для других игр, замените cstrike на папку игры):
/cstrike/maplist.txt - содержит список всех карт на сервере. Если карты нет в списке, то ее нельзя поставить, даже если соответствующий .bsp файл находится в папке maps
/cstrike/mapcycle.txt - содержит список карт, которые находятся в игровом цикле. Если карты здесь нет, то поствить ее можно только вручную.
/cstrike/motd.txt - содержит приветственное сообщение, демонстрируемое игрокам при входе на сервер или при смене карты. При форматировании использутеся HTML
/cstrike/cfg/autoexec.cfg - содержит параметры, которые должны выполняться один раз при запуске сервера (в отличие от server.cfg, который исполняется при каждой смене карты).

III. Запуск сервера

При запуске сервера мы будем также использовать батник, который не только избавит нас от необходимости вводить длинную командную строку при каждом запуске, но и гарантирует автоматический перезапуск сервера в случае непредвиденного падения.

Итак, снова открываем notepad.exe и пишем:

code:

@echo off
cls
:loop
echo (%date% %time%) Checking for updates
start /wait c:\server\update.bat
echo (%date% %time%) Starting SRCDS
start /wait c:\server\srcds.exe -console -game cstrike +maxplayers 16 +map de_dust
echo (%date% %time%) Restarting SRCDS
goto loop

Сохраняем наш файл в папку c:\server с названием server.bat (как и раньше, название можете поставить любое, но расширение должно быть bat!)

Теперь рассмотрим наш батник в подробностях:

Первая строка просто отключает вывод ненужной информации на экран
Вторая строка очищает экран
Третья строка устанавливает точку, к которой батник вернется в случае падения сервера
Четвертая строка выводит на экран сообщение Checking for updates с указанием даты и времени
Пятая строка запускает созданный нами ранее батник обновления сервера. Это позволит нам обновлять сервер простым его перезапуском.
Шестая строка выводит на экран сообщение Starting SRCDS с указанием даты и времени
Седьмая строка запускает собственно сервер. Рассмотрим ее параметры подробнее:

-console - запускает сервер в консольном режиме. Без этого параметра сервер запустится с графическим интерфейсом (как через Steam) и потребует ручного нажатия кнопки для действительного запуска
-game - указывает игру, для которой запускается сервер. Для серверов HL2DM и DOD Source необходимо указывать hl2mp и dod соответственно.
+maxplayers - указывает максимальное количество игроков на сервере
+map - указывает стартовую карту для сервера. Этот параметр обязателен, кроме случая установки SourceTV прокси.

Другие параметры:
+ip - указывает ip адрес, на котором запускается сервер. Использовать только в случае наличия нескольких адресов на сервере!
-port - указывет UDP порт, на котором запускается сервер. По умолчанию используется порт 27015. Если порт по умолчанию занят, автоматически используется следующий.
+tv_port - указывает UDP порт, на котором запускается SourceTV. По умолчанию используется порт 27020, если он занят, автоматически используется следующий
-tickrate - указывает тикрейт сервера. По умолчанию CSS запускается с тикрейтом 33, HL2DM и DOD: Source - 66. Выставление значений ниже значений по умолчанию или значений не кратных 33 приведет к проблемам на сервере!

Седьмая строка нашего батника выводит на экран сообщение Restarting SRCDS с указанием даты и времени
Восьмая строка возвращает батник к указанной ранее точке в случае падения или выключения сервера (инициируя таким образом обновление и перезапуск сервера).

Все. Наш батник готов и разобран по косточкам, для запуска сервера нам осталось только запустить батник

Ставим Mani Admin Plugin
Теперь, когда у нас есть установленный и запущенный сервер, нам пора озаботиться вопросами его администрирования. Не секрет, что встроенным Valve средствам администрирования не достает как гибкости, так и банальной функциональности. Так что, если вы хотите облегчить управление собственным сервером, вам нужен сторонний плагин. Двумя наиболее популярными админ-плагинами являются Mani Admin Plugin и BeetleFart MinimumAdmin Mod. Я расскажу вам только о первом в силу следующих причин:

- С Mani Admin Plugin я знаком гораздо больше, а значит могу рассказать о нем лучше
- Лично мне кажется, что Mani обладает более широкой функциональностью и удобством
- Mani является самым распространенным админ-плагином в мире (на данный момент более половины всех Counter-Strike: Source серверов работают под управлением Mani).
- Плагин непрерывно обновляется, обрастая все большей функциональностью
- Автор плагина прислушивается к нуждам коммьюнити и четко представляет будущее развитие плагина
- К тому же автор плагина просто замечательный человек

Прежде, чем перейти к описанию установки, хочу заметить, что детальное описание всех настроек плагина последует позже (причем вероятно значительно позже) просто по соображениям времени. Сейчас я просто расскажу как устанавливать плагин, как назначать админинов и какие конфигурационные файлы за что отвечают.

I. Установка

Первым делом необходимо скачать последнюю версию плагина. На данный момент ею является 1.2 Beta L. Пусть вас не пугает приставка Beta - единственное что отделяет плагин от избавления от нее - это возможность назначать админов через меню. В остальном - это вполне стабильный билд.

Итак, следуем на http://mani-admin-plugin.com , скроллим вниз до первой новости о релизе и выбираем полную версию плагина для вашей игры из списка ссылок.
Скачиваем файл во временную директорию и распаковываем его. Распаковав получаем полную структуру папок плагина, начиная собственно с папки игры (я буду приводить примеры на основе Counter-Strike: Source, поэтому папка игры будет cstrike).

Далее идем в папку addons и запускаем файл CreateVDF. В появившемся окошке выбираем из списка тип игры (в нашем случае Counter-Strike: Source) и жмем Save VDF. Сохраняем получившийся файл в ту же папку addons. (Этот шаг обязателен независимо от используемой платформы).

Для установки плагина на сервер, просто скопируйте получившуюся структуру в папку, где установлен сервер.

Пример: вы распаковали плагин в папку c:\temp\mani, а сервер стоит в папке c:\server. Вам нужно скопировать папку c:\temp\mani\cstrike в папку c:\server поверх уже существующей там.

Если вы все скопировали верно, то в папке c:\server\cstrike\addons у вас появятся файлы mani_admin_plugin.dll и т.п.

Перезапустите сервер. Введите в консоли сервера plugin_print - вы должны увидеть список плагинов, среди которых Mani Admin Plugin. Если не увидели - проверьте правильно ли скопированы файлы. (Если вы используете Source MetaMod - команда plugin_print не выдаст плагинов. Используйте команду meta list).

II. Описание

Теперь перейдем к описанию того, что каждый из файлов делает:

Папка cstrike\addons:

mani_admin_plugin.dll - собственно файл плагина под Windows
mani_admin_plugin.vdf - файл, указывающий серверу откуда необходимо подгрузить плагин
mani_admin_plugin.so - файл плагина под Linux (если вы запускаете сервер под Windows, этот файл можно удалить)

Папка cstrike\addons\mani_admin_plugin\bin:
mani_admin_plugin.dll и mani_admin_plugin.so - это библиотеки плагина под SourceMM для Windows и Linux соответственно. Если вы не знаете, что такое SourceMM или не хотите его использовать (как не хочу я) - можете просто удалить всю папку

Папка cstrike\cfg:
autoexec.cfg - этот файл не принадлежит самому плагину, а является конфигурационным файлом сервера, подгружаемым при каждом запуске. В версиях плагина 1.2 он не используется (в следующих версиях плагина он будет удален из пакета).
mani_server.cfg - основной файл настройки плагина. Один из двух наиболее важных файлов, именно в нем вам придется копаться больше всего.

Папка cstrike\cfg\mani_admin_plugin:

actionsoundlist.txt - в этом файле прописаны действия, при наступлении которых всем игрокам проигрывается определенных звуковой файл (например вход на сервер, начало голосования и т.п.)

adverts.txt - в этом файле вы можете разместить текстовую рекламу, которая будет демонстрироваться на сервере

cexeclist_all.txt - в этом файле вы можете добавить пункты админского меню и соответсвующие им команды. При выборе этих пунктов меню, соответствующие команды будут исполнены на всех клиентах
cexeclist_ct.txt - в этом файле вы можете добавить пункты админского меню и соответсвующие им команды. При выборе этих пунктов меню, соответствующие команды будут исполнены на команде CT
cexeclist_player.txt - в этом файле вы можете добавить пункты админского меню и соответсвующие им команды. При выборе этих пунктов меню, соответствующие команды будут исполнены на одном выбранном вами игроке
cexeclist_spec.txt - в этом файле вы можете добавить пункты админского меню и соответсвующие им команды. При выборе этих пунктов меню, соответствующие команды будут исполнены на всех спектаторах
cexeclist_t.txt - в этом файле вы можете добавить пункты админского меню и соответсвующие им команды. При выборе этих пунктов меню, соответствующие команды будут исполнены на команде T

chattriggers.txt - в этом файле настраиваются параметры блокирования say команд. Это полезно для предотвращение флуда популярными командами типа rank, top10 и т.п. Вы можете настроить, что команда будет блокирована полностью (не отобразится в чате и не сработает), блокирована только в чате (не отобразится в чате, но сработает, то есть клиент получит ответ от сервера/плагина) или блокирована в чате определенное количество раз (например будет отображаться в чате каждый 10-й раз)

clients.txt - список админов, групп и клиентов, имеющих иммунитет. Второй самый важный файл в плагине

commandlist.txt - в этом файле вы можете настроить собственные say команды. Например сделать, чтобы "say @rr" выполняло команду "mp_restartgame 1"

crontablist.txt - базовый планировщик действий. Вы можете настроить график автоматического выполнения определенных команд на сервере

database.txt - здесь хранятся параметры доступа к базе данных

decallist.txt - здесь находится список нестандартных декалей, которые будут закачиваться клиентам и использоваться для работы ma_effects или графической рекламы в игре

default_weapon_restrictions.txt - в этом файле хранятся запреты на оружие, которые будут действовать на всех картах на сервере

downloads.txt - в этот файл заносятся любые файлы, которые вы хотите закачать на клиентов

flaglist.txt - список админских флагов. Файл служит исключительно для информации и функциональности не несет

gametypes.txt - служебный файл плагина, определяющий функциональные ограничения для разных игр и модов. НЕ РЕДАКТИРУЙТЕ ЭТОТ ФАЙЛ

gimpphrase.txt - в этом файле хранятся фразы, на которые будут заменяться любые чат сообщения "юродивого" игрока (подвершегося команде ma_gimp)

mapadverts.txt - в этом файле хранятся настройки координат и текстур для графической рекламы на картах

II. Настройка
Разобравшись с тем, какой файл за что отвечает, можно перейти к настройке плагина.

Первым делом вам необходимо тщательно изучить файл mani_server.cfg и определиться с желаемыми настройками. Детальное описание каждой из них приведено в следующем сообщении. Вы также можете воспользоваться примером моего файла по адресу http://newbie.nashalife.ru/mani/mani_server.cfg
Для того, чтобы настройки подействовали, необходимо добавить в конец файла server.cfg строку "exec mani_server.cfg" (без кавычек).

Далее необходимо настроить админов. Для начала разберемся со структурой файла clients.txt (чисто в информативных целях, на практике вам в него лезть не придется):

При начальной установке плагина файл отсутствует. Он будет создан при первом запуске.

Структура нового файла для назначения админов сложнее, чем раньше, но в реальности - удобнее.
Пример файла можно глянуть тут:

http://newbie.nashalife.ru/mani/clients.txt

Первым делом идем в конец файла и смотрим в раздел "admingroups". Тут прописаны группы доступа. Это ГОРАЗДО удобнее, чем вписывать все флаги на каждого админа.

В отличие от версий 1.1.х по умолчанию все запрещено, и указание флага (буквы) не отбирает права, а дает. Формат задания группы (флаги необходимо указывать через пробел):
"имя_группы" "с п и с о к ф л а г о в"
Флаг admin необходим для получения админских прав. Без него доступа к администрированию не будет независимо от других флагов.
Флаг client дает доступ к управлению списком админов
Флаг pban дает доступ к перманентным банам
Флаг spray дает доступ к отслеживанию спреев игроков
Флаг grav дает доступ к изменению гравитации
Полный список флагов описан в файле flags.txt

Разобравшись с группами переходим к админам:
Все админы прописываются в секции "players".
Первое поле - ID, отделяющего одного админа от другого. По этому полю идентифицируется админ, так что делайте его понятным (пример: admin1 - полохое, обозначение, Vasya Pupkin - хорошее).

Дальше идут параметры:
"name" - понятное вам и другим имя админа
"steam" - SteamID админа
"admingroups" - группы админа
"immunityflags" - параметры иммунитета
"adminflags" - параметры доступа к админским функциям (аналогично тому, как мы делали в группах)
"ip" - ip адрес админа если вы хотите назначать админов по адресам
"nick" - ник админа, если вы хотите назначать админов по никам
"password" - пароль админа (используется только при назначении по никам)

Любой из параметров, кроме пароля, может содержать несколько значений. См. пример с никами в моем файле.

Теперь собственно назначение админов:
Способ 1: Нормальный

Все операции по назначению админов, можно делать прямо из игры или с консоли сервера с помощью команды ma_client и ma_clientgroup.

Проделать это вам необходимо как минимум раз, т.к. добавление через меню (Способ 2) возможно только, если настроен хотя бы один админ.

Параметры я расписал выше, так что теперь просто приведу последовательность команд, которая создает группу с полным доступом, одного админа, устанавливает его SteamID, включает его в группу и дает полный иммунитет (+# при назначении флагов означает "все флаги", индивидуальные флаги добавляются по одному "+a +b +c":

ma_clientgroup addagroup "Full Access" "+#"
ma_client addclient "Ваш ник в контре"
ma_client addsteam "Ваш ник в контре" "STEAM_0:1:4562525"
ma_client setaflag "Ваш ник в контре" "+admin +client"
ma_client addagroup "Ваш ник в контре" "Full Access"
ma_client setiflag "Ваш ник в контре" "+#"

Способ 2: Через меню

Тут все элементарно. Назначив себя админом, заходите на сервер, вызываете админское меню (команда admin) и назначаете админов следуя инструкциям в меню.

Способ 3: Если у вас были более ранние версии плагина (1.1.х):

Обновляем плагин с 1.1.х до 1.2 Beta и запускаем сервер. Новая версия плагина обнаружив файлы adminlist.txt, admingroups.txt, immunitylist.txt и immunitygroups.txt автоматически сгенерит clients.txt (в котором теперь хранятся данные об админах) и добавит к расширению старых файлов .old. Все

Плюсы: ничего делать не надо, плагин делает все сам
Минусы: Работает только один раз. Вернее не один, можно конечно вносить изменения в adminlist.txt, удалять clients.txt, перезапускать сервер и позволять плагину генерить clients.txt заново при каждом добавлении админа... Но согласитесь, это геморр.

Все, плагин установлен, настроен и готов к работе. Наслаждайтесь