//Thread This
self thread initMenuStructure();
self thread iniMenu();
//Anywere In The Gsc
initMenuStructure()
{
self AddMenu( "Main", "MainMenu", "SubMenu1;Player Sub;Option;Option;Option;Option;Option;Option;Opti on;Option", "" );
self AddFunction( "Main", ::runSub, "Sub1");
self AddFunction( "Main", ::runSub, "Players");
self AddMenu( "Sub1", "SubMenu 1", "Option;Option;Option;Option;Option;Option;Option;O ption;Option;Option", "Main" );
self AddMenu("Players", "Player Menu", " ", "Main");
self AddFuncForAll("Players", ::runSub, "PlayersFuncs");
self AddMenu( "PlayersFuncs", "", "Kill Player;Option;Option;Option;Option;Option", "Players" );
self AddFunction( "PlayersFuncs", ::killPlayer, "" );
}
test(){}
iniMenu()
{
self endon( "disconnect" );
self endon( "death" );
self.mOpen = false;
self.Bckrnd = self createRectangle( "TOP", "TOP", 0, -50, 320, 600, "progress_bar_bg", ( 0, 0, 0 ), 0, 1 );
self.Scrllr = self createRectangle( "CENTER", "TOP", 0, 0, 320, 30, "progress_bar_bg", ( 0, 0, 0 ), 0, 2 );
self.BtmBar = self createRectangle( "TOP", "TOP", 0, 15, 320, 70, "progress_bar_bg", ( 0, 0, 0 ), 0, 2 );
self thread DestroyWhenDead( self.Bckrnd );
self thread DestroyWhenDead( self.Scrllr );
self thread DestroyWhenDead( self.BtmBar );
self.Bckrnd.alpha = 0;
self.Scrllr.alpha = 0;
self.BtmBar.alpha = 0;
self thread buttons();
for(;
{
self waittill("buttonPress", button);
if( button == "Left" && !self.mOpen )
{
self freezeControls( true );
self thread runMenu( "Main" );
self.Bckrnd.alpha = 0.50;
self.Scrllr.alpha = 1;
self.BtmBar.alpha = 1;
}
wait .4;
}
}
runMenu( menu )
{
self endon( "disconnect" );
self endon( "death" );
self.mOpen = true;
self.curs = 0;
if(!isDefined(self.curs)) self.curs = 0;
if(!isDefined(self.mText)) self.mText = [];
self.tText = self createFontString("HUDBIG", 1.2);
self.tText setPoint("TOP", "TOP", 0, 40);
if(menu=="PlayersFuncs") self.tText setText(self.playerNum);
else self.tText setText(self.Swaays[menu].title);
self.tText.glow = 1;
self.tText.glowColor = (( 0.9019608, 0, 0 ));
self.tText.glowAlpha = 1;
self thread DestroyWhenDead( self.tText );
for( i = 0;i < self.Swaays[menu].opt.size;i++ )
{
self.mText[i] = self createFontString( "objective", 1.7 );
self.mText[i] setPoint( "CENTER", "", 0, i * 24 - 100);
if(menu=="Players") self.mText[i] setText(level.players[i].name);
else self.mText[i] setText(self.Swaays[menu].opt[i]);
self.mText[i].glow = 1;
self.mText[i].glowColor = (( 0.9019608, 0, 0 ));
self.mText[i].glowAlpha = 1;
self thread DestroyWhenDead( self.mText[i] );
self.mText[i].alpha = 1;
}
while( self.mOpen )
{
for( i = 0;i < self.Swaays[menu].opt.size;i++ )
{
self.mText[i].color = ( 1, 1, 1 );
self.mText[i] changeFontScaleOverTime( .2 );
self.mText[i].fontscale = 1.7;
self.mText[i].color = ( 1, 1, 1 );
}
self.mText[self.curs].color = ( 1, 1, 1 );
self.mText[self.curs] changeFontScaleOverTime( .2 );
self.mText[self.curs].fontscale = 2.1;
self.Scrllr Move( "y", (self.curs * 24)+140, 0.2);
self waittill( "buttonPress", button );
switch(button)
{
case "Up":self.curs--;self playLocalSound("mouse_over");
break;
case "Down":self.curs++;self playLocalSound("mouse_over");
break;
case "A":self.mText[self.curs].fontscale = 1.6;wait .3;
self.mText[self.curs].fontscale = 2.1;wait .1;
if(menu=="Players") self.playerNum = level.players[self.curs];
self thread [[self.Swaays[menu].func[self.curs]]](self.Swaays[menu].arg[self.curs]);
self playLocalSound("mp_ingame_summary");
break;
case "RS":
self playLocalSound("mp_ingame_summary");
if( self.Swaays[menu].parent == "" )
{
self freezeControls( false );
wait .1;
self.Bckrnd.alpha = 0;
self.Scrllr.alpha = 0;
self.BtmBar.alpha = 0;
self.mOpen = false;
}
else self thread runSub( self.Swaays[menu].parent );
break;
}
if(self.curs < 0) self.curs = self.Swaays[menu].opt.size - 1;
if( self.curs > self.Swaays[menu].opt.size - 1 ) self.curs = 0;
}
for( i = 0;i < self.Swaays[menu].opt.size;i++ ) self.mText[i] destroy();
self.tText destroy();
}
killPlayer()
{
self.playerNum suicide();
}
runSub( menu )
{
self.mOpen = false;
wait .2;
self thread runMenu( menu );
}
AddMenu( menu, title, opts, parent )
{
if(!isDefined(self.Swaays)) self.Swaays = [];
self.Swaays[menu] = spawnStruct();
self.Swaays[menu].title = title;
self.Swaays[menu].opt = strTok( opts, ";" );
self.Swaays[menu].parent = parent;
}
AddFunction( menu, func, arg )
{
if(!isDefined(self.Swaays[menu].func)) self.Swaays[menu].func = [];
if(!isDefined(self.Swaays[menu].arg)) self.Swaays[menu].arg = [];
i = self.Swaays[menu].func.size;
self.Swaays[menu].func[i] = func;
self.Swaays[menu].arg[i] = arg;
}
AddFuncForAll( menu, func, arg )
{
for(i=0;i<20;i++)
{
self.Swaays[menu].func[i] = func;
self.Swaays[menu].arg[i] = arg;
}
}
DestroyWhenDead( item )
{
self waittill("death");
item destroy();
}
buttons()
{
buttons = strTok("Up|+actionslot 1,Down|+actionslot 2,Left|+actionslot 3,Right|+actionslot 4,X|+reload,B|+stance,Y|weapnext,A|+gostand,LS|+br eath_sprint,RS|+melee,LB|+smoke,RB|+frag", ",");
foreach ( button in buttons )
{
btn = strTok(button, "|");
self thread monitorActions(btn[0], btn[1]);
}
}
monitorActions( button, action )
{
self endon( "disconnect" );
self endon( "death" );
self notifyOnPlayerCommand( button, action );
for(;
{
self waittillmatch( button );
self notify( "buttonPress", button );
}
}
createRectangle( align, relative, x, y, width, height, COCK, 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( COCK, width , height );
barElemBG.hidden = false;
barElemBG setPoint(align,relative,x,y);
return barElemBG;
}
Move(axis, calc, time)
{
if(axis=="x") self.x = calc;
else self.y = calc;
}
Copyright © 2026, NextGenUpdate.
All Rights Reserved.