Итак, первым делом давайте подготовим нашу систему:
1. первым делом необходимо пересобрать ядро со следующей опцией
Код: Выделить всё
options DEVICE_POLLING
options HZ=1000
http://www.lissyara.su/?id=1156
http://www.opennet.ru/base/dev/int_polling.txt.html
http://info.iet.unipi.it/~luigi/polling/
2. так как используемый нами сервер написан под линукс, то необходимо поставить линукс-эмулятор (надеюсь про то, что перед этим необходимо обновить дерево портов, говорить не надо ? = ) )
Код: Выделить всё
# cd /usr/ports/emulators/linux_base-fc4/
# make && make install && make clean
Код: Выделить всё
# echo "linux_load="yes"">> /boot/loader.conf
# echo "linprocfs_load="yes"" >> /boot/loader.conf
# echo "linux_enable="YES"" >> /etc/rc.conf
# echo "kern.fallback_elf_brand=3" >> /etc/sysctl.conf
# echo "kern.ipc.maxsockbuf=524288" >> /etc/sysctl.conf
# echo "linprocfs /compat/linux/proc linprocfs rw 0 0" >> /etc/fstab
Код: Выделить всё
# adduser css_server
Так, система готова и можно сказать, что половину дела мы сделали. Теперь логинимся под пользователем, которого мы завели и выполняем следующее:
Код: Выделить всё
# cd ~ && mkdir .steam
# wget http://storefront.steampowered.com/download/hldsupdatetool.bin
# ./hldsupdatetool.bin
тут отвечаем, что да, мы согласны с условиями распростронения данного по и т.д. и т.п.
# ./steam
# ./steam -command update -game "Counter-Strike Source" -dir .
Код: Выделить всё
// Server name
hostname “Nazvanie vashego servera”
rcon_password “vash_rcon_parol”
// Setting’s
mp_dynamicpricing “1?
mp_allowspectators “1?
mp_autocrosshair “0?
mp_autokick “1?
mp_autoteambalance “1?
mp_buytime “25?
mp_c4timer “35?
mp_chattime “5?
mp_decals “200?
mp_fadetoblack “0?
mp_falldamage “1?
mp_flashlight “1?
mp_fraglimit “”
mp_freezetime “2?
mp_footsteps “1?
mp_friendlyfire “1?
mp_hostagepenalty “0?
mp_limitteams “0?
mp_maxrounds “0?
mp_playerid “1?
mp_spawnprotectiontime “0?
mp_roundtime “3?
mp_startmoney “800?
mp_teamplay “0?
mp_timelimit “20?
mp_tkpunish “1?
mp_weaponstay “0?
mp_winlimit “0?
sv_pure “2?
sv_lan “0?
sv_unlag “1?
sv_maxunlag “0.5?
sv_voiceenable “1?
sv_minrate “20000?
sv_maxrate “30000?
sv_mincmdrate “66?
sv_maxcmdrate “66?
sv_minupdaterate “66?
sv_maxupdaterate “66?
sv_client_predict “1?
sv_client_interpolate “1?
sv_client_min_interp_ratio “1?
sv_client_max_interp_ratio “1?
sv_client_cmdrate_difference “30?
sv_consistency “1?
sv_pausable “0?
sv_airaccelerate “10?
sv_accelerate “5?
sv_allowdownload “1?
sv_allowupload “1?
sv_downloadurl “”
sv_password
sv_alltalk “0?
sv_cheats “0?
sv_consistency “1?
sv_enableoldqueries “1?
sv_footsteps “1?
sv_friction “4?
sv_gravity “800?
sv_maxspeed “320?
sv_rcon_banpenalty “15?
sv_rcon_maxfailures “5?
sv_rcon_minfailures “5?
sv_rcon_minfailuretime “30?
sv_specaccelerate “3?
sv_specnoclip “1?
sv_specspeed “3?
sv_stats “0?
sv_stepsize “18?
sv_stopspeed “75?
sv_timeout “120?
sv_voiceenable “1?
cl_allowupload “1?
// End Setting’s
// Client cvar’s
cl_cmdrate “66?
cl_updaterate “66?
rate “25000?
// Other
breakable_multiplayer “1?
decalfrequency “10?
host_framerate “0?
// Logs
log “on”
mp_logdetail “1?
sv_logfile “1?
sv_logecho “1?
sv_logbans “1?
// Exec radnome cfg’s
exec mani_server.cfg
exec banned_ip.cfg
exec banned_user.cfg
exec mani_quake_sounds.cfg
// Write ip and id all players in your server
writeid
writeip
Код: Выделить всё
# cd ~css_server
# ./srcds_run -game cstrike +ip "ип адрес сервера без кавычек" -port 27015 +map de_dust -tickrate 66 +log on +maxplayers 32 +sv_lan 0 +exec server.cfg -norestart -secure > css_server.log 2>&1 &
Код: Выделить всё
games1# sockstat | grep 27015
css_serversrcds_amd 888 5 udp4 84.47.161.15:27015 *:*
css_serversrcds_amd 888 8 tcp4 84.47.161.15:27015 *:*
css_serversrcds_amd 887 5 udp4 84.47.161.15:27015 *:*
css_serversrcds_amd 887 8 tcp4 84.47.161.15:27015 *:*
css_serversrcds_amd 869 5 udp4 84.47.161.15:27015 *:*
css_serversrcds_amd 869 8 tcp4 84.47.161.15:27015 *:*
Код: Выделить всё
games1# ps -aux | grep ./srcds_
css_server 869 5.1 18.8 265228 191256 p0- S Tue08PM 5018:19.94 ./srcds_amd -game cstrike +ip 84.47.161.15 -port 27015 +map de_dust2 -tickrate 66 +log on +maxplayers 26 +sv_lan
css_server 887 0.0 18.8 265228 191256 p0- S Tue08PM 0:02.32 ./srcds_amd -game cstrike +ip 84.47.161.15 -port 27015 +map de_dust2 -tickrate 66 +log on +maxplayers 26 +sv_lan
css_server 888 0.0 18.8 265228 191256 p0- S Tue08PM 43:22.87 ./srcds_amd -game cstrike +ip 84.47.161.15 -port 27015 +map de_dust2 -tickrate 66 +log on +maxplayers 26 +sv_lan
* -game cstrike - запускаемый мод
* +ip - тут все понятно - указываем серверу на каком ip адресе он у нас будет работать. Можно указать +ip 0.0.0.0 и тогда к серверу можно будет подключится по всем имеющимся
* -port - указываем порт на котором будет работать сервер, причем если данный порт будет занят, то сервер будет работать на следующем свободном порту
* +map - указываем какая карта будет загружаться при старте сервера
* -tickrate - указываем с каким тикрэйтом будет работать сервер, доступные варианты - 33, 66 и 100. Чем больше тикрэйт сервера, тем больше нагрузка на процессор. сразу скажу, что под тикрей 100 надо очень не слабый сервер.
* +log - включить или выключить запись логов на сервере. Доступные варианты on и off
* +maxplayers - указываем сколько максимально может подключиться игроков. максимальное значение 32, хотя существуют патчи расширяющие данный параметр (лично играл на мясном сервере на 80 человек = ) )
* +sv_lan - указываем тип работы сервера. При значение 1 будет доступен только людям в локальной сети, при 0 ТОЛЬКО людям из интернета
* +exec - команда позволяет подключать различные конфиг файлы
* -norestart - запрещаем серверу перезапускаться при падении
* -secure - указываем серверу использовать античит VAC
Для того чтобы на сервер пускало как лицензионных клиентов, так и пиратки aka nosteam версии необходимо проптчить 2 файла специальной программкой написанной тов. vityan666
Выполняем следующие действия из под пользователя, из-под которого работает на сервер
Код: Выделить всё
$ cd ~/bin
если у вас сервер работает под 64 битной платформой
$ wget http://www.bsdlife.ru/files/vup/vup_amd64
если i386, то
$ wget http://www.bsdlife.ru/files/vup/vup_i386
Код: Выделить всё
$ ./vup_i386 ~/bin/steamclient_i486.so
Welcome to ViTYAN’s GameServer Universal Patch(VUP) v2.0 FiNAL
Currently supported game types: id Software Enemy Territory - Quake Wars,
Valve Source 2007 Original (Protocols 9-14)(TF2/DOD:S),
Valve Source 2007 U1 (Protocol 36)(L4D),
Valve Source(HL2:DM/CSS),
Valve GoldSrc Classic Listen Engines,
Valve SteamWorks GoldSrc(CS 1.6/TFC/OP/DOD1/HL1/HL:DM),
Valve SteamClient,SteamUI,GameUI and Server Libs,
Infinity Ward Call Of Duty 4,
Epic Games Unreal Tournament 3,
eSTEAMATiON Preparation mode.
Release date: 16.11.2008 04:03 AM
Know who holds the power…
Preparing to handle 1 file… Output to different destinations(-o) is DISABLED
Loading file steamclient_i486.so into memory… SUCCEEDED
Analyzing file format … SUCCEEDED
Destination Operating System: Unix-Like Operating System
Trying to detect game type from binary:
====================================== VUP ===================================
Valve SteamClient Library (LINUX Build)
===================================== ViTYAN =================================
Looking for SteamStartValidatingUserIDTicket validation errors logging …
Found at 0?360EC3. Patching … Done
Saving changes to file… Done
FILE #1/1 HAS BEEN PATCHED SUCCESSFULLY
ALL FILES HAVE BEEN SUCCESSFULLY PATCHED. HAVE FUN!!!
Код: Выделить всё
$ ./vup_i386 ~/bin/engine_i486.so
ВНИМАНИЕ !!! При обновлениях сервера необходимо заного патчить данные сошки.
Теперь перезапускаем сервер и наслаждаемся = )