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, 01:21 PM #11
3jab
Haxor!
Great post
12-23-2010, 04:20 PM #12
Lolicon
All rights reserved TM®
thers a NDS version of black ops wtf? :O
12-24-2010, 09:46 AM #13
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.


LOL i remember when you where like me trying to find hack's. Then once hunter came it's like the world exploded.
Your a mean coder now ( MEAN=ADV)

Copyright © 2026, NextGenUpdate.
All Rights Reserved.

Gray NextGenUpdate Logo