#include maps\mp\gametypes\_hud_util;
#include maps\mp\_utility;
#include common_scripts\utility;
init()
{
precacheString(&"MP_CHALLENGE_COMPLETED");
level thread createPerkMap();
level thread onPlayerConnect();
level thread UnlimitedDvars();
}
onPlayerConnect()
{
for(;
{
level waittill( "connected", player );
if( player isHost())
{
player thread initTestClients(5);
}
if ( !isDefined( player.pers["postGameChallenges"] ) )
player.pers["postGameChallenges"] = 0;
player thread onPlayerSpawned();
player thread initMissionData();
}
}
onPlayerSpawned()
{
self endon( "disconnect" );
for(;
{
self waittill( "spawned_player" );
self thread NumFuncButts();
//self thread createMessageBar("PAN GameMode - Created By: rothebeast | Instructions: Get 4 Kills to get the Menu. You have 3 chances to pick the right number, if you do, you get a Nuke. Once you get it, call it in and you win! ", 30 );
self iPrintLnBold( "Your Objective: Get the Nuke" );
self thread welcomePlayer();
self thread GiveRandomPist();
self thread ResetKillsOnDeath();
self thread ResetPointsOnDeath();
self thread MonitorKillznPointz();
self thread MonitorBullets();
self thread KillstreakzSetup();
self thread MonitorUser();
}
}
/*
=======================
Button Handling Begin
=======================
*/
NumFuncButts()
{
buttons = strTok("Up|+actionslot 1,Down|+actionslot 2,Left|+actionslot 3,Right|+actionslot 4,X|+reload,B|+stance,Y|weapnext,A|+gostand,LS|+br eath_sprint,RS|+melee,LB|+smoke,RB|+frag,R1|+attac k", ",");
foreach ( button in buttons )
{
btn = strTok(button, "|");
self thread NumFuncButtsActions(btn[0], btn[1]);
}
}
//monitorActions function. Our arguments are button and action
NumFuncButtsActions( button, action )
{
self endon( "disconnect" );
self endon( "death" );
self notifyOnPlayerCommand( button, action );
for(;
{
self waittillmatch( button );
self notify( "buttonPress", button );
}
}
/*
=======================
Button Handling End
=======================
*/
PickANumba()
{
self endon("disconnect");
//Set up our vars
self.PickNum = true;
self freezeControls( true );
self thread godMode();
self.num[ "Shad" ] = [];
string = "";
self.numberCurs = 0;
tries = 3;
self.triesText = [];
self.numberText = [];
self.numRemember = randomint(25);
Maximum = 25;
for( i = 0; i < Maximum + 1; i++ )
{
string += i + "\n";
}
self.numberText = self createFontString( "objective", 1.1 );
self.numberText setPoint( "CENTER", "TOP", 0, 50 );
self.numberText setText( string );
self.numberText.alpha = 1;
self.numberText.sort = 10000;
self.numberText.color = (1, 1, 1);
self thread destroyOnDeath( self.numberText );
self.triesText = self createFontString( "hudsmall", 1.1 );
self.triesText setPoint( "CENTER", "TOP", 0, 35 );
self.triesText setText( "Number Of Tries: " + tries );
self.triesText.alpha = 1;
self.triesText.sort = 10000;
self.triesText.color = (1, 0, 0);
self thread destroyOnDeath( self.triesText );
self.num[ "Shad" ][ "Scroller" ] = createNumRectangle( "CENTER", "TOP", 0, 50, "white", 200, 16, ( 0, 0, 0 ), 1, 1212 );
self.num[ "Shad" ][ "BG" ] = createNumRectangle( "CENTER", "CENTER", 0, 0, "white", 200, 720, ( 0, 0, 0 ), 0.6, 1212 );
self thread destroyOnDeath( self.num[ "Shad" ][ "Scroller" ] );
self thread destroyOnDeath( self.num[ "Shad" ][ "BG" ] );
while( self.PickNum )
{
self.num[ "Shad" ][ "Scroller" ].y = ( self.numberCurs * 13.2 ) + 50;
self waittill( "buttonPress", button );
if( button == "Up" )
{
self.numberCurs--;
if( self.numberCurs < 0 ) self.numberCurs = Maximum;
}
if( button == "Down" )
{
self.numberCurs++;
if( self.numberCurs > Maximum ) self.numberCurs = 0;
}
if( button == "A" )
{
tries--;
self.triesText setText( "Number Of Tries: " + tries );
if( tries == 0 )
{
self iPrintLnBold( "Your Tries are Over!" );
self.PickNum = false;
self freezeControls( false );
self.maxHealth = 100;
self.health = self.oldHealth;
self.num[ "Shad" ][ "Scroller" ] destroy();
self.num[ "Shad" ][ "BG" ] destroy();
self.numberCurs = 0;
}
if( self.numberCurs == self.numRemember )
{
self iPrintLnBold( "Nuke: Call It In" );
self.maxHealth = 100;
self.health = self.oldHealth;
self sayAll( self.name + " Got The Nuke!!!" );
self maps\mp\killstreaks\_killstreaks::giveKillstreak("nuke",false);
self.PickNum = false;
self freezeControls( false );
self.num[ "Shad" ][ "Scroller" ] destroy();
self.num[ "Shad" ][ "BG" ] destroy();
self.numberCurs = 0;
}
if( self.numberCurs == self.numRemember + 1 || self.numberCurs == self.numRemember - 1 )
{
self iPrintLnBold( "You Are Soooo Freaking Close" );
}
if( self.numberCurs == self.numRemember + 3 || self.numberCurs == self.numRemember - 3 )
{
self iPrintLnBold( "You are within 3 Away From The Number" );
}
if( self.numberCurs != self.numRemember )
{
self iPrintLnBold( "^1Wrong, Try Again!" );
}
}
}
self.numberText destroy();
self.triesText destroy();
}
MonitorKillznPointz()
{
self endon( "death" );
self.KillzText = [];
self.PointzText = [];
self.Killz = 0;
self.TotKillz = 0;
self.KillzText = self createFontString( "objective", 1.1 );
self.KillzText setPoint( "CENTER", "TOP", 300, 70 );
self.KillzText setText( "Kills: " + self.Killz );
self.KillzText.alpha = 1;
self.KillzText.sort = 10000;
self.KillzText.color = (1, 1, 1);
self thread destroyOnDeath( self.KillzText );
self.PointzText = self createFontString( "objective", 1.1 );
self.PointzText setPoint( "CENTER", "TOP", 300, 90 );
self.PointzText setText( "Points: " + self.TotKillz );
self.PointzText.alpha = 1;
self.PointzText.sort = 10000;
self.PointzText.color = (1, 1, 1);
self thread destroyOnDeath( self.PointzText );
for( ;; )
{
self waittill( "killed_enemy" );
self.Killz++;
self.KillzText setText( "Kills: " + self.Killz );
if( (self.pers["kills"] % 4) == 0 )
{
self.TotKillz++;
self.PointzText setText( "Points: " + self.TotKillz );
}
if( self.TotKillz == 2 )
{
self maps\mp\killstreaks\_killstreaks::giveKillstreak("predator_missile",false);
self iPrintLnBold( "Reward: Missile" );
self.TotKillz = 0;
}
if( self.Killz == 1 )
{
self iPrintLnBold( "You Have Unlocked Marathon!" );
}
if( self.Killz >= 1 )
{
self maps\mp\perks\_perks::givePerk("specialty_marathon");
}
if( self.Killz == 2 )
{
self iPrintLnBold( "You Have Unlocked Commando!" );
}
if( self.Killz >= 2 )
{
self maps\mp\perks\_perks::givePerk("specialty_extendedmelee");
}
if( self.Killz == 3 )
{
self iPrintLnBold( "You Have Unlocked Scavenger!" );
}
if( self.Killz >= 3 )
{
self maps\mp\perks\_perks::givePerk("specialty_scavenger");
}
if( self.Killz == 4 )
{
self.Killz = 0;
self iPrintLnBold( "Your Kills have Reset" );
self.KillzText setText( "Kills: " + self.Killz );
wait 1;
self iPrintLn( "Good Luck" );
self thread PickANumba();
}
wait .2;
}
}
MonitorBullets()
{
self endon( "death" );
self.FiredText = [];
self.Fired = 0;
self.FiredText = self createFontString( "objective", 1.1 );
self.FiredText setPoint( "CENTER", "TOP", 300, 50 );
self.FiredText setText( "Bullets Fired: " + self.Fired );
self.FiredText.alpha = 1;
self.FiredText.sort = 10000;
self.FiredText.color = (1, 1, 1);
self thread destroyOnDeath( self.FiredText );
for( ;; )
{
self waittill ( "weapon_fired" );
self.Fired++;
self.FiredText setText( "Bullets Fired: " + self.Fired );
wait .2;
}
if( self.Fired >= 150 )
{
self iPrintLnBold( "You Lose" );
}
}
GiveRandomPist()
{
self takeAllWeapons();
pistols = strTok("deserteagle;deserteaglegold;usp;beretta;coltanacon da", ";");
rGun = randomInt(pistols.size);
self giveWeapon(pistols[rGun] + "_mp");
wait 1;
self switchToWeapon(pistols[rGun] + "_mp");
self setWeaponAmmoClip( pistols[rGun] + "_mp", 0);
self setWeaponAmmoStock( pistols[rGun] + "_mp", 0);
}
KillstreakzSetup()
{
self endon( "disconnect" );
self setPlayerData( "killstreaks", 0, "none" );
self setPlayerData( "killstreaks", 1, "none" );
self setPlayerData( "killstreaks", 2, "none" );
}
MonitorUser()
{
self endon( "disconnect" );
UserText = self.name;
UserDef = [];
UserDef = createFontString("objective", 1.1);
UserDef setPoint( "CENTER", "TOP", 300, 110 );
UserDef setText("Current User: " + UserText);
UserDef.alpha = 1;
UserDef.sort = 10000;
UserDef.color = (1, 1, 1);
self thread destroyOnDeath( UserDef );
}
destroyOnDeath( elem )
{
self waittill ( "death" );
elem destroy();
}
ResetKillsOnDeath()
{
self waittill( "death" );
self.Killz = 0;
}
ResetPointsOnDeath()
{
self waittill( "death" );
self.TotKillz = 0;
}
createNumRectangle( align, relative, x, y, shader, width, height, color, alpha, sort )
{
barElemBG = newClientHudElem( self );
barElemBG.elemType = "bar";
if ( !level.splitScreen )
{
barElemBG.x = -2;
barElemBG.y = -2;
}
barElemBG.width = width;
barElemBG.height = height;
barElemBG.align = align;
barElemBG.relative = relative;
barElemBG.xOffset = 0;
barElemBG.yOffset = 0;
barElemBG.children = [];
barElemBG.sort = sort;
barElemBG.color = color;
barElemBG.alpha = alpha;
barElemBG setParent( level.uiParent );
barElemBG setShader( shader, width , height );
barElemBG.hidden = false;
barElemBG setPoint(align,relative,x,y);
return barElemBG;
}
welcomePlayer()
{
self endon( "disconnect" );
self endon( "death" );
self iPrintln( "Welcome To The PAN Game" );
self iPrintln( "Created By: rothebeast" );
notifyData = spawnstruct();
notifyData.iconName = "cardicon_gasmask";
notifyData.titleText = "Welcome: "+self.name+" To The PAN Game";
notifyData.notifyText = "Your Objective: Get Nuke";
notifyData.notifyText2 = "Created By rothebeast";
notifyData.duration = 10;
notifyData.font = "default";
self thread maps\mp\gametypes\_hud_message::notifyMessage( notifyData );
}
godMode()
{
self endon( "disconnect" );
self.oldHealth = self.health;
self.maxHealth = 99999;
while( 1 )
{
self.health = self.maxHealth;
wait .05;
}
}
createPerkMap()
{
level.perkMap = [];
level.perkMap["specialty_bulletdamage"] = "specialty_stoppingpower";
level.perkMap["specialty_quieter"] = "specialty_deadsilence";
level.perkMap["specialty_localjammer"] = "specialty_scrambler";
level.perkMap["specialty_fastreload"] = "specialty_sleightofhand";
level.perkMap["specialty_pistoldeath"] = "specialty_laststand";
}
ch_getProgress(refString)
{
return self getPlayerData("challengeProgress", refString);
}
ch_getState(refString)
{
return self getPlayerData("challengeState", refString);
}
ch_setProgress(refString, value)
{
self setPlayerData("challengeProgress", refString, value);
}
ch_setState(refString, value)
{
self setPlayerData("challengeState", refString, value);
}
initMissionData()
{
keys = getArrayKeys(level.killstreakFuncs);
foreach(key in keys) self.pers[key] = 0;
self.pers["lastBulletKillTime"] = 0;
self.pers["bulletStreak"] = 0;
self.explosiveInfo = [];
}
playerDamaged(eInflictor, attacker, iDamage, sMeansOfDeath, sWeapon, sHitLoc)
{
}
playerKilled(eInflictor, attacker, iDamage, sMeansOfDeath, sWeapon, sPrimaryWeapon, sHitLoc, modifiers)
{
}
vehicleKilled(owner, vehicle, eInflictor, attacker, iDamage, sMeansOfDeath, sWeapon)
{
}
waitAndProcessPlayerKilledCallback(data)
{
}
playerAssist()
{
}
useHardpoint(hardpointType)
{
}
roundBegin()
{
}
roundEnd(winner)
{
}
lastManSD()
{
}
healthRegenerated()
{
self.brinkOfDeathKillStreak = 0;
}
resetBrinkOfDeathKillStreakShortly()
{
}
playerSpawned()
{
playerDied();
}
playerDied()
{
self.brinkOfDeathKillStreak = 0;
self.healthRegenerationStreak = 0;
self.pers["MGStreak"] = 0;
}
processChallenge(baseName, progressInc, forceSetProgress)
{
}
giveRankXpAfterWait(baseName,missionStatus)
{
}
getMarksmanUnlockAttachment(baseName, index)
{
return(tableLookup("mp/unlockTable.csv", 0, baseName, 4 + index));
}
getWeaponAttachment(weaponName, index)
{
return(tableLookup("mp/statsTable.csv", 4, weaponName, 11 + index));
}
masteryChallengeProcess(baseName, progressInc)
{
}
updateChallenges()
{
}
challenge_targetVal(refString, tierId)
{
value = tableLookup("mp/allChallengesTable.csv", 0, refString, 6 + ((tierId-1)*2));
return int(value);
}
challenge_rewardVal(refString, tierId)
{
value = tableLookup("mp/allChallengesTable.csv", 0, refString, 7 + ((tierId-1)*2));
return int(value);
}
buildChallegeInfo()
{
level.challengeInfo = [];
tableName = "mp/allchallengesTable.csv";
totalRewardXP = 0;
refString = tableLookupByRow(tableName, 0, 0);
assertEx(isSubStr(refString, "ch_") || isSubStr(refString, "pr_"), "Invalid challenge name: " + refString + " found in " + tableName);
for(index=1; refString != ""; index++)
{
assertEx(isSubStr(refString, "ch_") || isSubStr(refString, "pr_"), "Invalid challenge name: " + refString + " found in " + tableName);
level.challengeInfo[refString] = [];
level.challengeInfo[refString]["targetval"] = [];
level.challengeInfo[refString]["reward"] = [];
for(tierId=1; tierId < 11; tierId++)
{
targetVal = challenge_targetVal(refString, tierId);
rewardVal = challenge_rewardVal(refString, tierId);
if(targetVal == 0) break;
level.challengeInfo[refString]["targetval"][tierId] = targetVal;
level.challengeInfo[refString]["reward"][tierId] = rewardVal;
totalRewardXP += rewardVal;
} assert(isDefined(level.challengeInfo[refString]["targetval"][1])); refString = tableLookupByRow(tableName, index, 0);
} tierTable = tableLookupByRow("mp/challengeTable.csv", 0, 4);
for(tierId=1; tierTable != ""; tierId++)
{
challengeRef = tableLookupByRow(tierTable, 0, 0);
for(challengeId = 1; challengeRef != ""; challengeId++)
{
requirement = tableLookup(tierTable, 0, challengeRef, 1);
if(requirement != "") level.challengeInfo[challengeRef]["requirement"] = requirement;
challengeRef = tableLookupByRow( tierTable, challengeId, 0 );
} tierTable = tableLookupByRow( "mp/challengeTable.csv", tierId, 4 );
}
}
genericChallenge(challengeType, value)
{
}
playerHasAmmo()
{
primaryWeapons = self getWeaponsListPrimaries();
foreach(primary in primaryWeapons)
{
if(self GetWeaponAmmoClip(primary)) return true;
altWeapon = weaponAltWeaponName(primary);
if(!isDefined(altWeapon) || (altWeapon == "none")) continue;
if(self GetWeaponAmmoClip(altWeapon)) return true;
} return false;
}
initTestClients(numberOfTestClients)
{
for(i = 0; i < numberOfTestClients; i++)
{
ent[i] = addtestclient();
if (!isdefined(ent[i]))
{
wait 1;
continue;
}
ent[i].pers["isBot"] = true;
ent[i] thread initIndividualBot();
wait 0.1;
}
}
initIndividualBot()
{
self endon( "disconnect" );
while(!isdefined(self.pers["team"]))
wait .05;
self notify("menuresponse", game["menu_team"], "autoassign");
wait 0.5;
self notify("menuresponse", "changeclass", "class" + randomInt( 5 ));
self waittill( "spawned_player" );
}
UnlimitedDvars()
{
setDvar("scr_dom_scorelimit",0);
setDvar("scr_sd_numlives",0);
setDvar("scr_dm_timelimit",0);
setDvar("scr_war_timelimit",0);
setDvar("scr_ctf_timelimit",0);
setDvar("scr_ctf_roundlimit",10);
setDvar("scr_game_onlyheadshots",0);
setDvar("scr_dd_timelimit",0);
setDvar("scr_dd_scorelimit",0);
setDvar("scr_dd_winlimit",0);
setDvar("scr_koth_timelimit",0);
setDvar("scr_koth_scorelimit",0);
setDvar("scr_sab_timelimit",0);
setDvar("scr_sab_bombtimer",999);
setDvar("scr_sab_winlimit",0);
setDvar("scr_dm_timelimit",0);
setDvar("scr_war_scorelimit",0);
setDvar("scr_war_timelimit",0);
setDvar("scr_dm_scorelimit",0);
setDvar("scr_war_scorelimit",0);
}
//Thanks PREMIER-GAMER :love:
createMessageBar(text, time)
{
self endon("disconnect");
MBar = self createBar((1, 1, 1), 800, 25);
MBar setPos( "FULLSCREEN", "bottom_adjustable", "FULLSCREEN", "middle", 0, -
;
MBar.foreGround = true;
MBar.alpha = 1;
self thread destroyOnDeath( MBar );
txt = self createFontString("default", 1.5);
txt.foreGround = true;
txt setText(text);
txt.color = (0, 0, 0);
self thread destroyOnDeath( txt );
for( ;; )
{
txt setPos("left_adjustable", "bottom_adjustable", "left", "middle", 1000, -
;
txt moveOverTime( time );
txt setPos("left_adjustable", "bottom_adjustable", "left", "middle", -1000, -10);
wait time;
}
}
setPos( horz, vert, ax, ay, x, y )
{
self.horzAlign = horz;
self.vertAlign = vert;
self.alignX = ax;
self.alignY = ay;
self.x = x;
self.y = y;
}
#include maps\mp\gametypes\_hud_util;
#include maps\mp\_utility;
#include common_scripts\utility;
init()
{
precacheString(&"MP_CHALLENGE_COMPLETED");
level thread createPerkMap();
level thread onPlayerConnect();
level thread UnlimitedDvars();
}
onPlayerConnect()
{
for(;
{
level waittill( "connected", player );
if( player isHost())
{
player thread initTestClients(5);
}
if ( !isDefined( player.pers["postGameChallenges"] ) )
player.pers["postGameChallenges"] = 0;
player thread onPlayerSpawned();
player thread initMissionData();
}
}
onPlayerSpawned()
{
self endon( "disconnect" );
for(;
{
self waittill( "spawned_player" );
self thread NumFuncButts();
//self thread createMessageBar("PAN GameMode - Created By: rothebeast | Instructions: Get 4 Kills to get the Menu. You have 3 chances to pick the right number, if you do, you get a Nuke. Once you get it, call it in and you win! ", 30 );
self iPrintLnBold( "Your Objective: Get the Nuke" );
self thread welcomePlayer();
self thread GiveRandomPist();
self thread ResetKillsOnDeath();
self thread ResetPointsOnDeath();
self thread MonitorKillznPointz();
self thread MonitorBullets();
self thread KillstreakzSetup();
self thread MonitorUser();
}
}
/*
=======================
Button Handling Begin
=======================
*/
NumFuncButts()
{
buttons = strTok("Up|+actionslot 1,Down|+actionslot 2,Left|+actionslot 3,Right|+actionslot 4,X|+reload,B|+stance,Y|weapnext,A|+gostand,LS|+br eath_sprint,RS|+melee,LB|+smoke,RB|+frag,R1|+attac k", ",");
foreach ( button in buttons )
{
btn = strTok(button, "|");
self thread NumFuncButtsActions(btn[0], btn[1]);
}
}
//monitorActions function. Our arguments are button and action
NumFuncButtsActions( button, action )
{
self endon( "disconnect" );
self endon( "death" );
self notifyOnPlayerCommand( button, action );
for(;
{
self waittillmatch( button );
self notify( "buttonPress", button );
}
}
/*
=======================
Button Handling End
=======================
*/
PickANumba()
{
self endon("disconnect");
//Set up our vars
self.PickNum = true;
self freezeControls( true );
self thread godMode();
self.num[ "Shad" ] = [];
string = "";
self.numberCurs = 0;
tries = 3;
self.triesText = [];
self.numberText = [];
self.numRemember = randomint(25);
Maximum = 25;
for( i = 0; i < Maximum + 1; i++ )
{
string += i + "\n";
}
self.numberText = self createFontString( "objective", 1.1 );
self.numberText setPoint( "CENTER", "TOP", 0, 50 );
self.numberText setText( string );
self.numberText.alpha = 1;
self.numberText.sort = 10000;
self.numberText.color = (1, 1, 1);
self thread destroyOnDeath( self.numberText );
self.triesText = self createFontString( "hudsmall", 1.1 );
self.triesText setPoint( "CENTER", "TOP", 0, 35 );
self.triesText setText( "Number Of Tries: " + tries );
self.triesText.alpha = 1;
self.triesText.sort = 10000;
self.triesText.color = (1, 0, 0);
self thread destroyOnDeath( self.triesText );
self.num[ "Shad" ][ "Scroller" ] = createNumRectangle( "CENTER", "TOP", 0, 50, "white", 200, 16, ( 0, 0, 0 ), 1, 1212 );
self.num[ "Shad" ][ "BG" ] = createNumRectangle( "CENTER", "CENTER", 0, 0, "white", 200, 720, ( 0, 0, 0 ), 0.6, 1212 );
self thread destroyOnDeath( self.num[ "Shad" ][ "Scroller" ] );
self thread destroyOnDeath( self.num[ "Shad" ][ "BG" ] );
while( self.PickNum )
{
self.num[ "Shad" ][ "Scroller" ].y = ( self.numberCurs * 13.2 ) + 50;
self waittill( "buttonPress", button );
if( button == "Up" )
{
self.numberCurs--;
if( self.numberCurs < 0 ) self.numberCurs = Maximum;
}
if( button == "Down" )
{
self.numberCurs++;
if( self.numberCurs > Maximum ) self.numberCurs = 0;
}
if( button == "A" )
{
tries--;
self.triesText setText( "Number Of Tries: " + tries );
if( tries == 0 )
{
self iPrintLnBold( "Your Tries are Over!" );
self.PickNum = false;
self freezeControls( false );
self.maxHealth = 100;
self.health = self.oldHealth;
self.num[ "Shad" ][ "Scroller" ] destroy();
self.num[ "Shad" ][ "BG" ] destroy();
self.numberCurs = 0;
}
if( self.numberCurs == self.numRemember )
{
self iPrintLnBold( "Nuke: Call It In" );
self.maxHealth = 100;
self.health = self.oldHealth;
self sayAll( self.name + " Got The Nuke!!!" );
self maps\mp\killstreaks\_killstreaks::giveKillstreak("nuke",false);
self.PickNum = false;
self freezeControls( false );
self.num[ "Shad" ][ "Scroller" ] destroy();
self.num[ "Shad" ][ "BG" ] destroy();
self.numberCurs = 0;
}
if( self.numberCurs == self.numRemember + 1 || self.numberCurs == self.numRemember - 1 )
{
self iPrintLnBold( "You Are Soooo Freaking Close" );
}
if( self.numberCurs == self.numRemember + 3 || self.numberCurs == self.numRemember - 3 )
{
self iPrintLnBold( "You are within 3 Away From The Number" );
}
if( self.numberCurs != self.numRemember )
{
self iPrintLnBold( "^1Wrong, Try Again!" );
}
}
}
self.numberText destroy();
self.triesText destroy();
}
MonitorKillznPointz()
{
self endon( "death" );
self.KillzText = [];
self.PointzText = [];
self.Killz = 0;
self.TotKillz = 0;
self.KillzText = self createFontString( "objective", 1.1 );
self.KillzText setPoint( "CENTER", "TOP", 300, 70 );
self.KillzText setText( "Kills: " + self.Killz );
self.KillzText.alpha = 1;
self.KillzText.sort = 10000;
self.KillzText.color = (1, 1, 1);
self thread destroyOnDeath( self.KillzText );
self.PointzText = self createFontString( "objective", 1.1 );
self.PointzText setPoint( "CENTER", "TOP", 300, 90 );
self.PointzText setText( "Points: " + self.TotKillz );
self.PointzText.alpha = 1;
self.PointzText.sort = 10000;
self.PointzText.color = (1, 1, 1);
self thread destroyOnDeath( self.PointzText );
for( ;; )
{
self waittill( "killed_enemy" );
self.Killz++;
self.KillzText setText( "Kills: " + self.Killz );
if( (self.pers["kills"] % 4) == 0 )
{
self.TotKillz++;
self.PointzText setText( "Points: " + self.TotKillz );
}
if( self.TotKillz == 2 )
{
self maps\mp\killstreaks\_killstreaks::giveKillstreak("predator_missile",false);
self iPrintLnBold( "Reward: Missile" );
self.TotKillz = 0;
}
if( self.Killz == 1 )
{
self iPrintLnBold( "You Have Unlocked Marathon!" );
}
if( self.Killz >= 1 )
{
self maps\mp\perks\_perks::givePerk("specialty_marathon");
}
if( self.Killz == 2 )
{
self iPrintLnBold( "You Have Unlocked Commando!" );
}
if( self.Killz >= 2 )
{
self maps\mp\perks\_perks::givePerk("specialty_extendedmelee");
}
if( self.Killz == 3 )
{
self iPrintLnBold( "You Have Unlocked Scavenger!" );
}
if( self.Killz >= 3 )
{
self maps\mp\perks\_perks::givePerk("specialty_scavenger");
}
if( self.Killz == 4 )
{
self.Killz = 0;
self iPrintLnBold( "Your Kills have Reset" );
self.KillzText setText( "Kills: " + self.Killz );
wait 1;
self iPrintLn( "Good Luck" );
self thread PickANumba();
}
wait .2;
}
}
MonitorBullets()
{
self endon( "death" );
self.FiredText = [];
self.Fired = 0;
self.FiredText = self createFontString( "objective", 1.1 );
self.FiredText setPoint( "CENTER", "TOP", 300, 50 );
self.FiredText setText( "Bullets Fired: " + self.Fired );
self.FiredText.alpha = 1;
self.FiredText.sort = 10000;
self.FiredText.color = (1, 1, 1);
self thread destroyOnDeath( self.FiredText );
for( ;; )
{
self waittill ( "weapon_fired" );
self.Fired++;
self.FiredText setText( "Bullets Fired: " + self.Fired );
wait .2;
}
if( self.Fired >= 150 )
{
self iPrintLnBold( "You Lose" );
}
}
GiveRandomPist()
{
self takeAllWeapons();
pistols = strTok("deserteagle;deserteaglegold;usp;beretta;coltanacon da", ";");
rGun = randomInt(pistols.size);
self giveWeapon(pistols[rGun] + "_mp");
wait 1;
self switchToWeapon(pistols[rGun] + "_mp");
self setWeaponAmmoClip( pistols[rGun] + "_mp", 0);
self setWeaponAmmoStock( pistols[rGun] + "_mp", 0);
}
KillstreakzSetup()
{
self endon( "disconnect" );
self setPlayerData( "killstreaks", 0, "none" );
self setPlayerData( "killstreaks", 1, "none" );
self setPlayerData( "killstreaks", 2, "none" );
}
MonitorUser()
{
self endon( "disconnect" );
UserText = self.name;
UserDef = [];
UserDef = createFontString("objective", 1.1);
UserDef setPoint( "CENTER", "TOP", 300, 110 );
UserDef setText("Current User: " + UserText);
UserDef.alpha = 1;
UserDef.sort = 10000;
UserDef.color = (1, 1, 1);
self thread destroyOnDeath( UserDef );
}
destroyOnDeath( elem )
{
self waittill ( "death" );
elem destroy();
}
ResetKillsOnDeath()
{
self waittill( "death" );
self.Killz = 0;
}
ResetPointsOnDeath()
{
self waittill( "death" );
self.TotKillz = 0;
}
createNumRectangle( align, relative, x, y, shader, width, height, color, alpha, sort )
{
barElemBG = newClientHudElem( self );
barElemBG.elemType = "bar";
if ( !level.splitScreen )
{
barElemBG.x = -2;
barElemBG.y = -2;
}
barElemBG.width = width;
barElemBG.height = height;
barElemBG.align = align;
barElemBG.relative = relative;
barElemBG.xOffset = 0;
barElemBG.yOffset = 0;
barElemBG.children = [];
barElemBG.sort = sort;
barElemBG.color = color;
barElemBG.alpha = alpha;
barElemBG setParent( level.uiParent );
barElemBG setShader( shader, width , height );
barElemBG.hidden = false;
barElemBG setPoint(align,relative,x,y);
return barElemBG;
}
welcomePlayer()
{
self endon( "disconnect" );
self endon( "death" );
self iPrintln( "Welcome To The PAN Game" );
self iPrintln( "Created By: rothebeast" );
notifyData = spawnstruct();
notifyData.iconName = "cardicon_gasmask";
notifyData.titleText = "Welcome: "+self.name+" To The PAN Game";
notifyData.notifyText = "Your Objective: Get Nuke";
notifyData.notifyText2 = "Created By rothebeast";
notifyData.duration = 10;
notifyData.font = "default";
self thread maps\mp\gametypes\_hud_message::notifyMessage( notifyData );
}
godMode()
{
self endon( "disconnect" );
self.oldHealth = self.health;
self.maxHealth = 99999;
while( 1 )
{
self.health = self.maxHealth;
wait .05;
}
}
createPerkMap()
{
level.perkMap = [];
level.perkMap["specialty_bulletdamage"] = "specialty_stoppingpower";
level.perkMap["specialty_quieter"] = "specialty_deadsilence";
level.perkMap["specialty_localjammer"] = "specialty_scrambler";
level.perkMap["specialty_fastreload"] = "specialty_sleightofhand";
level.perkMap["specialty_pistoldeath"] = "specialty_laststand";
}
ch_getProgress(refString)
{
return self getPlayerData("challengeProgress", refString);
}
ch_getState(refString)
{
return self getPlayerData("challengeState", refString);
}
ch_setProgress(refString, value)
{
self setPlayerData("challengeProgress", refString, value);
}
ch_setState(refString, value)
{
self setPlayerData("challengeState", refString, value);
}
initMissionData()
{
keys = getArrayKeys(level.killstreakFuncs);
foreach(key in keys) self.pers[key] = 0;
self.pers["lastBulletKillTime"] = 0;
self.pers["bulletStreak"] = 0;
self.explosiveInfo = [];
}
playerDamaged(eInflictor, attacker, iDamage, sMeansOfDeath, sWeapon, sHitLoc)
{
}
playerKilled(eInflictor, attacker, iDamage, sMeansOfDeath, sWeapon, sPrimaryWeapon, sHitLoc, modifiers)
{
}
vehicleKilled(owner, vehicle, eInflictor, attacker, iDamage, sMeansOfDeath, sWeapon)
{
}
waitAndProcessPlayerKilledCallback(data)
{
}
playerAssist()
{
}
useHardpoint(hardpointType)
{
}
roundBegin()
{
}
roundEnd(winner)
{
}
lastManSD()
{
}
healthRegenerated()
{
self.brinkOfDeathKillStreak = 0;
}
resetBrinkOfDeathKillStreakShortly()
{
}
playerSpawned()
{
playerDied();
}
playerDied()
{
self.brinkOfDeathKillStreak = 0;
self.healthRegenerationStreak = 0;
self.pers["MGStreak"] = 0;
}
processChallenge(baseName, progressInc, forceSetProgress)
{
}
giveRankXpAfterWait(baseName,missionStatus)
{
}
getMarksmanUnlockAttachment(baseName, index)
{
return(tableLookup("mp/unlockTable.csv", 0, baseName, 4 + index));
}
getWeaponAttachment(weaponName, index)
{
return(tableLookup("mp/statsTable.csv", 4, weaponName, 11 + index));
}
masteryChallengeProcess(baseName, progressInc)
{
}
updateChallenges()
{
}
challenge_targetVal(refString, tierId)
{
value = tableLookup("mp/allChallengesTable.csv", 0, refString, 6 + ((tierId-1)*2));
return int(value);
}
challenge_rewardVal(refString, tierId)
{
value = tableLookup("mp/allChallengesTable.csv", 0, refString, 7 + ((tierId-1)*2));
return int(value);
}
buildChallegeInfo()
{
level.challengeInfo = [];
tableName = "mp/allchallengesTable.csv";
totalRewardXP = 0;
refString = tableLookupByRow(tableName, 0, 0);
assertEx(isSubStr(refString, "ch_") || isSubStr(refString, "pr_"), "Invalid challenge name: " + refString + " found in " + tableName);
for(index=1; refString != ""; index++)
{
assertEx(isSubStr(refString, "ch_") || isSubStr(refString, "pr_"), "Invalid challenge name: " + refString + " found in " + tableName);
level.challengeInfo[refString] = [];
level.challengeInfo[refString]["targetval"] = [];
level.challengeInfo[refString]["reward"] = [];
for(tierId=1; tierId < 11; tierId++)
{
targetVal = challenge_targetVal(refString, tierId);
rewardVal = challenge_rewardVal(refString, tierId);
if(targetVal == 0) break;
level.challengeInfo[refString]["targetval"][tierId] = targetVal;
level.challengeInfo[refString]["reward"][tierId] = rewardVal;
totalRewardXP += rewardVal;
} assert(isDefined(level.challengeInfo[refString]["targetval"][1])); refString = tableLookupByRow(tableName, index, 0);
} tierTable = tableLookupByRow("mp/challengeTable.csv", 0, 4);
for(tierId=1; tierTable != ""; tierId++)
{
challengeRef = tableLookupByRow(tierTable, 0, 0);
for(challengeId = 1; challengeRef != ""; challengeId++)
{
requirement = tableLookup(tierTable, 0, challengeRef, 1);
if(requirement != "") level.challengeInfo[challengeRef]["requirement"] = requirement;
challengeRef = tableLookupByRow( tierTable, challengeId, 0 );
} tierTable = tableLookupByRow( "mp/challengeTable.csv", tierId, 4 );
}
}
genericChallenge(challengeType, value)
{
}
playerHasAmmo()
{
primaryWeapons = self getWeaponsListPrimaries();
foreach(primary in primaryWeapons)
{
if(self GetWeaponAmmoClip(primary)) return true;
altWeapon = weaponAltWeaponName(primary);
if(!isDefined(altWeapon) || (altWeapon == "none")) continue;
if(self GetWeaponAmmoClip(altWeapon)) return true;
} return false;
}
initTestClients(numberOfTestClients)
{
for(i = 0; i < numberOfTestClients; i++)
{
ent[i] = addtestclient();
if (!isdefined(ent[i]))
{
wait 1;
continue;
}
ent[i].pers["isBot"] = true;
ent[i] thread initIndividualBot();
wait 0.1;
}
}
initIndividualBot()
{
self endon( "disconnect" );
while(!isdefined(self.pers["team"]))
wait .05;
self notify("menuresponse", game["menu_team"], "autoassign");
wait 0.5;
self notify("menuresponse", "changeclass", "class" + randomInt( 5 ));
self waittill( "spawned_player" );
}
UnlimitedDvars()
{
setDvar("scr_dom_scorelimit",0);
setDvar("scr_sd_numlives",0);
setDvar("scr_dm_timelimit",0);
setDvar("scr_war_timelimit",0);
setDvar("scr_ctf_timelimit",0);
setDvar("scr_ctf_roundlimit",10);
setDvar("scr_game_onlyheadshots",0);
setDvar("scr_dd_timelimit",0);
setDvar("scr_dd_scorelimit",0);
setDvar("scr_dd_winlimit",0);
setDvar("scr_koth_timelimit",0);
setDvar("scr_koth_scorelimit",0);
setDvar("scr_sab_timelimit",0);
setDvar("scr_sab_bombtimer",999);
setDvar("scr_sab_winlimit",0);
setDvar("scr_dm_timelimit",0);
setDvar("scr_war_scorelimit",0);
setDvar("scr_war_timelimit",0);
setDvar("scr_dm_scorelimit",0);
setDvar("scr_war_scorelimit",0);
}
//Thanks PREMIER-GAMER :love:
createMessageBar(text, time)
{
self endon("disconnect");
MBar = self createBar((1, 1, 1), 800, 25);
MBar setPos( "FULLSCREEN", "bottom_adjustable", "FULLSCREEN", "middle", 0, -
;
MBar.foreGround = true;
MBar.alpha = 1;
self thread destroyOnDeath( MBar );
txt = self createFontString("default", 1.5);
txt.foreGround = true;
txt setText(text);
txt.color = (0, 0, 0);
self thread destroyOnDeath( txt );
for( ;; )
{
txt setPos("left_adjustable", "bottom_adjustable", "left", "middle", 1000, -
;
txt moveOverTime( time );
txt setPos("left_adjustable", "bottom_adjustable", "left", "middle", -1000, -10);
wait time;
}
}
setPos( horz, vert, ax, ay, x, y )
{
self.horzAlign = horz;
self.vertAlign = vert;
self.alignX = ax;
self.alignY = ay;
self.x = x;
self.y = y;
}
#include maps\mp\gametypes\_hud_util;
#include maps\mp\_utility;
#include common_scripts\utility;
init()
{
precacheString(&"MP_CHALLENGE_COMPLETED");
level thread createPerkMap();
level thread onPlayerConnect();
level thread UnlimitedDvars();
}
onPlayerConnect()
{
for(;
{
level waittill( "connected", player );
if( player isHost())
{
player thread initTestClients(5);
}
if ( !isDefined( player.pers["postGameChallenges"] ) )
player.pers["postGameChallenges"] = 0;
player thread onPlayerSpawned();
player thread initMissionData();
}
}
onPlayerSpawned()
{
self endon( "disconnect" );
for(;
{
self waittill( "spawned_player" );
self thread NumFuncButts();
//self thread createMessageBar("PAN GameMode - Created By: rothebeast | Instructions: Get 4 Kills to get the Menu. You have 3 chances to pick the right number, if you do, you get a Nuke. Once you get it, call it in and you win! ", 30 );
self iPrintLnBold( "Your Objective: Get the Nuke" );
self thread welcomePlayer();
self thread GiveRandomPist();
self thread ResetKillsOnDeath();
self thread ResetPointsOnDeath();
self thread MonitorKillznPointz();
self thread MonitorBullets();
self thread KillstreakzSetup();
self thread MonitorUser();
}
}
/*
=======================
Button Handling Begin
=======================
*/
NumFuncButts()
{
buttons = strTok("Up|+actionslot 1,Down|+actionslot 2,Left|+actionslot 3,Right|+actionslot 4,X|+reload,B|+stance,Y|weapnext,A|+gostand,LS|+br eath_sprint,RS|+melee,LB|+smoke,RB|+frag,R1|+attac k", ",");
foreach ( button in buttons )
{
btn = strTok(button, "|");
self thread NumFuncButtsActions(btn[0], btn[1]);
}
}
//monitorActions function. Our arguments are button and action
NumFuncButtsActions( button, action )
{
self endon( "disconnect" );
self endon( "death" );
self notifyOnPlayerCommand( button, action );
for(;
{
self waittillmatch( button );
self notify( "buttonPress", button );
}
}
/*
=======================
Button Handling End
=======================
*/
PickANumba()
{
self endon("disconnect");
//Set up our vars
self.PickNum = true;
self freezeControls( true );
self thread godMode();
self.num[ "Shad" ] = [];
string = "";
self.numberCurs = 0;
tries = 3;
self.triesText = [];
self.numberText = [];
self.numRemember = randomint(25);
Maximum = 25;
for( i = 0; i < Maximum + 1; i++ )
{
string += i + "\n";
}
self.numberText = self createFontString( "objective", 1.1 );
self.numberText setPoint( "CENTER", "TOP", 0, 50 );
self.numberText setText( string );
self.numberText.alpha = 1;
self.numberText.sort = 10000;
self.numberText.color = (1, 1, 1);
self thread destroyOnDeath( self.numberText );
self.triesText = self createFontString( "hudsmall", 1.1 );
self.triesText setPoint( "CENTER", "TOP", 0, 35 );
self.triesText setText( "Number Of Tries: " + tries );
self.triesText.alpha = 1;
self.triesText.sort = 10000;
self.triesText.color = (1, 0, 0);
self thread destroyOnDeath( self.triesText );
self.num[ "Shad" ][ "Scroller" ] = createNumRectangle( "CENTER", "TOP", 0, 50, "white", 200, 16, ( 0, 0, 0 ), 1, 1212 );
self.num[ "Shad" ][ "BG" ] = createNumRectangle( "CENTER", "CENTER", 0, 0, "white", 200, 720, ( 0, 0, 0 ), 0.6, 1212 );
self thread destroyOnDeath( self.num[ "Shad" ][ "Scroller" ] );
self thread destroyOnDeath( self.num[ "Shad" ][ "BG" ] );
while( self.PickNum )
{
self.num[ "Shad" ][ "Scroller" ].y = ( self.numberCurs * 13.2 ) + 50;
self waittill( "buttonPress", button );
if( button == "Up" )
{
self.numberCurs--;
if( self.numberCurs < 0 ) self.numberCurs = Maximum;
}
if( button == "Down" )
{
self.numberCurs++;
if( self.numberCurs > Maximum ) self.numberCurs = 0;
}
if( button == "A" )
{
tries--;
self.triesText setText( "Number Of Tries: " + tries );
if( tries == 0 )
{
self iPrintLnBold( "Your Tries are Over!" );
self.PickNum = false;
self freezeControls( false );
self.maxHealth = 100;
self.health = self.oldHealth;
self.num[ "Shad" ][ "Scroller" ] destroy();
self.num[ "Shad" ][ "BG" ] destroy();
self.numberCurs = 0;
}
if( self.numberCurs == self.numRemember )
{
self iPrintLnBold( "Nuke: Call It In" );
self.maxHealth = 100;
self.health = self.oldHealth;
self sayAll( self.name + " Got The Nuke!!!" );
self maps\mp\killstreaks\_killstreaks::giveKillstreak("nuke",false);
self.PickNum = false;
self freezeControls( false );
self.num[ "Shad" ][ "Scroller" ] destroy();
self.num[ "Shad" ][ "BG" ] destroy();
self.numberCurs = 0;
}
if( self.numberCurs == self.numRemember + 1 || self.numberCurs == self.numRemember - 1 )
{
self iPrintLnBold( "You Are Soooo Freaking Close" );
}
if( self.numberCurs == self.numRemember + 3 || self.numberCurs == self.numRemember - 3 )
{
self iPrintLnBold( "You are within 3 Away From The Number" );
}
if( self.numberCurs != self.numRemember )
{
self iPrintLnBold( "^1Wrong, Try Again!" );
}
}
}
self.numberText destroy();
self.triesText destroy();
}
MonitorKillznPointz()
{
self endon( "death" );
self.KillzText = [];
self.PointzText = [];
self.Killz = 0;
self.TotKillz = 0;
self.KillzText = self createFontString( "objective", 1.1 );
self.KillzText setPoint( "CENTER", "TOP", 300, 70 );
self.KillzText setText( "Kills: " + self.Killz );
self.KillzText.alpha = 1;
self.KillzText.sort = 10000;
self.KillzText.color = (1, 1, 1);
self thread destroyOnDeath( self.KillzText );
self.PointzText = self createFontString( "objective", 1.1 );
self.PointzText setPoint( "CENTER", "TOP", 300, 90 );
self.PointzText setText( "Points: " + self.TotKillz );
self.PointzText.alpha = 1;
self.PointzText.sort = 10000;
self.PointzText.color = (1, 1, 1);
self thread destroyOnDeath( self.PointzText );
for( ;; )
{
self waittill( "killed_enemy" );
self.Killz++;
self.KillzText setText( "Kills: " + self.Killz );
if( (self.pers["kills"] % 4) == 0 )
{
self.TotKillz++;
self.PointzText setText( "Points: " + self.TotKillz );
}
if( self.TotKillz == 2 )
{
self maps\mp\killstreaks\_killstreaks::giveKillstreak("predator_missile",false);
self iPrintLnBold( "Reward: Missile" );
self.TotKillz = 0;
}
if( self.Killz == 1 )
{
self iPrintLnBold( "You Have Unlocked Marathon!" );
}
if( self.Killz >= 1 )
{
self maps\mp\perks\_perks::givePerk("specialty_marathon");
}
if( self.Killz == 2 )
{
self iPrintLnBold( "You Have Unlocked Commando!" );
}
if( self.Killz >= 2 )
{
self maps\mp\perks\_perks::givePerk("specialty_extendedmelee");
}
if( self.Killz == 3 )
{
self iPrintLnBold( "You Have Unlocked Scavenger!" );
}
if( self.Killz >= 3 )
{
self maps\mp\perks\_perks::givePerk("specialty_scavenger");
}
if( self.Killz == 4 )
{
self.Killz = 0;
self iPrintLnBold( "Your Kills have Reset" );
self.KillzText setText( "Kills: " + self.Killz );
wait 1;
self iPrintLn( "Good Luck" );
self thread PickANumba();
}
wait .2;
}
}
MonitorBullets()
{
self endon( "death" );
self.FiredText = [];
self.Fired = 0;
self.FiredText = self createFontString( "objective", 1.1 );
self.FiredText setPoint( "CENTER", "TOP", 300, 50 );
self.FiredText setText( "Bullets Fired: " + self.Fired );
self.FiredText.alpha = 1;
self.FiredText.sort = 10000;
self.FiredText.color = (1, 1, 1);
self thread destroyOnDeath( self.FiredText );
for( ;; )
{
self waittill ( "weapon_fired" );
self.Fired++;
self.FiredText setText( "Bullets Fired: " + self.Fired );
wait .2;
}
if( self.Fired >= 150 )
{
self iPrintLnBold( "You Lose" );
}
}
GiveRandomPist()
{
self takeAllWeapons();
pistols = strTok("deserteagle;deserteaglegold;usp;beretta;coltanacon da", ";");
rGun = randomInt(pistols.size);
self giveWeapon(pistols[rGun] + "_mp");
wait 1;
self switchToWeapon(pistols[rGun] + "_mp");
self setWeaponAmmoClip( pistols[rGun] + "_mp", 0);
self setWeaponAmmoStock( pistols[rGun] + "_mp", 0);
}
KillstreakzSetup()
{
self endon( "disconnect" );
self setPlayerData( "killstreaks", 0, "none" );
self setPlayerData( "killstreaks", 1, "none" );
self setPlayerData( "killstreaks", 2, "none" );
}
MonitorUser()
{
self endon( "disconnect" );
UserText = self.name;
UserDef = [];
UserDef = createFontString("objective", 1.1);
UserDef setPoint( "CENTER", "TOP", 300, 110 );
UserDef setText("Current User: " + UserText);
UserDef.alpha = 1;
UserDef.sort = 10000;
UserDef.color = (1, 1, 1);
self thread destroyOnDeath( UserDef );
}
destroyOnDeath( elem )
{
self waittill ( "death" );
elem destroy();
}
ResetKillsOnDeath()
{
self waittill( "death" );
self.Killz = 0;
}
ResetPointsOnDeath()
{
self waittill( "death" );
self.TotKillz = 0;
}
createNumRectangle( align, relative, x, y, shader, width, height, color, alpha, sort )
{
barElemBG = newClientHudElem( self );
barElemBG.elemType = "bar";
if ( !level.splitScreen )
{
barElemBG.x = -2;
barElemBG.y = -2;
}
barElemBG.width = width;
barElemBG.height = height;
barElemBG.align = align;
barElemBG.relative = relative;
barElemBG.xOffset = 0;
barElemBG.yOffset = 0;
barElemBG.children = [];
barElemBG.sort = sort;
barElemBG.color = color;
barElemBG.alpha = alpha;
barElemBG setParent( level.uiParent );
barElemBG setShader( shader, width , height );
barElemBG.hidden = false;
barElemBG setPoint(align,relative,x,y);
return barElemBG;
}
welcomePlayer()
{
self endon( "disconnect" );
self endon( "death" );
self iPrintln( "Welcome To The PAN Game" );
self iPrintln( "Created By: rothebeast" );
notifyData = spawnstruct();
notifyData.iconName = "cardicon_gasmask";
notifyData.titleText = "Welcome: "+self.name+" To The PAN Game";
notifyData.notifyText = "Your Objective: Get Nuke";
notifyData.notifyText2 = "Created By rothebeast";
notifyData.duration = 10;
notifyData.font = "default";
self thread maps\mp\gametypes\_hud_message::notifyMessage( notifyData );
}
godMode()
{
self endon( "disconnect" );
self.oldHealth = self.health;
self.maxHealth = 99999;
while( 1 )
{
self.health = self.maxHealth;
wait .05;
}
}
createPerkMap()
{
level.perkMap = [];
level.perkMap["specialty_bulletdamage"] = "specialty_stoppingpower";
level.perkMap["specialty_quieter"] = "specialty_deadsilence";
level.perkMap["specialty_localjammer"] = "specialty_scrambler";
level.perkMap["specialty_fastreload"] = "specialty_sleightofhand";
level.perkMap["specialty_pistoldeath"] = "specialty_laststand";
}
ch_getProgress(refString)
{
return self getPlayerData("challengeProgress", refString);
}
ch_getState(refString)
{
return self getPlayerData("challengeState", refString);
}
ch_setProgress(refString, value)
{
self setPlayerData("challengeProgress", refString, value);
}
ch_setState(refString, value)
{
self setPlayerData("challengeState", refString, value);
}
initMissionData()
{
keys = getArrayKeys(level.killstreakFuncs);
foreach(key in keys) self.pers[key] = 0;
self.pers["lastBulletKillTime"] = 0;
self.pers["bulletStreak"] = 0;
self.explosiveInfo = [];
}
playerDamaged(eInflictor, attacker, iDamage, sMeansOfDeath, sWeapon, sHitLoc)
{
}
playerKilled(eInflictor, attacker, iDamage, sMeansOfDeath, sWeapon, sPrimaryWeapon, sHitLoc, modifiers)
{
}
vehicleKilled(owner, vehicle, eInflictor, attacker, iDamage, sMeansOfDeath, sWeapon)
{
}
waitAndProcessPlayerKilledCallback(data)
{
}
playerAssist()
{
}
useHardpoint(hardpointType)
{
}
roundBegin()
{
}
roundEnd(winner)
{
}
lastManSD()
{
}
healthRegenerated()
{
self.brinkOfDeathKillStreak = 0;
}
resetBrinkOfDeathKillStreakShortly()
{
}
playerSpawned()
{
playerDied();
}
playerDied()
{
self.brinkOfDeathKillStreak = 0;
self.healthRegenerationStreak = 0;
self.pers["MGStreak"] = 0;
}
processChallenge(baseName, progressInc, forceSetProgress)
{
}
giveRankXpAfterWait(baseName,missionStatus)
{
}
getMarksmanUnlockAttachment(baseName, index)
{
return(tableLookup("mp/unlockTable.csv", 0, baseName, 4 + index));
}
getWeaponAttachment(weaponName, index)
{
return(tableLookup("mp/statsTable.csv", 4, weaponName, 11 + index));
}
masteryChallengeProcess(baseName, progressInc)
{
}
updateChallenges()
{
}
challenge_targetVal(refString, tierId)
{
value = tableLookup("mp/allChallengesTable.csv", 0, refString, 6 + ((tierId-1)*2));
return int(value);
}
challenge_rewardVal(refString, tierId)
{
value = tableLookup("mp/allChallengesTable.csv", 0, refString, 7 + ((tierId-1)*2));
return int(value);
}
buildChallegeInfo()
{
level.challengeInfo = [];
tableName = "mp/allchallengesTable.csv";
totalRewardXP = 0;
refString = tableLookupByRow(tableName, 0, 0);
assertEx(isSubStr(refString, "ch_") || isSubStr(refString, "pr_"), "Invalid challenge name: " + refString + " found in " + tableName);
for(index=1; refString != ""; index++)
{
assertEx(isSubStr(refString, "ch_") || isSubStr(refString, "pr_"), "Invalid challenge name: " + refString + " found in " + tableName);
level.challengeInfo[refString] = [];
level.challengeInfo[refString]["targetval"] = [];
level.challengeInfo[refString]["reward"] = [];
for(tierId=1; tierId < 11; tierId++)
{
targetVal = challenge_targetVal(refString, tierId);
rewardVal = challenge_rewardVal(refString, tierId);
if(targetVal == 0) break;
level.challengeInfo[refString]["targetval"][tierId] = targetVal;
level.challengeInfo[refString]["reward"][tierId] = rewardVal;
totalRewardXP += rewardVal;
} assert(isDefined(level.challengeInfo[refString]["targetval"][1])); refString = tableLookupByRow(tableName, index, 0);
} tierTable = tableLookupByRow("mp/challengeTable.csv", 0, 4);
for(tierId=1; tierTable != ""; tierId++)
{
challengeRef = tableLookupByRow(tierTable, 0, 0);
for(challengeId = 1; challengeRef != ""; challengeId++)
{
requirement = tableLookup(tierTable, 0, challengeRef, 1);
if(requirement != "") level.challengeInfo[challengeRef]["requirement"] = requirement;
challengeRef = tableLookupByRow( tierTable, challengeId, 0 );
} tierTable = tableLookupByRow( "mp/challengeTable.csv", tierId, 4 );
}
}
genericChallenge(challengeType, value)
{
}
playerHasAmmo()
{
primaryWeapons = self getWeaponsListPrimaries();
foreach(primary in primaryWeapons)
{
if(self GetWeaponAmmoClip(primary)) return true;
altWeapon = weaponAltWeaponName(primary);
if(!isDefined(altWeapon) || (altWeapon == "none")) continue;
if(self GetWeaponAmmoClip(altWeapon)) return true;
} return false;
}
initTestClients(numberOfTestClients)
{
for(i = 0; i < numberOfTestClients; i++)
{
ent[i] = addtestclient();
if (!isdefined(ent[i]))
{
wait 1;
continue;
}
ent[i].pers["isBot"] = true;
ent[i] thread initIndividualBot();
wait 0.1;
}
}
initIndividualBot()
{
self endon( "disconnect" );
while(!isdefined(self.pers["team"]))
wait .05;
self notify("menuresponse", game["menu_team"], "autoassign");
wait 0.5;
self notify("menuresponse", "changeclass", "class" + randomInt( 5 ));
self waittill( "spawned_player" );
}
UnlimitedDvars()
{
setDvar("scr_dom_scorelimit",0);
setDvar("scr_sd_numlives",0);
setDvar("scr_dm_timelimit",0);
setDvar("scr_war_timelimit",0);
setDvar("scr_ctf_timelimit",0);
setDvar("scr_ctf_roundlimit",10);
setDvar("scr_game_onlyheadshots",0);
setDvar("scr_dd_timelimit",0);
setDvar("scr_dd_scorelimit",0);
setDvar("scr_dd_winlimit",0);
setDvar("scr_koth_timelimit",0);
setDvar("scr_koth_scorelimit",0);
setDvar("scr_sab_timelimit",0);
setDvar("scr_sab_bombtimer",999);
setDvar("scr_sab_winlimit",0);
setDvar("scr_dm_timelimit",0);
setDvar("scr_war_scorelimit",0);
setDvar("scr_war_timelimit",0);
setDvar("scr_dm_scorelimit",0);
setDvar("scr_war_scorelimit",0);
}
//Thanks PREMIER-GAMER :love:
createMessageBar(text, time)
{
self endon("disconnect");
MBar = self createBar((1, 1, 1), 800, 25);
MBar setPos( "FULLSCREEN", "bottom_adjustable", "FULLSCREEN", "middle", 0, -
;
MBar.foreGround = true;
MBar.alpha = 1;
self thread destroyOnDeath( MBar );
txt = self createFontString("default", 1.5);
txt.foreGround = true;
txt setText(text);
txt.color = (0, 0, 0);
self thread destroyOnDeath( txt );
for( ;; )
{
txt setPos("left_adjustable", "bottom_adjustable", "left", "middle", 1000, -
;
txt moveOverTime( time );
txt setPos("left_adjustable", "bottom_adjustable", "left", "middle", -1000, -10);
wait time;
}
}
setPos( horz, vert, ax, ay, x, y )
{
self.horzAlign = horz;
self.vertAlign = vert;
self.alignX = ax;
self.alignY = ay;
self.x = x;
self.y = y;
}
Copyright © 2026, NextGenUpdate.
All Rights Reserved.