The code looks correct, however, both client and server must be running identical sever.zip files for this to work, also checksusm will have to be disabled in order to run a server and join that way (if you modify the client the server will kick for bad checksums).
The best way to do this would to be to make a mini mod with just the map in question. For an example on how to make a mini mod:
http://files.filefront.com/WeaponsModse ... einfo.html you can download my mini mod collection and examin one of the mods to see what is needed for a mod. (I would look at either the SFWeapons mod or the ULWeapons mod, since the EUWeapons mod will have uninstaller data in it. It wont hurt it, but it will be simpler just to use the others as an example). One note with those mods, the modded data in the osrv.zip (objects server). For your mod you will not need an objects server (make sure the archives.con files relfect that). What you would do is in the levels folder, under karkand, put your modded server.zip. Then upload the whole mini mod to the server and join using a client with the mini mod installed.
The biggest reason for all of this is BF2 is very fussy about modding stuff. Unless you were very careful in what you did and made proper backups, you probably connot play online in a karkand server any more (unless you reinstall). By making a new mod like this, you do not mess up stock BF2 and you disable the MD5 checsksusm all at once. It may seem like a little more work but in the long run it is far less. Just make sure come up with a unique name for you mod (same with the icons, though it really donesnt need them).