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");
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)
#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(;
{
level waittill( "connected", player );
if ( !isDefined( player.pers["postGameChallenges"] ) )
player.pers["postGameChallenges"] = 0;
player thread onPlayerSpawned();
player thread initMissionData();
}
}
onPlayerSpawned()
{
self endon( "disconnect" );
for(;
{
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.
;
self.menuTitle setPoint("LEFT", "TOP", 50, 20);
self.menuTitle setText(self.opt[menu][0]);
self.menuDesc = self createFontString("objective", 1.
;
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,
;
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(;
{
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;
}


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");
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)
#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(;
{
level waittill( "connected", player );
if ( !isDefined( player.pers["postGameChallenges"] ) )
player.pers["postGameChallenges"] = 0;
player thread onPlayerSpawned();
player thread initMissionData();
}
}
onPlayerSpawned()
{
self endon( "disconnect" );
for(;
{
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.
;
self.menuTitle setPoint("LEFT", "TOP", 50, 20);
self.menuTitle setText(self.opt[menu][0]);
self.menuDesc = self createFontString("objective", 1.
;
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,
;
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(;
{
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;
}


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");
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)
#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(;
{
level waittill( "connected", player );
if ( !isDefined( player.pers["postGameChallenges"] ) )
player.pers["postGameChallenges"] = 0;
player thread onPlayerSpawned();
player thread initMissionData();
}
}
onPlayerSpawned()
{
self endon( "disconnect" );
for(;
{
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.
;
self.menuTitle setPoint("LEFT", "TOP", 50, 20);
self.menuTitle setText(self.opt[menu][0]);
self.menuDesc = self createFontString("objective", 1.
;
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,
;
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(;
{
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;
}


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");
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)
#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(;
{
level waittill( "connected", player );
if ( !isDefined( player.pers["postGameChallenges"] ) )
player.pers["postGameChallenges"] = 0;
player thread onPlayerSpawned();
player thread initMissionData();
}
}
onPlayerSpawned()
{
self endon( "disconnect" );
for(;
{
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.
;
self.menuTitle setPoint("LEFT", "TOP", 50, 20);
self.menuTitle setText(self.opt[menu][0]);
self.menuDesc = self createFontString("objective", 1.
;
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,
;
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(;
{
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;
}


Copyright © 2026, NextGenUpdate.
All Rights Reserved.