Pull to refresh

«Войны в свободное время 2» или CS сервер + статистика в офисе

Reading time7 min
Views11K
Доброго времени суток Хабра-сообщество!

После долгих часов игры в BattleField 2, протяженных поездок на танках и джипах, сумасшедших падений на вертолетах и пары сотни метров собранной статистики по всему этому веселью, пришла пора задуматься о террористической обстановке на игровом фронте. Как же там заложники поживают? А не засыпало ли пылью старый, добрый de_dust2?

Сегодня я расскажу вам как установить и настроить игровой сервер Counter-Strike 1.6 и прикрутить к нему локальную статистику игроков. Данная статья является второй из серии «Войны в свободное время».
Предыдущие статьи:
BattleField 2 Ranked Server



Сервер:
НР ProLiant ML350 G5
Intel Xeon 5160
8 Gb RAM ECC
OS Ubuntu 12.04 LTS (GNU/Linux 3.2.0-23-generic x86_64)

В прошлой статье я описывал где храню файлы для серверов, но все равно повторюсь.
Для своего удобства, все что касается серверной части я храню в отдельном каталоге в корне системы.
sudo mkdir /server
cd /server
sudo mkdir cs

Вот в папке cs и будут развиваться наши приключения.

Установка сервера Web,PHP,MySQL

Итак, приступим к установке:
sudo apt-get install apache2 apache2-mpm-prefork apache2-utils apache2-suexec libapache-asp-perl php5 php5-mysql libapache2-mod-php5 php-pear mysql-server mysql-client libmysqlclient15-dev

*Во время установки, сервер MySQL попросит вас ввести пароль.

Настроим виртуальные хосты:

На данный момент у нас должен получится вполне рабочий Web сервер. Проверяем путем перехода на IP адрес сервера через любой браузер с компьютера в вашей локальной сети. На экране, если все правильно работает, появится надпись «It, works!».

Изменяем фаил конфигурации виртуальных хостов:
sudo nano /etc/apache2/sites-available/default

Стираем содержимое файла и вставляем наш новый виртуальный хост:
<VirtualHost ВАШ.IP.АДРЕС:80>
        ServerAdmin somemail@some.ru
        ServerName ВАШ.IP.АДРЕС
        ServerAlias ВАШ.IP.АДРЕС
        DocumentRoot /server/site
        ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
</VirtualHost>

Теперь папка где лежит наш сайт будет /server/site.
Все готово! приступаем к установке сервера Counter-Strike 1.6!

Установка и настройка Counter-Strike 1.6 сервера


И так, для начала нам необходимо скачать HldsUpdateTool с сайта www.steampowered.com (скачивать можно в любую темповую директорию)
sudo wget http://www.steampowered.com/download/hldsupdatetool.bin

Далее устанавливаем права и запускаем hldsupdatetool.bin (На данном этапе мы установим Steam)
sudo chmod +x hldsupdatetool.bin
sudo ./hldsupdatetool.bin

Через несколько минут (или секунд, зависит от вашего интернет подключения) можно приступать к установке серверной части Counter-Strike 1.6. У нас в папке появился новый файл Steam, с ним то мы и будем работать.
Скачиваем серверную часть:
./steam -command update -game valve -dir /server/cs

Параметр dir определяет куда будет установлен сервер. Далее докачиваем файлы для Counter-Strike сервера.
./steam -command update -game cstrike -dir /server/cs

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

Установка metamod,amxmodx,dproto

Для корректной работы статисти (да и вообще) нам необходимы моды metamod,amxmodx,dproto.
С начала я скачал архивы с модами, распаковал и залил на сервер через FTP.
Ссылки на скачивание:
MetaMod-1.19 Linux
AmxModX Base linux
AmxModX CS Addon Linux
DProto 0.9.179
Так, надеюсь все скачали… Я 2 дня потратил на поиск совместимых версий =) Проблема была в том что при поиске в google выводились результаты с ссылками на посты годов 2007-2009… Взял лопату, ковырял sourceforge.net. Ну вообщем вам все готовое уже =)

Переходим к установке:
Создаем в папке cstrike под-директории «addons/metamod/dlls/»
cd /server/cs/cstrike
sudo mkdir addons
cd addons
sudo mkdir metamod
cd metamod
sudo mkdir dlls

Копируем фаил metamod_i386.so в /server/cs/cstrike/addons/metamod/dlls/
Создаем фаил plugins.ini в папке /server/cs/cstrike/addons/metamod
sudo nano /server/cs/cstrike/addons/metamod/plugins.ini

Редактируем фаил /server/cs/cstrike/liblist.gam
sudo nano /server/cs/cstrike/liblist.gam

=======================================================

gamedll_linux "addons/metamod/dlls/metamod_i386.so" //Заменяем то что было.

Установка MetaMod завершена. Продолжаем, на подходе AmxModX.
Копируем папку amxmodx (необходимо объединить 2 архива скачанных ранее) в /server/cs/cstrike/addons.
Редактируем /server/cs/cstrike/addons/metamod/plugins.ini
sudo nano /server/cs/cstrike/addons/metamod/plugins.ini

========================================================
linux addons/amxmodx/dlls/amxmodx_mm_i386.so  //Добавляем данную запись

Так-с, закончили. Более подробно о том как настроить Amx можно почитать тут.

Установка dproto. Данный аддон необходим нам для того, чтобы игроки которые используют не лицензионную версию Counter-Strike могли без беспрепятственно играть на нашем сервере.
Создаем папку dproto в /server/cs/cstrike/addons/
cd /server/cs/cstrike/addons/
sudo mkdir dproto

Копируем файл dproto_i386.so из архива который качали ранее в папку /server/cs/cstrike/addons/dproto
Файл конфигурации dproto.cfg копируем в /server/cs/cstrike
Редактируем /server/cs/cstrike/addons/metamod/plugins.ini
sudo nano /server/cs/cstrike/addons/metamod/plugins.ini

========================================================
linux addons/amxmodx/dlls/amxmodx_mm_i386.so 
linux addons/dproto/dproto_i386.so  //Добавляем данную запись


Все. Сейчас проверим запускается ли сервер, а так же установились ли наши аддоны.
Запускаем сервер:
./hlds_run -binary ./hlds_i686 -nomaster -game cstrike -port 27015 +ip ВАШ.IP.АДРЕС -insecure

Запустился? Если да то проверяем командой meta list список запущенных аддонов.
meta list
Currently loaded plugins:
                      description      stat pend  file              vers      src   load  unlod
                 [ 1] dproto           RUN   -    dproto_i386.so    v0.4.8    ini   Start Never
                 [ 2] AMX Mod X        RUN   -    amxmodx_mm_i386.  v1.8.1.3  ini   Start ANY
                2 plugins, 2 running

Если получили что-то на подобии этого (значение STAT должно стоять RUN для наших установленных аддонов), то все нормально. Если вообще ничего не отобразилось, то проблема кроется в самом начале, проверяйте установку Metamod.

После завершения установки модов, переходим к установке статистики.

Установка Статистики Counter-Strike 1.6 (PsychoStats)


Вот тут у нас первые проблемы =) нормальной статистики на Counter-Strike 1.6, а главное современной, найти не удалось. зато есть ранее популярный проект PsychoStats, с последней версией 3.2 (на сколько я понял). Сайт проекта давно уже ушел в небытие… Пришлось искать файл psychostats_nightly.tar.gz размером более 5.3 метра. Гугл помог и у меня оказался в руках архив с perl скриптом и папкой upload, содержащей файлы для заливки на Web сервер. то что надо.

Перл, перл… Узнал, что для работы статистики необходим перл и еще пара модулей. Не надо мучится искать как найти через apt недостающие модули и так далее. Устанавливаем все так:
sudo apt-get install perl libconfig-inifiles-perl libdbd-mysql-perlsudo

Готово.

Заранее создадим базу данных для нашей статистики. Я это делал через NaviCat.

Зальем файлы из папки upload на наш Web-сервер. и приступим к установке.
Запускаем браузер и переходим по такого рода ссылке - httр://вашсайт/install/index.php
Установка не должна вызвать у вас сложностей, так как там все описано достаточно хорошо. Единственное перед концом почти необходимо выбрать тип игры (Half-Life => Counter-Strike) и указать папку с log файлами (У меня это /server/cs/cstrike/logs).
В 99% случаев у вас появится гора ошибок в шапке сайта. Deprecated… о том как от них избавится я расскажу позже.

Копируем скрипт stats.pl и все что там еще было с ним в папку /server/cs/cstrike
И переходим к завершающей стадии… Редактирование конфигов.

Редактируем конфигурационные файлы

Первым у нас будет stats.cfg
sudo nano /server/cs/cstrike/stats.cfg

======================================================
dbtype = mysql                      // Тип базы данных
dbhost = localhost                // Хост базы
dbport =  3306                       // Порт базы
dbname = psychostats3_1  // Название базы
dbuser = ps3                          // Пользователь БД
dbpass =                                 // Пароль к БД
dbtblprefix = ps_                    //Если будете использовать одну базу для нескольких серверов.. меняйте префикс таблицы.

Теперь server.cfg… Настраивать можно как вам угодно. Но, есть одно НО. Для работы статистики должны быть такие строки:
sudo nano /server/cs/cstrike/server.cfg

==========================================
log on
sv_logbans 1
sv_logecho 1
sv_logfile 1
sv_log_onefile 0
mp_logdetail 3
mp_logmessages 1

На очереди AmxModX. Необходимо проверить включены ли модули сбора статистики:
sudo nano /server/cs/cstrike/addon/amxmodx/configs/plugins.ini

==========================================================
//Проверяем нет ли ; напротив данных модулей:
admin.amxx
statscfg.amxx
statsx.amxx
stats_logging.amxx

На этом все.

Сбор статистики ведет скрипт stats.pl Чтобы его каждый раз не запускать я добавил его в cron. Запускаться он будет раз в 10 минут.
sudo crontab -e

===================================================
*/10 * * * * /server/cs/cstrike/stats.pl

Вздохнули… проверяем сервер.
./hlds_run -binary ./hlds_i686 -nomaster -game cstrike -port 27015 +ip ВАШ.IP.АДРЕС -insecure

Запустился — выдохнули. Теперь статистика будет отображаться на вашем сайте =)

Неполадки и их решения, примочки

Первое что попалось на глаза, это огромное количество ошибок выпадающих на сайте.
Половина лечится изменением php.ini на вашем сервере.
Редактируем его, находим почти в конце переменную mbstring.func_overload и выставляем ей числовое значение 7. Так же не забудьте снять; в начале переменной.

Вторая половина, это ошибки в коде. В тексте ошибки указывается в каком файле и на какой строке ошибка.
Переходим в фаил, находим строку и удаляем знак &. Чаще всего он встречается в таком виде
Some fignya =& new Some;
//Должно получится
Some fignya = new Some;

Обращайте внимание на версии аддонов которые устанавливаете. В данной статье я привел ссылки на совместимые версии, но в интернете сложно найти что-то подходящее.

На этом все =) по идее на данный момент вы обладатель рабочего сервера Counter-Strike с статистикой игроков и прочим.
Если у вас возникнут вопросы или неполадки, пишите мне я вам помогу чем смогу.
Спасибо за внимание.

UPD1:
Спасибо пользователю blackp за подсказку.
Цитирую:
«На x64 debian-based системах необходимо установить lib32gcc1 и всё, что пакет потянет. Иначе можно получить в самом начале:
hldsupdatetool.bin no such file or directory»
Tags:
Hubs:
Total votes 57: ↑32 and ↓25+7
Comments26

Articles