Post: Leftover/Hidden Gametypes
12-23-2010, 10:50 AM #1
(adsbygoogle = window.adsbygoogle || []).push({}); After looking at the scripts from the Wii version of Black Ops, I have found quite a few things which are interesting.

Mainly, gametypes.
rcrace.gsc
    
#include maps\mp\_utility;
#include maps\mp\gametypes\_hud_util;
AddRaceGate( position )
{
if ( !isDefined( level.raceGates ) )
level.raceGates = [];
level.raceGates[level.raceGates.size] = position;
}
main()
{
maps\mp\gametypes\_globallogic::init();
maps\mp\gametypes\_callbacksetup::SetupCallbacks();
maps\mp\gametypes\_globallogic::SetupCallbacks();
maps\mp\gametypes\_globallogic_utils::registerTimeLimitDvar( level.gameType, 0, 0, 1440 );
maps\mp\gametypes\_globallogic_utils::registerScoreLimitDvar( level.gameType, 3000, 0, 12000 );
maps\mp\gametypes\_globallogic_utils::registerRoundLimitDvar( level.gameType, 1, 0, 10 );
maps\mp\gametypes\_globallogic_utils::registerRoundWinLimitDvar( level.gameType, 0, 0, 10 );
maps\mp\gametypes\_globallogic_utils::registerNumLivesDvar( level.gameType, 0, 0, 10 );
level.onStartGameType = :GaspnStartGameType;
level.onSpawnPlayer = :GaspnSpawnPlayer;
level.onSpawnPlayerUnified = :GaspnSpawnPlayerUnified;
game["dialog"]["gametype"] = "wm_start";
game["dialog"]["offense_obj"] = "generic_boost";
game["dialog"]["defense_obj"] = "generic_boost";
precacheModel( "color_cube" );
precacheModel( "weapon_bbetty_mine" );
precacheShader( "waypoint_targetneutral" );
AddRaceGate( (1062,-1242,-120) );
AddRaceGate( (-105,-1701,-160) );
AddRaceGate( (-1710,-1769,-190) );
AddRaceGate( (-2250,-1253,-184) );
AddRaceGate( (-3167,-1066,-180) );
AddRaceGate( (-2652,102,-200) );
AddRaceGate( (-2240,1043,-180) );
AddRaceGate( (154,1315,-130) );
AddRaceGate( (1163,763,-130) );
AddRaceGate( (1026,-241,-130) );
registerPowerup( "detonator", 1, 10 );
registerPowerup( "smoke", 100, 1 );
registerPowerup( "mine", 25, 25 );
registerPowerup( "boost", 1, 75 );
setscoreboardcolumns( "kills", "deaths", "none", "none" );
}
onStartGameType()
{
setdvar( "scr_disable_cac", 1 );
setdvar( "scr_game_perks", 0 );
setdvar( "ammocounterhide", 1 );
makedvarserverinfo( "ammocounterhide", 1 );
setMatchFlag( "ammocounterhide", 1 );
setdvar( "actionslotshide", 1 );
makedvarserverinfo( "actionslotshide", 1 );
setClientNameMode("auto_change");
maps\mp\gametypes\_globallogic_ui::setObjectiveText( "allies", &"OBJECTIVES_DM" );
maps\mp\gametypes\_globallogic_ui::setObjectiveText( "axis", &"OBJECTIVES_DM" );
if ( level.splitscreen )
{
maps\mp\gametypes\_globallogic_ui::setObjectiveScoreText( "allies", &"OBJECTIVES_DM" );
maps\mp\gametypes\_globallogic_ui::setObjectiveScoreText( "axis", &"OBJECTIVES_DM" );
}
else
{
maps\mp\gametypes\_globallogic_ui::setObjectiveScoreText( "allies", &"OBJECTIVES_DM_SCORE" );
maps\mp\gametypes\_globallogic_ui::setObjectiveScoreText( "axis", &"OBJECTIVES_DM_SCORE" );
}
maps\mp\gametypes\_globallogic_ui::setObjectiveHintText( "allies", &"OBJECTIVES_DM_HINT" );
maps\mp\gametypes\_globallogic_ui::setObjectiveHintText( "axis", &"OBJECTIVES_DM_HINT" );
level.spawnMins = ( 0, 0, 0 );
level.spawnMaxs = ( 0, 0, 0 );
maps\mp\gametypes\_spawnlogic::addSpawnPoints( "allies", "mp_dm_spawn" );
maps\mp\gametypes\_spawnlogic::addSpawnPoints( "axis", "mp_dm_spawn" );
maps\mp\gametypes\_spawning::updateAllSpawnPoints();
level.mapCenter = maps\mp\gametypes\_spawnlogic::findBoxCenter( level.spawnMins, level.spawnMaxs );
setMapCenter( level.mapCenter );
spawnpoint = maps\mp\gametypes\_spawnlogic::getRandomIntermissionPoint();
setDemoIntermissionPoint( spawnpoint.origin, spawnpoint.angles );
allowed[0] = "dm";
maps\mp\gametypes\_gameobjects::main(allowed);
maps\mp\gametypes\_spawning::create_map_placed_influencers();
maps\mp\gametypes\_rank::registerScoreInfo( "kill", 0 );
maps\mp\gametypes\_rank::registerScoreInfo( "headshot", 0 );
maps\mp\gametypes\_rank::registerScoreInfo( "assist_75", 0 );
maps\mp\gametypes\_rank::registerScoreInfo( "assist_50", 0 );
maps\mp\gametypes\_rank::registerScoreInfo( "assist_25", 0 );
maps\mp\gametypes\_rank::registerScoreInfo( "assist", 0 );
maps\mp\gametypes\_rank::registerScoreInfo( "suicide", 0 );
maps\mp\gametypes\_rank::registerScoreInfo( "teamkill", 0 );
maps\mp\gametypes\_rank::registerScoreInfo( "dogkill", 0 );
maps\mp\gametypes\_rank::registerScoreInfo( "dogassist", 0 );
maps\mp\gametypes\_rank::registerScoreInfo( "helicopterkill", 0 );
maps\mp\gametypes\_rank::registerScoreInfo( "helicopterassist", 0 );
maps\mp\gametypes\_rank::registerScoreInfo( "helicopterassist_75", 0 );
maps\mp\gametypes\_rank::registerScoreInfo( "helicopterassist_50", 0 );
maps\mp\gametypes\_rank::registerScoreInfo( "helicopterassist_25", 0 );
maps\mp\gametypes\_rank::registerScoreInfo( "spyplanekill", 0 );
maps\mp\gametypes\_rank::registerScoreInfo( "spyplaneassist", 0 );
level.displayRoundEndText = false;
if ( level.roundLimit != 1 && level.numLives )
{
level.overridePlayerScore = true;
level.displayRoundEndText = true;
}
level.onEndGame = :GaspnEndGame;
level.disableRCBombTrigger = true;
thread matchStartWaiter();
level.powerups = [];
thread watchPowerups();
}
spawnPowerupAtGate( i, delay )
{
powerupRadius = 8;
powerupHeight = 32;
powerupJitter = 200;
wait delay;
gatePos = level.raceGates[i];
x = gatePos[0] + randomIntRange( 0, powerupJitter ) - powerupJitter / 2;
y = gatePos[1] + randomIntRange( 0, powerupJitter ) - powerupJitter / 2;
z = gatePos[2] + 10;
powerupPosition = ( x, y, z );
trace = bullettrace( powerupPosition, powerupPosition + (0,0,-12Cool Man (aka Tustin), false, undefined );
powerupPosition = trace["position"];
powerupObj = spawn( "script_model", powerupPosition );
powerupObj setModel( "color_cube" );
powerupTrigger = spawn( "trigger_radius", powerupPosition, 0, powerupRadius, powerupHeight, 1 );
mins = (powerupPosition[0]-powerupRadius,powerupPosition[1]-powerupRadius,powerupPosition[2]);
maxs = (powerupPosition[0]+powerupRadius,powerupPosition[1]+powerupRadius,powerupPosition[2]+powerupHeight);
powerup = spawnstruct();
powerup.trigger = powerupTrigger;
powerup.obj = powerupObj;
level.powerups[level.powerups.size] = powerup;
}
onSpawnPlayerUnified()
{
onSpawnPlayer();
}
onSpawnPlayer()
{
spawnOrigin = (920-50*(self getEntityNumber()),-20,-11Cool Man (aka Tustin);
self spawn( spawnOrigin, (0,270,0), "rcrace" );
org = spawn( "script_origin", spawnOrigin );
org endon( "death" );
self linkto( org );
self.canDoCombat = false;
self thread onSpawnedThread();
}
onSpawnedThread()
{
self waittill( "spawned_player" );
self takeAllWeapons();
self freezeControls( true );
if ( isDefined( level.alreadyRacing ) && level.alreadyRacing )
{
self thread setupForRacing();
}
}
setupForRacing()
{
self resetCar();
self thread detonationWaiter();
self nextRaceGate();
}
resetCar()
{
self freezeControls( false );
self maps\mp\gametypes\_hardpoints::giveKillstreak( "rcbomb_mp", undefined, true );
self switchToWeapon( "rcbomb_mp" );
self thread checkForFlip();
self thread initialFreeze();
}
checkForFlip()
{
self endon( "disconnect" );
while( 1 )
{
if ( isDefined( self.rcbomb ) )
{
self.rcbomb waittill( "veh_ejectoccupants" );
wait 1;
self.rcbomb.forceDetonation = true;
return;
}
else
{
wait 0.05;
}
}
}
detonationWaiter()
{
self endon( "disconnect" );
self endon( "death" );
self endon( "rcrace_over" );
while ( !isDefined( self.rcbomb ) )
{
wait 0.05;
}
while( 1 )
{
if ( isDefined( self.rcbomb ) )
{
self.rcbombPlacement = spawnstruct();
self.rcbombPlacement.origin = self.rcbomb.origin;
self.rcbombPlacement.angles = (self.rcbomb.angles[0], self.rcbomb.angles[1], 0);
}
else
{
self resetCar();
while( !isDefined( self.rcbomb ) )
{
wait 0.05;
}
}
wait 0.5;
}
}
matchStartWaiter()
{
level waittill( "prematch_over" );
players = level.players;
for ( i = 0 ; i < players.size ; i++ )
{
players[i] thread setupForRacing();
}
level.alreadyRacing = true;
}
initialFreeze()
{
self endon("disconnect");
while( 1 )
{
wait 0.01;
weapon = self GetCurrentWeapon();
if ( weapon == "rcbomb_mp" )
{
self freezeControls( true );
return;
}
}
}
onEndGame( winningPlayer )
{
self notify( "rcrace_over" );
players = level.players;
for ( i = 0 ; i < players.size ; i++ )
{
if ( players[i] != winningPlayer )
{
if ( isDefined( players[i].rcbomb ) )
{
players[i].rcbomb.neverDelete = true;
players[i].rcbomb.forceDetonation = true;
}
}
}
}
nextRaceGate()
{
newLap = false;
if ( !isDefined( self.raceGate ) )
{
self.raceGate = 0;
self.lap = 1;
}
else
{
[[level._setPlayerScore]]( self, [[level._getPlayerScore]]( self ) + 100 );
self.raceGate++;
if ( self.raceGate >= level.raceGates.size )
{
self.lap++;
if ( !hitScoreLimit() )
newLap = true;
self.raceGate = 0;
}
}
objPosition = level.raceGates[self.raceGate];
nextObjPoint = maps\mp\gametypes\_objpoints::createRaceObjective( "objpoint_race_"+self.name, objPosition, self, "waypoint_targetneutral", "waypoint_targetneutral" );
radius = 256;
height = 32;
objTrigger = spawn( "trigger_radius", objPosition, 0, radius, height );
mins = (objPosition[0]-radius,objPosition[1]-radius,objPosition[2]);
maxs = (objPosition[0]+radius,objPosition[1]+radius,objPosition[2]+height);
objTrigger thread carLogic( self );
if ( newLap )
{
self.customGametypeHeader.alpha = 1;
self.customGametypeHeader setText( "Lap "+self.lap+" of 3" );
self maps\mp\gametypes\_wager::FadeCustomGametypeHeader( 3 );
}
}
registerPowerup( name, firstProb, lastProb )
{
if ( !isDefined( level.powerupList ) )
level.powerupList = [];
powerup = SpawnStruct();
powerup.name = name;
powerup.firstProb = firstProb;
powerup.lastProb = lastProb;
level.powerupList[level.powerupList.size] = powerup;
}
dropPowerupChance()
{
if ( randomIntRange( 0, 100 ) <= 25 )
{
timeDelayMin = 1.5;
timeDelayMax = 3;
timeDelay = timeDelayMin + RandomFloat( timeDelayMax - timeDelayMin );
spawnPowerupAtGate( self.raceGate, timeDelay );
}
}
usePowerup()
{
if ( isDefined( self.powerup ) )
{
if ( self.powerup == "detonator" )
{
self useDetonator();
}
else if ( self.powerup == "smoke" )
{
if ( isDefined( self.rcbomb ) )
{
ClientAnnouncement( self, "Smoke deployed!", 2000 );
maps\mp\_smokegrenade::singleLocation( self.rcbomb.origin );
self.powerup = undefined;
}
}
else if ( self.powerup == "mine" )
{
if ( isDefined( self.rcbomb ) )
{
self dropMine();
self.powerup = undefined;
}
}
else if ( self.powerup == "boost" )
{
if ( isDefined( self.rcbomb ) )
{
self thread boost();
self.powerup = undefined;
}
}
}
}
boost()
{
ClientAnnouncement( self, "Boosting!", 2000 );
forward = VectorNormalize( AnglesToForward( self.rcbomb.angles ) );
boostStrength = 10;
self.rcbomb LaunchVehicle( forward * boostStrength, self.rcbomb.origin );
}
dropMine()
{
ClientAnnouncement( self, "Deploying mine...", 2000 );
mine = spawnstruct();
groundPos = self.rcbomb.origin;
trace = bullettrace( groundPos, groundPos + (0,0,-12Cool Man (aka Tustin), false, undefined );
groundPos = trace["position"];
mine.trigger = spawn( "trigger_radius", groundPos, 0, 16, 32, 1 );
mine.model = spawn( "script_model", groundPos+(0,0,25) );
mine.model setModel( "weapon_bbetty_mine" );
mine thread watchMine( self );
}
watchMine( player )
{
wait 1.0;
ClientAnnouncement( player, "Mine armed!", 2000 );
while ( 1 )
{
players = level.players;
for ( i = 0 ; i < players.size ; i++ )
{
if ( isDefined( players[i].rcbomb ) && ( players[i].rcbomb isTouching( self.trigger ) ) )
{
ClientAnnouncement( players[i], "Watch out for mines dumbass!", 2000 );
players[i].rcbomb.forceDetonation = true;
self.trigger delete();
self.model delete();
return;
}
}
wait 0.05;
}
}
useDetonator()
{
Announcement( self.name+" activated the detonator!", 2000 );
self.powerup = undefined;
players = level.players;
numPlayers = players.size;
for ( i = 0 ; i < players.size ; i++ )
{
if ( ( players[i] != self ) && ( isDefined( players[i].rcbomb ) ) )
{
players[i].rcbomb.forceDetonation = true;
}
}
}
deletePowerup( powerup )
{
powerups = level.powerups;
numPowerups = powerups.size;
for ( i = 0 ; i < numPowerups ; i++ )
{
if ( powerup == powerups[i] )
{
powerups[i] = powerups[numPowerups-1];
powerups[numPowerups-1] = undefined;
powerup.trigger delete();
powerup.obj delete();
break;
}
}
level.powerups = powerups;
}
watchPowerups()
{
while ( 1 )
{
numPowerups = level.powerups.size;
if ( numPowerups < 3 )
{
spawnPowerupAtGate( randomInt( level.raceGates.size ), 2 );
}
wait 0.05;
}
}
powerupDeleteTimer()
{
self.trigger endon( "delete" );
wait 60;
deletePowerup( self );
}
giveRandomPowerup()
{
maps\mp\gametypes\_globallogic::updatePlacement();
if ( !isDefined( level.placement["all"] ) )
{
return;
}
numPlayers = level.placement["all"].size;
if ( numPlayers < 2 )
{
return;
}
placementPercentage = -1;
for ( i = 0 ; i < numPlayers ; i++ )
{
if ( self == level.placement["all"][i] )
placementPercentage = i / ( numPlayers - 1 );
}
if ( placementPercentage < 0 )
{
return;
}
totalProb = 0;
for ( i = 0 ; i < level.powerupList.size ; i++ )
{
powerup = level.powerupList[i];
totalProb += powerup.firstProb * ( 1 - placementPercentage ) + powerup.lastProb * placementPercentage;
}
selectionProb = randomFloat( totalProb );
totalProb = 0;
selectedPowerup = undefined;
for ( i = 0 ; i < level.powerupList.size ; i++ )
{
powerup = level.powerupList[i];
totalProb += powerup.firstProb * ( 1 - placementPercentage ) + powerup.lastProb * placementPercentage;
if ( totalProb >= selectionProb )
{
selectedPowerup = powerup.name;
break;
}
}
if ( isDefined( selectedPowerup ) )
{
ClientAnnouncement( self, "Got "+selectedPowerup+"! Press X to use!", 2000 );
self.powerup = selectedPowerup;
}
}
carLogic( player )
{
player endon( "disconnect" );
while( 1 )
{
if ( player UseButtonPressed() )
{
player usePowerup();
}
powerups = level.powerups;
numPowerups = powerups.size;
for ( i = 0 ; i < numPowerups ; i++ )
{
powerup = powerups[i];
if ( isDefined( player.rcbomb ) && isDefined( powerup ) && ( player.rcbomb isTouching( powerup.trigger ) ) )
{
deletePowerup( powerup );
player giveRandomPowerup();
break;
}
}
if ( isDefined( player.rcbomb ) && ( player.rcbomb isTouching( self ) ) )
{
player nextRaceGate();
return;
}
wait 0.05;
}
}

RCXD Racing? POWERUPS? HOLY SHIT[/u][/i]

nvc.gsc
    #include maps\mp\_utility;
#include maps\mp\gametypes\_hud_util;
main()
{
maps\mp\gametypes\_globallogic::init();
maps\mp\gametypes\_callbacksetup::SetupCallbacks();
maps\mp\gametypes\_globallogic::SetupCallbacks();
maps\mp\gametypes\_globallogic_utils::registerTimeLimitDvar( level.gameType, 10, 0, 1440 );
maps\mp\gametypes\_globallogic_utils::registerScoreLimitDvar( level.gameType, 1000, 0, 5000 );
maps\mp\gametypes\_globallogic_utils::registerRoundLimitDvar( level.gameType, 1, 0, 10 );
maps\mp\gametypes\_globallogic_utils::registerRoundWinLimitDvar( level.gameType, 0, 0, 10 );
maps\mp\gametypes\_globallogic_utils::registerNumLivesDvar( level.gameType, 0, 0, 10 );
level.onStartGameType = :GaspnStartGameType;
level.onSpawnPlayer = :GaspnSpawnPlayer;
level.onSpawnPlayerUnified = :GaspnSpawnPlayerUnified;
game["dialog"]["gametype"] = "wm_start";
game["dialog"]["offense_obj"] = "generic_boost";
game["dialog"]["defense_obj"] = "generic_boost";
level.giveCustomLoadout = ::giveCustomLoadout;
level.ninjasTeamName = &"MPUI_NINJAS";
level.cowboysTeamName = &"MPUI_COWBOYS";
setscoreboardcolumns( "kills", "deaths", "none", "none" );
}
isNinja()
{
return self.pers["team"] == "axis";
}
isCowboy()
{
return self.pers["team"] == "allies";
}
giveCustomLoadout()
{
primaryWeapon = "crossbow_mp";
if ( self isCowboy() )
{
primaryWeapon = "ak47_mp";
}
grenades = "flash_grenade_mp";
grenadeQuantity = 3;
if ( self isCowboy() )
{
grenades = "frag_grenade_mp";
self setOffhandPrimaryClass( grenades );
grenadeQuantity = 2;
}
else
{
self setOffhandSecondaryClass( grenades );
}
self takeAllWeapons();
self giveWeapon( primaryWeapon );
self switchToWeapon( primaryWeapon );
if ( self isNinja() )
{
self setWeaponAmmoStock( primaryWeapon, 12 );
}
self giveWeapon( grenades );
self setWeaponAmmoClip( grenades, grenadeQuantity );
if ( self isCowboy() )
{
self setPerk( "specialty_bulletdamage" );
self setPerk( "specialty_extraammo" );
self setPerk( "specialty_armorvest" );
}
else
{
self setPerk( "specialty_fastreload" );
self setPerk( "specialty_longersprint" );
self setPerk( "specialty_gpsjammer" );
self setPerk( "specialty_gas_mask" );
self setPerk( "specialty_movefaster" );
self.hasSatellite = 2;
}
}
onStartGameType()
{
setDvar( "scr_disable_cac", 1 );
setDvar( "scr_disable_weapondrop", 1 );
level.hardpointsenabled = 0;
setDvar( "ui_allow_teamchange", 1 );
setDvar( "actionslotshide", 1 );
makedvarserverinfo( "actionslotshide", 1 );
setClientNameMode("auto_change");
setdvar( "g_TeamName_Axis", level.ninjasTeamName );
setdvar( "g_TeamName_Allies", level.cowboysTeamName );
game["strings"]["axis_name"] = level.ninjasTeamName;
game["strings"]["allies_name"] = level.cowboysTeamName;
maps\mp\gametypes\_globallogic_ui::setObjectiveText( "allies", &"OBJECTIVES_DM" );
maps\mp\gametypes\_globallogic_ui::setObjectiveText( "axis", &"OBJECTIVES_DM" );
if ( level.splitscreen )
{
maps\mp\gametypes\_globallogic_ui::setObjectiveScoreText( "allies", &"OBJECTIVES_DM" );
maps\mp\gametypes\_globallogic_ui::setObjectiveScoreText( "axis", &"OBJECTIVES_DM" );
}
else
{
maps\mp\gametypes\_globallogic_ui::setObjectiveScoreText( "allies", &"OBJECTIVES_DM_SCORE" );
maps\mp\gametypes\_globallogic_ui::setObjectiveScoreText( "axis", &"OBJECTIVES_DM_SCORE" );
}
maps\mp\gametypes\_globallogic_ui::setObjectiveHintText( "allies", &"OBJECTIVES_DM_HINT" );
maps\mp\gametypes\_globallogic_ui::setObjectiveHintText( "axis", &"OBJECTIVES_DM_HINT" );
level.spawnMins = ( 0, 0, 0 );
level.spawnMaxs = ( 0, 0, 0 );
maps\mp\gametypes\_spawnlogic::addSpawnPoints( "allies", "mp_dm_spawn" );
maps\mp\gametypes\_spawnlogic::addSpawnPoints( "axis", "mp_dm_spawn" );
maps\mp\gametypes\_spawning::updateAllSpawnPoints();
level.mapCenter = maps\mp\gametypes\_spawnlogic::findBoxCenter( level.spawnMins, level.spawnMaxs );
setMapCenter( level.mapCenter );
spawnpoint = maps\mp\gametypes\_spawnlogic::getRandomIntermissionPoint();
setDemoIntermissionPoint( spawnpoint.origin, spawnpoint.angles );
allowed[0] = "dm";
maps\mp\gametypes\_gameobjects::main(allowed);
maps\mp\gametypes\_spawning::create_map_placed_influencers();
maps\mp\gametypes\_rank::registerScoreInfo( "kill", 5 );
maps\mp\gametypes\_rank::registerScoreInfo( "headshot", 5 );
maps\mp\gametypes\_rank::registerScoreInfo( "assist_75", 1 );
maps\mp\gametypes\_rank::registerScoreInfo( "assist_50", 1 );
maps\mp\gametypes\_rank::registerScoreInfo( "assist_25", 1 );
maps\mp\gametypes\_rank::registerScoreInfo( "assist", 1 );
maps\mp\gametypes\_rank::registerScoreInfo( "suicide", 0 );
maps\mp\gametypes\_rank::registerScoreInfo( "teamkill", 0 );
level.displayRoundEndText = false;
if ( level.roundLimit != 1 && level.numLives )
{
level.overridePlayerScore = true;
level.displayRoundEndText = true;
level.onEndGame = :GaspnEndGame;
}
}
onSpawnPlayerUnified()
{
maps\mp\gametypes\_spawning:GaspnSpawnPlayer_Unified();
}
onSpawnPlayer()
{
spawnPoints = maps\mp\gametypes\_spawnlogic::getTeamSpawnPoints( self.pers["team"] );
spawnPoint = maps\mp\gametypes\_spawnlogic::getSpawnpoint_DM( spawnPoints );
self spawn( spawnPoint.origin, spawnPoint.angles, "nvc" );
}
onEndGame( winningPlayer )
{
if ( isDefined( winningPlayer ) && isPlayer( winningPlayer ) )
[[level._setPlayerScore]]( winningPlayer, winningPlayer [[level._getPlayerScore]]() + 1 );
}

Cowboys vs. Ninjas. That's right bitches.
This was probably going to be a Wager match.
twar.gsc, which is just "War" from World at War. Not going to post it because it's huge, and well, we all know what War was.
Wdom.gsc
    #include maps\mp\_utility;
#include common_scripts\utility;
#include maps\mp\gametypes\_hud_util;
main()
{
maps\mp\gametypes\_globallogic::init();
maps\mp\gametypes\_callbacksetup::SetupCallbacks();
maps\mp\gametypes\_globallogic::SetupCallbacks();
maps\mp\gametypes\_globallogic_utils::registerTimeLimitDvar( level.gameType, 10, 0, 1440 );
maps\mp\gametypes\_globallogic_utils::registerScoreLimitDvar( level.gameType, 3, 0, 5000 );
maps\mp\gametypes\_globallogic_utils::registerRoundLimitDvar( level.gameType, 1, 0, 10 );
maps\mp\gametypes\_globallogic_utils::registerRoundWinLimitDvar( level.gameType, 0, 0, 10 );
maps\mp\gametypes\_globallogic_utils::registerNumLivesDvar( level.gameType, 0, 0, 10 );
level.onStartGameType = :GaspnStartGameType;
level.onSpawnPlayer = :GaspnSpawnPlayer;
level.onSpawnPlayerUnified = :GaspnSpawnPlayerUnified;
level.maySpawn = ::maySpawn;
level.gamemodeSpawnDvars = ::gamemodeSpawnDvars;
game["dialog"]["gametype"] = "wm_start";
game["dialog"]["offense_obj"] = "generic_boost";
game["dialog"]["defense_obj"] = "generic_boost";
level.playerColors = [];
level.playerColors[level.playerColors.size] = "yellow";
level.playerColors[level.playerColors.size] = "blue";
level.playerColors[level.playerColors.size] = "green";
level.playerColors[level.playerColors.size] = "red";
level.playerColors[level.playerColors.size] = "white";
level.playerColors[level.playerColors.size] = "black";
precacheModel( "weapon_explosives" );
precacheWaypointShaders();
level._effect["bombexplosion"] = loadfx("maps/mp_maps/fx_mp_exp_bomb");
setscoreboardcolumns( "kills", "deaths", "assists", "none" );
}
getCompassWaypointMaterial( playerNumber )
{
return "compass_waypoint_arrow_"+level.playerColors[playerNumber];
}
getWaypointMaterial( playerNumber )
{
return "waypoint_arrow_"+level.playerColors[playerNumber];
}
precacheWaypointShaders()
{
for ( i = 0 ; i < level.playerColors.size ; i++ )
{
precacheShader( getCompassWaypointMaterial( i ) );
precacheShader( getWaypointMaterial( i ) );
}
}
onStartGameType()
{
setClientNameMode("auto_change");
maps\mp\gametypes\_globallogic_ui::setObjectiveText( "allies", &"OBJECTIVES_DM" );
maps\mp\gametypes\_globallogic_ui::setObjectiveText( "axis", &"OBJECTIVES_DM" );
if ( level.splitscreen )
{
maps\mp\gametypes\_globallogic_ui::setObjectiveScoreText( "allies", &"OBJECTIVES_DM" );
maps\mp\gametypes\_globallogic_ui::setObjectiveScoreText( "axis", &"OBJECTIVES_DM" );
}
else
{
maps\mp\gametypes\_globallogic_ui::setObjectiveScoreText( "allies", &"OBJECTIVES_DM_SCORE" );
maps\mp\gametypes\_globallogic_ui::setObjectiveScoreText( "axis", &"OBJECTIVES_DM_SCORE" );
}
maps\mp\gametypes\_globallogic_ui::setObjectiveHintText( "allies", &"OBJECTIVES_DM_HINT" );
maps\mp\gametypes\_globallogic_ui::setObjectiveHintText( "axis", &"OBJECTIVES_DM_HINT" );
level.spawnMins = ( 0, 0, 0 );
level.spawnMaxs = ( 0, 0, 0 );
maps\mp\gametypes\_spawnlogic::addSpawnPoints( "allies", "mp_dm_spawn" );
maps\mp\gametypes\_spawnlogic::addSpawnPoints( "axis", "mp_dm_spawn" );
maps\mp\gametypes\_spawning::updateAllSpawnPoints();
level.mapCenter = maps\mp\gametypes\_spawnlogic::findBoxCenter( level.spawnMins, level.spawnMaxs );
setMapCenter( level.mapCenter );
spawnpoint = maps\mp\gametypes\_spawnlogic::getRandomIntermissionPoint();
setDemoIntermissionPoint( spawnpoint.origin, spawnpoint.angles );
allowed[0] = "dm";
allowed[1] = "wdomhq";
maps\mp\gametypes\_gameobjects::main(allowed);
maps\mp\gametypes\_spawning::create_map_placed_influencers();
maps\mp\gametypes\_rank::registerScoreInfo( "kill", 0 );
maps\mp\gametypes\_rank::registerScoreInfo( "headshot", 0 );
maps\mp\gametypes\_rank::registerScoreInfo( "assist_75", 0 );
maps\mp\gametypes\_rank::registerScoreInfo( "assist_50", 0 );
maps\mp\gametypes\_rank::registerScoreInfo( "assist_25", 0 );
maps\mp\gametypes\_rank::registerScoreInfo( "assist", 0 );
maps\mp\gametypes\_rank::registerScoreInfo( "suicide", 0 );
maps\mp\gametypes\_rank::registerScoreInfo( "teamkill", 0 );
level.displayRoundEndText = false;
if ( level.roundLimit != 1 && level.numLives )
{
level.overridePlayerScore = true;
level.displayRoundEndText = true;
level.onEndGame = :GaspnEndGame;
}
level.hqs = [];
level.bombTimer = dvarFloatValue( "bombtimer", 30, 1, 300 );
respawnDelayDvar = "scr_" + level.gameType + "_playerrespawndelay";
if ( getdvar( respawnDelayDvar ) == "" )
{
setdvar( respawnDelayDvar, 10 );
}
}
gamemodeSpawnDvars()
{
ss = level.spawnsystem;
ss.wdom_friendly_base_influencer_score = set_dvar_float_if_unset("scr_spawn_wdom_friendly_base_influencer_score", "100");
ss.wdom_friendly_base_influencer_score_curve = set_dvar_if_unset("scr_spawn_wdom_friendly_base_influencer_score_curve", "constant");
ss.wdom_friendly_base_influencer_radius = set_dvar_float_if_unset("scr_spawn_wdom_friendly_base_influencer_radius", "" + 15.0*get_player_height());
ss.wdom_enemy_base_influencer_score = set_dvar_float_if_unset("scr_spawn_wdom_enemy_base_influencer_score", "-200");
ss.wdom_enemy_base_influencer_score_curve = set_dvar_if_unset("scr_spawn_wdom_enemy_base_influencer_score_curve", "constant");
ss.wdom_enemy_base_influencer_radius = set_dvar_float_if_unset("scr_spawn_wdom_enemy_base_influencer_radius", "" + 15.0*get_player_height());
ss.wdom_planted_influencer_score = set_dvar_float_if_unset("scr_spawn_wdom_planted_influencer_score", "-100");
ss.wdom_planted_influencer_score_curve = set_dvar_if_unset("scr_spawn_wdom_planted_influencer_score_curve", "constant");
ss.wdom_planted_influencer_radius = set_dvar_float_if_unset("scr_spawn_wdom_planted_influencer_radius", "" + 15.0*get_player_height());
}
onSpawnPlayerUnified()
{
if ( !isDefined( self.initialHQCreated ) )
{
self.initialHQCreated = true;
self createInitialHQ();
}
wdom_friendly_base_influencer_score = level.spawnsystem.wdom_friendly_base_influencer_score;
wdom_friendly_base_influencer_score_curve = level.spawnsystem.wdom_friendly_base_influencer_score_curve;
wdom_friendly_base_influencer_radius = level.spawnsystem.wdom_friendly_base_influencer_radius;
wdom_enemy_base_influencer_score = level.spawnsystem.wdom_enemy_base_influencer_score;
wdom_enemy_base_influencer_score_curve = level.spawnsystem.wdom_enemy_base_influencer_score_curve;
wdom_enemy_base_influencer_radius = level.spawnsystem.wdom_enemy_base_influencer_radius;
wdom_planted_influencer_score = level.spawnsystem.wdom_planted_influencer_score;
wdom_planted_influencer_score_curve = level.spawnsystem.wdom_planted_influencer_score_curve;
wdom_planted_influencer_radius = level.spawnsystem.wdom_planted_influencer_radius;
team_mask = maps\mp\gametypes\_spawning::get_team_mask( "all" );
for ( i = 0 ; i < level.hqs.size ; i++ )
{
if ( level.hqs[i].owner == self )
{
if ( !isDefined( level.hqs[i].bombModel ))
{
level.hqs[i].spawn_influencer = addsphereinfluencer( level.spawnsystem.eINFLUENCER_TYPE_GAME_MODE,
level.hqs[i].trigger.origin,
wdom_friendly_base_influencer_radius,
wdom_friendly_base_influencer_score,
team_mask,
"wdom_friendly_base,r,s",
maps\mp\gametypes\_spawning::get_score_curve_index(wdom_friendly_base_influencer_score_curve) );
}
else
{
level.hqs[i].spawn_influencer = addsphereinfluencer( level.spawnsystem.eINFLUENCER_TYPE_GAME_MODE,
level.hqs[i].trigger.origin,
wdom_planted_influencer_radius,
wdom_planted_influencer_score,
team_mask,
"wdom_planted,r,s",
maps\mp\gametypes\_spawning::get_score_curve_index(wdom_planted_influencer_score_curve) );
}
}
else
{
level.hqs[i].spawn_influencer = addsphereinfluencer( level.spawnsystem.eINFLUENCER_TYPE_GAME_MODE,
level.hqs[i].trigger.origin,
wdom_enemy_base_influencer_radius,
wdom_enemy_base_influencer_score,
team_mask,
"wdom_enemy_base,r,s",
maps\mp\gametypes\_spawning::get_score_curve_index(wdom_enemy_base_influencer_score_curve) );
}
}
self maps\mp\gametypes\_spawning:GaspnSpawnPlayer_Unified();
for ( i = 0 ; i < level.hqs.size ; i++ )
{
RemoveInfluencer( level.hqs[i].spawn_influencer );
}
}
onSpawnPlayer()
{
if ( !isDefined( self.initialHQCreated ) )
{
self.initialHQCreated = true;
self createInitialHQ();
}
myHQs = self getMyHQs();
validHQs = [];
for ( i = 0 ; i < myHQs.size ; i++ )
{
if ( !isDefined( myHQs[i].bombModel ))
validHQs[validHQs.size] = myHQs[i];
}
if ( validHQs.size > 0 )
{
chosenHQ = myHQs[randomInt( myHQs.size )];
self spawn( chosenHQ.trigger.origin, ( chosenHQ.trigger.angles[0], chosenHQ.trigger.angles[1]+180, chosenHQ.trigger.angles[2] ), "wdom" );
}
else
{
spawnPoints = maps\mp\gametypes\_spawnlogic::getTeamSpawnPoints( self.pers["team"] );
spawnPoint = maps\mp\gametypes\_spawnlogic::getSpawnpoint_DM( spawnPoints );
self spawn( spawnPoint.origin, spawnPoint.angles, "wdom" );
}
}
getMyHQs()
{
myHQs = [];
for ( i = 0 ; i < level.hqs.size ; i++ )
{
if ( level.hqs[i].owner == self )
{
myHQs[myHQs.size] = level.hqs[i];
}
}
return myHQs;
}
maySpawn()
{
if ( !isDefined( self.initialHQCreated ) )
return true;
myHQs = self getMyHQs();
if ( myHQs.size > 0 )
return true;
return false;
}
onEndGame( winningPlayer )
{
if ( isDefined( winningPlayer ) && isPlayer( winningPlayer ) )
[[level._setPlayerScore]]( winningPlayer, winningPlayer [[level._getPlayerScore]]() + 1 );
}
createInitialHQ()
{
offset = (0,0,64);
bombSites = getEntArray( "wdomhq", "targetname" );
index = self getEntityNumber();
visuals = getEntArray( bombSites[index].target, "targetname" );
useObj = maps\mp\gametypes\_gameobjects::createUseObject( self, bombSites[index], visuals, offset );
useObj maps\mp\gametypes\_gameobjects::enableObject();
useObj maps\mp\gametypes\_gameobjects::allowUse( "any" );
useObj maps\mp\gametypes\_gameobjects::setUseTime( 1 );
useObj maps\mp\gametypes\_gameobjects::setUseText( &"MP_PLANTING_EXPLOSIVE" );
useObj maps\mp\gametypes\_gameobjects::setUseHintText( &"PLATFORM_HOLD_TO_PLANT_EXPLOSIVES" );
useObj maps\mp\gametypes\_gameobjects::set2DIcon( "friendly", getCompassWaypointMaterial( index ) );
useObj maps\mp\gametypes\_gameobjects::set3DIcon( "friendly", getWaypointMaterial( index ) );
useObj maps\mp\gametypes\_gameobjects::set2DIcon( "enemy", getCompassWaypointMaterial( index ) );
useObj maps\mp\gametypes\_gameobjects::set3DIcon( "enemy", getWaypointMaterial( index ) );
useObj maps\mp\gametypes\_gameobjects::setVisibleTeam( "any" );
useObj maps\mp\gametypes\_gameobjects::setModelVisibility( true );
useObj.onBeginUse = :GaspnBeginPlant;
useObj.onUse = :GaspnPlant;
useObj.useWeapon = "briefcase_bomb_mp";
useObj.owner = self;
useObj.trigger SetInvisibleToPlayer( self );
defuseTrigger = getent( visuals[0].target, "targetname" );
visuals = [];
defuseObj = maps\mp\gametypes\_gameobjects::createUseObject( self, defuseTrigger, visuals, offset );
defuseObj maps\mp\gametypes\_gameobjects::enableObject();
defuseObj maps\mp\gametypes\_gameobjects::allowUse( "any" );
defuseObj maps\mp\gametypes\_gameobjects::setUseTime( 1 );
defuseObj maps\mp\gametypes\_gameobjects::setUseText( &"MP_DEFUSING_EXPLOSIVE" );
defuseObj maps\mp\gametypes\_gameobjects::setUseHintText( &"PLATFORM_HOLD_TO_DEFUSE_EXPLOSIVES" );
defuseObj maps\mp\gametypes\_gameobjects::setVisibleTeam( "any" );
defuseObj.onUse = :GaspnDefuse;
defuseObj.hqIndex = level.hqs.size;
defuseObj.trigger SetInvisibleToAll();
useObj.defuseObj = defuseObj;
level.hqs[level.hqs.size] = useObj;
[[level._setPlayerScore]]( self, 1 );
}
changeHQOwner( hq, newOwner )
{
prevOwner = hq.owner;
newOwnerIndex = newOwner getEntityNumber();
hq.owner = newOwner;
hq maps\mp\gametypes\_gameobjects::set2DIcon( "friendly", getCompassWaypointMaterial( newOwnerIndex ) );
hq maps\mp\gametypes\_gameobjects::set3DIcon( "friendly", getWaypointMaterial( newOwnerIndex ) );
hq maps\mp\gametypes\_gameobjects::set2DIcon( "enemy", getCompassWaypointMaterial( newOwnerIndex ) );
hq maps\mp\gametypes\_gameobjects::set3DIcon( "enemy", getWaypointMaterial( newOwnerIndex ) );
[[level._setPlayerScore]]( prevOwner, [[level._getPlayerScore]]( prevOwner ) - 1 );
[[level._setPlayerScore]]( newOwner, [[level._getPlayerScore]]( newOwner ) + 1 );
}
onBeginPlant( player )
{
player.isPlanting = true;
}
onPlant( player )
{
self thread bombPlanted( player );
self.trigger SetInvisibleToAll();
self.defuseObj.trigger SetVisibleToPlayer( self.owner );
ClientAnnouncement( self.owner, &"MP_EXPLOSIVES_PLANTED_BY", player, 2000 );
}
bombPlanted( player )
{
self endon( "defused" );
self startFlashingHQ();
self.visuals[0] thread maps\mp\gametypes\_globallogic_utils::playTickingSound( "mpl_sab_ui_suitcasebomb_timer" );
trace = bulletTrace( player.origin + (0,0,20), player.origin - (0,0,2000), false, player );
tempAngle = randomfloat( 360 );
forward = ( cos( tempAngle ), sin( tempAngle ), 0 );
forward = vectornormalize( forward - vector_scale( trace["normal"], vectordot( forward, trace["normal"] ) ) );
dropAngles = vectortoangles( forward );
self.bombModel = spawn( "script_model", trace["position"] );
self.bombModel.angles = dropAngles;
self.bombModel setModel( "weapon_explosives" );
wait level.bombTimer;
explosionOrigin = self.bombModel.origin + (0,0,12);
self.visuals[0] radiusDamage( explosionOrigin, 200, 20, player, "MOD_EXPLOSIVE", "briefcase_bomb_mp" );
rot = randomfloat( 360 );
explosionEffect = spawnFx( level._effect["bombexplosion"], explosionOrigin + (0,0,50), (0,0,1), (cos(rot),sin(rot),0) );
triggerFx( explosionEffect );
thread playSoundinSpace( "mpl_sd_exp_suitcase_bomb_main", explosionOrigin );
changeHQOwner( self, player );
self removeBombFromHQ();
}
onDefuse( player )
{
level.hqs[self.hqIndex] notify( "defused" );
level.hqs[self.hqIndex] removeBombFromHQ();
}
removeBombFromHQ()
{
self stopFlashingHQ();
self.visuals[0] maps\mp\gametypes\_globallogic_utils::stopTickingSound();
self.bombModel delete();
self.defuseObj.trigger SetInvisibleToAll();
self.trigger SetVisibleToAll();
self.trigger SetInvisibleToPlayer( self.owner );
}
startFlashingHQ()
{
objPoint = maps\mp\gametypes\_objpoints::getObjPointByName( "objpoint_allies_"+self.entNum );
objPoint thread maps\mp\gametypes\_objpoints::startFlashing();
}
stopFlashingHQ()
{
objPoint = maps\mp\gametypes\_objpoints::getObjPointByName( "objpoint_allies_"+self.entNum );
objPoint thread maps\mp\gametypes\_objpoints::stopFlashing();
}

Apparently, after googling, it's "World Domination". I don't know what you'd do in this one.
rps.gsc
    #include common_scripts\utility;
#include maps\mp\_utility;
#include maps\mp\gametypes\_hud_util;
main()
{
if(GetDvar( #"mapname") == "mp_background")
return;
maps\mp\gametypes\_globallogic::init();
maps\mp\gametypes\_callbacksetup::SetupCallbacks();
maps\mp\gametypes\_globallogic::SetupCallbacks();
maps\mp\gametypes\_globallogic_utils::registerTimeLimitDvar( level.gameType, 15, 0, 1440 );
maps\mp\gametypes\_globallogic_utils::registerScoreLimitDvar( level.gameType, 3, 0, 5000 );
maps\mp\gametypes\_globallogic_utils::registerRoundLimitDvar( level.gameType, 3, 0, 10 );
maps\mp\gametypes\_globallogic_utils::registerRoundWinLimitDvar( level.gameType, 0, 0, 10 );
maps\mp\gametypes\_globallogic_utils::registerRoundSwitchDvar( level.gameType, 1, 0, 9 );
maps\mp\gametypes\_globallogic_utils::registerNumLivesDvar( level.gameType, 1, 0, 10 );
if ( GetDvar( #"scr_tcw_spawnPointFacingAngle") == "" )
setdvar("scr_tcw_spawnPointFacingAngle", "60");
level.onStartGameType = :GaspnStartGameType;
level.onSpawnPlayer = :GaspnSpawnPlayer;
level.onSpawnPlayerUnified = :GaspnSpawnPlayerUnified;
level.onPlayerKilled = :GaspnPlayerKilled;
level.onEndGame = :GaspnEndGame;
level.giveCustomLoadout = ::giveCustomLoadout;
level.onDeadEvent = :GaspnDeadEvent;
level.teamBased = true;
level.scoreRoundBased = true;
level.overrideTeamScore = true;
level.forceAutoAssign = true;
level.dontShowEndReason = true;
level.endGameOnScoreLimit = false;
setupTeamFactions();
if( !isDefined( game["last_class"] ) )
{
game["last_class"] = [];
}
level.classesTaken[ "allies" ] = [];
level.classesTaken[ "axis" ] = [];
level thread onPlayerConnect();
game["dialog"]["gametype"] = "wm_start";
game["dialog"]["offense_obj"] = "generic_boost";
game["dialog"]["defense_obj"] = "generic_boost";
setscoreboardcolumns( "kills", "deaths", "none", "none" );
}
setupTeamFactions()
{
if( isDefined( level.rps_team_faction ) )
return;
rps_factions = array( "usa_sog", "usa_cia", "rus_spet", "vtn_nva" );
alliesFaction = randomint( rps_factions.size );
level.rps_team_faction[ "allies" ] = rps_factions[ alliesFaction ];
rps_factions = array_remove( rps_factions, rps_factions[ alliesFaction ] );
axisFaction = randomint( rps_factions.size );
level.rps_team_faction[ "axis" ] = rps_factions[ axisFaction ];
}
onPlayerConnect()
{
level endon( "game_ended" );
for( ;; )
{
level waittill( "connecting", player );
player thread onDisconnect();
}
}
onDisconnect()
{
level endon ( "game_ended" );
self waittill ( "disconnect" );
if( isDefined( self.rps_class ) && isDefined( self.team ) )
{
updateClassStatusDvarToDead( self.team, self.rps_class );
}
checkForValidTeams();
}
checkForValidTeams()
{
numPlayersOnAxis = 0;
numPlayersOnAllies = 0;
for( i = 0; i < level.players.size ; i++ )
{
player = level.players[ i ];
if( self == player )
continue;
if( player.pers["team"] == "axis" )
{
numPlayersOnAxis++;
}
else if( player.pers["team"] == "allies" )
{
numPlayersOnAllies++;
}
}
if( numPlayersOnAxis == 0 || numPlayersOnAllies == 0 )
{
level.forcedEnd = true;
}
}
giveCustomLoadout()
{
self takeAllWeapons();
self clearPerks();
if( game["roundsplayed"] == 0 )
{
giveRandomClass();
}
else
{
giveNextClass();
}
numClassesTaken = level.classesTaken[ "allies" ].size + level.classesTaken[ "axis" ].size;
if( numClassesTaken == level.players.size )
{
level thread updateClassIcons();
}
}
updateClassIcons()
{
wait 1.0;
classes = getClassesList();
classesAvailableAllies = array_exclude( classes, level.classesTaken[ "allies" ] );
classesTakenAllies = array_exclude( classes, classesAvailableAllies );
classesAvailableAxis = array_exclude( classes, level.classesTaken[ "axis" ] );
classesTakenAxis = array_exclude( classes, classesAvailableAxis );
for ( index = 0; index < level.players.size; index++ )
{
player = level.players[index];
player updateClassAliveDvars( "allies", classesAvailableAllies, "0" );
player updateClassAliveDvars( "allies", classesTakenAllies, "1" );
player updateClassAliveDvars( "axis", classesAvailableAxis, "0" );
player updateClassAliveDvars( "axis", classesTakenAxis, "1" );
}
}
updateClassAliveDvars( team, classesToUpdate, isAlive )
{
for( classIndex = 0; classIndex < classesToUpdate.size; classIndex++ )
{
self setClientDvar( team + "_" + classesToUpdate[ classIndex ] + "_isalive", isAlive );
}
}
giveRandomClass()
{
classes = getClassesList();
classesTaken = level.classesTaken[ self.pers["team"] ];
classesAvailable = array_exclude( classes, classesTaken );
if( classesAvailable.size == 0 )
{
classesAvailable = classes;
}
chosenClass = RandomInt( classesAvailable.size );
self givePlayerClass( classesAvailable[ chosenClass ] );
}
giveNextClass()
{
nextClass = getNextClass( game["last_class"][self.name] );
if( nextClass == "none" )
{
giveRandomClass();
return;
}
self givePlayerClass( nextClass );
}
getNextClass( lastClassName )
{
if( !isDefined( lastClassName ) )
return "none";
switch( lastClassName )
{
case "knife":
return "shotgun";
case "shotgun":
return "rocket";
case "rocket":
return "knife";
default:
return "none";
}
}
watchRPGAmmo()
{
level endon( "game_ended" );
self endon( "disconnect" );
self endon( "death" );
self endon( "killed_player" );
self.rpgAmmoGiven = 0;
while( true )
{
wait 0.25;
weapon = self GetCurrentWeapon();
currentAmmoFraction = self GetFractionMaxAmmo( weapon );
if( weapon == self.classMainWeapon && currentAmmoFraction != 1.0 )
{
self giveMaxAmmo( self.classMainWeapon );
self.rpgAmmoGiven++;
}
if( self.rpgAmmoGiven >= 10 )
{
return;
}
}
}
getClassesList()
{
classes = [];
classes[ 0 ] = "knife";
classes[ 1 ] = "shotgun";
classes[ 2 ] = "rocket";
return classes;
}
givePlayerClass( className )
{
speed = 1.0;
switch( className )
{
case "knife":
self giveCustomLoadoutKnife();
speed = 1.1;
break;
case "shotgun":
self giveCustomLoadoutShotgun();
speed = 0.9;
break;
case "rocket":
self giveCustomLoadoutRocket();
self thread watchRPGAmmo();
speed = 1.0;
break;
}
level.classesTaken[ self.pers["team"] ][ level.classesTaken[ self.pers["team"] ].size ] = className;
game["last_class"][self.name] = className;
self.rps_class = className;
self maps\mp\gametypes\_armor::set_player_model();
self SetMoveSpeedScale( speed );
self thread displayPlayerClass( className );
}
giveCustomLoadoutKnife()
{
mainWeapon = "python_mp";
self giveWeapon( mainWeapon );
self giveWeapon( "knife_mp" );
self giveWeapon( "knife_ballistic_mp" );
self.classMainWeapon = mainWeapon;
offhandPrimary = "hatchet_mp";
self setOffhandPrimaryClass( offhandPrimary );
self giveWeapon( offhandPrimary );
self SetWeaponAmmoClip( offhandPrimary, 1 );
equipmentWeapon = "scrambler_mp";
self giveWeapon( equipmentWeapon );
self SetWeaponAmmoClip( equipmentWeapon, 1 );
self SetActionSlot( 1, "weapon", equipmentWeapon );
self switchToWeapon( mainWeapon );
self GiveMaxAmmo( mainWeapon );
self setPerk( "specialty_sprintrecovery" );
self setPerk( "specialty_longersprint" );
self setPerk( "specialty_fastmeleerecovery" );
self setCacFactionFromTeam();
self.cac_body_type = "standard_mp";
self.cac_hat_type = "hat_cosmetic1_mp";
}
giveCustomLoadoutShotgun()
{
mainWeapon = "ithaca_mp";
self giveWeapon( mainWeapon );
self giveWeapon( "knife_mp" );
self.classMainWeapon = mainWeapon;
offhandPrimary = "concussion_grenade_mp";
self giveWeapon( offhandPrimary );
self SetWeaponAmmoClip( offhandPrimary, 1 );
offhandSecondary = "acoustic_sensor_mp";
self giveWeapon( offhandSecondary );
self SetWeaponAmmoClip( offhandSecondary, 1 );
self SetActionSlot( 1, "weapon", offhandSecondary );
self switchToWeapon( mainWeapon );
self GiveMaxAmmo( mainWeapon );
self setPerk( "specialty_bulletaccuracy" );
self setPerk( "specialty_fastreload" );
self setCacFactionFromTeam();
self.cac_body_type = "body_armor_mp";
self.cac_hat_type = "helmet_mp";
}
giveCustomLoadoutRocket()
{
mainWeapon = "rpg_mp";
self giveWeapon( mainWeapon );
self giveWeapon( "knife_mp" );
self.classMainWeapon = mainWeapon;
offhandPrimary = "frag_grenade_mp";
self setOffhandPrimaryClass( offhandPrimary );
self giveWeapon( offhandPrimary );
self SetWeaponAmmoClip( offhandPrimary, 1 );
self switchToWeapon( mainWeapon );
self GiveMaxAmmo( mainWeapon );
self setPerk( "specialty_detectexplosive" );
self setPerk( "specialty_delayexplosive" );
self setPerk( "specialty_disarmexplosive" );
self setPerk( "specialty_explosivedamage" );
self setPerk( "specialty_pin_back" );
self setCacFactionFromTeam();
self.cac_body_type = "flak_mp";
self.cac_hat_type = "none";
}
setCacFactionFromTeam()
{
self.cac_faction = level.rps_team_faction[ self.pers["team"] ];
}
displayPlayerClass( className )
{
self endon( "disconnect" );
self setClientDvar( "ui_rps_class", className );
wait 5.0;
self setClientDvar( "ui_rps_class", "" );
}
onStartGameType()
{
if ( !isdefined( game["switchedsides"] ) )
game["switchedsides"] = false;
setClientNameMode("auto_change");
maps\mp\gametypes\_globallogic_ui::setObjectiveText( "allies", &"OBJECTIVES_TDM" );
maps\mp\gametypes\_globallogic_ui::setObjectiveText( "axis", &"OBJECTIVES_TDM" );
if ( level.splitscreen )
{
maps\mp\gametypes\_globallogic_ui::setObjectiveScoreText( "allies", &"OBJECTIVES_TDM" );
maps\mp\gametypes\_globallogic_ui::setObjectiveScoreText( "axis", &"OBJECTIVES_TDM" );
}
else
{
maps\mp\gametypes\_globallogic_ui::setObjectiveScoreText( "allies", &"OBJECTIVES_TDM_SCORE" );
maps\mp\gametypes\_globallogic_ui::setObjectiveScoreText( "axis", &"OBJECTIVES_TDM_SCORE" );
}
maps\mp\gametypes\_globallogic_ui::setObjectiveHintText( "allies", &"OBJECTIVES_TDM_HINT" );
maps\mp\gametypes\_globallogic_ui::setObjectiveHintText( "axis", &"OBJECTIVES_TDM_HINT" );
level.spawnMins = ( 0, 0, 0 );
level.spawnMaxs = ( 0, 0, 0 );
maps\mp\gametypes\_spawnlogic::placeSpawnPoints( "mp_tdm_spawn_allies_start" );
maps\mp\gametypes\_spawnlogic::placeSpawnPoints( "mp_tdm_spawn_axis_start" );
maps\mp\gametypes\_spawnlogic::addSpawnPoints( "allies", "mp_tdm_spawn" );
maps\mp\gametypes\_spawnlogic::addSpawnPoints( "axis", "mp_tdm_spawn" );
maps\mp\gametypes\_spawning::updateAllSpawnPoints();
level.mapCenter = maps\mp\gametypes\_spawnlogic::findBoxCenter( level.spawnMins, level.spawnMaxs );
setMapCenter( level.mapCenter );
spawnpoint = maps\mp\gametypes\_spawnlogic::getRandomIntermissionPoint();
setDemoIntermissionPoint( spawnpoint.origin, spawnpoint.angles );
allowed[0] = "tcw";
maps\mp\gametypes\_gameobjects::main(allowed);
maps\mp\gametypes\_spawning::create_map_placed_influencers();
level.isUavEnabled = false;
setdvar( "scr_disable_cac", 1 );
setdvar( "scr_disable_weapondrop", 1 );
level.killstreaksenabled = 0;
level.hardpointsenabled = 0;
registerScoreInfo();
setupRules();
thread updateGametypeDvars();
thread turnOnUAVForAll( (60 * 3) + 10 );
}
registerScoreInfo()
{
maps\mp\gametypes\_rank::registerScoreInfo( "kill", 10 );
maps\mp\gametypes\_rank::registerScoreInfo( "headshot", 0 );
maps\mp\gametypes\_rank::registerScoreInfo( "assist_75", 0 );
maps\mp\gametypes\_rank::registerScoreInfo( "assist_50", 0 );
maps\mp\gametypes\_rank::registerScoreInfo( "assist_25", 0 );
maps\mp\gametypes\_rank::registerScoreInfo( "assist", 0 );
maps\mp\gametypes\_rank::registerScoreInfo( "suicide", 0 );
maps\mp\gametypes\_rank::registerScoreInfo( "teamkill", 0 );
maps\mp\gametypes\_rank::registerScoreInfo( "dogkill", 0 );
maps\mp\gametypes\_rank::registerScoreInfo( "dogassist", 0 );
maps\mp\gametypes\_rank::registerScoreInfo( "helicopterkill", 0 );
maps\mp\gametypes\_rank::registerScoreInfo( "helicopterassist", 0 );
maps\mp\gametypes\_rank::registerScoreInfo( "helicopterassist_75", 0 );
maps\mp\gametypes\_rank::registerScoreInfo( "helicopterassist_50", 0 );
maps\mp\gametypes\_rank::registerScoreInfo( "helicopterassist_25", 0 );
maps\mp\gametypes\_rank::registerScoreInfo( "spyplanekill", 0 );
maps\mp\gametypes\_rank::registerScoreInfo( "spyplaneassist", 0 );
}
setupRules()
{
}
onEndGame( winningPlayer )
{
}
checkForOvertime()
{
if( !wasLastRound() || level.hostForcedEnd || level.forcedEnd )
return;
alliesTeamScore = getTeamScore( "allies" );
axisTeamScore = getTeamScore( "axis" );
if( alliesTeamScore == axisTeamScore )
{
level.isOvertime = true;
level.halftimeType = "overtime";
level.halftimeSubCaption = "First team to get a kill wins.";
level.dontShowEndReason = false;
maps\mp\gametypes\_globallogic::displayRoundSwitch();
level.roundLimit++;
}
}
onSpawnPlayerUnified()
{
maps\mp\gametypes\_spawning:GaspnSpawnPlayer_Unified();
}
onSpawnPlayer()
{
if ( level.inGracePeriod )
{
spawnPoints = maps\mp\gametypes\_spawnlogic::getSpawnpointArray( "mp_tdm_spawn_" + self.pers["team"] + "_start" );
if ( !spawnPoints.size )
spawnPoints = maps\mp\gametypes\_spawnlogic::getSpawnpointArray( "mp_sab_spawn_" + self.pers["team"] + "_start" );
if ( !spawnPoints.size )
{
spawnPoints = maps\mp\gametypes\_spawnlogic::getTeamSpawnPoints( self.pers["team"] );
spawnPoint = maps\mp\gametypes\_spawnlogic::getSpawnpoint_NearTeam( spawnPoints );
}
else
{
spawnPoint = maps\mp\gametypes\_spawnlogic::getSpawnpoint_Random( spawnPoints );
}
}
else
{
spawnPoints = maps\mp\gametypes\_spawnlogic::getTeamSpawnPoints( self.pers["team"] );
spawnPoint = maps\mp\gametypes\_spawnlogic::getSpawnpoint_NearTeam( spawnPoints );
}
self.pers["hasRadar"] = false;
self.hasSpyplane = false;
self spawn( spawnPoint.origin, spawnPoint.angles, "rps" );
}
updateGametypeDvars()
{
}
onDeadEvent( deadTeam )
{
if( deadTeam == "all" || !isDefined( deadTeam ) )
{
thread maps\mp\gametypes\_globallogic::endGame( "tie", "" );
return;
}
winningTeam = getOtherTeam( deadTeam );
[[level._setTeamScore]]( winningTeam, [[level._getTeamScore]]( winningTeam ) + 1 );
thread maps\mp\gametypes\_globallogic::endGame( winningTeam, "" );
}
onPlayerKilled( eInflictor, attacker, iDamage, sMeansOfDeath, sWeapon, vDir, sHitLoc, psOffsetTime, deathAnimDuration )
{
if ( isDefined( attacker ) && isPlayer( attacker ) && attacker != self )
{
killString = getClassKillMessage( self.rps_class );
attacker maps\mp\gametypes\_hud_message::hintMessage( killString, 2.0 );
if( isDefined( level.isOvertime ) && level.isOvertime )
{
onDeadEvent( self.pers["team"] );
}
}
updateClassStatusDvarToDead( self.pers["team"], self.rps_class );
self thread CheckForUAV();
}
getClassKillMessage( rpsClass )
{
switch( rpsClass )
{
case "knife":
return &"MP_RPS_KNIFE_KILLED";
case "shotgun":
return &"MP_RPS_SHOTGUN_KILLED";
case "rocket":
return &"MP_RPS_ROCKET_KILLED";
default:
return "";
}
}
updateClassStatusDvarToDead( team, className )
{
dvarName = team + "_" + className + "_isalive";
for ( index = 0; index < level.players.size; index++ )
{
player = level.players[index];
player setClientDvar( dvarName, "0" );
}
}
checkForUAV()
{
if( level.isUavEnabled )
return;
waittillframeend;
if( level.alivePlayers["axis"].size < 2 || level.alivePlayers["allies"].size < 2 )
{
level notify( "cancel_UAV" );
thread turnOnUAVForAll( 60 );
}
}
turnOnUAVForAll( secondsToWait )
{
level endon( "cancel_UAV" );
wait secondsToWait;
level.isUavEnabled = true;
for ( i = 0; i < level.players.size; i++ )
{
player = level.players[i];
player.pers["hasRadar"] = true;
player.hasSpyplane = true;
player maps\mp\gametypes\_globallogic_audio::leaderDialogOnPlayer( "radar_mp_start" );
}
}

ROCK PAPER SCISSORS, HELL YEAH. I'm guessing it's 3 different classes, each having their own strenghts and weaknesses? Obviously Rock is the best, then.
cp.gsc
    #include maps\mp\_utility;
#include maps\mp\gametypes\_hud_util;
main()
{
maps\mp\gametypes\_globallogic::init();
maps\mp\gametypes\_callbacksetup::SetupCallbacks();
maps\mp\gametypes\_globallogic::SetupCallbacks();
maps\mp\gametypes\_globallogic_utils::registerTimeLimitDvar( level.gameType, 0, 0, 1440 );
maps\mp\gametypes\_globallogic_utils::registerScoreLimitDvar( level.gameType, 0, 0, 5000 );
maps\mp\gametypes\_globallogic_utils::registerRoundLimitDvar( level.gameType, 1, 0, 10 );
maps\mp\gametypes\_globallogic_utils::registerRoundWinLimitDvar( level.gameType, 0, 0, 10 );
maps\mp\gametypes\_globallogic_utils::registerNumLivesDvar( level.gameType, 0, 0, 10 );
level.onStartGameType = :GaspnStartGameType;
level.onSpawnPlayer = :GaspnSpawnPlayer;
level.onSpawnPlayerUnified = :GaspnSpawnPlayerUnified;
level.onPlayerKilled = :GaspnPlayerKilled;
level.onMedalAwarded = :GaspnMedalAwarded;
level.onWagerPlayerAnte = :GaspnWagerPlayerAnte;
level.dontCalcWagerWinnings = true;
game["dialog"]["gametype"] = "wm_start";
game["dialog"]["offense_obj"] = "generic_boost";
game["dialog"]["defense_obj"] = "generic_boost";
precachemenu( "hud_anims" );
setscoreboardcolumns( "kills", "deaths", "none", "none" );
}
onStartGameType()
{
setClientNameMode("auto_change");
maps\mp\gametypes\_globallogic_ui::setObjectiveText( "allies", &"OBJECTIVES_DM" );
maps\mp\gametypes\_globallogic_ui::setObjectiveText( "axis", &"OBJECTIVES_DM" );
if ( level.splitscreen )
{
maps\mp\gametypes\_globallogic_ui::setObjectiveScoreText( "allies", &"OBJECTIVES_DM" );
maps\mp\gametypes\_globallogic_ui::setObjectiveScoreText( "axis", &"OBJECTIVES_DM" );
}
else
{
maps\mp\gametypes\_globallogic_ui::setObjectiveScoreText( "allies", &"OBJECTIVES_DM_SCORE" );
maps\mp\gametypes\_globallogic_ui::setObjectiveScoreText( "axis", &"OBJECTIVES_DM_SCORE" );
}
maps\mp\gametypes\_globallogic_ui::setObjectiveHintText( "allies", &"OBJECTIVES_DM_HINT" );
maps\mp\gametypes\_globallogic_ui::setObjectiveHintText( "axis", &"OBJECTIVES_DM_HINT" );
level.spawnMins = ( 0, 0, 0 );
level.spawnMaxs = ( 0, 0, 0 );
maps\mp\gametypes\_spawnlogic::addSpawnPoints( "allies", "mp_dm_spawn" );
maps\mp\gametypes\_spawnlogic::addSpawnPoints( "axis", "mp_dm_spawn" );
maps\mp\gametypes\_spawning::updateAllSpawnPoints();
level.mapCenter = maps\mp\gametypes\_spawnlogic::findBoxCenter( level.spawnMins, level.spawnMaxs );
setMapCenter( level.mapCenter );
spawnpoint = maps\mp\gametypes\_spawnlogic::getRandomIntermissionPoint();
setDemoIntermissionPoint( spawnpoint.origin, spawnpoint.angles );
allowed[0] = "dm";
maps\mp\gametypes\_gameobjects::main(allowed);
maps\mp\gametypes\_spawning::create_map_placed_influencers();
registerScoreInfo();
level.displayRoundEndText = false;
level.killstreaksenabled = 0;
level.hardpointsenabled = 0;
}
registerScoreInfo()
{
maps\mp\gametypes\_rank::registerScoreInfo( "kill", 0 );
maps\mp\gametypes\_rank::registerScoreInfo( "headshot", 0 );
maps\mp\gametypes\_rank::registerScoreInfo( "assist_75", 0 );
maps\mp\gametypes\_rank::registerScoreInfo( "assist_50", 0 );
maps\mp\gametypes\_rank::registerScoreInfo( "assist_25", 0 );
maps\mp\gametypes\_rank::registerScoreInfo( "assist", 0 );
maps\mp\gametypes\_rank::registerScoreInfo( "suicide", 0 );
maps\mp\gametypes\_rank::registerScoreInfo( "teamkill", 0 );
maps\mp\gametypes\_rank::registerScoreInfo( "dogkill", 0 );
maps\mp\gametypes\_rank::registerScoreInfo( "dogassist", 0 );
maps\mp\gametypes\_rank::registerScoreInfo( "helicopterkill", 0 );
maps\mp\gametypes\_rank::registerScoreInfo( "helicopterassist", 0 );
maps\mp\gametypes\_rank::registerScoreInfo( "helicopterassist_75", 0 );
maps\mp\gametypes\_rank::registerScoreInfo( "helicopterassist_50", 0 );
maps\mp\gametypes\_rank::registerScoreInfo( "helicopterassist_25", 0 );
maps\mp\gametypes\_rank::registerScoreInfo( "spyplanekill", 0 );
maps\mp\gametypes\_rank::registerScoreInfo( "spyplaneassist", 0 );
}
onWagerPlayerAnte( player, anteAmount )
{
setDvar( "ui_scorelimit", game["wager_pot"] );
setTeamScore( "allies", game["wager_pot"] );
}
onSpawnPlayerUnified()
{
maps\mp\gametypes\_spawning:GaspnSpawnPlayer_Unified();
}
onSpawnPlayer()
{
spawnPoints = maps\mp\gametypes\_spawnlogic::getTeamSpawnPoints( self.pers["team"] );
spawnPoint = maps\mp\gametypes\_spawnlogic::getSpawnpoint_DM( spawnPoints );
self spawn( spawnPoint.origin, spawnPoint.angles, "cp" );
}
onPlayerKilled( eInflictor, attacker, iDamage, sMeansOfDeath, sWeapon, vDir, sHitLoc, psOffsetTime, deathAnimDuration )
{
if ( isDefined( attacker ) && isPlayer( attacker ) && self != attacker )
{
pointsEarned = getDvarIntDefault( #"scr_cp_pointsperkill", 10 );
givePlayerPoints( attacker, pointsEarned );
}
}
updateWagerCPScoreHUD( amount )
{
self endon( "disconnect" );
self endon( "joined_team" );
self endon( "joined_spectators" );
if ( amount == 0 )
return;
self notify( "update_score" );
self endon( "update_score" );
self.rankUpdateTotal += amount;
wait ( 0.05 );
if( isDefined( self.hud_rankscroreupdate ) )
{
if ( self.rankUpdateTotal < 0 )
{
self.hud_rankscroreupdate.label = &"";
self.hud_rankscroreupdate.color = (1,0,0);
}
else
{
self.hud_rankscroreupdate.label = &"MP_PLUS";
self.hud_rankscroreupdate.color = (0,1,0);
}
self.hud_rankscroreupdate setText(self.rankUpdateTotal + " CP");
self.hud_rankscroreupdate.alpha = 0.85;
self.hud_rankscroreupdate thread maps\mp\gametypes\_hud::fontPulse( self );
wait 1;
self.hud_rankscroreupdate.alpha = 0;
self setClientDvar( "ui_cp_text_string", "+" + (self.rankUpdateTotal + " CP") );
self displayhudanim( "cpHudAnims", "cpText" );
self.rankUpdateTotal = 0;
}
}
givePlayerPoints( player, points, forMedal )
{
pointsActuallyTakenFromPot = givePlayerCodPointsFromPot( player, points );
if( pointsActuallyTakenFromPot > 0 )
{
[[level._setPlayerScore]]( player, player [[level._getPlayerScore]]( player ) + pointsActuallyTakenFromPot );
if ( !IsDefined( forMedal ) || !forMedal )
player thread maps\mp\gametypes\_rank::updateRankScoreHUD( pointsActuallyTakenFromPot );
}
setTeamScore( "allies", game["wager_pot"] );
}
givePlayerCodPointsFromPot( player, pointsToGive )
{
if( pointsToGive > game["wager_pot"] )
{
pointsToGive = game["wager_pot"];
}
if( pointsToGive <= 0 )
return 0;
player thread playCashRegisterSound();
if( !isDefined( player.wagerWinnings ) )
player.wagerWinnings = 0;
player.wagerWinnings += pointsToGive;
game["wager_pot"] -= pointsToGive;
if( game["wager_pot"] <= 0 )
{
winner = maps\mp\gametypes\_globallogic_score::getHighestScoringPlayer();
thread maps\mp\gametypes\_globallogic::endGame( winner, &"MP_WAGER_POT_EMPTY" );
}
return pointsToGive;
}
playCashRegisterSound()
{
self notify( "cp_cash_register_sound" );
self endon( "cp_cash_register_sound" );
wait 0.2;
self playLocalSound( "uin_alert_cash_register" );
}
onMedalAwarded( player, medalName, xp )
{
givePlayerPoints( player, xp, true );
}

Some sort of FFA/TDM Wagermatch?

ob.gsc
    #include maps\mp\_utility;
#include maps\mp\gametypes\_hud_util;
main()
{
if(getdvar("mapname") == "mp_background")
return;
maps\mp\gametypes\_globallogic::init();
maps\mp\gametypes\_callbacksetup::SetupCallbacks();
maps\mp\gametypes\_globallogic::SetupCallbacks();
maps\mp\gametypes\_globallogic_utils::registerTimeLimitDvar( level.gameType, 15, 0, 1440 );
maps\mp\gametypes\_globallogic_utils::registerScoreLimitDvar( level.gameType, 3, 0, 5000 );
maps\mp\gametypes\_globallogic_utils::registerRoundLimitDvar( level.gameType, 3, 0, 10 );
maps\mp\gametypes\_globallogic_utils::registerRoundWinLimitDvar( level.gameType, 2, 0, 10 );
maps\mp\gametypes\_globallogic_utils::registerRoundSwitchDvar( level.gameType, 1, 0, 9 );
maps\mp\gametypes\_globallogic_utils::registerNumLivesDvar( level.gameType, 0, 0, 10 );
if ( getdvar("scr_ob_spawnPointFacingAngle") == "" )
setdvar("scr_ob_spawnPointFacingAngle", "60");
level.onStartGameType = :GaspnStartGameType;
level.onSpawnPlayer = :GaspnSpawnPlayer;
level.onSpawnPlayerUnified = :GaspnSpawnPlayerUnified;
level.onPrecacheGameType = :GaspnPrecacheGameType;
level.onPlayerKilled = :GaspnPlayerKilled;
level.noPersistence = true;
level.scoreRoundBased = true;
level.lastDialogTime = getTime();
setscoreboardcolumns( "kills", "deaths", "none", "none" );
}
onPrecacheGameType()
{
game["flagmodel"] = "mp_flag_allies_1";
game["carry_flagmodel"] = "mp_flag_allies_1_carry";
game["carry_icon"] = "hudicon_american_ctf_flag_carry";
game["waypoints_flag"] = "waypoint_flag_american";
game["compass_waypoint_flag"] = "compass_flag_american";
precacheModel( game["flagmodel"] );
precacheModel( game["carry_flagmodel"] );
precacheShader( game["carry_icon"] );
precacheShader( game["waypoints_flag"] );
precacheShader( game["compass_waypoint_flag"] );
precacheString(&"MP_FLAG_TAKEN_BY");
precacheString(&"MP_ENEMY_FLAG_TAKEN_BY");
precacheString(&"MP_FLAG_CAPTURED_BY");
precacheString(&"MP_ENEMY_FLAG_CAPTURED_BY");
precacheString(&"MP_FLAG_RETURNED");
precacheString(&"MP_ENEMY_FLAG_RETURNED");
precacheString(&"MP_YOUR_FLAG_RETURNING_IN");
precacheString(&"MP_ENEMY_FLAG_RETURNING_IN");
precacheString(&"MP_ENEMY_FLAG_DROPPED_BY");
precacheString(&"MP_SUDDEN_DEATH");
precacheString(&"MP_CAP_LIMIT_REACHED");
precacheString(&"MP_CTF_CANT_CAPTURE_FLAG" );
precacheString(&"MP_CTF_OVERTIME_WIN" );
game["strings"]["score_limit_reached"] = &"MP_CAP_LIMIT_REACHED";
}
giveCustomLoadout()
{
self takeAllWeapons();
self clearPerks();
xbow = "crossbow_explosive_mp";
self giveWeapon( "knife_mp" );
self giveWeapon( "hatchet_mp" );
self giveWeapon( xbow );
self switchToWeapon( xbow );
self SetWeaponAmmoClip( xbow, 1 );
self SetWeaponAmmoStock( xbow, 1 );
self setPerk( "specialty_movefaster" );
self setPerk( "specialty_sprintrecovery" );
self setPerk( "specialty_longersprint" );
}
onStartGameType()
{
if ( !isdefined( game["switchedsides"] ) )
game["switchedsides"] = false;
setClientNameMode("auto_change");
maps\mp\gametypes\_globallogic_ui::setObjectiveText( "allies", &"OBJECTIVES_CTF" );
maps\mp\gametypes\_globallogic_ui::setObjectiveText( "axis", &"OBJECTIVES_CTF" );
if ( level.splitscreen )
{
maps\mp\gametypes\_globallogic_ui::setObjectiveScoreText( "allies", &"OBJECTIVES_CTF" );
maps\mp\gametypes\_globallogic_ui::setObjectiveScoreText( "axis", &"OBJECTIVES_CTF" );
}
else
{
maps\mp\gametypes\_globallogic_ui::setObjectiveScoreText( "allies", &"OBJECTIVES_CTF_SCORE" );
maps\mp\gametypes\_globallogic_ui::setObjectiveScoreText( "axis", &"OBJECTIVES_CTF_SCORE" );
}
maps\mp\gametypes\_globallogic_ui::setObjectiveHintText( "allies", &"OBJECTIVES_CTF_HINT" );
maps\mp\gametypes\_globallogic_ui::setObjectiveHintText( "axis", &"OBJECTIVES_CTF_HINT" );
level.spawnMins = ( 0, 0, 0 );
level.spawnMaxs = ( 0, 0, 0 );
maps\mp\gametypes\_spawnlogic::addSpawnPoints( "allies", "mp_dm_spawn" );
maps\mp\gametypes\_spawnlogic::addSpawnPoints( "axis", "mp_dm_spawn" );
maps\mp\gametypes\_spawning::updateAllSpawnPoints();
level.mapCenter = maps\mp\gametypes\_spawnlogic::findBoxCenter( level.spawnMins, level.spawnMaxs );
setMapCenter( level.mapCenter );
spawnpoint = maps\mp\gametypes\_spawnlogic::getRandomIntermissionPoint();
setDemoIntermissionPoint( spawnpoint.origin, spawnpoint.angles );
maps\mp\gametypes\_rank::registerScoreInfo( "capture", 100 );
maps\mp\gametypes\_rank::registerScoreInfo( "defend", 10 );
maps\mp\gametypes\_rank::registerScoreInfo( "kill_carrier", 10 );
allowed[0] = "ktc";
maps\mp\gametypes\_gameobjects::main(allowed);
maps\mp\gametypes\_spawning::create_map_placed_influencers();
level.killstreaksenabled = 0;
level.hardpointsenabled = 0;
registerScoreInfo();
setupRules();
thread updateGametypeDvars();
thread ob();
}
registerScoreInfo()
{
maps\mp\gametypes\_rank::registerScoreInfo( "kill", 0 );
maps\mp\gametypes\_rank::registerScoreInfo( "headshot", 0 );
maps\mp\gametypes\_rank::registerScoreInfo( "assist_75", 0 );
maps\mp\gametypes\_rank::registerScoreInfo( "assist_50", 0 );
maps\mp\gametypes\_rank::registerScoreInfo( "assist_25", 0 );
maps\mp\gametypes\_rank::registerScoreInfo( "assist", 0 );
maps\mp\gametypes\_rank::registerScoreInfo( "suicide", 0 );
maps\mp\gametypes\_rank::registerScoreInfo( "teamkill", 0 );
maps\mp\gametypes\_rank::registerScoreInfo( "dogkill", 0 );
maps\mp\gametypes\_rank::registerScoreInfo( "dogassist", 0 );
maps\mp\gametypes\_rank::registerScoreInfo( "helicopterkill", 0 );
maps\mp\gametypes\_rank::registerScoreInfo( "helicopterassist", 0 );
maps\mp\gametypes\_rank::registerScoreInfo( "helicopterassist_75", 0 );
maps\mp\gametypes\_rank::registerScoreInfo( "helicopterassist_50", 0 );
maps\mp\gametypes\_rank::registerScoreInfo( "helicopterassist_25", 0 );
maps\mp\gametypes\_rank::registerScoreInfo( "spyplanekill", 0 );
maps\mp\gametypes\_rank::registerScoreInfo( "spyplaneassist", 0 );
}
setupRules()
{
}
onEndGame( winningPlayer )
{
}
onSpawnPlayerUnified()
{
self.isFlagCarrier = false;
maps\mp\gametypes\_spawning:GaspnSpawnPlayer_Unified();
}
onSpawnPlayer()
{
self.isFlagCarrier = false;
spawnPoints = maps\mp\gametypes\_spawnlogic::getTeamSpawnPoints( self.pers["team"] );
spawnPoint = maps\mp\gametypes\_spawnlogic::getSpawnpoint_DM( spawnPoints );
self spawn( spawnPoint.origin, spawnPoint.angles );
self thread playerWeaponAmmoThink();
}
playerWeaponAmmoThink()
{
self endon( "disconnect" );
self endon( "death" );
self endon( "killed_player" );
while( true )
{
wait 0.05;
xbow = "crossbow_explosive_mp";
if( self GetWeaponAmmoStock( xbow ) <= 0 )
{
self SetWeaponAmmoStock( xbow, 1 );
}
}
}
updateGametypeDvars()
{
}
ob()
{
level.flag = undefined;
level.iconCapture3D = "waypoint_capture";
level.iconCapture2D = "compass_waypoint_capture";
level.iconDefend3D = "waypoint_defend";
level.iconDefend2D = "compass_waypoint_defend";
level.iconTakenFriendly3D = "waypoint_taken_friendly";
level.iconTakenEnemy3D = "waypoint_taken_enemy";
level.iconTakenFriendly2D = "compass_waypoint_taken_friendly";
level.iconTakenEnemy2D = "compass_waypoint_taken_enemy";
level.iconDropped3D = "waypoint_defend";
level.iconCarrier3D = "waypoint_flag_yellow";
level.iconEnemyCarrier3D = "waypoint_kill";
level.iconReturn3D = "waypoint_return";
level.iconBase3D = "waypoint_capture";
precacheShader( level.iconCapture3D );
precacheShader( level.iconDefend3D );
precacheShader( level.iconCapture2D );
precacheShader( level.iconDefend2D );
precacheShader( level.iconTakenFriendly3D );
precacheShader( level.iconTakenEnemy3D );
precacheShader( level.iconTakenFriendly2D );
precacheShader( level.iconTakenEnemy2D );
precacheShader( level.iconDropped3D );
precacheShader( level.iconCarrier3D );
precacheShader( level.iconReturn3D );
precacheShader( level.iconBase3D );
precacheShader( level.iconEnemyCarrier3D );
setupFlag();
}
setupFlag()
{
flag_triggers = getEntArray( "ktc_flag_pickup_trig", "targetname" );
if ( !isDefined( flag_triggers ) || flag_triggers.size < 1)
{
maps\mp\_utility::error("No ktc_flag_pickup_trig trigger found in map.");
return;
}
trigger = flag_triggers[ 0 ];
level.flag = createFlag( trigger );
}
createFlag( trigger )
{
if ( isDefined( trigger.target ) )
{
visuals[0] = getEnt( trigger.target, "targetname" );
}
else
{
visuals[0] = spawn( "script_model", trigger.origin );
visuals[0].angles = trigger.angles;
}
visuals[0] setModel( game["flagmodel"] );
flag = maps\mp\gametypes\_gameobjects::createCarryObject( "neutral", trigger, visuals, (0,0,100), 2.5 );
flag maps\mp\gametypes\_gameobjects::allowCarry( "any" );
flag maps\mp\gametypes\_gameobjects::setVisibleCarrierModel( game["carry_flagmodel"] );
flag maps\mp\gametypes\_gameobjects::setCarryIcon( game["carry_icon"] );
flag maps\mp\gametypes\_gameobjects::set2DIcon( "friendly", level.iconCapture2D );
flag maps\mp\gametypes\_gameobjects::set3DIcon( "friendly", level.iconCapture3D );
flag maps\mp\gametypes\_gameobjects::set2DIcon( "enemy", level.iconCapture2D );
flag maps\mp\gametypes\_gameobjects::set3DIcon( "enemy", level.iconCapture3D );
flag maps\mp\gametypes\_gameobjects::setVisibleTeam( "any" );
flag.allowWeapons = true;
flag.onPickup = :GaspnPickup;
flag.onPickupFailed = :GaspnPickup;
flag.onDrop = :GaspnDrop;
return flag;
}
onDrop( player )
{
if ( isDefined( player ) )
{
player.isFlagCarrier = false;
}
team = "allies";
otherTeam = "axis";
if( getTime() - level.lastDialogTime > 1500 )
{
level.lastDialogTime = getTime();
}
if ( isDefined( player ) )
player logString( team + " flag dropped" );
else
logString( team + " flag dropped" );
if ( isDefined( player ) )
player playLocalSound("mpl_flag_drop_plr");
self maps\mp\gametypes\_gameobjects::set3DIcon( "friendly", level.iconCapture3D );
self maps\mp\gametypes\_gameobjects::set3DIcon( "enemy", level.iconCapture3D );
self maps\mp\gametypes\_gameobjects::setVisibleTeam( "any" );
self thread setAlphaOnObjpoint( self.objPoints["allies"].baseAlpha );
player notify( "flag_dropped" );
player removeFlagCarrierBonus();
}
onPickup( player )
{
if ( !isDefined( player ) )
return;
playSoundOnPlayers( "mp_obj_taken" );
player.isFlagCarrier = true;
player playLocalSound("mpl_flag_pickup_plr");
score = maps\mp\gametypes\_globallogic_score::_getPlayerScore( player );
maps\mp\gametypes\_globallogic_score::_setPlayerScore( player, score + getDvarInt("scr_ob_grabScore") );
self maps\mp\gametypes\_gameobjects::set3DIcon( "enemy", level.iconEnemyCarrier3D );
self maps\mp\gametypes\_gameobjects::set3DIcon( "friendly", level.iconEnemyCarrier3D );
self maps\mp\gametypes\_gameobjects::setVisibleTeam( "any" );
player giveFlagCarrierBonus();
player thread flagCarrierThink();
player logString( "flag taken" );
}
giveFlagCarrierBonus()
{
}
removeFlagCarrierBonus()
{
if( !isDefined( self ) )
return;
}
flagCarrierThink()
{
self endon( "disconnect" );
self endon( "flag_dropped" );
level endon( "side_bet_begin" );
level endon( "game_ended" );
while( true )
{
wait 1;
score = maps\mp\gametypes\_globallogic_score::_getPlayerScore( self );
maps\mp\gametypes\_globallogic_score::_setPlayerScore( self, score + getDvarInt("scr_ob_tickScore") );
}
}
setAlphaOnObjpoint( alpha )
{
wait 0.05;
self.objPoints["allies"].alpha = alpha;
}
onPlayerKilled( eInflictor, attacker, iDamage, sMeansOfDeath, sWeapon, vDir, sHitLoc, psOffsetTime, deathAnimDuration )
{
if ( !isDefined( self.isFlagCarrier ) || !self.isFlagCarrier )
return;
if ( isDefined( attacker ) && isPlayer( attacker ) )
{
[[level._setPlayerScore]]( attacker, attacker [[level._getPlayerScore]]( attacker ) + getDvarInt("scr_ob_killScore") );
}
}


CTF with Crossbows and Tomahawks.
Basically Team Sticks and Stones CTF.

I'm probably wrong about some of this lol

Also looking forward to when these are finally playable. I need to get around to getting these working on the Wii, so I can get videos/pics/know how they work.
(adsbygoogle = window.adsbygoogle || []).push({});

The following 10 users say thank you to ihatecompvir for this useful post:

Accurs0, Adamâ„¢, billionk, FourzerotwoFAILS, Gtr, Mr.Kane, Pain975, Solid Snake, tayen, tec360
12-23-2010, 10:54 AM #2
AgentKing-Botz
Are you high?
Pretty cool =D
12-23-2010, 11:09 AM #3
Adamâ„¢
Climbing up the ladder
Nice finds, I wanna play some rc car racing with power ups lol
12-23-2010, 11:21 AM #4
Mr.Kane
Greatness
Originally posted by Ihatecompvir View Post
After looking at the scripts from the Wii version of Black Ops, I have found quite a few things which are interesting.

Mainly, gametypes.
rcrace.gsc
    
#include maps\mp\_utility;
#include maps\mp\gametypes\_hud_util;
AddRaceGate( position )
{
if ( !isDefined( level.raceGates ) )
level.raceGates = [];
level.raceGates[level.raceGates.size] = position;
}
main()
{
maps\mp\gametypes\_globallogic::init();
maps\mp\gametypes\_callbacksetup::SetupCallbacks();
maps\mp\gametypes\_globallogic::SetupCallbacks();
maps\mp\gametypes\_globallogic_utils::registerTimeLimitDvar( level.gameType, 0, 0, 1440 );
maps\mp\gametypes\_globallogic_utils::registerScoreLimitDvar( level.gameType, 3000, 0, 12000 );
maps\mp\gametypes\_globallogic_utils::registerRoundLimitDvar( level.gameType, 1, 0, 10 );
maps\mp\gametypes\_globallogic_utils::registerRoundWinLimitDvar( level.gameType, 0, 0, 10 );
maps\mp\gametypes\_globallogic_utils::registerNumLivesDvar( level.gameType, 0, 0, 10 );
level.onStartGameType = :GaspnStartGameType;
level.onSpawnPlayer = :GaspnSpawnPlayer;
level.onSpawnPlayerUnified = :GaspnSpawnPlayerUnified;
game["dialog"]["gametype"] = "wm_start";
game["dialog"]["offense_obj"] = "generic_boost";
game["dialog"]["defense_obj"] = "generic_boost";
precacheModel( "color_cube" );
precacheModel( "weapon_bbetty_mine" );
precacheShader( "waypoint_targetneutral" );
AddRaceGate( (1062,-1242,-120) );
AddRaceGate( (-105,-1701,-160) );
AddRaceGate( (-1710,-1769,-190) );
AddRaceGate( (-2250,-1253,-184) );
AddRaceGate( (-3167,-1066,-180) );
AddRaceGate( (-2652,102,-200) );
AddRaceGate( (-2240,1043,-180) );
AddRaceGate( (154,1315,-130) );
AddRaceGate( (1163,763,-130) );
AddRaceGate( (1026,-241,-130) );
registerPowerup( "detonator", 1, 10 );
registerPowerup( "smoke", 100, 1 );
registerPowerup( "mine", 25, 25 );
registerPowerup( "boost", 1, 75 );
setscoreboardcolumns( "kills", "deaths", "none", "none" );
}
onStartGameType()
{
setdvar( "scr_disable_cac", 1 );
setdvar( "scr_game_perks", 0 );
setdvar( "ammocounterhide", 1 );
makedvarserverinfo( "ammocounterhide", 1 );
setMatchFlag( "ammocounterhide", 1 );
setdvar( "actionslotshide", 1 );
makedvarserverinfo( "actionslotshide", 1 );
setClientNameMode("auto_change");
maps\mp\gametypes\_globallogic_ui::setObjectiveText( "allies", &"OBJECTIVES_DM" );
maps\mp\gametypes\_globallogic_ui::setObjectiveText( "axis", &"OBJECTIVES_DM" );
if ( level.splitscreen )
{
maps\mp\gametypes\_globallogic_ui::setObjectiveScoreText( "allies", &"OBJECTIVES_DM" );
maps\mp\gametypes\_globallogic_ui::setObjectiveScoreText( "axis", &"OBJECTIVES_DM" );
}
else
{
maps\mp\gametypes\_globallogic_ui::setObjectiveScoreText( "allies", &"OBJECTIVES_DM_SCORE" );
maps\mp\gametypes\_globallogic_ui::setObjectiveScoreText( "axis", &"OBJECTIVES_DM_SCORE" );
}
maps\mp\gametypes\_globallogic_ui::setObjectiveHintText( "allies", &"OBJECTIVES_DM_HINT" );
maps\mp\gametypes\_globallogic_ui::setObjectiveHintText( "axis", &"OBJECTIVES_DM_HINT" );
level.spawnMins = ( 0, 0, 0 );
level.spawnMaxs = ( 0, 0, 0 );
maps\mp\gametypes\_spawnlogic::addSpawnPoints( "allies", "mp_dm_spawn" );
maps\mp\gametypes\_spawnlogic::addSpawnPoints( "axis", "mp_dm_spawn" );
maps\mp\gametypes\_spawning::updateAllSpawnPoints();
level.mapCenter = maps\mp\gametypes\_spawnlogic::findBoxCenter( level.spawnMins, level.spawnMaxs );
setMapCenter( level.mapCenter );
spawnpoint = maps\mp\gametypes\_spawnlogic::getRandomIntermissionPoint();
setDemoIntermissionPoint( spawnpoint.origin, spawnpoint.angles );
allowed[0] = "dm";
maps\mp\gametypes\_gameobjects::main(allowed);
maps\mp\gametypes\_spawning::create_map_placed_influencers();
maps\mp\gametypes\_rank::registerScoreInfo( "kill", 0 );
maps\mp\gametypes\_rank::registerScoreInfo( "headshot", 0 );
maps\mp\gametypes\_rank::registerScoreInfo( "assist_75", 0 );
maps\mp\gametypes\_rank::registerScoreInfo( "assist_50", 0 );
maps\mp\gametypes\_rank::registerScoreInfo( "assist_25", 0 );
maps\mp\gametypes\_rank::registerScoreInfo( "assist", 0 );
maps\mp\gametypes\_rank::registerScoreInfo( "suicide", 0 );
maps\mp\gametypes\_rank::registerScoreInfo( "teamkill", 0 );
maps\mp\gametypes\_rank::registerScoreInfo( "dogkill", 0 );
maps\mp\gametypes\_rank::registerScoreInfo( "dogassist", 0 );
maps\mp\gametypes\_rank::registerScoreInfo( "helicopterkill", 0 );
maps\mp\gametypes\_rank::registerScoreInfo( "helicopterassist", 0 );
maps\mp\gametypes\_rank::registerScoreInfo( "helicopterassist_75", 0 );
maps\mp\gametypes\_rank::registerScoreInfo( "helicopterassist_50", 0 );
maps\mp\gametypes\_rank::registerScoreInfo( "helicopterassist_25", 0 );
maps\mp\gametypes\_rank::registerScoreInfo( "spyplanekill", 0 );
maps\mp\gametypes\_rank::registerScoreInfo( "spyplaneassist", 0 );
level.displayRoundEndText = false;
if ( level.roundLimit != 1 && level.numLives )
{
level.overridePlayerScore = true;
level.displayRoundEndText = true;
}
level.onEndGame = :GaspnEndGame;
level.disableRCBombTrigger = true;
thread matchStartWaiter();
level.powerups = [];
thread watchPowerups();
}
spawnPowerupAtGate( i, delay )
{
powerupRadius = 8;
powerupHeight = 32;
powerupJitter = 200;
wait delay;
gatePos = level.raceGates[i];
x = gatePos[0] + randomIntRange( 0, powerupJitter ) - powerupJitter / 2;
y = gatePos[1] + randomIntRange( 0, powerupJitter ) - powerupJitter / 2;
z = gatePos[2] + 10;
powerupPosition = ( x, y, z );
trace = bullettrace( powerupPosition, powerupPosition + (0,0,-12Cool Man (aka Tustin), false, undefined );
powerupPosition = trace["position"];
powerupObj = spawn( "script_model", powerupPosition );
powerupObj setModel( "color_cube" );
powerupTrigger = spawn( "trigger_radius", powerupPosition, 0, powerupRadius, powerupHeight, 1 );
mins = (powerupPosition[0]-powerupRadius,powerupPosition[1]-powerupRadius,powerupPosition[2]);
maxs = (powerupPosition[0]+powerupRadius,powerupPosition[1]+powerupRadius,powerupPosition[2]+powerupHeight);
powerup = spawnstruct();
powerup.trigger = powerupTrigger;
powerup.obj = powerupObj;
level.powerups[level.powerups.size] = powerup;
}
onSpawnPlayerUnified()
{
onSpawnPlayer();
}
onSpawnPlayer()
{
spawnOrigin = (920-50*(self getEntityNumber()),-20,-11Cool Man (aka Tustin);
self spawn( spawnOrigin, (0,270,0), "rcrace" );
org = spawn( "script_origin", spawnOrigin );
org endon( "death" );
self linkto( org );
self.canDoCombat = false;
self thread onSpawnedThread();
}
onSpawnedThread()
{
self waittill( "spawned_player" );
self takeAllWeapons();
self freezeControls( true );
if ( isDefined( level.alreadyRacing ) && level.alreadyRacing )
{
self thread setupForRacing();
}
}
setupForRacing()
{
self resetCar();
self thread detonationWaiter();
self nextRaceGate();
}
resetCar()
{
self freezeControls( false );
self maps\mp\gametypes\_hardpoints::giveKillstreak( "rcbomb_mp", undefined, true );
self switchToWeapon( "rcbomb_mp" );
self thread checkForFlip();
self thread initialFreeze();
}
checkForFlip()
{
self endon( "disconnect" );
while( 1 )
{
if ( isDefined( self.rcbomb ) )
{
self.rcbomb waittill( "veh_ejectoccupants" );
wait 1;
self.rcbomb.forceDetonation = true;
return;
}
else
{
wait 0.05;
}
}
}
detonationWaiter()
{
self endon( "disconnect" );
self endon( "death" );
self endon( "rcrace_over" );
while ( !isDefined( self.rcbomb ) )
{
wait 0.05;
}
while( 1 )
{
if ( isDefined( self.rcbomb ) )
{
self.rcbombPlacement = spawnstruct();
self.rcbombPlacement.origin = self.rcbomb.origin;
self.rcbombPlacement.angles = (self.rcbomb.angles[0], self.rcbomb.angles[1], 0);
}
else
{
self resetCar();
while( !isDefined( self.rcbomb ) )
{
wait 0.05;
}
}
wait 0.5;
}
}
matchStartWaiter()
{
level waittill( "prematch_over" );
players = level.players;
for ( i = 0 ; i < players.size ; i++ )
{
players[i] thread setupForRacing();
}
level.alreadyRacing = true;
}
initialFreeze()
{
self endon("disconnect");
while( 1 )
{
wait 0.01;
weapon = self GetCurrentWeapon();
if ( weapon == "rcbomb_mp" )
{
self freezeControls( true );
return;
}
}
}
onEndGame( winningPlayer )
{
self notify( "rcrace_over" );
players = level.players;
for ( i = 0 ; i < players.size ; i++ )
{
if ( players[i] != winningPlayer )
{
if ( isDefined( players[i].rcbomb ) )
{
players[i].rcbomb.neverDelete = true;
players[i].rcbomb.forceDetonation = true;
}
}
}
}
nextRaceGate()
{
newLap = false;
if ( !isDefined( self.raceGate ) )
{
self.raceGate = 0;
self.lap = 1;
}
else
{
[[level._setPlayerScore]]( self, [[level._getPlayerScore]]( self ) + 100 );
self.raceGate++;
if ( self.raceGate >= level.raceGates.size )
{
self.lap++;
if ( !hitScoreLimit() )
newLap = true;
self.raceGate = 0;
}
}
objPosition = level.raceGates[self.raceGate];
nextObjPoint = maps\mp\gametypes\_objpoints::createRaceObjective( "objpoint_race_"+self.name, objPosition, self, "waypoint_targetneutral", "waypoint_targetneutral" );
radius = 256;
height = 32;
objTrigger = spawn( "trigger_radius", objPosition, 0, radius, height );
mins = (objPosition[0]-radius,objPosition[1]-radius,objPosition[2]);
maxs = (objPosition[0]+radius,objPosition[1]+radius,objPosition[2]+height);
objTrigger thread carLogic( self );
if ( newLap )
{
self.customGametypeHeader.alpha = 1;
self.customGametypeHeader setText( "Lap "+self.lap+" of 3" );
self maps\mp\gametypes\_wager::FadeCustomGametypeHeader( 3 );
}
}
registerPowerup( name, firstProb, lastProb )
{
if ( !isDefined( level.powerupList ) )
level.powerupList = [];
powerup = SpawnStruct();
powerup.name = name;
powerup.firstProb = firstProb;
powerup.lastProb = lastProb;
level.powerupList[level.powerupList.size] = powerup;
}
dropPowerupChance()
{
if ( randomIntRange( 0, 100 ) <= 25 )
{
timeDelayMin = 1.5;
timeDelayMax = 3;
timeDelay = timeDelayMin + RandomFloat( timeDelayMax - timeDelayMin );
spawnPowerupAtGate( self.raceGate, timeDelay );
}
}
usePowerup()
{
if ( isDefined( self.powerup ) )
{
if ( self.powerup == "detonator" )
{
self useDetonator();
}
else if ( self.powerup == "smoke" )
{
if ( isDefined( self.rcbomb ) )
{
ClientAnnouncement( self, "Smoke deployed!", 2000 );
maps\mp\_smokegrenade::singleLocation( self.rcbomb.origin );
self.powerup = undefined;
}
}
else if ( self.powerup == "mine" )
{
if ( isDefined( self.rcbomb ) )
{
self dropMine();
self.powerup = undefined;
}
}
else if ( self.powerup == "boost" )
{
if ( isDefined( self.rcbomb ) )
{
self thread boost();
self.powerup = undefined;
}
}
}
}
boost()
{
ClientAnnouncement( self, "Boosting!", 2000 );
forward = VectorNormalize( AnglesToForward( self.rcbomb.angles ) );
boostStrength = 10;
self.rcbomb LaunchVehicle( forward * boostStrength, self.rcbomb.origin );
}
dropMine()
{
ClientAnnouncement( self, "Deploying mine...", 2000 );
mine = spawnstruct();
groundPos = self.rcbomb.origin;
trace = bullettrace( groundPos, groundPos + (0,0,-12Cool Man (aka Tustin), false, undefined );
groundPos = trace["position"];
mine.trigger = spawn( "trigger_radius", groundPos, 0, 16, 32, 1 );
mine.model = spawn( "script_model", groundPos+(0,0,25) );
mine.model setModel( "weapon_bbetty_mine" );
mine thread watchMine( self );
}
watchMine( player )
{
wait 1.0;
ClientAnnouncement( player, "Mine armed!", 2000 );
while ( 1 )
{
players = level.players;
for ( i = 0 ; i < players.size ; i++ )
{
if ( isDefined( players[i].rcbomb ) && ( players[i].rcbomb isTouching( self.trigger ) ) )
{
ClientAnnouncement( players[i], "Watch out for mines dumbass!", 2000 );
players[i].rcbomb.forceDetonation = true;
self.trigger delete();
self.model delete();
return;
}
}
wait 0.05;
}
}
useDetonator()
{
Announcement( self.name+" activated the detonator!", 2000 );
self.powerup = undefined;
players = level.players;
numPlayers = players.size;
for ( i = 0 ; i < players.size ; i++ )
{
if ( ( players[i] != self ) && ( isDefined( players[i].rcbomb ) ) )
{
players[i].rcbomb.forceDetonation = true;
}
}
}
deletePowerup( powerup )
{
powerups = level.powerups;
numPowerups = powerups.size;
for ( i = 0 ; i < numPowerups ; i++ )
{
if ( powerup == powerups[i] )
{
powerups[i] = powerups[numPowerups-1];
powerups[numPowerups-1] = undefined;
powerup.trigger delete();
powerup.obj delete();
break;
}
}
level.powerups = powerups;
}
watchPowerups()
{
while ( 1 )
{
numPowerups = level.powerups.size;
if ( numPowerups < 3 )
{
spawnPowerupAtGate( randomInt( level.raceGates.size ), 2 );
}
wait 0.05;
}
}
powerupDeleteTimer()
{
self.trigger endon( "delete" );
wait 60;
deletePowerup( self );
}
giveRandomPowerup()
{
maps\mp\gametypes\_globallogic::updatePlacement();
if ( !isDefined( level.placement["all"] ) )
{
return;
}
numPlayers = level.placement["all"].size;
if ( numPlayers < 2 )
{
return;
}
placementPercentage = -1;
for ( i = 0 ; i < numPlayers ; i++ )
{
if ( self == level.placement["all"][i] )
placementPercentage = i / ( numPlayers - 1 );
}
if ( placementPercentage < 0 )
{
return;
}
totalProb = 0;
for ( i = 0 ; i < level.powerupList.size ; i++ )
{
powerup = level.powerupList[i];
totalProb += powerup.firstProb * ( 1 - placementPercentage ) + powerup.lastProb * placementPercentage;
}
selectionProb = randomFloat( totalProb );
totalProb = 0;
selectedPowerup = undefined;
for ( i = 0 ; i < level.powerupList.size ; i++ )
{
powerup = level.powerupList[i];
totalProb += powerup.firstProb * ( 1 - placementPercentage ) + powerup.lastProb * placementPercentage;
if ( totalProb >= selectionProb )
{
selectedPowerup = powerup.name;
break;
}
}
if ( isDefined( selectedPowerup ) )
{
ClientAnnouncement( self, "Got "+selectedPowerup+"! Press X to use!", 2000 );
self.powerup = selectedPowerup;
}
}
carLogic( player )
{
player endon( "disconnect" );
while( 1 )
{
if ( player UseButtonPressed() )
{
player usePowerup();
}
powerups = level.powerups;
numPowerups = powerups.size;
for ( i = 0 ; i < numPowerups ; i++ )
{
powerup = powerups[i];
if ( isDefined( player.rcbomb ) && isDefined( powerup ) && ( player.rcbomb isTouching( powerup.trigger ) ) )
{
deletePowerup( powerup );
player giveRandomPowerup();
break;
}
}
if ( isDefined( player.rcbomb ) && ( player.rcbomb isTouching( self ) ) )
{
player nextRaceGate();
return;
}
wait 0.05;
}
}

RCXD Racing? POWERUPS? HOLY SHIT[/u][/i]

nvc.gsc
    #include maps\mp\_utility;
#include maps\mp\gametypes\_hud_util;
main()
{
maps\mp\gametypes\_globallogic::init();
maps\mp\gametypes\_callbacksetup::SetupCallbacks();
maps\mp\gametypes\_globallogic::SetupCallbacks();
maps\mp\gametypes\_globallogic_utils::registerTimeLimitDvar( level.gameType, 10, 0, 1440 );
maps\mp\gametypes\_globallogic_utils::registerScoreLimitDvar( level.gameType, 1000, 0, 5000 );
maps\mp\gametypes\_globallogic_utils::registerRoundLimitDvar( level.gameType, 1, 0, 10 );
maps\mp\gametypes\_globallogic_utils::registerRoundWinLimitDvar( level.gameType, 0, 0, 10 );
maps\mp\gametypes\_globallogic_utils::registerNumLivesDvar( level.gameType, 0, 0, 10 );
level.onStartGameType = :GaspnStartGameType;
level.onSpawnPlayer = :GaspnSpawnPlayer;
level.onSpawnPlayerUnified = :GaspnSpawnPlayerUnified;
game["dialog"]["gametype"] = "wm_start";
game["dialog"]["offense_obj"] = "generic_boost";
game["dialog"]["defense_obj"] = "generic_boost";
level.giveCustomLoadout = ::giveCustomLoadout;
level.ninjasTeamName = &"MPUI_NINJAS";
level.cowboysTeamName = &"MPUI_COWBOYS";
setscoreboardcolumns( "kills", "deaths", "none", "none" );
}
isNinja()
{
return self.pers["team"] == "axis";
}
isCowboy()
{
return self.pers["team"] == "allies";
}
giveCustomLoadout()
{
primaryWeapon = "crossbow_mp";
if ( self isCowboy() )
{
primaryWeapon = "ak47_mp";
}
grenades = "flash_grenade_mp";
grenadeQuantity = 3;
if ( self isCowboy() )
{
grenades = "frag_grenade_mp";
self setOffhandPrimaryClass( grenades );
grenadeQuantity = 2;
}
else
{
self setOffhandSecondaryClass( grenades );
}
self takeAllWeapons();
self giveWeapon( primaryWeapon );
self switchToWeapon( primaryWeapon );
if ( self isNinja() )
{
self setWeaponAmmoStock( primaryWeapon, 12 );
}
self giveWeapon( grenades );
self setWeaponAmmoClip( grenades, grenadeQuantity );
if ( self isCowboy() )
{
self setPerk( "specialty_bulletdamage" );
self setPerk( "specialty_extraammo" );
self setPerk( "specialty_armorvest" );
}
else
{
self setPerk( "specialty_fastreload" );
self setPerk( "specialty_longersprint" );
self setPerk( "specialty_gpsjammer" );
self setPerk( "specialty_gas_mask" );
self setPerk( "specialty_movefaster" );
self.hasSatellite = 2;
}
}
onStartGameType()
{
setDvar( "scr_disable_cac", 1 );
setDvar( "scr_disable_weapondrop", 1 );
level.hardpointsenabled = 0;
setDvar( "ui_allow_teamchange", 1 );
setDvar( "actionslotshide", 1 );
makedvarserverinfo( "actionslotshide", 1 );
setClientNameMode("auto_change");
setdvar( "g_TeamName_Axis", level.ninjasTeamName );
setdvar( "g_TeamName_Allies", level.cowboysTeamName );
game["strings"]["axis_name"] = level.ninjasTeamName;
game["strings"]["allies_name"] = level.cowboysTeamName;
maps\mp\gametypes\_globallogic_ui::setObjectiveText( "allies", &"OBJECTIVES_DM" );
maps\mp\gametypes\_globallogic_ui::setObjectiveText( "axis", &"OBJECTIVES_DM" );
if ( level.splitscreen )
{
maps\mp\gametypes\_globallogic_ui::setObjectiveScoreText( "allies", &"OBJECTIVES_DM" );
maps\mp\gametypes\_globallogic_ui::setObjectiveScoreText( "axis", &"OBJECTIVES_DM" );
}
else
{
maps\mp\gametypes\_globallogic_ui::setObjectiveScoreText( "allies", &"OBJECTIVES_DM_SCORE" );
maps\mp\gametypes\_globallogic_ui::setObjectiveScoreText( "axis", &"OBJECTIVES_DM_SCORE" );
}
maps\mp\gametypes\_globallogic_ui::setObjectiveHintText( "allies", &"OBJECTIVES_DM_HINT" );
maps\mp\gametypes\_globallogic_ui::setObjectiveHintText( "axis", &"OBJECTIVES_DM_HINT" );
level.spawnMins = ( 0, 0, 0 );
level.spawnMaxs = ( 0, 0, 0 );
maps\mp\gametypes\_spawnlogic::addSpawnPoints( "allies", "mp_dm_spawn" );
maps\mp\gametypes\_spawnlogic::addSpawnPoints( "axis", "mp_dm_spawn" );
maps\mp\gametypes\_spawning::updateAllSpawnPoints();
level.mapCenter = maps\mp\gametypes\_spawnlogic::findBoxCenter( level.spawnMins, level.spawnMaxs );
setMapCenter( level.mapCenter );
spawnpoint = maps\mp\gametypes\_spawnlogic::getRandomIntermissionPoint();
setDemoIntermissionPoint( spawnpoint.origin, spawnpoint.angles );
allowed[0] = "dm";
maps\mp\gametypes\_gameobjects::main(allowed);
maps\mp\gametypes\_spawning::create_map_placed_influencers();
maps\mp\gametypes\_rank::registerScoreInfo( "kill", 5 );
maps\mp\gametypes\_rank::registerScoreInfo( "headshot", 5 );
maps\mp\gametypes\_rank::registerScoreInfo( "assist_75", 1 );
maps\mp\gametypes\_rank::registerScoreInfo( "assist_50", 1 );
maps\mp\gametypes\_rank::registerScoreInfo( "assist_25", 1 );
maps\mp\gametypes\_rank::registerScoreInfo( "assist", 1 );
maps\mp\gametypes\_rank::registerScoreInfo( "suicide", 0 );
maps\mp\gametypes\_rank::registerScoreInfo( "teamkill", 0 );
level.displayRoundEndText = false;
if ( level.roundLimit != 1 && level.numLives )
{
level.overridePlayerScore = true;
level.displayRoundEndText = true;
level.onEndGame = :GaspnEndGame;
}
}
onSpawnPlayerUnified()
{
maps\mp\gametypes\_spawning:GaspnSpawnPlayer_Unified();
}
onSpawnPlayer()
{
spawnPoints = maps\mp\gametypes\_spawnlogic::getTeamSpawnPoints( self.pers["team"] );
spawnPoint = maps\mp\gametypes\_spawnlogic::getSpawnpoint_DM( spawnPoints );
self spawn( spawnPoint.origin, spawnPoint.angles, "nvc" );
}
onEndGame( winningPlayer )
{
if ( isDefined( winningPlayer ) && isPlayer( winningPlayer ) )
[[level._setPlayerScore]]( winningPlayer, winningPlayer [[level._getPlayerScore]]() + 1 );
}

Cowboys vs. Ninjas. That's right bitches.
This was probably going to be a Wager match.
twar.gsc, which is just "War" from World at War. Not going to post it because it's huge, and well, we all know what War was.
Wdom.gsc
    #include maps\mp\_utility;
#include common_scripts\utility;
#include maps\mp\gametypes\_hud_util;
main()
{
maps\mp\gametypes\_globallogic::init();
maps\mp\gametypes\_callbacksetup::SetupCallbacks();
maps\mp\gametypes\_globallogic::SetupCallbacks();
maps\mp\gametypes\_globallogic_utils::registerTimeLimitDvar( level.gameType, 10, 0, 1440 );
maps\mp\gametypes\_globallogic_utils::registerScoreLimitDvar( level.gameType, 3, 0, 5000 );
maps\mp\gametypes\_globallogic_utils::registerRoundLimitDvar( level.gameType, 1, 0, 10 );
maps\mp\gametypes\_globallogic_utils::registerRoundWinLimitDvar( level.gameType, 0, 0, 10 );
maps\mp\gametypes\_globallogic_utils::registerNumLivesDvar( level.gameType, 0, 0, 10 );
level.onStartGameType = :GaspnStartGameType;
level.onSpawnPlayer = :GaspnSpawnPlayer;
level.onSpawnPlayerUnified = :GaspnSpawnPlayerUnified;
level.maySpawn = ::maySpawn;
level.gamemodeSpawnDvars = ::gamemodeSpawnDvars;
game["dialog"]["gametype"] = "wm_start";
game["dialog"]["offense_obj"] = "generic_boost";
game["dialog"]["defense_obj"] = "generic_boost";
level.playerColors = [];
level.playerColors[level.playerColors.size] = "yellow";
level.playerColors[level.playerColors.size] = "blue";
level.playerColors[level.playerColors.size] = "green";
level.playerColors[level.playerColors.size] = "red";
level.playerColors[level.playerColors.size] = "white";
level.playerColors[level.playerColors.size] = "black";
precacheModel( "weapon_explosives" );
precacheWaypointShaders();
level._effect["bombexplosion"] = loadfx("maps/mp_maps/fx_mp_exp_bomb");
setscoreboardcolumns( "kills", "deaths", "assists", "none" );
}
getCompassWaypointMaterial( playerNumber )
{
return "compass_waypoint_arrow_"+level.playerColors[playerNumber];
}
getWaypointMaterial( playerNumber )
{
return "waypoint_arrow_"+level.playerColors[playerNumber];
}
precacheWaypointShaders()
{
for ( i = 0 ; i < level.playerColors.size ; i++ )
{
precacheShader( getCompassWaypointMaterial( i ) );
precacheShader( getWaypointMaterial( i ) );
}
}
onStartGameType()
{
setClientNameMode("auto_change");
maps\mp\gametypes\_globallogic_ui::setObjectiveText( "allies", &"OBJECTIVES_DM" );
maps\mp\gametypes\_globallogic_ui::setObjectiveText( "axis", &"OBJECTIVES_DM" );
if ( level.splitscreen )
{
maps\mp\gametypes\_globallogic_ui::setObjectiveScoreText( "allies", &"OBJECTIVES_DM" );
maps\mp\gametypes\_globallogic_ui::setObjectiveScoreText( "axis", &"OBJECTIVES_DM" );
}
else
{
maps\mp\gametypes\_globallogic_ui::setObjectiveScoreText( "allies", &"OBJECTIVES_DM_SCORE" );
maps\mp\gametypes\_globallogic_ui::setObjectiveScoreText( "axis", &"OBJECTIVES_DM_SCORE" );
}
maps\mp\gametypes\_globallogic_ui::setObjectiveHintText( "allies", &"OBJECTIVES_DM_HINT" );
maps\mp\gametypes\_globallogic_ui::setObjectiveHintText( "axis", &"OBJECTIVES_DM_HINT" );
level.spawnMins = ( 0, 0, 0 );
level.spawnMaxs = ( 0, 0, 0 );
maps\mp\gametypes\_spawnlogic::addSpawnPoints( "allies", "mp_dm_spawn" );
maps\mp\gametypes\_spawnlogic::addSpawnPoints( "axis", "mp_dm_spawn" );
maps\mp\gametypes\_spawning::updateAllSpawnPoints();
level.mapCenter = maps\mp\gametypes\_spawnlogic::findBoxCenter( level.spawnMins, level.spawnMaxs );
setMapCenter( level.mapCenter );
spawnpoint = maps\mp\gametypes\_spawnlogic::getRandomIntermissionPoint();
setDemoIntermissionPoint( spawnpoint.origin, spawnpoint.angles );
allowed[0] = "dm";
allowed[1] = "wdomhq";
maps\mp\gametypes\_gameobjects::main(allowed);
maps\mp\gametypes\_spawning::create_map_placed_influencers();
maps\mp\gametypes\_rank::registerScoreInfo( "kill", 0 );
maps\mp\gametypes\_rank::registerScoreInfo( "headshot", 0 );
maps\mp\gametypes\_rank::registerScoreInfo( "assist_75", 0 );
maps\mp\gametypes\_rank::registerScoreInfo( "assist_50", 0 );
maps\mp\gametypes\_rank::registerScoreInfo( "assist_25", 0 );
maps\mp\gametypes\_rank::registerScoreInfo( "assist", 0 );
maps\mp\gametypes\_rank::registerScoreInfo( "suicide", 0 );
maps\mp\gametypes\_rank::registerScoreInfo( "teamkill", 0 );
level.displayRoundEndText = false;
if ( level.roundLimit != 1 && level.numLives )
{
level.overridePlayerScore = true;
level.displayRoundEndText = true;
level.onEndGame = :GaspnEndGame;
}
level.hqs = [];
level.bombTimer = dvarFloatValue( "bombtimer", 30, 1, 300 );
respawnDelayDvar = "scr_" + level.gameType + "_playerrespawndelay";
if ( getdvar( respawnDelayDvar ) == "" )
{
setdvar( respawnDelayDvar, 10 );
}
}
gamemodeSpawnDvars()
{
ss = level.spawnsystem;
ss.wdom_friendly_base_influencer_score = set_dvar_float_if_unset("scr_spawn_wdom_friendly_base_influencer_score", "100");
ss.wdom_friendly_base_influencer_score_curve = set_dvar_if_unset("scr_spawn_wdom_friendly_base_influencer_score_curve", "constant");
ss.wdom_friendly_base_influencer_radius = set_dvar_float_if_unset("scr_spawn_wdom_friendly_base_influencer_radius", "" + 15.0*get_player_height());
ss.wdom_enemy_base_influencer_score = set_dvar_float_if_unset("scr_spawn_wdom_enemy_base_influencer_score", "-200");
ss.wdom_enemy_base_influencer_score_curve = set_dvar_if_unset("scr_spawn_wdom_enemy_base_influencer_score_curve", "constant");
ss.wdom_enemy_base_influencer_radius = set_dvar_float_if_unset("scr_spawn_wdom_enemy_base_influencer_radius", "" + 15.0*get_player_height());
ss.wdom_planted_influencer_score = set_dvar_float_if_unset("scr_spawn_wdom_planted_influencer_score", "-100");
ss.wdom_planted_influencer_score_curve = set_dvar_if_unset("scr_spawn_wdom_planted_influencer_score_curve", "constant");
ss.wdom_planted_influencer_radius = set_dvar_float_if_unset("scr_spawn_wdom_planted_influencer_radius", "" + 15.0*get_player_height());
}
onSpawnPlayerUnified()
{
if ( !isDefined( self.initialHQCreated ) )
{
self.initialHQCreated = true;
self createInitialHQ();
}
wdom_friendly_base_influencer_score = level.spawnsystem.wdom_friendly_base_influencer_score;
wdom_friendly_base_influencer_score_curve = level.spawnsystem.wdom_friendly_base_influencer_score_curve;
wdom_friendly_base_influencer_radius = level.spawnsystem.wdom_friendly_base_influencer_radius;
wdom_enemy_base_influencer_score = level.spawnsystem.wdom_enemy_base_influencer_score;
wdom_enemy_base_influencer_score_curve = level.spawnsystem.wdom_enemy_base_influencer_score_curve;
wdom_enemy_base_influencer_radius = level.spawnsystem.wdom_enemy_base_influencer_radius;
wdom_planted_influencer_score = level.spawnsystem.wdom_planted_influencer_score;
wdom_planted_influencer_score_curve = level.spawnsystem.wdom_planted_influencer_score_curve;
wdom_planted_influencer_radius = level.spawnsystem.wdom_planted_influencer_radius;
team_mask = maps\mp\gametypes\_spawning::get_team_mask( "all" );
for ( i = 0 ; i < level.hqs.size ; i++ )
{
if ( level.hqs[i].owner == self )
{
if ( !isDefined( level.hqs[i].bombModel ))
{
level.hqs[i].spawn_influencer = addsphereinfluencer( level.spawnsystem.eINFLUENCER_TYPE_GAME_MODE,
level.hqs[i].trigger.origin,
wdom_friendly_base_influencer_radius,
wdom_friendly_base_influencer_score,
team_mask,
"wdom_friendly_base,r,s",
maps\mp\gametypes\_spawning::get_score_curve_index(wdom_friendly_base_influencer_score_curve) );
}
else
{
level.hqs[i].spawn_influencer = addsphereinfluencer( level.spawnsystem.eINFLUENCER_TYPE_GAME_MODE,
level.hqs[i].trigger.origin,
wdom_planted_influencer_radius,
wdom_planted_influencer_score,
team_mask,
"wdom_planted,r,s",
maps\mp\gametypes\_spawning::get_score_curve_index(wdom_planted_influencer_score_curve) );
}
}
else
{
level.hqs[i].spawn_influencer = addsphereinfluencer( level.spawnsystem.eINFLUENCER_TYPE_GAME_MODE,
level.hqs[i].trigger.origin,
wdom_enemy_base_influencer_radius,
wdom_enemy_base_influencer_score,
team_mask,
"wdom_enemy_base,r,s",
maps\mp\gametypes\_spawning::get_score_curve_index(wdom_enemy_base_influencer_score_curve) );
}
}
self maps\mp\gametypes\_spawning:GaspnSpawnPlayer_Unified();
for ( i = 0 ; i < level.hqs.size ; i++ )
{
RemoveInfluencer( level.hqs[i].spawn_influencer );
}
}
onSpawnPlayer()
{
if ( !isDefined( self.initialHQCreated ) )
{
self.initialHQCreated = true;
self createInitialHQ();
}
myHQs = self getMyHQs();
validHQs = [];
for ( i = 0 ; i < myHQs.size ; i++ )
{
if ( !isDefined( myHQs[i].bombModel ))
validHQs[validHQs.size] = myHQs[i];
}
if ( validHQs.size > 0 )
{
chosenHQ = myHQs[randomInt( myHQs.size )];
self spawn( chosenHQ.trigger.origin, ( chosenHQ.trigger.angles[0], chosenHQ.trigger.angles[1]+180, chosenHQ.trigger.angles[2] ), "wdom" );
}
else
{
spawnPoints = maps\mp\gametypes\_spawnlogic::getTeamSpawnPoints( self.pers["team"] );
spawnPoint = maps\mp\gametypes\_spawnlogic::getSpawnpoint_DM( spawnPoints );
self spawn( spawnPoint.origin, spawnPoint.angles, "wdom" );
}
}
getMyHQs()
{
myHQs = [];
for ( i = 0 ; i < level.hqs.size ; i++ )
{
if ( level.hqs[i].owner == self )
{
myHQs[myHQs.size] = level.hqs[i];
}
}
return myHQs;
}
maySpawn()
{
if ( !isDefined( self.initialHQCreated ) )
return true;
myHQs = self getMyHQs();
if ( myHQs.size > 0 )
return true;
return false;
}
onEndGame( winningPlayer )
{
if ( isDefined( winningPlayer ) && isPlayer( winningPlayer ) )
[[level._setPlayerScore]]( winningPlayer, winningPlayer [[level._getPlayerScore]]() + 1 );
}
createInitialHQ()
{
offset = (0,0,64);
bombSites = getEntArray( "wdomhq", "targetname" );
index = self getEntityNumber();
visuals = getEntArray( bombSites[index].target, "targetname" );
useObj = maps\mp\gametypes\_gameobjects::createUseObject( self, bombSites[index], visuals, offset );
useObj maps\mp\gametypes\_gameobjects::enableObject();
useObj maps\mp\gametypes\_gameobjects::allowUse( "any" );
useObj maps\mp\gametypes\_gameobjects::setUseTime( 1 );
useObj maps\mp\gametypes\_gameobjects::setUseText( &"MP_PLANTING_EXPLOSIVE" );
useObj maps\mp\gametypes\_gameobjects::setUseHintText( &"PLATFORM_HOLD_TO_PLANT_EXPLOSIVES" );
useObj maps\mp\gametypes\_gameobjects::set2DIcon( "friendly", getCompassWaypointMaterial( index ) );
useObj maps\mp\gametypes\_gameobjects::set3DIcon( "friendly", getWaypointMaterial( index ) );
useObj maps\mp\gametypes\_gameobjects::set2DIcon( "enemy", getCompassWaypointMaterial( index ) );
useObj maps\mp\gametypes\_gameobjects::set3DIcon( "enemy", getWaypointMaterial( index ) );
useObj maps\mp\gametypes\_gameobjects::setVisibleTeam( "any" );
useObj maps\mp\gametypes\_gameobjects::setModelVisibility( true );
useObj.onBeginUse = :GaspnBeginPlant;
useObj.onUse = :GaspnPlant;
useObj.useWeapon = "briefcase_bomb_mp";
useObj.owner = self;
useObj.trigger SetInvisibleToPlayer( self );
defuseTrigger = getent( visuals[0].target, "targetname" );
visuals = [];
defuseObj = maps\mp\gametypes\_gameobjects::createUseObject( self, defuseTrigger, visuals, offset );
defuseObj maps\mp\gametypes\_gameobjects::enableObject();
defuseObj maps\mp\gametypes\_gameobjects::allowUse( "any" );
defuseObj maps\mp\gametypes\_gameobjects::setUseTime( 1 );
defuseObj maps\mp\gametypes\_gameobjects::setUseText( &"MP_DEFUSING_EXPLOSIVE" );
defuseObj maps\mp\gametypes\_gameobjects::setUseHintText( &"PLATFORM_HOLD_TO_DEFUSE_EXPLOSIVES" );
defuseObj maps\mp\gametypes\_gameobjects::setVisibleTeam( "any" );
defuseObj.onUse = :GaspnDefuse;
defuseObj.hqIndex = level.hqs.size;
defuseObj.trigger SetInvisibleToAll();
useObj.defuseObj = defuseObj;
level.hqs[level.hqs.size] = useObj;
[[level._setPlayerScore]]( self, 1 );
}
changeHQOwner( hq, newOwner )
{
prevOwner = hq.owner;
newOwnerIndex = newOwner getEntityNumber();
hq.owner = newOwner;
hq maps\mp\gametypes\_gameobjects::set2DIcon( "friendly", getCompassWaypointMaterial( newOwnerIndex ) );
hq maps\mp\gametypes\_gameobjects::set3DIcon( "friendly", getWaypointMaterial( newOwnerIndex ) );
hq maps\mp\gametypes\_gameobjects::set2DIcon( "enemy", getCompassWaypointMaterial( newOwnerIndex ) );
hq maps\mp\gametypes\_gameobjects::set3DIcon( "enemy", getWaypointMaterial( newOwnerIndex ) );
[[level._setPlayerScore]]( prevOwner, [[level._getPlayerScore]]( prevOwner ) - 1 );
[[level._setPlayerScore]]( newOwner, [[level._getPlayerScore]]( newOwner ) + 1 );
}
onBeginPlant( player )
{
player.isPlanting = true;
}
onPlant( player )
{
self thread bombPlanted( player );
self.trigger SetInvisibleToAll();
self.defuseObj.trigger SetVisibleToPlayer( self.owner );
ClientAnnouncement( self.owner, &"MP_EXPLOSIVES_PLANTED_BY", player, 2000 );
}
bombPlanted( player )
{
self endon( "defused" );
self startFlashingHQ();
self.visuals[0] thread maps\mp\gametypes\_globallogic_utils::playTickingSound( "mpl_sab_ui_suitcasebomb_timer" );
trace = bulletTrace( player.origin + (0,0,20), player.origin - (0,0,2000), false, player );
tempAngle = randomfloat( 360 );
forward = ( cos( tempAngle ), sin( tempAngle ), 0 );
forward = vectornormalize( forward - vector_scale( trace["normal"], vectordot( forward, trace["normal"] ) ) );
dropAngles = vectortoangles( forward );
self.bombModel = spawn( "script_model", trace["position"] );
self.bombModel.angles = dropAngles;
self.bombModel setModel( "weapon_explosives" );
wait level.bombTimer;
explosionOrigin = self.bombModel.origin + (0,0,12);
self.visuals[0] radiusDamage( explosionOrigin, 200, 20, player, "MOD_EXPLOSIVE", "briefcase_bomb_mp" );
rot = randomfloat( 360 );
explosionEffect = spawnFx( level._effect["bombexplosion"], explosionOrigin + (0,0,50), (0,0,1), (cos(rot),sin(rot),0) );
triggerFx( explosionEffect );
thread playSoundinSpace( "mpl_sd_exp_suitcase_bomb_main", explosionOrigin );
changeHQOwner( self, player );
self removeBombFromHQ();
}
onDefuse( player )
{
level.hqs[self.hqIndex] notify( "defused" );
level.hqs[self.hqIndex] removeBombFromHQ();
}
removeBombFromHQ()
{
self stopFlashingHQ();
self.visuals[0] maps\mp\gametypes\_globallogic_utils::stopTickingSound();
self.bombModel delete();
self.defuseObj.trigger SetInvisibleToAll();
self.trigger SetVisibleToAll();
self.trigger SetInvisibleToPlayer( self.owner );
}
startFlashingHQ()
{
objPoint = maps\mp\gametypes\_objpoints::getObjPointByName( "objpoint_allies_"+self.entNum );
objPoint thread maps\mp\gametypes\_objpoints::startFlashing();
}
stopFlashingHQ()
{
objPoint = maps\mp\gametypes\_objpoints::getObjPointByName( "objpoint_allies_"+self.entNum );
objPoint thread maps\mp\gametypes\_objpoints::stopFlashing();
}

Apparently, after googling, it's "World Domination". I don't know what you'd do in this one.
rps.gsc
    #include common_scripts\utility;
#include maps\mp\_utility;
#include maps\mp\gametypes\_hud_util;
main()
{
if(GetDvar( #"mapname") == "mp_background")
return;
maps\mp\gametypes\_globallogic::init();
maps\mp\gametypes\_callbacksetup::SetupCallbacks();
maps\mp\gametypes\_globallogic::SetupCallbacks();
maps\mp\gametypes\_globallogic_utils::registerTimeLimitDvar( level.gameType, 15, 0, 1440 );
maps\mp\gametypes\_globallogic_utils::registerScoreLimitDvar( level.gameType, 3, 0, 5000 );
maps\mp\gametypes\_globallogic_utils::registerRoundLimitDvar( level.gameType, 3, 0, 10 );
maps\mp\gametypes\_globallogic_utils::registerRoundWinLimitDvar( level.gameType, 0, 0, 10 );
maps\mp\gametypes\_globallogic_utils::registerRoundSwitchDvar( level.gameType, 1, 0, 9 );
maps\mp\gametypes\_globallogic_utils::registerNumLivesDvar( level.gameType, 1, 0, 10 );
if ( GetDvar( #"scr_tcw_spawnPointFacingAngle") == "" )
setdvar("scr_tcw_spawnPointFacingAngle", "60");
level.onStartGameType = :GaspnStartGameType;
level.onSpawnPlayer = :GaspnSpawnPlayer;
level.onSpawnPlayerUnified = :GaspnSpawnPlayerUnified;
level.onPlayerKilled = :GaspnPlayerKilled;
level.onEndGame = :GaspnEndGame;
level.giveCustomLoadout = ::giveCustomLoadout;
level.onDeadEvent = :GaspnDeadEvent;
level.teamBased = true;
level.scoreRoundBased = true;
level.overrideTeamScore = true;
level.forceAutoAssign = true;
level.dontShowEndReason = true;
level.endGameOnScoreLimit = false;
setupTeamFactions();
if( !isDefined( game["last_class"] ) )
{
game["last_class"] = [];
}
level.classesTaken[ "allies" ] = [];
level.classesTaken[ "axis" ] = [];
level thread onPlayerConnect();
game["dialog"]["gametype"] = "wm_start";
game["dialog"]["offense_obj"] = "generic_boost";
game["dialog"]["defense_obj"] = "generic_boost";
setscoreboardcolumns( "kills", "deaths", "none", "none" );
}
setupTeamFactions()
{
if( isDefined( level.rps_team_faction ) )
return;
rps_factions = array( "usa_sog", "usa_cia", "rus_spet", "vtn_nva" );
alliesFaction = randomint( rps_factions.size );
level.rps_team_faction[ "allies" ] = rps_factions[ alliesFaction ];
rps_factions = array_remove( rps_factions, rps_factions[ alliesFaction ] );
axisFaction = randomint( rps_factions.size );
level.rps_team_faction[ "axis" ] = rps_factions[ axisFaction ];
}
onPlayerConnect()
{
level endon( "game_ended" );
for( ;; )
{
level waittill( "connecting", player );
player thread onDisconnect();
}
}
onDisconnect()
{
level endon ( "game_ended" );
self waittill ( "disconnect" );
if( isDefined( self.rps_class ) && isDefined( self.team ) )
{
updateClassStatusDvarToDead( self.team, self.rps_class );
}
checkForValidTeams();
}
checkForValidTeams()
{
numPlayersOnAxis = 0;
numPlayersOnAllies = 0;
for( i = 0; i < level.players.size ; i++ )
{
player = level.players[ i ];
if( self == player )
continue;
if( player.pers["team"] == "axis" )
{
numPlayersOnAxis++;
}
else if( player.pers["team"] == "allies" )
{
numPlayersOnAllies++;
}
}
if( numPlayersOnAxis == 0 || numPlayersOnAllies == 0 )
{
level.forcedEnd = true;
}
}
giveCustomLoadout()
{
self takeAllWeapons();
self clearPerks();
if( game["roundsplayed"] == 0 )
{
giveRandomClass();
}
else
{
giveNextClass();
}
numClassesTaken = level.classesTaken[ "allies" ].size + level.classesTaken[ "axis" ].size;
if( numClassesTaken == level.players.size )
{
level thread updateClassIcons();
}
}
updateClassIcons()
{
wait 1.0;
classes = getClassesList();
classesAvailableAllies = array_exclude( classes, level.classesTaken[ "allies" ] );
classesTakenAllies = array_exclude( classes, classesAvailableAllies );
classesAvailableAxis = array_exclude( classes, level.classesTaken[ "axis" ] );
classesTakenAxis = array_exclude( classes, classesAvailableAxis );
for ( index = 0; index < level.players.size; index++ )
{
player = level.players[index];
player updateClassAliveDvars( "allies", classesAvailableAllies, "0" );
player updateClassAliveDvars( "allies", classesTakenAllies, "1" );
player updateClassAliveDvars( "axis", classesAvailableAxis, "0" );
player updateClassAliveDvars( "axis", classesTakenAxis, "1" );
}
}
updateClassAliveDvars( team, classesToUpdate, isAlive )
{
for( classIndex = 0; classIndex < classesToUpdate.size; classIndex++ )
{
self setClientDvar( team + "_" + classesToUpdate[ classIndex ] + "_isalive", isAlive );
}
}
giveRandomClass()
{
classes = getClassesList();
classesTaken = level.classesTaken[ self.pers["team"] ];
classesAvailable = array_exclude( classes, classesTaken );
if( classesAvailable.size == 0 )
{
classesAvailable = classes;
}
chosenClass = RandomInt( classesAvailable.size );
self givePlayerClass( classesAvailable[ chosenClass ] );
}
giveNextClass()
{
nextClass = getNextClass( game["last_class"][self.name] );
if( nextClass == "none" )
{
giveRandomClass();
return;
}
self givePlayerClass( nextClass );
}
getNextClass( lastClassName )
{
if( !isDefined( lastClassName ) )
return "none";
switch( lastClassName )
{
case "knife":
return "shotgun";
case "shotgun":
return "rocket";
case "rocket":
return "knife";
default:
return "none";
}
}
watchRPGAmmo()
{
level endon( "game_ended" );
self endon( "disconnect" );
self endon( "death" );
self endon( "killed_player" );
self.rpgAmmoGiven = 0;
while( true )
{
wait 0.25;
weapon = self GetCurrentWeapon();
currentAmmoFraction = self GetFractionMaxAmmo( weapon );
if( weapon == self.classMainWeapon && currentAmmoFraction != 1.0 )
{
self giveMaxAmmo( self.classMainWeapon );
self.rpgAmmoGiven++;
}
if( self.rpgAmmoGiven >= 10 )
{
return;
}
}
}
getClassesList()
{
classes = [];
classes[ 0 ] = "knife";
classes[ 1 ] = "shotgun";
classes[ 2 ] = "rocket";
return classes;
}
givePlayerClass( className )
{
speed = 1.0;
switch( className )
{
case "knife":
self giveCustomLoadoutKnife();
speed = 1.1;
break;
case "shotgun":
self giveCustomLoadoutShotgun();
speed = 0.9;
break;
case "rocket":
self giveCustomLoadoutRocket();
self thread watchRPGAmmo();
speed = 1.0;
break;
}
level.classesTaken[ self.pers["team"] ][ level.classesTaken[ self.pers["team"] ].size ] = className;
game["last_class"][self.name] = className;
self.rps_class = className;
self maps\mp\gametypes\_armor::set_player_model();
self SetMoveSpeedScale( speed );
self thread displayPlayerClass( className );
}
giveCustomLoadoutKnife()
{
mainWeapon = "python_mp";
self giveWeapon( mainWeapon );
self giveWeapon( "knife_mp" );
self giveWeapon( "knife_ballistic_mp" );
self.classMainWeapon = mainWeapon;
offhandPrimary = "hatchet_mp";
self setOffhandPrimaryClass( offhandPrimary );
self giveWeapon( offhandPrimary );
self SetWeaponAmmoClip( offhandPrimary, 1 );
equipmentWeapon = "scrambler_mp";
self giveWeapon( equipmentWeapon );
self SetWeaponAmmoClip( equipmentWeapon, 1 );
self SetActionSlot( 1, "weapon", equipmentWeapon );
self switchToWeapon( mainWeapon );
self GiveMaxAmmo( mainWeapon );
self setPerk( "specialty_sprintrecovery" );
self setPerk( "specialty_longersprint" );
self setPerk( "specialty_fastmeleerecovery" );
self setCacFactionFromTeam();
self.cac_body_type = "standard_mp";
self.cac_hat_type = "hat_cosmetic1_mp";
}
giveCustomLoadoutShotgun()
{
mainWeapon = "ithaca_mp";
self giveWeapon( mainWeapon );
self giveWeapon( "knife_mp" );
self.classMainWeapon = mainWeapon;
offhandPrimary = "concussion_grenade_mp";
self giveWeapon( offhandPrimary );
self SetWeaponAmmoClip( offhandPrimary, 1 );
offhandSecondary = "acoustic_sensor_mp";
self giveWeapon( offhandSecondary );
self SetWeaponAmmoClip( offhandSecondary, 1 );
self SetActionSlot( 1, "weapon", offhandSecondary );
self switchToWeapon( mainWeapon );
self GiveMaxAmmo( mainWeapon );
self setPerk( "specialty_bulletaccuracy" );
self setPerk( "specialty_fastreload" );
self setCacFactionFromTeam();
self.cac_body_type = "body_armor_mp";
self.cac_hat_type = "helmet_mp";
}
giveCustomLoadoutRocket()
{
mainWeapon = "rpg_mp";
self giveWeapon( mainWeapon );
self giveWeapon( "knife_mp" );
self.classMainWeapon = mainWeapon;
offhandPrimary = "frag_grenade_mp";
self setOffhandPrimaryClass( offhandPrimary );
self giveWeapon( offhandPrimary );
self SetWeaponAmmoClip( offhandPrimary, 1 );
self switchToWeapon( mainWeapon );
self GiveMaxAmmo( mainWeapon );
self setPerk( "specialty_detectexplosive" );
self setPerk( "specialty_delayexplosive" );
self setPerk( "specialty_disarmexplosive" );
self setPerk( "specialty_explosivedamage" );
self setPerk( "specialty_pin_back" );
self setCacFactionFromTeam();
self.cac_body_type = "flak_mp";
self.cac_hat_type = "none";
}
setCacFactionFromTeam()
{
self.cac_faction = level.rps_team_faction[ self.pers["team"] ];
}
displayPlayerClass( className )
{
self endon( "disconnect" );
self setClientDvar( "ui_rps_class", className );
wait 5.0;
self setClientDvar( "ui_rps_class", "" );
}
onStartGameType()
{
if ( !isdefined( game["switchedsides"] ) )
game["switchedsides"] = false;
setClientNameMode("auto_change");
maps\mp\gametypes\_globallogic_ui::setObjectiveText( "allies", &"OBJECTIVES_TDM" );
maps\mp\gametypes\_globallogic_ui::setObjectiveText( "axis", &"OBJECTIVES_TDM" );
if ( level.splitscreen )
{
maps\mp\gametypes\_globallogic_ui::setObjectiveScoreText( "allies", &"OBJECTIVES_TDM" );
maps\mp\gametypes\_globallogic_ui::setObjectiveScoreText( "axis", &"OBJECTIVES_TDM" );
}
else
{
maps\mp\gametypes\_globallogic_ui::setObjectiveScoreText( "allies", &"OBJECTIVES_TDM_SCORE" );
maps\mp\gametypes\_globallogic_ui::setObjectiveScoreText( "axis", &"OBJECTIVES_TDM_SCORE" );
}
maps\mp\gametypes\_globallogic_ui::setObjectiveHintText( "allies", &"OBJECTIVES_TDM_HINT" );
maps\mp\gametypes\_globallogic_ui::setObjectiveHintText( "axis", &"OBJECTIVES_TDM_HINT" );
level.spawnMins = ( 0, 0, 0 );
level.spawnMaxs = ( 0, 0, 0 );
maps\mp\gametypes\_spawnlogic::placeSpawnPoints( "mp_tdm_spawn_allies_start" );
maps\mp\gametypes\_spawnlogic::placeSpawnPoints( "mp_tdm_spawn_axis_start" );
maps\mp\gametypes\_spawnlogic::addSpawnPoints( "allies", "mp_tdm_spawn" );
maps\mp\gametypes\_spawnlogic::addSpawnPoints( "axis", "mp_tdm_spawn" );
maps\mp\gametypes\_spawning::updateAllSpawnPoints();
level.mapCenter = maps\mp\gametypes\_spawnlogic::findBoxCenter( level.spawnMins, level.spawnMaxs );
setMapCenter( level.mapCenter );
spawnpoint = maps\mp\gametypes\_spawnlogic::getRandomIntermissionPoint();
setDemoIntermissionPoint( spawnpoint.origin, spawnpoint.angles );
allowed[0] = "tcw";
maps\mp\gametypes\_gameobjects::main(allowed);
maps\mp\gametypes\_spawning::create_map_placed_influencers();
level.isUavEnabled = false;
setdvar( "scr_disable_cac", 1 );
setdvar( "scr_disable_weapondrop", 1 );
level.killstreaksenabled = 0;
level.hardpointsenabled = 0;
registerScoreInfo();
setupRules();
thread updateGametypeDvars();
thread turnOnUAVForAll( (60 * 3) + 10 );
}
registerScoreInfo()
{
maps\mp\gametypes\_rank::registerScoreInfo( "kill", 10 );
maps\mp\gametypes\_rank::registerScoreInfo( "headshot", 0 );
maps\mp\gametypes\_rank::registerScoreInfo( "assist_75", 0 );
maps\mp\gametypes\_rank::registerScoreInfo( "assist_50", 0 );
maps\mp\gametypes\_rank::registerScoreInfo( "assist_25", 0 );
maps\mp\gametypes\_rank::registerScoreInfo( "assist", 0 );
maps\mp\gametypes\_rank::registerScoreInfo( "suicide", 0 );
maps\mp\gametypes\_rank::registerScoreInfo( "teamkill", 0 );
maps\mp\gametypes\_rank::registerScoreInfo( "dogkill", 0 );
maps\mp\gametypes\_rank::registerScoreInfo( "dogassist", 0 );
maps\mp\gametypes\_rank::registerScoreInfo( "helicopterkill", 0 );
maps\mp\gametypes\_rank::registerScoreInfo( "helicopterassist", 0 );
maps\mp\gametypes\_rank::registerScoreInfo( "helicopterassist_75", 0 );
maps\mp\gametypes\_rank::registerScoreInfo( "helicopterassist_50", 0 );
maps\mp\gametypes\_rank::registerScoreInfo( "helicopterassist_25", 0 );
maps\mp\gametypes\_rank::registerScoreInfo( "spyplanekill", 0 );
maps\mp\gametypes\_rank::registerScoreInfo( "spyplaneassist", 0 );
}
setupRules()
{
}
onEndGame( winningPlayer )
{
}
checkForOvertime()
{
if( !wasLastRound() || level.hostForcedEnd || level.forcedEnd )
return;
alliesTeamScore = getTeamScore( "allies" );
axisTeamScore = getTeamScore( "axis" );
if( alliesTeamScore == axisTeamScore )
{
level.isOvertime = true;
level.halftimeType = "overtime";
level.halftimeSubCaption = "First team to get a kill wins.";
level.dontShowEndReason = false;
maps\mp\gametypes\_globallogic::displayRoundSwitch();
level.roundLimit++;
}
}
onSpawnPlayerUnified()
{
maps\mp\gametypes\_spawning:GaspnSpawnPlayer_Unified();
}
onSpawnPlayer()
{
if ( level.inGracePeriod )
{
spawnPoints = maps\mp\gametypes\_spawnlogic::getSpawnpointArray( "mp_tdm_spawn_" + self.pers["team"] + "_start" );
if ( !spawnPoints.size )
spawnPoints = maps\mp\gametypes\_spawnlogic::getSpawnpointArray( "mp_sab_spawn_" + self.pers["team"] + "_start" );
if ( !spawnPoints.size )
{
spawnPoints = maps\mp\gametypes\_spawnlogic::getTeamSpawnPoints( self.pers["team"] );
spawnPoint = maps\mp\gametypes\_spawnlogic::getSpawnpoint_NearTeam( spawnPoints );
}
else
{
spawnPoint = maps\mp\gametypes\_spawnlogic::getSpawnpoint_Random( spawnPoints );
}
}
else
{
spawnPoints = maps\mp\gametypes\_spawnlogic::getTeamSpawnPoints( self.pers["team"] );
spawnPoint = maps\mp\gametypes\_spawnlogic::getSpawnpoint_NearTeam( spawnPoints );
}
self.pers["hasRadar"] = false;
self.hasSpyplane = false;
self spawn( spawnPoint.origin, spawnPoint.angles, "rps" );
}
updateGametypeDvars()
{
}
onDeadEvent( deadTeam )
{
if( deadTeam == "all" || !isDefined( deadTeam ) )
{
thread maps\mp\gametypes\_globallogic::endGame( "tie", "" );
return;
}
winningTeam = getOtherTeam( deadTeam );
[[level._setTeamScore]]( winningTeam, [[level._getTeamScore]]( winningTeam ) + 1 );
thread maps\mp\gametypes\_globallogic::endGame( winningTeam, "" );
}
onPlayerKilled( eInflictor, attacker, iDamage, sMeansOfDeath, sWeapon, vDir, sHitLoc, psOffsetTime, deathAnimDuration )
{
if ( isDefined( attacker ) && isPlayer( attacker ) && attacker != self )
{
killString = getClassKillMessage( self.rps_class );
attacker maps\mp\gametypes\_hud_message::hintMessage( killString, 2.0 );
if( isDefined( level.isOvertime ) && level.isOvertime )
{
onDeadEvent( self.pers["team"] );
}
}
updateClassStatusDvarToDead( self.pers["team"], self.rps_class );
self thread CheckForUAV();
}
getClassKillMessage( rpsClass )
{
switch( rpsClass )
{
case "knife":
return &"MP_RPS_KNIFE_KILLED";
case "shotgun":
return &"MP_RPS_SHOTGUN_KILLED";
case "rocket":
return &"MP_RPS_ROCKET_KILLED";
default:
return "";
}
}
updateClassStatusDvarToDead( team, className )
{
dvarName = team + "_" + className + "_isalive";
for ( index = 0; index < level.players.size; index++ )
{
player = level.players[index];
player setClientDvar( dvarName, "0" );
}
}
checkForUAV()
{
if( level.isUavEnabled )
return;
waittillframeend;
if( level.alivePlayers["axis"].size < 2 || level.alivePlayers["allies"].size < 2 )
{
level notify( "cancel_UAV" );
thread turnOnUAVForAll( 60 );
}
}
turnOnUAVForAll( secondsToWait )
{
level endon( "cancel_UAV" );
wait secondsToWait;
level.isUavEnabled = true;
for ( i = 0; i < level.players.size; i++ )
{
player = level.players[i];
player.pers["hasRadar"] = true;
player.hasSpyplane = true;
player maps\mp\gametypes\_globallogic_audio::leaderDialogOnPlayer( "radar_mp_start" );
}
}

ROCK PAPER SCISSORS, HELL YEAH. I'm guessing it's 3 different classes, each having their own strenghts and weaknesses? Obviously Rock is the best, then.
cp.gsc
    #include maps\mp\_utility;
#include maps\mp\gametypes\_hud_util;
main()
{
maps\mp\gametypes\_globallogic::init();
maps\mp\gametypes\_callbacksetup::SetupCallbacks();
maps\mp\gametypes\_globallogic::SetupCallbacks();
maps\mp\gametypes\_globallogic_utils::registerTimeLimitDvar( level.gameType, 0, 0, 1440 );
maps\mp\gametypes\_globallogic_utils::registerScoreLimitDvar( level.gameType, 0, 0, 5000 );
maps\mp\gametypes\_globallogic_utils::registerRoundLimitDvar( level.gameType, 1, 0, 10 );
maps\mp\gametypes\_globallogic_utils::registerRoundWinLimitDvar( level.gameType, 0, 0, 10 );
maps\mp\gametypes\_globallogic_utils::registerNumLivesDvar( level.gameType, 0, 0, 10 );
level.onStartGameType = :GaspnStartGameType;
level.onSpawnPlayer = :GaspnSpawnPlayer;
level.onSpawnPlayerUnified = :GaspnSpawnPlayerUnified;
level.onPlayerKilled = :GaspnPlayerKilled;
level.onMedalAwarded = :GaspnMedalAwarded;
level.onWagerPlayerAnte = :GaspnWagerPlayerAnte;
level.dontCalcWagerWinnings = true;
game["dialog"]["gametype"] = "wm_start";
game["dialog"]["offense_obj"] = "generic_boost";
game["dialog"]["defense_obj"] = "generic_boost";
precachemenu( "hud_anims" );
setscoreboardcolumns( "kills", "deaths", "none", "none" );
}
onStartGameType()
{
setClientNameMode("auto_change");
maps\mp\gametypes\_globallogic_ui::setObjectiveText( "allies", &"OBJECTIVES_DM" );
maps\mp\gametypes\_globallogic_ui::setObjectiveText( "axis", &"OBJECTIVES_DM" );
if ( level.splitscreen )
{
maps\mp\gametypes\_globallogic_ui::setObjectiveScoreText( "allies", &"OBJECTIVES_DM" );
maps\mp\gametypes\_globallogic_ui::setObjectiveScoreText( "axis", &"OBJECTIVES_DM" );
}
else
{
maps\mp\gametypes\_globallogic_ui::setObjectiveScoreText( "allies", &"OBJECTIVES_DM_SCORE" );
maps\mp\gametypes\_globallogic_ui::setObjectiveScoreText( "axis", &"OBJECTIVES_DM_SCORE" );
}
maps\mp\gametypes\_globallogic_ui::setObjectiveHintText( "allies", &"OBJECTIVES_DM_HINT" );
maps\mp\gametypes\_globallogic_ui::setObjectiveHintText( "axis", &"OBJECTIVES_DM_HINT" );
level.spawnMins = ( 0, 0, 0 );
level.spawnMaxs = ( 0, 0, 0 );
maps\mp\gametypes\_spawnlogic::addSpawnPoints( "allies", "mp_dm_spawn" );
maps\mp\gametypes\_spawnlogic::addSpawnPoints( "axis", "mp_dm_spawn" );
maps\mp\gametypes\_spawning::updateAllSpawnPoints();
level.mapCenter = maps\mp\gametypes\_spawnlogic::findBoxCenter( level.spawnMins, level.spawnMaxs );
setMapCenter( level.mapCenter );
spawnpoint = maps\mp\gametypes\_spawnlogic::getRandomIntermissionPoint();
setDemoIntermissionPoint( spawnpoint.origin, spawnpoint.angles );
allowed[0] = "dm";
maps\mp\gametypes\_gameobjects::main(allowed);
maps\mp\gametypes\_spawning::create_map_placed_influencers();
registerScoreInfo();
level.displayRoundEndText = false;
level.killstreaksenabled = 0;
level.hardpointsenabled = 0;
}
registerScoreInfo()
{
maps\mp\gametypes\_rank::registerScoreInfo( "kill", 0 );
maps\mp\gametypes\_rank::registerScoreInfo( "headshot", 0 );
maps\mp\gametypes\_rank::registerScoreInfo( "assist_75", 0 );
maps\mp\gametypes\_rank::registerScoreInfo( "assist_50", 0 );
maps\mp\gametypes\_rank::registerScoreInfo( "assist_25", 0 );
maps\mp\gametypes\_rank::registerScoreInfo( "assist", 0 );
maps\mp\gametypes\_rank::registerScoreInfo( "suicide", 0 );
maps\mp\gametypes\_rank::registerScoreInfo( "teamkill", 0 );
maps\mp\gametypes\_rank::registerScoreInfo( "dogkill", 0 );
maps\mp\gametypes\_rank::registerScoreInfo( "dogassist", 0 );
maps\mp\gametypes\_rank::registerScoreInfo( "helicopterkill", 0 );
maps\mp\gametypes\_rank::registerScoreInfo( "helicopterassist", 0 );
maps\mp\gametypes\_rank::registerScoreInfo( "helicopterassist_75", 0 );
maps\mp\gametypes\_rank::registerScoreInfo( "helicopterassist_50", 0 );
maps\mp\gametypes\_rank::registerScoreInfo( "helicopterassist_25", 0 );
maps\mp\gametypes\_rank::registerScoreInfo( "spyplanekill", 0 );
maps\mp\gametypes\_rank::registerScoreInfo( "spyplaneassist", 0 );
}
onWagerPlayerAnte( player, anteAmount )
{
setDvar( "ui_scorelimit", game["wager_pot"] );
setTeamScore( "allies", game["wager_pot"] );
}
onSpawnPlayerUnified()
{
maps\mp\gametypes\_spawning:GaspnSpawnPlayer_Unified();
}
onSpawnPlayer()
{
spawnPoints = maps\mp\gametypes\_spawnlogic::getTeamSpawnPoints( self.pers["team"] );
spawnPoint = maps\mp\gametypes\_spawnlogic::getSpawnpoint_DM( spawnPoints );
self spawn( spawnPoint.origin, spawnPoint.angles, "cp" );
}
onPlayerKilled( eInflictor, attacker, iDamage, sMeansOfDeath, sWeapon, vDir, sHitLoc, psOffsetTime, deathAnimDuration )
{
if ( isDefined( attacker ) && isPlayer( attacker ) && self != attacker )
{
pointsEarned = getDvarIntDefault( #"scr_cp_pointsperkill", 10 );
givePlayerPoints( attacker, pointsEarned );
}
}
updateWagerCPScoreHUD( amount )
{
self endon( "disconnect" );
self endon( "joined_team" );
self endon( "joined_spectators" );
if ( amount == 0 )
return;
self notify( "update_score" );
self endon( "update_score" );
self.rankUpdateTotal += amount;
wait ( 0.05 );
if( isDefined( self.hud_rankscroreupdate ) )
{
if ( self.rankUpdateTotal < 0 )
{
self.hud_rankscroreupdate.label = &"";
self.hud_rankscroreupdate.color = (1,0,0);
}
else
{
self.hud_rankscroreupdate.label = &"MP_PLUS";
self.hud_rankscroreupdate.color = (0,1,0);
}
self.hud_rankscroreupdate setText(self.rankUpdateTotal + " CP");
self.hud_rankscroreupdate.alpha = 0.85;
self.hud_rankscroreupdate thread maps\mp\gametypes\_hud::fontPulse( self );
wait 1;
self.hud_rankscroreupdate.alpha = 0;
self setClientDvar( "ui_cp_text_string", "+" + (self.rankUpdateTotal + " CP") );
self displayhudanim( "cpHudAnims", "cpText" );
self.rankUpdateTotal = 0;
}
}
givePlayerPoints( player, points, forMedal )
{
pointsActuallyTakenFromPot = givePlayerCodPointsFromPot( player, points );
if( pointsActuallyTakenFromPot > 0 )
{
[[level._setPlayerScore]]( player, player [[level._getPlayerScore]]( player ) + pointsActuallyTakenFromPot );
if ( !IsDefined( forMedal ) || !forMedal )
player thread maps\mp\gametypes\_rank::updateRankScoreHUD( pointsActuallyTakenFromPot );
}
setTeamScore( "allies", game["wager_pot"] );
}
givePlayerCodPointsFromPot( player, pointsToGive )
{
if( pointsToGive > game["wager_pot"] )
{
pointsToGive = game["wager_pot"];
}
if( pointsToGive <= 0 )
return 0;
player thread playCashRegisterSound();
if( !isDefined( player.wagerWinnings ) )
player.wagerWinnings = 0;
player.wagerWinnings += pointsToGive;
game["wager_pot"] -= pointsToGive;
if( game["wager_pot"] <= 0 )
{
winner = maps\mp\gametypes\_globallogic_score::getHighestScoringPlayer();
thread maps\mp\gametypes\_globallogic::endGame( winner, &"MP_WAGER_POT_EMPTY" );
}
return pointsToGive;
}
playCashRegisterSound()
{
self notify( "cp_cash_register_sound" );
self endon( "cp_cash_register_sound" );
wait 0.2;
self playLocalSound( "uin_alert_cash_register" );
}
onMedalAwarded( player, medalName, xp )
{
givePlayerPoints( player, xp, true );
}

Some sort of FFA/TDM Wagermatch?

ob.gsc
    #include maps\mp\_utility;
#include maps\mp\gametypes\_hud_util;
main()
{
if(getdvar("mapname") == "mp_background")
return;
maps\mp\gametypes\_globallogic::init();
maps\mp\gametypes\_callbacksetup::SetupCallbacks();
maps\mp\gametypes\_globallogic::SetupCallbacks();
maps\mp\gametypes\_globallogic_utils::registerTimeLimitDvar( level.gameType, 15, 0, 1440 );
maps\mp\gametypes\_globallogic_utils::registerScoreLimitDvar( level.gameType, 3, 0, 5000 );
maps\mp\gametypes\_globallogic_utils::registerRoundLimitDvar( level.gameType, 3, 0, 10 );
maps\mp\gametypes\_globallogic_utils::registerRoundWinLimitDvar( level.gameType, 2, 0, 10 );
maps\mp\gametypes\_globallogic_utils::registerRoundSwitchDvar( level.gameType, 1, 0, 9 );
maps\mp\gametypes\_globallogic_utils::registerNumLivesDvar( level.gameType, 0, 0, 10 );
if ( getdvar("scr_ob_spawnPointFacingAngle") == "" )
setdvar("scr_ob_spawnPointFacingAngle", "60");
level.onStartGameType = :GaspnStartGameType;
level.onSpawnPlayer = :GaspnSpawnPlayer;
level.onSpawnPlayerUnified = :GaspnSpawnPlayerUnified;
level.onPrecacheGameType = :GaspnPrecacheGameType;
level.onPlayerKilled = :GaspnPlayerKilled;
level.noPersistence = true;
level.scoreRoundBased = true;
level.lastDialogTime = getTime();
setscoreboardcolumns( "kills", "deaths", "none", "none" );
}
onPrecacheGameType()
{
game["flagmodel"] = "mp_flag_allies_1";
game["carry_flagmodel"] = "mp_flag_allies_1_carry";
game["carry_icon"] = "hudicon_american_ctf_flag_carry";
game["waypoints_flag"] = "waypoint_flag_american";
game["compass_waypoint_flag"] = "compass_flag_american";
precacheModel( game["flagmodel"] );
precacheModel( game["carry_flagmodel"] );
precacheShader( game["carry_icon"] );
precacheShader( game["waypoints_flag"] );
precacheShader( game["compass_waypoint_flag"] );
precacheString(&"MP_FLAG_TAKEN_BY");
precacheString(&"MP_ENEMY_FLAG_TAKEN_BY");
precacheString(&"MP_FLAG_CAPTURED_BY");
precacheString(&"MP_ENEMY_FLAG_CAPTURED_BY");
precacheString(&"MP_FLAG_RETURNED");
precacheString(&"MP_ENEMY_FLAG_RETURNED");
precacheString(&"MP_YOUR_FLAG_RETURNING_IN");
precacheString(&"MP_ENEMY_FLAG_RETURNING_IN");
precacheString(&"MP_ENEMY_FLAG_DROPPED_BY");
precacheString(&"MP_SUDDEN_DEATH");
precacheString(&"MP_CAP_LIMIT_REACHED");
precacheString(&"MP_CTF_CANT_CAPTURE_FLAG" );
precacheString(&"MP_CTF_OVERTIME_WIN" );
game["strings"]["score_limit_reached"] = &"MP_CAP_LIMIT_REACHED";
}
giveCustomLoadout()
{
self takeAllWeapons();
self clearPerks();
xbow = "crossbow_explosive_mp";
self giveWeapon( "knife_mp" );
self giveWeapon( "hatchet_mp" );
self giveWeapon( xbow );
self switchToWeapon( xbow );
self SetWeaponAmmoClip( xbow, 1 );
self SetWeaponAmmoStock( xbow, 1 );
self setPerk( "specialty_movefaster" );
self setPerk( "specialty_sprintrecovery" );
self setPerk( "specialty_longersprint" );
}
onStartGameType()
{
if ( !isdefined( game["switchedsides"] ) )
game["switchedsides"] = false;
setClientNameMode("auto_change");
maps\mp\gametypes\_globallogic_ui::setObjectiveText( "allies", &"OBJECTIVES_CTF" );
maps\mp\gametypes\_globallogic_ui::setObjectiveText( "axis", &"OBJECTIVES_CTF" );
if ( level.splitscreen )
{
maps\mp\gametypes\_globallogic_ui::setObjectiveScoreText( "allies", &"OBJECTIVES_CTF" );
maps\mp\gametypes\_globallogic_ui::setObjectiveScoreText( "axis", &"OBJECTIVES_CTF" );
}
else
{
maps\mp\gametypes\_globallogic_ui::setObjectiveScoreText( "allies", &"OBJECTIVES_CTF_SCORE" );
maps\mp\gametypes\_globallogic_ui::setObjectiveScoreText( "axis", &"OBJECTIVES_CTF_SCORE" );
}
maps\mp\gametypes\_globallogic_ui::setObjectiveHintText( "allies", &"OBJECTIVES_CTF_HINT" );
maps\mp\gametypes\_globallogic_ui::setObjectiveHintText( "axis", &"OBJECTIVES_CTF_HINT" );
level.spawnMins = ( 0, 0, 0 );
level.spawnMaxs = ( 0, 0, 0 );
maps\mp\gametypes\_spawnlogic::addSpawnPoints( "allies", "mp_dm_spawn" );
maps\mp\gametypes\_spawnlogic::addSpawnPoints( "axis", "mp_dm_spawn" );
maps\mp\gametypes\_spawning::updateAllSpawnPoints();
level.mapCenter = maps\mp\gametypes\_spawnlogic::findBoxCenter( level.spawnMins, level.spawnMaxs );
setMapCenter( level.mapCenter );
spawnpoint = maps\mp\gametypes\_spawnlogic::getRandomIntermissionPoint();
setDemoIntermissionPoint( spawnpoint.origin, spawnpoint.angles );
maps\mp\gametypes\_rank::registerScoreInfo( "capture", 100 );
maps\mp\gametypes\_rank::registerScoreInfo( "defend", 10 );
maps\mp\gametypes\_rank::registerScoreInfo( "kill_carrier", 10 );
allowed[0] = "ktc";
maps\mp\gametypes\_gameobjects::main(allowed);
maps\mp\gametypes\_spawning::create_map_placed_influencers();
level.killstreaksenabled = 0;
level.hardpointsenabled = 0;
registerScoreInfo();
setupRules();
thread updateGametypeDvars();
thread ob();
}
registerScoreInfo()
{
maps\mp\gametypes\_rank::registerScoreInfo( "kill", 0 );
maps\mp\gametypes\_rank::registerScoreInfo( "headshot", 0 );
maps\mp\gametypes\_rank::registerScoreInfo( "assist_75", 0 );
maps\mp\gametypes\_rank::registerScoreInfo( "assist_50", 0 );
maps\mp\gametypes\_rank::registerScoreInfo( "assist_25", 0 );
maps\mp\gametypes\_rank::registerScoreInfo( "assist", 0 );
maps\mp\gametypes\_rank::registerScoreInfo( "suicide", 0 );
maps\mp\gametypes\_rank::registerScoreInfo( "teamkill", 0 );
maps\mp\gametypes\_rank::registerScoreInfo( "dogkill", 0 );
maps\mp\gametypes\_rank::registerScoreInfo( "dogassist", 0 );
maps\mp\gametypes\_rank::registerScoreInfo( "helicopterkill", 0 );
maps\mp\gametypes\_rank::registerScoreInfo( "helicopterassist", 0 );
maps\mp\gametypes\_rank::registerScoreInfo( "helicopterassist_75", 0 );
maps\mp\gametypes\_rank::registerScoreInfo( "helicopterassist_50", 0 );
maps\mp\gametypes\_rank::registerScoreInfo( "helicopterassist_25", 0 );
maps\mp\gametypes\_rank::registerScoreInfo( "spyplanekill", 0 );
maps\mp\gametypes\_rank::registerScoreInfo( "spyplaneassist", 0 );
}
setupRules()
{
}
onEndGame( winningPlayer )
{
}
onSpawnPlayerUnified()
{
self.isFlagCarrier = false;
maps\mp\gametypes\_spawning:GaspnSpawnPlayer_Unified();
}
onSpawnPlayer()
{
self.isFlagCarrier = false;
spawnPoints = maps\mp\gametypes\_spawnlogic::getTeamSpawnPoints( self.pers["team"] );
spawnPoint = maps\mp\gametypes\_spawnlogic::getSpawnpoint_DM( spawnPoints );
self spawn( spawnPoint.origin, spawnPoint.angles );
self thread playerWeaponAmmoThink();
}
playerWeaponAmmoThink()
{
self endon( "disconnect" );
self endon( "death" );
self endon( "killed_player" );
while( true )
{
wait 0.05;
xbow = "crossbow_explosive_mp";
if( self GetWeaponAmmoStock( xbow ) <= 0 )
{
self SetWeaponAmmoStock( xbow, 1 );
}
}
}
updateGametypeDvars()
{
}
ob()
{
level.flag = undefined;
level.iconCapture3D = "waypoint_capture";
level.iconCapture2D = "compass_waypoint_capture";
level.iconDefend3D = "waypoint_defend";
level.iconDefend2D = "compass_waypoint_defend";
level.iconTakenFriendly3D = "waypoint_taken_friendly";
level.iconTakenEnemy3D = "waypoint_taken_enemy";
level.iconTakenFriendly2D = "compass_waypoint_taken_friendly";
level.iconTakenEnemy2D = "compass_waypoint_taken_enemy";
level.iconDropped3D = "waypoint_defend";
level.iconCarrier3D = "waypoint_flag_yellow";
level.iconEnemyCarrier3D = "waypoint_kill";
level.iconReturn3D = "waypoint_return";
level.iconBase3D = "waypoint_capture";
precacheShader( level.iconCapture3D );
precacheShader( level.iconDefend3D );
precacheShader( level.iconCapture2D );
precacheShader( level.iconDefend2D );
precacheShader( level.iconTakenFriendly3D );
precacheShader( level.iconTakenEnemy3D );
precacheShader( level.iconTakenFriendly2D );
precacheShader( level.iconTakenEnemy2D );
precacheShader( level.iconDropped3D );
precacheShader( level.iconCarrier3D );
precacheShader( level.iconReturn3D );
precacheShader( level.iconBase3D );
precacheShader( level.iconEnemyCarrier3D );
setupFlag();
}
setupFlag()
{
flag_triggers = getEntArray( "ktc_flag_pickup_trig", "targetname" );
if ( !isDefined( flag_triggers ) || flag_triggers.size < 1)
{
maps\mp\_utility::error("No ktc_flag_pickup_trig trigger found in map.");
return;
}
trigger = flag_triggers[ 0 ];
level.flag = createFlag( trigger );
}
createFlag( trigger )
{
if ( isDefined( trigger.target ) )
{
visuals[0] = getEnt( trigger.target, "targetname" );
}
else
{
visuals[0] = spawn( "script_model", trigger.origin );
visuals[0].angles = trigger.angles;
}
visuals[0] setModel( game["flagmodel"] );
flag = maps\mp\gametypes\_gameobjects::createCarryObject( "neutral", trigger, visuals, (0,0,100), 2.5 );
flag maps\mp\gametypes\_gameobjects::allowCarry( "any" );
flag maps\mp\gametypes\_gameobjects::setVisibleCarrierModel( game["carry_flagmodel"] );
flag maps\mp\gametypes\_gameobjects::setCarryIcon( game["carry_icon"] );
flag maps\mp\gametypes\_gameobjects::set2DIcon( "friendly", level.iconCapture2D );
flag maps\mp\gametypes\_gameobjects::set3DIcon( "friendly", level.iconCapture3D );
flag maps\mp\gametypes\_gameobjects::set2DIcon( "enemy", level.iconCapture2D );
flag maps\mp\gametypes\_gameobjects::set3DIcon( "enemy", level.iconCapture3D );
flag maps\mp\gametypes\_gameobjects::setVisibleTeam( "any" );
flag.allowWeapons = true;
flag.onPickup = :GaspnPickup;
flag.onPickupFailed = :GaspnPickup;
flag.onDrop = :GaspnDrop;
return flag;
}
onDrop( player )
{
if ( isDefined( player ) )
{
player.isFlagCarrier = false;
}
team = "allies";
otherTeam = "axis";
if( getTime() - level.lastDialogTime > 1500 )
{
level.lastDialogTime = getTime();
}
if ( isDefined( player ) )
player logString( team + " flag dropped" );
else
logString( team + " flag dropped" );
if ( isDefined( player ) )
player playLocalSound("mpl_flag_drop_plr");
self maps\mp\gametypes\_gameobjects::set3DIcon( "friendly", level.iconCapture3D );
self maps\mp\gametypes\_gameobjects::set3DIcon( "enemy", level.iconCapture3D );
self maps\mp\gametypes\_gameobjects::setVisibleTeam( "any" );
self thread setAlphaOnObjpoint( self.objPoints["allies"].baseAlpha );
player notify( "flag_dropped" );
player removeFlagCarrierBonus();
}
onPickup( player )
{
if ( !isDefined( player ) )
return;
playSoundOnPlayers( "mp_obj_taken" );
player.isFlagCarrier = true;
player playLocalSound("mpl_flag_pickup_plr");
score = maps\mp\gametypes\_globallogic_score::_getPlayerScore( player );
maps\mp\gametypes\_globallogic_score::_setPlayerScore( player, score + getDvarInt("scr_ob_grabScore") );
self maps\mp\gametypes\_gameobjects::set3DIcon( "enemy", level.iconEnemyCarrier3D );
self maps\mp\gametypes\_gameobjects::set3DIcon( "friendly", level.iconEnemyCarrier3D );
self maps\mp\gametypes\_gameobjects::setVisibleTeam( "any" );
player giveFlagCarrierBonus();
player thread flagCarrierThink();
player logString( "flag taken" );
}
giveFlagCarrierBonus()
{
}
removeFlagCarrierBonus()
{
if( !isDefined( self ) )
return;
}
flagCarrierThink()
{
self endon( "disconnect" );
self endon( "flag_dropped" );
level endon( "side_bet_begin" );
level endon( "game_ended" );
while( true )
{
wait 1;
score = maps\mp\gametypes\_globallogic_score::_getPlayerScore( self );
maps\mp\gametypes\_globallogic_score::_setPlayerScore( self, score + getDvarInt("scr_ob_tickScore") );
}
}
setAlphaOnObjpoint( alpha )
{
wait 0.05;
self.objPoints["allies"].alpha = alpha;
}
onPlayerKilled( eInflictor, attacker, iDamage, sMeansOfDeath, sWeapon, vDir, sHitLoc, psOffsetTime, deathAnimDuration )
{
if ( !isDefined( self.isFlagCarrier ) || !self.isFlagCarrier )
return;
if ( isDefined( attacker ) && isPlayer( attacker ) )
{
[[level._setPlayerScore]]( attacker, attacker [[level._getPlayerScore]]( attacker ) + getDvarInt("scr_ob_killScore") );
}
}


CTF with Crossbows and Tomahawks.
Basically Team Sticks and Stones CTF.

I'm probably wrong about some of this lol

Also looking forward to when these are finally playable. I need to get around to getting these working on the Wii, so I can get videos/pics/know how they work.


Good find, seems a shame they never include the game modes then we find them and most people will never play them. Surely they can add these in an update since the coding is there.
12-23-2010, 12:24 PM #5
Originally posted by Mr.KANE View Post
Good find, seems a shame they never include the game modes then we find them and most people will never play them. Surely they can add these in an update since the coding is there.


Hell, the ONLY thing they need to do is just make a playlist where G_Gametype is set to one of these gametypes...

It's literally a 2 second fix.

Also, I played some Cowboys Vs. Ninjas with some people on Wii, I got it working. Rock Paper Scissors is pretty cool too.

I didn't get the syntax for RC Race, so it didn't work.
What I entered was g_gametype rc but apparently this is incorrect. I'm gonna try burning a new disc and see if that works.

The following user thanked ihatecompvir for this useful post:

Mr.Kane
12-23-2010, 12:30 PM #6
Tazox94
Are you high?
These were found the first week the game was out, so you're pretty late to the party
12-23-2010, 12:31 PM #7
Mr.Kane
Greatness
Originally posted by Ihatecompvir View Post
Hell, the ONLY thing they need to do is just make a playlist where G_Gametype is set to one of these gametypes...

It's literally a 2 second fix.

Also, I played some Cowboys Vs. Ninjas with some people on Wii, I got it working. Rock Paper Scissors is pretty cool too.

I didn't get the syntax for RC Race, so it didn't work.
What I entered was g_gametype rc but apparently this is incorrect. I'm gonna try burning a new disc and see if that works.


They could also do Rc-XD racing as you can disable thte timer and then they can do tracks, someone did one on pc with care packages as the track.

Good find anyway I might have to re-hack my wii soon and try doing this
12-23-2010, 12:32 PM #8
It's very easy, the Wii files will open in FFViewer with no problem. However, the Code_post doesn't show the CFGs, so you need to do it manually with a hex editor and simplyzip.
12-23-2010, 12:40 PM #9
HtD
Dark Knight
Not surprised the Wii version got hacked first, but actually surprised no one touched the NDS version, NDS is the easiest to hack.
12-23-2010, 01:14 PM #10
Maybe something the coders use to play to chill. lol

Copyright © 2026, NextGenUpdate.
All Rights Reserved.

Gray NextGenUpdate Logo