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
Last edited by Choco ; 05-03-2012 at 02:29 AM.

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, 01:57 AM #2
Txrgetz
PS3 4.80 Rebug DEX ♥
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

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,sort,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


Ill record it if you send me the patch_mp.ff as im pants when it comes to coding Upside Down Happy
05-03-2012, 02:04 AM #3
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

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,sort,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
why dose it look like mine edited :/ lol, still good job on your 1st menu base. Winky Winky
05-03-2012, 02:04 AM #4
Choco
Respect my authoritah!!
Originally posted by TaRGeTz View Post
Ill record it if you send me the patch_mp.ff as im pants when it comes to coding Upside Down Happy


You must login or register to view this content.

Rename to patch_mp.ff. Not sure of that will load, I have only tested on PC so far but it should be good :y:

Originally posted by IELIITEMODZX View Post
why dose it look like mine edited :/ lol, still good job on your 1st menu base. Winky Winky


Ehem, second base :rolleyes: And I took queues from a large amount of other people's bases, but ultimately I wrote this by myself. I still am a huge fan of your base though :wub:
05-03-2012, 02:07 AM #5
Txrgetz
PS3 4.80 Rebug DEX ♥
Originally posted by .Choco View Post
You must login or register to view this content.

Rename to patch_mp.ff. Not sure of that will load, I have only tested on PC so far but it should be good :y:



Ehem, second base :rolleyes: And I took queues from a large amount of other people's bases, but ultimately I wrote this by myself. I still am a huge fan of your base though :wub:


Ill try tomorrow as its 3am here :P
05-03-2012, 02:08 AM #6
Originally posted by .Choco View Post
You must login or register to view this content.

Rename to patch_mp.ff. Not sure of that will load, I have only tested on PC so far but it should be good :y:



Ehem, second base :rolleyes: And I took queues from a large amount of other people's bases, but ultimately I wrote this by myself. I still am a huge fan of your base though :wub:
lol second ? and my base is so bad lol, that was my 1st ever release to this website lol.
05-03-2012, 02:18 AM #7
Choco
Respect my authoritah!!
Originally posted by IELIITEMODZX View Post
lol second ? and my base is so bad lol, that was my 1st ever release to this website lol.


Looking at your base now, I'm like =Z... but when I first saw it I was like :wtf: It looked so advanced to me, now I can see how much unnecessary code you had :p But, I still like your base and I used it in all my released patches. It was stable too :y:


Also, post updated with video :y:
Last edited by Choco ; 05-03-2012 at 02:29 AM.
05-03-2012, 05:45 PM #8
Originally posted by .Choco View Post
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.


Don't need the menu base but Thanked for that ^ :y:
05-03-2012, 06:32 PM #9
IVI40A3Fusionz
Former Gaming Squad Member
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


LOL isn't this the one you sent me like a month or a few weeks ago ^^?

---------- Post added at 07:32 PM ---------- Previous post was at 07:28 PM ----------

Originally posted by IELIITEMODZX View Post
lol second ? and my base is so bad lol, that was my 1st ever release to this website lol.


Pfffft your coding is no match for mine :fyea:
05-03-2012, 07:19 PM #10
Taylor
Former Black Knight.
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


Mike's Quality Sucks Dick......

Copyright © 2024, NextGenUpdate.
All Rights Reserved.

Gray NextGenUpdate Logo