Вступление

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

  • CSGO всё еще доступна и можно поиграть на своих любимых серверах с друзьями! Для этого зайдите в свою библиотеку игр, нажмите на CS2 ПКМ и кликните пункт "Свойства", перейдите в раздел бета-тестов и выберите версию legacy. Стим должен запустить скачивание csgo. Теперь при запуске CS2 должно появляться меню с выбором игры

  • Весь приводимый в статье софт является простым примером. Зачастую есть альтернативы намного надежнее и лучше, выбирайте сами в зависимости от своего опыта и знаний

  • Все команды и их аргументы всегда можно загуглить и узнать, что они делают

  • Статья не научит профессионально работать с серверами csgo или с SSH/VDS/Linux, но с её помощью можно будет собрать сервер "на коленке" и посмотреть на его устройство/работу, "поиграться" с ним

  • Если у вас возникают проблемы, всегда в первую очередь стремитесь проверить информацию в консоли или логах. Как правило этой информации хватает гуглу, чтобы найти решение возникшей проблемы

  • Лайк - не монета. Не скупитесь на комментарий или лайк, если вам понравилась статья, чтобы поддержать труд автора

  • Статья всегда открыта к конструктивной критике, улучшаем карму вместе

  • Если вдруг что-то из статьи перестало работать или на каком-то этапе у вас возникли трудности, вы всегда можете связаться с автором статьи через стим или через дискорд

Приступим...

Безопасность

Никогда не будет лишним напомнить, что на этапе обучения всегда нужно иметь привычку брать хостинги за копейки, а размещать на этих хостингах файлы, которые никогда не страшно потерять. Пока вы не знаете, что такое кибер-безопасность, dos/ddos атаки и всё в этом духе, не выпускайте ничего публично, чтобы не пожалеть, если вдруг вас "ломанут" и украдут ваши работы или снесут вашу машину. Если вы думаете о нормальном публичном проекте, позаботьтесь по пути о защите своего своей машины (DS/VDS). Так же не рекомендую размещать проекты на аккаунте с root правами. Надеюсь, вы понимаете о чем речь.

Аккаунт Steam

Знали вы или нет, но лицензионный сервер csgo требует от будущего администратора учетную запись steam без ограничений и всяческого рода блокировок. Иными словами, для установки сервера вам потребуется steam аккаунт, в котором как минимум можно выставлять вещи на торговую площадку (продавать) и отправлять любым людям запросы на добавление в друзья. Аккаунт лучше защитить, привязав steamguard, почту и телефон. Так же аккаунт лучше иметь чистый (новый), чтобы на случай "взлома" вы не потеряли свой богатенький инвентарь, модный профиль и впечатляющую статистику.

Токены (api-key)

Если вы планируете ставить на свой сервер любые плагины, за которые Valve выдают блокировку токена (а такое якобы возможно), то вам непременно придется генерировать новый токен. Чтобы не заморачиваться над этим вопросом регулярно, можно воспользоваться сервисом TokenAutoUpdater. Инструкция по работе с ним есть на самом сайте TAU. Подробнее про ключи (токены) будет в разделах ниже.
Хочу отметить, что за несколько месяцев работы сервера со всевозможными плагинами, блокировок токена я не получал хоть в интернете и встречается подобное предостережение в аналогичных статьях. Верить или нет, решайте сами, но я всё же решил подстраховаться, прибегнув к упомянотому сервису выше.

Хостинг

Для своих первых тестов вы можете взять вообще любой хостинг за 2-5$. Главное, чтобы это была VDS и имела подходящие параметры, от которых зависит скорость запуска сервера и максимальное число единовременных игроков при определенном наборе плагинов. Для своих тестов я рассматриваю подобную конфигурацию за ~2.5$:

  • 1vCPU x 3.0ghz

  • 1Гб RAM

  • 40Гб диск (SSD)

  • ОС linux (в моем случае Debian 11)

Для полноценного сервера с плагинами и игроками я беру машину за ~5$:

  • 2vCPU x 5.5ghz

  • 2Гб RAM

  • 60Гб диск (NVME)

  • ОС linux Debian

Софт

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

Установка сервера (linux)

Теперь нам необходимо подготовить машину для работы с серверами csgo. Для этого потребуется выполнить несколько команд через терминал для установки дополнительного софта. Каждая команда легко гуглится и вы сможете узнать, что она делает.

apt-get update
apt-get -y upgrade
apt-get -y install htop
apt-get -y install screen
apt-get -y install sudo
apt-get -y install lib32gcc1
apt-get -y install lib32stdc++6
apt-get install lib32z1

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

Для установки и обновления сервера требуется создать две папки: server и steamcmd. Располагать я их буду по пути /home/ и вся статья далее будет опираться именно на этот каталог. Создать их можно и через файловый менеджер, а можно и командами:

mkdir /home/server
mkdir /home/steamcmd

Теперь необходимо установить SteamCMD. Именно через steamcmd происходит скачивание и обновление сервера. Пройдите в созданную папку steamcmd, затем скачайте и распакуйте архив с приложением:

cd /home/steamcmd/
wget http://media.steampowered.com/client/steamcmd_linux.tar.gz
tar xvfz steamcmd_linux.tar.gz

Давайте запустим SteamCMD, указав id приложения, где 740 - csgo. Запускается оно через скрипт steamcmd.sh. Процесс скачивания и обновления сервера может показаться долгим (до получаса) и это нормально. Всё зависит в первую очередь от конфигурации VDS и стабильности сети с обеих сторон. Приступим:

./steamcmd.sh +login anonymous +force_install_dir /home/server/ +app_update 740 validate +quit

Пройдите по пути /home/server/csgo/cfg/ и создайте файл autoexec.cfg. Если данной папки нет, значит на этапе скачивания сервера произошла ошибка. Нужно её устранить...

cd /home/server/csgo/cfg/
touch /home/server/csgo/cfg/autoexec.cfg

Этот конфиг будет содержать в себе все важные глобальные настройки сервера, которые будут загружаться сервером приоритетно. Часть таких настроек я уже привел в примере ниже. Как всегда, каждый квар (настройка) гуглится:

hostname "day-d | Public Server"	// Название игрового сервера (только английский)
sv_setsteamaccount ВАШ-КЛЮЧ 		// Токен для сервера: http://steamcommunity.com/dev/managegameservers
mp_endmatch_votenextmap 0 			// Отключить стандартное голосование сервера за карту
rcon_password "" 					// Пароль для упраления сервером через терминал, RCON командами
sv_password "" 						// Пароль для входа на сервер(если не требуется, оставить ковычки пустыми)
sv_lan 0 							// 0 - открыть для интернета, 1 - для локальной сети
mp_autokick 0 						// Не автокикать(если часто самоубиваешься например) 
sv_pure 0 							// Пропускать на сервер, даже если файлы клиента отличаются
host_name_store 1 					// Чтобы ваш сервер был виден в списке серверов сообществ
host_info_show 2 					// Чтобы ваш сервер был виден в списке серверов сообществ
host_players_show 2 				// Чтобы ваш сервер был виден в списке серверов сообществ
mapgroup "mg_server" 				// Группа карт для настройки голосований. Список настраивается в gamemodes_server.txt

Вообще у сервера есть множество конфигов, если вы уже успели подсмотреть в папку cfg, но нас почти всегда будут интересовать лишь некоторые из таких:

  • autoexec.cfg - если нет, создаем вручную. Его квары сервер читает раньше остальных конфигов

  • server.cfg - так же может отсутствовать, подгружается после autoexec.cfg

  • gamemode_режим.cfg - это конфиг режима и он подгружается последним, а значит переопределит одинаковые квары у верхних двух конфигов. То есть если квар есть в первом конфиге, и во втором, то значение квару будет установлено из второго конфига. Но если квар прописан и в третьем (режимном конфиге), то его значение будет взято из третьего конфига. Таким образом "режимные" конфиги для сервера приоритетнее. Поправьте, если напутал!

Что за такие "режимные" конфиги? Это конфиги режима игры. В csgo есть и напарники, и обычка, и запретная зона, и другие режимы. Об этом чуть позже.

Сервер установлен в чистом виде и готов для принятия игроков. Я использую screen, потому напишу пример на его основе, а если не умеете пользоваться скрином, погуглите, легко!

Необходимо создать новое окно (screen) и запустить наш сервер в нем:

screen -S server1
cd /home/server/
./srcds_run -game csgo -console -tickrate 128 +map de_dust2 -port 27015 +game_type 0 +game_mode 0 -secure -nohltv

Если не будет никаких второстепенных проблем по типу фаервола, то сервер должен успешно запуститься. В противном случае придется открыть указанный в строке запуска порт (27015) и/или устранить другие препятствующие запуску причины.

Чтобы зайти на сервер, открываем в игре список серверов сообщества и жмем "Добавить" (кнопка снизу). Откроется окно, там мы должны указать IP:PORT нашей vds. IP я ваш не знаю, но порт у нас в команде запуска прописан 27015, то есть ip:27015. В качестве альтернативы можно в игровой консоли выполнить команду connect ip:27015. Должно появиться окно загрузки (подключения к серверу), а консоль сервера (screen) отобразит информацию о вашем подключении к серверу.

Теперь чуточку о приведенных параметрах запуска. Еще больше параметров ищите в сети. Список:

-game csgo 		// Указываем, от какой игры запускаем сервер. Не трогать в общем
-console 		// Запускаем сервер в консольном режиме. Тоже не трогаем
-tickrate 128 	// Тикрейт сервера. Гуглите, зачем он. Либо 64, либо 128
+map de_dust2 	// Стартовая карта сервера. Уберите, если подключили коллекцию Workshop
-port 27015 	// Порт сервера. Не меняйте, если не понимаете
+game_type 0 	// Устанавливает режим сервера
+game_mode 0 	// Тоже настройка режима сервера
-secure 		// Защищаем сервер VAC анти-читом
-nohltv 		// Отключаем возможность заходить на сервер, как зритель

Побегали по серверу? Вернитесь в screen и выключите сервер командой quit. Мы еще не закончили...

quit

Установка плагинов (SourceMod+MetaMod)

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

Для работы плагинов на сервере csgo требуется установить MetaMod и SourceMod. Это два дополнения, которые позволяют устанавливать на сервер пользовательские плагины с открытых источников или даже писать их самостоятельно (при знании языка SourcePawn). Чтобы установить их, откройте сайты дополнений и выберете stable версию для linux на обоих сайтах. Кликните по версии «ПКМ» и выберете в контекстном меню что-то в роде "Копировать адрес ссылки". Первым ставится SourceMod, потом MetaMod. Выключаем сервер и снова идем в терминал выполнять команды, заменив ссылки на свои актуальные:

cd /home/server/csgo/
wget https://sm.alliedmods.net/smdrop/1.10/sourcemod-1.10.0-git6509-linux.tar.gz
tar xvfz sourcemod-1.10.0-git6509-linux.tar.gz

wget https://mms.alliedmods.net/mmsdrop/1.11/mmsource-1.11.0-git1144-linux.tar.gz
tar xvfz mmsource-1.11.0-git1144-linux.tar.gz

Теперь вы можете включить свой сервер и проверить команду sm. Если в косоль вывело не Unknow command, то можно радоваться. Дополнения установились успешно, остается лишь скачивать готовые плагины в интернете и кидать их запчасти по нужным папкам (сообразите по содержимому архивов с плагинами). После каждого нового плагина нужно перезапускать сервер!

Важный нюанс... Если вы скачали плагин и в нем имеются модели/текстуры/звуки и т.п. (папки sounds, models, sprites, textures) весом ~150мб и более на один файл, то вам придется настраивать альтернативное зеркало для скачки файлов. Такая рекомендация существует, потому что у csgo есть свои технические ограничения и вы можете с таковыми столкнуться. Да и альтернативное зеркало хорошо тем, что вы не будете лишний раз грузить диск и канал сервера скачиванием тяжелых файлов при подключении к нему.

Чтобы сделать альтернативное зеркало, вам нужно найти ресурс, где вы будете хранить файлы ваших плагинов, чтобы игрокам всё скачивалось автоматически при подключении к серверу. К примеру, я создал папку с именем csgo у себя на сайте и в ней держу все запчасти от плагинов. Чтобы это работало, в конфиг autoexec.cfg нужно добавить новые настройки:

sv_downloadurl "https://day-d.ru/csgo"
sv_allowupload 1
sv_allowdownload 1

После этого всякие скины, модели оружий, звуки и т.п. будут скачиваться вашим игрокам без проблем. Учтите, что ссылка не должна заканчиваться на «/», а путь до файлов должен быть прямой, то есть с расширением(.mp3, .ogg и т.п.).

Сами же плагины, как правило, ставить совсем не трудно. Обычно все плагины заливают в сеть архивами и сразу понятно, глядя на внутренности архива, что и куда закидывать. Во всяком случае файлы формата .smx кладутся по пути сервер/csgo/addons/sourcemod/plugins/, а .sp кладутся в сервер/csgo/addons/sourcemod/scriptings/. Первый файл является самим плагином, второй является его исходником и может не всегда идти в комплекте с самим плагином, да и его не обязательно вообще класть на сервер.

Важно! В идеале все плагины нужно проверять на уязвимости и компилировать вручную, а уже тогда класть на сервер. Но для этого вы должны знать язык SourcePawn и уметь программировать. Если такой возможности нет, то качайте плагины только с проверенных источников. Как правило это github автора плагина или форум https://forums.alliedmods.net/ для поиска самих плагинов.

Архивация файлов (для зеркала)

CS:GO умеет распаковывать архивы формата bz2, а значит нам было бы удобно хранить тяжелые файлы в виде архивов, чтобы игрокам приходилось качать гораздо меньше, чем на деле весит файл. Для архивации файлов установите программу 7zip на свой ПК, создайте папку на рабочем столе с именем files и файл bz2.bat. Откройте bz2.bat текстовым редактором, вставьте в него следующую строку, заменив C:\Users\PC\Desktop\files и C:\Program Files\7-Zip\7z.exe на свои пути к папке files и программе 7zip. Сохраните изменения в файле:

for /F "tokens=*" %%i in ('where /R "C:\Users\PC\Desktop\files" *.*') do "C:\Program Files\7-Zip\7z.exe" a "%%i.bz2" "%%i"
PAUSE

Теперь для архивации добавьте все нужные файлы в папку «files», затем запустите батник двойным кликом ЛКМ. Имейте ввиду, в папке должны находиться только файлы. Удобно, если нужно сжать карты, модели или даже музыку, когда на сервере стоит куча плагинов.

Все полученные архивы в результате можно заливать туда, где должны были лежать оригинальные (не архивированные) файлы на вашем зеркале. Игра у игрока, обратившись к зеркалу при входе на сервер, скачает ему ваши bz2 архивы и распакует там же, куда и скачала.

Режимы игры

Как и говорилось прежде, режимы игры настраиваются через определенные конфиги в зависимости от установленного режима игры на сервере. Конфиги режимов лежат по пути /home/server/csgo/cfg/. Изменяя настройки в этих конфигах, вы будете влиять непосредственно на настройки конкретного режима игры. Если какая-то переменная записана в server.cfg и эта же переменная есть в gamemode_competitive.cfg (к примеру), то значение будет браться именно из gamemode_competitive.cfg, так что не забудьте об этом!

P.S. Говорят, если сделать конфиг с именем gamemode_competitive_server.cfg, то его значения перезапишут значения из конфигов выше, проверяйте :)

gamemode_casual.cfg			Обычный
gamemode_competitive.cfg	Соревновательный
gamemode_armsrace.cfg		Гонка вооружений
gamemode_demolition.cfg		Уничтожение объекта
gamemode_deathmatch.cfg		Бой насмерть

Для изменения режима игры достаточно в строке запуска изменить параметры +game_type 0 и +game_mode 0 на нужные вам и перезапустить сервер. Примеры параметров смотрите ниже:

+game_type 0 +game_mode 0	// Обычный
+game_type 0 +game_mode 1	// Соревновательный
+game_type 0 +game_mode 2	// Напарники
+game_type 0 +game_mode 3	// Эксперт по оружию
+game_type 1 +game_mode 0	// Гонка вооружений
+game_type 1 +game_mode 1	// Уничтожение объекта
+game_type 1 +game_mode 2	// Бой насмерть
+game_type 2 +game_mode 0	// Тренировка
+game_type 3 +game_mode 0	// Пользовательский
+game_type 4 +game_mode 0	// Страж
+game_type 4 +game_mode 1	// Совместный налет
+game_type 5 +game_mode 0	// Военные игры
+game_type 6 +game_mode 0	// Запретная зона

Имейте ввиду, что для нестандартных режимов нужно подбирать нестандартные карты. Так, к примеру, в режиме Запретная зона вы наверняка будете видеть черный экран, если вы поставите карту $2000$.

Подключаем карты из Steam WorkShop

Первым делом вам необходимо сгенерировать ключ для Steam WebAPI. Делается это тут. Авторизуйтесь в своем аккаунте steam, который планирутся привязать к серверу, затем в поле «Домен» введите свой адрес электронной почты и поставьте галочку, подтверждая свое согласие с правилами пользования. Нажмите «Зарегистрировать». Если всё сделано верно, вы получите WebAPI ключ. Теперь создайте файл webapi_authkey.txt и вставьте в него ваш ключ. Сохраните файл и кидайте его в папку /home/server/csgo/ вашего сервера. Этих действий можно избежать, если вы воспользовались пунктом про токены (TAU).

Теперь нам необходимо создать коллекцию карт для нашего сервера.

Создаем коллекцию. Переходим в стим -> «Мастерская» -> В поиск вбиваем "Counte-Strike" и выбираем игру -> «Просмотр» -> «Коллекции» -> «Создать коллекцию» -> «Сохранить и продолжить». Коллекция создана. Теперь необходимо её наполнить картами.

Добавляем карты в коллекцию. Переходим в стим -> «Мастерская» -> В поиск вбиваем "Counte-Strike" и выбираем игру -> В поиск вбиваем любое слово, например "aim" -> открываем любую карту -> снизу под скринами жмем «В коллекцию» -> Ставим галку на вашей коллекции, готово.

Удаляем карты с коллекции. Переходим в стим -> «Мастерская» -> В поиск вбиваем "Counte-Strike" и выбираем игру -> «Просмотр» -> «Избранное» -> «Создано ваш ник» -> «Коллекции» -> Выбираем коллекцию -> «Изменить коллекцию».

Получаем ID коллекции. Переходим в стим -> «Мастерская» -> В поиск вбиваем "Counte-Strike" и выбираем игру -> «Просмотр» -> «Избранное» -> «Создано ваш ник» -> «Коллекции» -> выбираем коллекцию и в ссылке сверху (в браузере) последние цифры - это и есть ID вашей коллекции.

Получаем ID карты.. Переходим в стим -> «Мастерская» -> В поиск вбиваем "Counte-Strike" и выбираем игру -> «Просмотр» -> «Избранное» -> «Создано ваш ник» -> «Коллекции» -> Выбираем коллекцию -> Выбираем карту и в ссылке сверху(в браузере) последние цифры - это и есть ID карты.

Когда ваша коллекция карт будет подготовлена, скопируйте её id из ссылки и настройте конфиг autoexex.cfg, добавив в него новые строчки. Пример коллекции можно посмотреть тут.

host_workshop_collection ID-КОЛЛЕКЦИИ	// Подключаем коллекцию карт к нашему серверу
workshop_start_map ID-КАРТЫ				// Выбираем карту, с которой наш сервер будет стартовать
sv_workshop_allow_other_maps 0			// Запрещаем игрокам запускать сторонние карты

Как вы успели заметить, нужно указать еще и id карты. Конкретно с этой карты сервер и будет стартовать после каждого перезапуска. Теперь вам нужно перезапустить сервер и дождаться, пока все карты скачаются на сам сервер, а после настроить файл mapcycle.txt, который находится в папке /home/server/csgo. Скачивание должно начаться автоматически, если всё сделано верно! Теперь о файле mapcycle.txt... Пример моего конфига на момент написания статьи:

workshop/128042593/2000_classic_b2
workshop/1303424100/aim_deagle_csgo
workshop/125995702/aim_redline

Давайте разберемся, что значат значения конфига и как этот конфиг правильно настроить. Каждая новая карта в списке должна прописываться с новой строки и иметь вид типа workshop/ID-карты/название-карты-без-.bsp. Тут, я думаю, всё вполне понятно.

Просто переходим в папку /csgo/maps/workshop/ и видим список папок с цифрами. Эти папки и есть папки с нашими картами из мастерской, а цифры в названии папок - это id карт из ссылок в браузере. Когда вы настроете файл mapcycle.txt, нужно перезапустить сервер. И кстати, все стандартные карты из /csgo/maps/ можно удалить. Так вы выиграете 4-6 гигов места на диске. Но на всякий случай не удаляйте карту de_dust2.bsp и все файлы с таким же именем, но разными расширениями. При необходимости все карты можно вернуть обратно, обновив сервер через steamcmd (спойлер выше).

Команды и переменные

Вы бы только знали, сколько существует команд и переменных для сервера csgo... Я лишь приложу пару ссылок: эту, эту и эту. А вы пользуйтесь в своё удовольствие и эксперементируйте!

Выдача админки (прав)

После установки SourceMod и MetaMod пройдите в папку csgo/addons/sourcemod/configs/ и откройте файл admins_simple.ini. Именно в этом файле прописываются права для определенных аккаунтов. Каким образом можно выдать права на аккаунт? Вот варианты:

"STEAM_0:1:16" "bce"
"!127.0.0.1" "99:z"
"BAILOPAN" "abc" "Gab3n"

"ЗДЕСЬ-STEAMID" "ПЕРМЫ"
"!ЗДЕСЬ-IP" "ИММУНИТЕТ:ПЕРМЫ"
"НИК-STEAM" "ПЕРМЫ" "ПАРОЛЬ"

Можете комбинировать выдачу админки как вам угодно. Если выдать иммунитет 99 и пермы z, то аккаунт получит полную админку. В качестве аккаунта вы можете указать чей-то STEAMID, или IP, или НИК. Так же можно требовать и пароль для аккаунта и тогда игроку придется подтверждать свои права, вводя пароль в консоли игры командой:

setinfo _pw пароль

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

Радары для карт

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

Если вы используете кастомные карты и у карт этих нет изображений на радарах, а так же картинок при коннекте на сервер, как в официальных картах, то вам нужно загрузить конкретную карту локально и приступить к работе над созданием радаров. Откройте консоль в игре и выполните команду для запуска нужной вам карты. Если карта взята из workshop каталога, то для запуска нужно использовать не только имя, но и путь до карты:

map de_dust2
или
map workshop/125995702/aim_redline

Когда вы зайдете на карту, выполните в одну строку следующие команды:

sv_cheats 1;bot_kick;bot_quota 1;cl_drawhud 0;r_drawviewmodel 0;hidepanel all;r_skybox 0;fog_override 1;fog_enable 0; noclip;mp_ignore_round_win_conditions 1

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

Теперь откройте графический редактор, создайте полотно 1024x1024 пикселей и вставьте изображение так, чтобы ваша карта оказалась полностью в поле видимости на этом квадратном полотне. Готовое изображение необходимо сохранить в формате .dds и файл должен иметь название вида aim_redline_radar.dds. Его необходимо разместить в папке «csgo\resource\overviews\» на вашем зеркале или сервере. Данный файл необходимо продублировать в ту же папку, изменив ему название на aim_redline_radar_spectate.dds. Этот файл будет показываться наблюдателям (зрителям) отдельно.

Создайте текстовый файл с именем aim_redline.txt, класть итоговый результат нужно в ту же папку, что и картинки выше. Вставьте в файл следующий конфиг:

{
	// Настройка карты. Здесь мы задаем позицию камеры радара, приближение и масштабирование
  	"material"	"overviews/aim_redline"	    // Путь к файлу с изображением уровня без указания формата относительно csgo директории
	"pos_x"		"-2400"                 	// Данные, которые вы запомнили
	"pos_y"		"3383"                  	// Данные, которые вы запомнили
	"scale"		"4.4"                   	// Данные, которые вы запомнили
	"rotate"	"1"                     	// карта была повернута на 90 градусов в редакторе
	"zoom"		"1.1"	                	// Увелечение

	// Позиции значков на экране загрузке уровня. Если у вас только одна команда, удалите значения для ненужной
	"CTSpawn_x"	"0.60"
	"CTSpawn_y"	"0.22"
	"TSpawn_x"	"0.36"
	"TSpawn_y"	"0.93"
	
	// Позиции значков закладки бомбы. Если у вас только один плен, удаляйте вторые значени <b>bombB_x</b> и <b>bombB_y</b>
	// Если плентов нет, можно удалить все 4 значения для A и B точек
	"bombA_x"	"0.80"
	"bombA_y"	"0.20"
	"bombB_x"	"0.20"
	"bombB_y"	"0.15"
	
	// Позиция значков для заложников. Можно задавать и 5, 6, 7, 8, и так далее... Можно удалить совсем
	"Hostage1_x"	"0.56"
	"Hostage1_y"	"0.83"
	"Hostage2_x"	"0.48"
	"Hostage2_y"	"0.64"
}

Важный момент. Когда вы всё сделаете, радар в игре может сильно не соответствовать размерами и позицией. Для этого нужно "подгонять" 2, 3, 4, 5 и 6 параметры, а так же работать в редакторе сужая/расширяя изображение или двигая его в нужном направлении. Конфиг не обязательно может содержать точки установки бомб или заложников:

{
	"material"	"overviews/aim_redline"
	"pos_x"		"-1380"
	"pos_y"		"1400"
	"scale"		"2.7"
	"zoom"		"0.96"
	
	"CTSpawn_x"	"0.51"
	"CTSpawn_y"	"0.9"
	"TSpawn_x"	"0.51"
	"TSpawn_y"	"0.13"
}

Иногда на карте нужно сделать красивые скрины, но необходимо убрать интерфейс и включить полёт. Запустите карту локально и пропишите команды:

bot_kick;bot_quota 1;cl_draw_only_deathnotices 1;r_drawviewmodel 0;sv_cheats 1;noclip;cl_drawhud 0;r_drawviewmodel 0;hidepanel all;mp_restartgame 2

Теперь вы можете летать по карте без интерфейса и делать нужные вам скрины. Удачи!

На этом, пожалуй, я пока закончу свою первую статью на Хабре. Если будет доступна функция редактирования, я улучшу и дополню данную статью, в противном случае напишу вторую часть. Всем спасибо за внимание!

Спасибо за вклад: @Grey83

Комментарии (13)


  1. Grey83
    21.10.2023 16:34

    Если какая-то переменная записана в server.cfg и эта же переменная есть в gamemode_competitive.cfg (к примеру), то значение будет браться именно из gamemode_competitive.cfg, так что не забудьте об этом!

    А если будет создан файл gamemode_competitive_server.cfg, то его значения перезапишут все из прочих конфигов (и ещё, когда CS:GO обновлялась, то файлы gamemode_*.cfg перезаписывались на дефолтные при обновлении сервера)


  1. Grey83
    21.10.2023 16:34

    Во всяком случае файлы формата .smx кладутся по пути сервер/csgo/addons/sourcemod/plugins/, а .sp кладутся в сервер/csgo/addons/sourcemod/scriptings/. Первый файл является самим плагином, второй является его исходником и может не всегда идти в комплекте с самим плагином.

    Папку scriptings можно с сервера вообще удалить, если плагины не компилируются на этом конкретном сервере.

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

    Не "лучше", а так стоит поступать всегда (были случаи встраивания бэкдоров с перехватом админских прав рута). Правда проверить код на уязвимости может только тот, кто способен написать плагин. Так что стоит брать исходники либо на AlliedModders (англоязычный ресурс), либо на HLmod (русскоязычный ресурс), либо у автора плагина на гитхабе.
    Кроме того плагин может не запуститься, если был скомпилен другой версией SM, поэтому лучше всего компилиь либо на самом сервере, либо у себя на ПК (в крайнем случае попросить скомпилить под конкретную версию SM, сейчас актуальная - 1.11).


  1. Grey83
    21.10.2023 16:34

    Чтобы это сделать, вам нужно найти ресурс, где вы будете хранить файлы ваших плагинов, чтобы игрокам всё скачивалось автоматически при подключении к серверу. Такая рекомендация существует, потому что у csgo есть свои технические ограничения и вы можете с таковыми столкнуться.

    Емнип, что-то порядка 150МБ. Всё, что больше, не будет скачиваться с выделенного сервера.
    Также не стоит сжимать в bz2 карты, если они в несжатом виде весят больше 150МБ (клиент скачает, но не будет распаковывать). Это не относится к картам, которые игрок должен скачивать из Мастерской (про это в статье есть).


  1. Ionenice
    21.10.2023 16:34

    А статья точно актуальная? Да, всё может быть аналогично, но cs:go уже как бы и нету


    1. day-d Автор
      21.10.2023 16:34

      На текущий момент CS:GO всё еще доступна. Достаточно зайти в свойства CS2 и в бета-версиях выбрать версию legacy, после чего начнется скачивание и установка cs:go. При запуске CS2 будет выбор между версиями. Вспоминаем, как происходил переход на Dota2 Reborn. А там может версию и спиратят, как и cs 1.6.


      1. Kubig
        21.10.2023 16:34

        Спасибо, Я не знал


      1. Raf9111
        21.10.2023 16:34

        Но остались только такие сервера, правильно? Официальных в ксго версии уже нету ведь так понимаю.


        1. Grey83
          21.10.2023 16:34

          Но остались только такие сервера, правильно?

          Хз, тут нужно желание серверодержателей эту игру держать на сервере.
          Скорей всего будет как с CS:S v34. Разве что скачают с серверов вентилей последний билд сервера и отвяжут от проверки обновлений (хотя сейчас это уже не столь важно, т.к. сервер сам и не обновляется, если ему не дать такую команду).
          Ну и мастерсервер нужно будет тоже прикрутить новый (или ходить по серверам только командой connect IP:port), т.к. старый скорей всего для CS:GO скорей всего отрубят (вместе с б-гопротивными зеркалами, которые уже на CS:S OB начали перекочёвывать).


  1. day-d Автор
    21.10.2023 16:34

    Сервера сообщества всё еще будут доступны наверняка и версия останется существовать, как и cs 1.6. Я так думаю:)


  1. alex_kag
    21.10.2023 16:34

    Зацепило полное отсутствие как настроить запуск сервиса. Использовать screen для запуска сервиса? Вы серьезно?


    1. day-d Автор
      21.10.2023 16:34

      Ну во-первых, о каком сервисе идет речь, если статья написана об установке игрового сервера?
      Во-вторых, что конкретно Вы не смогли найти? Все команды для запуска приложены. Screen не является обязательным софтом, но без него сервер не сможет работать 24/7, если закрыть терминал, в котором был запущен сервер. Используйте альтернативы, если знаете иные.
      Ну а в-третьих, уровень статьи помечен, как "средний" и подразумевает, что у читателя есть достаточно опыта, чтобы пользоваться терминалом, а главное у него хватает внимательности и умения пользоваться поисковиком.


      1. alex_kag
        21.10.2023 16:34

        Ну, как минимум, именно игровой сервер и является в данном случае сервисом.

        А вместо screen, очень советую systemd....

        Но вот на средний уровень, ИМХО, статья и близко не тянет....


        1. day-d Автор
          21.10.2023 16:34

          Хорошо, спасибо. Про systemd я обязательно уточню, как об аналоге при следующем редактировании статьи. Ну и возможно действительно стоило бы понизить её уровень до лёгкого. Хотя на мой взгляд, легко - это когда ты не знаешь, что такое VDS и SSH, а после прочтения статьи ты уже через полчаса приглашаешь друзей на свой собственный сервер. Средний уровень потому и выбран, что знания здесь все же нужны, пусть и не слишком большие. В первых пунктах нужно суметь настроить фаерволл самостоятельно, затем настроить screen или systemd, а еще (возможно) сделать себе как-то зеркало под раздачу файлов.