You will have to do the same thing IW did when they patched to 1.2 to remove exploits.
It involves modifying the map's main gsc file. Take a look at the GSC files for the patch maps in iw15\maps\mp:
One example (mp_burgundy.gsc), I copy in the complete GSC at the bottom of this thread so you can read online.
The key parts what IW did is the following:
Code:
level.killtriggers[0] = spawnstruct();
level.killtriggers[0].origin = (96, 2296, 168);
level.killtriggers[0].radius = 165;
level.killtriggers[0].height = 170;
One set of these 4 lines for each zone that you want to control. Obviously for each new one you would increase the index of 0 to 1,2,3... and so on.
There is a command that allows you to display the current position of a player so you can get the location you need for the origin part, but I cannot remember it at the moment.
Finally at the end of the setup of the killtriggers a call to start some thread to watch these zones for players:
Code:
thread maps\mp\_killtriggers::init();
The complete code from IW for reference:
Code:
main()
{
maps\mp\mp_burgundy_fx::main();
maps\mp\_load::main();
setExpFog(0.00015, 0.7, 0.85, 1.0, 0);
ambientPlay("ambient_france");
game["allies"] = "american";
game["axis"] = "german";
game["attackers"] = "allies";
game["defenders"] = "axis";
game["american_soldiertype"] = "normandy";
game["german_soldiertype"] = "normandy";
setcvar("r_glowbloomintensity0","1");
setcvar("r_glowbloomintensity1","1");
setcvar("r_glowskybleedintensity0",".25");
if((getcvar("g_gametype") == "hq"))
{
level.radio = [];
level.radio[0] = spawn("script_model", (768.8, 58.1, 83.1));
level.radio[0].angles = (0, 295, 0);
level.radio[1] = spawn("script_model", (428.8, 994.9, 0.1));
level.radio[1].angles = (0, 70, 0);
level.radio[2] = spawn("script_model", (1978.9, 2085.63, 0.864801));
level.radio[2].angles = (0.851713, 120.007, 0.491852);
level.radio[3] = spawn("script_model", (1030.3, 442.3, 151.9));
level.radio[3].angles = (0, 13, 0);
level.radio[4] = spawn("script_model", (226.6, 2515.6, 56));
level.radio[4].angles = (0, 126, 0);
level.radio[5] = spawn("script_model", (-415.364, 2474.61, -1.73221));
level.radio[5].angles = (355.978, 180, -1.30946);
}
level.killtriggers[0] = spawnstruct();
level.killtriggers[0].origin = (96, 2296, 168);
level.killtriggers[0].radius = 165;
level.killtriggers[0].height = 170;
level.killtriggers[1] = spawnstruct();
level.killtriggers[1].origin = (88, 2696, 200);
level.killtriggers[1].radius = 165;
level.killtriggers[1].height = 140;
level.killtriggers[2] = spawnstruct();
level.killtriggers[2].origin = (552, 2686, 200);
level.killtriggers[2].radius = 150;
level.killtriggers[2].height = 140;
level.killtriggers[3] = spawnstruct();
level.killtriggers[3].origin = (1144, 2000, 125);
level.killtriggers[3].radius = 165;
level.killtriggers[3].height = 230;
level.killtriggers[4] = spawnstruct();
level.killtriggers[4].origin = (1144, 1328, 147);
level.killtriggers[4].radius = 205;
level.killtriggers[4].height = 200;
level.killtriggers[5] = spawnstruct();
level.killtriggers[5].origin = (1444, 1948, 108);
level.killtriggers[5].radius = 27;
level.killtriggers[5].height = 12;
level.killtriggers[6] = spawnstruct();
level.killtriggers[6].origin = (144, 734, 130);
level.killtriggers[6].radius = 35;
level.killtriggers[6].height = 12;
level.killtriggers[7] = spawnstruct();
level.killtriggers[7].origin = (452, 981, 132);
level.killtriggers[7].radius = 16;
level.killtriggers[7].height = 12;
thread maps\mp\_killtriggers::init();
}