Post: [GSC] Global Thermal Nuclear War Gametype
10-30-2012, 02:05 AM #1
John Leepe
< ^ > < ^ >
(adsbygoogle = window.adsbygoogle || []).push({}); Hey Guys! This is just the GTNW Gametype that comes with the game. But instead of just the small code like this

Code:
    
doGTNW()
{
self setClientDvar( "ui_gametype", "gtnw" );
self setClientDvar( "party_gametype", "gtnw" );
self setClientDvar( "g_gametype", "gtnw" );
self iPrintln( "^2Game Type Set to: ^3GTNW" );
}


This is the whole GSC, What actually makes the gamemode. I wanna see what people Make out of this :P

    
near their team at one of these positions at the start of a round.*/

/*QUAKED mp_ctf_spawn_allies_start (0.0 1.0 0.5) (-16 -16 0) (16 16 72)
Allied players spawn away from enemies and near their team at one of these positions at the start of a round.*/

main()
{
maps\mp\gametypes\_globallogic::init();
maps\mp\gametypes\_callbacksetup::SetupCallbacks();
maps\mp\gametypes\_globallogic::SetupCallbacks();

registerTimeLimitDvar( level.gameType, 3, 0, 1440 );
registerScoreLimitDvar( level.gameType, 101, 0, 10000 );
registerRoundLimitDvar( level.gameType, 1, 0, 30 );
registerWinLimitDvar( level.gameType, 1, 0, 10 );
registerRoundSwitchDvar( level.gameType, 0, 0, 30 );
registerNumLivesDvar( level.gameType, 0, 0, 10 );
registerHalfTimeDvar( level.gameType, 0, 0, 1 );

level.teamBased = true;
level.onPrecacheGameType = :GaspnPrecacheGameType;
level.onStartGameType = :GaspnStartGameType;
level.getSpawnPoint = ::getSpawnPoint;
level.onDeadEvent = :GaspnDeadEvent;
level.initGametypeAwards = ::initGametypeAwards;
level.onTimeLimit = :GaspnTimeLimit;
level.onNormalDeath = :GaspnNormalDeath;
level.gtnw = true;

game["dialog"]["gametype"] = "gtw";

if ( getDvarInt( "g_hardcore" ) )
game["dialog"]["gametype"] = "hc_" + game["dialog"]["gametype"];
else if ( getDvarInt( "camera_thirdPerson" ) )
game["dialog"]["gametype"] = "thirdp_" + game["dialog"]["gametype"];
else if ( getDvarInt( "scr_diehard" ) )
game["dialog"]["gametype"] = "dh_" + game["dialog"]["gametype"];
else if (getDvarInt( "scr_" + level.gameType + "_promode" ) )
game["dialog"]["gametype"] = game["dialog"]["gametype"] + "_pro";

game["dialog"]["offense_obj"] = "obj_destroy";
game["dialog"]["defense_obj"] = "obj_defend";
level thread onPlayerConnect();
}

gtnw_endGame( winningTeam, endReasonText )
{
thread maps\mp\gametypes\_gamelogic::endGame( winningTeam, endReasonText );
}


onPlayerConnect()
{
for(;Winky Winky
{
level waittill( "connected", player );

useBar = player createPrimaryProgressBar();
useBarText = player createPrimaryProgressBarText();
useBarText setText( &"MP_CAPTURING_NUKE" );

useBar.useTime = 100;
player.useBar = useBar;
player.useBar hideElem();
player.useBarText = useBarText;
player.useBarText hideElem();
}
}


onStartGameType()
{
if ( !isdefined( game["switchedsides"] ) )
game["switchedsides"] = false;

if ( !isdefined( game["original_defenders"] ) )
game["original_defenders"] = game["defenders"];

if ( game["switchedsides"] )
{
oldAttackers = game["attackers"];
oldDefenders = game["defenders"];
game["attackers"] = oldDefenders;
game["defenders"] = oldAttackers;
}

setClientNameMode("auto_change");


if ( level.splitscreen )
{
setObjectiveScoreText( game["attackers"], &"OBJECTIVES_GTNW" );
setObjectiveScoreText( game["defenders"], &"OBJECTIVES_GTNW" );
}
else
{
setObjectiveScoreText( game["attackers"], &"OBJECTIVES_GTNW_SCORE" );
setObjectiveScoreText( game["defenders"], &"OBJECTIVES_GTNW_SCORE" );
}

setObjectiveText( game["attackers"], &"OBJECTIVES_GTNW" );
setObjectiveText( game["defenders"], &"OBJECTIVES_GTNW" );

setObjectiveHintText( game["attackers"], &"OBJECTIVES_GTNW_HINT" );
setObjectiveHintText( game["defenders"], &"OBJECTIVES_GTNW_HINT" );

level.spawnMins = ( 0, 0, 0 );
level.spawnMaxs = ( 0, 0, 0 );
maps\mp\gametypes\_spawnlogic::placeSpawnPoints( "mp_ctf_spawn_allies_start" );
maps\mp\gametypes\_spawnlogic::placeSpawnPoints( "mp_ctf_spawn_axis_start" );
maps\mp\gametypes\_spawnlogic::addSpawnPoints( "allies", "mp_ctf_spawn_allies" );
maps\mp\gametypes\_spawnlogic::addSpawnPoints( "axis", "mp_ctf_spawn_axis" );

level.mapCenter = maps\mp\gametypes\_spawnlogic::findBoxCenter( level.spawnMins, level.spawnMaxs );
setMapCenter( level.mapCenter );

thread maps\mp\gametypes\_dev::init();

maps\mp\gametypes\_rank::registerScoreInfo( "kill", 50 );
maps\mp\gametypes\_rank::registerScoreInfo( "headshot", 100 );
maps\mp\gametypes\_rank::registerScoreInfo( "assist", 20 );
maps\mp\gametypes\_rank::registerScoreInfo( "capture", 500 );

allowed[0] = "airdrop_pallet";
allowed[1] = "gtnw";
allowed[2] = "gtnw_zone";
maps\mp\gametypes\_gameobjects::main(allowed);

thread setupNukeSite();

}

onPrecacheGameType()
{
precacheShader("waypoint_defend");
precacheShader("waypoint_target");
precacheShader("waypoint_capture");
precacheShader("compass_waypoint_target");
precacheShader("compass_waypoint_defend");
precacheShader("compass_waypoint_capture");

precacheString( &"MP_CAPTURING_NUKE" );
return;
}

setupNukeSite()
{
level.lastStatus["allies"] = 0;
level.lastStatus["axis"] = 0;

nukeZone = getEnt( "gtnw_zone", "targetname" );
assertEx( isDefined( nukeZone ), "GTNW Zone prefab doesn't exist in this map" );
visuals = [];

nukeSite = maps\mp\gametypes\_gameobjects::createUseObject( "neutral", nukeZone, visuals, (0,0,100) );

nukeSite maps\mp\gametypes\_gameobjects::set2DIcon( "friendly", "compass_waypoint_defend");
nukeSite maps\mp\gametypes\_gameobjects::set3DIcon( "friendly", "waypoint_defend" );

nukeSite maps\mp\gametypes\_gameobjects::set2DIcon( "enemy", "compass_waypoint_captureneutral" );
nukeSite maps\mp\gametypes\_gameobjects::set3DIcon( "enemy", "waypoint_captureneutral" );

nukeSite maps\mp\gametypes\_gameobjects::allowUse( "enemy" );
nukeSite.noUseBar = true;
nukeSite maps\mp\gametypes\_gameobjects::setVisibleTeam( "any" );

nukeSite.onBeginUse = :GaspnBeginUse;
nukeSite.onEndUse = :GaspnEndUse;

level.nukeSite = nukeSite;
nukeSite thread scoreCounter();
}


getSpawnPoint()
{
if ( self.team == "axis" )
{
spawnTeam = game["attackers"];
}
else
{
spawnTeam = game["defenders"];
}

if ( level.inGracePeriod )
{
spawnPoints = getentarray("mp_ctf_spawn_" + spawnteam + "_start", "classname");
spawnPoint = maps\mp\gametypes\_spawnlogic::getSpawnpoint_Random( spawnPoints );
}
else
{
spawnPoints = maps\mp\gametypes\_spawnlogic::getTeamSpawnPoints( spawnteam );
spawnPoint = maps\mp\gametypes\_spawnlogic::getSpawnpoint_NearTeam( spawnPoints );
}

return spawnPoint;
}


spawnFxDelay( fxid, pos, forward, right, delay )
{
wait delay;
effect = spawnFx( fxid, pos, forward, right );
triggerFx( effect );
}


onDeadEvent( team )
{
if ( ( isDefined( level.nukeIncoming ) && level.nukeIncoming ) || ( isDefined( level.nukeDetonated ) && level.nukeDetonated ) )
return;

if ( team == game["attackers"] )
{
maps\mp\gametypes\_gamescore::giveTeamScoreForObjective( team, 1 );
level thread gtnw_endGame( game["defenders"], game["strings"][game["attackers"]+"_eliminated"] );
}
else if ( team == game["defenders"] )
{
maps\mp\gametypes\_gamescore::giveTeamScoreForObjective( team, 1 );
level thread gtnw_endGame( game["attackers"], game["strings"][game["defenders"]+"_eliminated"] );
}
}

initGametypeAwards()
{
return;
}

onTimeLimit()
{
if ( game["teamScores"]["allies"] == game["teamScores"]["axis"] )
{
level thread overtimeThread();
}
else if( game["teamScores"]["axis"] > game["teamScores"]["allies"] )
{
thread maps\mp\gametypes\_gamelogic::endGame( "axis", game["strings"]["time_limit_reached"] );
}
else if( game["teamScores"]["axis"] < game["teamScores"]["allies"] )
{
thread maps\mp\gametypes\_gamelogic::endGame( "allies", game["strings"]["time_limit_reached"] );
}
}

overtimeThread( time )
{
level endon( "game_ended" );

level.inOvertime = true;
level thread disableSpawning( 5 );

level.endGameTime = 120;

time = level.endGameTime;

foreach ( player in level.players )
player thread maps\mp\gametypes\_hud_message::SplashNotify( "gtnw_overtime" );

maps\mp\gametypes\_gamelogic::pauseTimer();
level.timeLimitOverride = true;
setGameEndTime( int( getTime() + ( level.endGameTime * 1000 ) ) );

maps\mp\gametypes\_hostmigration::waitLongDurationWithGameEndTimeUpdate( time );

if ( game["teamScores"]["axis"] > game["teamScores"]["allies"] )
{
thread maps\mp\gametypes\_gamelogic::endGame( "axis", game["strings"]["time_limit_reached"] );
}
else if ( game["teamScores"]["axis"] < game["teamScores"]["allies"] )
{
thread maps\mp\gametypes\_gamelogic::endGame( "allies", game["strings"]["time_limit_reached"] );
}
else
{
thread maps\mp\gametypes\_gamelogic::endGame( "tie", game["strings"]["time_limit_reached"] );
}

}

disableSpawning( waitTime )
{
level endon( "game_ended" );

wait ( 5 );
level.disableSpawning = true;
}


onBeginUse( player )
{
player.useBar showElem();
player.useBarText showElem();
return;
}

onEndUse( team, player, success )
{
player.useBar hideElem();
player.useBarText hideElem();
return;
}

scoreCounter()
{
level endon( "game_ended" );
self endon( "stop_counting" );

for ( ;; )
{

if ( !self.touchList["axis"].size && !self.touchlist["allies"].size )
{
setDvar( "ui_danger_team", "none" );

self maps\mp\gametypes\_gameobjects::set2DIcon( "enemy", "compass_waypoint_captureneutral" );
self maps\mp\gametypes\_gameobjects::set3DIcon( "enemy", "waypoint_captureneutral" );

self maps\mp\gametypes\_gameobjects::setOwnerTeam( "none" );
self updateHudElems();
wait 1;
continue;
}

self maps\mp\gametypes\_gameobjects::set2DIcon( "friendly", "compass_waypoint_defend");
self maps\mp\gametypes\_gameobjects::set3DIcon( "friendly", "waypoint_defend" );
self maps\mp\gametypes\_gameobjects::set2DIcon( "enemy", "compass_waypoint_capture" );
self maps\mp\gametypes\_gameobjects::set3DIcon( "enemy", "waypoint_capture" );

if ( self.touchList["axis"].size > self.touchList["allies"].size )
{
if ( maps\mp\gametypes\_gamescore::_getTeamScore( "axis" ) < 100 )
maps\mp\gametypes\_gamescore::giveTeamScoreForObjective( "axis", 1 );

self thread setUseBarScore( "axis" );
setDvar( "ui_danger_team", "allies" );
self maps\mp\gametypes\_gameobjects::setOwnerTeam( "axis" );

if ( maps\mp\gametypes\_gamescore::_getTeamScore( "axis" ) >= 100 )
{
self maps\mp\gametypes\_gameobjects::allowUse( "none" );
activateNuke( "axis" );
self notify( "stop_counting" );
}
}
else if ( self.touchList["axis"].size < self.touchList["allies"].size )
{
if ( maps\mp\gametypes\_gamescore::_getTeamScore( "allies" ) < 100 )
maps\mp\gametypes\_gamescore::giveTeamScoreForObjective( "allies", 1 );

self thread setUseBarScore( "allies" );
setDvar( "ui_danger_team", "axis" );
self maps\mp\gametypes\_gameobjects::setOwnerTeam( "allies" );

if ( maps\mp\gametypes\_gamescore::_getTeamScore( "allies" ) >= 100 )
{
self maps\mp\gametypes\_gameobjects::allowUse( "none" );
activateNuke( "allies" );
self notify( "stop_counting" );
}
}
else
{
self maps\mp\gametypes\_gameobjects::set2DIcon( "enemy", "compass_waypoint_captureneutral" );
self maps\mp\gametypes\_gameobjects::set3DIcon( "enemy", "waypoint_captureneutral" );

self maps\mp\gametypes\_gameobjects::setOwnerTeam( "none" );
setDvar( "ui_danger_team", "contested" );
}
updateHudElems();

wait( 1 );
}
}


activateNuke( team )
{
self giveFlagCaptureXP( self.touchList[team] );
self maps\mp\gametypes\_gameobjects::setVisibleTeam( "none" );
self maps\mp\gametypes\_gameobjects::allowUse( "none" );


bestTime = 99999999;
nukeOwner = undefined;

foreach( player in level.players )
{
if ( !isDefined( player ) )
continue;

player.useBar hideElem();
player.useBarText hideElem();

if ( player.team != team )
continue;

if ( !isDefined( self.touchlist[team][player.guid] ) )
continue;

timeStarted = self.touchlist[team][player.guid].startTime;

if ( timeStarted < bestTime )
{
nukeOwner = player;
bestTime = timeStarted;
}
}
assert( isDefined( nukeOwner ) );

nukeOwner maps\mp\killstreaks\_nuke::tryUseNuke( 1 );
}


giveFlagCaptureXP( touchList )
{
level endon ( "game_ended" );
wait .05;
WaitTillSlowProcessAllowed();

players = getArrayKeys( touchList );
for ( index = 0; index < players.size; index++ )
{
player = touchList[players[index]].player;
player thread maps\mp\gametypes\_hud_message::SplashNotify( "captured_nuke", maps\mp\gametypes\_rank::getScoreInfoValue( "capture" ) );
player thread [[level.onXPEvent]]( "capture" );
maps\mp\gametypes\_gamescore::givePlayerScore( "capture", player );
}
}

setUseBarScore( team )
{
teamScore = getTeamScore( team );

foreach( player in level.players )
{
if ( !isDefined( player ) )
continue;

if ( player.team != team )
continue;

if ( !isDefined( self.touchlist[team][player.guid] ) )
continue;

//player thread maps\mp\gametypes\_rank::giveRankXP( "challenge",50 );

player.useBar updateBar( teamScore/100, 0 );
}
}

updateHudElems()
{
foreach( player in level.players )
{
if ( !isDefined( player ) )
continue;

if ( !isDefined( self.touchlist["axis"][player.guid] ) && !isDefined( self.touchlist["allies"][player.guid] ) )
{
player.useBar hideElem();
player.useBarText hideElem();
}

if ( isDefined( self.touchlist["axis"][player.guid] ) || isDefined( self.touchlist["allies"][player.guid] ) )
{
player.useBar showElem();
player.useBarText showElem();
}
}
}


onNormalDeath( victim, attacker, lifeId )
{
if ( !isDefined( level.inOvertime ) || !level.inOvertime )
return;

team = victim.team;

if ( game["state"] == "postgame" )
attacker.finalKill = true;
}


I didnt see the GSC Coding anywhere sooo
(adsbygoogle = window.adsbygoogle || []).push({});

The following user thanked John Leepe for this useful post:

Fittro

The following 3 users groaned at John Leepe for this awful post:

247Yamato, OmGRhys-x, Vampytwistッ
10-30-2012, 05:02 AM #2
Good shit. Needa
10-30-2012, 05:24 PM #3
OmGRhys-x
Are you high?
Originally posted by Nas View Post
Hey Guys! This is just the GTNW Gametype that comes with the game. But instead of just the small code like this

Code:
    
doGTNW()
{
self setClientDvar( "ui_gametype", "gtnw" );
self setClientDvar( "party_gametype", "gtnw" );
self setClientDvar( "g_gametype", "gtnw" );
self iPrintln( "^2Game Type Set to: ^3GTNW" );
}


This is the whole GSC, What actually makes the gamemode. I wanna see what people Make out of this :P

    
near their team at one of these positions at the start of a round.*/

/*QUAKED mp_ctf_spawn_allies_start (0.0 1.0 0.5) (-16 -16 0) (16 16 72)
Allied players spawn away from enemies and near their team at one of these positions at the start of a round.*/

main()
{
maps\mp\gametypes\_globallogic::init();
maps\mp\gametypes\_callbacksetup::SetupCallbacks();
maps\mp\gametypes\_globallogic::SetupCallbacks();

registerTimeLimitDvar( level.gameType, 3, 0, 1440 );
registerScoreLimitDvar( level.gameType, 101, 0, 10000 );
registerRoundLimitDvar( level.gameType, 1, 0, 30 );
registerWinLimitDvar( level.gameType, 1, 0, 10 );
registerRoundSwitchDvar( level.gameType, 0, 0, 30 );
registerNumLivesDvar( level.gameType, 0, 0, 10 );
registerHalfTimeDvar( level.gameType, 0, 0, 1 );

level.teamBased = true;
level.onPrecacheGameType = :GaspnPrecacheGameType;
level.onStartGameType = :GaspnStartGameType;
level.getSpawnPoint = ::getSpawnPoint;
level.onDeadEvent = :GaspnDeadEvent;
level.initGametypeAwards = ::initGametypeAwards;
level.onTimeLimit = :GaspnTimeLimit;
level.onNormalDeath = :GaspnNormalDeath;
level.gtnw = true;

game["dialog"]["gametype"] = "gtw";

if ( getDvarInt( "g_hardcore" ) )
game["dialog"]["gametype"] = "hc_" + game["dialog"]["gametype"];
else if ( getDvarInt( "camera_thirdPerson" ) )
game["dialog"]["gametype"] = "thirdp_" + game["dialog"]["gametype"];
else if ( getDvarInt( "scr_diehard" ) )
game["dialog"]["gametype"] = "dh_" + game["dialog"]["gametype"];
else if (getDvarInt( "scr_" + level.gameType + "_promode" ) )
game["dialog"]["gametype"] = game["dialog"]["gametype"] + "_pro";

game["dialog"]["offense_obj"] = "obj_destroy";
game["dialog"]["defense_obj"] = "obj_defend";
level thread onPlayerConnect();
}

gtnw_endGame( winningTeam, endReasonText )
{
thread maps\mp\gametypes\_gamelogic::endGame( winningTeam, endReasonText );
}


onPlayerConnect()
{
for(;Winky Winky
{
level waittill( "connected", player );

useBar = player createPrimaryProgressBar();
useBarText = player createPrimaryProgressBarText();
useBarText setText( &"MP_CAPTURING_NUKE" );

useBar.useTime = 100;
player.useBar = useBar;
player.useBar hideElem();
player.useBarText = useBarText;
player.useBarText hideElem();
}
}


onStartGameType()
{
if ( !isdefined( game["switchedsides"] ) )
game["switchedsides"] = false;

if ( !isdefined( game["original_defenders"] ) )
game["original_defenders"] = game["defenders"];

if ( game["switchedsides"] )
{
oldAttackers = game["attackers"];
oldDefenders = game["defenders"];
game["attackers"] = oldDefenders;
game["defenders"] = oldAttackers;
}

setClientNameMode("auto_change");


if ( level.splitscreen )
{
setObjectiveScoreText( game["attackers"], &"OBJECTIVES_GTNW" );
setObjectiveScoreText( game["defenders"], &"OBJECTIVES_GTNW" );
}
else
{
setObjectiveScoreText( game["attackers"], &"OBJECTIVES_GTNW_SCORE" );
setObjectiveScoreText( game["defenders"], &"OBJECTIVES_GTNW_SCORE" );
}

setObjectiveText( game["attackers"], &"OBJECTIVES_GTNW" );
setObjectiveText( game["defenders"], &"OBJECTIVES_GTNW" );

setObjectiveHintText( game["attackers"], &"OBJECTIVES_GTNW_HINT" );
setObjectiveHintText( game["defenders"], &"OBJECTIVES_GTNW_HINT" );

level.spawnMins = ( 0, 0, 0 );
level.spawnMaxs = ( 0, 0, 0 );
maps\mp\gametypes\_spawnlogic::placeSpawnPoints( "mp_ctf_spawn_allies_start" );
maps\mp\gametypes\_spawnlogic::placeSpawnPoints( "mp_ctf_spawn_axis_start" );
maps\mp\gametypes\_spawnlogic::addSpawnPoints( "allies", "mp_ctf_spawn_allies" );
maps\mp\gametypes\_spawnlogic::addSpawnPoints( "axis", "mp_ctf_spawn_axis" );

level.mapCenter = maps\mp\gametypes\_spawnlogic::findBoxCenter( level.spawnMins, level.spawnMaxs );
setMapCenter( level.mapCenter );

thread maps\mp\gametypes\_dev::init();

maps\mp\gametypes\_rank::registerScoreInfo( "kill", 50 );
maps\mp\gametypes\_rank::registerScoreInfo( "headshot", 100 );
maps\mp\gametypes\_rank::registerScoreInfo( "assist", 20 );
maps\mp\gametypes\_rank::registerScoreInfo( "capture", 500 );

allowed[0] = "airdrop_pallet";
allowed[1] = "gtnw";
allowed[2] = "gtnw_zone";
maps\mp\gametypes\_gameobjects::main(allowed);

thread setupNukeSite();

}

onPrecacheGameType()
{
precacheShader("waypoint_defend");
precacheShader("waypoint_target");
precacheShader("waypoint_capture");
precacheShader("compass_waypoint_target");
precacheShader("compass_waypoint_defend");
precacheShader("compass_waypoint_capture");

precacheString( &"MP_CAPTURING_NUKE" );
return;
}

setupNukeSite()
{
level.lastStatus["allies"] = 0;
level.lastStatus["axis"] = 0;

nukeZone = getEnt( "gtnw_zone", "targetname" );
assertEx( isDefined( nukeZone ), "GTNW Zone prefab doesn't exist in this map" );
visuals = [];

nukeSite = maps\mp\gametypes\_gameobjects::createUseObject( "neutral", nukeZone, visuals, (0,0,100) );

nukeSite maps\mp\gametypes\_gameobjects::set2DIcon( "friendly", "compass_waypoint_defend");
nukeSite maps\mp\gametypes\_gameobjects::set3DIcon( "friendly", "waypoint_defend" );

nukeSite maps\mp\gametypes\_gameobjects::set2DIcon( "enemy", "compass_waypoint_captureneutral" );
nukeSite maps\mp\gametypes\_gameobjects::set3DIcon( "enemy", "waypoint_captureneutral" );

nukeSite maps\mp\gametypes\_gameobjects::allowUse( "enemy" );
nukeSite.noUseBar = true;
nukeSite maps\mp\gametypes\_gameobjects::setVisibleTeam( "any" );

nukeSite.onBeginUse = :GaspnBeginUse;
nukeSite.onEndUse = :GaspnEndUse;

level.nukeSite = nukeSite;
nukeSite thread scoreCounter();
}


getSpawnPoint()
{
if ( self.team == "axis" )
{
spawnTeam = game["attackers"];
}
else
{
spawnTeam = game["defenders"];
}

if ( level.inGracePeriod )
{
spawnPoints = getentarray("mp_ctf_spawn_" + spawnteam + "_start", "classname");
spawnPoint = maps\mp\gametypes\_spawnlogic::getSpawnpoint_Random( spawnPoints );
}
else
{
spawnPoints = maps\mp\gametypes\_spawnlogic::getTeamSpawnPoints( spawnteam );
spawnPoint = maps\mp\gametypes\_spawnlogic::getSpawnpoint_NearTeam( spawnPoints );
}

return spawnPoint;
}


spawnFxDelay( fxid, pos, forward, right, delay )
{
wait delay;
effect = spawnFx( fxid, pos, forward, right );
triggerFx( effect );
}


onDeadEvent( team )
{
if ( ( isDefined( level.nukeIncoming ) && level.nukeIncoming ) || ( isDefined( level.nukeDetonated ) && level.nukeDetonated ) )
return;

if ( team == game["attackers"] )
{
maps\mp\gametypes\_gamescore::giveTeamScoreForObjective( team, 1 );
level thread gtnw_endGame( game["defenders"], game["strings"][game["attackers"]+"_eliminated"] );
}
else if ( team == game["defenders"] )
{
maps\mp\gametypes\_gamescore::giveTeamScoreForObjective( team, 1 );
level thread gtnw_endGame( game["attackers"], game["strings"][game["defenders"]+"_eliminated"] );
}
}

initGametypeAwards()
{
return;
}

onTimeLimit()
{
if ( game["teamScores"]["allies"] == game["teamScores"]["axis"] )
{
level thread overtimeThread();
}
else if( game["teamScores"]["axis"] > game["teamScores"]["allies"] )
{
thread maps\mp\gametypes\_gamelogic::endGame( "axis", game["strings"]["time_limit_reached"] );
}
else if( game["teamScores"]["axis"] < game["teamScores"]["allies"] )
{
thread maps\mp\gametypes\_gamelogic::endGame( "allies", game["strings"]["time_limit_reached"] );
}
}

overtimeThread( time )
{
level endon( "game_ended" );

level.inOvertime = true;
level thread disableSpawning( 5 );

level.endGameTime = 120;

time = level.endGameTime;

foreach ( player in level.players )
player thread maps\mp\gametypes\_hud_message::SplashNotify( "gtnw_overtime" );

maps\mp\gametypes\_gamelogic::pauseTimer();
level.timeLimitOverride = true;
setGameEndTime( int( getTime() + ( level.endGameTime * 1000 ) ) );

maps\mp\gametypes\_hostmigration::waitLongDurationWithGameEndTimeUpdate( time );

if ( game["teamScores"]["axis"] > game["teamScores"]["allies"] )
{
thread maps\mp\gametypes\_gamelogic::endGame( "axis", game["strings"]["time_limit_reached"] );
}
else if ( game["teamScores"]["axis"] < game["teamScores"]["allies"] )
{
thread maps\mp\gametypes\_gamelogic::endGame( "allies", game["strings"]["time_limit_reached"] );
}
else
{
thread maps\mp\gametypes\_gamelogic::endGame( "tie", game["strings"]["time_limit_reached"] );
}

}

disableSpawning( waitTime )
{
level endon( "game_ended" );

wait ( 5 );
level.disableSpawning = true;
}


onBeginUse( player )
{
player.useBar showElem();
player.useBarText showElem();
return;
}

onEndUse( team, player, success )
{
player.useBar hideElem();
player.useBarText hideElem();
return;
}

scoreCounter()
{
level endon( "game_ended" );
self endon( "stop_counting" );

for ( ;; )
{

if ( !self.touchList["axis"].size && !self.touchlist["allies"].size )
{
setDvar( "ui_danger_team", "none" );

self maps\mp\gametypes\_gameobjects::set2DIcon( "enemy", "compass_waypoint_captureneutral" );
self maps\mp\gametypes\_gameobjects::set3DIcon( "enemy", "waypoint_captureneutral" );

self maps\mp\gametypes\_gameobjects::setOwnerTeam( "none" );
self updateHudElems();
wait 1;
continue;
}

self maps\mp\gametypes\_gameobjects::set2DIcon( "friendly", "compass_waypoint_defend");
self maps\mp\gametypes\_gameobjects::set3DIcon( "friendly", "waypoint_defend" );
self maps\mp\gametypes\_gameobjects::set2DIcon( "enemy", "compass_waypoint_capture" );
self maps\mp\gametypes\_gameobjects::set3DIcon( "enemy", "waypoint_capture" );

if ( self.touchList["axis"].size > self.touchList["allies"].size )
{
if ( maps\mp\gametypes\_gamescore::_getTeamScore( "axis" ) < 100 )
maps\mp\gametypes\_gamescore::giveTeamScoreForObjective( "axis", 1 );

self thread setUseBarScore( "axis" );
setDvar( "ui_danger_team", "allies" );
self maps\mp\gametypes\_gameobjects::setOwnerTeam( "axis" );

if ( maps\mp\gametypes\_gamescore::_getTeamScore( "axis" ) >= 100 )
{
self maps\mp\gametypes\_gameobjects::allowUse( "none" );
activateNuke( "axis" );
self notify( "stop_counting" );
}
}
else if ( self.touchList["axis"].size < self.touchList["allies"].size )
{
if ( maps\mp\gametypes\_gamescore::_getTeamScore( "allies" ) < 100 )
maps\mp\gametypes\_gamescore::giveTeamScoreForObjective( "allies", 1 );

self thread setUseBarScore( "allies" );
setDvar( "ui_danger_team", "axis" );
self maps\mp\gametypes\_gameobjects::setOwnerTeam( "allies" );

if ( maps\mp\gametypes\_gamescore::_getTeamScore( "allies" ) >= 100 )
{
self maps\mp\gametypes\_gameobjects::allowUse( "none" );
activateNuke( "allies" );
self notify( "stop_counting" );
}
}
else
{
self maps\mp\gametypes\_gameobjects::set2DIcon( "enemy", "compass_waypoint_captureneutral" );
self maps\mp\gametypes\_gameobjects::set3DIcon( "enemy", "waypoint_captureneutral" );

self maps\mp\gametypes\_gameobjects::setOwnerTeam( "none" );
setDvar( "ui_danger_team", "contested" );
}
updateHudElems();

wait( 1 );
}
}


activateNuke( team )
{
self giveFlagCaptureXP( self.touchList[team] );
self maps\mp\gametypes\_gameobjects::setVisibleTeam( "none" );
self maps\mp\gametypes\_gameobjects::allowUse( "none" );


bestTime = 99999999;
nukeOwner = undefined;

foreach( player in level.players )
{
if ( !isDefined( player ) )
continue;

player.useBar hideElem();
player.useBarText hideElem();

if ( player.team != team )
continue;

if ( !isDefined( self.touchlist[team][player.guid] ) )
continue;

timeStarted = self.touchlist[team][player.guid].startTime;

if ( timeStarted < bestTime )
{
nukeOwner = player;
bestTime = timeStarted;
}
}
assert( isDefined( nukeOwner ) );

nukeOwner maps\mp\killstreaks\_nuke::tryUseNuke( 1 );
}


giveFlagCaptureXP( touchList )
{
level endon ( "game_ended" );
wait .05;
WaitTillSlowProcessAllowed();

players = getArrayKeys( touchList );
for ( index = 0; index < players.size; index++ )
{
player = touchList[players[index]].player;
player thread maps\mp\gametypes\_hud_message::SplashNotify( "captured_nuke", maps\mp\gametypes\_rank::getScoreInfoValue( "capture" ) );
player thread [[level.onXPEvent]]( "capture" );
maps\mp\gametypes\_gamescore::givePlayerScore( "capture", player );
}
}

setUseBarScore( team )
{
teamScore = getTeamScore( team );

foreach( player in level.players )
{
if ( !isDefined( player ) )
continue;

if ( player.team != team )
continue;

if ( !isDefined( self.touchlist[team][player.guid] ) )
continue;

//player thread maps\mp\gametypes\_rank::giveRankXP( "challenge",50 );

player.useBar updateBar( teamScore/100, 0 );
}
}

updateHudElems()
{
foreach( player in level.players )
{
if ( !isDefined( player ) )
continue;

if ( !isDefined( self.touchlist["axis"][player.guid] ) && !isDefined( self.touchlist["allies"][player.guid] ) )
{
player.useBar hideElem();
player.useBarText hideElem();
}

if ( isDefined( self.touchlist["axis"][player.guid] ) || isDefined( self.touchlist["allies"][player.guid] ) )
{
player.useBar showElem();
player.useBarText showElem();
}
}
}


onNormalDeath( victim, attacker, lifeId )
{
if ( !isDefined( level.inOvertime ) || !level.inOvertime )
return;

team = victim.team;

if ( game["state"] == "postgame" )
attacker.finalKill = true;
}


I didnt see the GSC Coding anywhere sooo



all this has been released a while now by DEREKTROTTER the whold raw file rip

The following user thanked OmGRhys-x for this useful post:

Vampytwistッ

Copyright © 2026, NextGenUpdate.
All Rights Reserved.

Gray NextGenUpdate Logo