Захотелось мне поднять игровой сервер Counter-Strike в локальной сети с ботами, так в процессе настройки этого самого сервера и появилась эта статья. Нам потребуется машина с установленной на ней фряхой, у меня FreeBSD 7.4, немного времени и прямые руки :).
Подготавливаем платформу для сервера - включаем эмуляцию linux, для этого делаем следующее:
# echo 'linux_load="YES"' >> /boot/loader.conf
# kldload linux
# sysctl linux.compat.osrelease=2.6.16
# echo 'linux.compat.osrelease=2.6.16' >> /etc/sysctl.conf
# echo 'linux_enable="YES"' >> /etc/rc.conf
# /etc/rc.d/abi start
# cd /usr/ports/emulators/linux_base-f10
# make install clean
# echo 'linproc /compat/linux/proc libprocfs rw 0 0' >> /etc/fstab
# mount /compat/linux/proc
Системный параметр linux.compat.osrelease меняем, чтобы установить порт linux_base-f10 (на FreeBSD 8.0+ этого делать не требуется, там порт встает без проблем). Эта фича требуется для нормальной работы сервера контры. С портом linux_base-fc4 сервер не стал работать, выдав при этом такую ошибку:
[S_API FAIL] SteamAPI_Init() failed; unable to update local steamclient. Continuing with current version anyway.
[S_API FAIL] SteamAPI_Init() failed; unable to locate a running instance of Steam, or a local steamclient.dll.
FATAL ERROR (shutting down): Unable to initialize Steam.
Далее нам нужно создать пользователя, под которым будет работать наш сервер. В принципе сервер можно запускать и от рута, но с точки зрения безопасности это очень плохо, к тому же серверу достаточно привилегий обычного пользователя.
# mkdir /home/steam
# pw groupadd steam
# pw useradd steam -g steam -d /home/steam -s /bin/csh -c 'Conter-Strike 1.6 server'
# chown steam:steam /home/steam
# chmod 750 /home/steam
Логинемся под новым юзером или можно сделать так:
# su -l steam
Качаем с сайта следующую тулзу и даем ей права на запуск:
% wget http://steampowered.com/download/hldsupdatetool.bin
% chmod +x hldsupdatetool.bin
Запускаем и соглашаемся с лицензионным соглашением. В результате у нас появится несколько файлов, один из которых будет называться steam, он то нам и нужен. Если у него нет прав на запуск, то даем их.
Запускаем его с такими параметрами и ждем, когда закончится скачивание сервера:
% mkdir /home/steam/cs
% ./steam -command update -game cstrike -dir /home/steam/cs
Checking bootstrapper version ...
Updating Installation
Checking/Installing 'Counter-Strike Base Content' version 35
Checking/Installing 'Linux Server Engine' version 55
Checking/Installing 'Half-Life Base Content' version 12
HLDS installation up to date
Теперь нам нужно установить несколько дополнений к контре и написать под себя конфиг для сервера.
Дополнения, которые нам понадобятся (ссылки для скачивания приведены в конце статьи):
- Metamod - менеджер плагинов, позволяет динамически загружать/выгружать DLL плагины для добавления новых возможностей в движок Half-Life
- dproto - благодаря ему сервер будет принимать соединения по протоколу версии 47 и 48
- PodBot - собственно мод, который добавляет игроков в контру, управляемых компьютером
Скачиваем Metamod, распаковываем архив и правим liblist.gam, чтобы сервер подгружал библиотеку во время запуска:
% pwd
/home/steam/mods/metamod
% tar -xvf metamod-1.19-linux.tar.gz
% cd /home/steam/cs/cstrike
% mkdir -p addons/metamod/dlls && cd addons/metamod/dlls
% mv /home/steam/mods/metamod/metamod_i386.so ./
Теперь правим файл cstrike/liblist.gam, заменяем следующие строки:
gamedll "dlls\mp.dll"
gamedll_linux "dlls/cs_i386.so"
на
gamedll "addons/metamod/dlls/metamod.dll"
gamedll_linux "addons/metamod/dlls/metamod_i386.so"
Плагины описываются в файле plugins.ini, каждая строка в котором имеет следующий формат:
<platform> <filepath> [<description>]
Сам файл должен находиться в cstrike/addons/metamod. Колонки должны разделяться пробелом либо табом.
- Ключевое слово platform принимает два значения - "linux" или "win32"
- filepath - путь до динамической библиотеки. Можно указывать как релятивный путь (началом считается директория игры - cstrike), так и абсолютный. В путях могут использоваться слеши только в Unix-стиле, даже если сервер работает под Windows.
- description - это не обязательное поле, используется как внутреннее имя плагина, которое отображается в логах и в выводе сообщений на консоль. В этом поле допускается использовать знаки разделения. Двойные или одинарные кавычки не обязательны. Комментарии можно размещать только вначале строки, они могут начинаться с символов - "#" или "//".
Пример конфига cstrike/addons/metamod/plugins.ini:
//linux dlls/mybot.so
# win32 dlls/mybot-old.dll Mybot old
win32 dlls/mybot.dll Mybot current
linux /tmp/stub_mm_i386.so
win32 /tmp/stub_mm_i386.dll
linux ../dlls/trace_mm_i386.so
win32 ../dlls/trace_mm_i386.dll
linux dlls/admin_MM_i386.so
win32 dlls/admin_MM_i386.dll
Учтите, что плагины загружаются в порядке, в котором они указаны в файле. Для некоторых плагинов порядок загрузки может оказаться важным.
Файл перечитывается при каждом изменении уровня. Когда файл перечитывается, происходит следующее:
- загружаются новые плагины, если такие были добавлены
- выгружаются плагины, которые были удалены из файла. Это работает только для плагинов, которые загружены из ini файла
- любой плагин перезагружается, если его местоположение на диске было изменено.
Теперь когда с Metamod разобрались, приступим к установке и настройке других плагинов. Скачиваем и устанавливаем dproto.
% pwd
/home/steam/mods/dproto
% unrar e dproto_0_9_87.rar
% cd /home/steam/cs/cstrike/addons
% mkdir dproto && cd dproto
% mv /home/steam/mods/dproto/bin/Linux/dproto_i386.so ./
% cd /home/steam/cs/cstrike
% mv /home/steam/mods/dproto/dproto.cfg ./
Кстати, все распакованные файлы имели права на запуск, я их убрал, потому что для этих файлов они совсем не нужны и для безопасности не хорошо. Так же для этого плагина необходим бинарник сервера собранный с набором инструкций i686 (файл hlds_i686), это важно когда будете запускать сервер.
Добавим новый плагин в автозагрузку. Для этого редактируем файл cstrike/addons/metamod/plugins.ini:
linux addons/dproto/dproto_i386.so
Ну вот добрались и до установки ботов. Скачиваем, устанавливаем, настраиваем:
% pwd
/home/steam/mods/podbot
% tar -xvf podbot_full_V3B21.zip
% cd /home/steam/cs/cstrike/addons
% mv /home/steam/mods/podbot/podbot ./
% cd podbot
% find . -type f -exec chmod -x {} \;
После распаковки, файлы тоже имеют права на запуск, я убрал их.
Правим конфиг ботов - podbot.cfg. У меня он получился такой:
# Это конфигурационный файл для Pod-Bot (для HL Counter-Strike)
#
# Любая строка, начинающаяся с '#' считается комментарием
#
# Ни одна строка не должна превышать длину в 80 символов
#
# Далее перечислены допустимые команды в файле podbot.cfg:
#
# Все аргументы в квадратных скобках являются не обязательными,
# если вы их не укажите, то будет подставлено случайное значение
#
# pb add [skill [personality [team [model [name]]]]] - добавляет бота:
# с уровнем мастерства (skill) из диапазона от 0 до 100
# тактикой (personality) 1 - номальная, 2- агрессивная, 3 - защитная
# командой (team) 1- террористы, 2 - спецназ, 5 - автовыбор
# модель (model), это тоже самое что, видит игрок на экране выбора
# модели
# имя (name) это конечно же имя бота, отображаемое в игре
#
# Если вы опустите аргументы, то будет создан бот со случайным
# уровнем мастерства (между pb_minbotskil и pb_maxbotskill),
# так же бот получит случайную модель и случайное имя,
# взятое из файла "Botnames.txt". Вы можете добавить свои
# имена для ботов в этот файл.
# ! Ни в коем случае не удаляйте файл BotChat.txt, он всегда используется !
# pb fillserver [skill [personality [team [model]]]] - автоматически
# добавляет ботов на сервер, пока не будет исчерпан лимит
# боты + игроки:
# 1. pb_maxbots, если задана (значение должно быть отлично от 0)
# 2. если предыдущее значение не задано или равно 0, то в роли
# ограничителя используется значение mp_maxplayers
# Этот параметр устанавливает директорию, из которой
# загружаются (или сохраняются) вэйпоинты (относительно
# директории POD-Bot). Не используйте в пути косую черту
# и пробелы. Это не будет работать для первой созданной
# вами игры (она стартует со значением wptdefault). Но когда
# создадите во второй раз или загрузите новую карту, то
# используется, указанная вами директория.
# По умолчанию, занчение этой переменной - wptdefault
pb_wptfolder wptdefault
# Установите значение в 1, чтобы отображалось приветствие
# при старте игры
# По умолчанию: 0
pb_welcomemsgs 0
# Используйте этот параметр, чтобы вкл/выкл Speech Synthesis.
# По умолчанию: 0 (выключено).
pb_usespeech 0
# Следующие два параметра устанавливают минимальное и
# максимальное количество ботов на сервере. Эти значения
# работают вместе с pb fillserver и pb removebots. Актуальное
# количество ботов находится в указанном диапазоне, с помощью
# этих параметров.
# Ботов можно будет добавлять, пока общее количество
# игроков (ботов и людей) не исчерпает значение pb_maxbots.
# Каждый раз, при подключении нового игрока к серверу,
# будет удаляться бот с сервера до тех пор, пока количество
# ботов не достигнет pb_minbots. После того, как игроки
# отключатся от сервера, будут автоматически добавляться боты,
# пока общее число игроков на сервере (боты + люди) снова
# не исчерпает значение pb_maxbots. Значение pb_maxbots должно
# быть хотя бы на 1 меньше, чем значение maxplayers (иначе никто
# не сможет подключиться к серверу). Вы можете отключить эту
# функцию установив значение pb_maxbots в 0. Так же эта функция
# не будет работать в случае, если значение переменной
# pb_bot_quota_match больше 0 (в этом случае общее количество ботов
# будет вычисляться выражением люди * pb_bot_quota_match - конечно
# с учетом лимитов)
# По умолчанию:
# pb_bot_quota_match = 0.
# pb_minbots = 0, pb_maxbots = 16.
pb_minbots 0
pb_maxbots 16
pb_bot_quota_match 0
# С помощью следующей опции можно указать команду, в которую
# будут добавляться боты. Полезна, если вы хотите иметь одну
# команду, состоящую только из ботов.
# Возможные значения: "ANY", "T", "CT". По умолчанию: "ANY"
pb_bot_join_team "ANY"
# С помощью следующей опции можно указать модель, которую
# боты "возьмут" при добавлении. Полезна, если вы хотите, чтобы
# в одной команде имели одинакоые модели.
# Возможные значения: 1,2,3,4 - модели, 5 - по умолчанию, автовыбор
pb_skin 5
# Следующие настройки определяют частоту (в секундах) обновления
# некоторых событий в алгоритме работы ботов. Если у вас медленный
# комп, то вы можете увеличить значения для повышения
# производительности
# NOTE: This seriously affects the Bots Perception. If you have a
# fast computer you might try lowering them to get even better
# playing results.
# По умолчанию:
# pb_timer_sound = 0.5
# pb_timer_pickup = 0.3
# pb_timer_grenade = 0.5.
pb_timer_sound 0.5
pb_timer_pickup 0.3
pb_timer_grenade 0.5
# Установите этот параметр в 0, чтобы запретить ботам рисовать логотип
pb_spray 1
# Установите этот параметр в 1, чтобы боты могли ранить своих
pb_ffa 0
# Через этот параметр можно разрешить ботам стрелять через стены
# (так же эото параметр задается в файле "botskill.cfg")
# По умолчанию: 1
pb_shootthruwalls 1
# passwordkey - этот параметр нужно задать, чтобы получить доступ к
# меню ботов. Как в примере ниже, вы должны задать свой
# собственный пароль, вместо стандартного _pbadminpw:
# setinfo _pbadminpw "your_password"
# Вышеуказанная строка должна использоваться в autoexec.cfg
# на вашем компе, с которого подключаетесь или на сервере:
# в обоих случаях этот файл должен находиться в корне директорий
# cstrike/czero.
pb_passwordkey "_pbadminpw"
# Через эту переменную указывается пароль для доступа к меню
# управления ботами.
pb_password "your_password"
# Здесь указывается максимальное количество ботов, которые будут
# следовать за игроков при подаче команды "Follow Me" через радио.
# По умолчанию: 5
pb_numfollowuser 5
# Минимально возможный уровень мастерства при добавления бота
# без указания этого параметра.
# По умолчанию: 95
pb_minbotskill 95
# Максимально возможный уровень мастерства при добавления бота
# без указания этого параметра.
# По умолчанию: 100
pb_maxbotskill 100
# Здесь указывается максимально возможное количество оружия,
# которое бот может поднять за раунд.
# По умолчанию: 10.
pb_maxweaponpickup 10
# Задержка, по истечению которой боты начнут добавляться на новую
# карту.
# По умолчанию: 10.
pb_mapstartbotdelay 10
# Установите этот параметр в 1, чтобы автоматически убивать ботов,
# если не осталось ниодного живого человека.
# По умолчанию: 0.
pb_autokill 0
# Задержка, по истечению которой боты будут автоматом прибиты,
# если включена предыдущая опция.
# По умолчанию: 45.
pb_autokilldelay 45
# Укажите здесь максимально количество времени секундах, которое
# бот может находиться на одном месте.
# По умолчанию: 30.
pb_maxcamptime 30
# Включить/Выключить режим Джэйсона. Это значит, что боты не будут
# покупать оружие и будут драться только на ножах.
# По умолчанию: 0.
pb_jasonmode 0
# Здесь настраивается формат имени бота:
# 0 - не показывать уровень мастерства и префикс [POD] в имени бота;
# 1 - показывать уровень мастерсва и префикс [POD] в имени бота;
# 2 - показывать только префикс [POD] в имени бота;
# 3 - показывать только уровень мастерства в имени бота.;
# Префикс бота с агрессивной тактикой будет выглядеть так - [P*D],
# с нормальной - [POD], а с защитной - [P0D] (просто ноль, вместо символа O).
# По умолчанию: 1.
pb_detailnames 1
# С помощью следующего параметра можно задать фактор опасности, учитывая
# который боты будут выбирать свой маршрут (проще говоря - они будут учитывать
# места, в которых они были убиты в предыдущем раунде). Высокие значения
# параметра будут значить, что боты будут лучше выбирать свой путь следования
# к какому-либо месту на карте (ну типа будут выбирать более безопасные пути).
# Учтите только, что из-за высоких значений параметра нагрузка на проц возрастет.
# По умолчанию: 2000
pb_dangerfactor 2000
# Разрешить ботам чатиться.
# По умолчанию 1.
pb_chat 1
# Установите этот параметр в 1, чтобы в таблице результатов в колонке ping
# отображалась строка "BOT". Если укажите 2, то будет отображен случайный
# пинг. Если 0, то ничего не будет отображено.
# По умолчанию: 2
pb_latencybot 2
# Включите, чтобы боты использовали радиокоманды.
# По умолчанию: 1
pb_radio 1
# pb_aim_type 1-4 (по умолчанию 4)
# 1 = inhuman turns
# 2 = constant angle velocity
# 3 = botaim1
# 4 = botaim2
pb_aim_type 4
# VERTICAL (up/down) spring stiffness of the aiming system. This value affects
# the quickness of the crosshair movement, as well as the frequency of
# the resulting oscillations. (default: 13.0)
pb_aim_spring_stiffness_x 13.0
# HORIZONTAL (left/right) spring stiffness of the aiming system. This value
# affects the quickness of the crosshair movement, as well as the frequency of
# the resulting oscillations. (default: 13.0)
pb_aim_spring_stiffness_y 13.0
# VERTICAL (up/down) damping coefficient of the aiming system. This value also
# affects the quickness of the crosshair movement, and the amplitude of
# the resulting oscillations. (default: 0.22)
pb_aim_damper_coefficient_x 0.22
# HORIZONTAL (left/right) damping coefficient of the aiming system. This value
# also affects the quickness of the crosshair movement, and the amplitude of
# the resulting oscillations. (default: 0.22)
pb_aim_damper_coefficient_y 0.22
# VERTICAL (up/down) error margin of the aiming system. This value affects how
# far (in game length units) the bot will allow its crosshair to derivate from
# the ideal direction when not targeting any player in particular.
# (default: 2.0)
pb_aim_deviation_x 2.0
# HORIZONTAL (left/right) error margin of the aiming system. This value affects
# how far (in game length units) the bot will allow its crosshair to derivate
# from the ideal direction when not targeting any player in particular.
# (default: 1.0)
pb_aim_deviation_y 1.0
# Perpendicular influence of the vertical axis on a HORIZONTAL movement. This
# value affects how much (in fraction of 1) the bot will be disturbed when
# moving its crosshair on an axis by the inherent movement on the other axis.
# (default: 0.25)
pb_aim_influence_x_on_y 0.25
# Perpendicular influence of the horizontal axis on a VERTICAL movement. This
# value affects how much (in fraction of 1) the bot will be disturbed when
# moving its crosshair on an axis by the inherent movement on the other axis.
# (default: 0.17)
pb_aim_influence_y_on_x 0.17
# Maximal value in seconds after which the aiming system will re-evaluate its
# ideal direction. This affects how often a bot will attempt to correct an
# imprecise crosshair placement by moving the crosshair inside the error
# margin bounds defined by the botaim_deviation CVARs. (default: 1.2)
pb_aim_offset_delay 1.2
# Fraction of the full speed the aiming system will adopt as speed when aiming
# at nothing in particular. This affects how slow the bot will move its
# crosshair when targeting nobody, relatively to its full speed capacity.
# (default: 0.5)
pb_aim_notarget_slowdown_ratio 0.5
# Fraction of the estimated target's velocity the aiming system will rely on
# when aiming at a moving target. This affects how well the bot will be able
# to track moving targets on the fly, and whether it will have a tendancy
# to aim ahead of it or behind it. (default: 2.2)
pb_aim_target_anticipation_ratio 2.2
# Здесь можно задать, какое оружие будет запрещено для покупки ботам.
# В списке указаны номера битов, которые отвечают за нужное ограничение.
# Пистолеты
# 0 - KNIFE
# 1 - USP
# 2 - GLOCK18
# 3 - DEAGLE
# 4 - P228
# 5 - ELITE
# 6 - FIVESEVEN
# Дробовики
# 7 - M3
# 8 - XM1014
# SMG
# 9 - MP5NAVY
# 10 - TMP
# 11 - P90
# 12 - MAC10
# 13 - UMP45
# Винтовки
# 14 - AK47
# 15 - SG552
# 16 - M4A1
# 17 - GALIL
# 18 - FAMAS
# 19 - AUG
# 20 - SCOUT
# 21 - AWP
# 22 - G3SG1
# 23 - SG550
# Пулемет
# 24 - M249
# Щит
# 25 - SHIELD
pb_restrweapons "00000000000000000000000000"
# 0 - vest
# 1 - vest and helmet
# 2 - flashbang
# 3 - he grenade
# 4 - smoke grenade
# 5 - defuser
# 6 - night vision googles
# 7 - primary ammo
# 8 - secondary ammo
pb_restrequipammo "000000000"
# Следующие строки автоматически добавляют ботов на сервер,
# при создании новой игры.
pb add 100
pb add 100
pb add 100
pb add 100
pb add 100
pb add 100
pb add 100
# Как альтернативный вариант - можно раскомментировать этот параметр,
# чтобы автоматом заполнить все доступные места на сервере.
# pb fillserver 100
# Следующий параметр задает клавишу, при нажатии которой будет
# отображено меню управления ботами
bind "=" "pb menu"
Добавим новый плагин в автозагрузку. Для этого редактируем файл cstrike/addons/metamod/plugins.ini:
linux addons/podbot/podbot_mm_i386.so
На этом установка и настройка плагинов закончена, осталось только рихтануть конфиг сервера под себя и можно пробовать запускать сервер. Все параметры при запуске сервера будут браться из файла server.cfg. У меня этот файл выглядит так:
// Используйте этот файл, чтобы настроить ваш сервер.
// Этот файл читается при запуске сервера.
log on // вести лог сервера
sv_logsdir "logs" // Директория относительно директории "cstrike", в которой будут сохраняться лог файлы
sv_logbans 1 // записывать в лог баны
sv_logecho 1 // показывать информацию из логов сервера в консоль(сервера)
sv_logfile 1 // записывать логи сервера в файлы
sv_log_onefile 0 // ... в один файл
mp_logmessages 1 // писать в лог чат игроков для последующих разборок
mp_logdetail 3 // записывать в лог повреждения от: 0 - выключено; 1 - противников; 2 - своих; 3 - и от противников и от своих.
writeid // записываем SteamID игроков
writeip // записываем IP игроков
// Имя сервера
hostname "Counter-Strike 1.6 Server"
maxplayers 32
mapcyclefile "mapcycle.txt" // Файл со списком карт для автоматической смены карты по окончанию mp_timelimit или кол-ва побед/раундов.
motdfile "motd.txt" // имя файла, отображающее текст в окне перед тем, как выбрать команду
hpk_maxsize 16 // Максимальный размер файла custom.hpk (максимальный размер суммы всех игровых логотипов на сервере, в мегабайтах)
// команды управления поведением игрока на карте
mp_allowNPCs 1 // разрешить NPC на сервере
mp_allowspectators 1 // разрешить игрокам после смерти наблюдать за чужими игроками
mp_autocrosshair 0 // разрешить автоприцеливание
mp_autokick 0 // разрешить автокик за убийство игроков своей команды?
mp_autoteambalance 1 // разрешить автоматическую балансировку команд
mp_buytime 0.5 // время покупки в минутах
mp_c4timer 35 // время таймера бомбы
mp_chattime 10 // время, в течении которого игроки смогут разговаривать между собой после окончания текущей карты
mp_decals 200 // Колличество разрешённых декалей (спреи, пятна крови, пулевые отверстия)
mp_fadetoblack 0 // после смерти экран становится чёрным, не давая игроку смотреть за другими игроками в режиме спектатора
mp_falldamage 1 // урон от падения
mp_flashlight 1 // разрешить фонарик
mp_forcecamera 1 // разрешить переключения камер в режиме спектатора
mp_forcechasecam 1 // после смерти игрок может следить только за своей командой
mp_fraglimit 0 // максимальное колличество фрагов, при достижении которого определённым игроком карта сменится на следующую
mp_freezetime 2 // начальный отсчёт времени в начале каждого раунда(для покупки), в секундах
mp_footsteps 1 // слышимость звуков шагов
mp_friendlyfire 0 // возможность атаковать своих
mp_hostagepenalty 0 // кикает террориста при убийстве заданного лимита заложников
mp_limitteams 1 // максимальное количество превышения игроков одной команды над другой (от 1 и до бесконечности )
mp_mapvoteratio 0.51 // для смены карты нужно 51% голосов
mp_maxrounds 0 // максимальное количество раундов, при достижении которого игра на карте будет считаться законченной
mp_playerid 1 // контролирует информацию которую игрок видет на панели статуса: 0 все имена; 1 только имена игроков своей команды; 2 без имён
mp_spawnprotectiontime 10 // кикает игроков которые убивают членов своей команды в течении # секунд после перезапуска раунда
mp_roundtime 3 // длина раунда в минутах
mp_startmoney 800 // колличество начальных денег у игроков
mp_timelimit 20 // ограничение по времени на карту, в минутах
mp_tkpunish 0 // в следующем раунде убить того, кто убил игрока своей команды
mp_winlimit 32 // количество выигрышей одной команды при достижении которого игра на карте считается законченной
// ================================================================
// Server config
// ================================================================
sv_aim 0 // отключить автоприцеливание
sv_airaccelerate 10 // определяет ускорение игрока, когда он находится в воздухе(например падает)
sv_allowdownload 1 // разрешить загрузку с сервера(например карт)
sv_allowupload 1 // разрешить закачку файлов (например decals, спрей-логи, карты) на сервер
sv_cheats 0 // разрешить игровые читы на сервере (пример: noclip)
sv_consistency 1 // предписывает ли сервер последовательность файла для критических файлов
sv_contact "admin@info-x.org" // e-mail администратора сервера
sv_enableoldqueries 0 // разрешить поддержку старого стиля (Half-life 1) серверных запросов
sv_footsteps 1 // использовать звук шагов при передвижении игрока
sv_friction 4 // коэффициент трения в игре
sv_gravity 800 // гравитация в игре
sv_language 0 // Устанавливает язык
sv_maxspectators 8 // Максимальное количество наблюдателей
sv_maxspeed 320 // максимальная скорость игрока
sv_minupdaterate 10 // минимальное колличество обновлений(колличество пакетов) которое разрешено на сервере
sv_pausable 0 // разрешить ставить паузу во время игры
//sv_password 0 // Пароль для входа на сервер
sv_rcon_banpenalty 15 // колличество минут на которое банится игрок пытавшийся подобрать rcon-пароль к серверу
sv_rcon_maxfailures 5 // максимальное колличество попыток при наборе rcon-пароля, после истечения которых игрок будет забанен
sv_rcon_minfailures 5 // колличество попыток при наборе rcon-пароля во время заданное sv_rcon_minfailuretime, после истечения которых игрок будет забанен
sv_rcon_minfailuretime 30 // колличество секунд для определения неверной rcon-аутенфикации
sv_specaccelerate 5 // ускорение при передвижения в режиме spectator
sv_specnoclip 1 // игрок в режиме spectator может пролетать через стены и объекты
sv_specspeed 3 // скорость передвижения в режиме spectator
sv_spectalk 1 // участие спектаторов в общем чате
sv_stats 1 // собирать статистику использования процессора
sv_stepsize 18 // длинна шага в юнитах
sv_stopspeed 75 // минимальная скорость остановки на поверхности
sv_timeout 30 // если сервер не получает отклика от клиента в течении # секунд, клиент отключается от сервера
// Голосовые настройки
sv_voicecodec "voice_speex" // Кодек для общения через микрофон
sv_voiceenable 1 // Разрешить использование микрофона (1/0=Вкл/Выкл).
sv_voicequality 5 // качество голоса, от 1 до 5, чем больше, тем лучше, по умолчанию 3
sv_alltalk 0 // разрешить всем слышать переговоры друг друга по микрофону, вне зависимости от команды (даже мертвые)
// =======================================================================
// сервер для локальной сети
sv_lan 1
insecure
nomaster
// load ban files
exec listip.cfg
exec banned.cfg
// первая карта
map de_aztec
Ну вот настал тот момент, когда можно пробовать запустить сервер. Для удобства остановки/запуска сервера я настрогал следующий скрипт:
#!/bin/sh
HL_DIR="/home/steam/cs16"
HL_RUN="hlds_run"
HL_BIN="hlds_i686"
HL_PID="$HL_DIR/hlds.pid"
HL_LOG="$HL_DIR/hlds_console.log"
#PATH="$PATH:$HL_DIR"; export PATH
cd "$HL_DIR"
case "$1" in
start)
if [ -f "$HL_PID" ]; then
echo "Counter-Strike already running"
exit 1
fi
#$HL_DIR/$HL_RUN -game cstrike -pidfile "$HL_PID" -norestart > "$HL_LOG" 2>&1 &
$HL_DIR/$HL_RUN -binary "$HL_DIR/$HL_BIN" -game cstrike -pidfile "$HL_PID" -norestart > "$HL_LOG" 2>&1 &
sleep 3
if [ -f "$HL_PID" ]; then
echo "Server started..."
fi
;;
stop)
if [ ! -f "$HL_PID" ]; then
echo "Counter-Strike not running"
exit 1
fi
kill `cat "$HL_PID"`
rm -f "$HL_PID"
;;
restart)
if [ -f "$HL_PID" ]; then
kill `cat "$HL_PID"`
rm -f "$HL_PID"
echo "Server stopped..."
else
echo "Server not running..."
fi
sleep 3
$HL_DIR/$HL_RUN -binary "$HL_DIR/$HL_BIN" -game cstrike -pidfile "$HL_PID" -norestart > "$HL_LOG" 2>&1 &
sleep 3
if [ -f "$HL_PID" ]; then
echo "Server started..."
else
echo "Server error..."
fi
;;
*)
echo "hlds {start|stop|restart}"
;;
esac
exit 0
Запускаем сервер и проверяем запустился ли он:
%./hlds.sh start
Server started...
% sockstat -4 -l | grep hlds
steam hlds_i686 39502 4 udp4 *:27015 *:*
steam hlds_i686 39502 10 udp4 192.168.7.250:26900 *:*
steam hlds_i686 39497 4 udp4 *:27015 *:*
steam hlds_i686 39497 10 udp4 192.168.7.250:26900 *:*
Ну вот контра работает, теперь можно и поиграть... )
Добавить комментарий