Русское сообщество по скриптингу

[Linux] Поднятие собственного HLTV сервера

Полезные материалы и статьи по играм на движках GoldSrc и Source (Half-Life, Counter-Strike 1.6, Half-Life 2, Counter-Strike: Source, Team Fortress 2, Left 4 Dead, Left 4 Dead 2 и т.д.).
Правила форума
1. Запрещено материться и оскорблять других участников форума.
2. Запрещен флуд, оффтоп, дабл постинг во всех разделах форума, кроме раздела "Болтовня".
3. Запрещено взламывать сайт/форум или наносить любой вред проекту.
4. Запрещено рекламировать другие ресурсы.
5. Запрещено создавать темы без информативного названия. Название темы должно отображать ее смысл.

[Linux] Поднятие собственного HLTV сервера

Сообщение Selpsan » 04 май 2016, 14:47

Поднятие собственного HLTV сервера

Доброго времени суток, друзья! Подумав, решил написать руководство для поднятия собственного сервера HLTV под управлением OS:Linux.

Для подготовки статьи специально был куплен виртуальный сервер (OpenVZ: debian-7.0-x86).

Первым делом, что нам необходимо сделать, - это выкачать с помощью SteamCMD актуальный на сегодняшний день сервер, build 6153. Конечно, можно и более ранних версий, но я предпочитаю свеженькие файлы ;) Предположим, что у нас сервер расположен по следующему пути: /home/hlds

Вторым делом мы создадим нового пользователя (для запуска HLTV) и нужные нам директории для дальнейшей работы. По умолчанию при создании нового пользователя директория имеет следующий путь: /home/hltv. При добавлении нового пользователя система запросит ввести пароль, повторить пароль, ввести дополнительные данные (необязательно) и подтвердить корректность информации.

Код: Выделить всё
root@vds142:~# adduser hltv
Adding user `hltv' ...
Adding new group `hltv' (1000) ...
Adding new user `hltv' (1000) with group `hltv' ...
Creating home directory `/home/hltv' ...
Copying files from `/etc/skel' ...
Enter new UNIX password:
Retype new UNIX password:
passwd: password updated successfully
Changing the user information for hltv
Enter the new value, or press ENTER for the default
        Full Name []:
        Room Number []:
        Work Phone []:
        Home Phone []:
        Other []:
Is the information correct? [Y/n] y

Для удобства создадим ещё две директории внутри нашего нового пользователя. Это папка cstrike (куда будут записываться будущие demo-записи) и папка valve (куда будут вестись логи, если вам это необходимо):

Код: Выделить всё
root@vds142:~# mkdir /home/hltv/cstrike
root@vds142:~# mkdir /home/hltv/valve

Третьим делом мы скопируем все необходимые файлы из корня сервера hlds в нашу папку hltv. Нам понадобятся следующие файлы: hltv; core.so; proxy.so; filesystem_stdio.so; hltv.cfg (создаём сами):

Код: Выделить всё
root@vds142:~# cd /home/hlds
root@vds142:/home/hlds# cp hltv /home/hltv
root@vds142:/home/hlds# cp core.so /home/hltv
root@vds142:/home/hlds# cp proxy.so /home/hltv
root@vds142:/home/hlds# cp filesystem_stdio.so /home/hltv
root@vds142:/home/hlds# cd /home/hltv
root@vds142:/home/hltv#

Четвёртым делом мы рекурсивно изменим права доступа файлов/директорий на нового пользователя hltv, так как мы изначально работали из под root, соответственно, файлы "принадлежали" ему:

Код: Выделить всё
root@vds142:/home/hltv# chown -R hltv:hltv /home/hltv/

Пятым делом попробуем запустить наш hltv сервер от имени нового пользователя hltv:

Код: Выделить всё
root@vds142:/home/hltv# sudo -u hltv ./hltv +connect 37.230.210.77:27015 -port 27030                                                                         
Console initialized.
FileSystem initialized.
Error:libsteam_api.so: cannot open shared object file: No such file or directory
WARNING! System::DispatchCommand: command "connect 37.230.210.77:27015" not registered.
Type 'help' for a list of commands.
WARNING! System::RunFrame: system time difference <= 0.
WARNING! System::RunFrame: system time difference <= 0.

К сожалению, система ответила ошибкой о том, что отсутствует файл: libsteam_api.so. Исправим эту ситуацию:

Код: Выделить всё
root@vds142:/home/hltv# cp /home/hlds/libsteam_api.so /usr/lib/

Не будем отчаиваться и снова попробуем запустить сервер:

Код: Выделить всё
root@vds142:/home/hltv# sudo -u hltv ./hltv +connect 37.230.210.77:27015 -port 27030

Console initialized.
FileSystem initialized.
Network initialized.
Master module initialized.
Server module initialized.
World module initialized.
Demo client initialized.
Couldn't open config file hltv.cfg.
Proxy module initialized.
Type 'help' for a list of commands.
Challenging 37.230.210.77:27015 (1/3).
Get challenge (HASHEDCDKEY)
Connecting to  37.230.210.77:27015 (1/3).
>
BUILD 6153 SERVER (0 CRC)
Server # 1

Added 781 resources.
Received baseline with 68 entities.
qError:/home/hlds/cstrike/dlls/director.so: cannot open shared object file: No such file or directory
Couldn't open config file director.cfg.
Director module initialized.
[S_API FAIL] SteamAPI_Init() failed; SteamAPI_IsSteamRunning() failed.
dlopen failed trying to load: steamclient.so with error:steamclient.so: cannot open shared object file: No such file or directory

Но и тут нас ожидает неудача. Отсутствие двух путей/файлов: director.so и steamclient.so. Исправим и это, а также снова изменим права доступа:

Код: Выделить всё
root@vds142:/home/hltv# cp /home/hlds/steamclient.so /usr/lib/
root@vds142:/home/hltv# mkdir /home/hltv/cstrike/dlls
root@vds142:/home/hltv# cp /home/hlds/valve/dlls/director.so /home/hltv/cstrike/dlls
root@vds142:/home/hltv# chown -R hltv:hltv /home/hltv
root@vds142:/home/hltv#

Пробуем ещё раз запустить наш сервер hltv с надеждой:

Код: Выделить всё
root@vds142:/home/hltv# sudo -u hltv ./hltv +connect 37.230.210.77:27015 -port 27030

Console initialized.
FileSystem initialized.
Network initialized.
Master module initialized.
Server module initialized.
World module initialized.
Demo client initialized.
Executing file hltv.cfg.
Recording initialized.
Proxy module initialized.
Type 'help' for a list of commands.
Challenging 37.230.210.77:27015 (1/3).
Get challenge (HASHEDCDKEY)
Connecting to  37.230.210.77:27015 (1/3).
>
BUILD 6153 SERVER (0 CRC)
Server # 1

Added 781 resources.
Received baseline with 68 entities.
[S_API FAIL] SteamAPI_Init() failed; SteamAPI_IsSteamRunning() failed.
Setting breakpad minidump AppID = 10
dlopen failed trying to load: /home/hltv/.steam/sdk32/libsteam.so with error: /home/hltv/.steam/sdk32/libsteam.so: cannot open shared object file: No such file or directory

Немного злимся, но исправляем ошибку с отсутствием пути/файла: libsteam.so:

Код: Выделить всё
root@vds142:/home/hltv# mkdir /home/hltv/.steam/
root@vds142:/home/hltv# mkdir /home/hltv/.steam/sdk32
root@vds142:/home/hltv# cp /home/hlds/libsteam.so /home/hltv/.steam/sdk32
root@vds142:/home/hltv# chown -R hltv:hltv /home/hltv
root@vds142:/home/hltv#

Если не запустится убиваем виртуальный сервер к чертям...

Код: Выделить всё
root@vds142:/home/hltv# sudo -u hltv ./hltv +connect 37.230.210.77:27015 -port 27030

Console initialized.
FileSystem initialized.
Network initialized.
Master module initialized.
Server module initialized.
World module initialized.
Demo client initialized.
Executing file hltv.cfg.
Recording initialized.
Proxy module initialized.
Type 'help' for a list of commands.
Challenging 37.230.210.77:27015 (1/3).
Get challenge (HASHEDCDKEY)
Connecting to  37.230.210.77:27015 (1/3).
>
BUILD 6153 SERVER (0 CRC)
Server # 1

Added 781 resources.
Received baseline with 68 entities.
[S_API FAIL] SteamAPI_Init() failed; SteamAPI_IsSteamRunning() failed.
Setting breakpad minidump AppID = 10
Start recording to clc-1605032107-de_dust2.dem.

О, чудо =DD Сервер успешно запустился и demo-запись началась. ) Всем спасибо за внимание! ;)

Для тех, кому лень всё это проделывать. Прикрепляю ссылку на скачивание готового HLTV сервера.
В нём присутствуют все необходимые файлы, включая небольшой скрипт для запуска/остановки сервера:

Код: Выделить всё
sudo -u hltv ./hltv.sh start
sudo -u hltv ./hltv.sh stop

Отдельная благодарность a2, за способ запуска сервера без использования screen сессии.

P.s.: папку "steam" переименовать в ".steam"
P.s.s.: папку "usr" закинуть в соответствующие место =D

Вы должны зарегистрироваться, чтобы видеть ссылки.

Тема перемещена в раздел "Статьи по играм на движках GoldSrc/Source" // Subb98
Аватара пользователя
Selpsan
 
Сообщения: 10
Зарегистрирован: 14 мар 2016, 16:29
Благодарил (а): 4 раз.
Поблагодарили: 14 раз.
Языки программирования: Counter-Strike 1.6

Re: [Linux] Поднятие собственного HLTV сервера

Сообщение Fedcomp » 04 май 2016, 17:20

Selpsan писал(а):Отдельная благодарность a2, за способ запуска сервера без использования screen сессии.

Это как же?
Не помогаю в ЛС - есть форум.
Плагины тоже не пишу, на форуме достаточно хороших скриптеров.


"я ставлю зависимости потому что мне приятно" - subb98 @ 2017
Аватара пользователя
Fedcomp
Администратор
 
Сообщения: 4936
Зарегистрирован: 28 авг 2009, 20:47
Благодарил (а): 813 раз.
Поблагодарили: 1317 раз.
Языки программирования: =>
pawn / php / python / ruby
javascript / rust

Re: [Linux] Поднятие собственного HLTV сервера

Сообщение Selpsan » 04 май 2016, 18:18

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

Код: Выделить всё
> console.log 2>&1 &

В этом случаи консоль сервера, при запуске, не открывается, но и не закрывается, а пишется в файл. )
В некой невесомости =D Закрыть можно только убив процесс.
Аватара пользователя
Selpsan
 
Сообщения: 10
Зарегистрирован: 14 мар 2016, 16:29
Благодарил (а): 4 раз.
Поблагодарили: 14 раз.
Языки программирования: Counter-Strike 1.6

Re: [Linux] Поднятие собственного HLTV сервера

Сообщение Fedcomp » 04 май 2016, 20:51

screen лучше чем запуск процессом.
А для запуска процессом обычно юзают nohup
Не помогаю в ЛС - есть форум.
Плагины тоже не пишу, на форуме достаточно хороших скриптеров.


"я ставлю зависимости потому что мне приятно" - subb98 @ 2017
Аватара пользователя
Fedcomp
Администратор
 
Сообщения: 4936
Зарегистрирован: 28 авг 2009, 20:47
Благодарил (а): 813 раз.
Поблагодарили: 1317 раз.
Языки программирования: =>
pawn / php / python / ruby
javascript / rust

Re: [Linux] Поднятие собственного HLTV сервера

Сообщение Selpsan » 04 май 2016, 23:53

Fedcomp писал(а):screen лучше чем запуск процессом.
А для запуска процессом обычно юзают nohup

Дело вкуса, или может даже привычки, не важно.
К тому же, каждый говорит по своему, что лучше, а что нет и это нормально. ))
Аватара пользователя
Selpsan
 
Сообщения: 10
Зарегистрирован: 14 мар 2016, 16:29
Благодарил (а): 4 раз.
Поблагодарили: 14 раз.
Языки программирования: Counter-Strike 1.6

Re: [Linux] Поднятие собственного HLTV сервера

Сообщение виктор » 09 фев 2024, 17:05

Такой вопрос. У меня сейчас HLTV имеет такие флаги доступа (ab) , подскажите, где менять эти флаги доступа? Хочу убрать флаг (b).
Аватара пользователя
виктор
 
Сообщения: 42
Зарегистрирован: 21 фев 2013, 19:45
Благодарил (а): 20 раз.
Поблагодарили: 0 раз.
Языки программирования: Counter-Strike 1.6

Re: [Linux] Поднятие собственного HLTV сервера

Сообщение виктор » 11 фев 2024, 09:47

виктор писал(а):Такой вопрос. У меня сейчас HLTV имеет такие флаги доступа (ab) , подскажите, где менять эти флаги доступа? Хочу убрать флаг (b).

Нашел, может кому-то пригодится. В файле gamecms.ini , квар cms_hltv_flags
Аватара пользователя
виктор
 
Сообщения: 42
Зарегистрирован: 21 фев 2013, 19:45
Благодарил (а): 20 раз.
Поблагодарили: 0 раз.
Языки программирования: Counter-Strike 1.6


Вернуться в Статьи по играм на движках GoldSrc/Source

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 3

cron