News Gästebuch Forum Mitglied werden FAQ Howtos Desktops C BOfH Lamer & DAUs Quote DB #linux Quotes Was und warum ? Downloads Wallpapers Subdomain Links TU Sidebar Das Team Über die Site Kontakt
Kommentar
CS Server unter Linux

Grundsätzliches
In diesem Tutorial möchte ich prinzipiell nur auf die Installation des Half-life dedicated Servers für Linux eingehen und keine grundlegenden Linux-Kenntnisse vermitteln. Der Rechner sollte also schon komplett funktionstüchtig sein und vor allem ein fertig konfiguriertes Netzwerk vorweisen. Die Beschreibung bezieht sich nur auf die Kommandozeile, also die installierte Shell, in den meisten Fällen sollte das die "bash" sein, für andere Shells ergibt sich aber meines Wissens kein Unterschied. Eine grafisch gestützte Installation wie unter Windows sollte man nicht erwarten.
Auch möchte ich hier nicht auf die Vor- und Nachteile einzelner Linux-Distributionen eingehen, jeder sollte diejenige nutzen, die ihm von der Bedienung und Dokumentation am sympathischsten erscheint.

Installation
Zu Beginn einige Sicherheitsfragen. Prinzipiell sollte man unter Linux Programme nur dann als "root" starten, wenn dies zwingend notwenig ist. Einen Half-life Server kann man auch als "normaler" user laufen lassen, unter Umständen haben root-Prozesse aber eine höhere Priorität im System.
Außerdem gab es zumindest bei den diversen Quake-Servern für Linux einige Angriffe, die entweder das System von aussen lahm legen konnten oder einem lokalen Benutzer root-Rechte zusichern, beides ist natürlich nicht gewünscht ...

Gehen wir der Einfachheit halber trotzdem mal die Schritte als root durch, die Dateirechte können auch später noch geändert werden.
Zuerst brauchen wir die beiden Pakete des Half-life Servers und für Counter-Strike, aktuell sind das hlds_l_3108_full.tar.gz und cs_13_full.tar.gz. - diese beiden Dateien sollten sich schon auf dem Linux System befinden.
Als Installationsverzeichnis wählen wir /usr/local/halflife, dort muss allerdings genügend Platz vorhanden sein, bei mir braucht eine Installation über 300 MB - also nicht zu knapp bemessen. In dieses Verzeichnis kopieren/verschieben wir jetzt die beiden oben genannten Dateien.
Die folgenden Schritte entpacken den kompletten Half-life Server und das Counter-Strike MOD in die jeweiligen Verzeichnisse:

cd /usr/local/halflife
tar xvzf hlds_l_3108_full.tar.gz
cd hlds_l
tar xvzf ../cs_13_full.tar.gz

Der Linux HL-Server braucht die Datei namens libhlwon.so in einem Verzeichnis, daß das Linux System standardmäßig nach sogenannten dynamischen Libraries durchsucht - um dies sicherzustellen, kann man entweder dem System sagen, wo es diese Dateien suchen soll, dazu muß man das HL-Verzeichnis /usr/local/halflife/hlds_l in die Datei /etc/ld.so.conf aufnehmen; oder aber, man kopiert die libhlwon.so einfach in ein Verzeichnis, welches schon vom System durchsucht wird. Dafür bietet sich z.B. /usr/local/lib an.
Anschließend muß auf jeden Fall root ldconfig ausführen, damit das System die WON-Library laden kann. Nach den beiden oben genannten Schritten ist diese Datei dem System auch nach einem reboot noch bekannt.

Erster Test
Jetzt der erste Test des Systems. Dazu unterscheiden wir zwei Fälle:

1.) Der Server im Internet
2.) Der Server im LAN

zu 1.) Server hat eine gültige IP im Internet

Wir starten den CS-Server mit den folgenden Befehlen:

cd /usr/local/halflife/hlds_l
./hlds_run -game cstrike +maxplayers 12 +map de_dust


Dies startet einen Counter-Strike Server für maximal 12 Spieler mit der map de_dust. Falls alles geklappt hat, sollte irgendwann

WON Auth Server
 ...

erscheinen, d.h. der Server hat sich beim WON Masterserver angemeldet und ist erreichbar. Jetzt kann man auf dieser Konsole mit dem Befehl status die Daten des Servers anzeigen lassen - in unserem Beispielfall sollte dort folgendes Erscheinen:

hostname: Counterstrike 1.3
version : 45/4.1.0.8 1789
tcp/ip  : 111.222.33.44:27015
map     : de_dust at: 0 x, 0 y, 0 z
 players: 0 active (12 max)

zu 2.) Der Server steht im LAN mit internen IP

Wir starten den CS-Server mit den folgenden Befehlen:

cd /usr/local/halflife/hlds_l
./hlds_run -game cstrike -nomaster +sv_lan 1 +maxplayers 12 +map de_dust


Dies startet einen Counter-Strike Server für maximal 12 Spieler mit der map de_dust. Dabei wird keine Verbindung zu einem Masterserver aufgebaut, der Server erscheint auch nicht in der WON-Liste. Falls alles geklappt hat, sollte irgendwann

Auth Server
 ...

erscheinen, d.h. der Server ist im internen Netzwerk erreichbar. Jetzt kann man auf dieser Konsole mit dem Befehl status die Daten des Servers anzeigen lassen - in unserem Beispielfall sollte dort folgendes Erscheinen:

hostname: Counterstrike 1.3
version : 45/4.1.0.8 1789
tcp/ip  : 192.168.1.1:27015
map     : de_dust at: 0 x, 0 y, 0 z
 players: 0 active (12 max)

Das Feintuning
Wenn der Server einmal läuft, kann man ihn mit dem Befehl quit auf der Serverkonsole wieder beenden. Einstellungen wie der Hostname des Servers und Befehle zum Spielverhalten finden sich in der Datei server.cfg. Hier eine kommentierte Beispieldatei:

// automatisches Zielen deaktiviert
sv_aim "0"
// Cheats deaktiviert
sv_cheats "0"
// Clients dürfen das Spiel nicht pausieren
pausable "0"
// hostname des Server
hostname "Tutorial Testserver Counter-Strike Beta 6.1"
// maximale Geschwindigkeit der Spieler
sv_maxspeed "320"
// Dauer einer map in Minuten
mp_timelimit "35"
// FF ist an!
mp_friendlyfire "1"
// Granaten verletzen eigenes Team
mp_friendly_grenade_damage "1"
// lowlag Eintrag für Internet-Server, für LAN weglassen
mp_lowlag "1"
// Dauer einer Runde in Minuten
mp_roundtime "5"
// Dauer in Sekunden bis C4 explodiert
mp_c4timer "45"
// Maximaler ein Spieler Überzahl
mp_limitteams "1"
// kein Autokick für "idle Clients"
mp_autokick "0"
// Chasecam deaktiviert - freie Bewegung durch die Map
mp_chasecam "0"
// Logfiles werden geschrieben ("+log on" in der Kommandozeile)
mp_logfile "1"
// Teams werden automatisch angeglichen bei Überzahl
mp_autoteambalance "1"
// Taschenlampe darf benutzt werden
mp_flashlight "1"
// Stillstand zu Beginn einer Runde in Sekunden
mp_freezetime "6"
// Evtl. vergebenes Passwort für den Server
sv_password "private"
// Teamkills werden mit Aussetzen bestraft
mp_tkpunish "1"
// Bei 2 Hostagekills vom Server kicken
mp_hostagepenalty "2"
// WICHTIG! rcon Passwort für Fernadministrierung
rcon_password "XXX"


Weitere Optionen zu Halflife allgemein und Counter-Strike finden sich hier.

Maps
Die map, mit der der Server starten soll, muß schon beim starten als Parameter übergeben werden, z.B. "+map de_dust", um den Server mit de_dust zu starten. Soll diese map nicht rund um die Uhr gespielt werden, benötigt man eine Textdatei mapcycle.txt, in der die zu spielenden maps aufgelistet sind. Solch eine Datei sollte bereits im cstrike-Verzeichnis vorhanden sein, diese Datei könnte man im Prinzip unverändert übernehmen.
In den mapcycle dürfen nur maps aufgenommen werden, die sich im Verzeichnis cstrike/maps befinden, allerdings ohne die Endung ".bsp". Eine Beispieldatei wäre:

de_dust
as_oilrig
cs_militia
de_nuke
es_jail
cs_siege


Für Anfänger sei noch bemerkt, in cs_ maps müssen die CTs Geiseln befreien, die Terrors sollten das verhindern, sonst geht die Runde an die CTs. In as_ maps bewachen die CTs einen VIP zu einem Fluchtpunkt, die Terroristen müssen diesen VIP töten, sonst gewinnen die CTs. Wenn es die Terroristen in de_ maps schaffen, eine Bombe an einer bestimmten Stelle zu legen, ohne daß die CTs diese entschärfen können, dann ist die Runde gewonnen.

rcon Befehle
Mittels der rcon-Befehle kann der Serveradministrator während des Spiels Einstellungen am Server ändern, oder unerwünschte Spieler vom Server werfen oder sogar bannen. Dazu benötigt man das in der server.cfg vergebene rcon Passwort.
Dieses gibt man während des Spiels in der Konsole mittels rcon_password XXX ein, jetzt kann man alle Befehle, die man auf der Serverkonsole ausführen kann, mittels rcon Befehl eingeben. Diese Werte werden allerdings teilweise nach einem mapchange von den Standardwerten in der server.cfg überschrieben, falls sie fest bleiben sollen, müssen sie also dort auch noch geändert werden.

Kicken und Bannen
Manchmal emppfindet man als Serveradmin das dringende Bedürfnis, bestimmte Spieler vom Server zu werfen, weil sie sich entweder nicht benehmen können, Teamkills machen oder rechts-/linksradikale Dinge von sich geben.
Um einen Spieler vom Server zu kicken, genügt ein rcon kick Blaster um den Spieler mit dem Namen Blaster vom Server zu kicken. Dieser Spieler könnte danach sofort wieder auf den Server kommen, er ist nicht gesperrt. Da einige Spieler aber gerne kompliziertere Namen als "Blaster" haben, bekommt man mit rcon users eine Liste der Spieler auf dem Server samt einer UserID und einer sogenannten UniqueID, die für jeden Spieler einzigartig sein sollte und sich u.a. aus dem CD-Key zusammensetzt:

userid : uniqueid : name
------ : -------- : ----
1086   : 15815812 : Blaster
1063   : 1457894  : Player
1071   : 16484512 : Mastakillah
1011   : 24687875 : [DER]Depp
1044   : 54787534 : Bernd Salami
1039   : 1465766  : da lamer

6 users


Um jetzt also den Spieler Player vom Server zu kicken, gibt es zwei Möglichkeiten: rcon kick Player oder rcon kick # 1063. Die zweite Methode ist die sicherere, da z.B. Leerzeichen in Spielernamen nicht eingegeben werden können.

Wenn ein Spieler aber permanent nervt und man ihn nicht mehr auf dem Server spielen lassen möchte, dann muß man ihn bannen. Dazu benutzt man die UniqueID, die zwar umständlicher einzugeben ist, dafür aber für jeden Spieler unterschiedlich sein sollte, d.h. man bannt nicht den Falschen: rcon banid 20 15815812 kick verbannt den Spieler "Blaster" für 20 Minuten vom Server und kickt ihn direkt, danach kann er wieder auf dem Server spielen - wenn ein Spieler mit einem dauerhaften Bann belegt werden soll, muß der Wert, der hier im Beispiel auf "20" steht, auf "0" gesetzt werden.
Um diese Banns auch beim nächsten Start des Servers aufrecht zu erhalten, fügt man noch ein rcon writeid hinzu, dieser Befehl schreibt eine Datei namens banned.cfg, in der die Banns einzeln aufgeführt sind. Wenn man jetzt noch die Zeile exec banned.cfg ans Ende der server.cfg anfügt, dann sind die Banns nach dem Neustart wieder aktiv.

Falls sich ein Spieler schuldig bekennt und man ihn wieder spielen lassen möchte, genügt der Befehl rcon removeid uniqueID - zusätzlich sollte der Eintrag noch aus der banned.cfg entfernt werden. Die gebannten IDs bekommt man mit rcon listid heraus, wenn man nach IP Adressen gebannt hat geht das mit den Befehlen listip und removeip.

Übersicht der Commands (für Configfile, rcon und Serverkonsole)

Command Beschreibung
max_shells 50 Anzahl der maximal angezeigten Shells
max_smokepuffs 50 Anzahl der maximal angezeigten Rauchwolken
mp_autokick 1 kickt Teamkiller und Clients, die "idle" sind ('1'=an, '0'=aus - kickt auch Spieler, die kurz per Taskswitch HL/CS verlassen
mp_autoteambalance 1 Regelt automatisch die Anzahl der Spieler pro Team durch "Zwang-Wechsel" ('1'=an, '0'=aus)
mp_buytime 0.5 Stellt die Zeit in Minuten ein, die der Spieler zum kaufen hat
mp_c4timer 45 Explosionstimer der C4-Bombe in Sekunden (Werte zwischen '15' und '90' Sekunden)
mp_chasecam 0 Beschränkt tote Spieler auf den Ghostmode, keine freie Bewegung im Level ('1'=an, '0'=aus)
mp_fadetoblack 0 Liefert bei toten Spielern einen schwarzen Bildschirm - gut gegen "Ghostspying"('1'=an, '0'=aus)
mp_flashlight 1 Regelt, ob der Client die Taschenlampe benutzen kann, ('1'=an, '0'=aus)
mp_footsteps 1 Regelt die Schrittgeräusche ('1'=an, '0'=aus)
mp_forcechasecam 0/1/2 0: aus, 1: nur Teammitglieder in der chasecam, 2: Spieler bleibt, wo er stirbt
mp_freezetime 6 Setzt die Zeit (in Sekunden), in der der Spieler nicht laufen kann zu Beginn der Runde. '0' schaltet die "Freeze-time" aus
mp_friendly_grenade_damage 1 Richtet eine Granate beim eigenen Team Schaden an? ('1'=an, '0'=aus)
mp_friendlyfire 1 Richtet eine Waffe Schaden im eigenen Team an? ('1'=an, '0'=aus) - Achtung: Teamkills bedeuten ab CS Beta6.1 eine Runde Sperre!
mp_ghostfrequency 0.1 Aktualisiert die Ghost-rate in Sekunden. Höhere Werte: weniger lag
mp_hostagepenalty 2 Anzahl der Geiseln, die ein Spieler töten muß um vom Server gekickt zu werden
mp_maxrounds 0 Anzahl der Runden, die gespielt werden, bis die map wechselt - "0" aktiviert mp_timelimit
mp_winlimit 0 Nach soviel Rundensiegen eines Teams wird die map gewechselt
mp_limitteams 1 Wieviele Spieler kann ein Team mehr haben als das andere?
mp_lowlag 0 Einschränkung der Einschußlöcher ('1' für Internetserver, '0' für LAN-Server
mp_roundtime 5 Spieldauer einer Runde in Minuten
mp_timelimit 35 Spieldauer einer map, '0' spielt durchgehend die aktuelle map (dann mp_restartround beachten
mp_tkpunish 1 Bestrafung von Teamkillern durch eine Runde aussetzen? - bei '0' keine Strafe
mp_startmoney 800 Setzt das Geld zu Beginn einer Runde fest, 800 Minimum, 16000 Maximum
sv_restartround 0 Zeit in Sekunden, in denen der Server alle Werte zurücksetzt (Frags, Geld und timelimit)
sv_sendvelocity 0 '1' aktiviert komplexere Grafik und physikalische Berechnungen für schnelle Server
sv_rcon_minfailures 0 Wenn vor sv_rcon_minfailuretime so viele falsche rcon Anfragen kommen, wird gebannt. Standard:5, Minimum:1, Maximum:20
sv_rcon_minfailuretime 0 Zeiteinstellung für sv_rcon_minfailures
sv_rcon_maxfailures 0 Maximale Anzahl fehlerhafter rcon Eingaben bis zum bann. Standard:10, Minimum:1, Maximum:20
sv_rcon_banpenalty 0 Zeit des Banns, wenn die o.a. rcon Verletzungen aufgetreten sind, 0 bannt für immer
sv_enablevoice 0 Deaktiviert die Voice-Kommunikation auf der Server, 1 für aktivieren
sv_alltalk 0 Sendet Voice Commands nur ans eigene Teams, bei 1 hören es alle


übersetzt und angepasst von NAPALM