Several people have been asking me this in past so I've decided to sacrifice half an hour my time and write this guide to save us some lengthy chat conversations in future. Need to mention all things described here are really, really basic and mostly common knowledge, you can find them on Internet if you Google something generic like "Make CoD2 Dedicated Server". The only problem was that I wasn't able to find a single nice article that will describe procedure completely.
For best performance some Linux based server distro would be ideal as operating system (99% of the time these are operating systems running servers on which you are playing online), but since they are not the friendliest for beginners we will focus on Windows. To follow up on this, I really doubt someone's gonna use POSIX based system on LAN, if really in need you can try to contact me, can do some guide in future for these systems as well.
Browse to your Call of Duty 2 installation folder. Right-click on "CoD2MP_s.exe" and click "Copy". Go to your "Desktop" and "Paste Shortcut". For purposes of this tutorial I want to run four gameservers so I have created four shortcuts and renamed them accordingly:
What we will be doing is launching all the servers using command line arguments. Yeah we can do everything by entering the game menu, selecting "Start New Server" and playing around with settings there but in this way we are being more programmatic, practical and organized. Trust me this is important if you have like 40 people playing matches at the same time and you don't want unnecessary delays. Right-click on gameserver shortcut and go to "Properties":
In newly opened window go to "Shortcut" tab if you're not there already. The field we are interested in is "Target". After CoD2MP_s.exe path add space and append following lines:
The full values of Target box should now look something like this:
[spoiler=GS1: Click to view]"C:\Program Files (x86)\Activision\Call of Duty 2\CoD2MP_s.exe" +set dedicated 1 +set sv_pure 1 +set fs_game "mods/zpam207" +set sv_punkbuster 0 +set g_gametype sd +set sv_hostname "LAN GS1" +set net_port 28961[/spoiler]
[spoiler=GS2: Click to view]"C:\Program Files (x86)\Activision\Call of Duty 2\CoD2MP_s.exe" +set dedicated 1 +set sv_pure 1 +set fs_game "mods/zpam207" +set sv_punkbuster 0 +set g_gametype sd +set sv_hostname "LAN GS2" +set net_port 28962[/spoiler]
[spoiler=GS3: Click to view]"C:\Program Files (x86)\Activision\Call of Duty 2\CoD2MP_s.exe" +set dedicated 1 +set sv_pure 1 +set fs_game "mods/zpam207" +set sv_punkbuster 0 +set g_gametype sd +set sv_hostname "LAN GS3" +set net_port 28963[/spoiler]
[spoiler=GS4: Click to view]"C:\Program Files (x86)\Activision\Call of Duty 2\CoD2MP_s.exe" +set dedicated 1 +set sv_pure 1 +set fs_game "mods/zpam207" +set sv_punkbuster 0 +set g_gametype sd +set sv_hostname "LAN GS4" +set net_port 28964[/spoiler]
Click "OK" to save the settings but do not run the servers just yet.
Head back to to your installation folder and there create folder mods/zpam207. Place zPAM207.iwd in that folder:
NOTE: We could've also skipped this step, removed fs_game variable from above steps and just added all mod files to main folder, but we wanna play it nice, these settings were made for a reason and the best practice is to honour them.
Now you may launch all the gameservers one by one. There should be CoD2 loading screen and soon after that a console should appear. In there you can type your commands, set rcon, pam_mode etc.
At this point servers are up and running but the games are not initialized. For this to happen we need to set the map for the first time. Enter in console "map mp_toujane". After its loaded the console should look something like this:
Your servers are now ready for play. People connected to your Local Area Network should be able to see it from ingame browser, but in case they don't or you want to immediately find out your server IP you can do it by launching "cmd.exe" from Start Menu and running "ipconfig" command:
We are interested in IPv4 Address. In this case if a player wants to connect to GS3, the command would be /connect 192.168.1.10:28963
Good idea would be to make your own "server.cfg" and call it with +exec from command line as well. Can be quite useful if you want to have server with more specific settings.
One last thing, it would be best if you have dedicated machine just for servers and don't mess around with it too much during matches, don't go to YouTube, Facebook and similar otherwise you might cause server lags.