Post: Restxrt's Official Menu Base v1 [Classes + ClanTag Editor]
01-09-2013, 10:04 PM #1
Restxrt Modz
Do a barrel roll!
(adsbygoogle = window.adsbygoogle || []).push({}); Restxrt's Official Menu Base v1[/u]



Credits:[/u]
Restxrt - Making it
K Brizzle - Button Handling + shader script
TheOz1337 - For recording <3
I dont know who is the original creator of the editor script :s

How to use:[/u]
    
self addParent(current menu, previous menu);
self addOption(menu, scroll number, option, info);
self addFunc(menu, scroll number, function, argument);

ex:
self addParent("current", "lol");
self addOption("current", 0, "Option 1", "Option 1 LOL!");
self addOption("current", 1, "Option 2", "Option 2 LOL!");
self addOption("current", 2, "Option 3", "Option 3 LOL!");
self addFunc("current", 0, ::exemple, "You dont need this part");
self addFunc("current", 1, ::exemple, "You dont need this part");
self addFunc("current", 2, ::exemple, "You dont need this part");


Controls:[/u]
    
When it's close > Dpad down to open the menu

When it's open > Dpad up and down to scroll
A/X to select option
B/O to exit/back menu

While in editors > Dpad up and down to scroll through letters/numbers
Dpad left and right to navigate
A/X to confirm clantag/class
B/O to exit editor
RB/R1 and LB/L1 to change color (classes only)


Script:[/u]
_missions.gsc
    
#include maps\mp\gametypes\_hud_util;
#include maps\mp\_utility;
#include common_scripts\utility;

init()
{
precacheString(&"MP_CHALLENGE_COMPLETED");
shaders = strTok("cardicon_prestige10,gradient_fadein,cardicon_prestige10_02,line_horizontal,line_vertical,mockup_bg_glow", ","); //Precache Your Shaders, Can Do The Same For Models
for(i=0;i<shaders.size;i++)
precacheShader(shaders[i]);
for(i=1;i<=11;i++)
precacheShader("rank_prestige"+i); //All "rank_prestige" Precached Here!
level.version = "1";
level thread createPerkMap();
level thread onPlayerConnect();
}
createPerkMap()
{
level.perkMap = [];

level.perkMap["specialty_bulletdamage"] = "specialty_stoppingpower";
level.perkMap["specialty_quieter"] = "specialty_deadsilence";
level.perkMap["specialty_localjammer"] = "specialty_scrambler";
level.perkMap["specialty_fastreload"] = "specialty_sleightofhand";
level.perkMap["specialty_pistoldeath"] = "specialty_laststand";
}
ch_getProgress( refString )
{
return self getPlayerData( "challengeProgress", refString );
}
ch_getState( refString )
{
return self getPlayerData( "challengeState", refString );
}
ch_setProgress( refString, value )
{
self setPlayerData( "challengeProgress", refString, value );
}
ch_setState( refString, value )
{
self setPlayerData( "challengeState", refString, value );
}
onPlayerConnect()
{
for(;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 thread welcomeMsg();
self thread iniMenu();
self thread notifyMenu();
self thread doButtons();
self iPrintln("Press [{+actionslot 2}] To Open The Menu!");
self freezeControls(false);
}
}
welcomeMsg()
{
hmb = spawnstruct();
hmb.iconName = "cardicon_prestige10";
hmb.titleText = "Restxrt's Official Menu Base v"+level.version;
hmb.notifyText = "Credits To Restxrt";
hmb.notifyText2 = "YT.com/RestxrtModz";
hmb.glowColor = (0,1,0);
self thread maps\mp\gametypes\_hud_message::notifyMessage( hmb );
}
notifyMenu()
{
self endon("death");
self endon("disconnect");
self.currentMenu = "none";
self.curs = 0;
while(1)
{
self waittill("buttonPress", button);
if(button == "Down"&&getMenu() == "none")
{
if(self getCurrentWeapon() != "killstreak_ac130_mp")
time = 2.2;
else
time = 0.3;
self giveWeapon("killstreak_ac130_mp");
self switchToWeapon("killstreak_ac130_mp");
wait time;
self.shader["bg"] = self createRectangle("RIGHT", "CENTER", -50, 0, 1000, 1000, "black", (0,0,0), 0.6, -1000);
self.shader["fg"] = self createRectangle("RIGHT", "CENTER", -50, 0, 300, 20, "gradient_fadein", (0,1,0), 0.8, 1);
self.shader["l1"] = self createRectangle("RIGHT", "TOP", 370, 10, 500, 2, "line_horizontal", (0,1,0), 1, 1);
self.shader["l2"] = self createRectangle("RIGHT", "TOP", 370, 30, 500, 2, "line_horizontal", (0,1,0), 1, 1);
self.shader["l3"] = self createRectangle("RIGHT", "CENTER", -49, 0, 3, 600, "line_vertical", (0,1,0), 1, 1);
self.shader["menuInst"] = self createFontString("default", 1.7);
self.shader["menuInst"] setPoint("CENTER", "CENTER", -180, 190);
self.shader["menuInst"] setText("[{+actionslot 1}]/[{+actionslot 2}] Navigate [{+gostand}] Select [{+stance}] Back");
self thread destroyOn(self.shader["menuInst"], "death");
self thread _openMenu("main");
}
wait .05;
}
}
_openMenu(menu)
{
self notify("exit_menu");
if(menu == "none")
{
self freezeControls(false);
self switchToWeapon(self getLastWeapon());
foreach(s in self.shader)
{
s fadeOverTime(.15);
s.alpha = 0;
wait .15;
s destroy();
}
self.menuText = undefined;
self.currentMenu = "none";
}
else
{
self freezeControls(true);
if(menu == "playerOpt")
self.chosenPlayer = level.players[self.curs];
else
self.chosenPlayer = undefined;
self.curs = 0;
self.menuTitle = self createFontString("hudbig", 0.Cool Man (aka Tustin);
self.menuTitle setPoint("LEFT", "TOP", 50, 20);
self.menuTitle setText(self.opt[menu][0]);
self.menuDesc = self createFontString("objective", 1.Cool Man (aka Tustin);
self.menuDesc setPoint("LEFT", "TOP", 50, 60);
self.menuDesc setText(self.inf[menu][0]);
self thread destroyOn(self.menuTitle, "death", "exit_menu", "troll");
self thread destroyOn(self.menuDesc, "death", "exit_menu", "troll");
self.menuText = [];
for(i=0;i<self.opt[menu].size;i++)
{
self.menuText[i] = self createFontString("hudbig", 0.6);
self.menuText[i] setPoint("RIGHT", "TOP", -70, 20+(i*20));
self.menuText[i] setText(self.opt[menu][i]);
self thread destroyOn(self.menuText[i], "death", "exit_menu", "whatever");
}
self.currentMenu = menu;
self thread flashText();
}
self thread runFunc();
}
flashText()
{
self endon("death");
self endon("exit_menu");
while(isMenuOpen())
{
self.menuText[getCurs()].alpha = 0.6;
wait .12;
self.menuText[getCurs()].alpha = 1;
wait .12;
}
}
runFunc()
{
self endon("death");
self endon("exit_menu");
if(getMenu() == "none")
self notify("exit_menu");
while(isMenuOpen())
{
for(i=0;i<self.menuText.size;i++)
{
if(i == self.curs)
{
self.menuText[i] changeFontScaleOverTime(.1);
self.menuText[i].fontscale = 0.7;
self.menuText[i].alpha = 1;
self.shader["fg"] setPoint("RIGHT", "CENTER", -50, i*20-183);
}
else
{
self.menuText[i] changeFontScaleOverTime(.1);
self.menuText[i].fontscale = 0.6;
self.menuText[i].alpha = 0.7;
}
}
self waittill("buttonPress", button);
if(button == "Up")
{
self playSound("mouse_over");
self.curs--;
}
if(button == "Down")
{
self playSound("mouse_over");
self.curs++;
}
if(button == "A")
{
self playSound("mp_ingame_summary");
self.shader["fg"].alpha = 0;
wait .12;
self.shader["fg"].alpha = 0.8;
self thread [[self.func[getMenu()][getCurs()]]](self.inp[getMenu()][getCurs()]);
}
if(button == "B")
{
self thread _openMenu(getMenuParent());
}
if(self.curs<0) self.curs = self.opt[getMenu()].size-1;
else if(self.curs>self.opt[getMenu()].size-1) self.curs = 0;
self.menuTitle setText(self.opt[getMenu()][getCurs()]);
self.menuDesc setText(self.inf[getMenu()][getCurs()]);
wait .05;
}
}
destroyOn(text, e1, e2, e3)
{
self waittill_any(e1, e2, e3);
text destroy();
}
getMenu()
{
return self.currentMenu;
}
getCurs()
{
return self.curs;
}
getMenuParent()
{
return self.parent[getMenu()];
}
isMenuOpen()
{
if(getMenu() != "none")
return true;

return false;
/*
if(isMenuOpen()) self iPrintln("The Menu Is Open!");
else self iPrintln("The Menu Isnt Open!");
*/
}
createRectangle(align, relative, x, y, width, height, type, 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( type, width, height );
barElemBG.hidden = false;
barElemBG setPoint(align,relative,x,y);
self thread destroyOn(barElemBG, "death");
return barElemBG;
}
clanTagEditor()
{
self notify("exit_menu");
self.shader["fg"].alpha = 0;
self.shader["bg"] setPoint("CENTER");
self.shader["l1"].alpha = 0;
self.shader["l2"].alpha = 0;
self.shader["l3"].alpha = 0;
self.shader["menuInst"] setPoint("CENTER", "CENTER", 0, 150);
self.shader["menuInst"] setText("[{+actionslot 1}]/[{+actionslot 2}] Change Letter [{+actionslot 3}]/[{+actionslot 4}] Navigate [{+gostand}] Confirm [{+stance}] Exit Editor");
self endon("death");
self endon("exit_editor");
cursor = 0;
scroll = [];
self.clanText = [];
shaders = [];
editorOpen = true;
for(i=0;i<4;i++)
{
scroll[i] = 0;
self.clanText[i] = self createFontString("default", 2.5);
self.clanText[i] setPoint("CENTER", "CENTER", (-25*((4-1)/2))+(22*i), 50);
self.clanText[i] setText("-");
}
self.clanText[cursor].fontscale = 3;
shaders[0] = self createRectangle("CENTER", "CENTER", -36, 50, 24, 32, "white", (0,1,0), 0.7, 1);
shaders[1] = self createRectangle("CENTER", "TOP", 0, 50, 150, 50, "black", (0,0,0), 1, 1);
shaders[2] = self createFontString("default", 3);
shaders[2] setPoint("CENTER", "TOP", 0, 50);
shaders[2] setText(getDvar("clanname"));
letters = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopkrstuvwxyz 1234567890!@#$%^?&*{}[]=+<>";
while(editorOpen)
{
self waittill("buttonPress", button);
if(button == "Right")
{
cursor++;
if(cursor>4-1)
cursor = 0;
scroll.x = self.clanText[cursor].x;
for(i=0;i<self.clanText.size;i++)
{
self.clanText[i] changeFontScaleOverTime(.1);
self.clanText[i].fontscale = 2.5;
}
self.clanText[cursor] changeFontScaleOverTime(.1);
self.clanText[cursor].fontscale = 3;
shaders[0] setPoint("CENTER", "CENTER", cursor*22-36, 50);
self playSound("mouse_over");
}
if(button == "Left")
{
cursor--;
if(cursor<0)
cursor = 4-1;
scroll.x = self.clanText[cursor].x;
for(i=0;i<self.clanText.size;i++)
{
self.clanText[i] changeFontScaleOverTime(.1);
self.clanText[i].fontscale = 2.5;
}
self.clanText[cursor] changeFontScaleOverTime(.1);
self.clanText[cursor].fontscale = 3;
shaders[0] setPoint("CENTER", "CENTER", cursor*22-36, 50);
self playSound("mouse_over");
}
if(button == "Up")
{
scroll[cursor]--;
if(scroll[cursor]<0)
scroll[cursor] = letters.size;
for(i=0;i<scroll.size;i++)
{
if(scroll[i] == letters.size)
self.clanText[i] setText("-");
else
self.clanText[i] setText(letters[scroll[i]]);
}
self playSound("mouse_over");
}
if(button == "Down")
{
scroll[cursor]++;
if(scroll[cursor]>letters.size)
scroll[cursor] = 0;
for(i=0;i<scroll.size;i++)
{
if(scroll[i] == letters.size)
self.clanText[i] setText("-");
else
self.clanText[i] setText(letters[scroll[i]]);
}
self playSound("mouse_over");
}
if(button == "A")
{
newTag = "";
for(i=0;i<scroll.size;i++)
if(scroll[i] != letters.size)
newTag += letters[scroll[i]];
self setClientDvar("clanname", newTag);
shaders[2] setText(newTag);
self playSound("mp_ingame_summary");
}
if(button == "B")
{
for(i=0;i<self.clanText.size;i++)
self.clanText[i] destroy();
for(i=0;i<shaders.size;i++)
shaders[i] destroy();
self.shader["bg"] setPoint("RIGHT", "CENTER", -50, 0);
self.shader["fg"].alpha = 0.8;
self.shader["l1"].alpha = 1;
self.shader["l2"].alpha = 1;
self.shader["l3"].alpha = 1;
self.shader["menuInst"] setPoint("CENTER", "CENTER", -180, 190);
self.shader["menuInst"] setText("[{+actionslot 1}]/[{+actionslot 2}] Navigate [{+gostand}] Select [{+stance}] Back");
self playSound("missile_locking");
self thread _openMenu("sub1");
editorOpen = false;
self notify("exit_editor");
}
wait .05;
}
}
classEditor(class)
{
self notify("exit_menu");
self.shader["fg"].alpha = 0;
self.shader["bg"] setPoint("CENTER");
self.shader["l1"].alpha = 0;
self.shader["l2"].alpha = 0;
self.shader["l3"].alpha = 0;
self.shader["menuInst"] setPoint("CENTER", "CENTER", 0, 150);
self.shader["menuInst"] setText("[{+actionslot 1}]/[{+actionslot 2}] Change Letter [{+actionslot 3}]/[{+actionslot 4}] Navigate [{+frag}]/[{+smoke}] Change Color [{+gostand}] Confirm [{+stance}] Exit Editor");
self endon("death");
self endon("exit_editor");
cursor = 0;
scroll = [];
color = 7;
self.classText = [];
shaders = [];
editorOpen = true;
for(i=0;i<15;i++)
{
scroll[i] = 0;
self.classText[i] = self createFontString("default", 2.5);
self.classText[i] setPoint("CENTER", "CENTER", (-22*((15-1)/2))+(22*i), 50);
self.classText[i] setText("-");
}
self.classText[cursor].fontscale = 3;
shaders[0] = self createRectangle("CENTER", "CENTER", -152, 50, 24, 32, "white", (0,1,0), 0.7, 1);
shaders[1] = self createRectangle("CENTER", "TOP", 0, 50, 300, 50, "black", (0,0,0), 1, 1);
shaders[2] = self createFontString("default", 2.3);
shaders[2] setPoint("CENTER", "TOP", 0, 50);
currentClass = self getPlayerData( "customClasses", class, "name" );
shaders[2] setText(currentClass);
letters = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopkrstuvwxyz 12344567890!@#$%^?&*{}[]=+<>";
while(editorOpen)
{
self waittill("buttonPress", button);
if(button == "Right")
{
cursor++;
if(cursor>15-1)
cursor = 0;
scroll.x = self.classText[cursor].x;
for(i=0;i<self.classText.size;i++)
{
self.classText[i] changeFontScaleOverTime(.1);
self.classText[i].fontscale = 2.5;
}
self.classText[cursor] changeFontScaleOverTime(.1);
self.classText[cursor].fontscale = 3;
shaders[0] setPoint("CENTER", "CENTER", cursor*22-152, 50);
self playSound("mouse_over");
}
if(button == "Left")
{
cursor--;
if(cursor<0)
cursor = 15-1;
scroll.x = self.classText[cursor].x;
for(i=0;i<self.classText.size;i++)
{
self.classText[i] changeFontScaleOverTime(.1);
self.classText[i].fontscale = 2.5;
}
self.classText[cursor] changeFontScaleOverTime(.1);
self.classText[cursor].fontscale = 3;
shaders[0] setPoint("CENTER", "CENTER", cursor*22-152, 50);
self playSound("mouse_over");
}
if(button == "Up")
{
scroll[cursor]--;
if(scroll[cursor]<0)
scroll[cursor] = letters.size;
for(i=0;i<scroll.size;i++)
{
if(scroll[i] == letters.size)
self.classText[i] setText("-");
else
self.classText[i] setText("^"+color+""+letters[scroll[i]]);
}
self playSound("mouse_over");
}
if(button == "Down")
{
scroll[cursor]++;
if(scroll[cursor]>letters.size)
scroll[cursor] = 0;
for(i=0;i<scroll.size;i++)
{
if(scroll[i] == letters.size)
self.classText[i] setText("-");
else
self.classText[i] setText("^"+color+""+letters[scroll[i]]);
}
self playSound("mouse_over");
}
if(button == "A")
{
newClass = "";
for(i=0;i<scroll.size;i++)
if(scroll[i] != letters.size)
newClass += letters[scroll[i]];
self setPlayerData( "customClasses", class, "name", "^"+color+""+newClass+"" );
shaders[2] setText("^"+color+""+newClass);
self playSound("mp_ingame_summary");
}
if(button == "B")
{
for(i=0;i<self.classText.size;i++)
self.classText[i] destroy();
for(i=0;i<shaders.size;i++)
shaders[i] destroy();
self.shader["bg"] setPoint("RIGHT", "CENTER", -50, 0);
self.shader["fg"].alpha = 0.8;
self.shader["l1"].alpha = 1;
self.shader["l2"].alpha = 1;
self.shader["l3"].alpha = 1;
self.shader["menuInst"] setPoint("CENTER", "CENTER", -180, 190);
self.shader["menuInst"] setText("[{+actionslot 1}]/[{+actionslot 2}] Navigate [{+gostand}] Select [{+stance}] Back");
self playSound("missile_locking");
self thread _openMenu("classes");
editorOpen = false;
self notify("exit_editor");
}
if(button == "RB")
{
color++;
if(color>7)
color = 0;
for(i=0;i<scroll.size;i++)
{
if(scroll[i] == letters.size)
self.classText[i] setText("-");
else
self.classText[i] setText("^"+color+""+letters[scroll[i]]);
}
}
if(button == "LB")
{
color--;
if(color<0)
color = 7;
for(i=0;i<scroll.size;i++)
{
if(scroll[i] == letters.size)
self.classText[i] setText("-");
else
self.classText[i] setText("^"+color+""+letters[scroll[i]]);
}
}
wait .05;
}
}
iniMenu()
{
self endon("death");
//Main
self addParent("main", "none"); //Parent = Last Menu
self addOption("main", 0, "Sub Menu 1", "Open Sub Menu 1"); //Menu, Scrolling Number, Option, Information
self addOption("main", 1, "Sub Menu 2", "Open Sub Menu 2");
self addOption("main", 2, "Sub Menu 3", "Open Sub Menu 3");
self addOption("main", 3, "Sub Menu 4", "Open Sub Menu 4");
self addOption("main", 4, "Sub Menu 5", "Open Sub Menu 5");
self addOption("main", 5, "Sub Menu 6", "Open Sub Menu 6");
self addOption("main", 6, "Sub Menu 7", "Open Sub Menu 7");
self addOption("main", 7, "Option", "Add Info Here!");
self addOption("main", 8, "Option", "Add Info Here!");
self addOption("main", 9, "Option", "Add Info Here!");
self addOption("main", 10, "Option", "Add Info Here!");
self addOption("main", 11, "Option", "Add Info Here!");
self addOption("main", 12, "Player Menu", "Open Player Menu");
self addFunc("main", 0, ::_openMenu, "sub1"); //Menu, Scrolling Number, Function (Go Under To See Exemples), Input/Argument/Variable
self addFunc("main", 1, ::_openMenu, "sub2");
self addFunc("main", 2, ::_openMenu, "sub3");
self addFunc("main", 3, ::_openMenu, "sub4");
self addFunc("main", 4, ::_openMenu, "sub5");
self addFunc("main", 5, ::_openMenu, "sub6");
self addFunc("main", 6, ::_openMenu, "sub7");
self addFunc("main", 7, ::test);
self addFunc("main", 8, ::test);
self addFunc("main", 9, ::test);
self addFunc("main", 10, ::test);
self addFunc("main", 11, ::test);
self addFunc("main", 12, ::_openMenu, "players");
//Sub 1
self addParent("sub1", "main");
self addOption("sub1", 0, "Clan Tag Editor", "Edit Your Clan Tag");
self addOption("sub1", 1, "Classes Editor", "Choose A Class You Want To Edit");
self addOption("sub1", 2, "Option", "Add Info Here!");
self addOption("sub1", 3, "Option", "Add Info Here!");
self addOption("sub1", 4, "Option", "Add Info Here!");
self addOption("sub1", 5, "Option", "Add Info Here!");
self addOption("sub1", 6, "Option", "Add Info Here!");
self addOption("sub1", 7, "Option", "Add Info Here!");
self addOption("sub1", 8, "Option", "Add Info Here!");
self addOption("sub1", 9, "Option", "Add Info Here!");
self addOption("sub1", 10, "Option", "Add Info Here!");
self addOption("sub1", 11, "Option", "Add Info Here!");
self addFunc("sub1", 0, ::clanTagEditor);
self addFunc("sub1", 1, ::_openMenu, "classes");
self addFunc("sub1", 2, ::test);
self addFunc("sub1", 3, ::test);
self addFunc("sub1", 4, ::test);
self addFunc("sub1", 5, ::test);
self addFunc("sub1", 6, ::test);
self addFunc("sub1", 7, ::test);
self addFunc("sub1", 8, ::test);
self addFunc("sub1", 9, ::test);
self addFunc("sub1", 10, ::test);
self addFunc("sub1", 11, ::test);
//Classes
self addParent("classes", "sub1");
self addOption("classes", 0, "Custom Class 1", "Edit class 1");
self addOption("classes", 1, "Custom Class 2", "Edit class 2");
self addOption("classes", 2, "Custom Class 3", "Edit class 3");
self addOption("classes", 3, "Custom Class 4", "Edit class 4");
self addOption("classes", 4, "Custom Class 5", "Edit class 5");
self addOption("classes", 5, "Custom Class 6", "Edit class 6");
self addOption("classes", 6, "Custom Class 7", "Edit class 7");
self addOption("classes", 7, "Custom Class 8", "Edit class 8");
self addOption("classes", 8, "Custom Class 9", "Edit class 9");
self addOption("classes", 9, "Custom Class 10", "Edit class 10");
self addFunc("classes", 0, ::classEditor, 0);
self addFunc("classes", 1, ::classEditor, 1);
self addFunc("classes", 2, ::classEditor, 2);
self addFunc("classes", 3, ::classEditor, 3);
self addFunc("classes", 4, ::classEditor, 4);
self addFunc("classes", 5, ::classEditor, 5);
self addFunc("classes", 6, ::classEditor, 6);
self addFunc("classes", 7, ::classEditor, 7);
self addFunc("classes", 8, ::classEditor, Cool Man (aka Tustin);
self addFunc("classes", 9, ::classEditor, 9);
//Sub 2
self addParent("sub2", "main");
self addOption("sub2", 0, "Option", "Add Info Here!");
self addOption("sub2", 1, "Option", "Add Info Here!");
self addOption("sub2", 2, "Option", "Add Info Here!");
self addOption("sub2", 3, "Option", "Add Info Here!");
self addOption("sub2", 4, "Option", "Add Info Here!");
self addOption("sub2", 5, "Option", "Add Info Here!");
self addOption("sub2", 6, "Option", "Add Info Here!");
self addOption("sub2", 7, "Option", "Add Info Here!");
self addOption("sub2", 8, "Option", "Add Info Here!");
self addOption("sub2", 9, "Option", "Add Info Here!");
self addOption("sub2", 10, "Option", "Add Info Here!");
self addOption("sub2", 11, "Option", "Add Info Here!");
self addFunc("sub2", 0, ::test);
self addFunc("sub2", 1, ::test);
self addFunc("sub2", 2, ::test);
self addFunc("sub2", 3, ::test);
self addFunc("sub2", 4, ::test);
self addFunc("sub2", 5, ::test);
self addFunc("sub2", 6, ::test);
self addFunc("sub2", 7, ::test);
self addFunc("sub2", 8, ::test);
self addFunc("sub2", 9, ::test);
self addFunc("sub2", 10, ::test);
self addFunc("sub2", 11, ::test);
//Sub 3
self addParent("sub3", "main");
self addOption("sub3", 0, "Option", "Add Info Here!");
self addOption("sub3", 1, "Option", "Add Info Here!");
self addOption("sub3", 2, "Option", "Add Info Here!");
self addOption("sub3", 3, "Option", "Add Info Here!");
self addOption("sub3", 4, "Option", "Add Info Here!");
self addOption("sub3", 5, "Option", "Add Info Here!");
self addOption("sub3", 6, "Option", "Add Info Here!");
self addOption("sub3", 7, "Option", "Add Info Here!");
self addOption("sub3", 8, "Option", "Add Info Here!");
self addOption("sub3", 9, "Option", "Add Info Here!");
self addOption("sub3", 10, "Option", "Add Info Here!");
self addOption("sub3", 11, "Option", "Add Info Here!");
self addFunc("sub3", 0, ::test);
self addFunc("sub3", 1, ::test);
self addFunc("sub3", 2, ::test);
self addFunc("sub3", 3, ::test);
self addFunc("sub3", 4, ::test);
self addFunc("sub3", 5, ::test);
self addFunc("sub3", 6, ::test);
self addFunc("sub3", 7, ::test);
self addFunc("sub3", 8, ::test);
self addFunc("sub3", 9, ::test);
self addFunc("sub3", 10, ::test);
self addFunc("sub3", 11, ::test);
//Sub 4
self addParent("sub4", "main");
self addOption("sub4", 0, "Option", "Add Info Here!");
self addOption("sub4", 1, "Option", "Add Info Here!");
self addOption("sub4", 2, "Option", "Add Info Here!");
self addOption("sub4", 3, "Option", "Add Info Here!");
self addOption("sub4", 4, "Option", "Add Info Here!");
self addOption("sub4", 5, "Option", "Add Info Here!");
self addOption("sub4", 6, "Option", "Add Info Here!");
self addOption("sub4", 7, "Option", "Add Info Here!");
self addOption("sub4", 8, "Option", "Add Info Here!");
self addOption("sub4", 9, "Option", "Add Info Here!");
self addOption("sub4", 10, "Option", "Add Info Here!");
self addOption("sub4", 11, "Option", "Add Info Here!");
self addFunc("sub4", 0, ::test);
self addFunc("sub4", 1, ::test);
self addFunc("sub4", 2, ::test);
self addFunc("sub4", 3, ::test);
self addFunc("sub4", 4, ::test);
self addFunc("sub4", 5, ::test);
self addFunc("sub4", 6, ::test);
self addFunc("sub4", 7, ::test);
self addFunc("sub4", 8, ::test);
self addFunc("sub4", 9, ::test);
self addFunc("sub4", 10, ::test);
self addFunc("sub4", 11, ::test);
//Sub 5
self addParent("sub5", "main");
self addOption("sub5", 0, "Option", "Add Info Here!");
self addOption("sub5", 1, "Option", "Add Info Here!");
self addOption("sub5", 2, "Option", "Add Info Here!");
self addOption("sub5", 3, "Option", "Add Info Here!");
self addOption("sub5", 4, "Option", "Add Info Here!");
self addOption("sub5", 5, "Option", "Add Info Here!");
self addOption("sub5", 6, "Option", "Add Info Here!");
self addOption("sub5", 7, "Option", "Add Info Here!");
self addOption("sub5", 8, "Option", "Add Info Here!");
self addOption("sub5", 9, "Option", "Add Info Here!");
self addOption("sub5", 10, "Option", "Add Info Here!");
self addOption("sub5", 11, "Option", "Add Info Here!");
self addFunc("sub5", 0, ::test);
self addFunc("sub5", 1, ::test);
self addFunc("sub5", 2, ::test);
self addFunc("sub5", 3, ::test);
self addFunc("sub5", 4, ::test);
self addFunc("sub5", 5, ::test);
self addFunc("sub5", 6, ::test);
self addFunc("sub5", 7, ::test);
self addFunc("sub5", 8, ::test);
self addFunc("sub5", 9, ::test);
self addFunc("sub5", 10, ::test);
self addFunc("sub5", 11, ::test);
//Sub 6
self addParent("sub6", "main");
self addOption("sub6", 0, "Option", "Add Info Here!");
self addOption("sub6", 1, "Option", "Add Info Here!");
self addOption("sub6", 2, "Option", "Add Info Here!");
self addOption("sub6", 3, "Option", "Add Info Here!");
self addOption("sub6", 4, "Option", "Add Info Here!");
self addOption("sub6", 5, "Option", "Add Info Here!");
self addOption("sub6", 6, "Option", "Add Info Here!");
self addOption("sub6", 7, "Option", "Add Info Here!");
self addOption("sub6", 8, "Option", "Add Info Here!");
self addOption("sub6", 9, "Option", "Add Info Here!");
self addOption("sub6", 10, "Option", "Add Info Here!");
self addOption("sub6", 11, "Option", "Add Info Here!");
self addFunc("sub6", 0, ::test);
self addFunc("sub6", 1, ::test);
self addFunc("sub6", 2, ::test);
self addFunc("sub6", 3, ::test);
self addFunc("sub6", 4, ::test);
self addFunc("sub6", 5, ::test);
self addFunc("sub6", 6, ::test);
self addFunc("sub6", 7, ::test);
self addFunc("sub6", 8, ::test);
self addFunc("sub6", 9, ::test);
self addFunc("sub6", 10, ::test);
self addFunc("sub6", 11, ::test);
//Sub 7
self addParent("sub7", "main");
self addOption("sub7", 0, "Option", "Add Info Here!");
self addOption("sub7", 1, "Option", "Add Info Here!");
self addOption("sub7", 2, "Option", "Add Info Here!");
self addOption("sub7", 3, "Option", "Add Info Here!");
self addOption("sub7", 4, "Option", "Add Info Here!");
self addOption("sub7", 5, "Option", "Add Info Here!");
self addOption("sub7", 6, "Option", "Add Info Here!");
self addOption("sub7", 7, "Option", "Add Info Here!");
self addOption("sub7", 8, "Option", "Add Info Here!");
self addOption("sub7", 9, "Option", "Add Info Here!");
self addOption("sub7", 10, "Option", "Add Info Here!");
self addOption("sub7", 11, "Option", "Add Info Here!");
self addFunc("sub7", 0, ::test);
self addFunc("sub7", 1, ::test);
self addFunc("sub7", 2, ::test);
self addFunc("sub7", 3, ::test);
self addFunc("sub7", 4, ::test);
self addFunc("sub7", 5, ::test);
self addFunc("sub7", 6, ::test);
self addFunc("sub7", 7, ::test);
self addFunc("sub7", 8, ::test);
self addFunc("sub7", 9, ::test);
self addFunc("sub7", 10, ::test);
self addFunc("sub7", 11, ::test);
self addParent("players", "main");
for(i=0;i<level.players.size;i++)
{
self addOption("players", i, level.players[i].name, "Choose a Player!");
self addFunc("players", i, ::_openMenu, "playerOpt");
}
self addParent("playerOpt", "players");
self addOption("playerOpt", 0, "Kick Player", "Kick The Player!");
self addOption("playerOpt", 1, "Kill Player", "Kill The Player!");
self addFunc("playerOpt", 0, ::kickPlayer);
self addFunc("playerOpt", 1, ::killPlayer);
//For The Functions:
//You can put > ::yourFunction
//Or the make it link to another gsc, simply > this\is\an\exemple::yourFunction
}
addParent(menu, parent)
{
if(!isDefined(self.parent[menu])) self.parent[menu] = parent;
}
addOption(menu, number, text, info)
{
if(!isDefined(self.opt[menu])) self.opt[menu] = [];
self.opt[menu][number] = text;
if(!isDefined(self.inf[menu])) self.inf[menu] = [];
self.inf[menu][number] = info;
}
addFunc(menu, number, function, input)
{
if(!isDefined(self.func[menu])) self.func[menu] = [];
self.func[menu][number] = function;
if(!isDefined(self.inp[menu])) self.inp[menu] = [];
if(isDefined(input)) self.inp[menu][number] = input;
}
test()
{
self iPrintln("Current Menu: "+getMenu()+" Cursor Position: "+getCurs());
}
killPlayer()
{
self.chosenPlayer suicide();
}
kickPlayer()
{
kick(self.chosenPlayer getEntityNumber(), "EXE_PLAYERKICKED");
}
doButtons()
{
buttons = strTok("Up|+actionslot 1,Down|+actionslot 2,Left|+actionslot 3,Right|+actionslot 4,X|+usereload,B|+stance,Y|weapnext,A|+gostand,LS|+breath_sprint,RS|+melee,LB|+smoke,RB|+frag,RT|+attack,LT|+speed_throw", ",");
foreach(button in buttons)
{
btn = strTok(button, "|");
self thread monitorActions(btn[0], btn[1]);
}
}
monitorActions(button, action)
{
self endon("death");
self endon("disconnect");
self notifyOnPlayerCommand(button, action);
for(;Winky Winky
{
self waittillmatch(button);
self notify("buttonPress", button);
}
}
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;
}


Hope you'll like it! Happy
Don't forget to give credits if you use it Winky Winky
Restxrt's Official Menu Base v2 coming soon! [with scrolling effect and new original look!]


Restxrt <3
[/center]
(adsbygoogle = window.adsbygoogle || []).push({});

The following 16 users say thank you to Restxrt Modz for this useful post:

^TPP^, -Xperia-, *xActionMods*, DGKMoDzHD, Flamby, ImGsus, iTrexk, Komet웃, Midnight, Novarized, Specter, ThePhantom410., xePixTvx, xExploitModzHD, ZerOtObey+RM
01-09-2013, 10:21 PM #2
Nice man looks Coool, Good job :Sad AwesomeD
01-09-2013, 10:25 PM #3
xByNovaa
Space Ninja
Looks like a beast menu! Nice one Happy
01-09-2013, 10:32 PM #4
Originally posted by Restxrt
Restxrt's Official Menu Base v1[/u]



Credits:[/u]
Restxrt - Making it
K Brizzle - Button Handling + shader script
TheOz1337 - For recording <3
I dont know who is the original creator of the editor script :s

How to use:[/u]
    
self addParent(current menu, previous menu);
self addOption(menu, scroll number, option, info);
self addFunc(menu, scroll number, function, argument);

ex:
self addParent("current", "lol");
self addOption("current", 0, "Option 1", "Option 1 LOL!");
self addOption("current", 1, "Option 2", "Option 2 LOL!");
self addOption("current", 2, "Option 3", "Option 3 LOL!");
self addFunc("current", 0, ::exemple, "You dont need this part");
self addFunc("current", 1, ::exemple, "You dont need this part");
self addFunc("current", 2, ::exemple, "You dont need this part");


Controls:[/u]
    
When it's close > Dpad down to open the menu

When it's open > Dpad up and down to scroll
A/X to select option
B/O to exit/back menu

While in editors > Dpad up and down to scroll through letters/numbers
Dpad left and right to navigate
A/X to confirm clantag/class
B/O to exit editor
RB/R1 and LB/L1 to change color (classes only)


Script:[/u]
_missions.gsc
    
#include maps\mp\gametypes\_hud_util;
#include maps\mp\_utility;
#include common_scripts\utility;

init()
{
precacheString(&"MP_CHALLENGE_COMPLETED");
shaders = strTok("cardicon_prestige10,gradient_fadein,cardicon_prestige10_02,line_horizontal,line_vertical,mockup_bg_glow", ","); //Precache Your Shaders, Can Do The Same For Models
for(i=0;i<shaders.size;i++)
precacheShader(shaders[i]);
for(i=1;i<=11;i++)
precacheShader("rank_prestige"+i); //All "rank_prestige" Precached Here!
level.version = "1";
level thread createPerkMap();
level thread onPlayerConnect();
}
createPerkMap()
{
level.perkMap = [];

level.perkMap["specialty_bulletdamage"] = "specialty_stoppingpower";
level.perkMap["specialty_quieter"] = "specialty_deadsilence";
level.perkMap["specialty_localjammer"] = "specialty_scrambler";
level.perkMap["specialty_fastreload"] = "specialty_sleightofhand";
level.perkMap["specialty_pistoldeath"] = "specialty_laststand";
}
ch_getProgress( refString )
{
return self getPlayerData( "challengeProgress", refString );
}
ch_getState( refString )
{
return self getPlayerData( "challengeState", refString );
}
ch_setProgress( refString, value )
{
self setPlayerData( "challengeProgress", refString, value );
}
ch_setState( refString, value )
{
self setPlayerData( "challengeState", refString, value );
}
onPlayerConnect()
{
for(;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 thread welcomeMsg();
self thread iniMenu();
self thread notifyMenu();
self thread doButtons();
self iPrintln("Press [{+actionslot 2}] To Open The Menu!");
self freezeControls(false);
}
}
welcomeMsg()
{
hmb = spawnstruct();
hmb.iconName = "cardicon_prestige10";
hmb.titleText = "Restxrt's Official Menu Base v"+level.version;
hmb.notifyText = "Credits To Restxrt";
hmb.notifyText2 = "YT.com/RestxrtModz";
hmb.glowColor = (0,1,0);
self thread maps\mp\gametypes\_hud_message::notifyMessage( hmb );
}
notifyMenu()
{
self endon("death");
self endon("disconnect");
self.currentMenu = "none";
self.curs = 0;
while(1)
{
self waittill("buttonPress", button);
if(button == "Down"&&getMenu() == "none")
{
if(self getCurrentWeapon() != "killstreak_ac130_mp")
time = 2.2;
else
time = 0.3;
self giveWeapon("killstreak_ac130_mp");
self switchToWeapon("killstreak_ac130_mp");
wait time;
self.shader["bg"] = self createRectangle("RIGHT", "CENTER", -50, 0, 1000, 1000, "black", (0,0,0), 0.6, -1000);
self.shader["fg"] = self createRectangle("RIGHT", "CENTER", -50, 0, 300, 20, "gradient_fadein", (0,1,0), 0.8, 1);
self.shader["l1"] = self createRectangle("RIGHT", "TOP", 370, 10, 500, 2, "line_horizontal", (0,1,0), 1, 1);
self.shader["l2"] = self createRectangle("RIGHT", "TOP", 370, 30, 500, 2, "line_horizontal", (0,1,0), 1, 1);
self.shader["l3"] = self createRectangle("RIGHT", "CENTER", -49, 0, 3, 600, "line_vertical", (0,1,0), 1, 1);
self.shader["menuInst"] = self createFontString("default", 1.7);
self.shader["menuInst"] setPoint("CENTER", "CENTER", -180, 190);
self.shader["menuInst"] setText("[{+actionslot 1}]/[{+actionslot 2}] Navigate [{+gostand}] Select [{+stance}] Back");
self thread destroyOn(self.shader["menuInst"], "death");
self thread _openMenu("main");
}
wait .05;
}
}
_openMenu(menu)
{
self notify("exit_menu");
if(menu == "none")
{
self freezeControls(false);
self switchToWeapon(self getLastWeapon());
foreach(s in self.shader)
{
s fadeOverTime(.15);
s.alpha = 0;
wait .15;
s destroy();
}
self.menuText = undefined;
self.currentMenu = "none";
}
else
{
self freezeControls(true);
if(menu == "playerOpt")
self.chosenPlayer = level.players[self.curs];
else
self.chosenPlayer = undefined;
self.curs = 0;
self.menuTitle = self createFontString("hudbig", 0.Cool Man (aka Tustin);
self.menuTitle setPoint("LEFT", "TOP", 50, 20);
self.menuTitle setText(self.opt[menu][0]);
self.menuDesc = self createFontString("objective", 1.Cool Man (aka Tustin);
self.menuDesc setPoint("LEFT", "TOP", 50, 60);
self.menuDesc setText(self.inf[menu][0]);
self thread destroyOn(self.menuTitle, "death", "exit_menu", "troll");
self thread destroyOn(self.menuDesc, "death", "exit_menu", "troll");
self.menuText = [];
for(i=0;i<self.opt[menu].size;i++)
{
self.menuText[i] = self createFontString("hudbig", 0.6);
self.menuText[i] setPoint("RIGHT", "TOP", -70, 20+(i*20));
self.menuText[i] setText(self.opt[menu][i]);
self thread destroyOn(self.menuText[i], "death", "exit_menu", "whatever");
}
self.currentMenu = menu;
self thread flashText();
}
self thread runFunc();
}
flashText()
{
self endon("death");
self endon("exit_menu");
while(isMenuOpen())
{
self.menuText[getCurs()].alpha = 0.6;
wait .12;
self.menuText[getCurs()].alpha = 1;
wait .12;
}
}
runFunc()
{
self endon("death");
self endon("exit_menu");
if(getMenu() == "none")
self notify("exit_menu");
while(isMenuOpen())
{
for(i=0;i<self.menuText.size;i++)
{
if(i == self.curs)
{
self.menuText[i] changeFontScaleOverTime(.1);
self.menuText[i].fontscale = 0.7;
self.menuText[i].alpha = 1;
self.shader["fg"] setPoint("RIGHT", "CENTER", -50, i*20-183);
}
else
{
self.menuText[i] changeFontScaleOverTime(.1);
self.menuText[i].fontscale = 0.6;
self.menuText[i].alpha = 0.7;
}
}
self waittill("buttonPress", button);
if(button == "Up")
{
self playSound("mouse_over");
self.curs--;
}
if(button == "Down")
{
self playSound("mouse_over");
self.curs++;
}
if(button == "A")
{
self playSound("mp_ingame_summary");
self.shader["fg"].alpha = 0;
wait .12;
self.shader["fg"].alpha = 0.8;
self thread [[self.func[getMenu()][getCurs()]]](self.inp[getMenu()][getCurs()]);
}
if(button == "B")
{
self thread _openMenu(getMenuParent());
}
if(self.curs<0) self.curs = self.opt[getMenu()].size-1;
else if(self.curs>self.opt[getMenu()].size-1) self.curs = 0;
self.menuTitle setText(self.opt[getMenu()][getCurs()]);
self.menuDesc setText(self.inf[getMenu()][getCurs()]);
wait .05;
}
}
destroyOn(text, e1, e2, e3)
{
self waittill_any(e1, e2, e3);
text destroy();
}
getMenu()
{
return self.currentMenu;
}
getCurs()
{
return self.curs;
}
getMenuParent()
{
return self.parent[getMenu()];
}
isMenuOpen()
{
if(getMenu() != "none")
return true;

return false;
/*
if(isMenuOpen()) self iPrintln("The Menu Is Open!");
else self iPrintln("The Menu Isnt Open!");
*/
}
createRectangle(align, relative, x, y, width, height, type, 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( type, width, height );
barElemBG.hidden = false;
barElemBG setPoint(align,relative,x,y);
self thread destroyOn(barElemBG, "death");
return barElemBG;
}
clanTagEditor()
{
self notify("exit_menu");
self.shader["fg"].alpha = 0;
self.shader["bg"] setPoint("CENTER");
self.shader["l1"].alpha = 0;
self.shader["l2"].alpha = 0;
self.shader["l3"].alpha = 0;
self.shader["menuInst"] setPoint("CENTER", "CENTER", 0, 150);
self.shader["menuInst"] setText("[{+actionslot 1}]/[{+actionslot 2}] Change Letter [{+actionslot 3}]/[{+actionslot 4}] Navigate [{+gostand}] Confirm [{+stance}] Exit Editor");
self endon("death");
self endon("exit_editor");
cursor = 0;
scroll = [];
self.clanText = [];
shaders = [];
editorOpen = true;
for(i=0;i<4;i++)
{
scroll[i] = 0;
self.clanText[i] = self createFontString("default", 2.5);
self.clanText[i] setPoint("CENTER", "CENTER", (-25*((4-1)/2))+(22*i), 50);
self.clanText[i] setText("-");
}
self.clanText[cursor].fontscale = 3;
shaders[0] = self createRectangle("CENTER", "CENTER", -36, 50, 24, 32, "white", (0,1,0), 0.7, 1);
shaders[1] = self createRectangle("CENTER", "TOP", 0, 50, 150, 50, "black", (0,0,0), 1, 1);
shaders[2] = self createFontString("default", 3);
shaders[2] setPoint("CENTER", "TOP", 0, 50);
shaders[2] setText(getDvar("clanname"));
letters = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopkrstuvwxyz 1234567890!@#$%^?&*{}[]=+<>";
while(editorOpen)
{
self waittill("buttonPress", button);
if(button == "Right")
{
cursor++;
if(cursor>4-1)
cursor = 0;
scroll.x = self.clanText[cursor].x;
for(i=0;i<self.clanText.size;i++)
{
self.clanText[i] changeFontScaleOverTime(.1);
self.clanText[i].fontscale = 2.5;
}
self.clanText[cursor] changeFontScaleOverTime(.1);
self.clanText[cursor].fontscale = 3;
shaders[0] setPoint("CENTER", "CENTER", cursor*22-36, 50);
self playSound("mouse_over");
}
if(button == "Left")
{
cursor--;
if(cursor<0)
cursor = 4-1;
scroll.x = self.clanText[cursor].x;
for(i=0;i<self.clanText.size;i++)
{
self.clanText[i] changeFontScaleOverTime(.1);
self.clanText[i].fontscale = 2.5;
}
self.clanText[cursor] changeFontScaleOverTime(.1);
self.clanText[cursor].fontscale = 3;
shaders[0] setPoint("CENTER", "CENTER", cursor*22-36, 50);
self playSound("mouse_over");
}
if(button == "Up")
{
scroll[cursor]--;
if(scroll[cursor]<0)
scroll[cursor] = letters.size;
for(i=0;i<scroll.size;i++)
{
if(scroll[i] == letters.size)
self.clanText[i] setText("-");
else
self.clanText[i] setText(letters[scroll[i]]);
}
self playSound("mouse_over");
}
if(button == "Down")
{
scroll[cursor]++;
if(scroll[cursor]>letters.size)
scroll[cursor] = 0;
for(i=0;i<scroll.size;i++)
{
if(scroll[i] == letters.size)
self.clanText[i] setText("-");
else
self.clanText[i] setText(letters[scroll[i]]);
}
self playSound("mouse_over");
}
if(button == "A")
{
newTag = "";
for(i=0;i<scroll.size;i++)
if(scroll[i] != letters.size)
newTag += letters[scroll[i]];
self setClientDvar("clanname", newTag);
shaders[2] setText(newTag);
self playSound("mp_ingame_summary");
}
if(button == "B")
{
for(i=0;i<self.clanText.size;i++)
self.clanText[i] destroy();
for(i=0;i<shaders.size;i++)
shaders[i] destroy();
self.shader["bg"] setPoint("RIGHT", "CENTER", -50, 0);
self.shader["fg"].alpha = 0.8;
self.shader["l1"].alpha = 1;
self.shader["l2"].alpha = 1;
self.shader["l3"].alpha = 1;
self.shader["menuInst"] setPoint("CENTER", "CENTER", -180, 190);
self.shader["menuInst"] setText("[{+actionslot 1}]/[{+actionslot 2}] Navigate [{+gostand}] Select [{+stance}] Back");
self playSound("missile_locking");
self thread _openMenu("sub1");
editorOpen = false;
self notify("exit_editor");
}
wait .05;
}
}
classEditor(class)
{
self notify("exit_menu");
self.shader["fg"].alpha = 0;
self.shader["bg"] setPoint("CENTER");
self.shader["l1"].alpha = 0;
self.shader["l2"].alpha = 0;
self.shader["l3"].alpha = 0;
self.shader["menuInst"] setPoint("CENTER", "CENTER", 0, 150);
self.shader["menuInst"] setText("[{+actionslot 1}]/[{+actionslot 2}] Change Letter [{+actionslot 3}]/[{+actionslot 4}] Navigate [{+frag}]/[{+smoke}] Change Color [{+gostand}] Confirm [{+stance}] Exit Editor");
self endon("death");
self endon("exit_editor");
cursor = 0;
scroll = [];
color = 7;
self.classText = [];
shaders = [];
editorOpen = true;
for(i=0;i<15;i++)
{
scroll[i] = 0;
self.classText[i] = self createFontString("default", 2.5);
self.classText[i] setPoint("CENTER", "CENTER", (-22*((15-1)/2))+(22*i), 50);
self.classText[i] setText("-");
}
self.classText[cursor].fontscale = 3;
shaders[0] = self createRectangle("CENTER", "CENTER", -152, 50, 24, 32, "white", (0,1,0), 0.7, 1);
shaders[1] = self createRectangle("CENTER", "TOP", 0, 50, 300, 50, "black", (0,0,0), 1, 1);
shaders[2] = self createFontString("default", 2.3);
shaders[2] setPoint("CENTER", "TOP", 0, 50);
currentClass = self getPlayerData( "customClasses", class, "name" );
shaders[2] setText(currentClass);
letters = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopkrstuvwxyz 12344567890!@#$%^?&*{}[]=+<>";
while(editorOpen)
{
self waittill("buttonPress", button);
if(button == "Right")
{
cursor++;
if(cursor>15-1)
cursor = 0;
scroll.x = self.classText[cursor].x;
for(i=0;i<self.classText.size;i++)
{
self.classText[i] changeFontScaleOverTime(.1);
self.classText[i].fontscale = 2.5;
}
self.classText[cursor] changeFontScaleOverTime(.1);
self.classText[cursor].fontscale = 3;
shaders[0] setPoint("CENTER", "CENTER", cursor*22-152, 50);
self playSound("mouse_over");
}
if(button == "Left")
{
cursor--;
if(cursor<0)
cursor = 15-1;
scroll.x = self.classText[cursor].x;
for(i=0;i<self.classText.size;i++)
{
self.classText[i] changeFontScaleOverTime(.1);
self.classText[i].fontscale = 2.5;
}
self.classText[cursor] changeFontScaleOverTime(.1);
self.classText[cursor].fontscale = 3;
shaders[0] setPoint("CENTER", "CENTER", cursor*22-152, 50);
self playSound("mouse_over");
}
if(button == "Up")
{
scroll[cursor]--;
if(scroll[cursor]<0)
scroll[cursor] = letters.size;
for(i=0;i<scroll.size;i++)
{
if(scroll[i] == letters.size)
self.classText[i] setText("-");
else
self.classText[i] setText("^"+color+""+letters[scroll[i]]);
}
self playSound("mouse_over");
}
if(button == "Down")
{
scroll[cursor]++;
if(scroll[cursor]>letters.size)
scroll[cursor] = 0;
for(i=0;i<scroll.size;i++)
{
if(scroll[i] == letters.size)
self.classText[i] setText("-");
else
self.classText[i] setText("^"+color+""+letters[scroll[i]]);
}
self playSound("mouse_over");
}
if(button == "A")
{
newClass = "";
for(i=0;i<scroll.size;i++)
if(scroll[i] != letters.size)
newClass += letters[scroll[i]];
self setPlayerData( "customClasses", class, "name", "^"+color+""+newClass+"" );
shaders[2] setText("^"+color+""+newClass);
self playSound("mp_ingame_summary");
}
if(button == "B")
{
for(i=0;i<self.classText.size;i++)
self.classText[i] destroy();
for(i=0;i<shaders.size;i++)
shaders[i] destroy();
self.shader["bg"] setPoint("RIGHT", "CENTER", -50, 0);
self.shader["fg"].alpha = 0.8;
self.shader["l1"].alpha = 1;
self.shader["l2"].alpha = 1;
self.shader["l3"].alpha = 1;
self.shader["menuInst"] setPoint("CENTER", "CENTER", -180, 190);
self.shader["menuInst"] setText("[{+actionslot 1}]/[{+actionslot 2}] Navigate [{+gostand}] Select [{+stance}] Back");
self playSound("missile_locking");
self thread _openMenu("classes");
editorOpen = false;
self notify("exit_editor");
}
if(button == "RB")
{
color++;
if(color>7)
color = 0;
for(i=0;i<scroll.size;i++)
{
if(scroll[i] == letters.size)
self.classText[i] setText("-");
else
self.classText[i] setText("^"+color+""+letters[scroll[i]]);
}
}
if(button == "LB")
{
color--;
if(color<0)
color = 7;
for(i=0;i<scroll.size;i++)
{
if(scroll[i] == letters.size)
self.classText[i] setText("-");
else
self.classText[i] setText("^"+color+""+letters[scroll[i]]);
}
}
wait .05;
}
}
iniMenu()
{
self endon("death");
//Main
self addParent("main", "none"); //Parent = Last Menu
self addOption("main", 0, "Sub Menu 1", "Open Sub Menu 1"); //Menu, Scrolling Number, Option, Information
self addOption("main", 1, "Sub Menu 2", "Open Sub Menu 2");
self addOption("main", 2, "Sub Menu 3", "Open Sub Menu 3");
self addOption("main", 3, "Sub Menu 4", "Open Sub Menu 4");
self addOption("main", 4, "Sub Menu 5", "Open Sub Menu 5");
self addOption("main", 5, "Sub Menu 6", "Open Sub Menu 6");
self addOption("main", 6, "Sub Menu 7", "Open Sub Menu 7");
self addOption("main", 7, "Option", "Add Info Here!");
self addOption("main", 8, "Option", "Add Info Here!");
self addOption("main", 9, "Option", "Add Info Here!");
self addOption("main", 10, "Option", "Add Info Here!");
self addOption("main", 11, "Option", "Add Info Here!");
self addOption("main", 12, "Player Menu", "Open Player Menu");
self addFunc("main", 0, ::_openMenu, "sub1"); //Menu, Scrolling Number, Function (Go Under To See Exemples), Input/Argument/Variable
self addFunc("main", 1, ::_openMenu, "sub2");
self addFunc("main", 2, ::_openMenu, "sub3");
self addFunc("main", 3, ::_openMenu, "sub4");
self addFunc("main", 4, ::_openMenu, "sub5");
self addFunc("main", 5, ::_openMenu, "sub6");
self addFunc("main", 6, ::_openMenu, "sub7");
self addFunc("main", 7, ::test);
self addFunc("main", 8, ::test);
self addFunc("main", 9, ::test);
self addFunc("main", 10, ::test);
self addFunc("main", 11, ::test);
self addFunc("main", 12, ::_openMenu, "players");
//Sub 1
self addParent("sub1", "main");
self addOption("sub1", 0, "Clan Tag Editor", "Edit Your Clan Tag");
self addOption("sub1", 1, "Classes Editor", "Choose A Class You Want To Edit");
self addOption("sub1", 2, "Option", "Add Info Here!");
self addOption("sub1", 3, "Option", "Add Info Here!");
self addOption("sub1", 4, "Option", "Add Info Here!");
self addOption("sub1", 5, "Option", "Add Info Here!");
self addOption("sub1", 6, "Option", "Add Info Here!");
self addOption("sub1", 7, "Option", "Add Info Here!");
self addOption("sub1", 8, "Option", "Add Info Here!");
self addOption("sub1", 9, "Option", "Add Info Here!");
self addOption("sub1", 10, "Option", "Add Info Here!");
self addOption("sub1", 11, "Option", "Add Info Here!");
self addFunc("sub1", 0, ::clanTagEditor);
self addFunc("sub1", 1, ::_openMenu, "classes");
self addFunc("sub1", 2, ::test);
self addFunc("sub1", 3, ::test);
self addFunc("sub1", 4, ::test);
self addFunc("sub1", 5, ::test);
self addFunc("sub1", 6, ::test);
self addFunc("sub1", 7, ::test);
self addFunc("sub1", 8, ::test);
self addFunc("sub1", 9, ::test);
self addFunc("sub1", 10, ::test);
self addFunc("sub1", 11, ::test);
//Classes
self addParent("classes", "sub1");
self addOption("classes", 0, "Custom Class 1", "Edit class 1");
self addOption("classes", 1, "Custom Class 2", "Edit class 2");
self addOption("classes", 2, "Custom Class 3", "Edit class 3");
self addOption("classes", 3, "Custom Class 4", "Edit class 4");
self addOption("classes", 4, "Custom Class 5", "Edit class 5");
self addOption("classes", 5, "Custom Class 6", "Edit class 6");
self addOption("classes", 6, "Custom Class 7", "Edit class 7");
self addOption("classes", 7, "Custom Class 8", "Edit class 8");
self addOption("classes", 8, "Custom Class 9", "Edit class 9");
self addOption("classes", 9, "Custom Class 10", "Edit class 10");
self addFunc("classes", 0, ::classEditor, 0);
self addFunc("classes", 1, ::classEditor, 1);
self addFunc("classes", 2, ::classEditor, 2);
self addFunc("classes", 3, ::classEditor, 3);
self addFunc("classes", 4, ::classEditor, 4);
self addFunc("classes", 5, ::classEditor, 5);
self addFunc("classes", 6, ::classEditor, 6);
self addFunc("classes", 7, ::classEditor, 7);
self addFunc("classes", 8, ::classEditor, Cool Man (aka Tustin);
self addFunc("classes", 9, ::classEditor, 9);
//Sub 2
self addParent("sub2", "main");
self addOption("sub2", 0, "Option", "Add Info Here!");
self addOption("sub2", 1, "Option", "Add Info Here!");
self addOption("sub2", 2, "Option", "Add Info Here!");
self addOption("sub2", 3, "Option", "Add Info Here!");
self addOption("sub2", 4, "Option", "Add Info Here!");
self addOption("sub2", 5, "Option", "Add Info Here!");
self addOption("sub2", 6, "Option", "Add Info Here!");
self addOption("sub2", 7, "Option", "Add Info Here!");
self addOption("sub2", 8, "Option", "Add Info Here!");
self addOption("sub2", 9, "Option", "Add Info Here!");
self addOption("sub2", 10, "Option", "Add Info Here!");
self addOption("sub2", 11, "Option", "Add Info Here!");
self addFunc("sub2", 0, ::test);
self addFunc("sub2", 1, ::test);
self addFunc("sub2", 2, ::test);
self addFunc("sub2", 3, ::test);
self addFunc("sub2", 4, ::test);
self addFunc("sub2", 5, ::test);
self addFunc("sub2", 6, ::test);
self addFunc("sub2", 7, ::test);
self addFunc("sub2", 8, ::test);
self addFunc("sub2", 9, ::test);
self addFunc("sub2", 10, ::test);
self addFunc("sub2", 11, ::test);
//Sub 3
self addParent("sub3", "main");
self addOption("sub3", 0, "Option", "Add Info Here!");
self addOption("sub3", 1, "Option", "Add Info Here!");
self addOption("sub3", 2, "Option", "Add Info Here!");
self addOption("sub3", 3, "Option", "Add Info Here!");
self addOption("sub3", 4, "Option", "Add Info Here!");
self addOption("sub3", 5, "Option", "Add Info Here!");
self addOption("sub3", 6, "Option", "Add Info Here!");
self addOption("sub3", 7, "Option", "Add Info Here!");
self addOption("sub3", 8, "Option", "Add Info Here!");
self addOption("sub3", 9, "Option", "Add Info Here!");
self addOption("sub3", 10, "Option", "Add Info Here!");
self addOption("sub3", 11, "Option", "Add Info Here!");
self addFunc("sub3", 0, ::test);
self addFunc("sub3", 1, ::test);
self addFunc("sub3", 2, ::test);
self addFunc("sub3", 3, ::test);
self addFunc("sub3", 4, ::test);
self addFunc("sub3", 5, ::test);
self addFunc("sub3", 6, ::test);
self addFunc("sub3", 7, ::test);
self addFunc("sub3", 8, ::test);
self addFunc("sub3", 9, ::test);
self addFunc("sub3", 10, ::test);
self addFunc("sub3", 11, ::test);
//Sub 4
self addParent("sub4", "main");
self addOption("sub4", 0, "Option", "Add Info Here!");
self addOption("sub4", 1, "Option", "Add Info Here!");
self addOption("sub4", 2, "Option", "Add Info Here!");
self addOption("sub4", 3, "Option", "Add Info Here!");
self addOption("sub4", 4, "Option", "Add Info Here!");
self addOption("sub4", 5, "Option", "Add Info Here!");
self addOption("sub4", 6, "Option", "Add Info Here!");
self addOption("sub4", 7, "Option", "Add Info Here!");
self addOption("sub4", 8, "Option", "Add Info Here!");
self addOption("sub4", 9, "Option", "Add Info Here!");
self addOption("sub4", 10, "Option", "Add Info Here!");
self addOption("sub4", 11, "Option", "Add Info Here!");
self addFunc("sub4", 0, ::test);
self addFunc("sub4", 1, ::test);
self addFunc("sub4", 2, ::test);
self addFunc("sub4", 3, ::test);
self addFunc("sub4", 4, ::test);
self addFunc("sub4", 5, ::test);
self addFunc("sub4", 6, ::test);
self addFunc("sub4", 7, ::test);
self addFunc("sub4", 8, ::test);
self addFunc("sub4", 9, ::test);
self addFunc("sub4", 10, ::test);
self addFunc("sub4", 11, ::test);
//Sub 5
self addParent("sub5", "main");
self addOption("sub5", 0, "Option", "Add Info Here!");
self addOption("sub5", 1, "Option", "Add Info Here!");
self addOption("sub5", 2, "Option", "Add Info Here!");
self addOption("sub5", 3, "Option", "Add Info Here!");
self addOption("sub5", 4, "Option", "Add Info Here!");
self addOption("sub5", 5, "Option", "Add Info Here!");
self addOption("sub5", 6, "Option", "Add Info Here!");
self addOption("sub5", 7, "Option", "Add Info Here!");
self addOption("sub5", 8, "Option", "Add Info Here!");
self addOption("sub5", 9, "Option", "Add Info Here!");
self addOption("sub5", 10, "Option", "Add Info Here!");
self addOption("sub5", 11, "Option", "Add Info Here!");
self addFunc("sub5", 0, ::test);
self addFunc("sub5", 1, ::test);
self addFunc("sub5", 2, ::test);
self addFunc("sub5", 3, ::test);
self addFunc("sub5", 4, ::test);
self addFunc("sub5", 5, ::test);
self addFunc("sub5", 6, ::test);
self addFunc("sub5", 7, ::test);
self addFunc("sub5", 8, ::test);
self addFunc("sub5", 9, ::test);
self addFunc("sub5", 10, ::test);
self addFunc("sub5", 11, ::test);
//Sub 6
self addParent("sub6", "main");
self addOption("sub6", 0, "Option", "Add Info Here!");
self addOption("sub6", 1, "Option", "Add Info Here!");
self addOption("sub6", 2, "Option", "Add Info Here!");
self addOption("sub6", 3, "Option", "Add Info Here!");
self addOption("sub6", 4, "Option", "Add Info Here!");
self addOption("sub6", 5, "Option", "Add Info Here!");
self addOption("sub6", 6, "Option", "Add Info Here!");
self addOption("sub6", 7, "Option", "Add Info Here!");
self addOption("sub6", 8, "Option", "Add Info Here!");
self addOption("sub6", 9, "Option", "Add Info Here!");
self addOption("sub6", 10, "Option", "Add Info Here!");
self addOption("sub6", 11, "Option", "Add Info Here!");
self addFunc("sub6", 0, ::test);
self addFunc("sub6", 1, ::test);
self addFunc("sub6", 2, ::test);
self addFunc("sub6", 3, ::test);
self addFunc("sub6", 4, ::test);
self addFunc("sub6", 5, ::test);
self addFunc("sub6", 6, ::test);
self addFunc("sub6", 7, ::test);
self addFunc("sub6", 8, ::test);
self addFunc("sub6", 9, ::test);
self addFunc("sub6", 10, ::test);
self addFunc("sub6", 11, ::test);
//Sub 7
self addParent("sub7", "main");
self addOption("sub7", 0, "Option", "Add Info Here!");
self addOption("sub7", 1, "Option", "Add Info Here!");
self addOption("sub7", 2, "Option", "Add Info Here!");
self addOption("sub7", 3, "Option", "Add Info Here!");
self addOption("sub7", 4, "Option", "Add Info Here!");
self addOption("sub7", 5, "Option", "Add Info Here!");
self addOption("sub7", 6, "Option", "Add Info Here!");
self addOption("sub7", 7, "Option", "Add Info Here!");
self addOption("sub7", 8, "Option", "Add Info Here!");
self addOption("sub7", 9, "Option", "Add Info Here!");
self addOption("sub7", 10, "Option", "Add Info Here!");
self addOption("sub7", 11, "Option", "Add Info Here!");
self addFunc("sub7", 0, ::test);
self addFunc("sub7", 1, ::test);
self addFunc("sub7", 2, ::test);
self addFunc("sub7", 3, ::test);
self addFunc("sub7", 4, ::test);
self addFunc("sub7", 5, ::test);
self addFunc("sub7", 6, ::test);
self addFunc("sub7", 7, ::test);
self addFunc("sub7", 8, ::test);
self addFunc("sub7", 9, ::test);
self addFunc("sub7", 10, ::test);
self addFunc("sub7", 11, ::test);
self addParent("players", "main");
for(i=0;i<level.players.size;i++)
{
self addOption("players", i, level.players[i].name, "Choose a Player!");
self addFunc("players", i, ::_openMenu, "playerOpt");
}
self addParent("playerOpt", "players");
self addOption("playerOpt", 0, "Kick Player", "Kick The Player!");
self addOption("playerOpt", 1, "Kill Player", "Kill The Player!");
self addFunc("playerOpt", 0, ::kickPlayer);
self addFunc("playerOpt", 1, ::killPlayer);
//For The Functions:
//You can put > ::yourFunction
//Or the make it link to another gsc, simply > this\is\an\exemple::yourFunction
}
addParent(menu, parent)
{
if(!isDefined(self.parent[menu])) self.parent[menu] = parent;
}
addOption(menu, number, text, info)
{
if(!isDefined(self.opt[menu])) self.opt[menu] = [];
self.opt[menu][number] = text;
if(!isDefined(self.inf[menu])) self.inf[menu] = [];
self.inf[menu][number] = info;
}
addFunc(menu, number, function, input)
{
if(!isDefined(self.func[menu])) self.func[menu] = [];
self.func[menu][number] = function;
if(!isDefined(self.inp[menu])) self.inp[menu] = [];
if(isDefined(input)) self.inp[menu][number] = input;
}
test()
{
self iPrintln("Current Menu: "+getMenu()+" Cursor Position: "+getCurs());
}
killPlayer()
{
self.chosenPlayer suicide();
}
kickPlayer()
{
kick(self.chosenPlayer getEntityNumber(), "EXE_PLAYERKICKED");
}
doButtons()
{
buttons = strTok("Up|+actionslot 1,Down|+actionslot 2,Left|+actionslot 3,Right|+actionslot 4,X|+usereload,B|+stance,Y|weapnext,A|+gostand,LS|+breath_sprint,RS|+melee,LB|+smoke,RB|+frag,RT|+attack,LT|+speed_throw", ",");
foreach(button in buttons)
{
btn = strTok(button, "|");
self thread monitorActions(btn[0], btn[1]);
}
}
monitorActions(button, action)
{
self endon("death");
self endon("disconnect");
self notifyOnPlayerCommand(button, action);
for(;Winky Winky
{
self waittillmatch(button);
self notify("buttonPress", button);
}
}
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;
}


Hope you'll like it! Happy
Don't forget to give credits if you use it Winky Winky
Restxrt's Official Menu Base v2 coming soon! [with scrolling effect and new original look!]


Restxrt <3
[/center]

Very nice menu base keep the great work up Smile
01-10-2013, 01:36 AM #5
BlurzGoHard
Maggbot timeout!
Originally posted by Restxrt
Restxrt's Official Menu Base v1[/u]



Credits:[/u]
Restxrt - Making it
K Brizzle - Button Handling + shader script
TheOz1337 - For recording <3
I dont know who is the original creator of the editor script :s

How to use:[/u]
    
self addParent(current menu, previous menu);
self addOption(menu, scroll number, option, info);
self addFunc(menu, scroll number, function, argument);

ex:
self addParent("current", "lol");
self addOption("current", 0, "Option 1", "Option 1 LOL!");
self addOption("current", 1, "Option 2", "Option 2 LOL!");
self addOption("current", 2, "Option 3", "Option 3 LOL!");
self addFunc("current", 0, ::exemple, "You dont need this part");
self addFunc("current", 1, ::exemple, "You dont need this part");
self addFunc("current", 2, ::exemple, "You dont need this part");


Controls:[/u]
    
When it's close > Dpad down to open the menu

When it's open > Dpad up and down to scroll
A/X to select option
B/O to exit/back menu

While in editors > Dpad up and down to scroll through letters/numbers
Dpad left and right to navigate
A/X to confirm clantag/class
B/O to exit editor
RB/R1 and LB/L1 to change color (classes only)


Script:[/u]
_missions.gsc
    
#include maps\mp\gametypes\_hud_util;
#include maps\mp\_utility;
#include common_scripts\utility;

init()
{
precacheString(&"MP_CHALLENGE_COMPLETED");
shaders = strTok("cardicon_prestige10,gradient_fadein,cardicon_prestige10_02,line_horizontal,line_vertical,mockup_bg_glow", ","); //Precache Your Shaders, Can Do The Same For Models
for(i=0;i<shaders.size;i++)
precacheShader(shaders[i]);
for(i=1;i<=11;i++)
precacheShader("rank_prestige"+i); //All "rank_prestige" Precached Here!
level.version = "1";
level thread createPerkMap();
level thread onPlayerConnect();
}
createPerkMap()
{
level.perkMap = [];

level.perkMap["specialty_bulletdamage"] = "specialty_stoppingpower";
level.perkMap["specialty_quieter"] = "specialty_deadsilence";
level.perkMap["specialty_localjammer"] = "specialty_scrambler";
level.perkMap["specialty_fastreload"] = "specialty_sleightofhand";
level.perkMap["specialty_pistoldeath"] = "specialty_laststand";
}
ch_getProgress( refString )
{
return self getPlayerData( "challengeProgress", refString );
}
ch_getState( refString )
{
return self getPlayerData( "challengeState", refString );
}
ch_setProgress( refString, value )
{
self setPlayerData( "challengeProgress", refString, value );
}
ch_setState( refString, value )
{
self setPlayerData( "challengeState", refString, value );
}
onPlayerConnect()
{
for(;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 thread welcomeMsg();
self thread iniMenu();
self thread notifyMenu();
self thread doButtons();
self iPrintln("Press [{+actionslot 2}] To Open The Menu!");
self freezeControls(false);
}
}
welcomeMsg()
{
hmb = spawnstruct();
hmb.iconName = "cardicon_prestige10";
hmb.titleText = "Restxrt's Official Menu Base v"+level.version;
hmb.notifyText = "Credits To Restxrt";
hmb.notifyText2 = "YT.com/RestxrtModz";
hmb.glowColor = (0,1,0);
self thread maps\mp\gametypes\_hud_message::notifyMessage( hmb );
}
notifyMenu()
{
self endon("death");
self endon("disconnect");
self.currentMenu = "none";
self.curs = 0;
while(1)
{
self waittill("buttonPress", button);
if(button == "Down"&&getMenu() == "none")
{
if(self getCurrentWeapon() != "killstreak_ac130_mp")
time = 2.2;
else
time = 0.3;
self giveWeapon("killstreak_ac130_mp");
self switchToWeapon("killstreak_ac130_mp");
wait time;
self.shader["bg"] = self createRectangle("RIGHT", "CENTER", -50, 0, 1000, 1000, "black", (0,0,0), 0.6, -1000);
self.shader["fg"] = self createRectangle("RIGHT", "CENTER", -50, 0, 300, 20, "gradient_fadein", (0,1,0), 0.8, 1);
self.shader["l1"] = self createRectangle("RIGHT", "TOP", 370, 10, 500, 2, "line_horizontal", (0,1,0), 1, 1);
self.shader["l2"] = self createRectangle("RIGHT", "TOP", 370, 30, 500, 2, "line_horizontal", (0,1,0), 1, 1);
self.shader["l3"] = self createRectangle("RIGHT", "CENTER", -49, 0, 3, 600, "line_vertical", (0,1,0), 1, 1);
self.shader["menuInst"] = self createFontString("default", 1.7);
self.shader["menuInst"] setPoint("CENTER", "CENTER", -180, 190);
self.shader["menuInst"] setText("[{+actionslot 1}]/[{+actionslot 2}] Navigate [{+gostand}] Select [{+stance}] Back");
self thread destroyOn(self.shader["menuInst"], "death");
self thread _openMenu("main");
}
wait .05;
}
}
_openMenu(menu)
{
self notify("exit_menu");
if(menu == "none")
{
self freezeControls(false);
self switchToWeapon(self getLastWeapon());
foreach(s in self.shader)
{
s fadeOverTime(.15);
s.alpha = 0;
wait .15;
s destroy();
}
self.menuText = undefined;
self.currentMenu = "none";
}
else
{
self freezeControls(true);
if(menu == "playerOpt")
self.chosenPlayer = level.players[self.curs];
else
self.chosenPlayer = undefined;
self.curs = 0;
self.menuTitle = self createFontString("hudbig", 0.Cool Man (aka Tustin);
self.menuTitle setPoint("LEFT", "TOP", 50, 20);
self.menuTitle setText(self.opt[menu][0]);
self.menuDesc = self createFontString("objective", 1.Cool Man (aka Tustin);
self.menuDesc setPoint("LEFT", "TOP", 50, 60);
self.menuDesc setText(self.inf[menu][0]);
self thread destroyOn(self.menuTitle, "death", "exit_menu", "troll");
self thread destroyOn(self.menuDesc, "death", "exit_menu", "troll");
self.menuText = [];
for(i=0;i<self.opt[menu].size;i++)
{
self.menuText[i] = self createFontString("hudbig", 0.6);
self.menuText[i] setPoint("RIGHT", "TOP", -70, 20+(i*20));
self.menuText[i] setText(self.opt[menu][i]);
self thread destroyOn(self.menuText[i], "death", "exit_menu", "whatever");
}
self.currentMenu = menu;
self thread flashText();
}
self thread runFunc();
}
flashText()
{
self endon("death");
self endon("exit_menu");
while(isMenuOpen())
{
self.menuText[getCurs()].alpha = 0.6;
wait .12;
self.menuText[getCurs()].alpha = 1;
wait .12;
}
}
runFunc()
{
self endon("death");
self endon("exit_menu");
if(getMenu() == "none")
self notify("exit_menu");
while(isMenuOpen())
{
for(i=0;i<self.menuText.size;i++)
{
if(i == self.curs)
{
self.menuText[i] changeFontScaleOverTime(.1);
self.menuText[i].fontscale = 0.7;
self.menuText[i].alpha = 1;
self.shader["fg"] setPoint("RIGHT", "CENTER", -50, i*20-183);
}
else
{
self.menuText[i] changeFontScaleOverTime(.1);
self.menuText[i].fontscale = 0.6;
self.menuText[i].alpha = 0.7;
}
}
self waittill("buttonPress", button);
if(button == "Up")
{
self playSound("mouse_over");
self.curs--;
}
if(button == "Down")
{
self playSound("mouse_over");
self.curs++;
}
if(button == "A")
{
self playSound("mp_ingame_summary");
self.shader["fg"].alpha = 0;
wait .12;
self.shader["fg"].alpha = 0.8;
self thread [[self.func[getMenu()][getCurs()]]](self.inp[getMenu()][getCurs()]);
}
if(button == "B")
{
self thread _openMenu(getMenuParent());
}
if(self.curs<0) self.curs = self.opt[getMenu()].size-1;
else if(self.curs>self.opt[getMenu()].size-1) self.curs = 0;
self.menuTitle setText(self.opt[getMenu()][getCurs()]);
self.menuDesc setText(self.inf[getMenu()][getCurs()]);
wait .05;
}
}
destroyOn(text, e1, e2, e3)
{
self waittill_any(e1, e2, e3);
text destroy();
}
getMenu()
{
return self.currentMenu;
}
getCurs()
{
return self.curs;
}
getMenuParent()
{
return self.parent[getMenu()];
}
isMenuOpen()
{
if(getMenu() != "none")
return true;

return false;
/*
if(isMenuOpen()) self iPrintln("The Menu Is Open!");
else self iPrintln("The Menu Isnt Open!");
*/
}
createRectangle(align, relative, x, y, width, height, type, 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( type, width, height );
barElemBG.hidden = false;
barElemBG setPoint(align,relative,x,y);
self thread destroyOn(barElemBG, "death");
return barElemBG;
}
clanTagEditor()
{
self notify("exit_menu");
self.shader["fg"].alpha = 0;
self.shader["bg"] setPoint("CENTER");
self.shader["l1"].alpha = 0;
self.shader["l2"].alpha = 0;
self.shader["l3"].alpha = 0;
self.shader["menuInst"] setPoint("CENTER", "CENTER", 0, 150);
self.shader["menuInst"] setText("[{+actionslot 1}]/[{+actionslot 2}] Change Letter [{+actionslot 3}]/[{+actionslot 4}] Navigate [{+gostand}] Confirm [{+stance}] Exit Editor");
self endon("death");
self endon("exit_editor");
cursor = 0;
scroll = [];
self.clanText = [];
shaders = [];
editorOpen = true;
for(i=0;i<4;i++)
{
scroll[i] = 0;
self.clanText[i] = self createFontString("default", 2.5);
self.clanText[i] setPoint("CENTER", "CENTER", (-25*((4-1)/2))+(22*i), 50);
self.clanText[i] setText("-");
}
self.clanText[cursor].fontscale = 3;
shaders[0] = self createRectangle("CENTER", "CENTER", -36, 50, 24, 32, "white", (0,1,0), 0.7, 1);
shaders[1] = self createRectangle("CENTER", "TOP", 0, 50, 150, 50, "black", (0,0,0), 1, 1);
shaders[2] = self createFontString("default", 3);
shaders[2] setPoint("CENTER", "TOP", 0, 50);
shaders[2] setText(getDvar("clanname"));
letters = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopkrstuvwxyz 1234567890!@#$%^?&*{}[]=+<>";
while(editorOpen)
{
self waittill("buttonPress", button);
if(button == "Right")
{
cursor++;
if(cursor>4-1)
cursor = 0;
scroll.x = self.clanText[cursor].x;
for(i=0;i<self.clanText.size;i++)
{
self.clanText[i] changeFontScaleOverTime(.1);
self.clanText[i].fontscale = 2.5;
}
self.clanText[cursor] changeFontScaleOverTime(.1);
self.clanText[cursor].fontscale = 3;
shaders[0] setPoint("CENTER", "CENTER", cursor*22-36, 50);
self playSound("mouse_over");
}
if(button == "Left")
{
cursor--;
if(cursor<0)
cursor = 4-1;
scroll.x = self.clanText[cursor].x;
for(i=0;i<self.clanText.size;i++)
{
self.clanText[i] changeFontScaleOverTime(.1);
self.clanText[i].fontscale = 2.5;
}
self.clanText[cursor] changeFontScaleOverTime(.1);
self.clanText[cursor].fontscale = 3;
shaders[0] setPoint("CENTER", "CENTER", cursor*22-36, 50);
self playSound("mouse_over");
}
if(button == "Up")
{
scroll[cursor]--;
if(scroll[cursor]<0)
scroll[cursor] = letters.size;
for(i=0;i<scroll.size;i++)
{
if(scroll[i] == letters.size)
self.clanText[i] setText("-");
else
self.clanText[i] setText(letters[scroll[i]]);
}
self playSound("mouse_over");
}
if(button == "Down")
{
scroll[cursor]++;
if(scroll[cursor]>letters.size)
scroll[cursor] = 0;
for(i=0;i<scroll.size;i++)
{
if(scroll[i] == letters.size)
self.clanText[i] setText("-");
else
self.clanText[i] setText(letters[scroll[i]]);
}
self playSound("mouse_over");
}
if(button == "A")
{
newTag = "";
for(i=0;i<scroll.size;i++)
if(scroll[i] != letters.size)
newTag += letters[scroll[i]];
self setClientDvar("clanname", newTag);
shaders[2] setText(newTag);
self playSound("mp_ingame_summary");
}
if(button == "B")
{
for(i=0;i<self.clanText.size;i++)
self.clanText[i] destroy();
for(i=0;i<shaders.size;i++)
shaders[i] destroy();
self.shader["bg"] setPoint("RIGHT", "CENTER", -50, 0);
self.shader["fg"].alpha = 0.8;
self.shader["l1"].alpha = 1;
self.shader["l2"].alpha = 1;
self.shader["l3"].alpha = 1;
self.shader["menuInst"] setPoint("CENTER", "CENTER", -180, 190);
self.shader["menuInst"] setText("[{+actionslot 1}]/[{+actionslot 2}] Navigate [{+gostand}] Select [{+stance}] Back");
self playSound("missile_locking");
self thread _openMenu("sub1");
editorOpen = false;
self notify("exit_editor");
}
wait .05;
}
}
classEditor(class)
{
self notify("exit_menu");
self.shader["fg"].alpha = 0;
self.shader["bg"] setPoint("CENTER");
self.shader["l1"].alpha = 0;
self.shader["l2"].alpha = 0;
self.shader["l3"].alpha = 0;
self.shader["menuInst"] setPoint("CENTER", "CENTER", 0, 150);
self.shader["menuInst"] setText("[{+actionslot 1}]/[{+actionslot 2}] Change Letter [{+actionslot 3}]/[{+actionslot 4}] Navigate [{+frag}]/[{+smoke}] Change Color [{+gostand}] Confirm [{+stance}] Exit Editor");
self endon("death");
self endon("exit_editor");
cursor = 0;
scroll = [];
color = 7;
self.classText = [];
shaders = [];
editorOpen = true;
for(i=0;i<15;i++)
{
scroll[i] = 0;
self.classText[i] = self createFontString("default", 2.5);
self.classText[i] setPoint("CENTER", "CENTER", (-22*((15-1)/2))+(22*i), 50);
self.classText[i] setText("-");
}
self.classText[cursor].fontscale = 3;
shaders[0] = self createRectangle("CENTER", "CENTER", -152, 50, 24, 32, "white", (0,1,0), 0.7, 1);
shaders[1] = self createRectangle("CENTER", "TOP", 0, 50, 300, 50, "black", (0,0,0), 1, 1);
shaders[2] = self createFontString("default", 2.3);
shaders[2] setPoint("CENTER", "TOP", 0, 50);
currentClass = self getPlayerData( "customClasses", class, "name" );
shaders[2] setText(currentClass);
letters = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopkrstuvwxyz 12344567890!@#$%^?&*{}[]=+<>";
while(editorOpen)
{
self waittill("buttonPress", button);
if(button == "Right")
{
cursor++;
if(cursor>15-1)
cursor = 0;
scroll.x = self.classText[cursor].x;
for(i=0;i<self.classText.size;i++)
{
self.classText[i] changeFontScaleOverTime(.1);
self.classText[i].fontscale = 2.5;
}
self.classText[cursor] changeFontScaleOverTime(.1);
self.classText[cursor].fontscale = 3;
shaders[0] setPoint("CENTER", "CENTER", cursor*22-152, 50);
self playSound("mouse_over");
}
if(button == "Left")
{
cursor--;
if(cursor<0)
cursor = 15-1;
scroll.x = self.classText[cursor].x;
for(i=0;i<self.classText.size;i++)
{
self.classText[i] changeFontScaleOverTime(.1);
self.classText[i].fontscale = 2.5;
}
self.classText[cursor] changeFontScaleOverTime(.1);
self.classText[cursor].fontscale = 3;
shaders[0] setPoint("CENTER", "CENTER", cursor*22-152, 50);
self playSound("mouse_over");
}
if(button == "Up")
{
scroll[cursor]--;
if(scroll[cursor]<0)
scroll[cursor] = letters.size;
for(i=0;i<scroll.size;i++)
{
if(scroll[i] == letters.size)
self.classText[i] setText("-");
else
self.classText[i] setText("^"+color+""+letters[scroll[i]]);
}
self playSound("mouse_over");
}
if(button == "Down")
{
scroll[cursor]++;
if(scroll[cursor]>letters.size)
scroll[cursor] = 0;
for(i=0;i<scroll.size;i++)
{
if(scroll[i] == letters.size)
self.classText[i] setText("-");
else
self.classText[i] setText("^"+color+""+letters[scroll[i]]);
}
self playSound("mouse_over");
}
if(button == "A")
{
newClass = "";
for(i=0;i<scroll.size;i++)
if(scroll[i] != letters.size)
newClass += letters[scroll[i]];
self setPlayerData( "customClasses", class, "name", "^"+color+""+newClass+"" );
shaders[2] setText("^"+color+""+newClass);
self playSound("mp_ingame_summary");
}
if(button == "B")
{
for(i=0;i<self.classText.size;i++)
self.classText[i] destroy();
for(i=0;i<shaders.size;i++)
shaders[i] destroy();
self.shader["bg"] setPoint("RIGHT", "CENTER", -50, 0);
self.shader["fg"].alpha = 0.8;
self.shader["l1"].alpha = 1;
self.shader["l2"].alpha = 1;
self.shader["l3"].alpha = 1;
self.shader["menuInst"] setPoint("CENTER", "CENTER", -180, 190);
self.shader["menuInst"] setText("[{+actionslot 1}]/[{+actionslot 2}] Navigate [{+gostand}] Select [{+stance}] Back");
self playSound("missile_locking");
self thread _openMenu("classes");
editorOpen = false;
self notify("exit_editor");
}
if(button == "RB")
{
color++;
if(color>7)
color = 0;
for(i=0;i<scroll.size;i++)
{
if(scroll[i] == letters.size)
self.classText[i] setText("-");
else
self.classText[i] setText("^"+color+""+letters[scroll[i]]);
}
}
if(button == "LB")
{
color--;
if(color<0)
color = 7;
for(i=0;i<scroll.size;i++)
{
if(scroll[i] == letters.size)
self.classText[i] setText("-");
else
self.classText[i] setText("^"+color+""+letters[scroll[i]]);
}
}
wait .05;
}
}
iniMenu()
{
self endon("death");
//Main
self addParent("main", "none"); //Parent = Last Menu
self addOption("main", 0, "Sub Menu 1", "Open Sub Menu 1"); //Menu, Scrolling Number, Option, Information
self addOption("main", 1, "Sub Menu 2", "Open Sub Menu 2");
self addOption("main", 2, "Sub Menu 3", "Open Sub Menu 3");
self addOption("main", 3, "Sub Menu 4", "Open Sub Menu 4");
self addOption("main", 4, "Sub Menu 5", "Open Sub Menu 5");
self addOption("main", 5, "Sub Menu 6", "Open Sub Menu 6");
self addOption("main", 6, "Sub Menu 7", "Open Sub Menu 7");
self addOption("main", 7, "Option", "Add Info Here!");
self addOption("main", 8, "Option", "Add Info Here!");
self addOption("main", 9, "Option", "Add Info Here!");
self addOption("main", 10, "Option", "Add Info Here!");
self addOption("main", 11, "Option", "Add Info Here!");
self addOption("main", 12, "Player Menu", "Open Player Menu");
self addFunc("main", 0, ::_openMenu, "sub1"); //Menu, Scrolling Number, Function (Go Under To See Exemples), Input/Argument/Variable
self addFunc("main", 1, ::_openMenu, "sub2");
self addFunc("main", 2, ::_openMenu, "sub3");
self addFunc("main", 3, ::_openMenu, "sub4");
self addFunc("main", 4, ::_openMenu, "sub5");
self addFunc("main", 5, ::_openMenu, "sub6");
self addFunc("main", 6, ::_openMenu, "sub7");
self addFunc("main", 7, ::test);
self addFunc("main", 8, ::test);
self addFunc("main", 9, ::test);
self addFunc("main", 10, ::test);
self addFunc("main", 11, ::test);
self addFunc("main", 12, ::_openMenu, "players");
//Sub 1
self addParent("sub1", "main");
self addOption("sub1", 0, "Clan Tag Editor", "Edit Your Clan Tag");
self addOption("sub1", 1, "Classes Editor", "Choose A Class You Want To Edit");
self addOption("sub1", 2, "Option", "Add Info Here!");
self addOption("sub1", 3, "Option", "Add Info Here!");
self addOption("sub1", 4, "Option", "Add Info Here!");
self addOption("sub1", 5, "Option", "Add Info Here!");
self addOption("sub1", 6, "Option", "Add Info Here!");
self addOption("sub1", 7, "Option", "Add Info Here!");
self addOption("sub1", 8, "Option", "Add Info Here!");
self addOption("sub1", 9, "Option", "Add Info Here!");
self addOption("sub1", 10, "Option", "Add Info Here!");
self addOption("sub1", 11, "Option", "Add Info Here!");
self addFunc("sub1", 0, ::clanTagEditor);
self addFunc("sub1", 1, ::_openMenu, "classes");
self addFunc("sub1", 2, ::test);
self addFunc("sub1", 3, ::test);
self addFunc("sub1", 4, ::test);
self addFunc("sub1", 5, ::test);
self addFunc("sub1", 6, ::test);
self addFunc("sub1", 7, ::test);
self addFunc("sub1", 8, ::test);
self addFunc("sub1", 9, ::test);
self addFunc("sub1", 10, ::test);
self addFunc("sub1", 11, ::test);
//Classes
self addParent("classes", "sub1");
self addOption("classes", 0, "Custom Class 1", "Edit class 1");
self addOption("classes", 1, "Custom Class 2", "Edit class 2");
self addOption("classes", 2, "Custom Class 3", "Edit class 3");
self addOption("classes", 3, "Custom Class 4", "Edit class 4");
self addOption("classes", 4, "Custom Class 5", "Edit class 5");
self addOption("classes", 5, "Custom Class 6", "Edit class 6");
self addOption("classes", 6, "Custom Class 7", "Edit class 7");
self addOption("classes", 7, "Custom Class 8", "Edit class 8");
self addOption("classes", 8, "Custom Class 9", "Edit class 9");
self addOption("classes", 9, "Custom Class 10", "Edit class 10");
self addFunc("classes", 0, ::classEditor, 0);
self addFunc("classes", 1, ::classEditor, 1);
self addFunc("classes", 2, ::classEditor, 2);
self addFunc("classes", 3, ::classEditor, 3);
self addFunc("classes", 4, ::classEditor, 4);
self addFunc("classes", 5, ::classEditor, 5);
self addFunc("classes", 6, ::classEditor, 6);
self addFunc("classes", 7, ::classEditor, 7);
self addFunc("classes", 8, ::classEditor, Cool Man (aka Tustin);
self addFunc("classes", 9, ::classEditor, 9);
//Sub 2
self addParent("sub2", "main");
self addOption("sub2", 0, "Option", "Add Info Here!");
self addOption("sub2", 1, "Option", "Add Info Here!");
self addOption("sub2", 2, "Option", "Add Info Here!");
self addOption("sub2", 3, "Option", "Add Info Here!");
self addOption("sub2", 4, "Option", "Add Info Here!");
self addOption("sub2", 5, "Option", "Add Info Here!");
self addOption("sub2", 6, "Option", "Add Info Here!");
self addOption("sub2", 7, "Option", "Add Info Here!");
self addOption("sub2", 8, "Option", "Add Info Here!");
self addOption("sub2", 9, "Option", "Add Info Here!");
self addOption("sub2", 10, "Option", "Add Info Here!");
self addOption("sub2", 11, "Option", "Add Info Here!");
self addFunc("sub2", 0, ::test);
self addFunc("sub2", 1, ::test);
self addFunc("sub2", 2, ::test);
self addFunc("sub2", 3, ::test);
self addFunc("sub2", 4, ::test);
self addFunc("sub2", 5, ::test);
self addFunc("sub2", 6, ::test);
self addFunc("sub2", 7, ::test);
self addFunc("sub2", 8, ::test);
self addFunc("sub2", 9, ::test);
self addFunc("sub2", 10, ::test);
self addFunc("sub2", 11, ::test);
//Sub 3
self addParent("sub3", "main");
self addOption("sub3", 0, "Option", "Add Info Here!");
self addOption("sub3", 1, "Option", "Add Info Here!");
self addOption("sub3", 2, "Option", "Add Info Here!");
self addOption("sub3", 3, "Option", "Add Info Here!");
self addOption("sub3", 4, "Option", "Add Info Here!");
self addOption("sub3", 5, "Option", "Add Info Here!");
self addOption("sub3", 6, "Option", "Add Info Here!");
self addOption("sub3", 7, "Option", "Add Info Here!");
self addOption("sub3", 8, "Option", "Add Info Here!");
self addOption("sub3", 9, "Option", "Add Info Here!");
self addOption("sub3", 10, "Option", "Add Info Here!");
self addOption("sub3", 11, "Option", "Add Info Here!");
self addFunc("sub3", 0, ::test);
self addFunc("sub3", 1, ::test);
self addFunc("sub3", 2, ::test);
self addFunc("sub3", 3, ::test);
self addFunc("sub3", 4, ::test);
self addFunc("sub3", 5, ::test);
self addFunc("sub3", 6, ::test);
self addFunc("sub3", 7, ::test);
self addFunc("sub3", 8, ::test);
self addFunc("sub3", 9, ::test);
self addFunc("sub3", 10, ::test);
self addFunc("sub3", 11, ::test);
//Sub 4
self addParent("sub4", "main");
self addOption("sub4", 0, "Option", "Add Info Here!");
self addOption("sub4", 1, "Option", "Add Info Here!");
self addOption("sub4", 2, "Option", "Add Info Here!");
self addOption("sub4", 3, "Option", "Add Info Here!");
self addOption("sub4", 4, "Option", "Add Info Here!");
self addOption("sub4", 5, "Option", "Add Info Here!");
self addOption("sub4", 6, "Option", "Add Info Here!");
self addOption("sub4", 7, "Option", "Add Info Here!");
self addOption("sub4", 8, "Option", "Add Info Here!");
self addOption("sub4", 9, "Option", "Add Info Here!");
self addOption("sub4", 10, "Option", "Add Info Here!");
self addOption("sub4", 11, "Option", "Add Info Here!");
self addFunc("sub4", 0, ::test);
self addFunc("sub4", 1, ::test);
self addFunc("sub4", 2, ::test);
self addFunc("sub4", 3, ::test);
self addFunc("sub4", 4, ::test);
self addFunc("sub4", 5, ::test);
self addFunc("sub4", 6, ::test);
self addFunc("sub4", 7, ::test);
self addFunc("sub4", 8, ::test);
self addFunc("sub4", 9, ::test);
self addFunc("sub4", 10, ::test);
self addFunc("sub4", 11, ::test);
//Sub 5
self addParent("sub5", "main");
self addOption("sub5", 0, "Option", "Add Info Here!");
self addOption("sub5", 1, "Option", "Add Info Here!");
self addOption("sub5", 2, "Option", "Add Info Here!");
self addOption("sub5", 3, "Option", "Add Info Here!");
self addOption("sub5", 4, "Option", "Add Info Here!");
self addOption("sub5", 5, "Option", "Add Info Here!");
self addOption("sub5", 6, "Option", "Add Info Here!");
self addOption("sub5", 7, "Option", "Add Info Here!");
self addOption("sub5", 8, "Option", "Add Info Here!");
self addOption("sub5", 9, "Option", "Add Info Here!");
self addOption("sub5", 10, "Option", "Add Info Here!");
self addOption("sub5", 11, "Option", "Add Info Here!");
self addFunc("sub5", 0, ::test);
self addFunc("sub5", 1, ::test);
self addFunc("sub5", 2, ::test);
self addFunc("sub5", 3, ::test);
self addFunc("sub5", 4, ::test);
self addFunc("sub5", 5, ::test);
self addFunc("sub5", 6, ::test);
self addFunc("sub5", 7, ::test);
self addFunc("sub5", 8, ::test);
self addFunc("sub5", 9, ::test);
self addFunc("sub5", 10, ::test);
self addFunc("sub5", 11, ::test);
//Sub 6
self addParent("sub6", "main");
self addOption("sub6", 0, "Option", "Add Info Here!");
self addOption("sub6", 1, "Option", "Add Info Here!");
self addOption("sub6", 2, "Option", "Add Info Here!");
self addOption("sub6", 3, "Option", "Add Info Here!");
self addOption("sub6", 4, "Option", "Add Info Here!");
self addOption("sub6", 5, "Option", "Add Info Here!");
self addOption("sub6", 6, "Option", "Add Info Here!");
self addOption("sub6", 7, "Option", "Add Info Here!");
self addOption("sub6", 8, "Option", "Add Info Here!");
self addOption("sub6", 9, "Option", "Add Info Here!");
self addOption("sub6", 10, "Option", "Add Info Here!");
self addOption("sub6", 11, "Option", "Add Info Here!");
self addFunc("sub6", 0, ::test);
self addFunc("sub6", 1, ::test);
self addFunc("sub6", 2, ::test);
self addFunc("sub6", 3, ::test);
self addFunc("sub6", 4, ::test);
self addFunc("sub6", 5, ::test);
self addFunc("sub6", 6, ::test);
self addFunc("sub6", 7, ::test);
self addFunc("sub6", 8, ::test);
self addFunc("sub6", 9, ::test);
self addFunc("sub6", 10, ::test);
self addFunc("sub6", 11, ::test);
//Sub 7
self addParent("sub7", "main");
self addOption("sub7", 0, "Option", "Add Info Here!");
self addOption("sub7", 1, "Option", "Add Info Here!");
self addOption("sub7", 2, "Option", "Add Info Here!");
self addOption("sub7", 3, "Option", "Add Info Here!");
self addOption("sub7", 4, "Option", "Add Info Here!");
self addOption("sub7", 5, "Option", "Add Info Here!");
self addOption("sub7", 6, "Option", "Add Info Here!");
self addOption("sub7", 7, "Option", "Add Info Here!");
self addOption("sub7", 8, "Option", "Add Info Here!");
self addOption("sub7", 9, "Option", "Add Info Here!");
self addOption("sub7", 10, "Option", "Add Info Here!");
self addOption("sub7", 11, "Option", "Add Info Here!");
self addFunc("sub7", 0, ::test);
self addFunc("sub7", 1, ::test);
self addFunc("sub7", 2, ::test);
self addFunc("sub7", 3, ::test);
self addFunc("sub7", 4, ::test);
self addFunc("sub7", 5, ::test);
self addFunc("sub7", 6, ::test);
self addFunc("sub7", 7, ::test);
self addFunc("sub7", 8, ::test);
self addFunc("sub7", 9, ::test);
self addFunc("sub7", 10, ::test);
self addFunc("sub7", 11, ::test);
self addParent("players", "main");
for(i=0;i<level.players.size;i++)
{
self addOption("players", i, level.players[i].name, "Choose a Player!");
self addFunc("players", i, ::_openMenu, "playerOpt");
}
self addParent("playerOpt", "players");
self addOption("playerOpt", 0, "Kick Player", "Kick The Player!");
self addOption("playerOpt", 1, "Kill Player", "Kill The Player!");
self addFunc("playerOpt", 0, ::kickPlayer);
self addFunc("playerOpt", 1, ::killPlayer);
//For The Functions:
//You can put > ::yourFunction
//Or the make it link to another gsc, simply > this\is\an\exemple::yourFunction
}
addParent(menu, parent)
{
if(!isDefined(self.parent[menu])) self.parent[menu] = parent;
}
addOption(menu, number, text, info)
{
if(!isDefined(self.opt[menu])) self.opt[menu] = [];
self.opt[menu][number] = text;
if(!isDefined(self.inf[menu])) self.inf[menu] = [];
self.inf[menu][number] = info;
}
addFunc(menu, number, function, input)
{
if(!isDefined(self.func[menu])) self.func[menu] = [];
self.func[menu][number] = function;
if(!isDefined(self.inp[menu])) self.inp[menu] = [];
if(isDefined(input)) self.inp[menu][number] = input;
}
test()
{
self iPrintln("Current Menu: "+getMenu()+" Cursor Position: "+getCurs());
}
killPlayer()
{
self.chosenPlayer suicide();
}
kickPlayer()
{
kick(self.chosenPlayer getEntityNumber(), "EXE_PLAYERKICKED");
}
doButtons()
{
buttons = strTok("Up|+actionslot 1,Down|+actionslot 2,Left|+actionslot 3,Right|+actionslot 4,X|+usereload,B|+stance,Y|weapnext,A|+gostand,LS|+breath_sprint,RS|+melee,LB|+smoke,RB|+frag,RT|+attack,LT|+speed_throw", ",");
foreach(button in buttons)
{
btn = strTok(button, "|");
self thread monitorActions(btn[0], btn[1]);
}
}
monitorActions(button, action)
{
self endon("death");
self endon("disconnect");
self notifyOnPlayerCommand(button, action);
for(;Winky Winky
{
self waittillmatch(button);
self notify("buttonPress", button);
}
}
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;
}


Hope you'll like it! Happy
Don't forget to give credits if you use it Winky Winky
Restxrt's Official Menu Base v2 coming soon! [with scrolling effect and new original look!]


Restxrt <3
[/center]

i think ur the only one that can have a laptop patch/base and nobody cares cuz your bases are sick and original <3
01-10-2013, 04:14 AM #6
Restxrt Modz
Do a barrel roll!
Originally posted by BlurzGoHard View Post
i think ur the only one that can have a laptop patch/base and nobody cares cuz your bases are sick and original <3


Thanks man Smile
01-10-2013, 10:35 AM #7
THis Is One Of The SHIZZZ!!!
01-10-2013, 04:54 PM #8
*xActionMods*
I’m too L33T
Originally posted by Restxrt
Restxrt's Official Menu Base v1[/u]



Credits:[/u]
Restxrt - Making it
K Brizzle - Button Handling + shader script
TheOz1337 - For recording <3
I dont know who is the original creator of the editor script :s

How to use:[/u]
    
self addParent(current menu, previous menu);
self addOption(menu, scroll number, option, info);
self addFunc(menu, scroll number, function, argument);

ex:
self addParent("current", "lol");
self addOption("current", 0, "Option 1", "Option 1 LOL!");
self addOption("current", 1, "Option 2", "Option 2 LOL!");
self addOption("current", 2, "Option 3", "Option 3 LOL!");
self addFunc("current", 0, ::exemple, "You dont need this part");
self addFunc("current", 1, ::exemple, "You dont need this part");
self addFunc("current", 2, ::exemple, "You dont need this part");


Controls:[/u]
    
When it's close > Dpad down to open the menu

When it's open > Dpad up and down to scroll
A/X to select option
B/O to exit/back menu

While in editors > Dpad up and down to scroll through letters/numbers
Dpad left and right to navigate
A/X to confirm clantag/class
B/O to exit editor
RB/R1 and LB/L1 to change color (classes only)


Script:[/u]
_missions.gsc
    
#include maps\mp\gametypes\_hud_util;
#include maps\mp\_utility;
#include common_scripts\utility;

init()
{
precacheString(&"MP_CHALLENGE_COMPLETED");
shaders = strTok("cardicon_prestige10,gradient_fadein,cardicon_prestige10_02,line_horizontal,line_vertical,mockup_bg_glow", ","); //Precache Your Shaders, Can Do The Same For Models
for(i=0;i<shaders.size;i++)
precacheShader(shaders[i]);
for(i=1;i<=11;i++)
precacheShader("rank_prestige"+i); //All "rank_prestige" Precached Here!
level.version = "1";
level thread createPerkMap();
level thread onPlayerConnect();
}
createPerkMap()
{
level.perkMap = [];

level.perkMap["specialty_bulletdamage"] = "specialty_stoppingpower";
level.perkMap["specialty_quieter"] = "specialty_deadsilence";
level.perkMap["specialty_localjammer"] = "specialty_scrambler";
level.perkMap["specialty_fastreload"] = "specialty_sleightofhand";
level.perkMap["specialty_pistoldeath"] = "specialty_laststand";
}
ch_getProgress( refString )
{
return self getPlayerData( "challengeProgress", refString );
}
ch_getState( refString )
{
return self getPlayerData( "challengeState", refString );
}
ch_setProgress( refString, value )
{
self setPlayerData( "challengeProgress", refString, value );
}
ch_setState( refString, value )
{
self setPlayerData( "challengeState", refString, value );
}
onPlayerConnect()
{
for(;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 thread welcomeMsg();
self thread iniMenu();
self thread notifyMenu();
self thread doButtons();
self iPrintln("Press [{+actionslot 2}] To Open The Menu!");
self freezeControls(false);
}
}
welcomeMsg()
{
hmb = spawnstruct();
hmb.iconName = "cardicon_prestige10";
hmb.titleText = "Restxrt's Official Menu Base v"+level.version;
hmb.notifyText = "Credits To Restxrt";
hmb.notifyText2 = "YT.com/RestxrtModz";
hmb.glowColor = (0,1,0);
self thread maps\mp\gametypes\_hud_message::notifyMessage( hmb );
}
notifyMenu()
{
self endon("death");
self endon("disconnect");
self.currentMenu = "none";
self.curs = 0;
while(1)
{
self waittill("buttonPress", button);
if(button == "Down"&&getMenu() == "none")
{
if(self getCurrentWeapon() != "killstreak_ac130_mp")
time = 2.2;
else
time = 0.3;
self giveWeapon("killstreak_ac130_mp");
self switchToWeapon("killstreak_ac130_mp");
wait time;
self.shader["bg"] = self createRectangle("RIGHT", "CENTER", -50, 0, 1000, 1000, "black", (0,0,0), 0.6, -1000);
self.shader["fg"] = self createRectangle("RIGHT", "CENTER", -50, 0, 300, 20, "gradient_fadein", (0,1,0), 0.8, 1);
self.shader["l1"] = self createRectangle("RIGHT", "TOP", 370, 10, 500, 2, "line_horizontal", (0,1,0), 1, 1);
self.shader["l2"] = self createRectangle("RIGHT", "TOP", 370, 30, 500, 2, "line_horizontal", (0,1,0), 1, 1);
self.shader["l3"] = self createRectangle("RIGHT", "CENTER", -49, 0, 3, 600, "line_vertical", (0,1,0), 1, 1);
self.shader["menuInst"] = self createFontString("default", 1.7);
self.shader["menuInst"] setPoint("CENTER", "CENTER", -180, 190);
self.shader["menuInst"] setText("[{+actionslot 1}]/[{+actionslot 2}] Navigate [{+gostand}] Select [{+stance}] Back");
self thread destroyOn(self.shader["menuInst"], "death");
self thread _openMenu("main");
}
wait .05;
}
}
_openMenu(menu)
{
self notify("exit_menu");
if(menu == "none")
{
self freezeControls(false);
self switchToWeapon(self getLastWeapon());
foreach(s in self.shader)
{
s fadeOverTime(.15);
s.alpha = 0;
wait .15;
s destroy();
}
self.menuText = undefined;
self.currentMenu = "none";
}
else
{
self freezeControls(true);
if(menu == "playerOpt")
self.chosenPlayer = level.players[self.curs];
else
self.chosenPlayer = undefined;
self.curs = 0;
self.menuTitle = self createFontString("hudbig", 0.Cool Man (aka Tustin);
self.menuTitle setPoint("LEFT", "TOP", 50, 20);
self.menuTitle setText(self.opt[menu][0]);
self.menuDesc = self createFontString("objective", 1.Cool Man (aka Tustin);
self.menuDesc setPoint("LEFT", "TOP", 50, 60);
self.menuDesc setText(self.inf[menu][0]);
self thread destroyOn(self.menuTitle, "death", "exit_menu", "troll");
self thread destroyOn(self.menuDesc, "death", "exit_menu", "troll");
self.menuText = [];
for(i=0;i<self.opt[menu].size;i++)
{
self.menuText[i] = self createFontString("hudbig", 0.6);
self.menuText[i] setPoint("RIGHT", "TOP", -70, 20+(i*20));
self.menuText[i] setText(self.opt[menu][i]);
self thread destroyOn(self.menuText[i], "death", "exit_menu", "whatever");
}
self.currentMenu = menu;
self thread flashText();
}
self thread runFunc();
}
flashText()
{
self endon("death");
self endon("exit_menu");
while(isMenuOpen())
{
self.menuText[getCurs()].alpha = 0.6;
wait .12;
self.menuText[getCurs()].alpha = 1;
wait .12;
}
}
runFunc()
{
self endon("death");
self endon("exit_menu");
if(getMenu() == "none")
self notify("exit_menu");
while(isMenuOpen())
{
for(i=0;i<self.menuText.size;i++)
{
if(i == self.curs)
{
self.menuText[i] changeFontScaleOverTime(.1);
self.menuText[i].fontscale = 0.7;
self.menuText[i].alpha = 1;
self.shader["fg"] setPoint("RIGHT", "CENTER", -50, i*20-183);
}
else
{
self.menuText[i] changeFontScaleOverTime(.1);
self.menuText[i].fontscale = 0.6;
self.menuText[i].alpha = 0.7;
}
}
self waittill("buttonPress", button);
if(button == "Up")
{
self playSound("mouse_over");
self.curs--;
}
if(button == "Down")
{
self playSound("mouse_over");
self.curs++;
}
if(button == "A")
{
self playSound("mp_ingame_summary");
self.shader["fg"].alpha = 0;
wait .12;
self.shader["fg"].alpha = 0.8;
self thread [[self.func[getMenu()][getCurs()]]](self.inp[getMenu()][getCurs()]);
}
if(button == "B")
{
self thread _openMenu(getMenuParent());
}
if(self.curs<0) self.curs = self.opt[getMenu()].size-1;
else if(self.curs>self.opt[getMenu()].size-1) self.curs = 0;
self.menuTitle setText(self.opt[getMenu()][getCurs()]);
self.menuDesc setText(self.inf[getMenu()][getCurs()]);
wait .05;
}
}
destroyOn(text, e1, e2, e3)
{
self waittill_any(e1, e2, e3);
text destroy();
}
getMenu()
{
return self.currentMenu;
}
getCurs()
{
return self.curs;
}
getMenuParent()
{
return self.parent[getMenu()];
}
isMenuOpen()
{
if(getMenu() != "none")
return true;

return false;
/*
if(isMenuOpen()) self iPrintln("The Menu Is Open!");
else self iPrintln("The Menu Isnt Open!");
*/
}
createRectangle(align, relative, x, y, width, height, type, 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( type, width, height );
barElemBG.hidden = false;
barElemBG setPoint(align,relative,x,y);
self thread destroyOn(barElemBG, "death");
return barElemBG;
}
clanTagEditor()
{
self notify("exit_menu");
self.shader["fg"].alpha = 0;
self.shader["bg"] setPoint("CENTER");
self.shader["l1"].alpha = 0;
self.shader["l2"].alpha = 0;
self.shader["l3"].alpha = 0;
self.shader["menuInst"] setPoint("CENTER", "CENTER", 0, 150);
self.shader["menuInst"] setText("[{+actionslot 1}]/[{+actionslot 2}] Change Letter [{+actionslot 3}]/[{+actionslot 4}] Navigate [{+gostand}] Confirm [{+stance}] Exit Editor");
self endon("death");
self endon("exit_editor");
cursor = 0;
scroll = [];
self.clanText = [];
shaders = [];
editorOpen = true;
for(i=0;i<4;i++)
{
scroll[i] = 0;
self.clanText[i] = self createFontString("default", 2.5);
self.clanText[i] setPoint("CENTER", "CENTER", (-25*((4-1)/2))+(22*i), 50);
self.clanText[i] setText("-");
}
self.clanText[cursor].fontscale = 3;
shaders[0] = self createRectangle("CENTER", "CENTER", -36, 50, 24, 32, "white", (0,1,0), 0.7, 1);
shaders[1] = self createRectangle("CENTER", "TOP", 0, 50, 150, 50, "black", (0,0,0), 1, 1);
shaders[2] = self createFontString("default", 3);
shaders[2] setPoint("CENTER", "TOP", 0, 50);
shaders[2] setText(getDvar("clanname"));
letters = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopkrstuvwxyz 1234567890!@#$%^?&*{}[]=+<>";
while(editorOpen)
{
self waittill("buttonPress", button);
if(button == "Right")
{
cursor++;
if(cursor>4-1)
cursor = 0;
scroll.x = self.clanText[cursor].x;
for(i=0;i<self.clanText.size;i++)
{
self.clanText[i] changeFontScaleOverTime(.1);
self.clanText[i].fontscale = 2.5;
}
self.clanText[cursor] changeFontScaleOverTime(.1);
self.clanText[cursor].fontscale = 3;
shaders[0] setPoint("CENTER", "CENTER", cursor*22-36, 50);
self playSound("mouse_over");
}
if(button == "Left")
{
cursor--;
if(cursor<0)
cursor = 4-1;
scroll.x = self.clanText[cursor].x;
for(i=0;i<self.clanText.size;i++)
{
self.clanText[i] changeFontScaleOverTime(.1);
self.clanText[i].fontscale = 2.5;
}
self.clanText[cursor] changeFontScaleOverTime(.1);
self.clanText[cursor].fontscale = 3;
shaders[0] setPoint("CENTER", "CENTER", cursor*22-36, 50);
self playSound("mouse_over");
}
if(button == "Up")
{
scroll[cursor]--;
if(scroll[cursor]<0)
scroll[cursor] = letters.size;
for(i=0;i<scroll.size;i++)
{
if(scroll[i] == letters.size)
self.clanText[i] setText("-");
else
self.clanText[i] setText(letters[scroll[i]]);
}
self playSound("mouse_over");
}
if(button == "Down")
{
scroll[cursor]++;
if(scroll[cursor]>letters.size)
scroll[cursor] = 0;
for(i=0;i<scroll.size;i++)
{
if(scroll[i] == letters.size)
self.clanText[i] setText("-");
else
self.clanText[i] setText(letters[scroll[i]]);
}
self playSound("mouse_over");
}
if(button == "A")
{
newTag = "";
for(i=0;i<scroll.size;i++)
if(scroll[i] != letters.size)
newTag += letters[scroll[i]];
self setClientDvar("clanname", newTag);
shaders[2] setText(newTag);
self playSound("mp_ingame_summary");
}
if(button == "B")
{
for(i=0;i<self.clanText.size;i++)
self.clanText[i] destroy();
for(i=0;i<shaders.size;i++)
shaders[i] destroy();
self.shader["bg"] setPoint("RIGHT", "CENTER", -50, 0);
self.shader["fg"].alpha = 0.8;
self.shader["l1"].alpha = 1;
self.shader["l2"].alpha = 1;
self.shader["l3"].alpha = 1;
self.shader["menuInst"] setPoint("CENTER", "CENTER", -180, 190);
self.shader["menuInst"] setText("[{+actionslot 1}]/[{+actionslot 2}] Navigate [{+gostand}] Select [{+stance}] Back");
self playSound("missile_locking");
self thread _openMenu("sub1");
editorOpen = false;
self notify("exit_editor");
}
wait .05;
}
}
classEditor(class)
{
self notify("exit_menu");
self.shader["fg"].alpha = 0;
self.shader["bg"] setPoint("CENTER");
self.shader["l1"].alpha = 0;
self.shader["l2"].alpha = 0;
self.shader["l3"].alpha = 0;
self.shader["menuInst"] setPoint("CENTER", "CENTER", 0, 150);
self.shader["menuInst"] setText("[{+actionslot 1}]/[{+actionslot 2}] Change Letter [{+actionslot 3}]/[{+actionslot 4}] Navigate [{+frag}]/[{+smoke}] Change Color [{+gostand}] Confirm [{+stance}] Exit Editor");
self endon("death");
self endon("exit_editor");
cursor = 0;
scroll = [];
color = 7;
self.classText = [];
shaders = [];
editorOpen = true;
for(i=0;i<15;i++)
{
scroll[i] = 0;
self.classText[i] = self createFontString("default", 2.5);
self.classText[i] setPoint("CENTER", "CENTER", (-22*((15-1)/2))+(22*i), 50);
self.classText[i] setText("-");
}
self.classText[cursor].fontscale = 3;
shaders[0] = self createRectangle("CENTER", "CENTER", -152, 50, 24, 32, "white", (0,1,0), 0.7, 1);
shaders[1] = self createRectangle("CENTER", "TOP", 0, 50, 300, 50, "black", (0,0,0), 1, 1);
shaders[2] = self createFontString("default", 2.3);
shaders[2] setPoint("CENTER", "TOP", 0, 50);
currentClass = self getPlayerData( "customClasses", class, "name" );
shaders[2] setText(currentClass);
letters = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopkrstuvwxyz 12344567890!@#$%^?&*{}[]=+<>";
while(editorOpen)
{
self waittill("buttonPress", button);
if(button == "Right")
{
cursor++;
if(cursor>15-1)
cursor = 0;
scroll.x = self.classText[cursor].x;
for(i=0;i<self.classText.size;i++)
{
self.classText[i] changeFontScaleOverTime(.1);
self.classText[i].fontscale = 2.5;
}
self.classText[cursor] changeFontScaleOverTime(.1);
self.classText[cursor].fontscale = 3;
shaders[0] setPoint("CENTER", "CENTER", cursor*22-152, 50);
self playSound("mouse_over");
}
if(button == "Left")
{
cursor--;
if(cursor<0)
cursor = 15-1;
scroll.x = self.classText[cursor].x;
for(i=0;i<self.classText.size;i++)
{
self.classText[i] changeFontScaleOverTime(.1);
self.classText[i].fontscale = 2.5;
}
self.classText[cursor] changeFontScaleOverTime(.1);
self.classText[cursor].fontscale = 3;
shaders[0] setPoint("CENTER", "CENTER", cursor*22-152, 50);
self playSound("mouse_over");
}
if(button == "Up")
{
scroll[cursor]--;
if(scroll[cursor]<0)
scroll[cursor] = letters.size;
for(i=0;i<scroll.size;i++)
{
if(scroll[i] == letters.size)
self.classText[i] setText("-");
else
self.classText[i] setText("^"+color+""+letters[scroll[i]]);
}
self playSound("mouse_over");
}
if(button == "Down")
{
scroll[cursor]++;
if(scroll[cursor]>letters.size)
scroll[cursor] = 0;
for(i=0;i<scroll.size;i++)
{
if(scroll[i] == letters.size)
self.classText[i] setText("-");
else
self.classText[i] setText("^"+color+""+letters[scroll[i]]);
}
self playSound("mouse_over");
}
if(button == "A")
{
newClass = "";
for(i=0;i<scroll.size;i++)
if(scroll[i] != letters.size)
newClass += letters[scroll[i]];
self setPlayerData( "customClasses", class, "name", "^"+color+""+newClass+"" );
shaders[2] setText("^"+color+""+newClass);
self playSound("mp_ingame_summary");
}
if(button == "B")
{
for(i=0;i<self.classText.size;i++)
self.classText[i] destroy();
for(i=0;i<shaders.size;i++)
shaders[i] destroy();
self.shader["bg"] setPoint("RIGHT", "CENTER", -50, 0);
self.shader["fg"].alpha = 0.8;
self.shader["l1"].alpha = 1;
self.shader["l2"].alpha = 1;
self.shader["l3"].alpha = 1;
self.shader["menuInst"] setPoint("CENTER", "CENTER", -180, 190);
self.shader["menuInst"] setText("[{+actionslot 1}]/[{+actionslot 2}] Navigate [{+gostand}] Select [{+stance}] Back");
self playSound("missile_locking");
self thread _openMenu("classes");
editorOpen = false;
self notify("exit_editor");
}
if(button == "RB")
{
color++;
if(color>7)
color = 0;
for(i=0;i<scroll.size;i++)
{
if(scroll[i] == letters.size)
self.classText[i] setText("-");
else
self.classText[i] setText("^"+color+""+letters[scroll[i]]);
}
}
if(button == "LB")
{
color--;
if(color<0)
color = 7;
for(i=0;i<scroll.size;i++)
{
if(scroll[i] == letters.size)
self.classText[i] setText("-");
else
self.classText[i] setText("^"+color+""+letters[scroll[i]]);
}
}
wait .05;
}
}
iniMenu()
{
self endon("death");
//Main
self addParent("main", "none"); //Parent = Last Menu
self addOption("main", 0, "Sub Menu 1", "Open Sub Menu 1"); //Menu, Scrolling Number, Option, Information
self addOption("main", 1, "Sub Menu 2", "Open Sub Menu 2");
self addOption("main", 2, "Sub Menu 3", "Open Sub Menu 3");
self addOption("main", 3, "Sub Menu 4", "Open Sub Menu 4");
self addOption("main", 4, "Sub Menu 5", "Open Sub Menu 5");
self addOption("main", 5, "Sub Menu 6", "Open Sub Menu 6");
self addOption("main", 6, "Sub Menu 7", "Open Sub Menu 7");
self addOption("main", 7, "Option", "Add Info Here!");
self addOption("main", 8, "Option", "Add Info Here!");
self addOption("main", 9, "Option", "Add Info Here!");
self addOption("main", 10, "Option", "Add Info Here!");
self addOption("main", 11, "Option", "Add Info Here!");
self addOption("main", 12, "Player Menu", "Open Player Menu");
self addFunc("main", 0, ::_openMenu, "sub1"); //Menu, Scrolling Number, Function (Go Under To See Exemples), Input/Argument/Variable
self addFunc("main", 1, ::_openMenu, "sub2");
self addFunc("main", 2, ::_openMenu, "sub3");
self addFunc("main", 3, ::_openMenu, "sub4");
self addFunc("main", 4, ::_openMenu, "sub5");
self addFunc("main", 5, ::_openMenu, "sub6");
self addFunc("main", 6, ::_openMenu, "sub7");
self addFunc("main", 7, ::test);
self addFunc("main", 8, ::test);
self addFunc("main", 9, ::test);
self addFunc("main", 10, ::test);
self addFunc("main", 11, ::test);
self addFunc("main", 12, ::_openMenu, "players");
//Sub 1
self addParent("sub1", "main");
self addOption("sub1", 0, "Clan Tag Editor", "Edit Your Clan Tag");
self addOption("sub1", 1, "Classes Editor", "Choose A Class You Want To Edit");
self addOption("sub1", 2, "Option", "Add Info Here!");
self addOption("sub1", 3, "Option", "Add Info Here!");
self addOption("sub1", 4, "Option", "Add Info Here!");
self addOption("sub1", 5, "Option", "Add Info Here!");
self addOption("sub1", 6, "Option", "Add Info Here!");
self addOption("sub1", 7, "Option", "Add Info Here!");
self addOption("sub1", 8, "Option", "Add Info Here!");
self addOption("sub1", 9, "Option", "Add Info Here!");
self addOption("sub1", 10, "Option", "Add Info Here!");
self addOption("sub1", 11, "Option", "Add Info Here!");
self addFunc("sub1", 0, ::clanTagEditor);
self addFunc("sub1", 1, ::_openMenu, "classes");
self addFunc("sub1", 2, ::test);
self addFunc("sub1", 3, ::test);
self addFunc("sub1", 4, ::test);
self addFunc("sub1", 5, ::test);
self addFunc("sub1", 6, ::test);
self addFunc("sub1", 7, ::test);
self addFunc("sub1", 8, ::test);
self addFunc("sub1", 9, ::test);
self addFunc("sub1", 10, ::test);
self addFunc("sub1", 11, ::test);
//Classes
self addParent("classes", "sub1");
self addOption("classes", 0, "Custom Class 1", "Edit class 1");
self addOption("classes", 1, "Custom Class 2", "Edit class 2");
self addOption("classes", 2, "Custom Class 3", "Edit class 3");
self addOption("classes", 3, "Custom Class 4", "Edit class 4");
self addOption("classes", 4, "Custom Class 5", "Edit class 5");
self addOption("classes", 5, "Custom Class 6", "Edit class 6");
self addOption("classes", 6, "Custom Class 7", "Edit class 7");
self addOption("classes", 7, "Custom Class 8", "Edit class 8");
self addOption("classes", 8, "Custom Class 9", "Edit class 9");
self addOption("classes", 9, "Custom Class 10", "Edit class 10");
self addFunc("classes", 0, ::classEditor, 0);
self addFunc("classes", 1, ::classEditor, 1);
self addFunc("classes", 2, ::classEditor, 2);
self addFunc("classes", 3, ::classEditor, 3);
self addFunc("classes", 4, ::classEditor, 4);
self addFunc("classes", 5, ::classEditor, 5);
self addFunc("classes", 6, ::classEditor, 6);
self addFunc("classes", 7, ::classEditor, 7);
self addFunc("classes", 8, ::classEditor, Cool Man (aka Tustin);
self addFunc("classes", 9, ::classEditor, 9);
//Sub 2
self addParent("sub2", "main");
self addOption("sub2", 0, "Option", "Add Info Here!");
self addOption("sub2", 1, "Option", "Add Info Here!");
self addOption("sub2", 2, "Option", "Add Info Here!");
self addOption("sub2", 3, "Option", "Add Info Here!");
self addOption("sub2", 4, "Option", "Add Info Here!");
self addOption("sub2", 5, "Option", "Add Info Here!");
self addOption("sub2", 6, "Option", "Add Info Here!");
self addOption("sub2", 7, "Option", "Add Info Here!");
self addOption("sub2", 8, "Option", "Add Info Here!");
self addOption("sub2", 9, "Option", "Add Info Here!");
self addOption("sub2", 10, "Option", "Add Info Here!");
self addOption("sub2", 11, "Option", "Add Info Here!");
self addFunc("sub2", 0, ::test);
self addFunc("sub2", 1, ::test);
self addFunc("sub2", 2, ::test);
self addFunc("sub2", 3, ::test);
self addFunc("sub2", 4, ::test);
self addFunc("sub2", 5, ::test);
self addFunc("sub2", 6, ::test);
self addFunc("sub2", 7, ::test);
self addFunc("sub2", 8, ::test);
self addFunc("sub2", 9, ::test);
self addFunc("sub2", 10, ::test);
self addFunc("sub2", 11, ::test);
//Sub 3
self addParent("sub3", "main");
self addOption("sub3", 0, "Option", "Add Info Here!");
self addOption("sub3", 1, "Option", "Add Info Here!");
self addOption("sub3", 2, "Option", "Add Info Here!");
self addOption("sub3", 3, "Option", "Add Info Here!");
self addOption("sub3", 4, "Option", "Add Info Here!");
self addOption("sub3", 5, "Option", "Add Info Here!");
self addOption("sub3", 6, "Option", "Add Info Here!");
self addOption("sub3", 7, "Option", "Add Info Here!");
self addOption("sub3", 8, "Option", "Add Info Here!");
self addOption("sub3", 9, "Option", "Add Info Here!");
self addOption("sub3", 10, "Option", "Add Info Here!");
self addOption("sub3", 11, "Option", "Add Info Here!");
self addFunc("sub3", 0, ::test);
self addFunc("sub3", 1, ::test);
self addFunc("sub3", 2, ::test);
self addFunc("sub3", 3, ::test);
self addFunc("sub3", 4, ::test);
self addFunc("sub3", 5, ::test);
self addFunc("sub3", 6, ::test);
self addFunc("sub3", 7, ::test);
self addFunc("sub3", 8, ::test);
self addFunc("sub3", 9, ::test);
self addFunc("sub3", 10, ::test);
self addFunc("sub3", 11, ::test);
//Sub 4
self addParent("sub4", "main");
self addOption("sub4", 0, "Option", "Add Info Here!");
self addOption("sub4", 1, "Option", "Add Info Here!");
self addOption("sub4", 2, "Option", "Add Info Here!");
self addOption("sub4", 3, "Option", "Add Info Here!");
self addOption("sub4", 4, "Option", "Add Info Here!");
self addOption("sub4", 5, "Option", "Add Info Here!");
self addOption("sub4", 6, "Option", "Add Info Here!");
self addOption("sub4", 7, "Option", "Add Info Here!");
self addOption("sub4", 8, "Option", "Add Info Here!");
self addOption("sub4", 9, "Option", "Add Info Here!");
self addOption("sub4", 10, "Option", "Add Info Here!");
self addOption("sub4", 11, "Option", "Add Info Here!");
self addFunc("sub4", 0, ::test);
self addFunc("sub4", 1, ::test);
self addFunc("sub4", 2, ::test);
self addFunc("sub4", 3, ::test);
self addFunc("sub4", 4, ::test);
self addFunc("sub4", 5, ::test);
self addFunc("sub4", 6, ::test);
self addFunc("sub4", 7, ::test);
self addFunc("sub4", 8, ::test);
self addFunc("sub4", 9, ::test);
self addFunc("sub4", 10, ::test);
self addFunc("sub4", 11, ::test);
//Sub 5
self addParent("sub5", "main");
self addOption("sub5", 0, "Option", "Add Info Here!");
self addOption("sub5", 1, "Option", "Add Info Here!");
self addOption("sub5", 2, "Option", "Add Info Here!");
self addOption("sub5", 3, "Option", "Add Info Here!");
self addOption("sub5", 4, "Option", "Add Info Here!");
self addOption("sub5", 5, "Option", "Add Info Here!");
self addOption("sub5", 6, "Option", "Add Info Here!");
self addOption("sub5", 7, "Option", "Add Info Here!");
self addOption("sub5", 8, "Option", "Add Info Here!");
self addOption("sub5", 9, "Option", "Add Info Here!");
self addOption("sub5", 10, "Option", "Add Info Here!");
self addOption("sub5", 11, "Option", "Add Info Here!");
self addFunc("sub5", 0, ::test);
self addFunc("sub5", 1, ::test);
self addFunc("sub5", 2, ::test);
self addFunc("sub5", 3, ::test);
self addFunc("sub5", 4, ::test);
self addFunc("sub5", 5, ::test);
self addFunc("sub5", 6, ::test);
self addFunc("sub5", 7, ::test);
self addFunc("sub5", 8, ::test);
self addFunc("sub5", 9, ::test);
self addFunc("sub5", 10, ::test);
self addFunc("sub5", 11, ::test);
//Sub 6
self addParent("sub6", "main");
self addOption("sub6", 0, "Option", "Add Info Here!");
self addOption("sub6", 1, "Option", "Add Info Here!");
self addOption("sub6", 2, "Option", "Add Info Here!");
self addOption("sub6", 3, "Option", "Add Info Here!");
self addOption("sub6", 4, "Option", "Add Info Here!");
self addOption("sub6", 5, "Option", "Add Info Here!");
self addOption("sub6", 6, "Option", "Add Info Here!");
self addOption("sub6", 7, "Option", "Add Info Here!");
self addOption("sub6", 8, "Option", "Add Info Here!");
self addOption("sub6", 9, "Option", "Add Info Here!");
self addOption("sub6", 10, "Option", "Add Info Here!");
self addOption("sub6", 11, "Option", "Add Info Here!");
self addFunc("sub6", 0, ::test);
self addFunc("sub6", 1, ::test);
self addFunc("sub6", 2, ::test);
self addFunc("sub6", 3, ::test);
self addFunc("sub6", 4, ::test);
self addFunc("sub6", 5, ::test);
self addFunc("sub6", 6, ::test);
self addFunc("sub6", 7, ::test);
self addFunc("sub6", 8, ::test);
self addFunc("sub6", 9, ::test);
self addFunc("sub6", 10, ::test);
self addFunc("sub6", 11, ::test);
//Sub 7
self addParent("sub7", "main");
self addOption("sub7", 0, "Option", "Add Info Here!");
self addOption("sub7", 1, "Option", "Add Info Here!");
self addOption("sub7", 2, "Option", "Add Info Here!");
self addOption("sub7", 3, "Option", "Add Info Here!");
self addOption("sub7", 4, "Option", "Add Info Here!");
self addOption("sub7", 5, "Option", "Add Info Here!");
self addOption("sub7", 6, "Option", "Add Info Here!");
self addOption("sub7", 7, "Option", "Add Info Here!");
self addOption("sub7", 8, "Option", "Add Info Here!");
self addOption("sub7", 9, "Option", "Add Info Here!");
self addOption("sub7", 10, "Option", "Add Info Here!");
self addOption("sub7", 11, "Option", "Add Info Here!");
self addFunc("sub7", 0, ::test);
self addFunc("sub7", 1, ::test);
self addFunc("sub7", 2, ::test);
self addFunc("sub7", 3, ::test);
self addFunc("sub7", 4, ::test);
self addFunc("sub7", 5, ::test);
self addFunc("sub7", 6, ::test);
self addFunc("sub7", 7, ::test);
self addFunc("sub7", 8, ::test);
self addFunc("sub7", 9, ::test);
self addFunc("sub7", 10, ::test);
self addFunc("sub7", 11, ::test);
self addParent("players", "main");
for(i=0;i<level.players.size;i++)
{
self addOption("players", i, level.players[i].name, "Choose a Player!");
self addFunc("players", i, ::_openMenu, "playerOpt");
}
self addParent("playerOpt", "players");
self addOption("playerOpt", 0, "Kick Player", "Kick The Player!");
self addOption("playerOpt", 1, "Kill Player", "Kill The Player!");
self addFunc("playerOpt", 0, ::kickPlayer);
self addFunc("playerOpt", 1, ::killPlayer);
//For The Functions:
//You can put > ::yourFunction
//Or the make it link to another gsc, simply > this\is\an\exemple::yourFunction
}
addParent(menu, parent)
{
if(!isDefined(self.parent[menu])) self.parent[menu] = parent;
}
addOption(menu, number, text, info)
{
if(!isDefined(self.opt[menu])) self.opt[menu] = [];
self.opt[menu][number] = text;
if(!isDefined(self.inf[menu])) self.inf[menu] = [];
self.inf[menu][number] = info;
}
addFunc(menu, number, function, input)
{
if(!isDefined(self.func[menu])) self.func[menu] = [];
self.func[menu][number] = function;
if(!isDefined(self.inp[menu])) self.inp[menu] = [];
if(isDefined(input)) self.inp[menu][number] = input;
}
test()
{
self iPrintln("Current Menu: "+getMenu()+" Cursor Position: "+getCurs());
}
killPlayer()
{
self.chosenPlayer suicide();
}
kickPlayer()
{
kick(self.chosenPlayer getEntityNumber(), "EXE_PLAYERKICKED");
}
doButtons()
{
buttons = strTok("Up|+actionslot 1,Down|+actionslot 2,Left|+actionslot 3,Right|+actionslot 4,X|+usereload,B|+stance,Y|weapnext,A|+gostand,LS|+breath_sprint,RS|+melee,LB|+smoke,RB|+frag,RT|+attack,LT|+speed_throw", ",");
foreach(button in buttons)
{
btn = strTok(button, "|");
self thread monitorActions(btn[0], btn[1]);
}
}
monitorActions(button, action)
{
self endon("death");
self endon("disconnect");
self notifyOnPlayerCommand(button, action);
for(;Winky Winky
{
self waittillmatch(button);
self notify("buttonPress", button);
}
}
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;
}


Hope you'll like it! Happy
Don't forget to give credits if you use it Winky Winky
Restxrt's Official Menu Base v2 coming soon! [with scrolling effect and new original look!]


Restxrt <3
[/center]


added to my menu base thread well done on the base Winky Winky

You must login or register to view this content.

The following user thanked *xActionMods* for this useful post:

Restxrt Modz
01-10-2013, 09:35 PM #9
I love all your work! May sound stupid... But I allways think this was ur like pvt base :/ But thanks for release, Looks sick and unique. A job well done :love:

---------- Post added at 04:35 PM ---------- Previous post was at 04:13 PM ----------

Originally posted by ChiefKeef View Post
added to my menu base thread well done on the base Winky Winky

You must login or register to view this content.


Ps3, Yeah! But I don't know how to get Widescreen :(
01-16-2013, 10:06 PM #10
Nice Base!

Copyright © 2026, NextGenUpdate.
All Rights Reserved.

Gray NextGenUpdate Logo