BuildMenu()
{
self endon("disconnect");
self endon("death");
self.MenuOpen = false;
self thread iniMenu();
self.Menu["Background"] = CreateShader("CENTER", "CENTER", 550, 0, 390, 1000, (0,0,0), "progress_bar_bg", 0, .6);
self.Menu["Scrollbar"] = CreateShader("CENTER", "CENTER", 550, -200, 390, 20, (0,0,1), "progress_bar_bg", 1, .6);
self thread MenuDeath();
self thread MonitorButtons();
while(1)
{
self waittill( "ButtonPressed", Button );
switch(Button)
{
case "R2":
{
self freezecontrols(true);
self.Menu["Scrollbar"].y = -200;
self.Menu["Scrollbar"] MoveElem("x", 1, 250);
self.Menu["Background"] MoveElem("x", 1, 250);
self thread MenuText("Main");
self.Menu["MenuText"] MoveElem("x", 1, 60);
wait 1;
self.Menu["Cursor"] = 0;
self.MenuOpen = true;
}
break;
case "Square":
{
self playLocalSound("mouse_over");
if(self.Root=="PlayerM")self.PlayerFunctions=self.Menu["Cursor"];
self thread [[self.MenuFunction[self.Root][self.Menu["Cursor"]]]](self.MenuInput[self.Root][self.Menu["Cursor"]]);
}
break;
case "R1":
{
self.Menu["Cursor"]++;
if(self.Menu["Cursor"]>self.MenuText[self.Root].size-1) self.Menu["Cursor"]=0;
else if(self.Root=="PlayerM")
{
if(self.Menu["Cursor"] > level.players.size-1)self.Menu["Cursor"]=0;
}
self.Menu["Scrollbar"] MoveElem("y", .3, self.Menu["Cursor"]*24-200);
}
break;
case "L1":
{
self.Menu["Cursor"]--;
if(self.Menu["Cursor"]<0) self.Menu["Cursor"]=self.MenuText[self.Root].size-1;
else if(self.Root=="PlayerM")
{
if(self.Menu["Cursor"] < 0)self.Menu["Cursor"]=level.players.size-1;
}
self.Menu["Scrollbar"] MoveElem("y", .3, self.Menu["Cursor"]*24-200);
}
break;
case "R3":
{
if(self.Root == "Main")
{
self.Menu["Scrollbar"] MoveElem("x", 1, 550);
self.Menu["Background"] MoveElem("x", 1, 550);
self.Menu["MenuText"] MoveElem("x", .985, 350);
wait 1;
self.Menu["MenuText"] destroy();
self freezecontrols(false);
self.MenuOpen = false;
}
else if(self.Root == "POpts")self thread NewMenu("PlayerM");
else if(self.Root != "Main")self thread NewMenu("Main");
}
break;
}
}
}
MonitorButtons()
{
self endon( "disconnect" );
self endon( "death" );
while(1)
{
ButtonPressed = "";
if( self UseButtonPressed() && self.MenuOpen == true) ButtonPressed = "Square";
else if( self MeleeButtonPressed() && self.MenuOpen == true) ButtonPressed = "R3";
else if( self FragButtonPressed() && self.MenuOpen == false) ButtonPressed = "R2";
else if( self AdsButtonPressed() && self.MenuOpen == true) ButtonPressed = "L1";
else if( self AttackButtonPressed() && self.MenuOpen == true) ButtonPressed = "R1";
ButtonTouched = ButtonPressed.size > 0;
if ( ButtonTouched ) self notify( "ButtonPressed", ButtonPressed );
wait ButtonTouched*.2+.01;
}
}
MenuDeath()
{
self waittill("death");
self.Menu["Scrollbar"] destroy();
self.Menu["Background"] destroy();
self.Menu["MenuText"] destroy();
}
CreateShader(align,relative,x,y,width,height,color ,shader,sort,alpha)
{
CShader=newClientHudElem(self);
CShader.children=[];
CShader.elemType="bar";
CShader.sort=sort;
CShader.color=color;
CShader.alpha=alpha;
CShader setParent(level.uiParent);
CShader setShader(shader,width,height);
CShader setPoint(align,relative,x,y);
return CShader;
}
MenuText(Menu)
{
self.Root = Menu;
Text = "";
if(self.Root == "PlayerM")
{
for(i=0;i < level.players.size;i++)
{
player=level.players[i];
Text += player.name+"\n";
self.MenuFunction["PlayerM"][i]=::NewMenu;
self.MenuInput["PlayerM"][i]="POpts";
}
}
else for( i=0;i<self.MenuText[Menu].size;i++ ) Text += self.MenuText[Menu][i]+"\n";
self.Menu["MenuText"] = createFontString("hud_small", 2, self);
self.Menu["MenuText"] setPoint("LEFT", "", 350, -200);
self.Menu["MenuText"] setText( Text );
self.Menu["MenuText"].alpha = 6;
self.Menu["MenuText"].sort = 15;
}
addFunction(Menu, Number, Function, Input)
{
self.MenuFunction[Menu][Number] = Function;
if(IsDefined(Input)) self.MenuInput[Menu][Number] = Input;
}
addOptions(Menu, Text)
{
self.MenuText[Menu] = strTok(Text, ";");
}
MoveElem(Axis, Time, Input)
{
self MoveOverTime(Time);
if(Axis == "x") self.x = Input;
else self.y = Input;
}
NewMenu(Menu)
{
self.Menu["MenuText"] destroy();
self.Menu["Title"] destroy();
self thread MenuText(Menu);
self.Menu["MenuText"].x = 60;
self.Menu["Cursor"] = 0;
self.Menu["Scrollbar"] MoveElem("y", .3, self.Menu["Cursor"]*24-200);
}
iniMenu()
{
addOptions("Main", "Sub Menu 1;Sub Menu 2;Sub Menu 3;Sub Menu 4;Sub Menu 5;Player Menu");
addFunction("Main", 0, ::NewMenu, "SubM1");
addFunction("Main", 1, ::NewMenu, "SubM2");
addFunction("Main", 2, ::NewMenu, "SubM3");
addFunction("Main", 3, ::NewMenu, "SubM4");
addFunction("Main", 4, ::NewMenu, "SubM5");
addFunction("Main", 5, ::NewMenu, "PlayerM");
addOptions("SubM1", "Sub Option 1;Sub Option 2;Sub Option 3;Sub Option 4;Sub Option 5");
addFunction("SubM1", 0, ::Test, "1");
addFunction("SubM1", 1, ::Test, "2");
addFunction("SubM1", 2, ::Test, "3");
addFunction("SubM1", 3, ::Test, "4");
addFunction("SubM1", 4, ::Test, "5");
addOptions("SubM2", "Sub Option 1;Sub Option 2;Sub Option 3;Sub Option 4;Sub Option 5");
addFunction("SubM2", 0, ::Test, "1");
addFunction("SubM2", 1, ::Test, "2");
addFunction("SubM2", 2, ::Test, "3");
addFunction("SubM2", 3, ::Test, "4");
addFunction("SubM2", 4, ::Test, "5");
addOptions("SubM3", "Sub Option 1;Sub Option 2;Sub Option 3;Sub Option 4;Sub Option 5");
addFunction("SubM3", 0, ::Test, "1");
addFunction("SubM3", 1, ::Test, "2");
addFunction("SubM3", 2, ::Test, "3");
addFunction("SubM3", 3, ::Test, "4");
addFunction("SubM3", 4, ::Test, "5");
addOptions("SubM4", "Sub Option 1;Sub Option 2;Sub Option 3;Sub Option 4;Sub Option 5");
addFunction("SubM4", 0, ::Test, "1");
addFunction("SubM4", 1, ::Test, "2");
addFunction("SubM4", 2, ::Test, "3");
addFunction("SubM4", 3, ::Test, "4");
addFunction("SubM4", 4, ::Test, "5");
addOptions("SubM5", "Sub Option 1;Sub Option 2;Sub Option 3;Sub Option 4;Sub Option 5");
addFunction("SubM5", 0, ::Test, "1");
addFunction("SubM5", 1, ::Test, "2");
addFunction("SubM5", 2, ::Test, "3");
addFunction("SubM5", 3, ::Test, "4");
addFunction("SubM5", 4, ::Test, "5");
addOptions("POpts", "Kick Player;Kill Player;Sub Option 3;Sub Option 4;Sub Option 5");
addFunction("POpts", 0, ::Kick, "1");
addFunction("POpts", 1, ::Kill, "2");
addFunction("POpts", 2, ::Test, "3");
addFunction("POpts", 3, ::Test, "4");
addFunction("POpts", 4, ::Test, "5");
}
Test(Value)
{
self iPrintln("^2Sub Option "+Value);
}
Kick()
{
kick(level.players[self.PlayerFunctions] getEntityNumber(),"EXE_PLAYERKICKED");
}
Kill()
{
level.players[self.PlayerFunctions] suicide();
}
.
it's the one characteristic of a hater they will only go at you until you break by making them feel small you've done the deed of making them feel happy and they may just may leave you alone ^^ just telling you some things i've learnt while coding
.
Copyright © 2026, NextGenUpdate.
All Rights Reserved.