Downloaded 189 times
//
// CoD [Call of Duty] Server side mod. CTF gamemode [Capture the Flag]
// (c) ScorpioMidget
// Nov 2003
//
// Version 1.9beta
//
// found bugs or want new features ?
//
// send email to
scorpiomidget@hotmail.com
// or drop me a line @
www.scorpiomidget.com
// or drop me a line @
www.iwnation.com/Forums
// or drop me a line @
www.modtheater.com/forums
//
// Uses Ravirs animated icon function,
www.clan-flare.org
//
Install the file "zzz-scorpios_ctf_gamemode.pk3" in the 'main' folder.
Add these cvars into your config_mp.cfg file, else CoD won't remember the settings when you change them *.
The values shown below are the defaults if the cvars are not explicitly setup.
----------------------------------------------------------------------------------------------------------
seta scr_ctf_timelimit "30" // max time map can run, team with most flags wins
seta scr_ctf_scorelimit "3" // number of flags needed for an outright win
seta scr_ctf_showbasesoncompass "1" // show the bases on the compass ?
seta scr_ctf_showflagsoncompass "1" // show the flags on the compass ?
seta scr_ctf_respawnflags "30" // time before a flag will respawn at base, if dropped by a player, in seconds
seta scr_ctf_startdelay "30" // time before the map starts, gives players time to connect, in seconds
seta scr_ctf_respawndelay "15" // delay before a players can respawn in waves, in seconds
seta scr_ctf_mustpressuse "0" // players must tap USE to pickup a flag or drop at their base.
seta scr_ctf_flagmessages "0" // print pickup/drop messages when not near a base, disabled to stop spamming
seta scr_ctf_respawninvun "5" // time that respawned players are invunerable, in seconds
seta scr_ctf_showcarrieranim "1" // animate the hud icon when picking up a flag
seta scr_showkillcam "1" // enable/disable the killcam
seta scr_forcerespawn "1" // force players to respawn immediately (dont have to press USE).
// now add these cvars to turn on ctf support for existing maps:
//brecourt, hurtgen, harbor, carentan, dawnville, depot, pavlov, rocket, railyard and powcamp.
seta scr_ctf_mp_brecourt_alliedbase "1"
seta scr_ctf_mp_brecourt_alliedbase_originx "-904"
seta scr_ctf_mp_brecourt_alliedbase_originy "1230"
seta scr_ctf_mp_brecourt_alliedbase_originz "75"
seta scr_ctf_mp_brecourt_alliedflag1_originx "-904"
seta scr_ctf_mp_brecourt_alliedflag1_originy "1230"
seta scr_ctf_mp_brecourt_alliedflag1_originz "122"
seta scr_ctf_mp_brecourt_alliedflags "1"
seta scr_ctf_mp_brecourt_axisbase "1"
seta scr_ctf_mp_brecourt_axisbase_originx "1802"
seta scr_ctf_mp_brecourt_axisbase_originy "-2656"
seta scr_ctf_mp_brecourt_axisbase_originz "26"
seta scr_ctf_mp_brecourt_axisflag1_originx "1802"
seta scr_ctf_mp_brecourt_axisflag1_originy "-2656"
seta scr_ctf_mp_brecourt_axisflag1_originz "73"
seta scr_ctf_mp_brecourt_axisflags "1"
seta scr_ctf_mp_carentan_alliedbase "1"
seta scr_ctf_mp_carentan_alliedbase_originx "433"
seta scr_ctf_mp_carentan_alliedbase_originy "356"
seta scr_ctf_mp_carentan_alliedbase_originz "-7"
seta scr_ctf_mp_carentan_alliedflag1_originx "433"
seta scr_ctf_mp_carentan_alliedflag1_originy "356"
seta scr_ctf_mp_carentan_alliedflag1_originz "39"
seta scr_ctf_mp_carentan_alliedflags "1"
seta scr_ctf_mp_carentan_axisbase "1"
seta scr_ctf_mp_carentan_axisbase_originx "1232"
seta scr_ctf_mp_carentan_axisbase_originy "1964"
seta scr_ctf_mp_carentan_axisbase_originz "-32"
seta scr_ctf_mp_carentan_axisflag1_originx "1232"
seta scr_ctf_mp_carentan_axisflag1_originy "1964"
seta scr_ctf_mp_carentan_axisflag1_originz "14"
seta scr_ctf_mp_carentan_axisflags "1"
seta scr_ctf_mp_dawnville_alliedbase "1"
seta scr_ctf_mp_dawnville_alliedbase_originx "-1319"
seta scr_ctf_mp_dawnville_alliedbase_originy "-16297"
seta scr_ctf_mp_dawnville_alliedbase_originz "-23"
seta scr_ctf_mp_dawnville_alliedflag1_originx "-1319"
seta scr_ctf_mp_dawnville_alliedflag1_originy "-16297"
seta scr_ctf_mp_dawnville_alliedflag1_originz "23"
seta scr_ctf_mp_dawnville_alliedflags "1"
seta scr_ctf_mp_dawnville_axisbase "1"
seta scr_ctf_mp_dawnville_axisbase_originx "563"
seta scr_ctf_mp_dawnville_axisbase_originy "-16385"
seta scr_ctf_mp_dawnville_axisbase_originz "-5"
seta scr_ctf_mp_dawnville_axisflag1_originx "563"
seta scr_ctf_mp_dawnville_axisflag1_originy "-16385"
seta scr_ctf_mp_dawnville_axisflag1_originz "41"
seta scr_ctf_mp_dawnville_axisflags "1"
seta scr_ctf_mp_depot_alliedbase "1"
seta scr_ctf_mp_depot_alliedbase_originx "-1343"
seta scr_ctf_mp_depot_alliedbase_originy "-517"
seta scr_ctf_mp_depot_alliedbase_originz "-22"
seta scr_ctf_mp_depot_alliedflag1_originx "-1343"
seta scr_ctf_mp_depot_alliedflag1_originy "-517"
seta scr_ctf_mp_depot_alliedflag1_originz "24"
seta scr_ctf_mp_depot_alliedflags "1"
seta scr_ctf_mp_depot_axisbase "1"
seta scr_ctf_mp_depot_axisbase_originx "-1148"
seta scr_ctf_mp_depot_axisbase_originy "339"
seta scr_ctf_mp_depot_axisbase_originz "-22"
seta scr_ctf_mp_depot_axisflag1_originx "-1148"
seta scr_ctf_mp_depot_axisflag1_originy "339"
seta scr_ctf_mp_depot_axisflag1_originz "24"
seta scr_ctf_mp_depot_axisflags "1"
seta scr_ctf_mp_harbor_alliedbase "1"
seta scr_ctf_mp_harbor_alliedbase_originx "-7988"
seta scr_ctf_mp_harbor_alliedbase_originy "-8288"
seta scr_ctf_mp_harbor_alliedbase_originz "1"
seta scr_ctf_mp_harbor_alliedflag1_originx "-7988"
seta scr_ctf_mp_harbor_alliedflag1_originy "-8288"
seta scr_ctf_mp_harbor_alliedflag1_originz "47"
seta scr_ctf_mp_harbor_alliedflags "1"
seta scr_ctf_mp_harbor_axisbase "1"
seta scr_ctf_mp_harbor_axisbase_originx "-9549"
seta scr_ctf_mp_harbor_axisbase_originy "-7574"
seta scr_ctf_mp_harbor_axisbase_originz "1"
seta scr_ctf_mp_harbor_axisflag1_originx "-9549"
seta scr_ctf_mp_harbor_axisflag1_originy "-7574"
seta scr_ctf_mp_harbor_axisflag1_originz "47"
seta scr_ctf_mp_harbor_axisflags "1"
seta scr_ctf_mp_hurtgen_alliedbase "1"
seta scr_ctf_mp_hurtgen_alliedbase_originx "-598"
seta scr_ctf_mp_hurtgen_alliedbase_originy "-340"
seta scr_ctf_mp_hurtgen_alliedbase_originz "-71"
seta scr_ctf_mp_hurtgen_alliedflag1_originx "-598"
seta scr_ctf_mp_hurtgen_alliedflag1_originy "-340"
seta scr_ctf_mp_hurtgen_alliedflag1_originz "-25"
seta scr_ctf_mp_hurtgen_alliedflags "1"
seta scr_ctf_mp_hurtgen_axisbase "1"
seta scr_ctf_mp_hurtgen_axisbase_originx "3572"
seta scr_ctf_mp_hurtgen_axisbase_originy "358"
seta scr_ctf_mp_hurtgen_axisbase_originz "-159"
seta scr_ctf_mp_hurtgen_axisflag1_originx "3572"
seta scr_ctf_mp_hurtgen_axisflag1_originy "358"
seta scr_ctf_mp_hurtgen_axisflag1_originz "-113"
seta scr_ctf_mp_hurtgen_axisflags "1"
seta scr_ctf_mp_pavlov_alliedbase "1"
seta scr_ctf_mp_pavlov_alliedbase_originx "-10302"
seta scr_ctf_mp_pavlov_alliedbase_originy "11107"
seta scr_ctf_mp_pavlov_alliedbase_originz "11"
seta scr_ctf_mp_pavlov_alliedflag1_originx "-10302"
seta scr_ctf_mp_pavlov_alliedflag1_originy "11107"
seta scr_ctf_mp_pavlov_alliedflag1_originz "57"
seta scr_ctf_mp_pavlov_alliedflags "1"
seta scr_ctf_mp_pavlov_axisbase "1"
seta scr_ctf_mp_pavlov_axisbase_originx "-8168"
seta scr_ctf_mp_pavlov_axisbase_originy "11490"
seta scr_ctf_mp_pavlov_axisbase_originz "38"
seta scr_ctf_mp_pavlov_axisflag1_originx "-8168"
seta scr_ctf_mp_pavlov_axisflag1_originy "11490"
seta scr_ctf_mp_pavlov_axisflag1_originz "84"
seta scr_ctf_mp_pavlov_axisflags "1"
seta scr_ctf_mp_powcamp_alliedbase "1"
seta scr_ctf_mp_powcamp_alliedbase_originx "-246"
seta scr_ctf_mp_powcamp_alliedbase_originy "3425"
seta scr_ctf_mp_powcamp_alliedbase_originz "5"
seta scr_ctf_mp_powcamp_alliedflag1_originx "-256"
seta scr_ctf_mp_powcamp_alliedflag1_originy "3425"
seta scr_ctf_mp_powcamp_alliedflag1_originz "51"
seta scr_ctf_mp_powcamp_alliedflags "1"
seta scr_ctf_mp_powcamp_axisbase "1"
seta scr_ctf_mp_powcamp_axisbase_originx "-1236"
seta scr_ctf_mp_powcamp_axisbase_originy "302"
seta scr_ctf_mp_powcamp_axisbase_originz "1"
seta scr_ctf_mp_powcamp_axisflag1_originx "-1236"
seta scr_ctf_mp_powcamp_axisflag1_originy "302"
seta scr_ctf_mp_powcamp_axisflag1_originz "47"
seta scr_ctf_mp_powcamp_axisflags "1"
seta scr_ctf_mp_railyard_alliedbase "1"
seta scr_ctf_mp_railyard_alliedbase_originx "-683"
seta scr_ctf_mp_railyard_alliedbase_originy "3097"
seta scr_ctf_mp_railyard_alliedbase_originz "-56"
seta scr_ctf_mp_railyard_alliedflag1_originx "-683"
seta scr_ctf_mp_railyard_alliedflag1_originy "3097"
seta scr_ctf_mp_railyard_alliedflag1_originz "-10"
seta scr_ctf_mp_railyard_alliedflags "1"
seta scr_ctf_mp_railyard_axisbase "1"
seta scr_ctf_mp_railyard_axisbase_originx "-631"
seta scr_ctf_mp_railyard_axisbase_originy "-370"
seta scr_ctf_mp_railyard_axisbase_originz "16"
seta scr_ctf_mp_railyard_axisflag1_originx "-631"
seta scr_ctf_mp_railyard_axisflag1_originy "-370"
seta scr_ctf_mp_railyard_axisflag1_originz "62"
seta scr_ctf_mp_railyard_axisflags "1"
seta scr_ctf_mp_rocket_alliedbase "1"
seta scr_ctf_mp_rocket_alliedbase_originx "9056"
seta scr_ctf_mp_rocket_alliedbase_originy "2671"
seta scr_ctf_mp_rocket_alliedbase_originz "459"
seta scr_ctf_mp_rocket_alliedflag1_originx "9056"
seta scr_ctf_mp_rocket_alliedflag1_originy "2671"
seta scr_ctf_mp_rocket_alliedflag1_originz "505"
seta scr_ctf_mp_rocket_alliedflags "1"
seta scr_ctf_mp_rocket_axisbase "1"
seta scr_ctf_mp_rocket_axisbase_originx "10793"
seta scr_ctf_mp_rocket_axisbase_originy "5007"
seta scr_ctf_mp_rocket_axisbase_originz "330"
seta scr_ctf_mp_rocket_axisflag1_originx "10793"
seta scr_ctf_mp_rocket_axisflag1_originy "5007"
seta scr_ctf_mp_rocket_axisflag1_originz "376"
seta scr_ctf_mp_rocket_axisflags "1"
V1.0
----
Added a proto-type CTF mode.
Currently it's more of a CTB (Capture the Booze) coz there isn't a flag model, but there were bottles of beer :).
It only works on mp_brecourt currently.
Please test this new game mode and give me some feedback on
www.iwnation.com/Forums
allies have to steal the axis beer and return to there barrel.
axis have to steal the allied beer and return to there barrel.
default is 3 steals to win, 30mins timelimit.
scr_ctf_timelimit // Time limit per map, default 30 (minutes)
scr_ctf_scorelimit // Team Score limit per map, default 3 (must capture and return 3 enemy flags)
scr_ctf_showbasesoncompass // default is 1 = on
scr_ctf_showflagsoncompass // default is 1 = on
scr_ctf_respawnflags // default is 30 (seconds)
V1.1 fixes bugs in 1.0
----------------------
messages, are no longer bold in center of screen, moves to top left.
markers always stay on compass.
V1.1 introduces new features:
-----------------------------
icons appear when you can pickup/drop the flag.
flags have updated position on compass.
markers and flags have different compass icons.
markers and/or flags on compass can be disabled.
Allow multiple flags per map.
Looks for cvars to specify number of flags and positions.
|...> If no valid cvars, looks for the flag/marker positions in the map bsp.
[.map Setup]
add 1 'script_model' per team.
targetname:
allies = ctf_allied_base
axis = ctf_axis_base
* this is where that team has to drop stolen flags to get points
add 1 or more 'script_model' for each team flag.
targetname:
allies = ctf_allied_flag
axis = ctf_axis_flag
[Cvar setup]
scr_ctf_
_alliedbase_originx e.g. "100"
scr_ctf__alliedbase_originy e.g. "-300"
scr_ctf__alliedbase_originz e.g. "33"
scr_ctf__alliedbase_anglesp e.g. "0" [optional, will default to 0] {Pitch}
scr_ctf__alliedbase_anglesr e.g. "0" [optional, will default to 0] {Roll}
scr_ctf__alliedbase_anglesy e.g. "54" [optional, will default to 0] {Yaw}
scr_ctf__alliedbase_model [optional, will default to xmodel/barrel_black1]
scr_ctf__alliedflags
scr_ctf__alliedflag1_originx e.g. "100"
scr_ctf__alliedflag1_originy e.g. "-300"
scr_ctf__alliedflag1_originz e.g. "33"
scr_ctf__alliedflag1_anglesp e.g. "0" [optional, will default to 0] {Pitch}
scr_ctf__alliedflag1_anglesr e.g. "0" [optional, will default to 0] {roll}
scr_ctf__alliedflag1_anglesy e.g. "54" [optional, will default to 0] {yaw}
scr_ctf__alliedflag1_model [optional, will default to xmodel/bottle_beer]
... scr_ctf__alliedflag repeat above for number of flags you want
scr_ctf__axisbase_originx e.g. "100"
scr_ctf__axisbase_originy e.g. "-300"
scr_ctf__axisbase_originz e.g. "33"
scr_ctf__axisbase_anglesp e.g. "0" [optional, will default to 0] {Pitch}
scr_ctf__axisbase_anglesr e.g. "0" [optional, will default to 0] {Roll}
scr_ctf__axisbase_anglesy e.g. "54" [optional, will default to 0] {Yaw}
scr_ctf__axisbase_angles [optional, will default to (0,0,0)]
scr_ctf__axisbase_model [optional, will default to xmodel/barrel_black1]
scr_ctf__axisflags
scr_ctf__axisflag1_originx e.g. "100"
scr_ctf__axisflag1_originy e.g. "-300"
scr_ctf__axisflag1_originz e.g. "33"
scr_ctf__axisflag1_anglesp e.g. "0" [optional, will default to 0] {Pitch}
scr_ctf__axisflag1_anglesr e.g. "0" [optional, will default to 0] {roll}
scr_ctf__axisflag1_anglesy e.g. "54" [optional, will default to 0] {yaw}
scr_ctf__axisflag1_model [optional, will default to xmodel/bottle_beer]
... scr_ctf__axisflag repeat above for number of flags you want
= "(x,z,y)"
= "(pitch,yaw,roll)"
= "xmodel/"
Example of setting up cvars for mp_brecourt *:
==============================================
* note this is the minimum values, for 1 flag per team, and default angles/models
seta scr_ctf_mp_brecourt_alliedbase_originx "-3175"
seta scr_ctf_mp_brecourt_alliedbase_originy "1746"
seta scr_ctf_mp_brecourt_alliedbase_originz "33"
seta scr_ctf_mp_brecourt_alliedflags "1"
seta scr_ctf_mp_brecourt_alliedflag1_originx "-3175"
seta scr_ctf_mp_brecourt_alliedflag1_originy "1746"
seta scr_ctf_mp_brecourt_alliedflag1_originz "73"
seta scr_ctf_mp_brecourt_axisbase_originx "3603"
seta scr_ctf_mp_brecourt_axisbase_originy "-1434"
seta scr_ctf_mp_brecourt_axisbase_originz "-34"
seta scr_ctf_mp_brecourt_axisflags "1"
seta scr_ctf_mp_brecourt_axisflag1_originx "3603"
seta scr_ctf_mp_brecourt_axisflag1_originy "-1434"
seta scr_ctf_mp_brecourt_axisflag1_originz "6"
V1.2b
=====
fixed a nasty bug that stopped v1.1 loading if you didn't have my server mod.
V1.3b
=====
made bases solid.
default spawn names in .maps are
mp_ctf_spawn_allied mp_ctf_Spawn_axis
but if it can't find them it will look for mp_searchanddestroy_allied_spawn etc
V1.4b
=====
fixed bug that stopped the flak's in brecourt from showing.
various changes to onscreen messages.
moved flag to a different player bone when picked up.
supported maps are now, brecourt, harbor and hurtgen, more to come soon :)
V1.5b
=====
players no longer playing, drop the flag immediately.
the flag objective marker on the compass, stays with the flag now when it's dropped and respawns.
V1.6b
=====
flags now setup to cover these maps:
brecourt, hurtgen, harbor, carentan, dawnville, depot, pavlov, rocket, railyard and powcamp.
flag now visible when dropped away from a base.
V1.7b
=====
flag is now a flag, not a beer bottle ;)
corrected flag positions for allies in rocket and pavlov's house.
V1.8b
=====
Map won't start until at least 1 player is on each team.
Then it waits for a set time allowing other players to join the teams.
It then does a 3 second countdown to the map starting.
* this gives time for slow connections to join the server and choose a team after a map rotation.
Flags immeditately return to base if a team recovers them.
Option to disable pressing USE to pickup a flag (thus you can just touch them/run over them) (scr_ctf_mustpressuse).
You can only see the enemies flag position on the compass (not your own), both bases are visible.
Capture and grab sounds added when a flag is touched.
3 second countdown before the map begins.
Only allow 1 flag to be picked up at a time.
Uses the new scr_team_balance cvar, to force auto balanced teams.
Uses Ravirs server tool, you'll need this mod installed.
Hud icon visible (lower left) so you know your carring a flag.
Option to enable/disable the messages when a player picks up/drops the flag when not near a base. (default is off)
scr_ctf_flagmessages "0"
Spectators are forced to follow team members, they can goto next/previous team member.
Kill cam can be disabled, scr_showkillcam "0".
Player can immediately respawn scr_forcerespawn "1"
Players respawn in waves set scr_respawndelay "30" time in seconds for next wave, it resets when it's 0 and 1st player dies
and joins current wave.
Players can be invunerable when respawning, set scr_respawninvun "5" time in seconds.
Minor changes to onscreen messages, including resetting text back to white.
V1.9
----
Using icons instead of text for 'Allied players' / 'Axis players' on wait screen.
Player carrying a flag has a status icon.
When you pickup a flag, the hud icon animates (unless scr_ctf_showcarrieranim is set to 0) thanks to Ravir for this :)
Flag scores now on players hud (lower right corner).
Points awarded to players:
1 = kill enemy
2 = assist a player who's carrying a flag *
2 = pickup enemy flag
3 = recover your flag
5 = score a flag point
* (assist not working yet.), you have to be near flag carrier when they pickup/score with flag, or when u kill enemy players
Next version
------------
Enable assist points.
Make flags stand vertical.
Option 2 remove all weapons when carrying flag, or just give player a pistol (that flag is heavy afterall).
Add in new flag models 1 per nation.
New icons for compass.
Spawn barrel or crate depending on if map already has them, thus they will have collision.
Future ideas:
-------------
open to suggestions.
by ScorpioMidget