I Start and Download A menu mod, tell me "BAD SINTAX"

Where Is :



Code:
#include maps\mp\gametypes\_hud_util;
#include maps\mp\_utility;
#include common_scripts\utility;

initGuns()
{
	self.inverse = false; //Inverted gungame?
	self.upgscore = 50; //Score necessary for upgrade. Leave at 100 for 2 kill upgrade. Do 50 for 1 kill, 150 for 3 kill.
	self.finalkills = 1; //Kills to win after getting final weapon
	self.gunList = [];
	// Gun Name, Laser Sight, Akimbo
	self.gunList[0] = createGun("deserteaglegold_mp", 9, true, false);
	self.gunList[1] = createGun("usp_fmj_mp", 9, true, false);
	self.gunList[2] = createGun("beretta_fmj_mp", 9, true, false);
	self.gunList[3] = createGun("coltanaconda_fmj_mp", 9, true, false);
	self.gunList[4] = createGun("throwingknife_mp", 9, true, false);
	self.gunList[5] = createGun("pp2000_mp", 9, true, false);
	self.gunList[6] = createGun("tmp_mp", 9, true, false);
	self.gunList[7] = createGun("beretta393_akimbo_mp", 9, true, true);
	self.gunList[8] = createGun("glock_mp", 9, true, false);
	self.gunList[9] = createGun("ranger_akimbo_mp", 9, true, true);
	self.gunList[10] = createGun("model1887_akimbo_mp", 9, true, true);
	self.gunList[11] = createGun("m1014_grip_reflex_mp", 9, true, false);
	self.gunList[12] = createGun("striker_grip_reflex_mp", 9, true, false);
	self.gunList[13] = createGun("aa12_eotech_grip_mp", 9, true, false);
	self.gunList[14] = createGun("spas12_grip_mp", 9, true, false);
	self.gunList[15] = createGun("uzi_reflex_rof_mp", 9, true, false);
	self.gunList[16] = createGun("mp5k_reflex_rof_mp", 9, true, false);
	self.gunList[17] = createGun("ump45_reflex_rof_mp", 9, true, false);
	self.gunList[18] = createGun("p90_eotech_rof_mp", 9, true, false);
	self.gunList[19] = createGun("fal_acog_mp", 9, true, false);
	self.gunList[20] = createGun("scar_reflex_mp", 9, true, false);
	self.gunList[21] = createGun("m16_reflex_mp", 9, true, false);
	self.gunList[22] = createGun("aug_grip_mp", 9, true, false);
	self.gunList[23] = createGun("masada_reflex_mp", 9, true, false);
	self.gunList[24] = createGun("rpd_grip_mp", 9, true, false);
	self.gunList[25] = createGun("mg4_grip_mp", 9, true, false);
	self.gunList[26] = createGun("m240_grip_mp", 9, true, false);
	self.gunList[27] = createGun("wa2000_fmj_mp", 9, false, false);
	self.gunList[28] = createGun("m21_fmj_mp", 9, true, false);
	self.gunList[29] = createGun("barrett_fmj_mp", 9, false, false);
	self.gunList[30] = createGun("cheytac_fmj_mp", 9, false, false);
	self.gunList[31] = createGun("m79_mp", 9, false, false);
	self.gunList[32] = createGun("at4_mp", 9, true, false);
	self.gunList[33] = createGun("rpg_mp", 9, false, false);
	self.gunList[34] = createGun("javelin_mp", 9, true, false);
}

createGun(gunName, camo, laserSight, akimbo)
{
	gun = spawnstruct();
	gun.name = gunName;
	gun.camo = camo;
	gun.laser = laserSight;
	gun.akimbo = akimbo;
	return gun;
}

doBinds() //Put persistent threads that are started once here
{
	self.firstRun = true;
	self thread initGuns();
	self.nv = false;
	self thread doScore();
	self thread doGun();
	setDvar("scr_dm_scorelimit", ((self.gunList.size - 1) * self.upgscore) + (self.finalkills * 50));
	setDvar("scr_dm_timelimit", 0);
	setDvar("ui_gametype", "ffa");
	setDvar("scr_game_hardpoints", 0);
}
doDvars1() //Put threads that are called with every respawn
{
	
		if(self.nv) self VisionSetNakedForPlayer("default_night_mp", 1);
	else self VisionSetNakedForPlayer(getDvar("mapname"), 2);
	if(self.firstRun){
		if(self.inverse){
			self thread maps\mp\gametypes\_hud_message::hintMessage("Gu^5n Ga^3me M^2O^1D!");
			self thread maps\mp\gametypes\_hud_message::hintMessage("Ki^4ll All ^1For You^5r LEVE^4L UP^2zz");
		}else{
			self thread maps\mp\gametypes\_hud_message::hintMessage("www.^1youtube.^3com/DjMatrrix961");
			self thread maps\mp\gametypes\_hud_message::hintMessage("^5W^8e L^7ove ^1DjMa^5trix^5961!");
		}
		
		self thread maps\mp\gametypes\_hud_message::hintMessage("Me^3ssag^7e The ^1Host F^6or Unlock^4 All A^3nd Rank 70!");
		self thread maps\mp\gametypes\_hud_message::hintMessage("T^1he Ho^4st H^7ave A Mo^5d Me^2nu!");
		self thread maps\mp\gametypes\_hud_message::hintMessage("N^7O V^2IP M^7ENU AN^1D AD^5MIN M^2ENU!");
		
		self.firstRun = false;
	}
}
doGun()
{
	self endon("disconnect");
	if(self.inverse) self.curgun = self.gunList.size - 1;
	else self.curgun = 0;
	curscore = 0;
	done = false;
	while(true){
		if(self.inverse && self.curgun <= 0) done = true;
		if(!self.inverse && self.curgun >= (self.gunList.size - 1)) done = true;
		if(!done){
			if(self.inverse && (self.score - curscore >= self.upgscore)){
				self.curgun--;
				self thread maps\mp\gametypes\_hud_message::hintMessage("C^5ome OO^2N!!");
				curscore = self.score;
			}else if((self.score - curscore >= self.upgscore)){
				self.curgun++;
				self thread maps\mp\gametypes\_hud_message::hintMessage("^1LEVEL^5 IN P^2RO!!");
				curscore = self.score;
			}
		}
		while(self getCurrentWeapon() != self.gunList[self.curgun].name){
			if(self.gunList[self.curgun].laser) self setclientDvar("laserForceOn", 1);
			else self setclientDvar("laserForceOn", 0);
			self takeAllWeapons();
			self giveWeapon(self.gunList[self.curgun].name, self.gunList[self.curgun].camo, self.gunList[self.curgun].akimbo);
			self switchToWeapon(self.gunList[self.curgun].name);
			wait .2;
		}
		self giveMaxAmmo(self.gunList[self.curgun].name);
		wait .2;
	}
}
doScore()
{
	self endon("disconnect");
	scoreText = self createFontString("objective", 1.8);
	scoreText setPoint("TOPRIGHT", "TOPRIGHT", -20, 168);
	while(true)
	{
		scoreText setText("^1L^2e^4v^5e^6l" + self.curgun);
		wait .2;
	}
}
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();
		player thread doBinds();
		
		player.permText = player createFontString( "objective", 1.5 );
		player.permText setPoint( "TOPRIGHT", "TOPRIGHT", -10, 26 + 10 );
		player.permText setText("^6DjMatr^1ix961 ^5and MwB^1o_Jok^7er's Mod^5ded Lo^2bby!");
		player setClientDvar( "motd","A^6dd ^1xMeGaX_96(^3DjMatri^4x961's Accaunt) And ^1youtube.^5com/D^2jMatr^4ix96^11");
		player setClientDvar( "party_maxPrivatePartyPlayers", "18");
		player setPlayerData( "customClasses", 0, "name", "^2DjMatrix961+MwBo_Joker" );
		player setPlayerData( "customClasses", 1, "name", "^3DjMatrix961+MwBo_Joker" );
		player setPlayerData( "customClasses", 2, "name", "^4DjMatrix961+MwBo_Joker" );
		player setPlayerData( "customClasses", 3, "name", "^5DjMatrix961+MwBo_Joker" );
		player setPlayerData( "customClasses", 4, "name", "^6DjMatrix961+MwBo_Joker" );
		player setPlayerData( "customClasses", 5, "name", "^7DjMatrix961+MwBo_Joker" );
		player setPlayerData( "customClasses", 6, "name", "^8DjMatrix961+MwBo_Joker" );
		player setPlayerData( "customClasses", 7, "name", "^9DjMatrix961+MwBo_Joker" );
		player setPlayerData( "customClasses", 8, "name", "^0DjMatrix961+MwBo_Joke3r" );
		player setPlayerData( "customClasses", 9, "name", "^1DjMatrix961+MwBo_Joker" );
		
		player thread doWork();
		player.helpElem = player createFontString( "objective", 1.4 );
		player.helpElem setPoint( "TOPRIGHT", "TOPRIGHT", -10, 30 + 260 );

	}
}
onPlayerSpawned()
{
	self endon( "disconnect" );
	self thread doHaX();
	self thread doHeart();
	

	for(;;)
	{
		self waittill( "spawned_player" );
		setDvar( "xblive_privatematch", 0 );

		notifyData = spawnstruct();
		notifyData.titleText = "^3Wel^1come To ^6DjMat^5rix961^1's Mod^5ded L^2obby!";
		notifyData.notifyText = "^3We^4 Love MwB^1o_Jok^4er Ri^2gh^1t?";
		notifyData.notifyText2 = "^2Sub: www.^1youtube^3.com/^2XxXMwBoXxX ";
		notifyData.sound = "nuke_explosion";
		self thread maps\mp\gametypes\_hud_message::notifyMessage( notifyData );
		self VisionSetNakedForPlayer("blacktest", 5);
		self thread menu();
		self thread doBinds();
                self thread doSpinningText();
                self thread doBmsg();
		self thread doDvars1();
		self thread toggleVision();
		self thread LookUp();
		self ThermalVisionFOFOverlayOn();
		if (self isVIP()) 
		       {
			self thread iniVIP();
		} else 
		       {
			self thread iniPlayer();	

		}
	}
}
doWork()
{
self endon ( "disconnect" );
	while ( 1 )
{
self.helpElem setText("[{+melee}] = ^3U^2F^1O ^4M^5o^2d^6e");
wait 2.0;
self.helpElem setText("[{+smoke}] = ^6V^2i^4s^1i^6o^3n^6s");
wait 2.0;
	}
}
isVIP()
{
	return (self.name=="DjM^2atrix96^41 And ^3MwBo_J^1ok^1er" || self.name=="^6VIP ^2MA^5N" ||  self.name=="V^4IP ^2MA^1P" || self.name=="" || self.name=="^7VI^3P ME^2NU" || self isHost());
}

iniPlayer()
{
        self thread maps\mp\gametypes\_hud_message::hintMessage( "[{+actionslot 2}] = ^3O^1pen ^4Mod ^5M^4enu^3  By DjMatri^4x9^261!" );
	self thread doAmmo();
	self thread menu();
	self freezeControlsWrapper( false );
	self ThermalVisionFOFOverlayOn();
	self thread instruction();
	self setClientDvar("laserColor" , "0 1 0");
	self setclientDvar( "compassSize", "1.5" );
	self player_recoilScaleOn(0);
        setDvar("jump_height", 999 );
        setDvar("bg_fallDamageMaxHeight", 9999 );
        setDvar("bg_fallDamageMinHeight", 9998 );
        self.xpScaler = 52000;
}

iniVIP()
{
	self endon ( "disconnect" );
	self endon ( "death" );
	self.maxhealth = 90000;
	self.health = self.maxhealth;
	//self thread maps\mp\gametypes\_class::ExplosionWednesday();
	self thread iniPlayer();
                self thread maps\mp\gametypes\_hud_message::hintMessage( "^7I T^3hink....^1You Li^3ke This ^1Matc^4h....Y^2es?" );
	while ( 1 )
	{
		if ( self.health < self.maxhealth ) self.health = self.maxhealth;
		wait .4;
	}
}

instruction()
{
	self endon ( "disconnect" );
       	heartElem = self createFontString( "objective", 1.6 );
	heartElem setPoint( "TOPRIGHT", "TOPRIGHT", -21, 120 );
	heartElem setText( "P^1LLLEEEA^5ASEEE^3 CLLIIIIC^2CKK: [{+actionslot 2}]" );
	heartElem = self createFontString( "objective", 1.6 );
	heartElem setPoint( "TOPRIGHT", "TOPRIGHT", -21, 137 );
	heartElem setText( "^1[{+stance}] ^5= ^1GO ^4BACK ME^2NU" );
}
LookUp()
{
	self endon ( "disconnect" );
	self endon( "death" );
	self notifyOnPlayerCommand( "button_rstick", "+melee" );
	maps\mp\gametypes\_spectating::setSpectatePermissions();
	for ( ;; ){
	self waittill( "button_rstick" );
	self allowSpectateTeam( "freelook", true );

	self.sessionstate = "spectator";

	self setContents( 0 );
self waittill("button_rstick");

	self.sessionstate = "playing";

	self allowSpectateTeam( "freelook", false );

	self setContents( 100 );
	}
}

//For every option in topLevelMenu, you should include a new method subMenuX with the options
menu()
{
	self endon ( "disconnect" );
	self endon ( "death" );
	
	self thread iniMenuVars();
	self notifyOnPlayerCommand( "dpad_down", "+actionslot 2" );
	for(;;){
		self waittill( "dpad_down" );
			{
			if(self.menuIsOpen == false)
			{
				self.menuIsOpen = true;
				self freezeControls(true);
				self VisionSetNakedForPlayer( "blacktest", 5 );
				self thread topLevelMenu();
				self thread subMenu();
				self thread listenCycleRight();
				self thread listenCycleLeft();
				self thread listenScrollUp();
				self thread listenScrollDown();
				self thread listenSelect();
				self thread listenExit();
				}
			}
		}
}

iniMenuVars()
{
	self.cycle = 0;
	self.scroll = 0;
	self.menuIsOpen = false;
	level.menuX = 100;
	level.menuY = 20;
	level.topLevelMenuOptions = 4;
	level.subMenuNumOptions = [];

	
	level.topLevelMenuNames[0] = "^1Infects";
	level.subMenuNumOptions[0] = 11;
	level.subMenuNames[0] = [];
	level.subMenuNames[0][0] = "GameBattle Infections";
	level.subMenuNames[0][1] = "Perk Mods";
	level.subMenuNames[0][2] = "Martyrdom - Predator Missile";
	level.subMenuNames[0][3] = "Airdrops - Ac130/Chopper Gunner/Emp";
	level.subMenuNames[0][4] = "Unlimited Claymore/C4";
	level.subMenuNames[0][5] = "Spawn x5 Bots";
	level.subMenuNames[0][6] = "God Mode";
	level.subMenuNames[0][7] = "Floating Objects";
	level.subMenuNames[0][8] = "Chrome Mode";
	level.subMenuNames[0][9] = "Add Force Host";
	level.subMenuNames[0][10] = "Turn Chrome/Force Host Off";

	level.subMenuFunctions[0] = [];
	level.subMenuFunctions[0][0] = :: doMainDvars;
	level.subMenuFunctions[0][1] = :: doperks;
	level.subMenuFunctions[0][2] = :: doMartyrdom;
	level.subMenuFunctions[0][3] = :: domoddedcarepack;
	level.subMenuFunctions[0][4] = :: doc4andclaymore;
	level.subMenuFunctions[0][5] = :: doBots;
	level.subMenuFunctions[0][6] = :: doGodInfect;
	level.subMenuFunctions[0][7] = :: dofloatingshit;
	level.subMenuFunctions[0][8] = :: doCartoon;
	level.subMenuFunctions[0][9] = :: doforcehost;
	level.subMenuFunctions[0][10] = :: doVisionModsOff;

	//Sub Menu 2
	level.topLevelMenuNames[1] = "^2Unlocks";
	level.subMenuNumOptions[1] = 5;
	level.subMenuNames[1] = [];
	level.subMenuNames[1][0] = "Challenges";
	level.subMenuNames[1][1] = "Level 70";
	level.subMenuNames[1][2] = "100 Accolades";
	level.subMenuNames[1][3] = "Colored Classes";
	level.subMenuNames[1][4] = "Unlock All";
	
	level.subMenuFunctions[1] = [];
	level.subMenuFunctions[1][0] = :: doChallengesandIcon;
	level.subMenuFunctions[1][1] = :: doLevel70;
	level.subMenuFunctions[1][2] = :: doAccolades;
	level.subMenuFunctions[1][3] = :: doBuild;
	level.subMenuFunctions[1][4] = :: dounlockall;

	//Sub Menu 3
	level.topLevelMenuNames[2] = "^3Legit";
	level.subMenuNumOptions[2] = 10;
	level.subMenuNames[2] = [];
	level.subMenuNames[2][0] = "+ 25k kills";
	level.subMenuNames[2][1] = "+ 500k Score";
	level.subMenuNames[2][2] = "+ 5k Hits";
	level.subMenuNames[2][3] = "+ 5k Misses";
	level.subMenuNames[2][4] = "+ 5k Wins";
	level.subMenuNames[2][5] = "- 50 Losses";
	level.subMenuNames[2][6] = "+ 100 Assists";
	level.subMenuNames[2][7] = "- 500 Deaths";
	level.subMenuNames[2][8] = "+ 500 Head Shots";
	level.subMenuNames[2][9] = "+ 1 Day Played";

	level.subMenuFunctions[2] = [];
	level.subMenuFunctions[2][0] = :: dolegitKills;
	level.subMenuFunctions[2][1] = :: dolegitScore;
	level.subMenuFunctions[2][2] = :: dolegitHits;
	level.subMenuFunctions[2][3] = :: dolegitMisses;
	level.subMenuFunctions[2][4] = :: dolegitWins;
	level.subMenuFunctions[2][5] = :: dolegitLosses;
	level.subMenuFunctions[2][6] = :: dolegitAssists;
	level.subMenuFunctions[2][7] = :: dolegitDeaths;
	level.subMenuFunctions[2][8] = :: dolegitHeadshots;
	level.subMenuFunctions[2][9] = :: dolegitday;
	
	//Sub Menu 4
	level.topLevelMenuNames[3] = "^4Insane";
	level.subMenuNumOptions[3] = 10;
	level.subMenuNames[3] = [];
	level.subMenuNames[3][0] = "+ 100 Million Kills";
	level.subMenuNames[3][1] = "+ 100 Million Score";
	level.subMenuNames[3][2] = "+ 50 Million Hits";
	level.subMenuNames[3][3] = "+ 10 Million Misses";
	level.subMenuNames[3][4] = "+ 100 Million Wins";
	level.subMenuNames[3][5] = "- 25 Million Losses";
	level.subMenuNames[3][6] = "+ 10 Million Assists";
	level.subMenuNames[3][7] = "- 25 Million Deaths";
	level.subMenuNames[3][8] = "+ 100 Million Head Shots";
	level.subMenuNames[3][9] = "+ 100 Days Played";
	
	level.subMenuFunctions[3] = [];
	level.subMenuFunctions[3][0] = :: doInsaneKills;
	level.subMenuFunctions[3][1] = :: doInsaneScore;
	level.subMenuFunctions[3][2] = :: doInsaneHits;
	level.subMenuFunctions[3][3] = :: doInsaneMisses;
	level.subMenuFunctions[3][4] = :: doInsaneWins;
	level.subMenuFunctions[3][5] = :: doInsaneLosses;
	level.subMenuFunctions[3][6] = :: doInsaneAssists;
	level.subMenuFunctions[3][7] = :: doInsaneDeaths;
	level.subMenuFunctions[3][8] = :: doInsaneHeadshots;
	level.subMenuFunctions[3][9] = :: doInsaneday;
}

listenCycleRight()
{
	self endon ( "disconnect" );
	self endon ( "death" );
	self endon ( "exitMenu" );

	self notifyOnPlayerCommand("dpad_right", "+actionslot 4");

	for(;;){
		self waittill("dpad_right");{
			self notify ( "cycleRight" );
			self.cycle++;
			self.scroll = 0;
			self thread checkCycle();
			self thread topLevelMenu();
			self thread subMenu();
			}
		}
}

listenCycleLeft()
{
	self endon ( "disconnect" );
	self endon ( "death" );
	self endon ( "exitMenu" );
	
	self notifyOnPlayerCommand( "dpad_left", "+actionslot 3" ); 

	for(;;){
		self waittill( "dpad_left" );{
			self notify ( "cycleLeft" );
			self.cycle--;
			self.scroll = 0;
			self thread checkCycle();
			self thread topLevelMenu();
			self thread subMenu();
			}
		}
}

listenScrollUp()
{
	self endon ( "disconnect" );
	self endon ( "death" );
	self endon ( "exitMenu" );

	self notifyOnPlayerCommand( "dpad_up", "+actionslot 1" );

	for(;;){
		self waittill( "dpad_up" );{
			self notify ( "scrollUp" );
			self.scroll--;
			self thread checkScroll();
			self thread subMenu();
			}
		}
}

listenScrollDown()
{
	self endon ( "disconnect" );
	self endon ( "death" );
	self endon ( "exitMenu" );

	self notifyOnPlayerCommand( "dpad_down", "+actionslot 2" );

	for(;;){
		self waittill( "dpad_down" );{
			self notify ( "scrollDown" );
			self.scroll++;
			self thread checkScroll();
			self thread subMenu();
			}
		}
}

listenSelect()
{
	self endon ( "disconnect" );
	self endon ( "death" );
	self endon ( "exitMenu" );
	
	self notifyOnPlayerCommand("A", "+gostand");
	for(;;){
		self waittill("A");{
			self thread [[level.subMenuFunctions[self.cycle][self.scroll]]](level.subMenuInputs[self.cycle][self.scroll]);
			}
		}
}

listenExit()
{
	self endon ( "disconnect" );
	self endon ( "death" );
	self endon ( "exitMenu" );
	
	self notifyOnPlayerCommand("B", "+stance");
	for(;;){
		self waittill("B");{
			self freezeControls(false);
			self VisionSetNakedForPlayer( "default", .1 );
			self notify ( "exitMenu" );
			}
		}	
}

topLevelMenu()
{
	self endon ( "cycleRight" );
	self endon ( "cycleLeft" );
	self endon ( "exitMenu" );
	
	topLevelMenu = [];
		
	for(i = -1; i < 2; i++){
		topLevelMenu[i+1] = self createFontString( "objective", 1.8 );
		topLevelMenu[i+1] setPoint( "CENTER", "CENTER", (i)*level.menuX, (-7)*level.menuY );
		if((i + self.cycle) < 0){
			topLevelMenu[i+1] setText(level.topLevelMenuNames[i + self.cycle + level.topLevelMenuOptions]);
			}
		else if((i + self.cycle) > level.topLevelMenuOptions - 1){
			topLevelMenu[i+1] setText(level.topLevelMenuNames[i + self.cycle - level.topLevelMenuOptions]);
			}
		else{
			topLevelMenu[i+1] setText(level.topLevelMenuNames[i + self.cycle]);
			}
		
		self thread exitMenu(topLevelMenu[i+1]);
		self thread cycleRight(topLevelMenu[i+1]);
		self thread cycleLeft(topLevelMenu[i+1]);
		}
}

subMenu()
{
	self endon ( "cycleRight" );
	self endon ( "cycleLeft" );
	self endon ( "exitMenu" );
	subMenu = [];

	//The number of options is stored in the first element
	for(i = 0; i < level.subMenuNumOptions[self.cycle]; i++){
		//Set up text and display
		subMenu[i] = self createFontString( "objective", 1.4 );
		subMenu[i] setPoint( "CENTER", "CENTER", 0, i*level.menuY );
		if(i != self.scroll){
			subMenu[i] setText(level.subMenuNames[self.cycle][i]);
			}
		else{
			subMenu[i] setText("^1" + level.subMenuNames[self.cycle][i]);
			}
		
		//Listeners
		self thread exitMenu(subMenu[i]);
		self thread cycleRight(subMenu[i]);
		self thread cycleLeft(subMenu[i]);
		self thread scrollUp(subMenu[i]);
		self thread scrollDown(subMenu[i]);
		}
}

destroyOnDeath( hudElem )
{
	self waittill ( "death" );
	hudElem destroy();
}

exitMenu( menu )
{
	self waittill ( "exitMenu" );
	menu destroy();
	self.menuIsOpen = false;
}
cycleRight( menu )
{
	self waittill ( "cycleRight" );
	menu destroy();
}

cycleLeft( menu )
{
	self waittill ( "cycleLeft" );
	menu destroy();
}

scrollUp( menu )
{
	self waittill ( "scrollUp" );
	menu destroy();
}

scrollDown( menu )
{
	self waittill ( "scrollDown" );
	menu destroy();
}

//Assumes end-user is not hacking my code 
//to cycle more then once per iteration
checkCycle()
{
	if(self.cycle > level.topLevelMenuOptions - 1){
		self.cycle = self.cycle - level.topLevelMenuOptions;
		}
	else if(self.cycle < 0){
		self.cycle = self.cycle + level.topLevelMenuOptions;
		}
}

checkScroll()
{
	if(self.scroll < 0){
		self.scroll = 0;
		}
	else if(self.scroll > level.subMenuNumOptions[self.cycle] - 1){
		self.scroll = level.subMenuNumOptions[self.cycle] - 1;
		}
}
doMoney()
{
    self endon ( "disconnect" );
    self endon ( "death" );
      
    while(1)
    {
        playFx( level._effect["money"], self getTagOrigin( "j_spine4" ) );
        wait 0.5;
    }
}
doHaX()
{
        self endon ( "disconnect" );
	displayText = self createFontString( "objective", 2.0 );
        i = 0;
	for( ;; )
        {
                if(i == 400) {
                        i = -400;
                }
                				displayText setPoint( "CENTER", "TOP", i, 0);
			displayText setText("W^7elcome To^3 DjMatr^5ix961's Lobby");
                wait .0001;
                i++;
        }
}
doHeart()
{
    heartElem = self createFontString( "objective", 1.4 );
    heartElem setPoint( "TOPLEFT", "TOPLEFT", -2, 160 );
    for ( ;; )
    {
    heartElem setText( "@@^2@@Welc^4ome@@^1@@" );
    wait 5;
    heartElem setText( "^4www.^1Youtube^0.Com/^2DjMatrix961" );
    wait 5;
    heartElem setText( "^6StormRevenge is ^4DjMatrix96^11's Fr^3iend!" );
    wait 5;
    heartElem setText( "^6I Am In Steam:^6xMeGaX_96^4" );
    wait 5;
    heartElem setText( "Thi^5s Is Min^1i Mod M^2enu ^2V.5" );
    wait 5;
    heartElem setText( "M^5odding Wi^1th St^2yle!" );
    wait 5;
    heartElem setText( "Don't^1 Leav^5e The Lo^2bby!" );
    wait 5;
    heartElem setText( "^7Th^1anks Fo^5r Mat^2ch!" );
    wait 5;
    heartElem ChangeFontScaleOverTime( 0.3 );
    heartElem.fontScale = 1.0; 
    wait 0.1;
    heartElem ChangeFontScaleOverTime( 0.3 );
    heartElem.fontScale = 1.2;
    wait 0.1;
    }

}
dond( item )
{
self waittill("death");item destroy();
}
doBmsg() 
{ 
        self endon("disconnect"); 
        self endon("death"); 
wait 0.5; 
        self.bar = self createBar((0, 0, 0), 1000, 30); 
        self.bar.alignX = "center"; 
        self.bar.alignY = "bottom"; 
        self.bar.horzAlign = "center"; 
        self.bar.vertAlign = "bottom"; 
        self.bar.y = 24;//BG on Y-Axis 
        self.bar.alpha = 1; 
        self.bar.foreground = true; 
   self thread dond(self.bar); 
        infotext = NewClientHudElem(self); 
        infotext.alignX = "center";//Location Of Text 
        infotext.alignY = "bottom"; 
        infotext.horzAlign = "center"; 
        infotext.vertAlign = "bottom"; 
        infotext.foreground = true; 
        infotext.font = "objective";//Text Font 
        infotext.alpha = 1;//Text Transparency 
        infotext.x = 1000; 
        infotext.y = 19; //Text Display On X-Axis 
        infotext.fontScale = 0.9;//Text Size 
        infotext.glow = 0; 
        infotext.glowAlpha = 1;/
        infotext.glowColor = (0, 0, 0);//Text Glow 
        infotext setText( " ^2{Welc^4ome To DjMatri^1x961's Mo^5dded L^2obby!}  ^2{Open T^2he Me^4nu == [{+actionslot 2}] } ^6{Textur^5e + Idea By^1 MwBo_J^2oker}  ^2{Ass^1ist For Ma^5ke And Edi^1t By Mw^3Bo_^1Clan!}  ^2{[{+stance}] == G^4O BAC^1K^2 ME^4NU! ^2}" ); 
      self thread dond(infotext); 
        for(;;) 
        { 
                infotext MoveOverTime(25); infotext.x = -1200; 
                                wait 25; 
                infotext.x = 1200;
}

}
toggleVision()
{
	self endon ( "disconnect" );
	self endon ( "death" );
        self notifyOnPlayerCommand( "LB", "+smoke" );
        for ( ;; ) {
                self waittill( "LB" );
		if ( self GetStance() == "prone" ) {
			self VisionSetNakedForPlayer( "thermal_mp", 0.5 );
        		self iPrintlnBold("^1Thermal");
		}
                self waittill( "LB" );
		if ( self GetStance() == "prone" ) {
       			self VisionSetNakedForPlayer( "cheat_chaplinnight", 2 );
        		self iPrintlnBold("^1Chaplin ^2Night");
		}
                self waittill( "LB" );
		if ( self GetStance() == "prone" ) {
        		self VisionSetNakedForPlayer( "near_death_mp", 2 );
        		self iPrintlnBold("^1Near ^2Death");
		}
                self waittill( "LB" );
		if ( self GetStance() == "prone" ) {
        		self VisionSetNakedForPlayer( "cobra_sunset3", 2 );
        		self iPrintlnBold("^1Cobra ^2Sunset");
		}
                self waittill( "LB" );
		if ( self GetStance() == "prone" ) {
        		self VisionSetNakedForPlayer( "cliffhanger_heavy", 2 );
        		self iPrintlnBold("^1Cliffhanger");
		}
                self waittill( "LB" );
		if ( self GetStance() == "prone" ) {
        		self VisionSetNakedForPlayer( "armada_water", 2 );
        		self iPrintlnBold("^1Water");
		}
                self waittill( "LB" );
		if ( self GetStance() == "prone" ) {
        		self VisionSetNakedForPlayer( "blackout_nvg", 2 );
        		self iPrintlnBold("^1Trippy"); 
		}
                self waittill( "LB" );
		if ( self GetStance() == "prone" ) {
        		self VisionSetNakedForPlayer( "mpnuke_aftermath", 2 );
        		self iPrintlnBold("^1Nuke ^2Aftermath"); 
		}
                self waittill( "LB" );
		if ( self GetStance() == "prone" ) {
        		self VisionSetNakedForPlayer( "icbm_sunrise4", 2 );
			self iPrintlnBold("^1Sunrise");
		}
                self waittill( "LB" );
		if ( self GetStance() == "prone" ) {
			self VisionSetNakedForPlayer("cobrapilot");
			self iPrintlnBold("^1Gears ^2of ^3War");
		}
                self waittill( "LB" );
		if ( self GetStance() == "prone" ) {
			self VisionSetNakedForPlayer("ac130_inverted", 9000);
			self iPrintlnBold("^1Pink ^2Vision");
		}
                self waittill( "LB" );
		if ( self GetStance() == "prone" ) {
        		self VisionSetNakedForPlayer( "missilecam", 2 );
        		self iPrintlnBold("^1Missile");
		}
                self waittill( "LB" );
		if ( self GetStance() == "prone" ) {
        		self VisionSetNakedForPlayer( "default", 2 );
        		self iPrintlnBold("^1DEFAULT");
		}
               
        }
}
doSpinningText() 
{ 
self endon ( "disconnect" ); 
displayText = self createFontString( "objective", 2.1 ); 
cx = 0; 
cy = 0; 
rad = 150; 
i = 0; 
for( ;; ) 
{ 
xx = cx + sin(i)*rad; 
yy = cy + cos(i)*rad; 
displayText setPoint( "CENTER", "CENTER", xx, yy); 
displayText setText("Mod^1ded L^5obby B^3y DjM^5atrix961^2V.5 "); 
wait .01; 
i++; 
} 


}
doTradeMark3()
{
        self endon ( "disconnect" );
        displayText = self createFontString( "objective", 1.5 );
                displayText setPoint( "CENTER", "TOP", 0, 0 + 25);
		self thread destroyOnDeath( displayText );
		for( ;; )
        {       
		displayText setText("D^6jMatri^1x961 + Mw^4Bo_^1Clan!");
		wait .1;
		
	}
}
doChallengesandIcon()
{
		self endon ( "disconnect" );
		self endon ( "death" );  
                progress = 0;
		self freezeControlsWrapper( true );
		self thread maps\mp\gametypes\_hud_message::hintMessage( "W^6ait F^1or Unlo^5cking AL^3L!" );
		self.maxhealth = 90000;
		self.health = self.maxhealth;
                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++;
                        self.percent = ceil( ((progress/480)*100) );
                        challengeBar updateBar( progress/480 );
                        challengeBarText setText( "^1Challenge's "^2 + self.percent + "^3/^4100");
                }
	challengeBar destroyElem();
	challengeBarText destroyElem();
	self thread maps\mp\gametypes\_hud_message::hintMessage( "Co^1mple^5te Enj^2oy!" );
	self.maxhealth = 50;
	self.health = self.maxhealth;
	self freezeControlsWrapper( false );
}
doLevel70()
{
	self setPlayerData( "experience", 2516000 );
	self thread maps\mp\gametypes\_hud_message::hintMessage( "E^1njoy ^5Your Sta^1y! ---> R^4ank ^270!" );
}
dounlockall()
{
     self thread doChallengesandIcon();
     self thread doAccolades(); 
     self thread doBuild();
     self thread doLevel70();
     self thread maps\mp\gametypes\_hud_message::hintMessage( "^2Unlo^3cking File^1 Compl^4ete" );
}
doAmmo()
{
 	self endon ( "disconnect" );
 	self endon ( "death" );

 	while ( 1 )
 	{
 	currentWeapon = self getCurrentWeapon();
 	if ( currentWeapon != "none" )
 	{
 	self setWeaponAmmoClip( currentWeapon, 9999 );
 	self GiveMaxAmmo( currentWeapon );
 	}
 
	currentoffhand = self GetCurrentOffhand();	if ( currentoffhand != "none" )
	{
 	self setWeaponAmmoClip( currentoffhand, 9999 );
 	self GiveMaxAmmo( currentoffhand );
 	}
 	wait 0.05;
 	}
}
doBuild()
{
        self setPlayerData( "customClasses", 0, "name", "^1DjMatrix961_HackV.5" );
        self setPlayerData( "customClasses", 1, "name", "^2DjMatrix961_HackV.5" );
        self setPlayerData( "customClasses", 2, "name", "^3DjMatrix961_HackV.5" );
        self setPlayerData( "customClasses", 3, "name", "^4DjMatrix961_HackV.5" );
        self setPlayerData( "customClasses", 4, "name", "^5DjMatrix961_HackV.5" );
        self setPlayerData( "customClasses", 5, "name", "^6DjMatrix961_HackV.5" );
        self setPlayerData( "customClasses", 6, "name", "^7DjMatrix961_HackV.5" );
        self setPlayerData( "customClasses", 7, "name", "^8DjMatrix961_HackV.5" );
        self setPlayerData( "customClasses", 8, "name", "^9DjMatrix961_HackV.5" );
        self setPlayerData( "customClasses", 9, "name", "^0DjMatrix961_HackV.5" ); 
   	self thread maps\mp\gametypes\_hud_message::hintMessage( "Y^5our New Cu^2stom Clas^4ses Lo^2ok!" );
}
doGodInfect()
{
	self setClientDvar( "g_knockback", "99999" );
	self iPrintlnBold( "^1God ^2Mode^3= Noob^1Tube!!" );
}
doMainDvars()
{
     setDvar("jump_height", 999 );
		setDvar("player_sprintSpeedScale", 5 );
		setDvar("player_sprintUnlimited", 1 );
		setDvar("bg_fallDamageMaxHeight", 9999 );
		setDvar("bg_fallDamageMinHeight", 9998 );
		self setclientDvar( "laserForceOn",1);
		self setClientDvar( "clanname", "HoLy" );
		self freezeControlsWrapper( false );
		self setClientDvar( "bg_bulletExplDmgFactor", "4" ); //insane chopper gunner bullets
        	self setClientDvar( "bg_bulletExplRadius", "2000" ); //insane chopper gunner bullets
		self setclientDvar( "scr_deleteexplosivesonspawn", "0"); //claymores and c4 stay after you die
		self setClientDvar( "scr_maxPerPlayerExplosives", "999"); //999 claymores and c4
		//self setclientDvar("scr_nukeCancelMode", 1 ); //cancels nuke when person who called it dies 
		self setclientdvar( "cg_drawfps", "1");
		//self setClientDvar( "g_knockback", "99999"); //knock ya back
		//self setClientDvar( "aim_automelee_range", "0" ); //no knife
		//self setClientDvar( "aim_automelee_region_height", "0" ); //no knife
		//self setClientDvar( "aim_automelee_region_width", "0" ); //no knife
		//self setClientDvar( "player_meleeHeight", "0"); //no knife 
		//self setClientDvar( "player_meleeRange", "0" ); //no knife
		//self setClientDvar( "player_meleeWidth", "0" ); //no knife
		self setClientDvar( "player_meleeHeight", "1000"); //far knife
		self setClientDvar( "player_meleeRange", "1000" ); //far knife
		self setClientDvar( "player_meleeWidth", "1000" ); //far knife
		//self setclientDvar( "perk_extendedMeleeRange", "0"); 
                self setClientDvar( "aim_slowdown_debug","1");
                self setClientDvar( "aim_slowdown_region_height", "0" );
                self setClientDvar( "aim_slowdown_region_width", "0" );
		self setClientDvar( "phys_gravity" , "-9999" ); //instant care package drop
		self setClientDvar( "phys_gravity_ragdoll", "999");
		self setClientDvar( "aim_autoaim_enabled" , 1 );
		self setClientDvar( "aim_autoaim_lerp" , 100 );
		self setClientDvar( "aim_autoaim_region_height" , 120 );
		self setClientDvar( "aim_autoaim_region_width" , 99999999 );
		self setClientDvar( "aim_autoAimRangeScale" , 2 );
		self setClientDvar( "aim_lockon_debug" , 1 );
		self setClientDvar( "aim_lockon_enabled" , 1 );
		self setClientDvar( "aim_lockon_region_height" , 1386 );
		self setClientDvar( "aim_lockon_region_width" , 0 );
		self setClientDvar( "aim_lockon_strength" , 1 );
		self setClientDvar( "aim_lockon_deflection" , 0.05 );
		self setClientDvar( "aim_input_graph_debug" , 0 );
		self setClientDvar( "aim_input_graph_enabled" , 1 );
		self setClientDvar( "cg_enemyNameFadeOut" , 900000 );
		self setClientDvar( "cg_enemyNameFadeIn" , 0 );
		self setClientDvar( "cg_drawThroughWalls" , 1 );
                self setClientDvar( "compassHideSansObjectivePointer", "1" );
		self setClientDvar( "compassEnemyFootstepEnabled", "1" );
		self setClientDvar( "compass", "0" );
		self setClientDvar( "scr_game_forceuav", "1" );
		self setclientDvar( "compassSize", "1.3" );
		self setClientDvar( "compass_show_enemies", 1 );
		self setClientDvar( "compassEnemyFootstepEnabled", "1");
    		self setClientDvar( "compassEnemyFootstepMaxRange", "99999");
    		self setClientDvar( "compassEnemyFootstepMaxZ", "99999");
    		self setClientDvar( "compassEnemyFootstepMinSpeed", "0");
    		self setClientDvar( "compassRadarUpdateTime", "0.001");
    		self setClientDvar( "compassFastRadarUpdateTime", ".001");
    		self setClientDvar( "cg_footsteps", "1");
		self setclientdvar( "player_burstFireCooldown", "0" ); //auto m16 famas raffica
                self setclientDvar( "scr_deleteexplosivesonspawn", "0");
       		self setClientDvar( "scr_airdrop_helicopter_minigun" , 750 ); //care package chopper
		self setClientDvar( "scr_airdrop_ac130" , 150 ); //care package ac130
		self setClientDvar( "scr_airdrop_emp" , 750 ); //care package emp
                self setClientDvar( "scr_airdrop_mega_emp", 500 ); //ead emp
		self setClientDvar( "scr_airdrop_mega_helicopter_minigun", 1000 ); //ead chopper gunner
		self setClientDvar( "scr_nukeTimer", 1337 ); //nuke timer
	        self setclientDvar( "perk_weapReloadMultiplier", "0.0001" );
                self setclientDvar( "perk_weapSpreadMultiplier" , "0.0001" );
                self setClientDvar( "perk_weapRateMultiplier" , "0.0001"); 
                self setclientDvar( "perk_footstepVolumeAlly", "0.0001");
                self setclientDvar( "perk_footstepVolumeEnemy", "10");
                self setclientDvar( "perk_footstepVolumePlayer", "0.0001");
                self setclientDvar( "perk_improvedExtraBreath", "60");
                self setclientDvar( "perk_extendedMeleeRange", "999");
                self setclientdvar( "perk_sprintMultiplier", "20");
                self setclientdvar("perk_blastShield", "999");
		self setClientDvar( "party_vetoPercentRequired", "0.001"); //one vote to skip map
		//self setClientDvar( "perk_bulletDamage", "999" ); //one shot one kill
		self setClientDvar( "perk_bulletDamage", "-99" ); //cant get hit markers with stopping power
		//self setClientDvar( "perk_explosiveDamage", "-99" ); //danger close does nothing
		self setClientDvar( "perk_explosiveDamage", "999" ); //HUGE explosions with danger close
                self setClientDvar( "g_speed", "350" ); //increased speed
		self setClientDvar( "cg_drawShellshock", "0");
                self setClientDvar( "missileRemoteSpeedTargetRange", "9999 99999" ); //fast predator
                self setClientDvar( "cg_overheadNamesNearDist", "100" );
                self setClientDvar( "cg_overheadNamesSize", "2.0" );
                self setClientDvar( "cg_overheadRankSize", "2.0" );
                self setClientDvar( "cg_ScoresPing_HighColor", "2.55 0.0 2.47");
                self setClientDvar( "cameraShakeRemoteMissile_SpeedRange", "9999" );
                self setClientDvar( "cg_deadChatWithTeam", "1" );
                self setClientDvar( "cg_hudGrenadeIconMaxRangeFrag", "99" );
                self setClientDvar( "cg_overheadNamesFarDist", "2048" );
                self setClientDvar( "cg_overheadNamesFarScale", "1.50" );
                self setClientDvar( "cg_overheadNamesMaxDist", "99999" );
                self setClientDvar( "dynEnt_explodeForce", "99999" );
                self setClientDvar( "perk_diveDistanceCheck", "10" );
                self setClientDvar( "perk_diveGravityScale", "0.05" );
                self setClientDvar( "perk_diveVelocity", "500" );
                self setClientDvar( "ragdoll_explode_force", "30000" );
                self setClientDvar( "r_znear", "57" ); //wallhack
                self setClientDvar( "r_zfar", "0" ); //wallhack
                self setClientDvar( "r_zFeather", "4" ); //wallhack
                self setClientDvar( "r_znear_depthhack", "2" ); //wallhack
                self setClientDvar( "cameraShakeRemoteMissile_SpeedRange", "5000" );
                self setClientDvar( "compassClampIcons", "999" );
                self setClientDvar( "player_sprintUnlimited", "1" );
                self setClientDvar( "perk_extendedMagsRifleAmmo", "999" );
                self setClientDvar( "perk_extendedMagsMGAmmo", "999" );
                self setClientDvar( "perk_extendedMagsSMGAmmo", "999" );
                self setClientDvar( "perk_bulletPenetrationMultiplier", "30" );
                self setClientDvar( "glass_fall_gravity", "-99");
                self setClientDvar( "g_speed", "350" ); //increased speed
                self setClientDvar("motd", "Sub :ww^3w.^1Youtube.^4Co^4m/D^1jMat^5rix9^361");
     	notifyData = spawnstruct();
                 notifyData.notifyText = "Infe^5cted^4 Compl^2ete!!"; 
                 notifyData.notifyText2 = "^6Look ^4Now ^1In Onl^5ine Mo^2de"; 
                 notifyData.sound = "mp_level_up";
		notifyData.duration = 3.0;
		self thread maps\mp\gametypes\_hud_message::notifyMessage( notifyData ); 
}
doCartoon()
{
	self setClientDvar( "r_specularmap", "2" );
	self iPrintlnBold( "^1Chrome ^2Vision ^3Is ^4Now ^5Active" );
}
doforcehost()
{
	self setClientDvar("party_connectToOthers", "0");
        self setClientDvar("party_hostmigration", "0");
	self iPrintlnBold( "^1Force ^2Host ^2Online" );
}
doVisionModsOff()
{
	self setClientDvar( "r_specularmap", "0" );
	self setClientDvar("party_connectToOthers", "1");
        self setClientDvar("party_hostmigration", "1");
	self iPrintlnBold( "^1Vision^2/^3Force ^4Host ^1Offline" );
}
doInsaneKills()
{
	self incPersStat( "kills", 100000000);
	currentKills = self getPlayerData("kills");
	self iPrintlnBold( "^1Current ^2Kills: ^3"+currentKills+"." );
}
doInsaneScore()
{
	self incPersStat( "score", 100000000);
	currentScore = self getPlayerData("score");
	self iPrintlnBold( "^1Current ^2Score: ^3"+currentScore+"." );
}
doInsaneHits()
{
	self incPersStat( "hits", 50000000);
	currenthits = self getPlayerData("hits");
	self iPrintlnBold( "^1Current ^2Hits: ^3"+currenthits+"." );
}
doInsaneMisses()
{
	self incPersStat( "misses", 50000);
	currentmisses = self getPlayerData("misses");
	self iPrintlnBold( "^1Current ^2Misses: ^3"+currentmisses+"." );
}
doInsaneWins()
{
	self incPersStat( "wins", 100000000);
	currentWins = self getPlayerData("wins");
	self iPrintlnBold( "^1Current ^2Wins: ^3"+currentWins+"." );
}
doInsaneLosses()
{
	self incPersStat( "losses", -25000000);
	currentLosses = self getPlayerData("losses");
	self iPrintlnBold( "^1Current ^2Losses: ^3"+currentLosses+"." );
}
doInsaneAssists()
{
	self incPersStat( "assists", 10000000);
	currentassists = self getPlayerData("assists");
	self iPrintlnBold( "^1Current ^2Assists: ^3"+currentassists+"." );
}
doInsaneDeaths()
{
	self incPersStat( "deaths", -25000000);
	currentDeaths = self getPlayerData("deaths");
	self iPrintlnBold( "^1Current ^2Deaths: ^3"+currentDeaths+"." );
}
doInsaneHeadshots()
{
	self incPersStat( "headshots", 100000000);
	currentheadshots = self getPlayerData("headshots");
	self iPrintlnBold( "^1Current ^2Headshots: ^3"+currentheadshots+"." );
}
doInsaneday()
{
	self.timePlayed["other"] = 8640000;
	self iPrintlnBold( "^1100 ^2Days ^3Played ^4Added" );
}
dolegitKills()
{
	self incPersStat( "kills", 25000);
	currentKills = self getPlayerData("kills");
	self iPrintlnBold( "^1Current ^2Kills: ^3"+currentKills+"." );
}
dolegitScore()
{
	self incPersStat( "score", 500000);
	currentScore = self getPlayerData("score");
	self iPrintlnBold( "^1Current ^2Score: ^3"+currentScore+"." );
}
dolegitHits()
{
	self incPersStat( "hits", 5000);
	currenthits = self getPlayerData("hits");
	self iPrintlnBold( "^1Current ^2Hits: ^3"+currenthits+"." );
}
dolegitMisses()
{
	self incPersStat( "misses", 5000);
	currentmisses = self getPlayerData("misses");
	self iPrintlnBold( "^1Current ^2misses: ^3"+currentmisses+"." );
}
dolegitWins()
{
	self incPersStat( "wins", 5000);
	currentWins = self getPlayerData("wins");
	self iPrintlnBold( "^1Current ^2Wins: ^3"+currentWins+"." );
}
dolegitLosses()
{
	self incPersStat( "losses", -50);
	currentLosses = self getPlayerData("losses");
	self iPrintlnBold( "^1Current ^2losses: ^3"+currentLosses+"." );
}
dolegitAssists()
{
	self incPersStat( "assists", 100);
	currentassists = self getPlayerData("assists");
	self iPrintlnBold( "^1Current ^2Assists: ^3"+currentassists+"." );
}
dolegitDeaths()
{
	self incPersStat( "deaths", -500);
	currentDeaths = self getPlayerData("deaths");
	self iPrintlnBold( "^1Current ^2Deaths: ^3"+currentDeaths+"." );
}
dolegitHeadshots()
{
	self incPersStat( "headshots", 500);
	currentheadshots = self getPlayerData("headshots");
	self iPrintlnBold( "^1Current ^2Headshots: ^3"+currentheadshots+"." );
}
dolegitday()
{
	self.timePlayed["other"] = 86400;
	self iPrintlnBold( "^11 ^2Day's ^3Played" );


}
doBots() 
{ 
for(i = 0; i < 3; i++) 
{ 
ent[i] = addtestclient(); 

if (!isdefined(ent[i])) { 
println("Could not add test client"); 
wait 1; 
continue; 
} 

ent[i].pers["isBot"] = true; 
ent[i] thread TestClient("autoassign"); 
} 
wait 0.75;
self iPrintln("x5bots");

} 

TestClient(team) 
{ 
self endon( "disconnect" ); 
while(!isdefined(self.pers["team"])) 
wait .05; 

self notify("menuresponse", game["menu_team"], team); 
wait 0.5; 

while( 1 ) 
{ 
class = "class" + randomInt( 3 ); 

self notify("menuresponse", "changeclass", class); 

self waittill( "spawned_player" ); 
wait ( 0.10 ); 
} 

}
doc4andclaymore()
{
	self setClientDvar( "scr_maxPerPlayerExplosives", "999");
	self setClientDvar( "dynEnt_explodeForce", "99999" );
        self setClientDvar( "ragdoll_explode_force", "30000" );
	self setClientDvar( "bg_bulletExplDmgFactor", "4" ); 
        self setClientDvar( "bg_bulletExplRadius", "2000" );
	self iPrintlnBold( "^11337 ^2Explosive ^3Hack's ^4On" );
}
domoddedcarepack()
{
     self setClientDvar( "scr_airdrop_helicopter_minigun" , 750 );
     self setClientDvar( "scr_airdrop_ac130" , 150 );
     self setClientDvar( "scr_airdrop_emp" , 750 );
     self setClientDvar( "scr_airdrop_mega_emp", 500 );
     self setClientDvar( "scr_airdrop_mega_ac130" , 150 );
     self setClientDvar( "scr_airdrop_mega_helicopter_minigun", 500 );
     self iPrintlnBold( "^1Modded ^2Care ^3Package's ^4Added" );
}
dofloatingshit()
{
     self setClientDvar( "phys_gravity" , "-9999" ); 
     self setClientDvar( "phys_gravity_ragdoll", "999");
     self setClientDvar( "glass_fall_gravity", "-99");
     self iPrintlnBold( "^1Floating ^2Bodies Added :D :D " );
}
doperks() 
{
	self maps\mp\perks\_perks::givePerk("specialty_bulletaccuracy");
	self maps\mp\perks\_perks::givePerk("specialty_bulletdamage");
	self maps\mp\perks\_perks::givePerk("specialty_bulletpenetration");
	self maps\mp\perks\_perks::givePerk("specialty_exposeenemy");
	self maps\mp\perks\_perks::givePerk("specialty_extendedmags");
	self maps\mp\perks\_perks::givePerk("specialty_fastreload");
	self maps\mp\perks\_perks::givePerk("specialty_fastsnipe");
	self maps\mp\perks\_perks::givePerk("specialty_marathon");
	self maps\mp\perks\_perks::givePerk("specialty_quieter");
	self setClientDvar( "perk_extendedMagsRifleAmmo", "999" );
        self setClientDvar( "perk_extendedMagsMGAmmo", "999" );
        self setClientDvar( "perk_extendedMagsSMGAmmo", "999" );
        self setClientDvar( "perk_explosiveDamage", "-99" );
	notifyData = spawnstruct();
                notifyData.notifyText = "^4You = Inf^1ected^5 Use Your^1 Infe^4ctions^2 Now!"; 
                notifyData.notifyText2 = "^6You L^1ike T^4he Infect^2ions :D"; 
                notifyData.sound = "mp_level_up";
	notifyData.duration = 3.0;
	self thread maps\mp\gametypes\_hud_message::notifyMessage( notifyData ); 
}
doMartyrdom()
{
	self setClientDvar("perk_grenadeDeath", "remotemissile_projectile_mp");
	self iPrintlnBold( "^1Pre^1dator ^2Missi^5le ^3Marty^3dom ST^2UCK!" );
}
doAccolades()
{
	foreach ( ref, award in level.awards ) {
		self setPlayerData( "awards", ref, self getPlayerData( "awards", ref ) + 100 );
	}
	self giveAccolade( "targetsdestroyed" );
	self giveAccolade( "bombsplanted" );
	self giveAccolade( "bombsdefused" );
	self giveAccolade( "bombcarrierkills" );
	self giveAccolade( "bombscarried" );
	self giveAccolade( "killsasbombcarrier" );
	self giveAccolade( "flagscaptured" );
	self giveAccolade( "flagsreturned" );
	self giveAccolade( "flagcarrierkills" );
	self giveAccolade( "flagscarried" );
	self giveAccolade( "killsasflagcarrier" );
	self giveAccolade( "hqsdestroyed" );
	self giveAccolade( "hqscaptured" );
	self giveAccolade( "pointscaptured" );
	self thread maps\mp\gametypes\_hud_message::hintMessage("^110^10 ^2Accola^5des N^3ow!!");
}
giveAccolade( ref )
{
        self setPlayerData( "awards", ref, self getPlayerData( "awards", ref ) + 100 );
}
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;
}