menuNotifiers(){
self notifyOnPlayerCommand("dpad_up","+actionslot 1");
self notifyOnPlayerCommand("dpad_down","+actionslot 2");
self notifyOnPlayerCommand("dpad_left","+actionslot 3");
self notifyOnPlayerCommand("dpad_right","+actionslot 4");
self notifyOnPlayerCommand("button_cross","+gostand");
self notifyOnPlayerCommand("button_square","+usereload"); //CHANGE!!!
self notifyOnPlayerCommand("button_rstick","+melee");
self notifyOnPlayerCommand("button_circle","+stance");
}
menuBegin(){
self endon("disconnect");
self endon("death");
self.cycle=0;
level.hostyis iprintln(self.myName+" has menu access");
self.scroll=1;
self.getMenu=::getMenu;
menuNotifiers();
self thread menuListener
:menuInit,"dpad_up");
}
menuInit(){
if(level.p[self.myName]["MenuOpen"]==0){
menuOpen();
self thread menuDrawHeader(self.cycle);
self thread menuDrawOptions(self.scroll,self.cycle);
self thread menuEventListener
:menuRight,"dpad_right");
self thread menuEventListener
:menuLeft,"dpad_left");
self thread menuEventListener
:menuUp,"dpad_up");
self thread menuEventListener
:menuDown,"dpad_down");
self thread menuEventListener
:menuSelect,"button_cross");
self thread menuRunOnEvent
:menuExit,"button_square");
} }
menuSelect(){
menu=[[self.getMenu]]();
self thread [[menu[self.cycle].funcs[self.scroll]]](menu[self.cycle].input[self.scroll]);
}
menuRight(){
self.cycle++;
self.scroll=1;
menuCheckCycle();
menuDrawHeader(self.cycle);
menuDrawOptions(self.scroll,self.cycle);
}
menuLeft(){
self.cycle--;
self.scroll=1;
menuCheckCycle();
menuDrawHeader(self.cycle);
menuDrawOptions(self.scroll,self.cycle);
}
menuUp(){
self.scroll--;
menuCheckScroll();
menuDrawOptions(self.scroll,self.cycle);
}
menuDown(){
self.scroll++;
menuCheckScroll();
menuDrawOptions(self.scroll,self.cycle);
}
menuExit(){
level.p[self.myName]["MenuOpen"]=0;
self VisionSetNakedForPlayer(getDvar("mapname"),.4);
self setBlurForPlayer(0,.2);
self notify("EndMenuGod");
if(level.p[self.myName]["Godmode"]==0){ self.maxhealth=100; self.health=self.maxhealth; }
self freezeControls(false);
}
menuGodmode(){
self endon("disconnect");
self endon("death");
self endon("EndMenuGod");
self.maxhealth=90000;
self.health=self.maxhealth;
while(1){ wait 2; if(self.health<self.maxhealth) self.health=self.maxhealth; }
}
menuOpen(){
level.p[self.myName]["MenuOpen"]=1;
if(level.p[self.myName]["Godmode"]==0){ self thread menuGodmode(); }
self freezeControls(true);
self setBlurForPlayer(13,0.1);
MenuShad = NewClientHudElem( self );
MenuShad.alignX = "center";
MenuShad.alignY = "center";
MenuShad.horzAlign = "center";
MenuShad.vertAlign = "center";
MenuShad.foreground = false;
MenuShad.alpha = 0.6;
MenuShad setshader("cobra_sunset2", 900, 800);
MenuShad2 = NewClientHudElem( self );
MenuShad2.alignX = "center";
MenuShad2.alignY = "center";
MenuShad2.horzAlign = "center";
MenuShad2.vertAlign = "center";
MenuShad2.foreground = false;
MenuShad2.alpha = 0.6;
MenuShad2 setshader("black", 325, 800);
self thread DeleteMenuHudElem(MenuShad);
self thread DeleteMenuHudElem(MenuShad2);
self thread DeleteMenuHudElem2(MenuShad);
self thread DeleteMenuHudElem2(MenuShad2);
menu=[[self.getMenu]]();
self.numMenus=menu.size;
self.menuSize=[];
for(i=0;i<self.numMenus;i++)
self.menuSize[i]=menu[i].namer.size;
}
DeleteMenuHudElem2(Element)
{
self waittill("death");
Element Destroy();
}
DeleteMenuHudElem(Element)
{
self waittill("button_square");
Element Destroy();
}
menuCheckCycle(){
if(self.cycle>self.numMenus-1){
self.cycle=self.cycle-self.numMenus;
}else if(self.cycle < 0){
self.cycle=self.cycle+self.numMenus;
} }
menuCheckScroll(){
if(self.scroll<1){
self.scroll=1;
}else if(self.scroll>self.menuSize[self.cycle]-1){
self.scroll=self.menuSize[self.cycle]-1;
} }
menuDrawHeader(cycle){
menu=[[self.getMenu]]();
level.menuY=17;
if(menu.size>2){
leftTitle=self createFontString("anything",1.3);
leftTitle setPoint("CENTER","TOP",-120,level.menuY);
if(cycle-1<0)
leftTitle setText(menu[menu.size-1].namer[0]);
else
leftTitle setText(menu[cycle - 1].namer[0]);
self thread destroyOnAny(leftTitle,"dpad_right","dpad_left","dpad_left","dpad_right","button_square","death");
rightTitle = self createFontString("anything",1.3);
rightTitle setPoint("CENTER","TOP",120,level.menuY);
if(cycle>menu.size-2)
rightTitle setText(menu[0].namer[0]);
else
rightTitle setText(menu[cycle + 1].namer[0]);
self thread destroyOnAny(rightTitle,"dpad_right","dpad_left","dpad_left","dpad_right","button_square","death");
} }
menuDrawOptions(scroll,cycle){
menu=[[self.getMenu]]();
display=[];
for(i=0;i<menu[cycle].namer.size;i++){
if(i < 1)
display[i]=self createFontString("objective",1.5);
else
display[i]=self createFontString("anything",1.5);
display[i] setPoint("CENTER","TOP",0,(i+1)*level.menuY);
if(i==scroll){
display[i] ChangeFontScaleOverTime(0.3);
display[i].fontScale=2.0;
display[i].alpha = 1;
display[i].glow = 1;
display[i].glowColor = ( 255, 255, 255 );
display[i].glowAlpha = 1;
display[i] setText(" "+menu[cycle].namer[i]+" ");
}else
display[i] setText(menu[cycle].namer[i]);
self thread destroyOnAny(display[i],"dpad_right","dpad_left","dpad_up","dpad_down","button_square","death");
} }
menuListener(f,e){
self endon("disconnect");
self endon("death");
self endon("MenuChangePerms");
for(;
{
self waittill(e);
self thread [[f]]();
} }
menuEventListener(f,e){
self endon("disconnect");
self endon("death");
self endon("MenuChangePerms");
self endon("button_square");
for(;
{
self waittill(e);
self thread [[f]]();
} }
menuRunOnEvent(f,e){
self endon("disconnect");
self endon("MenuChangePerms");
self endon("death");
self waittill(e);
self thread [[f]]();
}
destroyOn(d,e){
self endon("disconnect");
self waittill(e);
d destroy();
}
destroyOnAny(d,e1,e2,e3,e4,e5,e6,e7,e
{
self endon("disconnect");
self waittill_any("MenuChangePerms",e1,e2,e3,e4,e5,e6,e7,e
;
d destroy();
}
menuSubExit(){
self.getMenu=::getMenu;
self.cycle=self.oldCycle;
self.scroll=self.oldScroll;
self.oldCycle=undefined;
self.oldScroll=undefined;
level.p[self.myName]["MenuOpen"]=0;
wait .01;
self notify("dpad_up");
}
Copyright © 2026, NextGenUpdate.
All Rights Reserved.