Counter-Strike-Server

Ich beschreibe hier kurz die Konfiguration eines Counter-Strike-Servers. Ich verwende die Halflife-Server Version 3110 und den Counter-Strike-Server 1.5. Beide Dateien kann man sich direkt von www.counter-strike.de besorgen. Die Server sind jeweils über 100MB groß.

Da sich die Plugins fast wöchentlich ändern, habe ich mal einen aktuellen Snapshot meines Servers erstellt. Das Archiv ist etwa 1.6 MByte groß und vom 27.08.2003 datiert.

mkdir /usr/local/games
mv hlds_l3110.tar.bz2 cs_15.tar.bz2 /usr/local/games/
cd /usr/local/games
tar xfj hlds_l3110.tar.bz2
tar xfvj cs_15.tar.bz2
cd hlds_l
tar xfj cs-server.tar.bz2

Damit sollte nun eine lauffähige Version des Servers vorliegen. Trotzdem möchte ich noch eine Konfigurationdetails erläutern.

Der Counterstrike-Servers wird hauptsächlich in /usr/local/games/hlds_l/cstrike/server.cfg konfiguriert. Diese Datei wird bei einem Serverstart und bei jedem Mapwechsel eingelesen. Eine weitere Konfiguration findet in der listenserver.cfg statt. Diese wird zusätzlich bei einem Mapwechsel eingelesen. Der Einfachheit halber setzt man einen symbolischen Link, damit man nicht beide Dateien pflegen muss.

cd /usr/local/games/hlds_l/cstrike/
rm listenserver.cfg
ln -s server.cfg listenserver.cfg

Die meisten Optionen sollten selbsterklärend sein. Die genaue Bedeutung kann man u.a. auf www.counter-strike.de erfahren.

Der Server unterscheidet strikt zwischen Internet- und LAN-Server. In der Konfigurationsdatei dient dazu der Parameter sv_lan.

Die Datei /usr/local/games/hlds_l/cstrike/mapcycle.txt enthält die Namen der Karten, die der Server nach und nach durchlaufen soll. Hierbei ist zu beachten, dass diese Maps auch wirklich vorhanden sind. Eventuell muß die Datei den eigenen Bedürfnissen noch angepaßt werden.

Plugins

Normalerweise kann Halflife nur ein Modul laden. Dieses wird in der /usr/local/games/hlds_l/cstrike/liblist.gam durch den Parameter gamedll_linux geregelt. Metamod ist ein Plugin, dass es ermöglicht, weiter Module nachzuladen und somit die Beschränkung aufhebt.

/usr/local/games/hlds_l/cstrike/
mkdir -p addons/metamod/dlls
mv metamod_i386.so.gz addons/metamod/dlls
cd addons/metamod/dlls
gunzip metamod_i386.so.gz

Nun wird noch die liblist.gam angepasst.

gamedll_linux "addons/metamod/dlls/metamod_i386.so"

Die Benutzung weiterer Module wird in der Datei /usr/local/games/hlds_l/cstrike/addons/metamod/plugins.ini festgelegt. Hier können dann auch Administrations-Erweiterungen wie clanmod und amx aktiviert werden.

Nun wird es Zeit, den Server zu starten. Generell ist es sinnvoll, diesen nicht als root laufen zu lassen. Es sollte ein normaler Nutzer ausreichend sein.

Das Shell-Skript /usr/local/games/hlds_l/cs_server.sh startet den Server. Die Variablen IP und SV_LAN sind den Begebenheiten anzupassen. Das Skript startet den Server nach 10 Sekunden neu, falls er sich, aus welchen Gründen auch immer, beendet hat.

#!/bin/sh

HL_PATH=/usr/local/games/hlds_l/

IP=`/sbin/ifconfig eth0 | grep inet | gawk '{print $2}' | gawk -F ':' '{print $2}'`
#oder direkt festlegen
#IP="192.168.0.1"

#SV_LAN
#0=Internet Server
#1=LAN Server
SV_LAN=0

cd $HL_PATH
export LD_LIBRARY_PATH="$HL_PATH:$LD_LIBRARY_PATH"

i=0

while [ $i -eq 0 ]
do
  ./hlds -game cstrike +maxplayers 16 +sv_lan $SV_LAN +map de_dust +IP $IP
  sleep 10
done