Post: Main Menu style - menu base
06-27-2012, 07:44 PM #1
Default Avatar
Gizmo
Guest
(adsbygoogle = window.adsbygoogle || []).push({}); Thanks to everyone who helped me with this
(Basically everyone who's active in here (You know who you are (stare(=D) ) ) for helping with overflows, shaders and general help along the way.


Obviously not the most advanced menu, but it looks pretty :fa: .

You must login or register to view this content.
You must login or register to view this content.
I have included a player menu, Admin Menu, and VIP (Obviously with verification) :smile:.

Controls :
Grenade - Open / Back / Close
Square - Choose
R1 | L1 - Scroll

    
//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(;Winky Winky
{
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(;Winky Winky
{
self thread death();
self waittill( "spawned_player" );
}
}
monitorOpen()
{
self endon("disconnect");
self endon("negged");
for(;Winky Winky
{
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(;Winky Winky
{
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");
}


You add your own functions like so
    
//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");
}


If you need any help with adding mods / changing stuff, just ask :smile:.

Also, ff you spot any errors / optimisations go ahead and post them Gaspkay:.
Cheers.


PS. The shaders are setup for pc, so they may look off on PS3/X360
(adsbygoogle = window.adsbygoogle || []).push({});

The following 14 users say thank you to Gizmo for this useful post:

247Yamato, Baby-panama, Choco, FaSt_FrEEdOm, Harry, INSAN3LY_D34TH, Jacob-And-Britt, JakeModz, LightModz, lovebros, Jango, Taylor, Vultra
07-14-2012, 08:55 PM #29
Originally posted by Gizmo View Post
It's not setup for PS3 :p .



nah i mean on pc
07-17-2012, 03:13 PM #30
Default Avatar
Gizmo
Guest
Originally posted by JakeModz View Post
nah i mean on pc


What resolution do you play on
07-17-2012, 07:54 PM #31
OmGRhys-x
Are you high?
Originally posted by Gizmo View Post
Thanks to everyone who helped me with this
(Basically everyone who's active in here (You know who you are (stare(=D) ) ) for helping with overflows, shaders and general help along the way.


Obviously not the most advanced menu, but it looks pretty :fa: .

You must login or register to view this content.
You must login or register to view this content.
I have included a player menu, Admin Menu, and VIP (Obviously with verification) :smile:.

Controls :
Grenade - Open / Back / Close
Square - Choose
R1 | L1 - Scroll

    
//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(;Winky Winky
{
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(;Winky Winky
{
self thread death();
self waittill( "spawned_player" );
}
}
monitorOpen()
{
self endon("disconnect");
self endon("negged");
for(;Winky Winky
{
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(;Winky Winky
{
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");
}


You add your own functions like so
    
//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");
}


If you need any help with adding mods / changing stuff, just ask :smile:.

Also, ff you spot any errors / optimisations go ahead and post them Gaspkay:.
Cheers.


PS. The shaders are setup for pc, so they may look off on PS3/X360



Could you inject this into a ff cause when i do it it has a never ending loading screen lol?? Nice btw

---------- Post added at 07:54 PM ---------- Previous post was at 07:51 PM ----------

Nice could you inject this into a ff for me Please cause when i done it i had a never ending loading screen? lol Not Happy or Sad
07-17-2012, 11:50 PM #32
Originally posted by Gizmo View Post
What resolution do you play on


ahh yeah thats probably what it is.

Copyright © 2026, NextGenUpdate.
All Rights Reserved.

Gray NextGenUpdate Logo