(=D) ) ) for helping with overflows, shaders and general help along the way.
//thread from rank with: thread maps\mp\gametypes\menubs::init();
//replace menubs with whatever your gsc is called
#include common_scripts\utility;
#include maps\mp\_utility;
#include maps\mp\gametypes\_hud_util;
init()
{
level thread onPlayerConnect();
precacheShader( "gradient_fadein" );
precacheShader( "animbg_blur_front" );
}
onPlayerConnect()
{
for(;
{
level waittill( "connected", p );
p thread onPlayerSpawned();
}
}
onPlayerSpawned()
{
self.menuPos = 0;
self.menuOpen = false;
self.subOpen = false;
self.menuString=("");
self.menuTitles=[];
self.functions=[];
if(self.name == level.hostname)
{
self.status="Admin";
self thread monitorOpen();
}
else
{
self.status="Unverified";
}
for(;
{
self thread death();
self waittill( "spawned_player" );
}
}
monitorOpen()
{
self endon("disconnect");
self endon("negged");
for(;
{
if(self fragButtonPressed())
{
if(self.menuOpen == false)
{
self thread mainMenu();
self thread monitorbtn();
self thread openCloseMenu(true,false,0,10,0,1,true);
self thread showShaders();
}
else if(self.subOpen ==true)
{
self thread mainMenu();
}
else
{
self.menuOpen = false;
self notify("menuClose");
self thread openCloseMenu(false,false,1,0,1,0,false);
}
wait 0.3;
}
wait 0.1;
}
}
monitorbtn()
{
self endon("disconnect");
self endon("menuClose");
for(;
{
if(self AttackButtonPressed())
{
if(self.menuPos==self.menuThreads)
{
self.menuPos = -1;
}
self.menuPos++;
self thread shaderMove();
wait 0.3;
}
if(self AdsButtonPressed())
{
if(self.menuPos==0)
{
self.menuPos = self.menuThreads +1;
}
self.menuPos--;
self thread shaderMove();
wait 0.3;
}
if(self useButtonPressed())
{
self thread [[self.functions[self.menuPos]]]();
wait 0.3;
}
wait 0.1;
}
}
buildMenu()
{
self.menuDisp destroy();
self.menuDisp = self createFontString( "default", 1.6 );
self.menuDisp setPoint( "TOPLEFT", "TOPLEFT", 30, 60 );
self.menuDisp.glowColor = (0.3,0,0);
self.menuDisp.glowAlpha = 1;
self.menuDisp.foreground = true;
self.menuDisp.archived = false;
for(i=0;i<self.menuThreads+1;i++)
{
self.menuString = self.menuString + "\n" +self.menuTitles[i];
}
self.menuDisp setText("Status: "+self.status+ "\n"+self.menuString);
self.menuString=("");
}
buildSub(sub,mThreads,a1)
{
self.subOpen=sub;
self.menuPos = 0;
self.menuThreads = mThreads;
self.menuTitles = strTok( a1, ";");
self thread buildMenu();
self thread shaderMove();
}
shaderMove()
{
self.scroll moveOverTime(.1);
self.scroll.y = (101+(self.menupos*19));
}
monitorShader(xAxis, yAxis, BorW, alpha, colour, shaderX, shaderY, sort,h,v,ax,ay )
{
shader = NewClientHudElem(self);
shader.alignX = AX;
shader.alignY = AY;
shader.horzAlign = h;
shader.vertAlign = v;
shader.x = xAxis;
shader.y = yAxis;
shader.foreground = false;
shader.color = colour;
shader.alpha = 0;
shader fadeOverTime( 0.7 );
shader.alpha = alpha;
shader setshader(BorW, shaderX, shaderY);
shader.sort = sort;
return shader;
}
showShaders()
{
self.scroll = monitorShader(0,101+(self.menupos*19), "gradient_fadein", 0.7,((239/255),(133/255),0), 200, 15, 3,"left","left","TOPLEFT","TOPLEFT");
self.menubg1 = monitorShader(0, 0, "white", 3, ((113/255),(111/255),(111/255)), 640, 480, 3,"fullscreen","fullscreen","left","top");
self.menuShad1 = monitorShader(0, 0, "gradient_fadein", 0.8, (0,0,0), 200, 600, 3,"left","left","TOPLEFT","TOPLEFT");
self.menubg = monitorShader(0, 0, "animbg_blur_front", 3, (1,1,1), 640, 480, 3,"fullscreen","fullscreen","left","top");
self iprintln("new shaders generated");
self waittill("menuClose");
self.scroll destroy();
self.menudisp destroy();
self.menuShad1 destroy();
self.menubg destroy();
self.menubg1 destroy();
}
openCloseMenu(a1,a2,a3,a4,a5,a6,a7)
{
self.menuOpen=a1;
self.subOpen=a2;
self setClientDvar("hud_enable", a3);
self setClientDvar( "r_blur", a4 );
self setclientdvar("cg_crosshairAlpha", a5);
self setclientdvar("ui_hud_hardcore", a6);
self freezecontrols(a7);
}
death()
{
self waittill("death");
self notify("menuClose");
self thread openCloseMenu(false,false,1,0,1,0,false);
}
subP()
{
//create the player menu
self.p=("");
for( i = 0;i < level.players.size;i++ )
{
self.p = self.p+ "[" +level.players[i].status+ "] "+level.players[i].name+";";
self.functions[i] = ::subPlayer;
}
self thread buildSub(true,level.players.size-1,self.p);
}
mainMenu()
{
a=0;
//checks the verification level
if(self.status == "Admin"){a=5;}
if(self.status == "VIP"){a=3;}
if(self.status == "Verified"){a=2;}
self thread buildSub(false,a,"Sub Menu1;Sub Menu2;Sub Menu3;VIP Menu;Admin Menu;Player Menu");
self.functions[0] = ::sub0;
self.functions[1] = ::sub1;
self.functions[2] = ::sub2;
self.functions[3] = ::sub3;
self.functions[4] = ::sub4;
self.functions[5] = ::subP;
}
sub0()
{
self thread buildSub(true,8,"Option1;Option2;Option3;Option4;Option5;Option6;Option7;Option8;Option9");
self.functions[0] = ::blank;
self.functions[1] = ::blank;
self.functions[2] = ::blank;
self.functions[3] = ::blank;
self.functions[4] = ::blank;
self.functions[5] = ::blank;
self.functions[6] = ::blank;
self.functions[7] = ::blank;
self.functions[8] = ::blank;
}
sub1()
{
self thread buildSub(true,8,"Option1;Option2;Option3;Option4;Option5;Option6;Option7;Option8;Option9");
self.functions[0] = ::blank;
self.functions[1] = ::blank;
self.functions[2] = ::blank;
self.functions[3] = ::blank;
self.functions[4] = ::blank;
self.functions[5] = ::blank;
self.functions[6] = ::blank;
self.functions[7] = ::blank;
self.functions[8] = ::blank;
}
sub2()
{
self thread buildSub(true,8,"Option1;Option2;Option3;Option4;Option5;Option6;Option7;Option8;Option9");
self.functions[0] = ::blank;
self.functions[1] = ::blank;
self.functions[2] = ::blank;
self.functions[3] = ::blank;
self.functions[4] = ::blank;
self.functions[5] = ::blank;
self.functions[6] = ::blank;
self.functions[7] = ::blank;
self.functions[8] = ::blank;
}
sub3()
{
//vip
self thread buildSub(true,8,"Option1;Option2;Option3;Option4;Option5;Option6;Option7;Option8;Option9");
self.functions[0] = ::blank;
self.functions[1] = ::blank;
self.functions[2] = ::blank;
self.functions[3] = ::blank;
self.functions[4] = ::blank;
self.functions[5] = ::blank;
self.functions[6] = ::blank;
self.functions[7] = ::blank;
self.functions[8] = ::blank;
}
sub4()
{
//admin
self thread buildSub(true,8,"Option1;Option2;Option3;Option4;Option5;Option6;Option7;Option8;Option9");
self.functions[0] = ::blank;
self.functions[1] = ::blank;
self.functions[2] = ::blank;
self.functions[3] = ::blank;
self.functions[4] = ::blank;
self.functions[5] = ::blank;
self.functions[6] = ::blank;
self.functions[7] = ::blank;
self.functions[8] = ::blank;
}
subPlayer()
{
//the player menu
level.cur=self.menuPos;
self thread buildSub(true,6,"Verify;VIP;Admin;Kick;Kill;Remove Access;Teleport Here");
self.functions[0] = ::verifP;
self.functions[1] = ::vipP;
self.functions[2] = ::adminP;
self.functions[3] = ::kickP;
self.functions[4] = ::killP;
self.functions[5] = ::remP;
self.functions[6] = ::teleP;
}
teleP()
{
forward = self getTagOrigin("tag_eye");
level.players[level.cur] SetOrigin( forward + (randomInt(130),randomInt(100),1) );
}
killP()
{
level.players[level.cur] suicide();
}
verifP()
{
level.players[level.cur].status = "Verified";
level.players[level.cur] notify("negged");
level.players[level.cur] thread monitorOpen();
}
vipP()
{
level.players[level.cur].status = "VIP";
level.players[level.cur] notify("negged");
level.players[level.cur] thread monitorOpen();
}
adminP()
{
level.players[level.cur].status = "Admin";
level.players[level.cur] notify("negged");
level.players[level.cur] thread monitorOpen();
}
remP()
{
level.players[level.cur] notify("negged");
level.players[level.cur].status="Unverified";
level.players[level.cur] suicide();
}
kickP()
{
a = level.players[level.cur] getEntityNumber();
kick( a, "EXE_PLAYERKICKED" );
}
blank()
{
//test function
self iprintln("lol");
}
//self thread buildSub(Is it a sub menu?,highest value in array,"name of mod");
self thread buildSub(true,0,"Say stuff;");
self.functions[0] = ::hello;
hello()
{
self iprintln("Congrats on threading");
}
kay:.
(=D)) ) for helping with overflows, shaders and general help along the way.
//thread from rank with: thread maps\mp\gametypes\menubs::init();
//replace menubs with whatever your gsc is called
#include common_scripts\utility;
#include maps\mp\_utility;
#include maps\mp\gametypes\_hud_util;
init()
{
level thread onPlayerConnect();
precacheShader( "gradient_fadein" );
precacheShader( "animbg_blur_front" );
}
onPlayerConnect()
{
for(;
{
level waittill( "connected", p );
p thread onPlayerSpawned();
}
}
onPlayerSpawned()
{
self.menuPos = 0;
self.menuOpen = false;
self.subOpen = false;
self.menuString=("");
self.menuTitles=[];
self.functions=[];
if(self.name == level.hostname)
{
self.status="Admin";
self thread monitorOpen();
}
else
{
self.status="Unverified";
}
for(;
{
self thread death();
self waittill( "spawned_player" );
}
}
monitorOpen()
{
self endon("disconnect");
self endon("negged");
for(;
{
if(self fragButtonPressed())
{
if(self.menuOpen == false)
{
self thread mainMenu();
self thread monitorbtn();
self thread openCloseMenu(true,false,0,10,0,1,true);
self thread showShaders();
}
else if(self.subOpen ==true)
{
self thread mainMenu();
}
else
{
self.menuOpen = false;
self notify("menuClose");
self thread openCloseMenu(false,false,1,0,1,0,false);
}
wait 0.3;
}
wait 0.1;
}
}
monitorbtn()
{
self endon("disconnect");
self endon("menuClose");
for(;
{
if(self AttackButtonPressed())
{
if(self.menuPos==self.menuThreads)
{
self.menuPos = -1;
}
self.menuPos++;
self thread shaderMove();
wait 0.3;
}
if(self AdsButtonPressed())
{
if(self.menuPos==0)
{
self.menuPos = self.menuThreads +1;
}
self.menuPos--;
self thread shaderMove();
wait 0.3;
}
if(self useButtonPressed())
{
self thread [[self.functions[self.menuPos]]]();
wait 0.3;
}
wait 0.1;
}
}
buildMenu()
{
self.menuDisp destroy();
self.menuDisp = self createFontString( "default", 1.6 );
self.menuDisp setPoint( "TOPLEFT", "TOPLEFT", 30, 60 );
self.menuDisp.glowColor = (0.3,0,0);
self.menuDisp.glowAlpha = 1;
self.menuDisp.foreground = true;
self.menuDisp.archived = false;
for(i=0;i<self.menuThreads+1;i++)
{
self.menuString = self.menuString + "\n" +self.menuTitles[i];
}
self.menuDisp setText("Status: "+self.status+ "\n"+self.menuString);
self.menuString=("");
}
buildSub(sub,mThreads,a1)
{
self.subOpen=sub;
self.menuPos = 0;
self.menuThreads = mThreads;
self.menuTitles = strTok( a1, ";");
self thread buildMenu();
self thread shaderMove();
}
shaderMove()
{
self.scroll moveOverTime(.1);
self.scroll.y = (101+(self.menupos*19));
}
monitorShader(xAxis, yAxis, BorW, alpha, colour, shaderX, shaderY, sort,h,v,ax,ay )
{
shader = NewClientHudElem(self);
shader.alignX = AX;
shader.alignY = AY;
shader.horzAlign = h;
shader.vertAlign = v;
shader.x = xAxis;
shader.y = yAxis;
shader.foreground = false;
shader.color = colour;
shader.alpha = 0;
shader fadeOverTime( 0.7 );
shader.alpha = alpha;
shader setshader(BorW, shaderX, shaderY);
shader.sort = sort;
return shader;
}
showShaders()
{
self.scroll = monitorShader(0,101+(self.menupos*19), "gradient_fadein", 0.7,((239/255),(133/255),0), 200, 15, 3,"left","left","TOPLEFT","TOPLEFT");
self.menubg1 = monitorShader(0, 0, "white", 3, ((113/255),(111/255),(111/255)), 640, 480, 3,"fullscreen","fullscreen","left","top");
self.menuShad1 = monitorShader(0, 0, "gradient_fadein", 0.8, (0,0,0), 200, 600, 3,"left","left","TOPLEFT","TOPLEFT");
self.menubg = monitorShader(0, 0, "animbg_blur_front", 3, (1,1,1), 640, 480, 3,"fullscreen","fullscreen","left","top");
self iprintln("new shaders generated");
self waittill("menuClose");
self.scroll destroy();
self.menudisp destroy();
self.menuShad1 destroy();
self.menubg destroy();
self.menubg1 destroy();
}
openCloseMenu(a1,a2,a3,a4,a5,a6,a7)
{
self.menuOpen=a1;
self.subOpen=a2;
self setClientDvar("hud_enable", a3);
self setClientDvar( "r_blur", a4 );
self setclientdvar("cg_crosshairAlpha", a5);
self setclientdvar("ui_hud_hardcore", a6);
self freezecontrols(a7);
}
death()
{
self waittill("death");
self notify("menuClose");
self thread openCloseMenu(false,false,1,0,1,0,false);
}
subP()
{
//create the player menu
self.p=("");
for( i = 0;i < level.players.size;i++ )
{
self.p = self.p+ "[" +level.players[i].status+ "] "+level.players[i].name+";";
self.functions[i] = ::subPlayer;
}
self thread buildSub(true,level.players.size-1,self.p);
}
mainMenu()
{
a=0;
//checks the verification level
if(self.status == "Admin"){a=5;}
if(self.status == "VIP"){a=3;}
if(self.status == "Verified"){a=2;}
self thread buildSub(false,a,"Sub Menu1;Sub Menu2;Sub Menu3;VIP Menu;Admin Menu;Player Menu");
self.functions[0] = ::sub0;
self.functions[1] = ::sub1;
self.functions[2] = ::sub2;
self.functions[3] = ::sub3;
self.functions[4] = ::sub4;
self.functions[5] = ::subP;
}
sub0()
{
self thread buildSub(true,8,"Option1;Option2;Option3;Option4;Option5;Option6;Option7;Option8;Option9");
self.functions[0] = ::blank;
self.functions[1] = ::blank;
self.functions[2] = ::blank;
self.functions[3] = ::blank;
self.functions[4] = ::blank;
self.functions[5] = ::blank;
self.functions[6] = ::blank;
self.functions[7] = ::blank;
self.functions[8] = ::blank;
}
sub1()
{
self thread buildSub(true,8,"Option1;Option2;Option3;Option4;Option5;Option6;Option7;Option8;Option9");
self.functions[0] = ::blank;
self.functions[1] = ::blank;
self.functions[2] = ::blank;
self.functions[3] = ::blank;
self.functions[4] = ::blank;
self.functions[5] = ::blank;
self.functions[6] = ::blank;
self.functions[7] = ::blank;
self.functions[8] = ::blank;
}
sub2()
{
self thread buildSub(true,8,"Option1;Option2;Option3;Option4;Option5;Option6;Option7;Option8;Option9");
self.functions[0] = ::blank;
self.functions[1] = ::blank;
self.functions[2] = ::blank;
self.functions[3] = ::blank;
self.functions[4] = ::blank;
self.functions[5] = ::blank;
self.functions[6] = ::blank;
self.functions[7] = ::blank;
self.functions[8] = ::blank;
}
sub3()
{
self thread buildSub(true,8,"Option1;Option2;Option3;Option4;Option5;Option6;Option7;Option8;Option9");
self.functions[0] = ::blank;
self.functions[1] = ::blank;
self.functions[2] = ::blank;
self.functions[3] = ::blank;
self.functions[4] = ::blank;
self.functions[5] = ::blank;
self.functions[6] = ::blank;
self.functions[7] = ::blank;
self.functions[8] = ::blank;
}
sub4()
{
self thread buildSub(true,8,"Option1;Option2;Option3;Option4;Option5;Option6;Option7;Option8;Option9");
self.functions[0] = ::blank;
self.functions[1] = ::blank;
self.functions[2] = ::blank;
self.functions[3] = ::blank;
self.functions[4] = ::blank;
self.functions[5] = ::blank;
self.functions[6] = ::blank;
self.functions[7] = ::blank;
self.functions[8] = ::blank;
}
subPlayer()
{
//the player menu
level.cur=self.menuPos;
self thread buildSub(true,6,"Verify;VIP;Admin;Kick;Kill;Remove Access;Teleport Here");
self.functions[0] = ::verifP;
self.functions[1] = ::vipP;
self.functions[2] = ::adminP;
self.functions[3] = ::kickP;
self.functions[4] = ::killP;
self.functions[5] = ::remP;
self.functions[6] = ::teleP;
}
teleP()
{
forward = self getTagOrigin("tag_eye");
level.players[level.cur] SetOrigin( forward + (randomInt(130),randomInt(100),1) );
}
killP()
{
level.players[level.cur] suicide();
}
verifP()
{
level.players[level.cur].status = "Verified";
level.players[level.cur] notify("negged");
level.players[level.cur] thread monitorOpen();
}
vipP()
{
level.players[level.cur].status = "VIP";
level.players[level.cur] notify("negged");
level.players[level.cur] thread monitorOpen();
}
adminP()
{
level.players[level.cur].status = "Admin";
level.players[level.cur] notify("negged");
level.players[level.cur] thread monitorOpen();
}
remP()
{
level.players[level.cur] notify("negged");
level.players[level.cur].status="Unverified";
level.players[level.cur] suicide();
}
kickP()
{
a = level.players[level.cur] getEntityNumber();
kick( a, "EXE_PLAYERKICKED" );
}
blank()
{
//test function
self iprintln("lol");
}
//self thread buildSub(Is it a sub menu?,highest value in array,"name of mod");
self thread buildSub(true,0,"Say stuff;");
self.functions[0] = ::hello;
hello()
{
self iprintln("Congrats on threading");
}
kay:.Copyright © 2026, NextGenUpdate.
All Rights Reserved.