For this tutorial you will need:
Steam modernwarfare 2 files
fourDeltaOne client files from here
fourDeltaOne dedicated server updater which can be found here
Microsoft .NET Framework 3.5
Once you have these files, you’re ready for the fun stuff!
Step 1.
Make a new copy of your mw2 steam folder. Name it something useful, such as “FD1 Server”
Step 2.
Run the client installer, making sure to select the folder where the server is (C:/FD1 Server/)
Step 3.
Place the files from dsut.zip into the root folder of your server install (C:/FD1 Server/)
Run the iw4m_updater.exe and let it download the files.
Step 4.
Navigate to your C:/users/(your name) /appdata/local/iw4m/ and copy all of the files into your server folder (C:/FD1 Server/)
what your server folder should now look like
Step 5.
Make a shortcut to iw4m.exe on your desktop. If you don’t have one, rename the iw4m.dat to exe. Add the following parameters ( -dedicated +set party_maxplayers 18+set net_port 28961 +exec server.cfg +map oilrig +map_rotate) to the shortcut if you want an 18 player server running on port 28961 using the server.cfg that you have configured, loading OilRig as the map.
Step 6.
At this point your server should be functional. But we still need a few more things, such as a server.cfg. Here is an example of a server.cfg. remember to change the things you want different. Place this in C:/FD1/Main/
[spoiler]
// — QUERY INFORMATION ——————————–
set sv_hostname “I am Lazy”
// optional settings returned by query, server listings may use this
sets _Admin “NTAuthority”
sets _Email “ntauthority@example.com”
sets _Website “http://alteriw.net/”
sets _Location “EU – West”
// — NON-GAMEPLAY CONFIGURATION ———————–
set rcon_password “” // password for rcon, empty = disabled
set privateMatch_serverPassword “” // game password, leave empty for a public game
set sv_maxPing “300” // maximum ping, any higher and players will get kicked
set g_inactivity “0” // time in seconds before a player gets kicked if not moving
set g_inactivitySpectator “0” // time in seconds before a spectator gets kicked
set g_logSync “1” // 1 = always flush games_mp.log, 0 = only flush on game end
set g_log “games_mp.log” // game log file
set aiw_sayName “^7Console” // name server-side ‘say’ commands show up as
// — BASE GAME CONFIGURATION ————————–
set g_gametype “sd” // game type
// war – Team Deathmatch
// dm – Free-for-all
// dom – Domination
// koth – Headquarters
// sab – Sabotage
// sd – Search and Destroy
// arena – Arena
// dd – Demolition
// ctf – Capture the Flag
// oneflag – One-Flag CTF
// gtnw – Global Thermo-Nuclear War
// uncomment below commands for some hardcore shit
//set g_hardcore “1”
//set ui_hud_hardcore “1”
//set scr_hardcore “1”
//set scr_player_maxhealth “30”
//set scr_team_fftype “1” // 1 = on, 2 = reflect, 3 = shared
//set scr_player_healthregentime “0”
set scr_thirdperson “0” // third-person mode
set scr_game_hardpoints “1” // killstreaks, 1 = on
set scr_game_perks “1” // perks, obviously
set scr_game_allowkillcam “1” // 1 = allow, 0 = disallow
set scr_diehard “0” // die-hard mode
set scr_teambalance “1” // player difference for game to consider ‘unbalanced’
set scr_game_spectatetype “2” // by request?
// — GAMETYPE CONFIGURATION —————————
// – Team Deathmatch
set scr_war_scorelimit “10000”
set scr_war_timelimit “15” // timelimit, in minutes
set scr_war_playerrespawndelay “-1” // -1 is no respawn delay, 0 is automatic, > 0 is X seconds
set scr_war_waverespawndelay “0” // wave spawning, might be more ‘tactical’
set scr_war_numlives “0” // number of lives
set scr_war_promode “0” // unknown
set scr_war_roundlimit “1” // maximum amount of rounds
set scr_war_winlimit “1” // amount of wins needed to win a round-based game
// – Domination
set scr_dom_scorelimit “200”
set scr_dom_timelimit “60” // timelimit, in minutes
set scr_dom_playerrespawndelay “-1” // -1 is no respawn delay, 0 is automatic, > 0 is X seconds
set scr_dom_waverespawndelay “0” // wave spawning, might be more ‘tactical’
set scr_dom_numlives “0” // number of lives
set scr_dom_promode “0” // unknown
set scr_dom_roundlimit “1” // maximum amount of rounds
set scr_dom_winlimit “1” // amount of wins needed to win a round-based game
// – FFA
set scr_dm_scorelimit “10000”
set scr_dm_timelimit “15” // timelimit, in minutes
set scr_dm_playerrespawndelay “-1” // -1 is no respawn delay, 0 is automatic, > 0 is X seconds
set scr_dm_numlives “0” // number of lives
set scr_dm_promode “0” // unknown
// – Search and Destroy
set scr_sd_scorelimit “1”
set scr_sd_timelimit “2.5” // timelimit, in minutes
set scr_sd_playerrespawndelay “-1” // -1 is no respawn delay, 0 is automatic, > 0 is X seconds
set scr_sd_waverespawndelay “0” // wave spawning, might be more ‘tactical’
set scr_sd_numlives “1” // number of lives
set scr_sd_promode “0” // unknown
set scr_sd_roundlimit “24” // maximum amount of rounds, 0 is ‘until someone wins’
set scr_sd_winlimit “0” // amount of wins needed to win a round-based game
set scr_sd_roundswitch “12” // after X rounds, switch sides?
set scr_sd_bombtimer “45”
set scr_sd_defusetime “5”
set scr_sd_multibomb “0” // allow multiple people to ‘have the bomb’?
set scr_sd_planttime “5”
// … other gametypes might be easy to figure out, or come in a future update of the template …
// — AUTOMATED ROTATION ——————————-
set sv_mapRotation “gametype sd map mp_afghan gametype sd map mp_fuel2 gametype sd map mp_derail gametype sd map mp_crash gametype sd map mp_nightshift”
[/spoiler]
Step 7.
If you’re hosting this at your house, you will need to portforward. Just google it, this isn’t a tutorial on that. Basically, you will have to port forward the port that the game is running on (in this case 28961)
Step 8.
Run the shortcut. You should see it load your config file, and begin working. Go to the game, and browse for your server. If its on your network, you should be able to see it, and connect.
This is what it should look like if it loaded your cfg and everything is working
If your server is running sluggish, try adding the -console parameter in the shortcut. It will change it back to the old console.
Leave any questions below. Thanks!