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, 12:57 AM #2
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)[/QUOTE]

Nice job looks beast
10-20-2012, 01:16 AM #3
Choopie
Little One
Ro You did a good ass job with this one :y:
10-20-2012, 01:18 AM #4
Nice looking menu base man!
Can you make it a transparent blur background?
10-20-2012, 01:25 AM #5
Master Ro
I make food
Originally posted by A
Nice looking menu base man!
Can you make it a transparent blur background?


You can do that yourself :p

just go to self.Menu["Background"] and change the characteristics of the shader to whatever suits you Winky Winky
10-20-2012, 01:29 AM #6
John Leepe
< ^ > < ^ >
Looks good Rohan. Im a bit over you fetish for your Dark Blue Colors Winky Winky

The following user thanked John Leepe for this useful post:

10-20-2012, 01:32 AM #7
Black Panther
Former Staff
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!


Nice man, even though I want a different menu base from you stare
10-20-2012, 01:53 AM #8
looks nice broSmile
10-20-2012, 02:50 AM #9
ChromeVisionz
Do a barrel roll!
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 sexy :y:
10-20-2012, 02:51 AM #10
ChromeVisionz
Do a barrel roll!
Double post fail.

Copyright © 2026, NextGenUpdate.
All Rights Reserved.

Gray NextGenUpdate Logo