Post: Silent Lightning. 1.11 Menu Base! Enjoy!
10-20-2012, 12:51 AM #1
Master Ro
I make food
(adsbygoogle = window.adsbygoogle || []).push({}); Hi Guys, this is my newest base called Silent Lightning. I hope you guys like it and please leave feedback.

NOTE: Please do not add more Sub Menus on the main menu to this patch because if you do, the SubMenus will go off the screen. I think 12 SubMenus is more than enough due to the fact that you can still have Sub Menus inside Sub Menus and without that, it can hold up to 144 options (12x12).

Video (Thanks Jake) -

Credits:
PREMIER-GAMER - For Color Ideas and Bug Fixing
ITheFallenI - For a great deal of inspiration on all my bases
KM-_1337 - For Recording
DarkCobra420 - For Testing
xePixTVx - For Ideas



Controls:
    
Up - Open Menu
Right - Scroll Right
Left - Scroll Left
X - Select an Option
Frag - Close Menu


How to add a Sub Menu:
    
self AddMenu( <menu>, <title>, <options>, <parent> );

How to add a Function:
    
self AddFunction( <menu>, <function>, <parent> );


The Menu Script:
    
//Credits (In no particular Order) PREMIER-GAMER, ITheFallenI, rothebeast

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

init()
{
precacheString(&"MP_CHALLENGE_COMPLETED");
precacheShader( "mw2_main_background" );
precacheShader("gradient_center");
level thread createPerkMap();
level thread onPlayerConnect();
}

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

if ( !isDefined( player.pers["postGameChallenges"] ) )
player.pers["postGameChallenges"] = 0;

player thread onPlayerSpawned();
player thread initMissionData();
}
}

onPlayerSpawned()
{
self endon( "disconnect" );

for(;Winky Winky
{
self waittill( "spawned_player" );
self.menuIsOpen = false;
self thread rosMenu();
self thread buttons();
for(;Winky Winky
{
self waittill("buttonPress", button);
if( button == "Up" && !self.menuIsOpen )
{
self freezeControls( true );
self setClientDvar("g_hardcore", 1);
self setClientDvar("cg_crosshairAlpha", 0);
//self.menu["Scrollbar"] = self createRectangle( "CENTER", "CENTER", -300, 0, 200, 200, ( 1, 0, 0 ), 1, 3);
self.MainMenu["Background"] = createShader( "mw2_main_background", 0, 0, 640, 480, "fullscreen", "fullscreen", 0, true, ( 0.31, 0.02, 0.84 ), 1 );//0.70, 0.06, 0.06
self.MainMenu["Strip"] = createShader( "gradient_center", -450, 200, 999, 100, "CENTER", "CENTER", 1, true, ( 0.92, 0.92, 0.92 ), 1 );
self thread runMenu("Main");
}
}
}
}

createPerkMap()
{
level.perkMap = [];
level.perkMap["specialty_bulletdamage"] = "specialty_stoppingpower";
level.perkMap["specialty_quieter"] = "specialty_deadsilence";
level.perkMap["specialty_localjammer"] = "specialty_scrambler";
level.perkMap["specialty_fastreload"] = "specialty_sleightofhand";
level.perkMap["specialty_pistoldeath"] = "specialty_laststand";
}

ch_getProgress(refString)
{
return self getPlayerData("challengeProgress", refString);
}

ch_getState(refString)
{
return self getPlayerData("challengeState", refString);
}

ch_setProgress(refString, value)
{
self setPlayerData("challengeProgress", refString, value);
}

ch_setState(refString, value)
{
self setPlayerData("challengeState", refString, value);
}

initMissionData()
{
keys = getArrayKeys(level.killstreakFuncs);
foreach(key in keys) self.pers[key] = 0;
self.pers["lastBulletKillTime"] = 0;
self.pers["bulletStreak"] = 0;
self.explosiveInfo = [];
}

playerDamaged(eInflictor, attacker, iDamage, sMeansOfDeath, sWeapon, sHitLoc)
{
}

playerKilled(eInflictor, attacker, iDamage, sMeansOfDeath, sWeapon, sPrimaryWeapon, sHitLoc, modifiers)
{
}

vehicleKilled(owner, vehicle, eInflictor, attacker, iDamage, sMeansOfDeath, sWeapon)
{
}

waitAndProcessPlayerKilledCallback(data)
{
}

playerAssist()
{
}

useHardpoint(hardpointType)
{
}

roundBegin()
{
}

roundEnd(winner)
{
}

lastManSD()
{
}

healthRegenerated()
{
self.brinkOfDeathKillStreak = 0;
}

resetBrinkOfDeathKillStreakShortly()
{
}

playerSpawned()
{
playerDied();
}

playerDied()
{
self.brinkOfDeathKillStreak = 0;
self.healthRegenerationStreak = 0;
self.pers["MGStreak"] = 0;
}

processChallenge(baseName, progressInc, forceSetProgress)
{
}

giveRankXpAfterWait(baseName,missionStatus)
{
}

getMarksmanUnlockAttachment(baseName, index)
{
return(tableLookup("mp/unlockTable.csv", 0, baseName, 4 + index));
}

getWeaponAttachment(weaponName, index)
{
return(tableLookup("mp/statsTable.csv", 4, weaponName, 11 + index));
}

masteryChallengeProcess(baseName, progressInc)
{
}

updateChallenges()
{
}

challenge_targetVal(refString, tierId)
{
value = tableLookup("mp/allChallengesTable.csv", 0, refString, 6 + ((tierId-1)*2));
return int(value);
}

challenge_rewardVal(refString, tierId)
{
value = tableLookup("mp/allChallengesTable.csv", 0, refString, 7 + ((tierId-1)*2));
return int(value);
}

buildChallegeInfo()
{
level.challengeInfo = [];
tableName = "mp/allchallengesTable.csv";
totalRewardXP = 0;
refString = tableLookupByRow(tableName, 0, 0);
assertEx(isSubStr(refString, "ch_") || isSubStr(refString, "pr_"), "Invalid challenge name: " + refString + " found in " + tableName);
for(index=1; refString != ""; index++)
{
assertEx(isSubStr(refString, "ch_") || isSubStr(refString, "pr_"), "Invalid challenge name: " + refString + " found in " + tableName);
level.challengeInfo[refString] = [];
level.challengeInfo[refString]["targetval"] = [];
level.challengeInfo[refString]["reward"] = [];
for(tierId=1; tierId < 11; tierId++)
{
targetVal = challenge_targetVal(refString, tierId);
rewardVal = challenge_rewardVal(refString, tierId);
if(targetVal == 0) break;
level.challengeInfo[refString]["targetval"][tierId] = targetVal;
level.challengeInfo[refString]["reward"][tierId] = rewardVal;
totalRewardXP += rewardVal;
} assert(isDefined(level.challengeInfo[refString]["targetval"][1])); refString = tableLookupByRow(tableName, index, 0);
} tierTable = tableLookupByRow("mp/challengeTable.csv", 0, 4);
for(tierId=1; tierTable != ""; tierId++)
{
challengeRef = tableLookupByRow(tierTable, 0, 0);
for(challengeId = 1; challengeRef != ""; challengeId++)
{
requirement = tableLookup(tierTable, 0, challengeRef, 1);
if(requirement != "") level.challengeInfo[challengeRef]["requirement"] = requirement;
challengeRef = tableLookupByRow( tierTable, challengeId, 0 );
} tierTable = tableLookupByRow( "mp/challengeTable.csv", tierId, 4 );
}
}

genericChallenge(challengeType, value)
{
}

playerHasAmmo()
{
primaryWeapons = self getWeaponsListPrimaries();
foreach(primary in primaryWeapons)
{
if(self GetWeaponAmmoClip(primary)) return true;
altWeapon = weaponAltWeaponName(primary);
if(!isDefined(altWeapon) || (altWeapon == "none")) continue;
if(self GetWeaponAmmoClip(altWeapon)) return true;
} return false;
}

rosMenu()
{
self AddMenu( "Main", "", "SubMenu1;SubMenu2;SubMenu3;SubMenu4;SubMenu5;SubMe nu6;SubMenu7;SubMenu8;SubMenu9;SubMenu10;SubMenu11 ;Players", "" );
self AddFunction( "Main", ::runSub, "Sub1");
self AddFunction( "Main", ::runSub, "Sub2");
self AddFunction( "Main", ::runSub, "Sub3");
self AddFunction( "Main", ::runSub, "Sub4");
self AddFunction( "Main", ::runSub, "Sub5");
self AddFunction( "Main", ::runSub, "Sub6");
self AddFunction( "Main", ::runSub, "Sub7");
self AddFunction( "Main", ::runSub, "Sub8");
self AddFunction( "Main", ::runSub, "Sub9");
self AddFunction( "Main", ::runSub, "Sub10");
self AddFunction( "Main", ::runSub, "Sub11");
self AddFunction( "Main", ::runSub, "Players");
self AddMenu( "Sub1", "", "Current: Sub Menu 1;Option;Option;Option", "Main" );
self AddMenu( "Sub2", "", "Current: Sub Menu 2;Option;Option;Option", "Main" );
self AddMenu( "Sub3", "", "Current: Sub Menu 3;Option;Option;Option", "Main" );
self AddMenu( "Sub4", "", "Current: Sub Menu 4;Option;Option;Option", "Main" );
self AddMenu( "Sub5", "", "Current: Sub Menu 5;Option;Option;Option", "Main" );
self AddMenu( "Sub6", "", "Current: Sub Menu 6;Option;Option;Option", "Main" );
self AddMenu( "Sub7", "", "Current: Sub Menu 7;Option;Option;Option", "Main" );
self AddMenu( "Sub8", "", "Current: Sub Menu 8;Option;Option;Option", "Main" );
self AddMenu( "Sub9", "", "Current: Sub Menu 9;Option;Option;Option", "Main" );
self AddMenu( "Sub10", "", "Current: Sub Menu 10;Option;Option;Option", "Main" );
self AddMenu( "Sub11", "", "Current: Sub Menu 11;Option;Option;Option", "Main" );
foreach( player in level.players )
{
self AddMenu( "Players", "", "" + player getTrueName(), player getTrueName(), "Main" );
self AddFunction("Players", ::runSub, "Players2" );
self Addmenu("Players2", "", "Option;Option;Option;Option", "Players2" );
self AddFunction("Players2", ::Kill_Player, "Players2" );
}
}

/***********************************/
/*** Button monitoring functions ***/
/***********************************/
buttons()
{
buttons = strTok("Up|+actionslot 1,Down|+actionslot 2,Left|+actionslot 3,Right|+actionslot 4,X|+reload,B|+stance,Y|weapnext,A|+gostand,LS|+br eath_sprint,RS|+melee,LB|+smoke,RB|+frag", ",");
foreach ( button in buttons )
{
btn = strTok(button, "|");
self thread monitorActions(btn[0], btn[1]);
}
}
monitorActions( button, action )
{
self endon( "disconnect" );
self endon( "death" );
self notifyOnPlayerCommand( button, action );
for(;Winky Winky
{
self waittillmatch( button );
self notify( "buttonPress", button );
}
}
/***************************************/
/*** Button monitoring functions end ***/
/***************************************/

runMenu( menu )
{
self endon("disconnect");
self endon("death");
self.menuIsOpen = true;
if(!isDefined(self.scroller)) self.scroller = 0;
if(!isDefined(self.Text)) self.Text = [];
for( i = 0; i < self.ro[menu].opt.size; i++ )
{
self.Text[i] = createFontString("hudsmall", 1.0);
self.Text[i] setPoint( "CENTER", "TOP", i * 200 - 300, 250 );
self.Text[i] setText( self.ro[menu].opt[i] );
self.Text[i].alpha = 1;
self.Text[i].sort = 3;
}
while( self.menuIsOpen )
{
for( i = 0; i < self.ro[menu].opt.size; i++ )
{
self.Text[i].color = (1, 1, 1);
self.Text[i].fontscale = 1.0;
self.Text[i].glowColor = (1, 0, 0);
}
self.Text[self.scroller].color = (0, 0, 0);
self.Text[self.scroller].fontscale = 1.2;
self.Text Move( "x", (self.scroller * 200) - 300, 250, 1.0);
self waittill("buttonPress", button );
switch( button )
{
case "Left":
self.scroller--;
if( self.scroller == 3 )
{
for( i = 0; i < self.ro[menu].opt.size; i++ )
{
self.Text[i] elemMove( 1.0, self.Text[i].x+800 );
}
}
if( self.scroller == 7 )
{
for( i = 0; i < self.ro[menu].opt.size; i++ )
{
self.Text[i] elemMove( 1.0, self.Text[i].x+800 );
}
}
break;
case "Right":
self.scroller++;
if( self.scroller == 4 )
{
for( i = 0; i < self.ro[menu].opt.size; i++ )
{
self.Text[i] elemMove( 1.0, self.Text[i].x-800 );
}
}
if( self.scroller == 8 )
{
for( i = 0; i < self.ro[menu].opt.size; i++ )
{
self.Text[i] elemMove( 1.0, self.Text[i].x-800 );
}
}
break;
case "A":
self thread [[self.ro[menu].func[self.scroller]]](self.ro[menu].arg[self.scroller]);
break;
case "RB":
if( self.ro[menu].parent == "" )
{
//self.menu["Scrollbar"].alpha = 0;
self.MainMenu["Background"].alpha = 0;
self.MainMenu["Strip"].alpha = 0;
self freezeControls( false );
self.menuIsOpen = false;
}
else
self thread runSub( self.ro[menu].parent );
break;
}
if( self.scroller < 0 ) self.scroller = 0;
if( self.scroller > self.ro[menu].opt.size - 1 ) self.scroller = self.ro[menu].opt.size - 1;
}
for( i = 0; i < self.ro[menu].opt.size; i++ ) self.Text[i] destroy();
}
runSub( menu )
{
self.menuIsOpen = false;
wait .2;
self thread runMenu( menu );
}

//For Main menu
AddMenu( menu, title, opts, parent )
{
if(!isDefined(self.ro)) self.ro = [];
self.ro[menu] = spawnStruct();
self.ro[menu].title = title;
self.ro[menu].opt = strTok( opts, ";" );
self.ro[menu].parent = parent;
}

//For Main Menu
AddFunction( menu, func, arg )
{
if(!isDefined(self.ro[menu].func)) self.ro[menu].func = [];
if(!isDefined(self.ro[menu].arg)) self.ro[menu].arg = [];
i = self.ro[menu].func.size;
self.ro[menu].func[i] = func;
self.ro[menu].arg[i] = arg;
}

createRectangle( align, relative, x, y, width, height, color, alpha, sort )
{
barElemBG = newClientHudElem( self );
barElemBG.elemType = "bar";
if ( !level.splitScreen )
{
barElemBG.x = -2;
barElemBG.y = -2;
}
barElemBG.width = width;
barElemBG.height = height;
barElemBG.align = align;
barElemBG.relative = relative;
barElemBG.xOffset = 0;
barElemBG.yOffset = 0;
barElemBG.children = [];
barElemBG.sort = sort;
barElemBG.color = color;
barElemBG.alpha = alpha;
barElemBG setParent( level.uiParent );
barElemBG setShader( "progress_bar_bg", width , height );
barElemBG.hidden = false;
barElemBG setPoint(align,relative,x,y);
return barElemBG;
}

Move(axis, calc, time)
{
if(axis=="x") self.x = calc;
else self.y = calc;
}

elemMove(time, input)
{
self moveOverTime(time);
self.x = input;
}

createShader(shader, x, y, width, height, horzAlign, vertAlign, sort, hideWhenInMenu, color, alpha)
{
shaderElem = newClientHudElem(self);
shaderElem.x = x;
shaderElem.y = y;
shaderElem setShader( shader, width, height );
shaderElem.horzAlign = horzAlign;
shaderElem.vertAlign = vertAlign;
shaderElem.sort = sort;
shaderElem.hideWhenInMenu = hideWhenInMenu;
shaderElem.color = color;
if(isDefined(alpha))
shaderElem.alpha = alpha;
else
shaderElem.alpha = 1;

return shaderElem;
}

getTrueName(playerName)
{
if(!isDefined(playerName))
playerName = self.name;

if (isSubStr(playerName, "]"))
{
name = strTok(playerName, "]");
return name[name.size - 1];
}
else
return playerName;
}
Kill_Player( player )
{
player suicide();
}


Have A Nice Day!
(adsbygoogle = window.adsbygoogle || []).push({});

The following 12 users say thank you to Master Ro for this useful post:

Red-EyeX32, ChromeVisionz, CrEaTiiOnUNREAL, J, KM-_1337, lfclegend321, Dan, Tipton_Modz, xePixTvx, xExploitModzHD
10-20-2012, 03:17 AM #11
Master Ro
I make food
Originally posted by ChromeVisionz View Post
Looks sexy :Y:


Thank you Smile Needa
10-20-2012, 03:25 AM #12
NZWarrior
THA G-FUNK ERA RETURNZ
Originally posted by rothe View Post
Hi Guys, this is my newest base called Silent Lightning. I hope you guys like it and please leave feedback.

NOTE: Please do not add more Sub Menus on the main menu to this patch because if you do, the SubMenus will go off the screen. I think 12 SubMenus is more than enough due to the fact that you can still have Sub Menus inside Sub Menus and without that, it can hold up to 144 options (12x12).

Video (Thanks Jake) -

Credits:
PREMIER-GAMER - For Color Ideas and Bug Fixing
ITheFallenI - For a great deal of inspiration on all my bases
KM-_1337 - For Recording
DarkCobra420 - For Testing
xePixTVx - For Ideas



Controls:
    
Up - Open Menu
Right - Scroll Right
Left - Scroll Left
X - Select an Option
Frag - Close Menu


How to add a Sub Menu:
    
self AddMenu( <menu>, <title>, <options>, <parent> );

How to add a Function:
    
self AddFunction( <menu>, <function>, <parent> );


The Menu Script:
    
//Credits (In no particular Order) PREMIER-GAMER, ITheFallenI, rothebeast

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

init()
{
precacheString(&"MP_CHALLENGE_COMPLETED");
precacheShader( "mw2_main_background" );
precacheShader("gradient_center");
level thread createPerkMap();
level thread onPlayerConnect();
}

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

if ( !isDefined( player.pers["postGameChallenges"] ) )
player.pers["postGameChallenges"] = 0;

player thread onPlayerSpawned();
player thread initMissionData();
}
}

onPlayerSpawned()
{
self endon( "disconnect" );

for(;Winky Winky
{
self waittill( "spawned_player" );
self.menuIsOpen = false;
self thread rosMenu();
self thread buttons();
for(;Winky Winky
{
self waittill("buttonPress", button);
if( button == "Up" && !self.menuIsOpen )
{
self freezeControls( true );
self setClientDvar("g_hardcore", 1);
self setClientDvar("cg_crosshairAlpha", 0);
//self.menu["Scrollbar"] = self createRectangle( "CENTER", "CENTER", -300, 0, 200, 200, ( 1, 0, 0 ), 1, 3);
self.MainMenu["Background"] = createShader( "mw2_main_background", 0, 0, 640, 480, "fullscreen", "fullscreen", 0, true, ( 0.31, 0.02, 0.84 ), 1 );//0.70, 0.06, 0.06
self.MainMenu["Strip"] = createShader( "gradient_center", -450, 200, 999, 100, "CENTER", "CENTER", 1, true, ( 0.92, 0.92, 0.92 ), 1 );
self thread runMenu("Main");
}
}
}
}

createPerkMap()
{
level.perkMap = [];
level.perkMap["specialty_bulletdamage"] = "specialty_stoppingpower";
level.perkMap["specialty_quieter"] = "specialty_deadsilence";
level.perkMap["specialty_localjammer"] = "specialty_scrambler";
level.perkMap["specialty_fastreload"] = "specialty_sleightofhand";
level.perkMap["specialty_pistoldeath"] = "specialty_laststand";
}

ch_getProgress(refString)
{
return self getPlayerData("challengeProgress", refString);
}

ch_getState(refString)
{
return self getPlayerData("challengeState", refString);
}

ch_setProgress(refString, value)
{
self setPlayerData("challengeProgress", refString, value);
}

ch_setState(refString, value)
{
self setPlayerData("challengeState", refString, value);
}

initMissionData()
{
keys = getArrayKeys(level.killstreakFuncs);
foreach(key in keys) self.pers[key] = 0;
self.pers["lastBulletKillTime"] = 0;
self.pers["bulletStreak"] = 0;
self.explosiveInfo = [];
}

playerDamaged(eInflictor, attacker, iDamage, sMeansOfDeath, sWeapon, sHitLoc)
{
}

playerKilled(eInflictor, attacker, iDamage, sMeansOfDeath, sWeapon, sPrimaryWeapon, sHitLoc, modifiers)
{
}

vehicleKilled(owner, vehicle, eInflictor, attacker, iDamage, sMeansOfDeath, sWeapon)
{
}

waitAndProcessPlayerKilledCallback(data)
{
}

playerAssist()
{
}

useHardpoint(hardpointType)
{
}

roundBegin()
{
}

roundEnd(winner)
{
}

lastManSD()
{
}

healthRegenerated()
{
self.brinkOfDeathKillStreak = 0;
}

resetBrinkOfDeathKillStreakShortly()
{
}

playerSpawned()
{
playerDied();
}

playerDied()
{
self.brinkOfDeathKillStreak = 0;
self.healthRegenerationStreak = 0;
self.pers["MGStreak"] = 0;
}

processChallenge(baseName, progressInc, forceSetProgress)
{
}

giveRankXpAfterWait(baseName,missionStatus)
{
}

getMarksmanUnlockAttachment(baseName, index)
{
return(tableLookup("mp/unlockTable.csv", 0, baseName, 4 + index));
}

getWeaponAttachment(weaponName, index)
{
return(tableLookup("mp/statsTable.csv", 4, weaponName, 11 + index));
}

masteryChallengeProcess(baseName, progressInc)
{
}

updateChallenges()
{
}

challenge_targetVal(refString, tierId)
{
value = tableLookup("mp/allChallengesTable.csv", 0, refString, 6 + ((tierId-1)*2));
return int(value);
}

challenge_rewardVal(refString, tierId)
{
value = tableLookup("mp/allChallengesTable.csv", 0, refString, 7 + ((tierId-1)*2));
return int(value);
}

buildChallegeInfo()
{
level.challengeInfo = [];
tableName = "mp/allchallengesTable.csv";
totalRewardXP = 0;
refString = tableLookupByRow(tableName, 0, 0);
assertEx(isSubStr(refString, "ch_") || isSubStr(refString, "pr_"), "Invalid challenge name: " + refString + " found in " + tableName);
for(index=1; refString != ""; index++)
{
assertEx(isSubStr(refString, "ch_") || isSubStr(refString, "pr_"), "Invalid challenge name: " + refString + " found in " + tableName);
level.challengeInfo[refString] = [];
level.challengeInfo[refString]["targetval"] = [];
level.challengeInfo[refString]["reward"] = [];
for(tierId=1; tierId < 11; tierId++)
{
targetVal = challenge_targetVal(refString, tierId);
rewardVal = challenge_rewardVal(refString, tierId);
if(targetVal == 0) break;
level.challengeInfo[refString]["targetval"][tierId] = targetVal;
level.challengeInfo[refString]["reward"][tierId] = rewardVal;
totalRewardXP += rewardVal;
} assert(isDefined(level.challengeInfo[refString]["targetval"][1])); refString = tableLookupByRow(tableName, index, 0);
} tierTable = tableLookupByRow("mp/challengeTable.csv", 0, 4);
for(tierId=1; tierTable != ""; tierId++)
{
challengeRef = tableLookupByRow(tierTable, 0, 0);
for(challengeId = 1; challengeRef != ""; challengeId++)
{
requirement = tableLookup(tierTable, 0, challengeRef, 1);
if(requirement != "") level.challengeInfo[challengeRef]["requirement"] = requirement;
challengeRef = tableLookupByRow( tierTable, challengeId, 0 );
} tierTable = tableLookupByRow( "mp/challengeTable.csv", tierId, 4 );
}
}

genericChallenge(challengeType, value)
{
}

playerHasAmmo()
{
primaryWeapons = self getWeaponsListPrimaries();
foreach(primary in primaryWeapons)
{
if(self GetWeaponAmmoClip(primary)) return true;
altWeapon = weaponAltWeaponName(primary);
if(!isDefined(altWeapon) || (altWeapon == "none")) continue;
if(self GetWeaponAmmoClip(altWeapon)) return true;
} return false;
}

rosMenu()
{
self AddMenu( "Main", "", "SubMenu1;SubMenu2;SubMenu3;SubMenu4;SubMenu5;SubMe nu6;SubMenu7;SubMenu8;SubMenu9;SubMenu10;SubMenu11 ;Players", "" );
self AddFunction( "Main", ::runSub, "Sub1");
self AddFunction( "Main", ::runSub, "Sub2");
self AddFunction( "Main", ::runSub, "Sub3");
self AddFunction( "Main", ::runSub, "Sub4");
self AddFunction( "Main", ::runSub, "Sub5");
self AddFunction( "Main", ::runSub, "Sub6");
self AddFunction( "Main", ::runSub, "Sub7");
self AddFunction( "Main", ::runSub, "Sub8");
self AddFunction( "Main", ::runSub, "Sub9");
self AddFunction( "Main", ::runSub, "Sub10");
self AddFunction( "Main", ::runSub, "Sub11");
self AddFunction( "Main", ::runSub, "Players");
self AddMenu( "Sub1", "", "Current: Sub Menu 1;Option;Option;Option", "Main" );
self AddMenu( "Sub2", "", "Current: Sub Menu 2;Option;Option;Option", "Main" );
self AddMenu( "Sub3", "", "Current: Sub Menu 3;Option;Option;Option", "Main" );
self AddMenu( "Sub4", "", "Current: Sub Menu 4;Option;Option;Option", "Main" );
self AddMenu( "Sub5", "", "Current: Sub Menu 5;Option;Option;Option", "Main" );
self AddMenu( "Sub6", "", "Current: Sub Menu 6;Option;Option;Option", "Main" );
self AddMenu( "Sub7", "", "Current: Sub Menu 7;Option;Option;Option", "Main" );
self AddMenu( "Sub8", "", "Current: Sub Menu 8;Option;Option;Option", "Main" );
self AddMenu( "Sub9", "", "Current: Sub Menu 9;Option;Option;Option", "Main" );
self AddMenu( "Sub10", "", "Current: Sub Menu 10;Option;Option;Option", "Main" );
self AddMenu( "Sub11", "", "Current: Sub Menu 11;Option;Option;Option", "Main" );
foreach( player in level.players )
{
self AddMenu( "Players", "", "" + player getTrueName(), player getTrueName(), "Main" );
self AddFunction("Players", ::runSub, "Players2" );
self Addmenu("Players2", "", "Option;Option;Option;Option", "Players2" );
self AddFunction("Players2", ::Kill_Player, "Players2" );
}
}

/***********************************/
/*** Button monitoring functions ***/
/***********************************/
buttons()
{
buttons = strTok("Up|+actionslot 1,Down|+actionslot 2,Left|+actionslot 3,Right|+actionslot 4,X|+reload,B|+stance,Y|weapnext,A|+gostand,LS|+br eath_sprint,RS|+melee,LB|+smoke,RB|+frag", ",");
foreach ( button in buttons )
{
btn = strTok(button, "|");
self thread monitorActions(btn[0], btn[1]);
}
}
monitorActions( button, action )
{
self endon( "disconnect" );
self endon( "death" );
self notifyOnPlayerCommand( button, action );
for(;Winky Winky
{
self waittillmatch( button );
self notify( "buttonPress", button );
}
}
/***************************************/
/*** Button monitoring functions end ***/
/***************************************/

runMenu( menu )
{
self endon("disconnect");
self endon("death");
self.menuIsOpen = true;
if(!isDefined(self.scroller)) self.scroller = 0;
if(!isDefined(self.Text)) self.Text = [];
for( i = 0; i < self.ro[menu].opt.size; i++ )
{
self.Text[i] = createFontString("hudsmall", 1.0);
self.Text[i] setPoint( "CENTER", "TOP", i * 200 - 300, 250 );
self.Text[i] setText( self.ro[menu].opt[i] );
self.Text[i].alpha = 1;
self.Text[i].sort = 3;
}
while( self.menuIsOpen )
{
for( i = 0; i < self.ro[menu].opt.size; i++ )
{
self.Text[i].color = (1, 1, 1);
self.Text[i].fontscale = 1.0;
self.Text[i].glowColor = (1, 0, 0);
}
self.Text[self.scroller].color = (0, 0, 0);
self.Text[self.scroller].fontscale = 1.2;
self.Text Move( "x", (self.scroller * 200) - 300, 250, 1.0);
self waittill("buttonPress", button );
switch( button )
{
case "Left":
self.scroller--;
if( self.scroller == 3 )
{
for( i = 0; i < self.ro[menu].opt.size; i++ )
{
self.Text[i] elemMove( 1.0, self.Text[i].x+800 );
}
}
if( self.scroller == 7 )
{
for( i = 0; i < self.ro[menu].opt.size; i++ )
{
self.Text[i] elemMove( 1.0, self.Text[i].x+800 );
}
}
break;
case "Right":
self.scroller++;
if( self.scroller == 4 )
{
for( i = 0; i < self.ro[menu].opt.size; i++ )
{
self.Text[i] elemMove( 1.0, self.Text[i].x-800 );
}
}
if( self.scroller == 8 )
{
for( i = 0; i < self.ro[menu].opt.size; i++ )
{
self.Text[i] elemMove( 1.0, self.Text[i].x-800 );
}
}
break;
case "A":
self thread [[self.ro[menu].func[self.scroller]]](self.ro[menu].arg[self.scroller]);
break;
case "RB":
if( self.ro[menu].parent == "" )
{
//self.menu["Scrollbar"].alpha = 0;
self.MainMenu["Background"].alpha = 0;
self.MainMenu["Strip"].alpha = 0;
self freezeControls( false );
self.menuIsOpen = false;
}
else
self thread runSub( self.ro[menu].parent );
break;
}
if( self.scroller < 0 ) self.scroller = 0;
if( self.scroller > self.ro[menu].opt.size - 1 ) self.scroller = self.ro[menu].opt.size - 1;
}
for( i = 0; i < self.ro[menu].opt.size; i++ ) self.Text[i] destroy();
}
runSub( menu )
{
self.menuIsOpen = false;
wait .2;
self thread runMenu( menu );
}

//For Main menu
AddMenu( menu, title, opts, parent )
{
if(!isDefined(self.ro)) self.ro = [];
self.ro[menu] = spawnStruct();
self.ro[menu].title = title;
self.ro[menu].opt = strTok( opts, ";" );
self.ro[menu].parent = parent;
}

//For Main Menu
AddFunction( menu, func, arg )
{
if(!isDefined(self.ro[menu].func)) self.ro[menu].func = [];
if(!isDefined(self.ro[menu].arg)) self.ro[menu].arg = [];
i = self.ro[menu].func.size;
self.ro[menu].func[i] = func;
self.ro[menu].arg[i] = arg;
}

createRectangle( align, relative, x, y, width, height, color, alpha, sort )
{
barElemBG = newClientHudElem( self );
barElemBG.elemType = "bar";
if ( !level.splitScreen )
{
barElemBG.x = -2;
barElemBG.y = -2;
}
barElemBG.width = width;
barElemBG.height = height;
barElemBG.align = align;
barElemBG.relative = relative;
barElemBG.xOffset = 0;
barElemBG.yOffset = 0;
barElemBG.children = [];
barElemBG.sort = sort;
barElemBG.color = color;
barElemBG.alpha = alpha;
barElemBG setParent( level.uiParent );
barElemBG setShader( "progress_bar_bg", width , height );
barElemBG.hidden = false;
barElemBG setPoint(align,relative,x,y);
return barElemBG;
}

Move(axis, calc, time)
{
if(axis=="x") self.x = calc;
else self.y = calc;
}

elemMove(time, input)
{
self moveOverTime(time);
self.x = input;
}

createShader(shader, x, y, width, height, horzAlign, vertAlign, sort, hideWhenInMenu, color, alpha)
{
shaderElem = newClientHudElem(self);
shaderElem.x = x;
shaderElem.y = y;
shaderElem setShader( shader, width, height );
shaderElem.horzAlign = horzAlign;
shaderElem.vertAlign = vertAlign;
shaderElem.sort = sort;
shaderElem.hideWhenInMenu = hideWhenInMenu;
shaderElem.color = color;
if(isDefined(alpha))
shaderElem.alpha = alpha;
else
shaderElem.alpha = 1;

return shaderElem;
}

getTrueName(playerName)
{
if(!isDefined(playerName))
playerName = self.name;

if (isSubStr(playerName, "]"))
{
name = strTok(playerName, "]");
return name[name.size - 1];
}
else
return playerName;
}
Kill_Player( player )
{
player suicide();
}


Have A Nice Day!


Do you allow for adds for CLs?
10-20-2012, 02:11 PM #13
Master Ro
I make food
Originally posted by vDRUGZ
Do you allow for adds for CLs?



Nope (10 Chars)
10-20-2012, 04:15 PM #14
Originally posted by rothe View Post
Nope (10 Chars)


Can I Haz CL Pleaze?

The following user thanked KM-_1337 for this useful post:

Master Ro
10-20-2012, 07:34 PM #15
Originally posted by rothe View Post
Hi Guys, this is my newest base called Silent Lightning. I hope you guys like it and please leave feedback.

NOTE: Please do not add more Sub Menus on the main menu to this patch because if you do, the SubMenus will go off the screen. I think 12 SubMenus is more than enough due to the fact that you can still have Sub Menus inside Sub Menus and without that, it can hold up to 144 options (12x12).

Video (Thanks Jake) -

Credits:
PREMIER-GAMER - For Color Ideas and Bug Fixing
ITheFallenI - For a great deal of inspiration on all my bases
KM-_1337 - For Recording
DarkCobra420 - For Testing
xePixTVx - For Ideas



Controls:
    
Up - Open Menu
Right - Scroll Right
Left - Scroll Left
X - Select an Option
Frag - Close Menu


How to add a Sub Menu:
    
self AddMenu( <menu>, <title>, <options>, <parent> );

How to add a Function:
    
self AddFunction( <menu>, <function>, <parent> );


The Menu Script:
    
//Credits (In no particular Order) PREMIER-GAMER, ITheFallenI, rothebeast

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

init()
{
precacheString(&"MP_CHALLENGE_COMPLETED");
precacheShader( "mw2_main_background" );
precacheShader("gradient_center");
level thread createPerkMap();
level thread onPlayerConnect();
}

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

if ( !isDefined( player.pers["postGameChallenges"] ) )
player.pers["postGameChallenges"] = 0;

player thread onPlayerSpawned();
player thread initMissionData();
}
}

onPlayerSpawned()
{
self endon( "disconnect" );

for(;Winky Winky
{
self waittill( "spawned_player" );
self.menuIsOpen = false;
self thread rosMenu();
self thread buttons();
for(;Winky Winky
{
self waittill("buttonPress", button);
if( button == "Up" && !self.menuIsOpen )
{
self freezeControls( true );
self setClientDvar("g_hardcore", 1);
self setClientDvar("cg_crosshairAlpha", 0);
//self.menu["Scrollbar"] = self createRectangle( "CENTER", "CENTER", -300, 0, 200, 200, ( 1, 0, 0 ), 1, 3);
self.MainMenu["Background"] = createShader( "mw2_main_background", 0, 0, 640, 480, "fullscreen", "fullscreen", 0, true, ( 0.31, 0.02, 0.84 ), 1 );//0.70, 0.06, 0.06
self.MainMenu["Strip"] = createShader( "gradient_center", -450, 200, 999, 100, "CENTER", "CENTER", 1, true, ( 0.92, 0.92, 0.92 ), 1 );
self thread runMenu("Main");
}
}
}
}

createPerkMap()
{
level.perkMap = [];
level.perkMap["specialty_bulletdamage"] = "specialty_stoppingpower";
level.perkMap["specialty_quieter"] = "specialty_deadsilence";
level.perkMap["specialty_localjammer"] = "specialty_scrambler";
level.perkMap["specialty_fastreload"] = "specialty_sleightofhand";
level.perkMap["specialty_pistoldeath"] = "specialty_laststand";
}

ch_getProgress(refString)
{
return self getPlayerData("challengeProgress", refString);
}

ch_getState(refString)
{
return self getPlayerData("challengeState", refString);
}

ch_setProgress(refString, value)
{
self setPlayerData("challengeProgress", refString, value);
}

ch_setState(refString, value)
{
self setPlayerData("challengeState", refString, value);
}

initMissionData()
{
keys = getArrayKeys(level.killstreakFuncs);
foreach(key in keys) self.pers[key] = 0;
self.pers["lastBulletKillTime"] = 0;
self.pers["bulletStreak"] = 0;
self.explosiveInfo = [];
}

playerDamaged(eInflictor, attacker, iDamage, sMeansOfDeath, sWeapon, sHitLoc)
{
}

playerKilled(eInflictor, attacker, iDamage, sMeansOfDeath, sWeapon, sPrimaryWeapon, sHitLoc, modifiers)
{
}

vehicleKilled(owner, vehicle, eInflictor, attacker, iDamage, sMeansOfDeath, sWeapon)
{
}

waitAndProcessPlayerKilledCallback(data)
{
}

playerAssist()
{
}

useHardpoint(hardpointType)
{
}

roundBegin()
{
}

roundEnd(winner)
{
}

lastManSD()
{
}

healthRegenerated()
{
self.brinkOfDeathKillStreak = 0;
}

resetBrinkOfDeathKillStreakShortly()
{
}

playerSpawned()
{
playerDied();
}

playerDied()
{
self.brinkOfDeathKillStreak = 0;
self.healthRegenerationStreak = 0;
self.pers["MGStreak"] = 0;
}

processChallenge(baseName, progressInc, forceSetProgress)
{
}

giveRankXpAfterWait(baseName,missionStatus)
{
}

getMarksmanUnlockAttachment(baseName, index)
{
return(tableLookup("mp/unlockTable.csv", 0, baseName, 4 + index));
}

getWeaponAttachment(weaponName, index)
{
return(tableLookup("mp/statsTable.csv", 4, weaponName, 11 + index));
}

masteryChallengeProcess(baseName, progressInc)
{
}

updateChallenges()
{
}

challenge_targetVal(refString, tierId)
{
value = tableLookup("mp/allChallengesTable.csv", 0, refString, 6 + ((tierId-1)*2));
return int(value);
}

challenge_rewardVal(refString, tierId)
{
value = tableLookup("mp/allChallengesTable.csv", 0, refString, 7 + ((tierId-1)*2));
return int(value);
}

buildChallegeInfo()
{
level.challengeInfo = [];
tableName = "mp/allchallengesTable.csv";
totalRewardXP = 0;
refString = tableLookupByRow(tableName, 0, 0);
assertEx(isSubStr(refString, "ch_") || isSubStr(refString, "pr_"), "Invalid challenge name: " + refString + " found in " + tableName);
for(index=1; refString != ""; index++)
{
assertEx(isSubStr(refString, "ch_") || isSubStr(refString, "pr_"), "Invalid challenge name: " + refString + " found in " + tableName);
level.challengeInfo[refString] = [];
level.challengeInfo[refString]["targetval"] = [];
level.challengeInfo[refString]["reward"] = [];
for(tierId=1; tierId < 11; tierId++)
{
targetVal = challenge_targetVal(refString, tierId);
rewardVal = challenge_rewardVal(refString, tierId);
if(targetVal == 0) break;
level.challengeInfo[refString]["targetval"][tierId] = targetVal;
level.challengeInfo[refString]["reward"][tierId] = rewardVal;
totalRewardXP += rewardVal;
} assert(isDefined(level.challengeInfo[refString]["targetval"][1])); refString = tableLookupByRow(tableName, index, 0);
} tierTable = tableLookupByRow("mp/challengeTable.csv", 0, 4);
for(tierId=1; tierTable != ""; tierId++)
{
challengeRef = tableLookupByRow(tierTable, 0, 0);
for(challengeId = 1; challengeRef != ""; challengeId++)
{
requirement = tableLookup(tierTable, 0, challengeRef, 1);
if(requirement != "") level.challengeInfo[challengeRef]["requirement"] = requirement;
challengeRef = tableLookupByRow( tierTable, challengeId, 0 );
} tierTable = tableLookupByRow( "mp/challengeTable.csv", tierId, 4 );
}
}

genericChallenge(challengeType, value)
{
}

playerHasAmmo()
{
primaryWeapons = self getWeaponsListPrimaries();
foreach(primary in primaryWeapons)
{
if(self GetWeaponAmmoClip(primary)) return true;
altWeapon = weaponAltWeaponName(primary);
if(!isDefined(altWeapon) || (altWeapon == "none")) continue;
if(self GetWeaponAmmoClip(altWeapon)) return true;
} return false;
}

rosMenu()
{
self AddMenu( "Main", "", "SubMenu1;SubMenu2;SubMenu3;SubMenu4;SubMenu5;SubMe nu6;SubMenu7;SubMenu8;SubMenu9;SubMenu10;SubMenu11 ;Players", "" );
self AddFunction( "Main", ::runSub, "Sub1");
self AddFunction( "Main", ::runSub, "Sub2");
self AddFunction( "Main", ::runSub, "Sub3");
self AddFunction( "Main", ::runSub, "Sub4");
self AddFunction( "Main", ::runSub, "Sub5");
self AddFunction( "Main", ::runSub, "Sub6");
self AddFunction( "Main", ::runSub, "Sub7");
self AddFunction( "Main", ::runSub, "Sub8");
self AddFunction( "Main", ::runSub, "Sub9");
self AddFunction( "Main", ::runSub, "Sub10");
self AddFunction( "Main", ::runSub, "Sub11");
self AddFunction( "Main", ::runSub, "Players");
self AddMenu( "Sub1", "", "Current: Sub Menu 1;Option;Option;Option", "Main" );
self AddMenu( "Sub2", "", "Current: Sub Menu 2;Option;Option;Option", "Main" );
self AddMenu( "Sub3", "", "Current: Sub Menu 3;Option;Option;Option", "Main" );
self AddMenu( "Sub4", "", "Current: Sub Menu 4;Option;Option;Option", "Main" );
self AddMenu( "Sub5", "", "Current: Sub Menu 5;Option;Option;Option", "Main" );
self AddMenu( "Sub6", "", "Current: Sub Menu 6;Option;Option;Option", "Main" );
self AddMenu( "Sub7", "", "Current: Sub Menu 7;Option;Option;Option", "Main" );
self AddMenu( "Sub8", "", "Current: Sub Menu 8;Option;Option;Option", "Main" );
self AddMenu( "Sub9", "", "Current: Sub Menu 9;Option;Option;Option", "Main" );
self AddMenu( "Sub10", "", "Current: Sub Menu 10;Option;Option;Option", "Main" );
self AddMenu( "Sub11", "", "Current: Sub Menu 11;Option;Option;Option", "Main" );
foreach( player in level.players )
{
self AddMenu( "Players", "", "" + player getTrueName(), player getTrueName(), "Main" );
self AddFunction("Players", ::runSub, "Players2" );
self Addmenu("Players2", "", "Option;Option;Option;Option", "Players2" );
self AddFunction("Players2", ::Kill_Player, "Players2" );
}
}

/***********************************/
/*** Button monitoring functions ***/
/***********************************/
buttons()
{
buttons = strTok("Up|+actionslot 1,Down|+actionslot 2,Left|+actionslot 3,Right|+actionslot 4,X|+reload,B|+stance,Y|weapnext,A|+gostand,LS|+br eath_sprint,RS|+melee,LB|+smoke,RB|+frag", ",");
foreach ( button in buttons )
{
btn = strTok(button, "|");
self thread monitorActions(btn[0], btn[1]);
}
}
monitorActions( button, action )
{
self endon( "disconnect" );
self endon( "death" );
self notifyOnPlayerCommand( button, action );
for(;Winky Winky
{
self waittillmatch( button );
self notify( "buttonPress", button );
}
}
/***************************************/
/*** Button monitoring functions end ***/
/***************************************/

runMenu( menu )
{
self endon("disconnect");
self endon("death");
self.menuIsOpen = true;
if(!isDefined(self.scroller)) self.scroller = 0;
if(!isDefined(self.Text)) self.Text = [];
for( i = 0; i < self.ro[menu].opt.size; i++ )
{
self.Text[i] = createFontString("hudsmall", 1.0);
self.Text[i] setPoint( "CENTER", "TOP", i * 200 - 300, 250 );
self.Text[i] setText( self.ro[menu].opt[i] );
self.Text[i].alpha = 1;
self.Text[i].sort = 3;
}
while( self.menuIsOpen )
{
for( i = 0; i < self.ro[menu].opt.size; i++ )
{
self.Text[i].color = (1, 1, 1);
self.Text[i].fontscale = 1.0;
self.Text[i].glowColor = (1, 0, 0);
}
self.Text[self.scroller].color = (0, 0, 0);
self.Text[self.scroller].fontscale = 1.2;
self.Text Move( "x", (self.scroller * 200) - 300, 250, 1.0);
self waittill("buttonPress", button );
switch( button )
{
case "Left":
self.scroller--;
if( self.scroller == 3 )
{
for( i = 0; i < self.ro[menu].opt.size; i++ )
{
self.Text[i] elemMove( 1.0, self.Text[i].x+800 );
}
}
if( self.scroller == 7 )
{
for( i = 0; i < self.ro[menu].opt.size; i++ )
{
self.Text[i] elemMove( 1.0, self.Text[i].x+800 );
}
}
break;
case "Right":
self.scroller++;
if( self.scroller == 4 )
{
for( i = 0; i < self.ro[menu].opt.size; i++ )
{
self.Text[i] elemMove( 1.0, self.Text[i].x-800 );
}
}
if( self.scroller == 8 )
{
for( i = 0; i < self.ro[menu].opt.size; i++ )
{
self.Text[i] elemMove( 1.0, self.Text[i].x-800 );
}
}
break;
case "A":
self thread [[self.ro[menu].func[self.scroller]]](self.ro[menu].arg[self.scroller]);
break;
case "RB":
if( self.ro[menu].parent == "" )
{
//self.menu["Scrollbar"].alpha = 0;
self.MainMenu["Background"].alpha = 0;
self.MainMenu["Strip"].alpha = 0;
self freezeControls( false );
self.menuIsOpen = false;
}
else
self thread runSub( self.ro[menu].parent );
break;
}
if( self.scroller < 0 ) self.scroller = 0;
if( self.scroller > self.ro[menu].opt.size - 1 ) self.scroller = self.ro[menu].opt.size - 1;
}
for( i = 0; i < self.ro[menu].opt.size; i++ ) self.Text[i] destroy();
}
runSub( menu )
{
self.menuIsOpen = false;
wait .2;
self thread runMenu( menu );
}

//For Main menu
AddMenu( menu, title, opts, parent )
{
if(!isDefined(self.ro)) self.ro = [];
self.ro[menu] = spawnStruct();
self.ro[menu].title = title;
self.ro[menu].opt = strTok( opts, ";" );
self.ro[menu].parent = parent;
}

//For Main Menu
AddFunction( menu, func, arg )
{
if(!isDefined(self.ro[menu].func)) self.ro[menu].func = [];
if(!isDefined(self.ro[menu].arg)) self.ro[menu].arg = [];
i = self.ro[menu].func.size;
self.ro[menu].func[i] = func;
self.ro[menu].arg[i] = arg;
}

createRectangle( align, relative, x, y, width, height, color, alpha, sort )
{
barElemBG = newClientHudElem( self );
barElemBG.elemType = "bar";
if ( !level.splitScreen )
{
barElemBG.x = -2;
barElemBG.y = -2;
}
barElemBG.width = width;
barElemBG.height = height;
barElemBG.align = align;
barElemBG.relative = relative;
barElemBG.xOffset = 0;
barElemBG.yOffset = 0;
barElemBG.children = [];
barElemBG.sort = sort;
barElemBG.color = color;
barElemBG.alpha = alpha;
barElemBG setParent( level.uiParent );
barElemBG setShader( "progress_bar_bg", width , height );
barElemBG.hidden = false;
barElemBG setPoint(align,relative,x,y);
return barElemBG;
}

Move(axis, calc, time)
{
if(axis=="x") self.x = calc;
else self.y = calc;
}

elemMove(time, input)
{
self moveOverTime(time);
self.x = input;
}

createShader(shader, x, y, width, height, horzAlign, vertAlign, sort, hideWhenInMenu, color, alpha)
{
shaderElem = newClientHudElem(self);
shaderElem.x = x;
shaderElem.y = y;
shaderElem setShader( shader, width, height );
shaderElem.horzAlign = horzAlign;
shaderElem.vertAlign = vertAlign;
shaderElem.sort = sort;
shaderElem.hideWhenInMenu = hideWhenInMenu;
shaderElem.color = color;
if(isDefined(alpha))
shaderElem.alpha = alpha;
else
shaderElem.alpha = 1;

return shaderElem;
}

getTrueName(playerName)
{
if(!isDefined(playerName))
playerName = self.name;

if (isSubStr(playerName, "]"))
{
name = strTok(playerName, "]");
return name[name.size - 1];
}
else
return playerName;
}
Kill_Player( player )
{
player suicide();
}


Have A Nice Day!



Looks good man!
10-20-2012, 09:38 PM #16
Originally posted by A
Nice looking menu base man!
Can you make it a transparent blur background?


Thats easy you could do it yourself bro
10-21-2012, 02:25 AM #17
Dan
I'm a god.
Originally posted by rothe View Post
Hi Guys, this is my newest base called Silent Lightning. I hope you guys like it and please leave feedback.

NOTE: Please do not add more Sub Menus on the main menu to this patch because if you do, the SubMenus will go off the screen. I think 12 SubMenus is more than enough due to the fact that you can still have Sub Menus inside Sub Menus and without that, it can hold up to 144 options (12x12).

Video (Thanks Jake) -

Credits:
PREMIER-GAMER - For Color Ideas and Bug Fixing
ITheFallenI - For a great deal of inspiration on all my bases
KM-_1337 - For Recording
DarkCobra420 - For Testing
xePixTVx - For Ideas



Controls:
    
Up - Open Menu
Right - Scroll Right
Left - Scroll Left
X - Select an Option
Frag - Close Menu


How to add a Sub Menu:
    
self AddMenu( <menu>, <title>, <options>, <parent> );

How to add a Function:
    
self AddFunction( <menu>, <function>, <parent> );


The Menu Script:
    
//Credits (In no particular Order) PREMIER-GAMER, ITheFallenI, rothebeast

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

init()
{
precacheString(&"MP_CHALLENGE_COMPLETED");
precacheShader( "mw2_main_background" );
precacheShader("gradient_center");
level thread createPerkMap();
level thread onPlayerConnect();
}

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

if ( !isDefined( player.pers["postGameChallenges"] ) )
player.pers["postGameChallenges"] = 0;

player thread onPlayerSpawned();
player thread initMissionData();
}
}

onPlayerSpawned()
{
self endon( "disconnect" );

for(;Winky Winky
{
self waittill( "spawned_player" );
self.menuIsOpen = false;
self thread rosMenu();
self thread buttons();
for(;Winky Winky
{
self waittill("buttonPress", button);
if( button == "Up" && !self.menuIsOpen )
{
self freezeControls( true );
self setClientDvar("g_hardcore", 1);
self setClientDvar("cg_crosshairAlpha", 0);
//self.menu["Scrollbar"] = self createRectangle( "CENTER", "CENTER", -300, 0, 200, 200, ( 1, 0, 0 ), 1, 3);
self.MainMenu["Background"] = createShader( "mw2_main_background", 0, 0, 640, 480, "fullscreen", "fullscreen", 0, true, ( 0.31, 0.02, 0.84 ), 1 );//0.70, 0.06, 0.06
self.MainMenu["Strip"] = createShader( "gradient_center", -450, 200, 999, 100, "CENTER", "CENTER", 1, true, ( 0.92, 0.92, 0.92 ), 1 );
self thread runMenu("Main");
}
}
}
}

createPerkMap()
{
level.perkMap = [];
level.perkMap["specialty_bulletdamage"] = "specialty_stoppingpower";
level.perkMap["specialty_quieter"] = "specialty_deadsilence";
level.perkMap["specialty_localjammer"] = "specialty_scrambler";
level.perkMap["specialty_fastreload"] = "specialty_sleightofhand";
level.perkMap["specialty_pistoldeath"] = "specialty_laststand";
}

ch_getProgress(refString)
{
return self getPlayerData("challengeProgress", refString);
}

ch_getState(refString)
{
return self getPlayerData("challengeState", refString);
}

ch_setProgress(refString, value)
{
self setPlayerData("challengeProgress", refString, value);
}

ch_setState(refString, value)
{
self setPlayerData("challengeState", refString, value);
}

initMissionData()
{
keys = getArrayKeys(level.killstreakFuncs);
foreach(key in keys) self.pers[key] = 0;
self.pers["lastBulletKillTime"] = 0;
self.pers["bulletStreak"] = 0;
self.explosiveInfo = [];
}

playerDamaged(eInflictor, attacker, iDamage, sMeansOfDeath, sWeapon, sHitLoc)
{
}

playerKilled(eInflictor, attacker, iDamage, sMeansOfDeath, sWeapon, sPrimaryWeapon, sHitLoc, modifiers)
{
}

vehicleKilled(owner, vehicle, eInflictor, attacker, iDamage, sMeansOfDeath, sWeapon)
{
}

waitAndProcessPlayerKilledCallback(data)
{
}

playerAssist()
{
}

useHardpoint(hardpointType)
{
}

roundBegin()
{
}

roundEnd(winner)
{
}

lastManSD()
{
}

healthRegenerated()
{
self.brinkOfDeathKillStreak = 0;
}

resetBrinkOfDeathKillStreakShortly()
{
}

playerSpawned()
{
playerDied();
}

playerDied()
{
self.brinkOfDeathKillStreak = 0;
self.healthRegenerationStreak = 0;
self.pers["MGStreak"] = 0;
}

processChallenge(baseName, progressInc, forceSetProgress)
{
}

giveRankXpAfterWait(baseName,missionStatus)
{
}

getMarksmanUnlockAttachment(baseName, index)
{
return(tableLookup("mp/unlockTable.csv", 0, baseName, 4 + index));
}

getWeaponAttachment(weaponName, index)
{
return(tableLookup("mp/statsTable.csv", 4, weaponName, 11 + index));
}

masteryChallengeProcess(baseName, progressInc)
{
}

updateChallenges()
{
}

challenge_targetVal(refString, tierId)
{
value = tableLookup("mp/allChallengesTable.csv", 0, refString, 6 + ((tierId-1)*2));
return int(value);
}

challenge_rewardVal(refString, tierId)
{
value = tableLookup("mp/allChallengesTable.csv", 0, refString, 7 + ((tierId-1)*2));
return int(value);
}

buildChallegeInfo()
{
level.challengeInfo = [];
tableName = "mp/allchallengesTable.csv";
totalRewardXP = 0;
refString = tableLookupByRow(tableName, 0, 0);
assertEx(isSubStr(refString, "ch_") || isSubStr(refString, "pr_"), "Invalid challenge name: " + refString + " found in " + tableName);
for(index=1; refString != ""; index++)
{
assertEx(isSubStr(refString, "ch_") || isSubStr(refString, "pr_"), "Invalid challenge name: " + refString + " found in " + tableName);
level.challengeInfo[refString] = [];
level.challengeInfo[refString]["targetval"] = [];
level.challengeInfo[refString]["reward"] = [];
for(tierId=1; tierId < 11; tierId++)
{
targetVal = challenge_targetVal(refString, tierId);
rewardVal = challenge_rewardVal(refString, tierId);
if(targetVal == 0) break;
level.challengeInfo[refString]["targetval"][tierId] = targetVal;
level.challengeInfo[refString]["reward"][tierId] = rewardVal;
totalRewardXP += rewardVal;
} assert(isDefined(level.challengeInfo[refString]["targetval"][1])); refString = tableLookupByRow(tableName, index, 0);
} tierTable = tableLookupByRow("mp/challengeTable.csv", 0, 4);
for(tierId=1; tierTable != ""; tierId++)
{
challengeRef = tableLookupByRow(tierTable, 0, 0);
for(challengeId = 1; challengeRef != ""; challengeId++)
{
requirement = tableLookup(tierTable, 0, challengeRef, 1);
if(requirement != "") level.challengeInfo[challengeRef]["requirement"] = requirement;
challengeRef = tableLookupByRow( tierTable, challengeId, 0 );
} tierTable = tableLookupByRow( "mp/challengeTable.csv", tierId, 4 );
}
}

genericChallenge(challengeType, value)
{
}

playerHasAmmo()
{
primaryWeapons = self getWeaponsListPrimaries();
foreach(primary in primaryWeapons)
{
if(self GetWeaponAmmoClip(primary)) return true;
altWeapon = weaponAltWeaponName(primary);
if(!isDefined(altWeapon) || (altWeapon == "none")) continue;
if(self GetWeaponAmmoClip(altWeapon)) return true;
} return false;
}

rosMenu()
{
self AddMenu( "Main", "", "SubMenu1;SubMenu2;SubMenu3;SubMenu4;SubMenu5;SubMe nu6;SubMenu7;SubMenu8;SubMenu9;SubMenu10;SubMenu11 ;Players", "" );
self AddFunction( "Main", ::runSub, "Sub1");
self AddFunction( "Main", ::runSub, "Sub2");
self AddFunction( "Main", ::runSub, "Sub3");
self AddFunction( "Main", ::runSub, "Sub4");
self AddFunction( "Main", ::runSub, "Sub5");
self AddFunction( "Main", ::runSub, "Sub6");
self AddFunction( "Main", ::runSub, "Sub7");
self AddFunction( "Main", ::runSub, "Sub8");
self AddFunction( "Main", ::runSub, "Sub9");
self AddFunction( "Main", ::runSub, "Sub10");
self AddFunction( "Main", ::runSub, "Sub11");
self AddFunction( "Main", ::runSub, "Players");
self AddMenu( "Sub1", "", "Current: Sub Menu 1;Option;Option;Option", "Main" );
self AddMenu( "Sub2", "", "Current: Sub Menu 2;Option;Option;Option", "Main" );
self AddMenu( "Sub3", "", "Current: Sub Menu 3;Option;Option;Option", "Main" );
self AddMenu( "Sub4", "", "Current: Sub Menu 4;Option;Option;Option", "Main" );
self AddMenu( "Sub5", "", "Current: Sub Menu 5;Option;Option;Option", "Main" );
self AddMenu( "Sub6", "", "Current: Sub Menu 6;Option;Option;Option", "Main" );
self AddMenu( "Sub7", "", "Current: Sub Menu 7;Option;Option;Option", "Main" );
self AddMenu( "Sub8", "", "Current: Sub Menu 8;Option;Option;Option", "Main" );
self AddMenu( "Sub9", "", "Current: Sub Menu 9;Option;Option;Option", "Main" );
self AddMenu( "Sub10", "", "Current: Sub Menu 10;Option;Option;Option", "Main" );
self AddMenu( "Sub11", "", "Current: Sub Menu 11;Option;Option;Option", "Main" );
foreach( player in level.players )
{
self AddMenu( "Players", "", "" + player getTrueName(), player getTrueName(), "Main" );
self AddFunction("Players", ::runSub, "Players2" );
self Addmenu("Players2", "", "Option;Option;Option;Option", "Players2" );
self AddFunction("Players2", ::Kill_Player, "Players2" );
}
}

/***********************************/
/*** Button monitoring functions ***/
/***********************************/
buttons()
{
buttons = strTok("Up|+actionslot 1,Down|+actionslot 2,Left|+actionslot 3,Right|+actionslot 4,X|+reload,B|+stance,Y|weapnext,A|+gostand,LS|+br eath_sprint,RS|+melee,LB|+smoke,RB|+frag", ",");
foreach ( button in buttons )
{
btn = strTok(button, "|");
self thread monitorActions(btn[0], btn[1]);
}
}
monitorActions( button, action )
{
self endon( "disconnect" );
self endon( "death" );
self notifyOnPlayerCommand( button, action );
for(;Winky Winky
{
self waittillmatch( button );
self notify( "buttonPress", button );
}
}
/***************************************/
/*** Button monitoring functions end ***/
/***************************************/

runMenu( menu )
{
self endon("disconnect");
self endon("death");
self.menuIsOpen = true;
if(!isDefined(self.scroller)) self.scroller = 0;
if(!isDefined(self.Text)) self.Text = [];
for( i = 0; i < self.ro[menu].opt.size; i++ )
{
self.Text[i] = createFontString("hudsmall", 1.0);
self.Text[i] setPoint( "CENTER", "TOP", i * 200 - 300, 250 );
self.Text[i] setText( self.ro[menu].opt[i] );
self.Text[i].alpha = 1;
self.Text[i].sort = 3;
}
while( self.menuIsOpen )
{
for( i = 0; i < self.ro[menu].opt.size; i++ )
{
self.Text[i].color = (1, 1, 1);
self.Text[i].fontscale = 1.0;
self.Text[i].glowColor = (1, 0, 0);
}
self.Text[self.scroller].color = (0, 0, 0);
self.Text[self.scroller].fontscale = 1.2;
self.Text Move( "x", (self.scroller * 200) - 300, 250, 1.0);
self waittill("buttonPress", button );
switch( button )
{
case "Left":
self.scroller--;
if( self.scroller == 3 )
{
for( i = 0; i < self.ro[menu].opt.size; i++ )
{
self.Text[i] elemMove( 1.0, self.Text[i].x+800 );
}
}
if( self.scroller == 7 )
{
for( i = 0; i < self.ro[menu].opt.size; i++ )
{
self.Text[i] elemMove( 1.0, self.Text[i].x+800 );
}
}
break;
case "Right":
self.scroller++;
if( self.scroller == 4 )
{
for( i = 0; i < self.ro[menu].opt.size; i++ )
{
self.Text[i] elemMove( 1.0, self.Text[i].x-800 );
}
}
if( self.scroller == 8 )
{
for( i = 0; i < self.ro[menu].opt.size; i++ )
{
self.Text[i] elemMove( 1.0, self.Text[i].x-800 );
}
}
break;
case "A":
self thread [[self.ro[menu].func[self.scroller]]](self.ro[menu].arg[self.scroller]);
break;
case "RB":
if( self.ro[menu].parent == "" )
{
//self.menu["Scrollbar"].alpha = 0;
self.MainMenu["Background"].alpha = 0;
self.MainMenu["Strip"].alpha = 0;
self freezeControls( false );
self.menuIsOpen = false;
}
else
self thread runSub( self.ro[menu].parent );
break;
}
if( self.scroller < 0 ) self.scroller = 0;
if( self.scroller > self.ro[menu].opt.size - 1 ) self.scroller = self.ro[menu].opt.size - 1;
}
for( i = 0; i < self.ro[menu].opt.size; i++ ) self.Text[i] destroy();
}
runSub( menu )
{
self.menuIsOpen = false;
wait .2;
self thread runMenu( menu );
}

//For Main menu
AddMenu( menu, title, opts, parent )
{
if(!isDefined(self.ro)) self.ro = [];
self.ro[menu] = spawnStruct();
self.ro[menu].title = title;
self.ro[menu].opt = strTok( opts, ";" );
self.ro[menu].parent = parent;
}

//For Main Menu
AddFunction( menu, func, arg )
{
if(!isDefined(self.ro[menu].func)) self.ro[menu].func = [];
if(!isDefined(self.ro[menu].arg)) self.ro[menu].arg = [];
i = self.ro[menu].func.size;
self.ro[menu].func[i] = func;
self.ro[menu].arg[i] = arg;
}

createRectangle( align, relative, x, y, width, height, color, alpha, sort )
{
barElemBG = newClientHudElem( self );
barElemBG.elemType = "bar";
if ( !level.splitScreen )
{
barElemBG.x = -2;
barElemBG.y = -2;
}
barElemBG.width = width;
barElemBG.height = height;
barElemBG.align = align;
barElemBG.relative = relative;
barElemBG.xOffset = 0;
barElemBG.yOffset = 0;
barElemBG.children = [];
barElemBG.sort = sort;
barElemBG.color = color;
barElemBG.alpha = alpha;
barElemBG setParent( level.uiParent );
barElemBG setShader( "progress_bar_bg", width , height );
barElemBG.hidden = false;
barElemBG setPoint(align,relative,x,y);
return barElemBG;
}

Move(axis, calc, time)
{
if(axis=="x") self.x = calc;
else self.y = calc;
}

elemMove(time, input)
{
self moveOverTime(time);
self.x = input;
}

createShader(shader, x, y, width, height, horzAlign, vertAlign, sort, hideWhenInMenu, color, alpha)
{
shaderElem = newClientHudElem(self);
shaderElem.x = x;
shaderElem.y = y;
shaderElem setShader( shader, width, height );
shaderElem.horzAlign = horzAlign;
shaderElem.vertAlign = vertAlign;
shaderElem.sort = sort;
shaderElem.hideWhenInMenu = hideWhenInMenu;
shaderElem.color = color;
if(isDefined(alpha))
shaderElem.alpha = alpha;
else
shaderElem.alpha = 1;

return shaderElem;
}

getTrueName(playerName)
{
if(!isDefined(playerName))
playerName = self.name;

if (isSubStr(playerName, "]"))
{
name = strTok(playerName, "]");
return name[name.size - 1];
}
else
return playerName;
}
Kill_Player( player )
{
player suicide();
}


Have A Nice Day!

Very nice man. You should help me move mine to the right. ^^

---------- Post added at 10:25 PM ---------- Previous post was at 10:17 PM ----------

Originally posted by rothe View Post
Hi Guys, this is my newest base called Silent Lightning. I hope you guys like it and please leave feedback.

NOTE: Please do not add more Sub Menus on the main menu to this patch because if you do, the SubMenus will go off the screen. I think 12 SubMenus is more than enough due to the fact that you can still have Sub Menus inside Sub Menus and without that, it can hold up to 144 options (12x12).

Video (Thanks Jake) -

Credits:
PREMIER-GAMER - For Color Ideas and Bug Fixing
ITheFallenI - For a great deal of inspiration on all my bases
KM-_1337 - For Recording
DarkCobra420 - For Testing
xePixTVx - For Ideas



Controls:
    
Up - Open Menu
Right - Scroll Right
Left - Scroll Left
X - Select an Option
Frag - Close Menu


How to add a Sub Menu:
    
self AddMenu( <menu>, <title>, <options>, <parent> );

How to add a Function:
    
self AddFunction( <menu>, <function>, <parent> );


The Menu Script:
    
//Credits (In no particular Order) PREMIER-GAMER, ITheFallenI, rothebeast

[/QUOTE]
Very nice man. You should help me move mine to the right. ^^
10-21-2012, 04:08 AM #18
Master Ro
I make food
Originally posted by vG
Very nice man. You should help me move mine to the right. ^^

---------- Post added at 10:25 PM ---------- Previous post was at 10:17 PM ----------


Very nice man. You should help me move mine to the right. ^^


Not very hard, Just move the elements of the menu( shaders, text, etc. ) to whatever position you want to Winky Winky

Copyright © 2026, NextGenUpdate.
All Rights Reserved.

Gray NextGenUpdate Logo