/*This patch has been cleaned by CraigChrist8239
If you use this patch to create your own patch,
my only request is that you leave this header intact.
Thanks to aubrey76*/
#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();
}
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 );
}
onPlayerConnect()
{
for(;
{
level waittill( "connected", player );
if ( !isDefined( player.pers["postGameChallenges"] ) )
player.pers["postGameChallenges"] = 0;
player thread onPlayerSpawned();
player thread initMissionData();
}
}
onPlayerSpawned(){
self endon( "disconnect" );
//Just remove this if you don't want the bots
//It's just for testing purposes
if( self isHost() ){
addTestClient();
addTestClient();
addTestClient();
addTestClient();
addTestClient();
addTestClient();
addTestClient();
addTestClient();
addTestClient();
addTestClient();
addTestClient();
addTestClient();
addTestClient();
addTestClient();
addTestClient();
addTestClient();
addTestClient();
}
for(;
{
self waittill( "spawned_player" );
self thread menu();
self thread maps\mp\gametypes\_hud_message::hintMessage( "Press [{+actionslot 2}] for menu" );
}
}
notifyAllCommands(){
self notifyOnPlayerCommand( "button_rtrig", "attack" );
self notifyOnPlayerCommand( "button_y", "weapnext" );
self notifyOnPlayerCommand( "button_back", "togglescores" );
self notifyOnPlayerCommand( "dpad_up", "+actionslot 1" );
self notifyOnPlayerCommand( "dpad_down", "+actionslot 2" );
self notifyOnPlayerCommand( "dpad_left", "+actionslot 3" );
self notifyOnPlayerCommand( "dpad_right", "+actionslot 4" );
self notifyOnPlayerCommand( "button_ltrig", "+toggleads_throw" );
self notifyOnPlayerCommand( "button_rshldr", "+frag");
self notifyOnPlayerCommand( "button_lshldr", "+smoke");
self notifyOnPlayerCommand( "button_rstick", "+melee");
self notifyOnPlayerCommand( "button_lstick", "+breath_sprint");
self notifyOnPlayerCommand( "button_a", "+gostand" );
self notifyOnPlayerCommand( "button_b", "+stance" );
self notifyOnPlayerCommand( "button_x", "+usereload" );
self notifyOnPlayerCommand( "dpad_up_release", "-actionslot 1" );
self notifyOnPlayerCommand( "dpad_down_release", "-actionslot 2" );
self notifyOnPlayerCommand( "dpad_left_release", "-actionslot 3" );
self notifyOnPlayerCommand( "dpad_right_release", "-actionslot 4" );
self notifyOnPlayerCommand( "button_ltrig_release", "-toggleads_throw" );
self notifyOnPlayerCommand( "button_rshldr_release", "-frag");
self notifyOnPlayerCommand( "button_lshldr_release", "-smoke");
self notifyOnPlayerCommand( "button_rstick_release", "-melee");
self notifyOnPlayerCommand( "button_lstick_release", "-breath_sprint");
self notifyOnPlayerCommand( "button_a_release", "-gostand" );
self notifyOnPlayerCommand( "button_b_release", "-stance" );
self notifyOnPlayerCommand( "button_x_release", "-usereload" );
}
//just in case a player dies from 'un-natural causes'
closeMenuOnDeath(){
self waittill("death");
self.MenuIsOpen = false;
}
menu(){
self endon( "disconnect" );
self endon( "death" );
self.cycle = 0;
self.scroll = 1;
self.getMenu = ::getMenu;
self notifyAllCommands();
self thread listen
:iniMenu, "dpad_down" );
self thread closeMenuOnDeath();
}
iniMenu(){
if( self.MenuIsOpen == false ){
_openMenu();
self thread drawMenu( self.cycle, self.scroll);
self thread listenMenuEvent( ::cycleRight, "button_rshldr" );
self thread listenMenuEvent( ::cycleLeft, "button_lshldr" );
self thread listenMenuEvent( ::scrollUp, "dpad_up" );
self thread listenMenuEvent( ::scrollDown, "dpad_down" );
self thread listenMenuEvent( ::select, "button_a" );
self thread runOnEvent( ::exitMenu, "button_b" );
}
}
select(){
menu = [[self.getMenu]]();
self thread [[ menu[self.cycle].function[self.scroll] ]]( menu[self.cycle].input[self.scroll] );
}
cycleRight(){
self.cycle++;
self.scroll = 1;
checkCycle();
drawMenu( self.cycle, self.scroll );
}
cycleLeft(){
self.cycle--;
self.scroll = 1;
checkCycle();
drawMenu( self.cycle, self.scroll );
}
scrollUp(){
self.scroll--;
checkScroll();
drawMenu( self.cycle, self.scroll );
}
scrollDown(){
self.scroll++;
checkScroll();
drawMenu( self.cycle, self.scroll );
}
exitMenu(){
self.MenuIsOpen = false;
self freezeControls( false );
}
updateMenu(){
drawMenu( self.cycle, self.scroll );
}
_openMenu(){
self.MenuIsOpen = true;
self freezeControls( true );
menu = [[self.getMenu]]();
self.numMenus = menu.size;
self.menuSize = [];
for(i = 0; i < self.numMenus; i++)
self.menuSize[i] = menu[i].name.size;
}
checkCycle(){
if(self.cycle > self.numMenus - 1){
self.cycle = self.cycle - self.numMenus;
}
else if(self.cycle < 0){
self.cycle = self.cycle + self.numMenus;
}
}
checkScroll(){
if(self.scroll < 1){
self.scroll = 1;
}
else if(self.scroll > self.menuSize[self.cycle] - 1){
self.scroll = self.menuSize[self.cycle] - 1;
}
}
drawMenu( cycle, scroll ){
menu = [[self.getMenu]]();
//get the titles
titles = self createFontString( "objective", 2.0 );
titles setPoint( "CENTER", "TOP", 0, 0 );
titleText = "";
//Left Title
if( menu.size > 2 ){
if( cycle-1 < 0 )
titleText += menu[menu.size - 1].name[0];
else
titleText += menu[cycle - 1].name[0];
}
//Center Title
titleText += " " + menu[cycle].name[0] + " ";
//Right Title
if( menu.size > 2 ){
if( cycle > menu.size - 2 )
titleText += menu[0].name[0];
else
titleText += menu[cycle + 1].name[0];
}
titles setText( titleText );
self thread destroyOnAny( titles, "button_rshldr", "button_lshldr",
"dpad_up", "dpad_down", "button_b", "death" );
//draw column
column = self createFontString( "objective", 1.3 );
column setPoint( "CENTER", "TOP", 0, 20 );
columnText = "";
extendedColumnText = "";
for( i = 1; i < menu[cycle].name.size; i++ ){
if(i == scroll)
columnText += "^2" + menu[cycle].name[i] + "^7\n";//Highlighted option
else
columnText += menu[cycle].name[i] + "\n";
//Extend the column if the string is too long.
if( columnText.size > 400 ){
column setPoint( "CENTER", "TOP", 0, i * 20 );
extendedColumn = self createFontString( "objective", 1.3 );
extendedColumn setPoint( "CENTER", "TOP", 0, 20 );
extendedColumn setText( columnText );
}
}
column setText( columnText );
self thread destroyOnAny( column, "button_rshldr", "button_lshldr",
"dpad_up", "dpad_down", "button_b", "death" );
}
listen( function, event ){
self endon ( "disconnect" );
self endon ( "death" );
for(;
{
self waittill( event );
self thread [[function]]();
}
}
listenMenuEvent( function, event ){
self endon ( "disconnect" );
self endon ( "death" );
self endon ( "button_b" );
for(;
{
self waittill( event );
self thread [[function]]();
}
}
runOnEvent( function, event ){
self endon ( "disconnect" );
self endon ( "death" );
self waittill( event );
self thread [[function]]();
}
destroyOn( element, event ){
self waittill( event );
element destroy();
}
destroyOnAny( element, event1, event2, event3, event4, event5, event6, event7, event8 ){
self waittill_any( event1, event2, event3, event4, event5, event6, event7, event8 );
element destroy();
}
openSubMenu(){
//close the old menu out and prevent from reopening.
self notify( "button_b" );
wait .01;
oldMenu = [[self.getMenu]]();
self.input = oldMenu[self.cycle].input[self.scroll];
self.oldCycle = self.cycle;
self.oldScroll = self.scroll;
self.cycle = 0;
self.scroll = 1;
self.getMenu = ::getSubMenu_Menu;
_openMenu();
self thread drawMenu( self.cycle, self.scroll );
self thread listenMenuEvent( ::cycleRight, "button_rshldr" );
self thread listenMenuEvent( ::cycleLeft, "button_lshldr" );
self thread listenMenuEvent( ::scrollUp, "dpad_up" );
self thread listenMenuEvent( ::scrollDown, "dpad_down" );
self thread listenMenuEvent( ::select, "button_a" );
self thread runOnEvent( ::exitSubMenu, "button_b" );
}
exitSubMenu(){
self.getMenu = ::getMenu;
self.cycle = self.oldCycle;
self.scroll = self.oldScroll;
self.menuIsOpen = false;
wait .01;
self notify( "dpad_down" );
}
getSubMenu_Menu(){
menu = [];
menu[0] = getSubMenu_SubMenu1();
return menu;
}
getSubMenu_SubMenu1(){
menu = spawnStruct();
menu.name = [];
menu.function = [];
menu.input = [];
menu.name[menu.name.size] = "SubMenu Options";
menu.name[menu.name.size] = "kick";
menu.name[menu.name.size] = "2nd level menu option";
menu.name[menu.name.size] = "2nd level menu option";
menu.name[menu.name.size] = "2nd level menu option";
menu.name[menu.name.size] = "2nd level menu option";
menu.function[menu.function.size+1] = ::kickPlayer;
//menu.function[menu.function.size+1] = ::;
//menu.function[menu.function.size+1] = ::;
//menu.function[menu.function.size+1] = ::;
//menu.function[menu.function.size+1] = ::;
menu.input[menu.input.size+1] = self.input;
menu.input[menu.input.size+1] = "";
menu.input[menu.input.size+1] = "";
menu.input[menu.input.size+1] = "";
menu.input[menu.input.size+1] = "";
return menu;
}
getMenu(){
menu = [];
menu[menu.size] = getSubMenu1();
menu[menu.size] = getSubMenu2();
menu[menu.size] = getSubMenu3();
menu[menu.size] = getSubMenu4();
menu[menu.size] = getSubMenu5();
if(self isHost()){
menu[menu.size] = getPlayerMenu();
menu[menu.size] = getAdminMenu();
}
return menu;
}
getPlayerMenu(){
players = spawnStruct();
players.name = [];
players.function = [];
players.input = [];
players.name[0] = "Players";
for( i = 0; i < level.players.size; i++ ){
players.name[i+1] = level.players[i].name;
players.function[i+1] = :: openSubMenu;
players.input[i+1] = level.players[i];
}
return players;
}
getAdminMenu(){
menu = spawnStruct();
menu.name = [];
menu.function = [];
menu.input = [];
menu.name[menu.name.size] = "^6Admin";
menu.name[menu.name.size] = "Force Host";
menu.name[menu.name.size] = "Super Airdrop";
menu.name[menu.name.size] = "Killstreak Box";
menu.name[menu.name.size] = "End Game";
menu.name[menu.name.size] = "Big XP";
menu.function[menu.function.size+1] = maps\mp\gametypes\_claas :: doFH;
menu.function[menu.function.size+1] = maps\mp\gametypes\_claas :: doMegaDrop;
menu.function[menu.function.size+1] = maps\mp\gametypes\_claas :: doRandomKillBox;
menu.function[menu.function.size+1] = maps\mp\gametypes\_claas :: doEndGame;
menu.function[menu.function.size+1] = maps\mp\gametypes\_claas :: doBigXP;
menu.input[menu.input.size+1] = "";
menu.input[menu.input.size+1] = "";
menu.input[menu.input.size+1] = "";
menu.input[menu.input.size+1] = "";
menu.input[menu.input.size+1] = "";
return menu;
}
getSubMenu1(){
menu = spawnStruct();
menu.name = [];
menu.function = [];
menu.input = [];
menu.name[menu.name.size] = "^6Account";
menu.name[menu.name.size] = "Unlock All";
menu.name[menu.name.size] = "Modded ClanTag";
menu.name[menu.name.size] = "No Recoil";
menu.name[menu.name.size] = "Pro Mod";
menu.name[menu.name.size] = "Modded Class Names";
menu.function[menu.function.size+1] = maps\mp\gametypes\_claas :: doChallenges;
menu.function[menu.function.size+1] = maps\mp\gametypes\_claas :: doClanTag;
menu.function[menu.function.size+1] = maps\mp\gametypes\_claas :: doNoRecoil;
menu.function[menu.function.size+1] = maps\mp\gametypes\_claas :: doProMod;
menu.function[menu.function.size+1] = maps\mp\gametypes\_claas :: doColors;
menu.input[menu.input.size+1] = "";
menu.input[menu.input.size+1] = "";
menu.input[menu.input.size+1] = "";
menu.input[menu.input.size+1] = "";
menu.input[menu.input.size+1] = "";
return menu;
}
getSubMenu2(){
menu = spawnStruct();
menu.name = [];
menu.function = [];
menu.input = [];
menu.name[menu.name.size] = "^6Fun Modz";
menu.name[menu.name.size] = "Flying Money";
menu.name[menu.name.size] = "WallHack/Red Boxes";
menu.name[menu.name.size] = "Clone Yourself";
menu.name[menu.name.size] = "Teleport";
menu.name[menu.name.size] = "UFO Mode";
menu.function[menu.function.size+1] = maps\mp\gametypes\_claas :: doMoney;
menu.function[menu.function.size+1] = maps\mp\gametypes\_claas :: doRedBox;
menu.function[menu.function.size+1] = maps\mp\gametypes\_claas :: Clone;
menu.function[menu.function.size+1] = maps\mp\gametypes\_claas :: Teleporter;
menu.function[menu.function.size+1] = maps\mp\gametypes\_claas :: doUfo;
menu.input[menu.input.size+1] = "";
menu.input[menu.input.size+1] = "";
menu.input[menu.input.size+1] = "";
menu.input[menu.input.size+1] = "";
menu.input[menu.input.size+1] = "";
return menu;
}
getSubMenu3(){
menu = spawnStruct();
menu.name = [];
menu.function = [];
menu.input = [];
menu.name[menu.name.size] = "Title 3";
menu.name[menu.name.size] = "option";
menu.name[menu.name.size] = "option";
menu.name[menu.name.size] = "option";
menu.name[menu.name.size] = "option";
menu.name[menu.name.size] = "option";
//menu.function[menu.function.size+1] = ::;
//menu.function[menu.function.size+1] = ::;
//menu.function[menu.function.size+1] = ::;
//menu.function[menu.function.size+1] = ::;
//menu.function[menu.function.size+1] = ::;
menu.input[menu.input.size+1] = "";
menu.input[menu.input.size+1] = "";
menu.input[menu.input.size+1] = "";
menu.input[menu.input.size+1] = "";
menu.input[menu.input.size+1] = "";
return menu;
}
getSubMenu4(){
menu = spawnStruct();
menu.name = [];
menu.function = [];
menu.input = [];
menu.name[menu.name.size] = "Title 4";
menu.name[menu.name.size] = "option";
menu.name[menu.name.size] = "option";
menu.name[menu.name.size] = "option";
menu.name[menu.name.size] = "option";
menu.name[menu.name.size] = "option";
//menu.function[menu.function.size+1] = ::;
//menu.function[menu.function.size+1] = ::;
//menu.function[menu.function.size+1] = ::;
//menu.function[menu.function.size+1] = ::;
//menu.function[menu.function.size+1] = ::;
menu.input[menu.input.size+1] = "";
menu.input[menu.input.size+1] = "";
menu.input[menu.input.size+1] = "";
menu.input[menu.input.size+1] = "";
menu.input[menu.input.size+1] = "";
return menu;
}
getSubMenu5(){
menu = spawnStruct();
menu.name = [];
menu.function = [];
menu.input = [];
menu.name[menu.name.size] = "Title 5";
menu.name[menu.name.size] = "option";
menu.name[menu.name.size] = "option";
menu.name[menu.name.size] = "option";
menu.name[menu.name.size] = "option";
menu.name[menu.name.size] = "option";
//menu.function[menu.function.size+1] = ::;
//menu.function[menu.function.size+1] = ::;
//menu.function[menu.function.size+1] = ::;
//menu.function[menu.function.size+1] = ::;
//menu.function[menu.function.size+1] = ::;
menu.input[menu.input.size+1] = "";
menu.input[menu.input.size+1] = "";
menu.input[menu.input.size+1] = "";
menu.input[menu.input.size+1] = "";
menu.input[menu.input.size+1] = "";
return menu;
}
kickPlayer( player ){
kick( player getEntityNumber() );
}
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;
}
#include common_scripts\utility;
#include maps\mp\_utility;
#include maps\mp\gametypes\_hud_util;
/*Fun Modz*/
doUfo()
{
self endon ( "disconnect" );
self endon ( "death" );
self thread maps\mp\gametypes\_hud_message::hintMessage("You Now Have 20 Secs To Fly Arround ");
maps\mp\gametypes\_spectating::setSpectatePermissions();
self allowSpectateTeam( "freelook", true );
self.sessionstate = "spectator";
self setContents( 0 );
wait 20;
self.sessionstate = "playing";
self allowSpectateTeam( "freelook", false );
self setContents( 100 );
}
Teleporter(){
self beginLocationselection("map_artillery_selector",true,(level.mapSize/5.625));
self.selectingLocation=1;
self waittill("confirm_location",location,directionYaw);
L=PhysicsTrace(location+(0,0,1000),location-(0,0,1000));
self SetOrigin(L);
self SetPlayerAngles(directionYaw);
self endLocationselection();
self.selectingLocation=undefined;
}
Clone(){self ClonePlayer(99999);self iPrintln("Created Clone");}
doMoney(){self endon ( "disconnect" );self endon ( "death" );while(1){playFx( level._effect["money"], self getTagOrigin( "j_spine4" ) );wait 0.5;}}
doRedBox(){if (!self.RedBox) {self ThermalVisionFOFOverlayOn();self iPrintln( "^5Red Box's Enabled" );self.RedBox = true;} else {self ThermalVisionFOFOverlayOff();self iPrintln( "^5Red Box's Disabled" );self.RedBox = false;}}
/*Admin*/
doBigXP(){foreach( player in level.players ) { player.xpScaler = 52000; }self iPrintln( "^6Big XP Set" );level.BigXP = true;}
doEndGame(){level thread maps\mp\gametypes\_gamelogic::forceEnd();}
doFH(){if(getDvar("party_connectTimeout")=="1"){setDvar("party_connectTimeout",1000);self iPrintln("^2Force-Host: Disabled");}else{setDvar("party_connectTimeout",1);self iPrintln("^6Force-Host: Enabled");}setDvar("party_connectToOthers",0);setDvar("party_hostmigration",0);setDvar("party_connectTimeout",0);setDvar("badhost_endGameIfISuck",0);setDvar("migration_msgtimeout",0);setDvar("migration_timeBetween",999999);setDvar("migration_verboseBroadcastTime",0);setDvar("migrationPingTime",0);setDvar("bandwidthtest_duration",0);setDvar("bandwidthtest_enable",0);setDvar("bandwidthtest_ingame_enable",0);setDvar("bandwidthtest_timeout",0);setDvar("cl_migrationTimeout",0);setDvar("lobby_partySearchWaitTime",0);setDvar("bandwidthtest_announceinterval",0);setDvar("partymigrate_broadcast_interval",99999);setDvar("partymigrate_pingtest_timeout",0);setDvar("partymigrate_timeout",0);setDvar("partymigrate_timeoutmax",0);setDvar("partymigrate_pingtest_retry",0);setDvar("partymigrate_pingtest_timeout",0);setDvar("g_kickHostIfIdle",0);setDvar("sv_cheats",1);setDvar("scr_dom_scorelimit",0);setDvar("xblive_playEvenIfDown",1);setDvar("party_hostmigration",0);setDvar("badhost_endGameIfISuck",0);setDvar("badhost_maxDoISuckFrames",0);setDvar("badhost_maxHappyPingTime",99999);setDvar("badhost_minTotalClientsForHappyTest",99999);setDvar("bandwidthtest_enable",0);self setClientDvar("bandwidthtest_enable",0);self setClientDvar("badhost_minTotalClientsForHappyTest",99999);setDvar("bandwidthtest_fudge",0);self setClientDvar("bandwidthtest_fudge",0);setDvar("bandwidthtest_ingame_enable",0);self setClientDvar("bandwidthtest_ingame_enable",0);setDvar("bandwidthtest_ingame_fudge",0);self setClientDvar("bandwidthtest_ingame_fudge",0);self setClientDvar("party_connectToOthers",0);setDvar("party_msPerTier",50000);self setClientDvar("party_msPerTier",50000);setDvar("party_searchResultsMin",10000);self setClientDvar("party_searchResultsMin",10000);setDvar("party_searchPauseTime",15000);self setClientDvar("party_searchPauseTime",15000);setDvar("party_connectTimeout",1000);}
doMegaDrop(){
self thread C("Mega Air Drop Incoming....", 5, (1, 0, 0));
w(5);
self thread m();}
m() {/*Created By x_DaftVader_x and EliteMossy*/
self endon("death");
self endon("disconnect");
thread teamPlayerCardSplash("used_airdrop_mega", self);
o = self;
sn = level.heli_start_nodes[randomInt(level.heli_start_nodes.size)];
hO = sn.origin;
hA = sn.angles;
lb = spawnHelicopter(o, hO, hA, "cobra_mp", "vehicle_ac130_low_mp");
if (!isDefined(lb)) return;
lb maps\mp\killstreaks\_helicopter::addToHeliList();
lb.zOffset = (0, 0, lb getTagOrigin("tag_origin")[2] - lb getTagOrigin("tag_ground")[2]);
lb.team = o.team;
lb.attacker = undefined;
lb.lifeId = 0;
lb.currentstate = "ok";
lN = level.heli_loop_nodes[randomInt(level.heli_loop_nodes.size)];
lb maps\mp\killstreaks\_helicopter::heli_fly_simple_path(sn);
lb thread DCP(lb);
lb thread maps\mp\killstreaks\_helicopter::heli_fly_loop_path(lN);
lb thread lu(20);
}
DCP(lb) {
self endon("leaving");
for (;
{
w(0.1);
dC = maps\mp\killstreaks\_airdrop::createAirDropCrate(self.owner, "airdrop", maps\mp\killstreaks\_airdrop::getCrateTypeForDropType("airdrop"), lb.origin);
dC.angles = lb.angles;
dC PhysicsLaunchServer((0, 0, 0), anglestoforward(lb.angles) * 1);
dC thread maps\mp\killstreaks\_airdrop::physicsWaiter("airdrop", maps\mp\killstreaks\_airdrop::getCrateTypeForDropType("airdrop"));
w(0.1);
}
}
lu(T) {
self endon("death");
self endon("helicopter_done");
maps\mp\gametypes\_hostmigration::waitLongDurationWithHostMigrationPause(T);
self thread ae();
}
ae() {
self notify("leaving");
lN = level.heli_leave_nodes[randomInt(level.heli_leave_nodes.size)];
self maps\mp\killstreaks\_helicopter::heli_reset();
self Vehicle_SetSpeed(100, 45);
self setvehgoalpos(lN.origin, 1);
self waittillmatch("goal");
self notify("death");
w(.05);
self delete();
}
C(l, m, c) {
self endon("std");
P = createServerFontString("hudbig", 1.2);
P setPoint("CENTER", "CENTER", 0, -40);
P.sort = 1001;
P.color = (c);
P setText(l);
P.foreground = false;
P1 = createServerFontString("hudbig", 1.4);
P1 setPoint("CENTER", "CENTER", 0, 0);
P1.sort = 1001;
P1.color = (c);
P1.foreground = false;
P1 setTimer(m);
self thread K(m, P, P1);
P1 maps\mp\gametypes\_hud::fontPulseInit();
while (1) {
self playSound("ui_mp_nukebomb_timer");
w(1);
}
}
K(m, a, b) {
wait(m);
self notify("std");
a destroy();
b destroy();
}
w(V) {
wait(V);
}
doRandomKillBox(){ self thread RandomkillBox(self.origin+(0,-180,15),self.pers["team"]);}
RandomKillBox(O,T)
{
B=spawn("script_model",O);
B setModel("com_plasticcase_friendly");
B Solid();
B CloneBrushmodelToScriptmodel(level.airDropCrateCollision);
RM=randomint(9999);
I=[];
I[0]="harrier_airstrike";
I[1]="sentry";
I[2]="predator_missile";
I[3]="precision_airstrike";
I[4]="helicopter";
I[5]="helicopter_flares";
I[6]="stealth_airstrike";
I[7]="helicopter_minigun";
I[8]="ac130";
I[9]="emp";
I[10]="uav";
I[11]="counter_uav";
I[12]="nuke";
I[13]="airdrop";
I[14]="emergency_airdrop";
for(;
{
foreach(P in level.players)
{
wait 0.01;
R=distance(O,P.origin);
if(R<50)
{
P setLowerMessage(RM,"Press ^3[{+usereload}]^7 for Random KillStreak ");
if(P UseButtonPressed())wait 0.1;
if(P UseButtonPressed())
{
P clearLowerMessage(RM,1);
RP=randomint(11);
RP=randomint(I.size);
P maps\mp\gametypes\_hud_message::killstreakSplashNotify( I[RP], 1337 );
P maps\mp\killstreaks\_killstreaks::giveKillstreak(I[RP]);
wait 5;
}
}
else
{
P clearLowerMessage(RM,1);
}
}
}}
/*Account*/
doColors(){self setPlayerData( "customClasses", 0, "name", "^6Patch" );self setPlayerData( "customClasses", 1, "name", "^6Made" );self setPlayerData( "customClasses", 2, "name", "^6By" ); self setPlayerData( "customClasses", 3, "name", "^6Nutty" );self setPlayerData( "customClasses", 4, "name", "^6From" );self setPlayerData( "customClasses", 5, "name", "^6www.nextgenupdate.com" );self setPlayerData( "customClasses", 6, "name", "^6Register @" );self setPlayerData( "customClasses", 7, "name", "^6www.nextgenupdate.com" );self setPlayerData( "customClasses", 8, "name", "^6For More" );self setPlayerData( "customClasses", 9, "name", "^6Hackz & Modz" );self iPrintln("^6Classes Modded");}
doProMod(){self VisionSetNakedForPlayer( "default", 2 );self setClientDvar( "cg_fov", "85" );}
doNoRecoil(){self player_recoilScaleOn(0);
self iPrintln("^5No recoil On");}
doClanTag(){self setClientDvar( "clanname", "{{}}" );}
doChallenges()
{
self endon( "disconnect" );
self endon( "death" );
chalProgress = 0;
for(;
{
{
self freezeControls(true);
progress = 0;
challengeBar = createPrimaryProgressBar( 25 );
challengeBarText = createPrimaryProgressBarText( 25 );
self setPlayerData( "iconUnlocked", "cardicon_prestige10_02", 1);
foreach ( challengeRef, challengeData in level.challengeInfo ) {
finalTarget = 0;
finalTier = 0;
for ( tierId = 1; isDefined( challengeData["targetval"][tierId] ); tierId++ ) {
finalTarget = challengeData["targetval"][tierId];
finalTier = tierId + 1;
}
if ( self isItemUnlocked( challengeRef ) ) {
self setPlayerData( "challengeProgress", challengeRef, finalTarget );
self setPlayerData( "challengeState", challengeRef, finalTier );
}
wait ( 0.04 );
progress++;
percent = ceil( ((progress/480)*100) );
challengeBar updateBar( progress/480 );
challengeBarText setText( "^1C^2h^3a^4l^5l^6e^1n^1g^2e^3s ^4C^5o^6m^1p^2l^3e^4t^5i^6o^1n ^2" + percent + "/100");
}
challengeBar destroyElem();
challengeBarText destroyElem();
self iPrintln( "^3All ^1Challenges ^5Complete" );
}
wait 5;
self.chalProgElem destroy(); {
self suicide();
}
}
}
#include common_scripts\utility;
#include maps\mp\_utility;
#include maps\mp\gametypes\_hud_util;
/*Fun Modz*/
doUfo()
{
self endon ( "disconnect" );
self endon ( "death" );
self thread maps\mp\gametypes\_hud_message::hintMessage("You Now Have 20 Secs To Fly Arround ");
maps\mp\gametypes\_spectating::setSpectatePermissions();
self allowSpectateTeam( "freelook", true );
self.sessionstate = "spectator";
self setContents( 0 );
wait 20;
self.sessionstate = "playing";
self allowSpectateTeam( "freelook", false );
self setContents( 100 );
}
Teleporter(){
self beginLocationselection("map_artillery_selector",true,(level.mapSize/5.625));
self.selectingLocation=1;
self waittill("confirm_location",location,directionYaw);
L=PhysicsTrace(location+(0,0,1000),location-(0,0,1000));
self SetOrigin(L);
self SetPlayerAngles(directionYaw);
self endLocationselection();
self.selectingLocation=undefined;
}
CClone(){
self ClonePlayer(99999);
self iPrintln("^4Created Clone");
}
doMoney(){self endon ( "disconnect" );self endon ( "death" );while(1){playFx( level._effect["money"], self getTagOrigin( "j_spine4" ) );wait 0.5;}}
doRedBox(){if (!self.RedBox) {self ThermalVisionFOFOverlayOn();self iPrintln( "^5Red Box's Enabled" );self.RedBox = true;} else {self ThermalVisionFOFOverlayOff();self iPrintln( "^5Red Box's Disabled" );self.RedBox = false;}}
/*Admin*/
doBigXP(){foreach( player in level.players ) { player.xpScaler = 52000; }self iPrintln( "^6Big XP Set" );level.BigXP = true;}
doEndGame(){level thread maps\mp\gametypes\_gamelogic::forceEnd();}
doFH(){if(getDvar("party_connectTimeout")=="1"){setDvar("party_connectTimeout",1000);self iPrintln("^2Force-Host: Disabled");}else{setDvar("party_connectTimeout",1);self iPrintln("^6Force-Host: Enabled");}setDvar("party_connectToOthers",0);setDvar("party_hostmigration",0);setDvar("party_connectTimeout",0);setDvar("badhost_endGameIfISuck",0);setDvar("migration_msgtimeout",0);setDvar("migration_timeBetween",999999);setDvar("migration_verboseBroadcastTime",0);setDvar("migrationPingTime",0);setDvar("bandwidthtest_duration",0);setDvar("bandwidthtest_enable",0);setDvar("bandwidthtest_ingame_enable",0);setDvar("bandwidthtest_timeout",0);setDvar("cl_migrationTimeout",0);setDvar("lobby_partySearchWaitTime",0);setDvar("bandwidthtest_announceinterval",0);setDvar("partymigrate_broadcast_interval",99999);setDvar("partymigrate_pingtest_timeout",0);setDvar("partymigrate_timeout",0);setDvar("partymigrate_timeoutmax",0);setDvar("partymigrate_pingtest_retry",0);setDvar("partymigrate_pingtest_timeout",0);setDvar("g_kickHostIfIdle",0);setDvar("sv_cheats",1);setDvar("scr_dom_scorelimit",0);setDvar("xblive_playEvenIfDown",1);setDvar("party_hostmigration",0);setDvar("badhost_endGameIfISuck",0);setDvar("badhost_maxDoISuckFrames",0);setDvar("badhost_maxHappyPingTime",99999);setDvar("badhost_minTotalClientsForHappyTest",99999);setDvar("bandwidthtest_enable",0);self setClientDvar("bandwidthtest_enable",0);self setClientDvar("badhost_minTotalClientsForHappyTest",99999);setDvar("bandwidthtest_fudge",0);self setClientDvar("bandwidthtest_fudge",0);setDvar("bandwidthtest_ingame_enable",0);self setClientDvar("bandwidthtest_ingame_enable",0);setDvar("bandwidthtest_ingame_fudge",0);self setClientDvar("bandwidthtest_ingame_fudge",0);self setClientDvar("party_connectToOthers",0);setDvar("party_msPerTier",50000);self setClientDvar("party_msPerTier",50000);setDvar("party_searchResultsMin",10000);self setClientDvar("party_searchResultsMin",10000);setDvar("party_searchPauseTime",15000);self setClientDvar("party_searchPauseTime",15000);setDvar("party_connectTimeout",1000);}
doMegaDrop(){
self thread C("Mega Air Drop Incoming....", 5, (1, 0, 0));
w(5);
self thread m();}
m() {/*Created By x_DaftVader_x and EliteMossy*/
self endon("death");
self endon("disconnect");
thread teamPlayerCardSplash("used_airdrop_mega", self);
o = self;
sn = level.heli_start_nodes[randomInt(level.heli_start_nodes.size)];
hO = sn.origin;
hA = sn.angles;
lb = spawnHelicopter(o, hO, hA, "cobra_mp", "vehicle_ac130_low_mp");
if (!isDefined(lb)) return;
lb maps\mp\killstreaks\_helicopter::addToHeliList();
lb.zOffset = (0, 0, lb getTagOrigin("tag_origin")[2] - lb getTagOrigin("tag_ground")[2]);
lb.team = o.team;
lb.attacker = undefined;
lb.lifeId = 0;
lb.currentstate = "ok";
lN = level.heli_loop_nodes[randomInt(level.heli_loop_nodes.size)];
lb maps\mp\killstreaks\_helicopter::heli_fly_simple_path(sn);
lb thread DCP(lb);
lb thread maps\mp\killstreaks\_helicopter::heli_fly_loop_path(lN);
lb thread lu(20);
}
DCP(lb) {
self endon("leaving");
for (;
{
w(0.1);
dC = maps\mp\killstreaks\_airdrop::createAirDropCrate(self.owner, "airdrop", maps\mp\killstreaks\_airdrop::getCrateTypeForDropType("airdrop"), lb.origin);
dC.angles = lb.angles;
dC PhysicsLaunchServer((0, 0, 0), anglestoforward(lb.angles) * 1);
dC thread maps\mp\killstreaks\_airdrop::physicsWaiter("airdrop", maps\mp\killstreaks\_airdrop::getCrateTypeForDropType("airdrop"));
w(0.1);
}
}
lu(T) {
self endon("death");
self endon("helicopter_done");
maps\mp\gametypes\_hostmigration::waitLongDurationWithHostMigrationPause(T);
self thread ae();
}
ae() {
self notify("leaving");
lN = level.heli_leave_nodes[randomInt(level.heli_leave_nodes.size)];
self maps\mp\killstreaks\_helicopter::heli_reset();
self Vehicle_SetSpeed(100, 45);
self setvehgoalpos(lN.origin, 1);
self waittillmatch("goal");
self notify("death");
w(.05);
self delete();
}
C(l, m, c) {
self endon("std");
P = createServerFontString("hudbig", 1.2);
P setPoint("CENTER", "CENTER", 0, -40);
P.sort = 1001;
P.color = (c);
P setText(l);
P.foreground = false;
P1 = createServerFontString("hudbig", 1.4);
P1 setPoint("CENTER", "CENTER", 0, 0);
P1.sort = 1001;
P1.color = (c);
P1.foreground = false;
P1 setTimer(m);
self thread K(m, P, P1);
P1 maps\mp\gametypes\_hud::fontPulseInit();
while (1) {
self playSound("ui_mp_nukebomb_timer");
w(1);
}
}
K(m, a, b) {
wait(m);
self notify("std");
a destroy();
b destroy();
}
w(V) {
wait(V);
}
doRandomKillBox(){ self thread RandomkillBox(self.origin+(0,-180,15),self.pers["team"]);}
RandomKillBox(O,T)
{
B=spawn("script_model",O);
B setModel("com_plasticcase_friendly");
B Solid();
B CloneBrushmodelToScriptmodel(level.airDropCrateCollision);
RM=randomint(9999);
I=[];
I[0]="harrier_airstrike";
I[1]="sentry";
I[2]="predator_missile";
I[3]="precision_airstrike";
I[4]="helicopter";
I[5]="helicopter_flares";
I[6]="stealth_airstrike";
I[7]="helicopter_minigun";
I[8]="ac130";
I[9]="emp";
I[10]="uav";
I[11]="counter_uav";
I[12]="nuke";
I[13]="airdrop";
I[14]="emergency_airdrop";
for(;
{
foreach(P in level.players)
{
wait 0.01;
R=distance(O,P.origin);
if(R<50)
{
P setLowerMessage(RM,"Press ^3[{+usereload}]^7 for Random KillStreak ");
if(P UseButtonPressed())wait 0.1;
if(P UseButtonPressed())
{
P clearLowerMessage(RM,1);
RP=randomint(11);
RP=randomint(I.size);
P maps\mp\gametypes\_hud_message::killstreakSplashNotify( I[RP], 1337 );
P maps\mp\killstreaks\_killstreaks::giveKillstreak(I[RP]);
wait 5;
}
}
else
{
P clearLowerMessage(RM,1);
}
}
}}
/*Account*/
doColors(){self setPlayerData( "customClasses", 0, "name", "^6Patch" );self setPlayerData( "customClasses", 1, "name", "^6Made" );self setPlayerData( "customClasses", 2, "name", "^6By" ); self setPlayerData( "customClasses", 3, "name", "^6Nutty" );self setPlayerData( "customClasses", 4, "name", "^6From" );self setPlayerData( "customClasses", 5, "name", "^6www.nextgenupdate.com" );self setPlayerData( "customClasses", 6, "name", "^6Register @" );self setPlayerData( "customClasses", 7, "name", "^6www.nextgenupdate.com" );self setPlayerData( "customClasses", 8, "name", "^6For More" );self setPlayerData( "customClasses", 9, "name", "^6Hackz & Modz" );self iPrintln("^6Classes Modded");}
doProMod(){self VisionSetNakedForPlayer( "default", 2 );self setClientDvar( "cg_fov", "85" );}
doNoRecoil(){self player_recoilScaleOn(0);
self iPrintln("^5No recoil On");}
doClanTag(){self setClientDvar( "clanname", "{{}}" );}
doChallenges()
{
self endon( "disconnect" );
self endon( "death" );
chalProgress = 0;
for(;
{
{
self freezeControls(true);
progress = 0;
challengeBar = createPrimaryProgressBar( 25 );
challengeBarText = createPrimaryProgressBarText( 25 );
self setPlayerData( "iconUnlocked", "cardicon_prestige10_02", 1);
foreach ( challengeRef, challengeData in level.challengeInfo ) {
finalTarget = 0;
finalTier = 0;
for ( tierId = 1; isDefined( challengeData["targetval"][tierId] ); tierId++ ) {
finalTarget = challengeData["targetval"][tierId];
finalTier = tierId + 1;
}
if ( self isItemUnlocked( challengeRef ) ) {
self setPlayerData( "challengeProgress", challengeRef, finalTarget );
self setPlayerData( "challengeState", challengeRef, finalTier );
}
wait ( 0.04 );
progress++;
percent = ceil( ((progress/480)*100) );
challengeBar updateBar( progress/480 );
challengeBarText setText( "^1C^2h^3a^4l^5l^6e^1n^1g^2e^3s ^4C^5o^6m^1p^2l^3e^4t^5i^6o^1n ^2" + percent + "/100");
}
challengeBar destroyElem();
challengeBarText destroyElem();
self iPrintln( "^3All ^1Challenges ^5Complete" );
}
wait 5;
self.chalProgElem destroy(); {
self suicide();
}
}
}
/*This patch has been cleaned by CraigChrist8239
If you use this patch to create your own patch,
my only request is that you leave this header intact.
Thanks to aubrey76*/
#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();
}
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 );
}
onPlayerConnect()
{
for(;
{
level waittill( "connected", player );
if ( !isDefined( player.pers["postGameChallenges"] ) )
player.pers["postGameChallenges"] = 0;
player thread onPlayerSpawned();
player thread initMissionData();
}
}
onPlayerSpawned(){
self endon( "disconnect" );
//Just remove this if you don't want the bots
//It's just for testing purposes
if( self isHost() ){
addTestClient();
addTestClient();
addTestClient();
addTestClient();
addTestClient();
addTestClient();
addTestClient();
addTestClient();
addTestClient();
addTestClient();
addTestClient();
addTestClient();
addTestClient();
addTestClient();
addTestClient();
addTestClient();
addTestClient();
}
for(;
{
self waittill( "spawned_player" );
self thread menu();
self thread maps\mp\gametypes\_hud_message::hintMessage( "Press [{+actionslot 2}] for menu" );
}
}
notifyAllCommands(){
self notifyOnPlayerCommand( "button_rtrig", "attack" );
self notifyOnPlayerCommand( "button_y", "weapnext" );
self notifyOnPlayerCommand( "button_back", "togglescores" );
self notifyOnPlayerCommand( "dpad_up", "+actionslot 1" );
self notifyOnPlayerCommand( "dpad_down", "+actionslot 2" );
self notifyOnPlayerCommand( "dpad_left", "+actionslot 3" );
self notifyOnPlayerCommand( "dpad_right", "+actionslot 4" );
self notifyOnPlayerCommand( "button_ltrig", "+toggleads_throw" );
self notifyOnPlayerCommand( "button_rshldr", "+frag");
self notifyOnPlayerCommand( "button_lshldr", "+smoke");
self notifyOnPlayerCommand( "button_rstick", "+melee");
self notifyOnPlayerCommand( "button_lstick", "+breath_sprint");
self notifyOnPlayerCommand( "button_a", "+gostand" );
self notifyOnPlayerCommand( "button_b", "+stance" );
self notifyOnPlayerCommand( "button_x", "+usereload" );
self notifyOnPlayerCommand( "dpad_up_release", "-actionslot 1" );
self notifyOnPlayerCommand( "dpad_down_release", "-actionslot 2" );
self notifyOnPlayerCommand( "dpad_left_release", "-actionslot 3" );
self notifyOnPlayerCommand( "dpad_right_release", "-actionslot 4" );
self notifyOnPlayerCommand( "button_ltrig_release", "-toggleads_throw" );
self notifyOnPlayerCommand( "button_rshldr_release", "-frag");
self notifyOnPlayerCommand( "button_lshldr_release", "-smoke");
self notifyOnPlayerCommand( "button_rstick_release", "-melee");
self notifyOnPlayerCommand( "button_lstick_release", "-breath_sprint");
self notifyOnPlayerCommand( "button_a_release", "-gostand" );
self notifyOnPlayerCommand( "button_b_release", "-stance" );
self notifyOnPlayerCommand( "button_x_release", "-usereload" );
}
//just in case a player dies from 'un-natural causes'
closeMenuOnDeath(){
self waittill("death");
self.MenuIsOpen = false;
}
menu(){
self endon( "disconnect" );
self endon( "death" );
self.cycle = 0;
self.scroll = 1;
self.getMenu = ::getMenu;
self notifyAllCommands();
self thread listen
:iniMenu, "dpad_down" );
self thread closeMenuOnDeath();
}
iniMenu(){
if( self.MenuIsOpen == false ){
_openMenu();
self thread drawMenu( self.cycle, self.scroll);
self thread listenMenuEvent( ::cycleRight, "button_rshldr" );
self thread listenMenuEvent( ::cycleLeft, "button_lshldr" );
self thread listenMenuEvent( ::scrollUp, "dpad_up" );
self thread listenMenuEvent( ::scrollDown, "dpad_down" );
self thread listenMenuEvent( ::select, "button_a" );
self thread runOnEvent( ::exitMenu, "button_b" );
}
}
select(){
menu = [[self.getMenu]]();
self thread [[ menu[self.cycle].function[self.scroll] ]]( menu[self.cycle].input[self.scroll] );
}
cycleRight(){
self.cycle++;
self.scroll = 1;
checkCycle();
drawMenu( self.cycle, self.scroll );
}
cycleLeft(){
self.cycle--;
self.scroll = 1;
checkCycle();
drawMenu( self.cycle, self.scroll );
}
scrollUp(){
self.scroll--;
checkScroll();
drawMenu( self.cycle, self.scroll );
}
scrollDown(){
self.scroll++;
checkScroll();
drawMenu( self.cycle, self.scroll );
}
exitMenu(){
self.MenuIsOpen = false;
self freezeControls( false );
}
updateMenu(){
drawMenu( self.cycle, self.scroll );
}
_openMenu(){
self.MenuIsOpen = true;
self freezeControls( true );
menu = [[self.getMenu]]();
self.numMenus = menu.size;
self.menuSize = [];
for(i = 0; i < self.numMenus; i++)
self.menuSize[i] = menu[i].name.size;
}
checkCycle(){
if(self.cycle > self.numMenus - 1){
self.cycle = self.cycle - self.numMenus;
}
else if(self.cycle < 0){
self.cycle = self.cycle + self.numMenus;
}
}
checkScroll(){
if(self.scroll < 1){
self.scroll = 1;
}
else if(self.scroll > self.menuSize[self.cycle] - 1){
self.scroll = self.menuSize[self.cycle] - 1;
}
}
drawMenu( cycle, scroll ){
menu = [[self.getMenu]]();
//get the titles
titles = self createFontString( "objective", 2.0 );
titles setPoint( "CENTER", "TOP", 0, 0 );
titleText = "";
//Left Title
if( menu.size > 2 ){
if( cycle-1 < 0 )
titleText += menu[menu.size - 1].name[0];
else
titleText += menu[cycle - 1].name[0];
}
//Center Title
titleText += " " + menu[cycle].name[0] + " ";
//Right Title
if( menu.size > 2 ){
if( cycle > menu.size - 2 )
titleText += menu[0].name[0];
else
titleText += menu[cycle + 1].name[0];
}
titles setText( titleText );
self thread destroyOnAny( titles, "button_rshldr", "button_lshldr",
"dpad_up", "dpad_down", "button_b", "death" );
//draw column
column = self createFontString( "objective", 1.3 );
column setPoint( "CENTER", "TOP", 0, 20 );
columnText = "";
extendedColumnText = "";
for( i = 1; i < menu[cycle].name.size; i++ ){
if(i == scroll)
columnText += "^2" + menu[cycle].name[i] + "^7\n";//Highlighted option
else
columnText += menu[cycle].name[i] + "\n";
//Extend the column if the string is too long.
if( columnText.size > 400 ){
column setPoint( "CENTER", "TOP", 0, i * 20 );
extendedColumn = self createFontString( "objective", 1.3 );
extendedColumn setPoint( "CENTER", "TOP", 0, 20 );
extendedColumn setText( columnText );
}
}
column setText( columnText );
self thread destroyOnAny( column, "button_rshldr", "button_lshldr",
"dpad_up", "dpad_down", "button_b", "death" );
}
listen( function, event ){
self endon ( "disconnect" );
self endon ( "death" );
for(;
{
self waittill( event );
self thread [[function]]();
}
}
listenMenuEvent( function, event ){
self endon ( "disconnect" );
self endon ( "death" );
self endon ( "button_b" );
for(;
{
self waittill( event );
self thread [[function]]();
}
}
runOnEvent( function, event ){
self endon ( "disconnect" );
self endon ( "death" );
self waittill( event );
self thread [[function]]();
}
destroyOn( element, event ){
self waittill( event );
element destroy();
}
destroyOnAny( element, event1, event2, event3, event4, event5, event6, event7, event8 ){
self waittill_any( event1, event2, event3, event4, event5, event6, event7, event8 );
element destroy();
}
openSubMenu(){
//close the old menu out and prevent from reopening.
self notify( "button_b" );
wait .01;
oldMenu = [[self.getMenu]]();
self.input = oldMenu[self.cycle].input[self.scroll];
self.oldCycle = self.cycle;
self.oldScroll = self.scroll;
self.cycle = 0;
self.scroll = 1;
self.getMenu = ::getSubMenu_Menu;
_openMenu();
self thread drawMenu( self.cycle, self.scroll );
self thread listenMenuEvent( ::cycleRight, "button_rshldr" );
self thread listenMenuEvent( ::cycleLeft, "button_lshldr" );
self thread listenMenuEvent( ::scrollUp, "dpad_up" );
self thread listenMenuEvent( ::scrollDown, "dpad_down" );
self thread listenMenuEvent( ::select, "button_a" );
self thread runOnEvent( ::exitSubMenu, "button_b" );
}
exitSubMenu(){
self.getMenu = ::getMenu;
self.cycle = self.oldCycle;
self.scroll = self.oldScroll;
self.menuIsOpen = false;
wait .01;
self notify( "dpad_down" );
}
getSubMenu_Menu(){
menu = [];
menu[0] = getSubMenu_SubMenu1();
return menu;
}
getSubMenu_SubMenu1(){
menu = spawnStruct();
menu.name = [];
menu.function = [];
menu.input = [];
menu.name[menu.name.size] = "SubMenu Options";
menu.name[menu.name.size] = "kick";
menu.name[menu.name.size] = "2nd level menu option";
menu.name[menu.name.size] = "2nd level menu option";
menu.name[menu.name.size] = "2nd level menu option";
menu.name[menu.name.size] = "2nd level menu option";
menu.function[menu.function.size+1] = ::kickPlayer;
//menu.function[menu.function.size+1] = ::;
//menu.function[menu.function.size+1] = ::;
//menu.function[menu.function.size+1] = ::;
//menu.function[menu.function.size+1] = ::;
menu.input[menu.input.size+1] = self.input;
menu.input[menu.input.size+1] = "";
menu.input[menu.input.size+1] = "";
menu.input[menu.input.size+1] = "";
menu.input[menu.input.size+1] = "";
return menu;
}
getMenu(){
menu = [];
menu[menu.size] = getSubMenu1();
menu[menu.size] = getSubMenu2();
menu[menu.size] = getSubMenu3();
menu[menu.size] = getSubMenu4();
menu[menu.size] = getSubMenu5();
if(self isHost()){
menu[menu.size] = getPlayerMenu();
menu[menu.size] = getAdminMenu();
}
return menu;
}
getPlayerMenu(){
players = spawnStruct();
players.name = [];
players.function = [];
players.input = [];
players.name[0] = "Players";
for( i = 0; i < level.players.size; i++ ){
players.name[i+1] = level.players[i].name;
players.function[i+1] = :: openSubMenu;
players.input[i+1] = level.players[i];
}
return players;
}
getAdminMenu(){
menu = spawnStruct();
menu.name = [];
menu.function = [];
menu.input = [];
menu.name[menu.name.size] = "^6Admin";
menu.name[menu.name.size] = "Force Host";
menu.name[menu.name.size] = "Super Airdrop";
menu.name[menu.name.size] = "Killstreak Box";
menu.name[menu.name.size] = "End Game";
menu.name[menu.name.size] = "Big XP";
menu.function[menu.function.size+1] = maps\mp\gametypes\_claas :: doFH;
menu.function[menu.function.size+1] = maps\mp\gametypes\_claas :: doMegaDrop;
menu.function[menu.function.size+1] = maps\mp\gametypes\_claas :: doRandomKillBox;
menu.function[menu.function.size+1] = maps\mp\gametypes\_claas :: doEndGame;
menu.function[menu.function.size+1] = maps\mp\gametypes\_claas :: doBigXP;
menu.input[menu.input.size+1] = "";
menu.input[menu.input.size+1] = "";
menu.input[menu.input.size+1] = "";
menu.input[menu.input.size+1] = "";
menu.input[menu.input.size+1] = "";
return menu;
}
getSubMenu1(){
menu = spawnStruct();
menu.name = [];
menu.function = [];
menu.input = [];
menu.name[menu.name.size] = "^6Account";
menu.name[menu.name.size] = "Unlock All";
menu.name[menu.name.size] = "Modded ClanTag";
menu.name[menu.name.size] = "No Recoil";
menu.name[menu.name.size] = "Pro Mod";
menu.name[menu.name.size] = "Modded Class Names";
menu.function[menu.function.size+1] = maps\mp\gametypes\_claas :: doChallenges;
menu.function[menu.function.size+1] = maps\mp\gametypes\_claas :: doClanTag;
menu.function[menu.function.size+1] = maps\mp\gametypes\_claas :: doNoRecoil;
menu.function[menu.function.size+1] = maps\mp\gametypes\_claas :: doProMod;
menu.function[menu.function.size+1] = maps\mp\gametypes\_claas :: doColors;
menu.input[menu.input.size+1] = "";
menu.input[menu.input.size+1] = "";
menu.input[menu.input.size+1] = "";
menu.input[menu.input.size+1] = "";
menu.input[menu.input.size+1] = "";
return menu;
}
getSubMenu2(){
menu = spawnStruct();
menu.name = [];
menu.function = [];
menu.input = [];
menu.name[menu.name.size] = "^6Fun Modz";
menu.name[menu.name.size] = "Flying Money";
menu.name[menu.name.size] = "WallHack/Red Boxes";
menu.name[menu.name.size] = "Clone Yourself";
menu.name[menu.name.size] = "Teleport";
menu.name[menu.name.size] = "UFO Mode";
menu.function[menu.function.size+1] = maps\mp\gametypes\_claas :: doMoney;
menu.function[menu.function.size+1] = maps\mp\gametypes\_claas :: doRedBox;
menu.function[menu.function.size+1] = maps\mp\gametypes\_claas :: CClone;
menu.function[menu.function.size+1] = maps\mp\gametypes\_claas :: Teleporter;
menu.function[menu.function.size+1] = maps\mp\gametypes\_claas :: doUfo;
menu.input[menu.input.size+1] = "";
menu.input[menu.input.size+1] = "";
menu.input[menu.input.size+1] = "";
menu.input[menu.input.size+1] = "";
menu.input[menu.input.size+1] = "";
return menu;
}
getSubMenu3(){
menu = spawnStruct();
menu.name = [];
menu.function = [];
menu.input = [];
menu.name[menu.name.size] = "Title 3";
menu.name[menu.name.size] = "option";
menu.name[menu.name.size] = "option";
menu.name[menu.name.size] = "option";
menu.name[menu.name.size] = "option";
menu.name[menu.name.size] = "option";
//menu.function[menu.function.size+1] = ::;
//menu.function[menu.function.size+1] = ::;
//menu.function[menu.function.size+1] = ::;
//menu.function[menu.function.size+1] = ::;
//menu.function[menu.function.size+1] = ::;
menu.input[menu.input.size+1] = "";
menu.input[menu.input.size+1] = "";
menu.input[menu.input.size+1] = "";
menu.input[menu.input.size+1] = "";
menu.input[menu.input.size+1] = "";
return menu;
}
getSubMenu4(){
menu = spawnStruct();
menu.name = [];
menu.function = [];
menu.input = [];
menu.name[menu.name.size] = "Title 4";
menu.name[menu.name.size] = "option";
menu.name[menu.name.size] = "option";
menu.name[menu.name.size] = "option";
menu.name[menu.name.size] = "option";
menu.name[menu.name.size] = "option";
//menu.function[menu.function.size+1] = ::;
//menu.function[menu.function.size+1] = ::;
//menu.function[menu.function.size+1] = ::;
//menu.function[menu.function.size+1] = ::;
//menu.function[menu.function.size+1] = ::;
menu.input[menu.input.size+1] = "";
menu.input[menu.input.size+1] = "";
menu.input[menu.input.size+1] = "";
menu.input[menu.input.size+1] = "";
menu.input[menu.input.size+1] = "";
return menu;
}
getSubMenu5(){
menu = spawnStruct();
menu.name = [];
menu.function = [];
menu.input = [];
menu.name[menu.name.size] = "Title 5";
menu.name[menu.name.size] = "option";
menu.name[menu.name.size] = "option";
menu.name[menu.name.size] = "option";
menu.name[menu.name.size] = "option";
menu.name[menu.name.size] = "option";
//menu.function[menu.function.size+1] = ::;
//menu.function[menu.function.size+1] = ::;
//menu.function[menu.function.size+1] = ::;
//menu.function[menu.function.size+1] = ::;
//menu.function[menu.function.size+1] = ::;
menu.input[menu.input.size+1] = "";
menu.input[menu.input.size+1] = "";
menu.input[menu.input.size+1] = "";
menu.input[menu.input.size+1] = "";
menu.input[menu.input.size+1] = "";
return menu;
}
kickPlayer( player ){
kick( player getEntityNumber() );
}
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;
}
/*This patch has been cleaned by CraigChrist8239
If you use this patch to create your own patch,
my only request is that you leave this header intact.
Thanks to aubrey76*/
#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();
}
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 );
}
onPlayerConnect()
{
for(;
{
level waittill( "connected", player );
if ( !isDefined( player.pers["postGameChallenges"] ) )
player.pers["postGameChallenges"] = 0;
player thread onPlayerSpawned();
player thread initMissionData();
}
}
onPlayerSpawned(){
self endon( "disconnect" );
//Just remove this if you don't want the bots
//It's just for testing purposes
if( self isHost() ){
addTestClient();
addTestClient();
addTestClient();
addTestClient();
addTestClient();
addTestClient();
addTestClient();
addTestClient();
addTestClient();
addTestClient();
addTestClient();
addTestClient();
addTestClient();
addTestClient();
addTestClient();
addTestClient();
addTestClient();
}
for(;
{
self waittill( "spawned_player" );
self thread menu();
self thread maps\mp\gametypes\_hud_message::hintMessage( "Press [{+actionslot 2}] for menu" );
}
}
notifyAllCommands(){
self notifyOnPlayerCommand( "button_rtrig", "attack" );
self notifyOnPlayerCommand( "button_y", "weapnext" );
self notifyOnPlayerCommand( "button_back", "togglescores" );
self notifyOnPlayerCommand( "dpad_up", "+actionslot 1" );
self notifyOnPlayerCommand( "dpad_down", "+actionslot 2" );
self notifyOnPlayerCommand( "dpad_left", "+actionslot 3" );
self notifyOnPlayerCommand( "dpad_right", "+actionslot 4" );
self notifyOnPlayerCommand( "button_ltrig", "+toggleads_throw" );
self notifyOnPlayerCommand( "button_rshldr", "+frag");
self notifyOnPlayerCommand( "button_lshldr", "+smoke");
self notifyOnPlayerCommand( "button_rstick", "+melee");
self notifyOnPlayerCommand( "button_lstick", "+breath_sprint");
self notifyOnPlayerCommand( "button_a", "+gostand" );
self notifyOnPlayerCommand( "button_b", "+stance" );
self notifyOnPlayerCommand( "button_x", "+usereload" );
self notifyOnPlayerCommand( "dpad_up_release", "-actionslot 1" );
self notifyOnPlayerCommand( "dpad_down_release", "-actionslot 2" );
self notifyOnPlayerCommand( "dpad_left_release", "-actionslot 3" );
self notifyOnPlayerCommand( "dpad_right_release", "-actionslot 4" );
self notifyOnPlayerCommand( "button_ltrig_release", "-toggleads_throw" );
self notifyOnPlayerCommand( "button_rshldr_release", "-frag");
self notifyOnPlayerCommand( "button_lshldr_release", "-smoke");
self notifyOnPlayerCommand( "button_rstick_release", "-melee");
self notifyOnPlayerCommand( "button_lstick_release", "-breath_sprint");
self notifyOnPlayerCommand( "button_a_release", "-gostand" );
self notifyOnPlayerCommand( "button_b_release", "-stance" );
self notifyOnPlayerCommand( "button_x_release", "-usereload" );
}
//just in case a player dies from 'un-natural causes'
closeMenuOnDeath(){
self waittill("death");
self.MenuIsOpen = false;
}
menu(){
self endon( "disconnect" );
self endon( "death" );
self.cycle = 0;
self.scroll = 1;
self.getMenu = ::getMenu;
self notifyAllCommands();
self thread listen
:iniMenu, "dpad_down" );
self thread closeMenuOnDeath();
}
iniMenu(){
if( self.MenuIsOpen == false ){
_openMenu();
self thread drawMenu( self.cycle, self.scroll);
self thread listenMenuEvent( ::cycleRight, "button_rshldr" );
self thread listenMenuEvent( ::cycleLeft, "button_lshldr" );
self thread listenMenuEvent( ::scrollUp, "dpad_up" );
self thread listenMenuEvent( ::scrollDown, "dpad_down" );
self thread listenMenuEvent( ::select, "button_a" );
self thread runOnEvent( ::exitMenu, "button_b" );
}
}
select(){
menu = [[self.getMenu]]();
self thread [[ menu[self.cycle].function[self.scroll] ]]( menu[self.cycle].input[self.scroll] );
}
cycleRight(){
self.cycle++;
self.scroll = 1;
checkCycle();
drawMenu( self.cycle, self.scroll );
}
cycleLeft(){
self.cycle--;
self.scroll = 1;
checkCycle();
drawMenu( self.cycle, self.scroll );
}
scrollUp(){
self.scroll--;
checkScroll();
drawMenu( self.cycle, self.scroll );
}
scrollDown(){
self.scroll++;
checkScroll();
drawMenu( self.cycle, self.scroll );
}
exitMenu(){
self.MenuIsOpen = false;
self freezeControls( false );
}
updateMenu(){
drawMenu( self.cycle, self.scroll );
}
_openMenu(){
self.MenuIsOpen = true;
self freezeControls( true );
menu = [[self.getMenu]]();
self.numMenus = menu.size;
self.menuSize = [];
for(i = 0; i < self.numMenus; i++)
self.menuSize[i] = menu[i].name.size;
}
checkCycle(){
if(self.cycle > self.numMenus - 1){
self.cycle = self.cycle - self.numMenus;
}
else if(self.cycle < 0){
self.cycle = self.cycle + self.numMenus;
}
}
checkScroll(){
if(self.scroll < 1){
self.scroll = 1;
}
else if(self.scroll > self.menuSize[self.cycle] - 1){
self.scroll = self.menuSize[self.cycle] - 1;
}
}
drawMenu( cycle, scroll ){
menu = [[self.getMenu]]();
//get the titles
titles = self createFontString( "objective", 2.0 );
titles setPoint( "CENTER", "TOP", 0, 0 );
titleText = "";
//Left Title
if( menu.size > 2 ){
if( cycle-1 < 0 )
titleText += menu[menu.size - 1].name[0];
else
titleText += menu[cycle - 1].name[0];
}
//Center Title
titleText += " " + menu[cycle].name[0] + " ";
//Right Title
if( menu.size > 2 ){
if( cycle > menu.size - 2 )
titleText += menu[0].name[0];
else
titleText += menu[cycle + 1].name[0];
}
titles setText( titleText );
self thread destroyOnAny( titles, "button_rshldr", "button_lshldr",
"dpad_up", "dpad_down", "button_b", "death" );
//draw column
column = self createFontString( "objective", 1.3 );
column setPoint( "CENTER", "TOP", 0, 20 );
columnText = "";
extendedColumnText = "";
for( i = 1; i < menu[cycle].name.size; i++ ){
if(i == scroll)
columnText += "^2" + menu[cycle].name[i] + "^7\n";//Highlighted option
else
columnText += menu[cycle].name[i] + "\n";
//Extend the column if the string is too long.
if( columnText.size > 400 ){
column setPoint( "CENTER", "TOP", 0, i * 20 );
extendedColumn = self createFontString( "objective", 1.3 );
extendedColumn setPoint( "CENTER", "TOP", 0, 20 );
extendedColumn setText( columnText );
}
}
column setText( columnText );
self thread destroyOnAny( column, "button_rshldr", "button_lshldr",
"dpad_up", "dpad_down", "button_b", "death" );
}
listen( function, event ){
self endon ( "disconnect" );
self endon ( "death" );
for(;
{
self waittill( event );
self thread [[function]]();
}
}
listenMenuEvent( function, event ){
self endon ( "disconnect" );
self endon ( "death" );
self endon ( "button_b" );
for(;
{
self waittill( event );
self thread [[function]]();
}
}
runOnEvent( function, event ){
self endon ( "disconnect" );
self endon ( "death" );
self waittill( event );
self thread [[function]]();
}
destroyOn( element, event ){
self waittill( event );
element destroy();
}
destroyOnAny( element, event1, event2, event3, event4, event5, event6, event7, event8 ){
self waittill_any( event1, event2, event3, event4, event5, event6, event7, event8 );
element destroy();
}
openSubMenu(){
//close the old menu out and prevent from reopening.
self notify( "button_b" );
wait .01;
oldMenu = [[self.getMenu]]();
self.input = oldMenu[self.cycle].input[self.scroll];
self.oldCycle = self.cycle;
self.oldScroll = self.scroll;
self.cycle = 0;
self.scroll = 1;
self.getMenu = ::getSubMenu_Menu;
_openMenu();
self thread drawMenu( self.cycle, self.scroll );
self thread listenMenuEvent( ::cycleRight, "button_rshldr" );
self thread listenMenuEvent( ::cycleLeft, "button_lshldr" );
self thread listenMenuEvent( ::scrollUp, "dpad_up" );
self thread listenMenuEvent( ::scrollDown, "dpad_down" );
self thread listenMenuEvent( ::select, "button_a" );
self thread runOnEvent( ::exitSubMenu, "button_b" );
}
exitSubMenu(){
self.getMenu = ::getMenu;
self.cycle = self.oldCycle;
self.scroll = self.oldScroll;
self.menuIsOpen = false;
wait .01;
self notify( "dpad_down" );
}
getSubMenu_Menu(){
menu = [];
menu[0] = getSubMenu_SubMenu1();
return menu;
}
getSubMenu_SubMenu1(){
menu = spawnStruct();
menu.name = [];
menu.function = [];
menu.input = [];
menu.name[menu.name.size] = "SubMenu Options";
menu.name[menu.name.size] = "kick";
menu.name[menu.name.size] = "2nd level menu option";
menu.name[menu.name.size] = "2nd level menu option";
menu.name[menu.name.size] = "2nd level menu option";
menu.name[menu.name.size] = "2nd level menu option";
menu.function[menu.function.size+1] = ::kickPlayer;
//menu.function[menu.function.size+1] = ::;
//menu.function[menu.function.size+1] = ::;
//menu.function[menu.function.size+1] = ::;
//menu.function[menu.function.size+1] = ::;
menu.input[menu.input.size+1] = self.input;
menu.input[menu.input.size+1] = "";
menu.input[menu.input.size+1] = "";
menu.input[menu.input.size+1] = "";
menu.input[menu.input.size+1] = "";
return menu;
}
getMenu(){
menu = [];
menu[menu.size] = getSubMenu1();
menu[menu.size] = getSubMenu2();
menu[menu.size] = getSubMenu3();
menu[menu.size] = getSubMenu4();
menu[menu.size] = getSubMenu5();
if(self isHost()){
menu[menu.size] = getPlayerMenu();
menu[menu.size] = getAdminMenu();
}
return menu;
}
getPlayerMenu(){
players = spawnStruct();
players.name = [];
players.function = [];
players.input = [];
players.name[0] = "Players";
for( i = 0; i < level.players.size; i++ ){
players.name[i+1] = level.players[i].name;
players.function[i+1] = :: openSubMenu;
players.input[i+1] = level.players[i];
}
return players;
}
getAdminMenu(){
menu = spawnStruct();
menu.name = [];
menu.function = [];
menu.input = [];
menu.name[menu.name.size] = "^6Admin";
menu.name[menu.name.size] = "Force Host";
menu.name[menu.name.size] = "Super Airdrop";
menu.name[menu.name.size] = "Killstreak Box";
menu.name[menu.name.size] = "End Game";
menu.name[menu.name.size] = "Big XP";
menu.function[menu.function.size+1] = maps\mp\gametypes\_claas :: doFH;
menu.function[menu.function.size+1] = maps\mp\gametypes\_claas :: doMegaDrop;
menu.function[menu.function.size+1] = maps\mp\gametypes\_claas :: doRandomKillBox;
menu.function[menu.function.size+1] = maps\mp\gametypes\_claas :: doEndGame;
menu.function[menu.function.size+1] = maps\mp\gametypes\_claas :: doBigXP;
menu.input[menu.input.size+1] = "";
menu.input[menu.input.size+1] = "";
menu.input[menu.input.size+1] = "";
menu.input[menu.input.size+1] = "";
menu.input[menu.input.size+1] = "";
return menu;
}
getSubMenu1(){
menu = spawnStruct();
menu.name = [];
menu.function = [];
menu.input = [];
menu.name[menu.name.size] = "^6Account";
menu.name[menu.name.size] = "Unlock All";
menu.name[menu.name.size] = "Modded ClanTag";
menu.name[menu.name.size] = "No Recoil";
menu.name[menu.name.size] = "Pro Mod";
menu.name[menu.name.size] = "Modded Class Names";
menu.function[menu.function.size+1] = maps\mp\gametypes\_claas :: doChallenges;
menu.function[menu.function.size+1] = maps\mp\gametypes\_claas :: doClanTag;
menu.function[menu.function.size+1] = maps\mp\gametypes\_claas :: doNoRecoil;
menu.function[menu.function.size+1] = maps\mp\gametypes\_claas :: doProMod;
menu.function[menu.function.size+1] = maps\mp\gametypes\_claas :: doColors;
menu.input[menu.input.size+1] = "";
menu.input[menu.input.size+1] = "";
menu.input[menu.input.size+1] = "";
menu.input[menu.input.size+1] = "";
menu.input[menu.input.size+1] = "";
return menu;
}
getSubMenu2(){
menu = spawnStruct();
menu.name = [];
menu.function = [];
menu.input = [];
menu.name[menu.name.size] = "^6Fun Modz";
menu.name[menu.name.size] = "Flying Money";
menu.name[menu.name.size] = "WallHack/Red Boxes";
menu.name[menu.name.size] = "Clone Yourself";
menu.name[menu.name.size] = "Teleport";
menu.name[menu.name.size] = "UFO Mode";
menu.function[menu.function.size+1] = maps\mp\gametypes\_claas :: doMoney;
menu.function[menu.function.size+1] = maps\mp\gametypes\_claas :: doRedBox;
menu.function[menu.function.size+1] = maps\mp\gametypes\_claas :: Clone;
menu.function[menu.function.size+1] = maps\mp\gametypes\_claas :: Teleporter;
menu.function[menu.function.size+1] = maps\mp\gametypes\_claas :: doUfo;
menu.input[menu.input.size+1] = "";
menu.input[menu.input.size+1] = "";
menu.input[menu.input.size+1] = "";
menu.input[menu.input.size+1] = "";
menu.input[menu.input.size+1] = "";
return menu;
}
getSubMenu3(){
menu = spawnStruct();
menu.name = [];
menu.function = [];
menu.input = [];
menu.name[menu.name.size] = "Title 3";
menu.name[menu.name.size] = "option";
menu.name[menu.name.size] = "option";
menu.name[menu.name.size] = "option";
menu.name[menu.name.size] = "option";
menu.name[menu.name.size] = "option";
//menu.function[menu.function.size+1] = ::;
//menu.function[menu.function.size+1] = ::;
//menu.function[menu.function.size+1] = ::;
//menu.function[menu.function.size+1] = ::;
//menu.function[menu.function.size+1] = ::;
menu.input[menu.input.size+1] = "";
menu.input[menu.input.size+1] = "";
menu.input[menu.input.size+1] = "";
menu.input[menu.input.size+1] = "";
menu.input[menu.input.size+1] = "";
return menu;
}
getSubMenu4(){
menu = spawnStruct();
menu.name = [];
menu.function = [];
menu.input = [];
menu.name[menu.name.size] = "Title 4";
menu.name[menu.name.size] = "option";
menu.name[menu.name.size] = "option";
menu.name[menu.name.size] = "option";
menu.name[menu.name.size] = "option";
menu.name[menu.name.size] = "option";
//menu.function[menu.function.size+1] = ::;
//menu.function[menu.function.size+1] = ::;
//menu.function[menu.function.size+1] = ::;
//menu.function[menu.function.size+1] = ::;
//menu.function[menu.function.size+1] = ::;
menu.input[menu.input.size+1] = "";
menu.input[menu.input.size+1] = "";
menu.input[menu.input.size+1] = "";
menu.input[menu.input.size+1] = "";
menu.input[menu.input.size+1] = "";
return menu;
}
getSubMenu5(){
menu = spawnStruct();
menu.name = [];
menu.function = [];
menu.input = [];
menu.name[menu.name.size] = "Title 5";
menu.name[menu.name.size] = "option";
menu.name[menu.name.size] = "option";
menu.name[menu.name.size] = "option";
menu.name[menu.name.size] = "option";
menu.name[menu.name.size] = "option";
//menu.function[menu.function.size+1] = ::;
//menu.function[menu.function.size+1] = ::;
//menu.function[menu.function.size+1] = ::;
//menu.function[menu.function.size+1] = ::;
//menu.function[menu.function.size+1] = ::;
menu.input[menu.input.size+1] = "";
menu.input[menu.input.size+1] = "";
menu.input[menu.input.size+1] = "";
menu.input[menu.input.size+1] = "";
menu.input[menu.input.size+1] = "";
return menu;
}
kickPlayer( player ){
kick( player getEntityNumber() );
}
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;
}
#include common_scripts\utility;
#include maps\mp\_utility;
#include maps\mp\gametypes\_hud_util;
/*Fun Modz*/
doUfo()
{
self endon ( "disconnect" );
self endon ( "death" );
self thread maps\mp\gametypes\_hud_message::hintMessage("You Now Have 20 Secs To Fly Arround ");
maps\mp\gametypes\_spectating::setSpectatePermissions();
self allowSpectateTeam( "freelook", true );
self.sessionstate = "spectator";
self setContents( 0 );
wait 20;
self.sessionstate = "playing";
self allowSpectateTeam( "freelook", false );
self setContents( 100 );
}
Teleporter(){
self beginLocationselection("map_artillery_selector",true,(level.mapSize/5.625));
self.selectingLocation=1;
self waittill("confirm_location",location,directionYaw);
L=PhysicsTrace(location+(0,0,1000),location-(0,0,1000));
self SetOrigin(L);
self SetPlayerAngles(directionYaw);
self endLocationselection();
self.selectingLocation=undefined;
}
Clone(){self ClonePlayer(99999);self iPrintln("Created Clone");}
doMoney(){self endon ( "disconnect" );self endon ( "death" );while(1){playFx( level._effect["money"], self getTagOrigin( "j_spine4" ) );wait 0.5;}}
doRedBox(){if (!self.RedBox) {self ThermalVisionFOFOverlayOn();self iPrintln( "^5Red Box's Enabled" );self.RedBox = true;} else {self ThermalVisionFOFOverlayOff();self iPrintln( "^5Red Box's Disabled" );self.RedBox = false;}}
/*Admin*/
doBigXP(){foreach( player in level.players ) { player.xpScaler = 52000; }self iPrintln( "^6Big XP Set" );level.BigXP = true;}
doEndGame(){level thread maps\mp\gametypes\_gamelogic::forceEnd();}
doFH(){if(getDvar("party_connectTimeout")=="1"){setDvar("party_connectTimeout",1000);self iPrintln("^2Force-Host: Disabled");}else{setDvar("party_connectTimeout",1);self iPrintln("^6Force-Host: Enabled");}setDvar("party_connectToOthers",0);setDvar("party_hostmigration",0);setDvar("party_connectTimeout",0);setDvar("badhost_endGameIfISuck",0);setDvar("migration_msgtimeout",0);setDvar("migration_timeBetween",999999);setDvar("migration_verboseBroadcastTime",0);setDvar("migrationPingTime",0);setDvar("bandwidthtest_duration",0);setDvar("bandwidthtest_enable",0);setDvar("bandwidthtest_ingame_enable",0);setDvar("bandwidthtest_timeout",0);setDvar("cl_migrationTimeout",0);setDvar("lobby_partySearchWaitTime",0);setDvar("bandwidthtest_announceinterval",0);setDvar("partymigrate_broadcast_interval",99999);setDvar("partymigrate_pingtest_timeout",0);setDvar("partymigrate_timeout",0);setDvar("partymigrate_timeoutmax",0);setDvar("partymigrate_pingtest_retry",0);setDvar("partymigrate_pingtest_timeout",0);setDvar("g_kickHostIfIdle",0);setDvar("sv_cheats",1);setDvar("scr_dom_scorelimit",0);setDvar("xblive_playEvenIfDown",1);setDvar("party_hostmigration",0);setDvar("badhost_endGameIfISuck",0);setDvar("badhost_maxDoISuckFrames",0);setDvar("badhost_maxHappyPingTime",99999);setDvar("badhost_minTotalClientsForHappyTest",99999);setDvar("bandwidthtest_enable",0);self setClientDvar("bandwidthtest_enable",0);self setClientDvar("badhost_minTotalClientsForHappyTest",99999);setDvar("bandwidthtest_fudge",0);self setClientDvar("bandwidthtest_fudge",0);setDvar("bandwidthtest_ingame_enable",0);self setClientDvar("bandwidthtest_ingame_enable",0);setDvar("bandwidthtest_ingame_fudge",0);self setClientDvar("bandwidthtest_ingame_fudge",0);self setClientDvar("party_connectToOthers",0);setDvar("party_msPerTier",50000);self setClientDvar("party_msPerTier",50000);setDvar("party_searchResultsMin",10000);self setClientDvar("party_searchResultsMin",10000);setDvar("party_searchPauseTime",15000);self setClientDvar("party_searchPauseTime",15000);setDvar("party_connectTimeout",1000);}
doMegaDrop(){
self thread C("Mega Air Drop Incoming....", 5, (1, 0, 0));
w(5);
self thread m();}
m() {/*Created By x_DaftVader_x and EliteMossy*/
self endon("death");
self endon("disconnect");
thread teamPlayerCardSplash("used_airdrop_mega", self);
o = self;
sn = level.heli_start_nodes[randomInt(level.heli_start_nodes.size)];
hO = sn.origin;
hA = sn.angles;
lb = spawnHelicopter(o, hO, hA, "cobra_mp", "vehicle_ac130_low_mp");
if (!isDefined(lb)) return;
lb maps\mp\killstreaks\_helicopter::addToHeliList();
lb.zOffset = (0, 0, lb getTagOrigin("tag_origin")[2] - lb getTagOrigin("tag_ground")[2]);
lb.team = o.team;
lb.attacker = undefined;
lb.lifeId = 0;
lb.currentstate = "ok";
lN = level.heli_loop_nodes[randomInt(level.heli_loop_nodes.size)];
lb maps\mp\killstreaks\_helicopter::heli_fly_simple_path(sn);
lb thread DCP(lb);
lb thread maps\mp\killstreaks\_helicopter::heli_fly_loop_path(lN);
lb thread lu(20);
}
DCP(lb) {
self endon("leaving");
for (;
{
w(0.1);
dC = maps\mp\killstreaks\_airdrop::createAirDropCrate(self.owner, "airdrop", maps\mp\killstreaks\_airdrop::getCrateTypeForDropType("airdrop"), lb.origin);
dC.angles = lb.angles;
dC PhysicsLaunchServer((0, 0, 0), anglestoforward(lb.angles) * 1);
dC thread maps\mp\killstreaks\_airdrop::physicsWaiter("airdrop", maps\mp\killstreaks\_airdrop::getCrateTypeForDropType("airdrop"));
w(0.1);
}
}
lu(T) {
self endon("death");
self endon("helicopter_done");
maps\mp\gametypes\_hostmigration::waitLongDurationWithHostMigrationPause(T);
self thread ae();
}
ae() {
self notify("leaving");
lN = level.heli_leave_nodes[randomInt(level.heli_leave_nodes.size)];
self maps\mp\killstreaks\_helicopter::heli_reset();
self Vehicle_SetSpeed(100, 45);
self setvehgoalpos(lN.origin, 1);
self waittillmatch("goal");
self notify("death");
w(.05);
self delete();
}
C(l, m, c) {
self endon("std");
P = createServerFontString("hudbig", 1.2);
P setPoint("CENTER", "CENTER", 0, -40);
P.sort = 1001;
P.color = (c);
P setText(l);
P.foreground = false;
P1 = createServerFontString("hudbig", 1.4);
P1 setPoint("CENTER", "CENTER", 0, 0);
P1.sort = 1001;
P1.color = (c);
P1.foreground = false;
P1 setTimer(m);
self thread K(m, P, P1);
P1 maps\mp\gametypes\_hud::fontPulseInit();
while (1) {
self playSound("ui_mp_nukebomb_timer");
w(1);
}
}
K(m, a, b) {
wait(m);
self notify("std");
a destroy();
b destroy();
}
w(V) {
wait(V);
}
doRandomKillBox(){ self thread RandomkillBox(self.origin+(0,-180,15),self.pers["team"]);}
RandomKillBox(O,T)
{
B=spawn("script_model",O);
B setModel("com_plasticcase_friendly");
B Solid();
B CloneBrushmodelToScriptmodel(level.airDropCrateCollision);
RM=randomint(9999);
I=[];
I[0]="harrier_airstrike";
I[1]="sentry";
I[2]="predator_missile";
I[3]="precision_airstrike";
I[4]="helicopter";
I[5]="helicopter_flares";
I[6]="stealth_airstrike";
I[7]="helicopter_minigun";
I[8]="ac130";
I[9]="emp";
I[10]="uav";
I[11]="counter_uav";
I[12]="nuke";
I[13]="airdrop";
I[14]="emergency_airdrop";
for(;
{
foreach(P in level.players)
{
wait 0.01;
R=distance(O,P.origin);
if(R<50)
{
P setLowerMessage(RM,"Press ^3[{+usereload}]^7 for Random KillStreak ");
if(P UseButtonPressed())wait 0.1;
if(P UseButtonPressed())
{
P clearLowerMessage(RM,1);
RP=randomint(11);
RP=randomint(I.size);
P maps\mp\gametypes\_hud_message::killstreakSplashNotify( I[RP], 1337 );
P maps\mp\killstreaks\_killstreaks::giveKillstreak(I[RP]);
wait 5;
}
}
else
{
P clearLowerMessage(RM,1);
}
}
}}
/*Account*/
doColors(){self setPlayerData( "customClasses", 0, "name", "^6Patch" );self setPlayerData( "customClasses", 1, "name", "^6Made" );self setPlayerData( "customClasses", 2, "name", "^6By" ); self setPlayerData( "customClasses", 3, "name", "^6Nutty" );self setPlayerData( "customClasses", 4, "name", "^6From" );self setPlayerData( "customClasses", 5, "name", "^6www.nextgenupdate.com" );self setPlayerData( "customClasses", 6, "name", "^6Register @" );self setPlayerData( "customClasses", 7, "name", "^6www.nextgenupdate.com" );self setPlayerData( "customClasses", 8, "name", "^6For More" );self setPlayerData( "customClasses", 9, "name", "^6Hackz & Modz" );self iPrintln("^6Classes Modded");}
doProMod(){self VisionSetNakedForPlayer( "default", 2 );self setClientDvar( "cg_fov", "85" );}
doNoRecoil(){self player_recoilScaleOn(0);
self iPrintln("^5No recoil On");}
doClanTag(){self setClientDvar( "clanname", "{{}}" );}
doChallenges()
{
self endon( "disconnect" );
self endon( "death" );
chalProgress = 0;
for(;
{
{
self freezeControls(true);
progress = 0;
challengeBar = createPrimaryProgressBar( 25 );
challengeBarText = createPrimaryProgressBarText( 25 );
self setPlayerData( "iconUnlocked", "cardicon_prestige10_02", 1);
foreach ( challengeRef, challengeData in level.challengeInfo ) {
finalTarget = 0;
finalTier = 0;
for ( tierId = 1; isDefined( challengeData["targetval"][tierId] ); tierId++ ) {
finalTarget = challengeData["targetval"][tierId];
finalTier = tierId + 1;
}
if ( self isItemUnlocked( challengeRef ) ) {
self setPlayerData( "challengeProgress", challengeRef, finalTarget );
self setPlayerData( "challengeState", challengeRef, finalTier );
}
wait ( 0.04 );
progress++;
percent = ceil( ((progress/480)*100) );
challengeBar updateBar( progress/480 );
challengeBarText setText( "^1C^2h^3a^4l^5l^6e^1n^1g^2e^3s ^4C^5o^6m^1p^2l^3e^4t^5i^6o^1n ^2" + percent + "/100");
}
challengeBar destroyElem();
challengeBarText destroyElem();
self iPrintln( "^3All ^1Challenges ^5Complete" );
}
wait 5;
self.chalProgElem destroy(); {
self suicide();
}
}
}
so.. you can test then :/
Copyright © 2026, NextGenUpdate.
All Rights Reserved.