Startseite > .:: Rund um CoD4:MW ::. > CoD4 - Serverhilfe > Einen RANKED Linux-Server erstellen

Einen RANKED Linux-Server erstellen

VORAB:
Das ist nur eine schnell zusammengebastelte Anleitung um den Ungeduldigen unter euch ein wenig unter die Arme zu greifen...
Augenzwinkern

Grundlage ist eine saubere, gepatchte WINDOWS-Server-Installation,die wir auf einen Linux-Root gepackt haben.

 

Entweder du lädst eine fertig installierte Installation per FTP auf den Server (~4GB!)
oder du findest jemand der die Urheberrechte Großzügig auslegt und dir die Dateien als Paket anbietet.
Bei der CoD-Infobase wurden einige Links mit Download-Quellen für den Windows-Server gesammelt:
http://forum.esgnserver2.de/thread.php?threadid=3083

 

Herunterladen kannst du solch ein Paket im Linux-Terminal z.B. mit dem Tool wget

wget http://example.tld/cod4-serverpaket.zip


Des weiteren gehen wir davon aus, daß Du Zugriff auf den Linux-Serverper putty hast und weisst, wie man sich per putty einloggt... Außerdem benutzen wir das Programm "screen", um den Server in einemeigenen "Fenster" (um es mal in Windows-Sprache zu sagen) laufen zulassen.

Durch den Rest lotsen wir Dich Schritt-für-Schritt.

Eine "bereinigte" Installations-Anleitung wird´s beizeiten mal geben.

Ok, legen wir mal los...

Grundlage ist wie gesagt eine WINDOWS-Server-Installation, die wir auf einen Linux-Root-Server gezogen haben.

 

Neuen Ordner CoD4 erstellen mkdir cod4
Hier eine Übersicht über den Ordner CoD4, der auf unserem Linux-Beispiel-Server liegt:


cod4
|-- main
|   |-- hunkusage.dat
|   |-- iw_00.iwd
|   |-- iw_01.iwd
|   |-- iw_02.iwd
|   |-- iw_03.iwd
|   |-- iw_04.iwd
|   |-- iw_05.iwd
|   |-- iw_06.iwd
|   |-- iw_07.iwd
|   |-- iw_08.iwd
|   |-- iw_09.iwd
|   |-- iw_10.iwd
|   |-- iw_11.iwd
|   |-- iw_12.iwd
|   |-- iw_13.iwd
|   |-- localized_german_iw00.iwd
|   |-- localized_german_iw01.iwd
|   |-- localized_german_iw02.iwd
|   |-- localized_german_iw03.iwd
|   |-- localized_german_iw04.iwd
|   |-- localized_german_iw05.iwd
|   `-- localized_german_iw06.iwd
|-- mods
|   |-- ModWarfare
|   |   |-- default_server.cfg
|   |   |-- mod.csv
|   |   |-- mod.ff
|   |   `-- z_modwarfare.iwd
|-- pb
|-- pbsetup.run
|-- usermaps
`-- zone
    `-- german

Besorgt euch nun die Linux-Dateien, z. B. hier:

http://treefort.icculus.org/cod/cod4-linux-server-06282008.tar.bz2

http://0day.icculus.org/cod/cod4-linux-server-06282008.tar.bz2

 

Unter der Linux console

wget http://0day.icculus.org/cod/cod4-linux-server-06282008.tar.bz2

 

Entpacken dieser Dateien:

  • bunzip2 cod4-linux-server-06282008.tar.bz2
  • tar -xvf cod4-linux-server-06282008.tar


Diese Dateien müssen nun in den CoD4-Ordner auf eurem Server (also in den gleichen Ordner wie z. B. die localization.txt und die beiden exe-Dateien) kopiert/entpackt werden - sollte dann in unserem Beispiel so aussehen:

  • cod4_lnxded
  • cod4_lnxded-bin
  • libgcc_s.so.1
  • libstdc++.so.6
  • pbsetup.run
  • README


Denk daran, daß im main-Ordner noch eine CFG-Datei mit DeinenServereinstellungen liegen muss - in unserem Beispiel arbeiten wir mitder beispiel.cfg, die wir auch getestet haben - kannst Du Dir alsGrundlage unten runterladen.

Ok, die Linux-Dateien sind oben, die CFG-Datei ist oben - also ab aufden Linux-Server mit putty - einfach mal einloggen und in denCoD4-Ordner wechseln. In unserem Beispiel haben wir den Ordner unter /home/gameserver/cod4 liegen:

Mal kurz nachschauen, ob wir richtig sind, wir müssen in das Verzeichnis, in dem auch die Datei cod4_lnxded liegt. Also rufen wir mal gerade eine Dateiliste mit ls -la auf, damit wir alle Dateien angezeigt bekommen:

  • cod4_lnxded-bin
  • main
  • usermaps
  • libgcc_s.so.1
  • mods
  • pb
  • zone
  • cod4_lnxded
  • libstdc++.so.6
  • pbsetup.run

 

Ok, wir sind im richtigen Ordner, als starten wir nun einen screen-Prozess mit
screen -mS cod4
Nun sind wir quasi in der Serverkonsole in einem eigenen "Fenster":
Hier geben wir nun mal einen ganz einfachen Start-Parameter ein um den Server zu starten:

./cod4_lnxded +set loc_language 2 +set dedicated 2 +set sv_punkbuster 1 +exec beispiel.cfg +map_rotate +set loc_language 2

Mit diesem Parameter muss man lt. ReadMe festlegen, mit welcherSprachversion man startet (bzw. welche man auf dem Server liegen hat -wir haben die deutsche CoD4-Version am Laufen):

  • Englisch (Standard): +set loc_language 0
  • Französich: +set loc_language 1
  • Deutsch: +set loc_language 2
  • Italienisch: +set loc_language 3
  • Spanisch: +set loc_language 4


+set dedicated 2
Sagt dem Server, daß er als dedizierter Internet-Server laufen soll.

+set sv_punkbuster 1
Sorgt dafür, daß der PunkBuster gestartet wird.

+exec beispiel.cfg
Sagt dem Server, daß er die beispiel.cfg einlesen soll, in der die Spiel-Einstellungen festgelegt sind.

Tipp:
Sollte der Server die cfg nicht akzeptieren, dann benenne sie um, ambesten in etwas ziemlich Einmaliges - bei uns heisst eine cfg z. B.olhard.cfg. Manche cfg-Namen werden scheinbar nicht akzeptiert oder vongleichlautenden spieleigenen CFG-Dateien überschrieben (die in denIWD-Dateien liegen). Denk dran, dann auch den Startparameterentsprechend anzupassen!


+map_rotate
Sorgt dafür, daß die festgelegte Maprotation gestartet wird.

Gib den Befehl nun also ein und der Server sollte starten. Um nun zu prüfen, ob der Server läuft gibst Du den Befehl
status
ein und drückst ENTER - so ähnlich sollte die Ausgabe dann aussehen:

Hitch warning: 1867 msec frame time
Resolving cod4master.activision.com
cod4master.activision.com resolved to 63.146.124.21:20800
status
map: mp_carentan
num score ping guid                             name            lastmsg address
              qport rate
--- ----- ---- -------------------------------- --------------- ------- --------------------- ----- -----                      
Herzlichen Glückwunsch - Dein Server läuft!

Um putty nun wieder zu schließen und den Server zu verlassen benutzt Du einfach die Tastenkombination
STRG+A (Gleichzeitig) +D (Ist auch nicht schwieriger als Strg-Alt-Entf)
(-> legt den Screen-Prozess wieder in den Hintergrund)


---

Noch ein paar Anmerkungen zum Schluß:

In unserem Beispiel haben wir eine ganz einfache und simple Varianteerklärt. Nachteil in diesem Beispiel ist, daß nun im root-Verzeichnisein versteckter Ordner namens .callofduty4 angelegt wird, in dem z. B. die Log-Datei gespeichert wird. Um dies zu verhindern bzw. umzuleiten gibt es die Befehle
fs_basepath und fs_homepath, die man besser anwenden sollte. Sie geben, mal ganz locker übersetzt, den Start- und Ziel-Ordner an.

In unserem Beispiel müssten wir nun als den Ordner /home/gameserver/cod4 angeben und die "Umleitung mit den Befehlen
+set fs_basepath /home/gameserver/cod4 +set fs_homepath /home/gameserver/cod4
einrichten - unser kompletter Start-Parameter sähe dann so aus:

./cod4_lnxded +set fs_basepath /home/gameserver/cod4 +set fs_homepath /home/gameserver/cod4 +set loc_language 2 +set dedicated 2 +set sv_punkbuster 1 +exec beispiel.cfg +map_rotate

Natürlich könntest Du nun auch noch den Port des Spiels über den Start-Parameter anpassen - der Befehl dazu lautet:
+set net_port XXXXX
XXXXX tauscht Du natürlich dann gegen den von Dir gewünschten Port aus.

Einige weitere Tipps/Hilfen findest Du noch hier:
Einige Tipps zum Linux-Server

So, das sollten erst mal die wichtigsten Grundlagen für den Anfang sein, viel Spaß und Erfolg!

//Call of Duty 4 - Modern Warfare
//
// Beispiel-Server-CFG für einen RANKED Server
// by [OL]YODA
// www.opferlamm-clan.de

// Informationen (HLSW, etc.)
sets sv_hostname "Servername"
sets _Admin "Name des Admin"
sets _Email "E-Mail@Domain.de"
sets _Website "http://www.deine-seite.de"
sets _Location "Standort des Servers"
sets _Irc "Dein IRC-Channel"
sets _Maps "CoD4 Standard Maps"
sets _Spieltype "Normal/OldSchool/HardCore"
sets _GamePlay "RANKED/UNRANKED"

//***

//RCON-Passwort setzen (Admin)
set rcon_password "passwort"

//Passwort für Clients (Server ist dann Passwort-geschützt)
set g_password ""

//Passwort, das private Clients benötigen, um jederzeit auf den Server zu können
//ACHTUNG: funktioniert nicht, wenn der Server mit "g_password" geschützt ist!!!
//set sv_privatePassword "passwort"

//Maximale Datenrate
set sv_maxRate "20000"

//Server-FPS (nicht verändern!)
set sv_fps "20"

//Punkbuster (muss im Startparameter gesetzt werden!)
set sv_punkbuster "1"

//Abgleich der IWD-Dateien
//0 = aus, 1 = an
set sv_pure "1"

//Maximale Anzahl Spieler
set sv_maxclients "16"

//Private Clients (Anzahl - wird von maxclients dann abgezogen!)
set sv_privateClients "0"

//Minimaler Ping beim Connecten
set sv_minPing "0"

//Maximaler Ping beim Connecten
set sv_maxPing "300"

//Anonymous
//0 = aus, 1 = an
set sv_allowAnonymous "0"

//Antilag
//0 = aus, 1 = an
set g_antilag "1"

// Bestimmte IPs bannen
// VORSICHT!!! Die meisten Spieler haben eine dynamische IP, also bringt das nicht viel!
//set g_banIPs ""

//Bann-Zeit bei Kick (in Sekunden)
set sv_kickBanTime "300"

//Log-Datei
// 0 = Kein Log, 1 = Log-Datei schreiben
set logfile "1"

//Art des Schreibens
// 0 = kein Log, 1 = gepuffert, 2 = durchgehend, 3 = nachträglich
set logsync "1"

//Name der Log-Datei
set g_log "games_mp.log"

//Abstimmungen (keine Einschränkung möglich!)
//0 = aus, 1 = an
set g_allowvote "1"
set g_oldVoting "1"

//Download & http-Redirect
set sv_allowDownload "0"
//set sv_wwwBaseURL ""
//set sv_wwwDlDisconnected "0"
//set sv_wwwDownload "0"

//Tote können chatten
//0 = aus, 1 = an
set g_deadChat "1"

//Tote können Voice-Chat benutzen
//0 = aus, 1 = an
set voice_deadChat "0"

//Gravitation
//Standard 800
set g_gravity "800"

//Konsole für Clients deaktivieren
//0 = nein, 1 = ja
set sv_disableClientConsole "0"

//Spam-Schutz
set sv_floodProtect "1"
set g_no_script_spam "1"

//Reconnect-Limit
set sv_reconnectlimit "3"

//Timeout InGame
//0 = aus, x = Sekunden
set sv_timeout "240"

//Timeout beim Connecten
//0 = aus, x = Sekunden
set sv_connectTimeout "240"

//Kick bei Inaktivität
//nicht geprüft!!!
set g_inactivity "0"
set sv_zombietime "2"

//Automatischer Teamausgleich
//0 = nein, 1 = ja
set scr_teambalance "1"

//Team-Beschuss
//0 = aus, 1 = an,
//2 = reflektierter Schaden, 3 = geteilter Schaden
set scr_team_fftype "0"

//Killcam
//0 = nein, 1 = ja
set scr_game_allowkillcam "1"

// Zuschauer-Typ
// 0 = aus, 1 = nur Team/Spieler, 2 = Freies Umsehen
set scr_game_spectatetype "2"

//Zeit bis zum Match-Start (in Sekunden)
set scr_game_matchstarttime "0"

//Wartezeit bis zum Einstieg (in Sekunden)
set scr_game_playerwaittime "0"

//Wiedereinstieg erwingen
//0 = nein, 1 = ja
set scr_player_forcerespawn "0"

//Nur Kopfschüsse zählen
//0 = nein, 1 = ja
set scr_game_onlyheadshots "0"

//Teamkiller kicken
//0 = nein, 1 = ja
set scr_team_kickteamkillers "0"

//Teamkiller kicken nach x Teamkills
set scr_teamKillPunishCount "3"

//Wartezeit zum Wiedereinstieg nach Teamkill (in Sekunden)
set scr_team_teamkillspawndelay "20"

//Punktabzug nach Teamkill
//0 = nein, 1 = ja
set scr_team_teamkillpointloss "1"

//Sprach-Chat
//0 = aus, 1 = an
set sv_voice "0"

//Qualität des Sprach-Chats
//1 = niedrigste, 9 = höchste
set sv_voiceQuality "3"

//Hardcore Modus
//0 = aus, 1 = an
set scr_hardcore "0"

//Oldschool Modus
//0 = aus, 1 = an
set scr_oldschool "0"

//***

//Spiel-Modi

//Death Match (dm)

//Punkte-Limit
set scr_dm_scorelimit "1000"

//Zeit-Limit (in Minuten)
set scr_dm_timelimit "15"

//nicht geprüft (Standard)
set scr_dm_roundlimit "1"
set scr_dm_numlives "0"
set scr_dm_playerrespawndelay "0"
set scr_dm_waverespawndelay "0"

//Team Death Match (war)

//Punkte-Limit
set scr_war_scorelimit "750"

//Zeit-Limit (in Minuten)
set scr_war_timelimit "10"

//nicht geprüft (Standard)
set scr_war_roundlimit "1"
set scr_war_numlives "0"
set scr_war_playerrespawndelay "0"
set scr_war_waverespawndelay "0"

//Herrschaft (dom)

//Punkte-Limit
set scr_dom_scorelimit "200"

//Zeit-Limit (in Minuten)
set scr_dom_timelimit "0"

//nicht geprüft (Standard)
set scr_dom_numlives "0"
set scr_dom_playerrespawndelay "0"
set scr_dom_roundlimit "1"
set scr_dom_waverespawndelay "0"

//Hauptquartier (koth)

//Punkte-Limit
set scr_koth_scorelimit "250"

//Zeit-Limit (in Minuten)
set scr_koth_timelimit "15"

//Klassischer HQ-Modus
//0 = aktiviert, 1 = deaktiviert
set koth_kothmode "0"

//Benötigte Zeit zur Einnahme des Funkgerätes
set koth_capturetime "20"

//Verzögerung
//0 = sofort, x = Zeit in Sekunden
set koth_spawntime "0"

//nicht geprüft (Standard)
set scr_koth_numlives "0"
set scr_koth_playerrespawndelay "0"
set scr_koth_roundlimit "1"
set scr_koth_roundswitch "1"
set scr_koth_waverespawndelay "0"
set koth_autodestroytime "60"
set koth_delayPlayer "0"
set koth_destroytime "10"
set koth_spawnDelay "60"

//Sabotage (sab)

//Punkte-Limit
set scr_sab_scorelimit "1"

//Zeit-Limit (in Minuten)
set scr_sab_timelimit "20"

//Runden-Limit (Anzahl Runden bis zum Team-Wechsel)
set scr_sab_roundswitch "1"

//Zeit bis zur Explosion der Bombe (in Sekunden)
set scr_sab_bombtimer "30"

//Zeit zum Platzieren der Bombe (in Sekunden)
set scr_sab_planttime "2.5"

//Zeit zum Deaktivieren der Bombe (in Sekunden)
set scr_sab_defusetime "5"

//gemeinsamer Timer
//0 = nein, 1 = ja
set scr_sab_hotpotato "0"

//nicht geprüft (Standard)
set scr_sab_numlives "0"
set scr_sab_playerrespawndelay "7.5"
set scr_sab_roundlimit "0"
set scr_sab_waverespawndelay "0"

//Suchen und Zerstören (sd)

//Punkte-Limit
set scr_sd_scorelimit "4"

//Zeit-Limit (in Minuten)
set scr_sd_timelimit "2.5"

// Runden-Limit (Anzahl Runden bis zum Team-Wechsel)
set scr_sd_roundswitch "3"

// Zeit bis zur Explosion der Bombe (in Sekunden)
set scr_sd_bombtimer "45"

// Zeit zum Platzieren der Bombe (in Sekunden)
set scr_sd_planttime "5"

// Zeit zum Deaktivieren der Bombe (in Sekunden)
set scr_sd_defusetime "5"

//Sprengsatz-Anzahl
//0 = Ein Sprengsatz
//1 = Jeder Spieler hat einen Sprengsatz
set scr_sd_multibomb "0"

//nicht geprüft (Standard)
set scr_sd_numlives "1"
set scr_sd_playerrespawndelay "0"
set scr_sd_roundlimit "0"
set scr_sd_waverespawndelay "0"

//***

//Spiel-Modus
set g_gametype "war"

// DM - FREE FOR ALL DEATHMATCH (Death Match)
//NICHT aktiv
//set sv_mapRotation "gametype dm map mp_backlot gametype dm map mp_bloc gametype dm map mp_bog gametype dm map mp_cargoship gametype dm map mp_citystreets gametype dm map mp_convoy gametype dm map mp_countdown gametype dm map mp_crash gametype dm map mp_crossfire gametype dm map mp_farm gametype dm map mp_overgrown gametype dm map mp_pipeline gametype dm map mp_shipment gametype dm map mp_showdown gametype dm map mp_strike gametype dm map mp_vacant"

// DOM - DOMINATION
//NICHT aktiv
//set sv_mapRotation "gametype dom map mp_backlot gametype dom map mp_bloc gametype dom map mp_bog gametype dom map mp_cargoship gametype dom map mp_citystreets gametype dom map mp_convoy gametype dom map mp_countdown gametype dom map mp_crash gametype dom map mp_crossfire gametype dom map mp_farm gametype dom map mp_overgrown gametype dom map mp_pipeline gametype dom map mp_shipment gametype dom map mp_showdown gametype dom map mp_strike gametype dom map mp_vacant"

// KOTH - HEADQUARTERS
//NICHT aktiv
//set sv_mapRotation "gametype koth map mp_backlot gametype koth map mp_bloc gametype koth map mp_bog gametype koth map mp_cargoship gametype koth map mp_citystreets gametype koth map mp_convoy gametype koth map mp_countdown gametype koth map mp_crash gametype koth map mp_crossfire gametype koth map mp_farm gametype koth map mp_overgrown gametype koth map mp_pipeline gametype koth map mp_shipment gametype koth map mp_showdown gametype koth map mp_strike gametype koth map mp_vacant"

// SAB - SABOTAGE
//NICHT aktiv
//set sv_mapRotation "gametype sab map mp_backlot gametype sab map mp_bloc gametype sab map mp_bog gametype sab map mp_cargoship gametype sab map mp_citystreets gametype sab map mp_convoy gametype sab map mp_countdown gametype sab map mp_crash gametype sab map mp_crossfire gametype sab map mp_farm gametype sab map mp_overgrown gametype sab map mp_pipeline gametype sab map mp_shipment gametype sab map mp_showdown gametype sab map mp_strike gametype sab map mp_vacant"

// SD - SEARCH & DESTROY
//NICHT aktiv
//set sv_mapRotation "gametype sd map mp_backlot gametype sd map mp_bloc gametype sd map mp_bog gametype sd map mp_cargoship gametype sd map mp_citystreets gametype sd map mp_convoy gametype sd map mp_countdown gametype sd map mp_crash gametype sd map mp_crossfire gametype sd map mp_farm gametype sd map mp_overgrown gametype sd map mp_pipeline gametype sd map mp_shipment gametype sd map mp_showdown gametype sd map mp_strike gametype sd map mp_vacant gametype sab map mp_backlot gametype sab map mp_bloc gametype sab map mp_bog gametype sab map mp_cargoship gametype sab map mp_citystreets gametype sab map mp_convoy gametype sab map mp_countdown gametype sab map mp_crash gametype sab map mp_crossfire gametype sab map mp_farm gametype sab map mp_overgrown gametype sab map mp_pipeline gametype sab map mp_shipment gametype sab map mp_showdown gametype sab map mp_strike gametype sab map mp_vacant"

// WAR - TEAM DEATH MATCH
//AKTIV
set sv_mapRotation "gametype war map mp_backlot gametype war map mp_bloc gametype war map mp_bog gametype war map mp_citystreets gametype war map mp_convoy gametype war map mp_countdown gametype war map mp_crash gametype war map mp_crossfire gametype war map mp_farm gametype war map mp_overgrown gametype war map mp_pipeline gametype war map mp_shipment gametype war map mp_showdown gametype war map mp_strike gametype war map mp_vacant"

Ich hoffe, diese Anleitung ist verständlich geschrieben und hilft Dir weiter. 
Für weitere Fragen stehen Dir jede Menge Leute im Forum von
Opferlamm Board
zur Verfügung. 

Anregungen, Tips, etc. sind natürlich auch willkommen.

by [OL]YODA - veröffentlicht auf www.opferlamm-clan.de - Verlinkung etc. nur mit ausdrücklicher Genehmigung