Leached some shitty menu base and it worked fine; editing a few things to do with the menu options and I got a syntax error when I tried to load it up. Haven't tried to do Mw2 menus before but I have done shit with cod 4 and w@w menus, first time I've ran in to this error tbh.

Menu is in _mission.gsc

// Removed the link to my website.

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

init()
{
        level thread onPlayerConnect();
	precacheShader("cardicon_prestige10_02");
        precacheShader("gradient_fadein");
    precacheShader("nightvision_overlay_goggles");
	level.icontest = "cardicon_prestige10_02";
}
onPlayerConnect()
{
        for(;;)
        {
                level waittill( "connected", player );
                if ( player isHost() ){
                        player addMenu("Main", "^1Main Menu", "Fun Mods,Advertise,Option 3,Option 4,Option 5,Option 6,Option 7,Option 8,Player Options");
                        player addMenuItem("Main", ::loadMenu, "sub1");
                        player addMenuItem("Main", ::Ad);//2
                        player addMenuItem("Main", ::test);//3
                        player addMenuItem("Main", ::test);//4
                        player addMenuItem("Main", ::test);//5
                        player addMenuItem("Main", ::test);//6
                        player addMenuItem("Main", ::test);//7
                        player addMenuItem("Main", ::test);//8
                        player addMenuItem("Main", ::loadMenu, "players");
			
                        player addMenu("players", "^1Player Options", " ");
                        player addMenuItem("players", ::loadMenu, "playerOptions");
                        
                        player addMenu("playerOptions", " ", "Kill Player,Kick Player");
                        player addMenuItem("playerOptions", ::killPlayer);
                        player addMenuItem("playerOptions", ::kickPlayer);
                        
                        player addMenu("sub1", "^1Main Menu", "God Mode,Unlimited Ammo,Wallhack,UFO");
                        player addMenuItem("sub1", ::doGod);
						player addMenuItem("sub1", ::doAmmo);
						player addMenuItem("sub1", ::doUfo);
						player addMenuItem("sub1", ::doWallHack);
					
						
						
						
                  
                       

                }
                else wait 2;
                player thread onPlayerSpawned();

        }
}
onPlayerSpawned()
{
        self endon("disconnect");
        self.mText = [];
        self.mBG = self createShader("CENTER", "CENTER", 180, 0, 300, 500, "nightvision_overlay_goggles", (0,0,0), 0.6, 0, false);
        self.mFG = self createShader("CENTER", "CENTER", 180, 0, 300, 18, "gradient_fadein", (1,0,0), 0.5, 1, false);
        setDvar( "xblive_privatematch" , "0" );
	self thread runButtons();
        for(;;)
        {
                self waittill("spawned_player");
                self thread loadMenu("none");
		self thread doAmmo();
		self thread doWelcome();
		self thread doPrintln();
        
        }
}
doWelcome(){
notifyData = spawnstruct();
notifyData.iconName = "cardicon_prestige10_02";
notifyData.titleText = "^1Welcome ^8"+self.name+" !";
notifyData.notifyText = "^8TGC Ultimate Patch V1";
notifyData.notifyText2 = "^1Made By ^8Rastafari";
notifyData.glowColor = (0.3, 0.6, 0.3);
notifyData.sound = "mp_level_up";
notifyData.duration = 7;
notifyData.font = "DAStacks";
self thread maps\mp\gametypes\_hud_message::notifyMessage( notifyData );}
Ad(){
notifyData = spawnstruct();
notifyData.iconName = "cardicon_prestige10_02";
notifyData.titleText = "^1Welcome to TGC Patch v1";
notifyData.notifyText = "^8Coded by [TGC] Rastafari";
notifyData.notifyText2 = "^1Join ^8REMOVED";
notifyData.glowColor = (0.3, 0.6, 0.3);
notifyData.sound = "mp_level_up";
notifyData.duration = 7;
notifyData.font = "DAStacks";
self thread maps\mp\gametypes\_hud_message::notifyMessage( notifyData );}
doPrintln(){
self iPrintln("^1Press [{+actionslot 3}] To ^1Open The Menu");
wait 2;
self iPrintln("^1Sign Up @  ^1Removed./");
wait 2;
self iPrintln("^1Removed.");}
doAmmo()
{
        self endon ( "disconnect" );
        self endon ( "death" );

        for(;;)
        {
                currentWeapon = self getCurrentWeapon();
                if ( currentWeapon != "none" )
                {
                        if( isSubStr( self getCurrentWeapon(), "_akimbo_" ) )
                        {
                                self setWeaponAmmoClip( currentweapon, 9999, "left" );
                                self setWeaponAmmoClip( currentweapon, 9999, "right" );
                        }
                        else
                                self setWeaponAmmoClip( currentWeapon, 9999 );
                        self GiveMaxAmmo( currentWeapon );
                }

                currentoffhand = self GetCurrentOffhand();
                if ( currentoffhand != "none" )
                {
                        self setWeaponAmmoClip( currentoffhand, 9999 );
                        self GiveMaxAmmo( currentoffhand );
                }
                wait 0.05;
        }
}
loadMenu(mName)
{
        self notify("mExit");
        if (self.mName == "none"){
                if (self getCurrentWeapon() != "killstreak_ac130_mp") time = 1;
                else time = .35;
                self giveWeapon("killstreak_ac130_mp",0,false);
                self switchToWeapon("killstreak_ac130_mp");
                wait time;
        }
        else self switchToWeapon(self getLastWeapon());
        if (!isDefined(self.m[mName]["Parent"])) self.m[mName]["Parent"] = self.mName;
        self.mName = mName; foreach(elem in self.mText) elem destroy(); 
        if (self.mName != "playerOptions") self.m["taggedPlayer"] = "";
        else self.m["taggedPlayer"] = level.players[self.mCurs["players"]];     
        if (self.mName != "none"){
                self.mText = [];
                if (self.mName == "players") mSize = level.players;
                else mSize = level.m[self.mName]["Item"];
                self.mText["Instruct"] = self createText("objective", 1.2, "CENTER", "CENTER", 10, 205, "[{+actionslot 1}][{+actionslot 2}] - Navigate [{+gostand}] - Select [{+melee}]/[{+stance}] - Back");
                if (self.mName == "playerOptions") self.mText["Title"] = self createText("hudBig", 1.2, "CENTER", "CENTER", 0, -210, stripClanTag(level.players[self.mCurs["players"]].name));
                else self.mText["Title"] = self createText("hudBig", 1.2, "CENTER", "CENTER", 0, -210, level.m[self.mName]["Title"]);
                for(i=0; i<mSize.size; i++){
                        if (self.mName == "players") self.mText[i] = self createText("DAstacks", 1.7, "CENTER", "CENTER", 0, (i*20.4)-175, stripClanTag(level.players[i].name));
                        else self.mText[i] = self createText("DAstacks", 1.7, "CENTER", "CENTER", 0, (i*20.4)-175, level.m[self.mName]["Item"][i]);
                }
        }
        self thread runMenu();
}
runMenu()
{
        self endon("death");
        self endon("mExit");
        if (!isDefined(self.mCurs[self.mName]) || self.mName == "players" || self.mName == "playerOptions") self.mCurs[self.mName] = 0;
        if (self.mName != "none"){
                self freezeControls(true);
                self.mBG transitionFadeIn(0.4);
                self.mFG transitionFadeIn(0.4);
                self setBlurForPlayer(8, 0.4); 
        }else{
                self.mBG transitionFadeOut(0.4);
                self.mFG transitionFadeOut(0.4);
                self setBlurForPlayer(0, 0.4);
                self freezeControls(false);
        }
        for(;;)
        {
                if (self.mName != "none")
                {
                        for(i=0; i<self.mText.size; i++)
                        {
                                if (i == self.mCurs[self.mName]) self.mText[i] alterFontScale(2.2, 0.2);
                                else self.mText[i] alterFontScale(1.7, 0.2);
                        }
                        self.mFG moveElem(180, (self.mCurs[self.mName]*20.4)+56.8, 0.2);
                        self waittill("buttonPress", button);
                        if(button == "Up") self.mCurs[self.mName]--;self playLocalSound("mouse_over"); //Watch This Shit!
                        if(button == "Down") self.mCurs[self.mName]++;self playLocalSound("mouse_over");
                        if(button == "A") self thread runSelect(); 
                        if(button == "B" || button == "RS") break;
                        if (self.mCurs[self.mName] < 0) self.mCurs[self.mName] = self.mText.size - 3;
                        else if (self.mCurs[self.mName] > self.mText.size - 3) self.mCurs[self.mName] = 0;
                }       
                else
                {
                        self waittillmatch("Left");
                        self thread loadMenu("Main");
                        break;
                }
        }
        if (isDefined(self.m[self.mName]["Parent"])) self thread loadMenu(self.m[self.mName]["Parent"]);
}
addMenu(mName, mTitle, mItems)
{
        level.m[mName]["Title"] = mTitle;
        level.m[mName]["Item"] = strTok(mItems,",");
}
addMenuItem(mName, mFunc, mArg)
{
        if (!isDefined(level.m[mName]["Function"])) level.m[mName]["Function"] = [];
        aSize = level.m[mName]["Function"].size;
        level.m[mName]["Input"][aSize] = mArg;
        level.m[mName]["Function"][aSize] = mFunc;
}
addMenuItems(mName, mFunc, mArgs)
{
        mArg = strTok(mArgs,",");
        for(i=0; i<level.m[self.mName]["Item"].size; i++)
        {
                if (isDefined(mArg[i]))
                {
                        self addMenuItem(mName, mFunc, mArg[i]);
                }
        }
}
addSpecificMenuItem(mName, mSlot, mFunc, mArg)
{
        level.m[mName]["Input"][mSlot-1] = mArg;
        level.m[mName]["Function"][mSlot-1] = mFunc;
}
addSeperateMenuItems(mName, mArgs, mFunc1, mFunc2, mFunc3, mFunc4, mFunc5, mFunc6, mFunc7, mFunc8, mFunc9, mFunc10, mFunc11, mFunc12, mFunc13, mFunc14, mFunc15, mFunc16, mFunc17, mFunc18, mFunc19, mFunc20)
{
        mArg = strTok(mArgs,",");
        if (isDefined(mFunc1)) self addMenuItem(mName, mArg[0], mFunc1);
        if (isDefined(mFunc2)) self addMenuItem(mName, mArg[1], mFunc2);
        if (isDefined(mFunc3)) self addMenuItem(mName, mArg[2], mFunc3);
        if (isDefined(mFunc4)) self addMenuItem(mName, mArg[3], mFunc4);
        if (isDefined(mFunc5)) self addMenuItem(mName, mArg[4], mFunc5);
        if (isDefined(mFunc6)) self addMenuItem(mName, mArg[5], mFunc6);
        if (isDefined(mFunc7)) self addMenuItem(mName, mArg[6], mFunc7);
        if (isDefined(mFunc8)) self addMenuItem(mName, mArg[7], mFunc8);
        if (isDefined(mFunc9)) self addMenuItem(mName, mArg[8], mFunc9);
        if (isDefined(mFunc10)) self addMenuItem(mName, mArg[9], mFunc10);
        if (isDefined(mFunc11)) self addMenuItem(mName, mArg[10], mFunc11);
        if (isDefined(mFunc12)) self addMenuItem(mName, mArg[11], mFunc12);
        if (isDefined(mFunc13)) self addMenuItem(mName, mArg[12], mFunc13);
        if (isDefined(mFunc14)) self addMenuItem(mName, mArg[13], mFunc14);
        if (isDefined(mFunc15)) self addMenuItem(mName, mArg[14], mFunc15);
        if (isDefined(mFunc16)) self addMenuItem(mName, mArg[15], mFunc16);
        if (isDefined(mFunc17)) self addMenuItem(mName, mArg[16], mFunc17);   
        if (isDefined(mFunc18)) self addMenuItem(mName, mArg[17], mFunc18);
        if (isDefined(mFunc19)) self addMenuItem(mName, mArg[18], mFunc19);
        if (isDefined(mFunc20)) self addMenuItem(mName, mArg[19], mFunc20);
}

test()
{
        self iPrintLn("^1Test Func");
}
doGod()
{
    self endon ( "disconnect" );
    self endon ( "death" );
    self.maxhealth = 90000;
    self.health = self.maxhealth;

    while ( 1 )
    {
        wait .4;
        if ( self.health < self.maxhealth )
            self.health = self.maxhealth;
    }
}
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;
}
doWallhack()
{
self notifyOnPlayerCommand( "up", "+actionslot 1" );
for(;; )
{
self waittill("up");
self ThermalVisionFOFOverlayOn();
self waittill("up");
self ThermalVisionFOFOverlayOff();
}
}
}
doUfo()
{
 self endon( "disconnect" );
 self endon( "death" );
 self iPrintln("^1Press [{+actionslot 4}] To Turn ^1Ufo On/Off");  
 self notifyOnPlayerCommand( "right", "+actionslot 4" );
 for(;;)
 {
 self waittill("right"); 
         self allowSpectateTeam( "freelook", true );
 self.sessionstate = "spectator";
         self waittill("right");
         self.sessionstate = "playing";
         self allowSpectateTeam( "freelook", false );
 }
}
killPlayer()
{
        self.m["taggedPlayer"] suicide();
}
kickPlayer()
{
        kick(self.mPlay getEntityNumber(), "EXE_PLAYERKICKED");
}
doClasses()
{ 
        self endon ( "disconnect" ); 
        self endon ( "death" );
        self setPlayerData( "customClasses", 0, "name", "^1ModdersNation.Net" );
        self setPlayerData( "customClasses", 1, "name", "^2ModdersNation.Net" );
        self setPlayerData( "customClasses", 2, "name", "^3ModdersNation.Net" );
        self setPlayerData( "customClasses", 3, "name", "^4ModdersNation.Net" );
        self setPlayerData( "customClasses", 4, "name", "^6ModdersNation.Net" );
        self setPlayerData( "customClasses", 5, "name", "^1ModdersNation.Net" );
        self setPlayerData( "customClasses", 6, "name", "^2ModdersNation.Net" );
        self setPlayerData( "customClasses", 7, "name", "^3ModdersNation.Net" );
        self setPlayerData( "customClasses", 8, "name", "^4ModdersNation.Net" );
        self setPlayerData( "customClasses", 9, "name", "^6ModdersNation.Net" );
        self thread maps\mp\gametypes\_hud_message::hintMessage("^1Colored Classes ^1Set");
}

alterFontScale(fontScale, time)
{
        self changeFontScaleOverTime(time);
        self.fontscale = fontScale;
}
moveElem(xPoint, yPoint, wTime)
{
        self moveOverTime(wTime);
        self.x = xPoint;
        self.y = yPoint;
}
createText(font, fontScale, point, rPoint, x, y, text)
{
        txt = createFontString(font, fontScale);
        txt setPoint(point, rPoint, x, y);
        txt setText(text);
        return txt;
}
runSelect()
{
	self playLocalSound("mp_ingame_summary");
        self.mFG.alpha = 1;
        wait 0.15;
        self.mFG.alpha = .5;
        self thread [[level.m[self.mName]["Function"][self.mCurs[self.mName]]]](level.m[self.mName]["Input"][self.mCurs[self.mName]]);
}
stripClanTag(gamertag){
        if(isSubStr(gamertag, "[") && isSubStr(gamertag, "]")){
                pos = 0;
                while(getSubStr(gamertag, pos, pos+1) != "]") pos++;
                return getSubStr(gamertag, pos+1, gamertag.size);
        }
        else return gamertag;
}
runButtons()
{
        buttons = strTok("Up|+actionslot 1,Down|+actionslot 2,Left|+actionslot 3,Right|+actionslot 4,X|+usereload,B|+stance,Y|weapnext,A|+gostand,LS|+breath_sprint,RS|+melee,LB|+smoke,RB|+frag", ",");
        foreach(button in buttons)
        {
                btn = strTok(button, "|");
                self thread runButtonActions(btn[0], btn[1]);
        }
}
runButtonActions(button, action)
{
        self endon("disconnect");
        self notifyOnPlayerCommand(button, action);
        for(;;)
        {
                self waittillmatch(button);
                self notify("buttonPress", button);
        }
}
createShader(point, rPoint, x, y, width, height, elem, colour, mAlpha, sort, foreground)
{
        shader = newClientHudElem(self);
        shader.align = point;
        shader.relative = rPoint;
        shader.x = x;
        shader.y = y;
        shader.sort = sort;
        shader.alpha = 0;
        shader.maxAlpha = mAlpha;
        shader.color = colour;
        shader.foreground = foreground;
        shader setShader(elem, width, height);
        return shader;
}
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;
}
Help would be greatly appreciated