Создание сервера в Garry's Mod
В данном руководстве мы установим и настроим выделенный сервер игры Garry's Mod на вашем домашнем компьютере.

Внимание! Некоторые ссылки побились, но файлы всё ещё остались у Автора этой статьи. Связаться с Сергеем и взять у него нужные вам файлы вы можете через ВК: vk.com/crazyhackgut или через Steam: steamcommunity.com/profiles/76561198020185461

Введение
Что такое выделенный сервер? Это отдельно запущенный сервер для игры, на котором собираются игроки. Обычно такие сервера располагаются в специальных дата-центрах, которые круглосуточно держат сервер запущенным, но к сожалению не многие могут позволить себе такое, ибо как вы понимаете, выделенные машины нужно оплачивать.

В этом руководстве мы поговорим об установке и запуске выделенного сервера игры Garry's Mod на вашем домашнем компьютере.

Внимание! Несмотря на то, что в файле srcds_watcher.bat некоторые команды у меня были на другой строке, у вас всё должно находится на одной!
Загрузка и установка сервера (Операционная система Windows)
На самом деле, ничего сложного здесь нет. Нам понадобится утилита SteamCMD. Загрузить её можно с официальной вики Valve Developers. Загрузить SteamCMD

Я буду рассматривать установку на операционной системе Windows. Распакуем в любую папку на своём компьютере. Я, например, распаковал по пути: C:\Users\CrazyHackGUT\Desktop\SteamCMD.

Теперь открываем папку со SteamCMD, и делаем нажатием правой кнопки мышки с зажатым клавиши Shift. Появится меню папки.

Нам нужен пункт «Открыть окно команд» (на разных операционных системах и название может быть разным).



После нажатия появится чёрное окно с одной единственной строкой — пути к папке.

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

После обновления вводите поочерёдно следующие команды:

login anonymous force_install_dir %путь_к_будущему_серверу% app_update 4020 validate

Не используйте русские буквы и пробелы в пути к серверу.

Например, я ввёл:

login anonymous force_install_dir G:\servers\gmod app_update 4020 validate

После ввода команд должна начаться загрузка сервера:



По окончанию загрузки введите:
quit
Можно также сделать более автоматизированную установку сервера. Создайте ярлык на SteamCMD. А после пропишите в ярлыке следующее, в пути файла:
«путь_к_SteamCMD» +login anonymous +force_install_dir %путь_к_будущему_серверу% +app_update 4020 validate +quit



После установки сервера он будет находиться там, куда вы указали его установку:

Создание монитора крашей сервера
Нам надо создать bat-ник, который будет следить за сервером, и в случае чего, перезапускать его.

Скопируйте следующие строки в Блокнот и сохраните файл как SRCDS_Watcher.bat перед этим установив тип файла «Все файлы».

@echo off cls echo Protecting Garry's Mod server (srcds.exe) for crashes... echo If you want to close srcds and this script, close the srcds window and type Y depending on your language followed by Enter. title GARRY'S MOD — WATCHDOG :srcds echo (%time%) srcds started. srcds.exe -console -game garrysmod -secure +map gm_construct +maxplayers 32 echo (%time%) WARNING: srcds closed or crashed, restarting. goto srcds



Строку:
srcds.exe -console -game garrysmod -secure +map gm_construct +maxplayers 32
Можно изменять, добавляя свои переменные и настройки.
Своя страница при подключении к серверу
Подключаясь на разные сервера, вы могли заметить всякие красивые страницы, на которых обычно указаны правила, приветствие для вас и прочее. На самом деле, это не особо сложно сделать. Всё что надо — знать HTML и CSS, иметь веб-хостинг или открытые порты. На крайний случай можно скачать любой шаблон из Интернета и переделать под себя.

По окончанию у нас получилась вот такого плана страничка:



Все файлы страницы вы можете скачать здесь и отредактировать под себя.

И так, что было предпринято:

1. Были загружены файлы страницы на веб-хостинг, откуда доступ к странице появился из Браузера (если нету хоста, открываем порт 80, скачиваем OpenServer и настраиваем его по инструкциям из Интернета).

Ссылка была вида: http://example.su/mymegaserver/rules.html

2. В файл autoexec.cfg была внесена строка вида:

sv_loadingurl "example.su/mymegaserver/rules.html"

Обратите внимание! Ссылка должна быть без http:// протокола.

3. (если сервер был запущен) В консоль была введена команда exec autoexec и в принципе всё. При подключении на сервер, игрок будет видеть вашу страницу.

Некоторые веб-хостеры считают, что достаточно отредактировать файл loading.html вgarrysmod/html для того, чтобы сделать уникальную страницу без веб-хостинга. Это ошибочное мнение. Данный файл предназначен для клиента игры, если сервер не имеет своей нестандартной страницы. Просто его забыли убрать из комплектации сервера.
Установка админки
До этого этапа у вас на сервере абсолютно отсутствует нормальная админка. То есть всё управление сервером производится через консоль, через RCON. А на многих серверах, как вы видели, есть графическая панель администратора. В этой главе мы её установкой и займёмся.

Загрузите следующий файл: ULib и ULX и распакуйте в папку с сервером\garrysmod\addons

Теперь запускаем сервер через ранее созданный файл SRCDS_Watcher.bat

Появится сначала одно чёрное окно, потом второе с иконкой Half-Life 2.
Делаем активным то, у которого висит иконка Half-Life 2

Если появятся следующие две похожие строки именно в том порядке, в каком они на скрине:



То всё ОК. Админка загрузилась правильно.

Теперь надо сделать себя админом. По умолчанию, в ULX-админке есть четыре группы:

user — Обычные игроки
operator — Помощник администратора, который призван держать игру на сервере стабильной
admin — Администраторы, сюда кидайте тех, кто купил админку на сервере
superadmin — Супер администраторы, все права к серверу. Лучше держать одного супер администратора — себя

После запуска сервера имя программы сменится с Source Dedicated Server на Garry's Mod.

Запускаем игру и подключаемся к серверу через пункт Сетевая игра в главном меню. Там переходим на вкладку Локальная сеть и видим один-единственный сервер в списке с режимом Sandbox. Подключаемся. Это наш объект.

После окончания подключения ставим игру на паузу и возвращаемся в окно сервера. Вводим команду вида:
ulx adduser "часть_вашего_ника" superadmin
Русские символы серверная строка не принимает.

Например, с моим ником можно ввести:
ulx adduser GUT superadmin

После ввода команды в игре, и в окне сервера выйдет информация:



Готово! Вы стали администратором! Для вызова меню администратора используйте:

!menu — в чат или команду ulx menu — в консоль



Для чата используйте команду !menu. Я пробовал вбивать /menu — эффекта никакого.

Более тонкую настройку разберём в середине Января.
Настройка цвета в чате
Если вы установите админку, сделаете себя админом и напишете что-либо в чат, вы не увидите никакого цвета и префикса ADMINISTRATOR в чате.



То, что вы видели на скриншотах ранее — это дополнительный аддон. Загрузить его можно здесь.

Это моя немного переведённая версия. Графического интерфейса этот мод не имеет. Сейчас объясню, как настраивать тэги.

Загрузив архив, распакуйте его полностью в %путь_к_серверу%\garrysmod\addons

Перейдите в папку с ним и дальше следуйте по пути lua\autorun\client.

Нужный вам файл — cl_tag.lua
Откройте его любым редактором, который поддерживает кодировку UTF-8 без BOM. Например, Notepad++

ПРИМЕЧАНИЕ: Блокнот, встроенный в Windows, не поддерживает данную кодировку!



Открыв Notepad++ (или свой редактор), сразу переведите его в чтение кодировки UTF-8 без BOM, и начинайте редактировать!

Нужная вам часть прокомментирована достаточно.

Вам надо добавить лишь строку вида:
{"user", "ИГРОК ", Color(RED COLOR, GREEN COLOR, BLUE COLOR, 255) },
и сохранить файл. Кстати, этот файл можно редактировать прямо во время работы сервера и подключения к нему!

У меня файл выглядит так (нужная часть):
{"user", "ИГРОК ", Color(255, 255, 255, 255) },
{"admin", "АДМИНИСТРАТОР ", Color(0, 0, 255, 255) },
{"superadmin", "ЗАМ. ГЛАВНОГО АДМИНИСТРАТОРА ", Color(255, 0, 0, 255) },
{"Owner", "БОГ СЕРВЕРА ", Color(255, 105, 0, 255) },
{"VIP", "VIP ", Color(255, 0, 0, 255) }}
В последней строке цвета, как вы заметили, запятой нет. Её и не должно быть в последней строке.
Подключение аддона к вашему серверу через Мастерскую


Как вы видели ранее на этом скрине, у меня загружаются аддоны из мастерской. На этом этапе мы настроим загрузку сервером этих самых аддонов.
На самом деле, всё очень просто. Нам надо завести ключ аутентификации SteamWeb API, создать коллекцию и подключить всё это дело к серверу.
Приступим.

1. Создание ключа SteamWeb API.

Нажмите сюда



Здесь всё очень просто. Вам надо ввести предполагаемый адрес сайта, на котором данный ключ и будет использоваться. Поскольку это сервер, можете ввести туда:
Servers.%здесь всё что угодно, на ваш выбор%.ru

После того, как вы введёте "адрес" и нажмёте "Зарегистрировать", страница обновится и примет вид:





То, что идёт после надписи это ключ — необходимая вам строка. Копируем её содержимое и вставляем в батник, в строку запуска сервера (читайте прошлые главы руководства, там рассказано о создании анти крашевой системы) параметр:
-authkey %полученный ключ%
Первый этап завершён.

2. Создание коллекции для сервера.
Нажмите сюда для начала создания коллекции.

Заполняем все поля, не трогаем тэги. Они необязательны. И жмём на кнопку внизу:



Нам дают возможность пополнить коллекцию либо своими аддонами\содержимым уже созданных коллекций, либо воспользоваться аддонами, на которые подписаны. Добавляем нужные вам аддоны, и жмём «Сохранить и продолжить».

Вылезает страница коллекции с надписью: Эта коллекция ещё не опубликована. Зайдите в Мастерскую Garry's Mod в Steam, просмотрите и добавьте аддоны, кнопкой Добавить в коллекцию на странице аддона. Либо опубликовать и начать подключение к серверу.



Я опубликую коллекцию нажатием на кнопку: Опубликовать.
Ещё один этап завершён.

3. Подключение коллекции к серверу.

Все операции я выполнял через браузер, как вы уже догадались. Можно и через Steam.
Открываем страницу коллекции.
И из адресной строки копируем ID. Он нам нужен.



Теперь открываем файл SRCDS_Watcher.bat блокнотом. И добавляем в конец строки запуска сервера строку:

+host_workshop_collection %ID_коллекции%

У вас должно получится примерно вот так (извините, свой ключик я скрою):





Запускаем сервер. Он немного подумает, и начнёт подключение к мастерской. Если вы впервые запустили сервер после подключения коллекции, то он начнёт загрузку аддонов.

Если не в первый раз и в коллекцию ничего не добавляли, то просто запустится.
Если добавили два-три аддона, то ещё загрузит их.

Теперь можете подключаться к серверу и баловаться с новыми пропами, рэгдоллами и прочей хренью.
Настройка модулей сервера ULX
Рассмотрим, пожалуй, настройку панели ULX.
Откроем админку командой !menu в чат или ulx menu в консоль и перейдём на вкладку Settings, и ещё раз на Server. Нам нужна колонка "Server Setting Modules". Именно настройкой модулей мы и займёмся.

ULX Admin Votemaps
Ratio of votes needed to accept a mapchange — это настройка рейтинга смена карты. Например, если за карту gm_servermap проголосовали 50% игроков (стандартное значение — 0.50), то на эту карту сервер и перейдёт.

Если перевести этот ползунок в положение 0.60, то карта будет сменена только если за неё проголосовали 60% игроков.

Ratio of votes needed to accept a mapchange — название, как вы заметили, тоже самое. Но делает эта переменная иную работу. Карта будет сменена, только если за смену карты проголосовало как минимум 3 игрока (стандартное значение — 3). Вообщем проголосовало. То есть не за карту, а вообще за карты в целом. Учитывается кол-во голосов от всех карт.

ULX Adverts
Рекламные объявления. Здесь я рассмотрю простое создание объявления «ЦЕНЫ НА АДМИНКУ — 850р или 12 ключей TF2 НА ПОЛГОДА!», написанное красным шрифтом посередине экрана.

В поле «Enter a message...» пишем «ЦЕНЫ НА АДМИНКУ — 850р или 12 ключей TF2 НА ПОЛГОДА!».
Time until advert repeats — Частота повторения сообщений. Указано число в секундах. Сделаем каждые 5 минут (300 секунд).

Группы объявлений. Можно сделать группу AdminSale.
Пониже видим аналог палитры. Выбираем красный.

Ещё ниже — галку Display in center. Ставим её, сообщение будет отображаться посередине экрана. И ещё ниже появится таймер Display Time (seconds). Там указываем те же пять минут в секундах.

Всё, жмём кнопку: Create. Ждём пять минут.
И видим это:



С объявлениями разобрались. Всё просто.

ULX Command/Event Echoes

Echo players vote choices — если поставить здесь галочку, то при голосовании в чате сервера будет отображаться, кто за какую карту проголосовал в голосовании.

Дальше идут два параметра в виде выпадающих списков. Рассмотрим действия первого списка.

Он отвечает за отображение действий ваших админов.
Do not echo admin commands — скрытый режим. Ни игроки, ни админы не видят действия админов. О них знает только сервер.
Echo admin commands anonymously — действие палится, но имя админа не указывается.
Echo commands and identify admin — действие палится, палится и имя админа, который это делал.

Насчёт второго выпадающего списка пока что сам не знаю. Отпишитесь в комментариях, кто знает.

Enable colored event echoes — показывать события в чате с цветами.
Default text color — цвета действий в чате.
Color for console — как я понял, это те же самые цвета действий в консоли. Но я дёргал туда-сюда, и цвет не менялся ни в консоли сервера, ни в консоли игрока.
Color for self — цвета целей действий.
Color for everyone — обычные цвета действий. Вставляются между целями и т.д.
Show team colors for players — включение\выключение цветов для ваших товарищей по команде.
Color for players (when above is disabled — цвета для этих самых товарищей. Эта палитра используется только если стоит галочка на пункте Show team colors for players
Color for everything else — не нашёл никакого применения на сервере. Или плохо смотрел.

ULX General Settings

Chat spam time — спам-фильтр. Настраивая здесь время, вы запрещаете игрокам отправлять ещё одно сообщение, если не прошло с прошлого отправленного указанное время.
Show MOTD when players join — параметр, отвечающий за показ приветственной веб-страницы игрокам, которые подключились к серверу.
Get MOTD from URL instead of motd.txt — брать приветственную веб-страницу с сайта. В случае отсутсвия галочки, читается файл %папка_с_сервером%\garrysmod\addons\ULX\ulx_motd.txt.

Welcome message — приветственное сообщение. В поле указываете сообщение. Можно использовать переменные %curmap% (Текущая карта) и %host% (имя сервера).

Number of name changes till kicked (0 disables) — кикать игрока при наличии определённого кол-ва смена никнейма во время нахождения на сервере определённое время. Если параметр находится в положении 0 — то выключено.
Cooldown time (seconds} — как я понял, промежуток времени.
То есть если указать в Number of name changes 2 раза, а в Cooldown time 300, то если игрок сменит ник два раза за пять минут, то он будет кикнут.
Смысла галочки Warn players how many name-changes remain не понял. Растолкования в комментарии.

ULX Gimps

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

Ну тут ничего сложного. Пишем сообщение, жмём Add. Хотим удалить? Выделяем сообщение и вместо кнопки Add видим кнопку Delete.

ULX Kick/Ban Reasons

Причины киков\банов. Так же настраивается, как и Гимпы (ULX Gimps).

ULX Logs

Параметры сохранения логов.
Enable Logging to Files — включение\выключение логгирования действий на сервере.
Log Chat — записывать весь чат между игроками в лог.
Log Player Events (Connects, Deaths, etc.) — записывать действия игроков на сервере (смерти, подключения, отключения и многое другое).
Log Spawns (Props, Effects, Ragdolls, etc.) — записывать все заспавненные предметы (пропы, эффекты, рэгдоллы и многое другое).

Дальше идёт путь к папке с логами.

ULX Player Votemap List

Разрешённые и запрещённые карты на смену для голосования, для игроков.

ULX Player Votemap Settings

Параметры для голосований, созданных игроками.

Enable Player Votemaps — включение\выключение возможности создания голосования на смену карты.
Time (min) before a user can vote for a map — минимальное время с прошлого голосования на новую карту.
Time (min) until a user can change their vote — сам не понял. Что-то связано с временем на смену голосования, но особо не уверен.
Ratio of votes needed to accept mapchange — минимальный процент голосов "ЗА" для смены карты.
Minimum votes for a successful map change — минимальное общее кол-во голосов для смены карты.
Time (sec) for an admin to veto a mapchange — Время, за которое админ может воспользоваться функцией !veto в чат или ulx veto в консоль, что сделает результат голосования положительным.

ULX Reserved Slots

Управление резервными слотами.

Первое, что мы видим — выпадающее меню. Его значения:
0 — Reserved slots disabled — резервные слоты выключены.
1 — Admins fill slots — админы заполняют слоты, если место есть.
2 — Admins don't fill slots — админы не заполняют слоты, если место есть.
3 — Admins kick newest player — при заходе админа, кикается недавно вошедший игрок.

Дальше идёт кол-во резервных слотов.
И ниже — видимость резервных слотов. То есть, если сервер рассчитан на 32 игрока, и есть два резервных слота, то для игроков даётся 30 слотов, а админам — 2. Если параметр выключен, то админу придётся подключаться через консоль.

ULX Votekick\Voteban

Настройки команд "!votekick" и "!voteban".

Ratio of votes needed to accept votekick — процент необходимых голосов "ЗА" для успешного кика.
Minimum votes required for a successful votekick — минимальное общее кол-во голосов за кик.
Ratio of votes needed to accept voteban — процент необходимых голосов "ЗА" для успешного бана.
Minimum votes required for a successful voteban — минимальное общее кол-во голосов за бан.
Подключение контентов игр к серверу
Подключение контентов, пожалуй, самое простое. Всего-то редактировать файлик...
Окей, переходим к делу.

Открываем папку с сервером\garrysmod\cfg
Там должен быть файл mount.cfg
Открываем его блокнотом.

Изначально в нём будут следующие строки:
//
// Use this file to mount additional paths to the filesystem
// DO NOT add a slash to the end of the filename
//

"mountcfg"
{
// "cstrike" "C:\steamcmd\steamapps\common\Counter-Strike Source Dedicated Server\cstrike"
// "tf" "C:\mytf2server\tf"}
Приводим файл к такому виду:
"mountcfg"
{
}

Теперь объясняю, как добавить игру. Через строчку после скобки пишите строки вида, смотрите образец:

«cstrike» «D:\Games\Steam\common\Counter-Strike Source\cstrike»
«tf» «E:\SteamLibrary\common\Team Fortress 2\tf»

То есть добавляем строки по этому образцу:

«НАЗВАНИЕ_МОДА» «ПУТЬ_К_ИГРЕ\НАЗВАНИЕ_МОДА»

У меня файл выглядит вот так:

Настройка: установка другого игрового режима
Надоел Sandbox? Хотим поставить TTT (Trouble in Terror Town) или другой игровой режим? Всё очень просто!



Устанавливаем в коллекцию аддон нужного игрового режима (если не TTT) и распаковываем архив так, чтобы содержимое папки аддона gamemodes оказалось в gamemodes сервера. То есть вот так, как показано сбоку. После пишим в батник строку вида +gamemode *имя_папки_из_gamemodes*. Смотрите образец:

Например: +gamemode cinema



После запуска сервера видим промелькающую строку смены игрового режима.

Часто задаваемые вопросы
Q: Помогите! У меня сервер не работает.
A: Сначала стоит выучить русский язык и проверить, правильно ли всё набрано.

Вопрос: Не загружаются аддоны из Steam Workshop.
Ответ: Серьёзно, я не знаю, как это у вас получается. Попробуйте установить на свой компьютер это. Если проблема не решится, пишите мне в Steam, разберёмся.

Вопрос: Как обновлять сервер?
Ответ: Точно так же, как и устанавливать.

Вопрос: У меня небольшие неполадки при загрузке. SteamCMD пишет ERROR: ... \ srcds пишет ERROR: ...
Ответ: Какая бы ошибка там не скрывалась, я могу попробовать помочь вам. Напишите мне в Steam.
Вернуться в каталог статей