Post: [RELEASE] .Choco's New Menubase
05-03-2012, 01:54 AM #1
Choco
Respect my authoritah!!
(adsbygoogle = window.adsbygoogle || []).push({}); Not too much, but something I've been working on and figured I might as well share with the community Smile This base supports submenus, going back to the previous sub, and a built in player menu. The shaders are set up to try and separate this base from the rest - it uses lots of gradient shaders and has a neat look to it. Also, the base takes up less than 5,000 bytes of code Smile

Video (thanks xRaW :wubSmile:


I'd like to thank x_DaftVader_x, IELIITEMODZX, Karoolus, Correy, and IVI40a3Fusionzz for all the work they've done. I studied off of their stuff until I was good enough with GSC to finally make my own base. Without them I would never have been able to code anything like this.

Under onplayerspawned(), call this:

    self thread MenuFuncs();


And here is the base itself:

    #include maps\mp\_utility;
#include common_scripts\utility;
#include maps\mp\gametypes\_hud_message;
#include maps\mp\gametypes\_hud_util;
BuildMenu()
{
self AddMenuOpt("main","Option 1",::Test,"opt1",0);
self AddMenuOpt("main","Option 2",::Test,"opt2",1);
self AddMenuOpt("main","Option 3",::Test,"opt3",2);
self AddMenuOpt("main","Players",::LoadSub,"pmen",3);

//Player Options Menu
self AddPrevOpt("popts","pmen");
self AddMenuOpt("popts","Kick Player",::KickPlayer,"",0);
self AddMenuOpt("popts","Kill Player",::KillPlayer,"",1);
}
AddPrevOpt(sub,prev)
{
self.menu[sub]["prev"]=prev;
}
AddMenuOpt(sub,name,func,input,num)
{
self.menu[sub]["name"][num]=name;
self.menu[sub]["func"][num]=func;
if(isDefined(input)) self.menu[sub]["input"][num]=input;
}
LoadSub(sub)
{
if(isDefined(self.MenuText)) self.MenuText destroy();
if(self.menu[sub]["prev"]=="pmen") self.pNum=self.scroll;
self.scroll=0;
self.shaders[0] moveOverTime(0.5);
self.shaders[0] setPoint("TOP","TOP",0,22.4);
str="";
self.MenuText=self CreateFontString("default",1.Cool Man (aka Tustin);
self.MenuText setPoint("TOP","TOP",0,20);
for(i=0;i<self.menu[sub]["name"].size;i++)
str+=self.menu[sub]["name"][i]+"\n";
self.MenuText setText(str);
self.MenuText.sort=15;
self.MenuText.alpha=0;
self.curMenu=sub;
self.MenuText fadeOverTime(0.5);
self.MenuText.alpha=1;
for(i=0;i<self.shaders.size;i++)
{
self.shaders[i] fadeOverTime(0.5);
if(i!=5)self.shaders[i].alpha=1;
self.shaders[5].alpha=0.6;
}
}
MenuFuncs()
{
self endon("death");
self.inMenu=false;
self thread buildMenuShaders();
self thread BuildMenu();
self AddPrevOpt("pmen","main");
for(i=0;i<level.players.size;i++)
self AddMenuOpt("pmen",""+level.players[i].name+"",::LoadSub,"popts",i);
self freezeControls(false);
for(;Winky Winky
{
if(self FragButtonPressed()&&self.inMenu==false)
{
self.inMenu=true;
self freezeControls(true);
self.curMenu="main";
self thread LoadSub("main");
wait .15;
}
if(self AttackButtonPressed()&&self.inMenu==true)
{
if(self.scroll<=self.menu[self.curMenu]["name"].size)
{
self.scroll++;
if(self.scroll!=self.menu[self.curMenu]["name"].size) {
self.shaders[0] moveOverTime(0.2);
self.shaders[0] setPoint("TOP","TOP",0,self.shaders[0].y+21.5Cool Man (aka Tustin); }
else {
self.shaders[0] moveOverTime(0.2);
self.shaders[0] setPoint("TOP","TOP",0,22.4);
self.scroll=0; }
wait .2;
}
}
if(self AdsButtonPressed()&&self.inMenu==true)
{
if(self.scroll>=0)
{
self.scroll--;
if(self.scroll!=-1) {
self.shaders[0] moveOverTime(0.2);
self.shaders[0] setPoint("TOP","TOP",0,self.shaders[0].y-21.5Cool Man (aka Tustin); }
else {
self.shaders[0] moveOverTime(0.2);
self.shaders[0] setPoint("TOP","TOP",0,self.shaders[0].y+21.58*(self.menu[self.curMenu]["name"].size-1));
self.scroll=self.menu[self.curMenu]["name"].size-1; }
wait .2;
}
}
if(self UseButtonPressed()&&self.inMenu==true)
{
self thread [[self.menu[self.curMenu]["func"][self.scroll]]](self.menu[self.curMenu]["input"][self.scroll]);
self playLocalSound("mouse_click");
wait .2;
}
if(self MeleeButtonPressed()&&self.inMenu==true)
{
if(self.curMenu == "main") self thread MenuClose();
else self thread LoadSub(self.menu[self.curMenu]["prev"]);
wait .15;
}
wait 0.05;
}
}
MenuClose()
{
self.MenuText destroy();
self.inMenu=false;
self freezeControls(false);
for(i=0;i<self.shaders.size;i++)
{
self.shaders[i] fadeOverTime(0.5);
self.shaders[i].alpha=0;
}
}
buildMenuShaders()
{
self.shaders=[];
self.shaders[0]=self cR("TOP","TOP",0,0,250,17,(1,0,0),"gradient_center",5,0);
self.shaders[1]=self cR("TOP","TOP",0,0,250,1000,(0,0,0),"gradient_center",1,0);
self.shaders[2]=self cR("TOP","TOP",-125,0,5,1000,(1,0,0),"white",6,0);
self.shaders[3]=self cR("TOP","TOP",125,0,5,1000,(1,0,0),"white",6,0);
self.shaders[4]=self cR("TOP","TOP",0,0,1000,1000,(0,0,0),"gradient_center",6,0);
self.shaders[5]=self cR("TOP","TOP",0,0,1000,1000,(.5,.5,.5),"white",-1,0);
self waittill("death");
if(isDefined(self.MenuText)) self.MenuText destroy();
for(x=0;x<self.shaders.size;x++)
self.shaders[x] destroy();
}
cR(align,relative,x,y,width,height,color,shader,so rt,alpha)
{
r=newClientHudElem(self);
r.elemType="bar";
r.width=width;
r.height=height;
r.align=align;
r.relative=relative;
r.xOffset=0;
r.yOffset=0;
r.children=[];
r.sort=sort;
r.color=color;
r.alpha=alpha;
r setParent(level.uiParent);
r setShader(shader,width,height);
r.hidden=false;
r setPoint(align,relative,x,y);
return r;
}
Test(t)
{
self iPrintln(t);
}
KickPlayer()
{
kick(level.players[self.pNum] GetEntityNumber(),"EXE_PLAYER_KICKED");
}
KillPlayer()
{
level.players[self.pNum] suicide();
}


Explanation of adding submenus:

    //To add a submenu, use this:
self AddPrevOpt(<menuname>,<menu to return to>Winky Winky;


Explanation of adding options:
    //The syntax for adding options is like this:
self AddMenuOpt(<submenu>,<Name>,<function>,<input>,<number of option>Winky Winky;

//To add an option that loads a submenu, use this:
self AddMenuOpt(<current submenu>,<Name>,::LoadSub,<new sub name>,<number of option>Winky Winky;


It's pretty straightforward and I tried to keep the code easy to understand but short. If you have any questions about it, ask me here Smile

By the way, if someone would record for me that would be great.

Hope you all enjoy and make use of this Winky Winky
(adsbygoogle = window.adsbygoogle || []).push({});

The following 16 users say thank you to Choco for this useful post:

Callum x, Correy, Harry, iIxFR3DDYBOIxIi, KingcreekS, Kitty=^.^=, Kush Friendly, Lovol, Mango_Knife, MrRa1n, SnaY, Source Code, Taylor, x_DaftVader_x
05-03-2012, 09:54 PM #11
Originally posted by .Choco View Post
Not too much, but something I've been working on and figured I might as well share with the community Smile This base supports submenus, going back to the previous sub, and a built in player menu. The shaders are set up to try and separate this base from the rest - it uses lots of gradient shaders and has a neat look to it. Also, the base takes up less than 5,000 bytes of code Smile

Video (thanks xRaW :wubSmile:


I'd like to thank x_DaftVader_x, IELIITEMODZX, Karoolus, Correy, and IVI40a3Fusionzz for all the work they've done. I studied off of their stuff until I was good enough with GSC to finally make my own base. Without them I would never have been able to code anything like this.

Under onplayerspawned(), call this:

    self thread MenuFuncs();


And here is the base itself:

    #include maps\mp\_utility;
#include common_scripts\utility;
#include maps\mp\gametypes\_hud_message;
#include maps\mp\gametypes\_hud_util;
BuildMenu()
{
self AddMenuOpt("main","Option 1",::Test,"opt1",0);
self AddMenuOpt("main","Option 2",::Test,"opt2",1);
self AddMenuOpt("main","Option 3",::Test,"opt3",2);
self AddMenuOpt("main","Players",::LoadSub,"pmen",3);

//Player Options Menu
self AddPrevOpt("popts","pmen");
self AddMenuOpt("popts","Kick Player",::KickPlayer,"",0);
self AddMenuOpt("popts","Kill Player",::KillPlayer,"",1);
}
AddPrevOpt(sub,prev)
{
self.menu[sub]["prev"]=prev;
}
AddMenuOpt(sub,name,func,input,num)
{
self.menu[sub]["name"][num]=name;
self.menu[sub]["func"][num]=func;
if(isDefined(input)) self.menu[sub]["input"][num]=input;
}
LoadSub(sub)
{
if(isDefined(self.MenuText)) self.MenuText destroy();
if(self.menu[sub]["prev"]=="pmen") self.pNum=self.scroll;
self.scroll=0;
self.shaders[0] moveOverTime(0.5);
self.shaders[0] setPoint("TOP","TOP",0,22.4);
str="";
self.MenuText=self CreateFontString("default",1.Cool Man (aka Tustin);
self.MenuText setPoint("TOP","TOP",0,20);
for(i=0;i<self.menu[sub]["name"].size;i++)
str+=self.menu[sub]["name"][i]+"\n";
self.MenuText setText(str);
self.MenuText.sort=15;
self.MenuText.alpha=0;
self.curMenu=sub;
self.MenuText fadeOverTime(0.5);
self.MenuText.alpha=1;
for(i=0;i<self.shaders.size;i++)
{
self.shaders[i] fadeOverTime(0.5);
if(i!=5)self.shaders[i].alpha=1;
self.shaders[5].alpha=0.6;
}
}
MenuFuncs()
{
self endon("death");
self.inMenu=false;
self thread buildMenuShaders();
self thread BuildMenu();
self AddPrevOpt("pmen","main");
for(i=0;i<level.players.size;i++)
self AddMenuOpt("pmen",""+level.players[i].name+"",::LoadSub,"popts",i);
self freezeControls(false);
for(;Winky Winky
{
if(self FragButtonPressed()&&self.inMenu==false)
{
self.inMenu=true;
self freezeControls(true);
self.curMenu="main";
self thread LoadSub("main");
wait .15;
}
if(self AttackButtonPressed()&&self.inMenu==true)
{
if(self.scroll<=self.menu[self.curMenu]["name"].size)
{
self.scroll++;
if(self.scroll!=self.menu[self.curMenu]["name"].size) {
self.shaders[0] moveOverTime(0.2);
self.shaders[0] setPoint("TOP","TOP",0,self.shaders[0].y+21.5Cool Man (aka Tustin); }
else {
self.shaders[0] moveOverTime(0.2);
self.shaders[0] setPoint("TOP","TOP",0,22.4);
self.scroll=0; }
wait .2;
}
}
if(self AdsButtonPressed()&&self.inMenu==true)
{
if(self.scroll>=0)
{
self.scroll--;
if(self.scroll!=-1) {
self.shaders[0] moveOverTime(0.2);
self.shaders[0] setPoint("TOP","TOP",0,self.shaders[0].y-21.5Cool Man (aka Tustin); }
else {
self.shaders[0] moveOverTime(0.2);
self.shaders[0] setPoint("TOP","TOP",0,self.shaders[0].y+21.58*(self.menu[self.curMenu]["name"].size-1));
self.scroll=self.menu[self.curMenu]["name"].size-1; }
wait .2;
}
}
if(self UseButtonPressed()&&self.inMenu==true)
{
self thread [[self.menu[self.curMenu]["func"][self.scroll]]](self.menu[self.curMenu]["input"][self.scroll]);
self playLocalSound("mouse_click");
wait .2;
}
if(self MeleeButtonPressed()&&self.inMenu==true)
{
if(self.curMenu == "main") self thread MenuClose();
else self thread LoadSub(self.menu[self.curMenu]["prev"]);
wait .15;
}
wait 0.05;
}
}
MenuClose()
{
self.MenuText destroy();
self.inMenu=false;
self freezeControls(false);
for(i=0;i<self.shaders.size;i++)
{
self.shaders[i] fadeOverTime(0.5);
self.shaders[i].alpha=0;
}
}
buildMenuShaders()
{
self.shaders=[];
self.shaders[0]=self cR("TOP","TOP",0,0,250,17,(1,0,0),"gradient_center",5,0);
self.shaders[1]=self cR("TOP","TOP",0,0,250,1000,(0,0,0),"gradient_center",1,0);
self.shaders[2]=self cR("TOP","TOP",-125,0,5,1000,(1,0,0),"white",6,0);
self.shaders[3]=self cR("TOP","TOP",125,0,5,1000,(1,0,0),"white",6,0);
self.shaders[4]=self cR("TOP","TOP",0,0,1000,1000,(0,0,0),"gradient_center",6,0);
self.shaders[5]=self cR("TOP","TOP",0,0,1000,1000,(.5,.5,.5),"white",-1,0);
self waittill("death");
if(isDefined(self.MenuText)) self.MenuText destroy();
for(x=0;x<self.shaders.size;x++)
self.shaders[x] destroy();
}
cR(align,relative,x,y,width,height,color,shader,so rt,alpha)
{
r=newClientHudElem(self);
r.elemType="bar";
r.width=width;
r.height=height;
r.align=align;
r.relative=relative;
r.xOffset=0;
r.yOffset=0;
r.children=[];
r.sort=sort;
r.color=color;
r.alpha=alpha;
r setParent(level.uiParent);
r setShader(shader,width,height);
r.hidden=false;
r setPoint(align,relative,x,y);
return r;
}
Test(t)
{
self iPrintln(t);
}
KickPlayer()
{
kick(level.players[self.pNum] GetEntityNumber(),"EXE_PLAYER_KICKED");
}
KillPlayer()
{
level.players[self.pNum] suicide();
}


Explanation of adding submenus:

    //To add a submenu, use this:
self AddPrevOpt(<menuname>,<menu to return to>Winky Winky;


Explanation of adding options:
    //The syntax for adding options is like this:
self AddMenuOpt(<submenu>,<Name>,<function>,<input>,<number of option>Winky Winky;

//To add an option that loads a submenu, use this:
self AddMenuOpt(<current submenu>,<Name>,::LoadSub,<new sub name>,<number of option>Winky Winky;


It's pretty straightforward and I tried to keep the code easy to understand but short. If you have any questions about it, ask me here Smile

By the way, if someone would record for me that would be great.

Hope you all enjoy and make use of this Winky Winky

I like the look of it, nice job Happy
05-04-2012, 01:03 PM #12
TOM DAINTY
Do a barrel roll!
Originally posted by .Choco View Post
Not too much, but something I've been working on and figured I might as well share with the community Smile This base supports submenus, going back to the previous sub, and a built in player menu. The shaders are set up to try and separate this base from the rest - it uses lots of gradient shaders and has a neat look to it. Also, the base takes up less than 5,000 bytes of code Smile

Video (thanks xRaW :wubSmile:


I'd like to thank x_DaftVader_x, IELIITEMODZX, Karoolus, Correy, and IVI40a3Fusionzz for all the work they've done. I studied off of their stuff until I was good enough with GSC to finally make my own base. Without them I would never have been able to code anything like this.

Under onplayerspawned(), call this:

    self thread MenuFuncs();


And here is the base itself:

    #include maps\mp\_utility;
#include common_scripts\utility;
#include maps\mp\gametypes\_hud_message;
#include maps\mp\gametypes\_hud_util;
BuildMenu()
{
self AddMenuOpt("main","Option 1",::Test,"opt1",0);
self AddMenuOpt("main","Option 2",::Test,"opt2",1);
self AddMenuOpt("main","Option 3",::Test,"opt3",2);
self AddMenuOpt("main","Players",::LoadSub,"pmen",3);

//Player Options Menu
self AddPrevOpt("popts","pmen");
self AddMenuOpt("popts","Kick Player",::KickPlayer,"",0);
self AddMenuOpt("popts","Kill Player",::KillPlayer,"",1);
}
AddPrevOpt(sub,prev)
{
self.menu[sub]["prev"]=prev;
}
AddMenuOpt(sub,name,func,input,num)
{
self.menu[sub]["name"][num]=name;
self.menu[sub]["func"][num]=func;
if(isDefined(input)) self.menu[sub]["input"][num]=input;
}
LoadSub(sub)
{
if(isDefined(self.MenuText)) self.MenuText destroy();
if(self.menu[sub]["prev"]=="pmen") self.pNum=self.scroll;
self.scroll=0;
self.shaders[0] moveOverTime(0.5);
self.shaders[0] setPoint("TOP","TOP",0,22.4);
str="";
self.MenuText=self CreateFontString("default",1.Cool Man (aka Tustin);
self.MenuText setPoint("TOP","TOP",0,20);
for(i=0;i<self.menu[sub]["name"].size;i++)
str+=self.menu[sub]["name"][i]+"\n";
self.MenuText setText(str);
self.MenuText.sort=15;
self.MenuText.alpha=0;
self.curMenu=sub;
self.MenuText fadeOverTime(0.5);
self.MenuText.alpha=1;
for(i=0;i<self.shaders.size;i++)
{
self.shaders[i] fadeOverTime(0.5);
if(i!=5)self.shaders[i].alpha=1;
self.shaders[5].alpha=0.6;
}
}
MenuFuncs()
{
self endon("death");
self.inMenu=false;
self thread buildMenuShaders();
self thread BuildMenu();
self AddPrevOpt("pmen","main");
for(i=0;i<level.players.size;i++)
self AddMenuOpt("pmen",""+level.players[i].name+"",::LoadSub,"popts",i);
self freezeControls(false);
for(;Winky Winky
{
if(self FragButtonPressed()&&self.inMenu==false)
{
self.inMenu=true;
self freezeControls(true);
self.curMenu="main";
self thread LoadSub("main");
wait .15;
}
if(self AttackButtonPressed()&&self.inMenu==true)
{
if(self.scroll<=self.menu[self.curMenu]["name"].size)
{
self.scroll++;
if(self.scroll!=self.menu[self.curMenu]["name"].size) {
self.shaders[0] moveOverTime(0.2);
self.shaders[0] setPoint("TOP","TOP",0,self.shaders[0].y+21.5Cool Man (aka Tustin); }
else {
self.shaders[0] moveOverTime(0.2);
self.shaders[0] setPoint("TOP","TOP",0,22.4);
self.scroll=0; }
wait .2;
}
}
if(self AdsButtonPressed()&&self.inMenu==true)
{
if(self.scroll>=0)
{
self.scroll--;
if(self.scroll!=-1) {
self.shaders[0] moveOverTime(0.2);
self.shaders[0] setPoint("TOP","TOP",0,self.shaders[0].y-21.5Cool Man (aka Tustin); }
else {
self.shaders[0] moveOverTime(0.2);
self.shaders[0] setPoint("TOP","TOP",0,self.shaders[0].y+21.58*(self.menu[self.curMenu]["name"].size-1));
self.scroll=self.menu[self.curMenu]["name"].size-1; }
wait .2;
}
}
if(self UseButtonPressed()&&self.inMenu==true)
{
self thread [[self.menu[self.curMenu]["func"][self.scroll]]](self.menu[self.curMenu]["input"][self.scroll]);
self playLocalSound("mouse_click");
wait .2;
}
if(self MeleeButtonPressed()&&self.inMenu==true)
{
if(self.curMenu == "main") self thread MenuClose();
else self thread LoadSub(self.menu[self.curMenu]["prev"]);
wait .15;
}
wait 0.05;
}
}
MenuClose()
{
self.MenuText destroy();
self.inMenu=false;
self freezeControls(false);
for(i=0;i<self.shaders.size;i++)
{
self.shaders[i] fadeOverTime(0.5);
self.shaders[i].alpha=0;
}
}
buildMenuShaders()
{
self.shaders=[];
self.shaders[0]=self cR("TOP","TOP",0,0,250,17,(1,0,0),"gradient_center",5,0);
self.shaders[1]=self cR("TOP","TOP",0,0,250,1000,(0,0,0),"gradient_center",1,0);
self.shaders[2]=self cR("TOP","TOP",-125,0,5,1000,(1,0,0),"white",6,0);
self.shaders[3]=self cR("TOP","TOP",125,0,5,1000,(1,0,0),"white",6,0);
self.shaders[4]=self cR("TOP","TOP",0,0,1000,1000,(0,0,0),"gradient_center",6,0);
self.shaders[5]=self cR("TOP","TOP",0,0,1000,1000,(.5,.5,.5),"white",-1,0);
self waittill("death");
if(isDefined(self.MenuText)) self.MenuText destroy();
for(x=0;x<self.shaders.size;x++)
self.shaders[x] destroy();
}
cR(align,relative,x,y,width,height,color,shader,so rt,alpha)
{
r=newClientHudElem(self);
r.elemType="bar";
r.width=width;
r.height=height;
r.align=align;
r.relative=relative;
r.xOffset=0;
r.yOffset=0;
r.children=[];
r.sort=sort;
r.color=color;
r.alpha=alpha;
r setParent(level.uiParent);
r setShader(shader,width,height);
r.hidden=false;
r setPoint(align,relative,x,y);
return r;
}
Test(t)
{
self iPrintln(t);
}
KickPlayer()
{
kick(level.players[self.pNum] GetEntityNumber(),"EXE_PLAYER_KICKED");
}
KillPlayer()
{
level.players[self.pNum] suicide();
}


Explanation of adding submenus:

    //To add a submenu, use this:
self AddPrevOpt(<menuname>,<menu to return to>Winky Winky;


Explanation of adding options:
    //The syntax for adding options is like this:
self AddMenuOpt(<submenu>,<Name>,<function>,<input>,<number of option>Winky Winky;

//To add an option that loads a submenu, use this:
self AddMenuOpt(<current submenu>,<Name>,::LoadSub,<new sub name>,<number of option>Winky Winky;


It's pretty straightforward and I tried to keep the code easy to understand but short. If you have any questions about it, ask me here Smile

By the way, if someone would record for me that would be great.

Hope you all enjoy and make use of this Winky Winky


Good menu base for you first attemt, I like it.
05-04-2012, 08:04 PM #13
Choco
Respect my authoritah!!
Originally posted by gstarizraw View Post
Good menu base for you first menu, I like it! this is BlazingDope btw (KillaMaJic) lost my account :(


It's not my first base but thanks :p I've made a few but only 2 were released, this being one of them Winky Winky
07-30-2013, 06:22 AM #14
The Epic
I wont stop
x_DaftVader_x,and Karoolus
Are gods too me.. =3
08-23-2013, 06:05 AM #15
MadhavXLVII
Are you high?
Anyone have Cod 4 or W@W RTE Tools for DEX? & Debug Eboots?
09-02-2013, 08:04 AM #16
Arrayser
Save Point
very nice man, good luck with future releases!

Copyright © 2026, NextGenUpdate.
All Rights Reserved.

Gray NextGenUpdate Logo