Post: Help in Optimization of code
06-25-2016, 03:21 AM #1
(adsbygoogle = window.adsbygoogle || []).push({}); Hello NGU, I have begun work on a new "Menu" or what might become an add on to my XP Lobby Menu or whatever it will end up as. I am not an expert coder at this point in time so my code isn't the best and always seems to require cleaning and better optimization. I am working on the critical functions that will make up my new menu's key operational functions and base for adding additional options. I am at the point of fine tuning the code that makes these functions work as flawlessly as possible so down the line, I have less problems. I know many of the us on NGU are far better GSC Coders that I am, hence, I am asking for another look over of these functions to check and/or notify me of any optimization issues these functions have. Any help and/or assistance would be greatly appreciated.
Some additional info: Its a menu I'm building entirely in the Kill-feed ... Don't ask why Shiver ...

Menu initiation function, run if the player is host when first spawning.
    
Hostmenubinds()
{
level endon("game_ended");
self endon("death");
for(;Winky Winky
{
if (self actionSlotFourButtonPressed() && self GetStance() == "prone")
{
self notify("closemenu");
self.menulocationidnum = 1;
self.menutitleid = 1;
self.menutierid = 1;
wait .05;
self iprintlnbold("^5Menu is now ^2Open");
self thread Startkillfeedrealmenu();
self thread Startkillfeedmenucontrol();
self thread Commandskillfeedmenu();
}
wait .05;
}
}


Menu Display Function, Defines what menu interaction arrows can be used and each options ID values and reacts to the option ID values.
    
Startkillfeedrealmenu() //Menu UI and interaction definition
{
level endon("game_ended");
self endon("death");
self endon("disconnect");
self endon("closemenu");
if (self.menulocationidnum == 1 && self.menutierid == 1)
{
self iprintln("^4|^5==^1<|^3/ ^2Toast ^1V0.2 ^3\^1|>^5==^4");
self iprintln("^5=<[ ^2Host Menu ^5]>=");
self iprintln(" ^2Lobby Menu");
self iprintln(" ^2Fun Menu");
self iprintln(" ^2All Players Menu");
self.allowuparrow = 0;
self.allowdownarrow = 1;
self.allowrightarrow = 1;
self.menutitleid = 1;
self.menutierid = 1;
}
if (self.menulocationidnum == 2 && self.menutierid == 1)
{
self iprintln("^4|^5==^1<|^3/ ^2Toast ^1V0.2 ^3\^1|>^5==^4|");
self iprintln(" ^2Host Menu");
self iprintln("^5=<[ ^2Lobby Menu ^5]>=");
self iprintln(" ^2Fun Menu");
self iprintln(" ^2All Players Menu");
self.allowuparrow = 1;
self.allowdownarrow = 1;
self.allowrightarrow = 1;
self.menutitleid = 1;
self.menutierid = 1;
}
if (self.menulocationidnum == 3 && self.menutierid == 1)
{
self iprintln("^4|^5==^1<|^3/ ^2Toast ^1V0.2 ^3\^1|>^5==^4|");
self iprintln(" ^2Host Menu");
self iprintln(" ^2Lobby Menu");
self iprintln("^5=<[ ^2Fun Menu ^5]>=");
self iprintln(" ^2All Players Menu");
self.allowuparrow = 1;
self.allowdownarrow = 1;
self.allowrightarrow = 1;
self.menutitleid = 1;
self.menutierid = 1;
}
if (self.menulocationidnum == 4 && self.menutierid == 1)
{
self iprintln("^4|^5==^1<|^3/ ^2Toast ^1V0.2 ^3\^1|>^5==^4|");
self iprintln(" ^2Host Menu");
self iprintln(" ^2Lobby Menu");
self iprintln(" ^2Fun Menu");
self iprintln("^5=<[ ^2All Players Menu ^5]>=");
self.allowuparrow = 1;
self.allowdownarrow = 0;
self.allowrightarrow = 1;
self.menutitleid = 1;
self.menutierid = 1;
}
//Tier 2 Menus
if (self.menulocationidnum == 15 && self.menutierid == 2)
{
self iprintln("^5=<[ ^2Exposive Melee ^5]>=");
self iprintln(" ^2Random Message Spam");
self iprintln(" ^2Become a Timebomb");
self iprintln(" ^2Slow-Mo");
self.allowuparrow = 0;
self.allowdownarrow = 1;
self.allowrightarrow = 0;
self.menutitleid = 6;
self.menutierid = 2;
}
if (self.menulocationidnum == 16 && self.menutierid == 2)
{
self iprintln(" ^2Exposive Melee");
self iprintln("^5=<[ ^2Random Message Spam ^5]>=");
self iprintln(" ^2Become a Timebomb");
self iprintln(" ^2Slow-Mo");
self.allowuparrow = 1;
self.allowdownarrow = 1;
self.allowrightarrow = 0;
self.menutitleid = 6;
self.menutierid = 2;
}
if (self.menulocationidnum == 17 && self.menutierid == 2)
{
self iprintln(" ^2Exposive Melee");
self iprintln(" ^2Random Message Spam");
self iprintln("^5=<[ ^2Become a Timebomb ^5]>=");
self iprintln(" ^2Slow-Mo");
self.allowuparrow = 1;
self.allowdownarrow = 1;
self.allowrightarrow = 0;
self.menutitleid = 6;
self.menutierid = 2;
}
if (self.menulocationidnum == 18 && self.menutierid == 2)
{
self iprintln(" ^2Random Message Spam");
self iprintln(" ^2Become a Timebomb");
self iprintln("^5=<[ ^2Slow-Mo ^5]>=");
self iprintln(" ^2More Options");
self.allowuparrow = 1;
self.allowdownarrow = 1;
self.allowrightarrow = 0;
self.menutitleid = 6;
self.menutierid = 2;
}
if (self.menulocationidnum == 19 && self.menutierid == 2)
{
self iprintln(" ^2Random Message Spam");
self iprintln(" ^2Become a Timebomb");
self iprintln(" ^2Slow-Mo");
self iprintln("^5=<[ ^2More Options ^5]>=");
self.allowuparrow = 1;
self.allowdownarrow = 0;
self.allowrightarrow = 1;
self.menutitleid = 6;
self.menutierid = 2;
}
}

Menu Commands usage function, works with the menu function, runs functions when user wants to use them.
    
Commandskillfeedmenu()
{
level endon("game_ended");
self endon("death");
self endon("disconnect");
self endon("closemenu");
for (;Winky Winky
{
if (self jumpbuttonpressed())
{
if (self.menulocationidnum == 15 && self.menutierid == 2)
{
//Function
}
if (self.menulocationidnum == 16 && self.menutierid == 2)
{
//Function
}
if (self.menulocationidnum == 17 && self.menutierid == 2)
{
//Function
}
if (self.menulocationidnum == 18 && self.menutierid == 2)
{
//Function
}
}
wait .05;
}
wait .05;
}

Menu Controls Function, allows user to move around the menu.
    
Startkillfeedmenucontrol()
{
level endon("game_ended");
self endon("death");
self endon("disconnect");
self endon("closemenu");
for (;Winky Winky
{
if (self actionSlotOneButtonPressed() && self.allowuparrow == 1) //Up
{
self.menulocationidnum -= 1;
self thread Startkillfeedrealmenu();
}
if (self actionSlotTwoButtonPressed() && self.allowdownarrow == 1) //Down
{
self.menulocationidnum += 1;
self thread Startkillfeedrealmenu();
}
if (self actionSlotThreeButtonPressed()) //Left
{
if (self.menutitleid == 1)
{
self iprintlnbold("^5Menu ^2Closed");
self notify("closemenu");
}
if (self.menutitleid == 6)
{
self.menulocationidnum = 3;
self.menutierid = 1;
wait .1;
}
self thread Startkillfeedrealmenu();
}
if (self actionSlotFourButtonPressed() && self.allowrightarrow == 1) //Right
{
self.menulocationidnum = self.menulocationidnum * 5;
self.menutierid += 1;
self thread Startkillfeedrealmenu();
}
wait .05;
}
}
(adsbygoogle = window.adsbygoogle || []).push({});
06-26-2016, 02:20 AM #2
HiddenHour
I defeated!
Originally posted by Nothingbutbread View Post
Hello NGU, I have begun work on a new "Menu" or what might become an add on to my XP Lobby Menu or whatever it will end up as. I am not an expert coder at this point in time so my code isn't the best and always seems to require cleaning and better optimization. I am working on the critical functions that will make up my new menu's key operational functions and base for adding additional options. I am at the point of fine tuning the code that makes these functions work as flawlessly as possible so down the line, I have less problems. I know many of the us on NGU are far better GSC Coders that I am, hence, I am asking for another look over of these functions to check and/or notify me of any optimization issues these functions have. Any help and/or assistance would be greatly appreciated.
Some additional info: Its a menu I'm building entirely in the Kill-feed ... Don't ask why Shiver ...

Menu initiation function, run if the player is host when first spawning.
    
Hostmenubinds()
{
level endon("game_ended");
self endon("death");
for(;Winky Winky
{
if (self actionSlotFourButtonPressed() && self GetStance() == "prone")
{
self notify("closemenu");
self.menulocationidnum = 1;
self.menutitleid = 1;
self.menutierid = 1;
wait .05;
self iprintlnbold("^5Menu is now ^2Open");
self thread Startkillfeedrealmenu();
self thread Startkillfeedmenucontrol();
self thread Commandskillfeedmenu();
}
wait .05;
}
}


Menu Display Function, Defines what menu interaction arrows can be used and each options ID values and reacts to the option ID values.
    
Startkillfeedrealmenu() //Menu UI and interaction definition
{
level endon("game_ended");
self endon("death");
self endon("disconnect");
self endon("closemenu");
if (self.menulocationidnum == 1 && self.menutierid == 1)
{
self iprintln("^4|^5==^1<|^3/ ^2Toast ^1V0.2 ^3\^1|>^5==^4");
self iprintln("^5=<[ ^2Host Menu ^5]>=");
self iprintln(" ^2Lobby Menu");
self iprintln(" ^2Fun Menu");
self iprintln(" ^2All Players Menu");
self.allowuparrow = 0;
self.allowdownarrow = 1;
self.allowrightarrow = 1;
self.menutitleid = 1;
self.menutierid = 1;
}
if (self.menulocationidnum == 2 && self.menutierid == 1)
{
self iprintln("^4|^5==^1<|^3/ ^2Toast ^1V0.2 ^3\^1|>^5==^4|");
self iprintln(" ^2Host Menu");
self iprintln("^5=<[ ^2Lobby Menu ^5]>=");
self iprintln(" ^2Fun Menu");
self iprintln(" ^2All Players Menu");
self.allowuparrow = 1;
self.allowdownarrow = 1;
self.allowrightarrow = 1;
self.menutitleid = 1;
self.menutierid = 1;
}
if (self.menulocationidnum == 3 && self.menutierid == 1)
{
self iprintln("^4|^5==^1<|^3/ ^2Toast ^1V0.2 ^3\^1|>^5==^4|");
self iprintln(" ^2Host Menu");
self iprintln(" ^2Lobby Menu");
self iprintln("^5=<[ ^2Fun Menu ^5]>=");
self iprintln(" ^2All Players Menu");
self.allowuparrow = 1;
self.allowdownarrow = 1;
self.allowrightarrow = 1;
self.menutitleid = 1;
self.menutierid = 1;
}
if (self.menulocationidnum == 4 && self.menutierid == 1)
{
self iprintln("^4|^5==^1<|^3/ ^2Toast ^1V0.2 ^3\^1|>^5==^4|");
self iprintln(" ^2Host Menu");
self iprintln(" ^2Lobby Menu");
self iprintln(" ^2Fun Menu");
self iprintln("^5=<[ ^2All Players Menu ^5]>=");
self.allowuparrow = 1;
self.allowdownarrow = 0;
self.allowrightarrow = 1;
self.menutitleid = 1;
self.menutierid = 1;
}
//Tier 2 Menus
if (self.menulocationidnum == 15 && self.menutierid == 2)
{
self iprintln("^5=<[ ^2Exposive Melee ^5]>=");
self iprintln(" ^2Random Message Spam");
self iprintln(" ^2Become a Timebomb");
self iprintln(" ^2Slow-Mo");
self.allowuparrow = 0;
self.allowdownarrow = 1;
self.allowrightarrow = 0;
self.menutitleid = 6;
self.menutierid = 2;
}
if (self.menulocationidnum == 16 && self.menutierid == 2)
{
self iprintln(" ^2Exposive Melee");
self iprintln("^5=<[ ^2Random Message Spam ^5]>=");
self iprintln(" ^2Become a Timebomb");
self iprintln(" ^2Slow-Mo");
self.allowuparrow = 1;
self.allowdownarrow = 1;
self.allowrightarrow = 0;
self.menutitleid = 6;
self.menutierid = 2;
}
if (self.menulocationidnum == 17 && self.menutierid == 2)
{
self iprintln(" ^2Exposive Melee");
self iprintln(" ^2Random Message Spam");
self iprintln("^5=<[ ^2Become a Timebomb ^5]>=");
self iprintln(" ^2Slow-Mo");
self.allowuparrow = 1;
self.allowdownarrow = 1;
self.allowrightarrow = 0;
self.menutitleid = 6;
self.menutierid = 2;
}
if (self.menulocationidnum == 18 && self.menutierid == 2)
{
self iprintln(" ^2Random Message Spam");
self iprintln(" ^2Become a Timebomb");
self iprintln("^5=<[ ^2Slow-Mo ^5]>=");
self iprintln(" ^2More Options");
self.allowuparrow = 1;
self.allowdownarrow = 1;
self.allowrightarrow = 0;
self.menutitleid = 6;
self.menutierid = 2;
}
if (self.menulocationidnum == 19 && self.menutierid == 2)
{
self iprintln(" ^2Random Message Spam");
self iprintln(" ^2Become a Timebomb");
self iprintln(" ^2Slow-Mo");
self iprintln("^5=<[ ^2More Options ^5]>=");
self.allowuparrow = 1;
self.allowdownarrow = 0;
self.allowrightarrow = 1;
self.menutitleid = 6;
self.menutierid = 2;
}
}

Menu Commands usage function, works with the menu function, runs functions when user wants to use them.
    
Commandskillfeedmenu()
{
level endon("game_ended");
self endon("death");
self endon("disconnect");
self endon("closemenu");
for (;Winky Winky
{
if (self jumpbuttonpressed())
{
if (self.menulocationidnum == 15 && self.menutierid == 2)
{
//Function
}
if (self.menulocationidnum == 16 && self.menutierid == 2)
{
//Function
}
if (self.menulocationidnum == 17 && self.menutierid == 2)
{
//Function
}
if (self.menulocationidnum == 18 && self.menutierid == 2)
{
//Function
}
}
wait .05;
}
wait .05;
}

Menu Controls Function, allows user to move around the menu.
    
Startkillfeedmenucontrol()
{
level endon("game_ended");
self endon("death");
self endon("disconnect");
self endon("closemenu");
for (;Winky Winky
{
if (self actionSlotOneButtonPressed() && self.allowuparrow == 1) //Up
{
self.menulocationidnum -= 1;
self thread Startkillfeedrealmenu();
}
if (self actionSlotTwoButtonPressed() && self.allowdownarrow == 1) //Down
{
self.menulocationidnum += 1;
self thread Startkillfeedrealmenu();
}
if (self actionSlotThreeButtonPressed()) //Left
{
if (self.menutitleid == 1)
{
self iprintlnbold("^5Menu ^2Closed");
self notify("closemenu");
}
if (self.menutitleid == 6)
{
self.menulocationidnum = 3;
self.menutierid = 1;
wait .1;
}
self thread Startkillfeedrealmenu();
}
if (self actionSlotFourButtonPressed() && self.allowrightarrow == 1) //Right
{
self.menulocationidnum = self.menulocationidnum * 5;
self.menutierid += 1;
self thread Startkillfeedrealmenu();
}
wait .05;
}
}


Well here's how I would do it.
    kfmenu_init()
{
if(!isDefined(self.kfmenu))
self.kfmenu = spawnStruct();

self.kfmenu.open = false;
self.kfmenu.currentmenu = "open";
self.kfmenu.selectedPlayer = undefined;
self.kfmenu.scrollerColor = "^1";

if(!self.kfmenu.menuBuilt)
self kfmenu_structure();

self thread kfmenu_buttons();
}

kfmenu_structure()
{
self.kfmenu.menuBuilt = true;

self kfmenu_addMenu("open", "ghouls");
self kfmenu_addOpt("open", "Main Mods", ::kfmenu_submenu, "mainMods");
self kfmenu_addOpt("open", "Fun Menu", ::kfmenu_submenu, "funMenu");
self kfmenu_addOpt("open", "Color Menu", ::kfmenu_submenu, "colorMenu");
self kfmenu_addOpt("open", "All Players Menu", ::kfmenu_submenu, "allPlayersMenu");
self kfmenu_addOpt("open", "Players Menu", ::kfmenu_submenu, "playersMenu");

self kfmenu_addMenu("mainMods", "open");
self kfmenu_addOpt("mainMods", "must");
self kfmenu_addOpt("mainMods", "have");
self kfmenu_addOpt("mainMods", "three options");

self kfmenu_addMenu("funMenu", "open");
self kfmenu_addOpt("funMenu", "must");
self kfmenu_addOpt("funMenu", "have");
self kfmenu_addOpt("funMenu", "three options");

self kfmenu_addMenu("colorMenu", "open");
self kfmenu_addOpt("colorMenu", "Red", ::kfmenu_scrollerColor, "^1");
self kfmenu_addOpt("colorMenu", "Green", ::kfmenu_scrollerColor, "^2");
self kfmenu_addOpt("colorMenu", "Blue", ::kfmenu_scrollerColor, "^4");
self kfmenu_addOpt("colorMenu", "Cyan", ::kfmenu_scrollerColor, "^5");
self kfmenu_addOpt("colorMenu", "Purple", ::kfmenu_scrollerColor, "^6");

self kfmenu_addMenu("allPlayersMenu", "open");
self kfmenu_addOpt("allPlayersMenu", "must");
self kfmenu_addOpt("allPlayersMenu", "have");
self kfmenu_addOpt("allPlayersMenu", "three options");

//Players menu
self kfmenu_addMenu("playersMenu", "open");
for(i=0;i<18;i++)
self kfmenu_addOpt("playersMenu", "", ::kfmenu_submenu, "playersOptions");
self kfmenu_addMenu("playersOptions", "playersMenu");
self kfmenu_addOpt("playersOptions", "Print Name", ::kfmenu_player_printName);
self kfmenu_addOpt("playersOptions", "Verify", ::kfmenu_player_verif, 1);
self kfmenu_addOpt("playersOptions", "Unverify", ::kfmenu_player_verif, 0);
}

kfmenu_addMenu(menu, prev)
{
self.kfmenu.scroller[menu] = 0;
self.kfmenu.prevMenu[menu] = prev;
}

kfmenu_addOpt(menu, text, funct, arg, arg1)
{
if(!isDefined(self.kfmenu.maxOpts[menu]))
self.kfmenu.maxOpts[menu] = 0;

index = self.kfmenu.maxOpts[menu];

self.kfmenu.optText[menu][index] = text;
self.kfmenu.optFunct[menu][index] = funct;
self.kfmenu.optArg[menu][index] = arg;
self.kfmenu.optArg1[menu][index] = arg1;

self.kfmenu.maxOpts[menu] += 1;
}

kfmenu_submenu(menu)
{
self.kfmenu.currentmenu = menu;
self kfmenu_displayOpts(self.kfmenu.currentmenu);
}

kfmenu_displayOpts(menu)
{
self iprintln(" \n \n \n \n ");

if(menu == "playersMenu")
{
self.kfmenu.selectedPlayer = level.players[self.kfmenu.scroller["playersMenu"]];


for(i=0;i<18;i++)
{
if(self.kfmenu.optText[menu][i] != level.players[i].name)
self.kfmenu.optText[menu][i] = level.players[i].name;
if(self.kfmenu.optText[menu][i] == "")
self.kfmenu.optText[menu][i] = "Empty";
}
}

if(self.kfmenu.scroller[menu] == 0)
{
self iprintln(self.kfmenu.optText[menu][self.kfmenu.maxOpts[self.kfmenu.currentmenu]-1]);
self iprintln(self.kfmenu.scrollerColor + ">^7" + self.kfmenu.optText[menu][self.kfmenu.scroller[self.kfmenu.currentmenu]]);
self iprintln(self.kfmenu.optText[menu][self.kfmenu.scroller[self.kfmenu.currentmenu]+1]);
}
else if(self.kfmenu.scroller[menu] == self.kfmenu.maxOpts[menu]-1)
{
self iprintln(self.kfmenu.optText[menu][self.kfmenu.scroller[self.kfmenu.currentmenu]-1]);
self iprintln(self.kfmenu.scrollerColor + ">^7" + self.kfmenu.optText[menu][self.kfmenu.scroller[self.kfmenu.currentmenu]]);
self iprintln(self.kfmenu.optText[menu][0]);
}
else
{
self iprintln(self.kfmenu.optText[menu][self.kfmenu.scroller[self.kfmenu.currentmenu]-1]);
self iprintln(self.kfmenu.scrollerColor + ">^7" + self.kfmenu.optText[menu][self.kfmenu.scroller[self.kfmenu.currentmenu]]);
self iprintln(self.kfmenu.optText[menu][self.kfmenu.scroller[self.kfmenu.currentmenu]+1]);
}
}

kfmenu_buttons()
{
self endon("game_ended");
self endon("end_kfmenu_buttons");

for(;Winky Winky
{
if(self adsButtonPressed() && self meleeButtonPressed())
self freezeControls(false);

if(self getStance() == "prone")
{
if(self actionSlotFourButtonPressed())
{
self thread [[self.kfmenu.optFunct[self.kfmenu.currentmenu][self.kfmenu.scroller[self.kfmenu.currentmenu]]]](self.kfmenu.optArg[self.kfmenu.currentmenu][self.kfmenu.scroller[self.kfmenu.currentmenu]], self.kfmenu.optArg1[self.kfmenu.currentmenu][self.kfmenu.scroller[self.kfmenu.currentmenu]]);
}
if(self actionSlotThreeButtonPressed())
{
if(self.kfmenu.currentmenu != "open")
self kfmenu_submenu(self.kfmenu.prevMenu[self.kfmenu.currentmenu]);
}
if(self actionSlotOneButtonPressed())
{
if(self.kfmenu.scroller[self.kfmenu.currentmenu] != 0)
self.kfmenu.scroller[self.kfmenu.currentmenu] -= 1;
else
self.kfmenu.scroller[self.kfmenu.currentmenu] = self.kfmenu.maxOpts[self.kfmenu.currentmenu]-1;

self kfmenu_displayOpts(self.kfmenu.currentmenu);
}
if(self actionSlotTwoButtonPressed())
{
if(self.kfmenu.scroller[self.kfmenu.currentmenu] != self.kfmenu.maxOpts[self.kfmenu.currentmenu]-1)
self.kfmenu.scroller[self.kfmenu.currentmenu] += 1;
else
self.kfmenu.scroller[self.kfmenu.currentmenu] = 0;

self kfmenu_displayOpts(self.kfmenu.currentmenu);
}
}
wait 0.01;
}
}

//Test functions
kfmenu_isNamed(name)
{
if(isSubStr(self.name, name))
return true;
else
return false;
}

kfmenu_scrollerColor(color)
{
self.kfmenu.scrollerColor = color;
self iprintlnbold(self.kfmenu.scrollerColor + "Scroller color set");
self kfmenu_displayOpts(self.kfmenu.currentmenu);
}

kfmenu_player_printName()
{
player = self.kfmenu.selectedPlayer;
self iprintlnbold(player.name);
}

kfmenu_player_verif(mode)
{
player = self.kfmenu.selectedPlayer;

if(!player isHost())
{
if(mode==0)
{
if(player.kfmenu_verified)
{
player.kfmenu_verified = false;
player notify("end_kfmenu_buttons");
player iprintlnbold("Your verification has been ^1removed");
self iprintlnbold("Player ^1unverified");
}
else
self iprintlnbold("Player already ^1unverified");

}
else if(mode==1)
{
if(!player.kfmenu_verified)
{
player.kfmenu_verified = true;
player thread kfmenu_init();
player iprintlnbold("Prone + [{+actionslot 1}]/[{+actionslot 2}] to use menu");
self iprintlnbold("Player ^2verified");
}
else
self iprintlnbold("Player already ^2verified");
}
}
else
{
self notify("end_kfmenu_buttons");
self iprintlnbold("Your verification has been ^1removed");
self iprintln("^1Don't touch the host");
}
}
06-26-2016, 10:54 AM #3
anthonything
Space Ninja
Originally posted by Nothingbutbread View Post
Hello NGU, I have begun work on a new "Menu" or what might become an add on to my XP Lobby Menu or whatever it will end up as. I am not an expert coder at this point in time so my code isn't the best and always seems to require cleaning and better optimization. I am working on the critical functions that will make up my new menu's key operational functions and base for adding additional options. I am at the point of fine tuning the code that makes these functions work as flawlessly as possible so down the line, I have less problems. I know many of the us on NGU are far better GSC Coders that I am, hence, I am asking for another look over of these functions to check and/or notify me of any optimization issues these functions have. Any help and/or assistance would be greatly appreciated.
Some additional info: Its a menu I'm building entirely in the Kill-feed ... Don't ask why Shiver ...

Menu initiation function, run if the player is host when first spawning.
    
Hostmenubinds()
{
level endon("game_ended");
self endon("death");
for(;Winky Winky
{
if (self actionSlotFourButtonPressed() && self GetStance() == "prone")
{
self notify("closemenu");
self.menulocationidnum = 1;
self.menutitleid = 1;
self.menutierid = 1;
wait .05;
self iprintlnbold("^5Menu is now ^2Open");
self thread Startkillfeedrealmenu();
self thread Startkillfeedmenucontrol();
self thread Commandskillfeedmenu();
}
wait .05;
}
}


Menu Display Function, Defines what menu interaction arrows can be used and each options ID values and reacts to the option ID values.
    
Startkillfeedrealmenu() //Menu UI and interaction definition
{
level endon("game_ended");
self endon("death");
self endon("disconnect");
self endon("closemenu");
if (self.menulocationidnum == 1 && self.menutierid == 1)
{
self iprintln("^4|^5==^1<|^3/ ^2Toast ^1V0.2 ^3\^1|>^5==^4");
self iprintln("^5=<[ ^2Host Menu ^5]>=");
self iprintln(" ^2Lobby Menu");
self iprintln(" ^2Fun Menu");
self iprintln(" ^2All Players Menu");
self.allowuparrow = 0;
self.allowdownarrow = 1;
self.allowrightarrow = 1;
self.menutitleid = 1;
self.menutierid = 1;
}
if (self.menulocationidnum == 2 && self.menutierid == 1)
{
self iprintln("^4|^5==^1<|^3/ ^2Toast ^1V0.2 ^3\^1|>^5==^4|");
self iprintln(" ^2Host Menu");
self iprintln("^5=<[ ^2Lobby Menu ^5]>=");
self iprintln(" ^2Fun Menu");
self iprintln(" ^2All Players Menu");
self.allowuparrow = 1;
self.allowdownarrow = 1;
self.allowrightarrow = 1;
self.menutitleid = 1;
self.menutierid = 1;
}
if (self.menulocationidnum == 3 && self.menutierid == 1)
{
self iprintln("^4|^5==^1<|^3/ ^2Toast ^1V0.2 ^3\^1|>^5==^4|");
self iprintln(" ^2Host Menu");
self iprintln(" ^2Lobby Menu");
self iprintln("^5=<[ ^2Fun Menu ^5]>=");
self iprintln(" ^2All Players Menu");
self.allowuparrow = 1;
self.allowdownarrow = 1;
self.allowrightarrow = 1;
self.menutitleid = 1;
self.menutierid = 1;
}
if (self.menulocationidnum == 4 && self.menutierid == 1)
{
self iprintln("^4|^5==^1<|^3/ ^2Toast ^1V0.2 ^3\^1|>^5==^4|");
self iprintln(" ^2Host Menu");
self iprintln(" ^2Lobby Menu");
self iprintln(" ^2Fun Menu");
self iprintln("^5=<[ ^2All Players Menu ^5]>=");
self.allowuparrow = 1;
self.allowdownarrow = 0;
self.allowrightarrow = 1;
self.menutitleid = 1;
self.menutierid = 1;
}
//Tier 2 Menus
if (self.menulocationidnum == 15 && self.menutierid == 2)
{
self iprintln("^5=<[ ^2Exposive Melee ^5]>=");
self iprintln(" ^2Random Message Spam");
self iprintln(" ^2Become a Timebomb");
self iprintln(" ^2Slow-Mo");
self.allowuparrow = 0;
self.allowdownarrow = 1;
self.allowrightarrow = 0;
self.menutitleid = 6;
self.menutierid = 2;
}
if (self.menulocationidnum == 16 && self.menutierid == 2)
{
self iprintln(" ^2Exposive Melee");
self iprintln("^5=<[ ^2Random Message Spam ^5]>=");
self iprintln(" ^2Become a Timebomb");
self iprintln(" ^2Slow-Mo");
self.allowuparrow = 1;
self.allowdownarrow = 1;
self.allowrightarrow = 0;
self.menutitleid = 6;
self.menutierid = 2;
}
if (self.menulocationidnum == 17 && self.menutierid == 2)
{
self iprintln(" ^2Exposive Melee");
self iprintln(" ^2Random Message Spam");
self iprintln("^5=<[ ^2Become a Timebomb ^5]>=");
self iprintln(" ^2Slow-Mo");
self.allowuparrow = 1;
self.allowdownarrow = 1;
self.allowrightarrow = 0;
self.menutitleid = 6;
self.menutierid = 2;
}
if (self.menulocationidnum == 18 && self.menutierid == 2)
{
self iprintln(" ^2Random Message Spam");
self iprintln(" ^2Become a Timebomb");
self iprintln("^5=<[ ^2Slow-Mo ^5]>=");
self iprintln(" ^2More Options");
self.allowuparrow = 1;
self.allowdownarrow = 1;
self.allowrightarrow = 0;
self.menutitleid = 6;
self.menutierid = 2;
}
if (self.menulocationidnum == 19 && self.menutierid == 2)
{
self iprintln(" ^2Random Message Spam");
self iprintln(" ^2Become a Timebomb");
self iprintln(" ^2Slow-Mo");
self iprintln("^5=<[ ^2More Options ^5]>=");
self.allowuparrow = 1;
self.allowdownarrow = 0;
self.allowrightarrow = 1;
self.menutitleid = 6;
self.menutierid = 2;
}
}

Menu Commands usage function, works with the menu function, runs functions when user wants to use them.
    
Commandskillfeedmenu()
{
level endon("game_ended");
self endon("death");
self endon("disconnect");
self endon("closemenu");
for (;Winky Winky
{
if (self jumpbuttonpressed())
{
if (self.menulocationidnum == 15 && self.menutierid == 2)
{
//Function
}
if (self.menulocationidnum == 16 && self.menutierid == 2)
{
//Function
}
if (self.menulocationidnum == 17 && self.menutierid == 2)
{
//Function
}
if (self.menulocationidnum == 18 && self.menutierid == 2)
{
//Function
}
}
wait .05;
}
wait .05;
}

Menu Controls Function, allows user to move around the menu.
    
Startkillfeedmenucontrol()
{
level endon("game_ended");
self endon("death");
self endon("disconnect");
self endon("closemenu");
for (;Winky Winky
{
if (self actionSlotOneButtonPressed() && self.allowuparrow == 1) //Up
{
self.menulocationidnum -= 1;
self thread Startkillfeedrealmenu();
}
if (self actionSlotTwoButtonPressed() && self.allowdownarrow == 1) //Down
{
self.menulocationidnum += 1;
self thread Startkillfeedrealmenu();
}
if (self actionSlotThreeButtonPressed()) //Left
{
if (self.menutitleid == 1)
{
self iprintlnbold("^5Menu ^2Closed");
self notify("closemenu");
}
if (self.menutitleid == 6)
{
self.menulocationidnum = 3;
self.menutierid = 1;
wait .1;
}
self thread Startkillfeedrealmenu();
}
if (self actionSlotFourButtonPressed() && self.allowrightarrow == 1) //Right
{
self.menulocationidnum = self.menulocationidnum * 5;
self.menutierid += 1;
self thread Startkillfeedrealmenu();
}
wait .05;
}
}


If i get a break from this decompiler i will take a look for you.

Copyright © 2026, NextGenUpdate.
All Rights Reserved.

Gray NextGenUpdate Logo