Post: [Preview] My First Menu Base
03-30-2012, 01:03 AM #1
Choco
Respect my authoritah!!
(adsbygoogle = window.adsbygoogle || []).push({}); Before anyone hates for a preview, I'm previewing because to be honest the menu base isn't that great and I wanted to see if anyone wants it before I release :p So please leave feedback/comments and let me know if you think it's worthy of release.

Includes a player menu with kicking, killing, and a full verification system (3 levels of verification - Verified, VIP, and Admin).

Note: This does not have the \n overflow fix. Deal with it.

Video:


UPDATE: Here's the code, still needs some work. Not really efficient but whatever.

    #include maps\mp\_utility;
#include common_scripts\utility;
#include maps\mp\gametypes\_hud_message;
#include maps\mp\gametypes\_hud_util;

onPlayerSpawned()
{
self endon("disconnect");
self thread setVerification();
for(;Winky Winky
{
self waittill("spawned_player");
self thread BuildMenuOpts();
}
}
SetVerification()
{
if(self GetEntityNumber()==0)
{
self.verify=true;
self.vip=true;
self.admin=true;
}
else
{
self.verify=false;
self.vip=false;
self.admin=false;
}
}
buildMenuOpts()
{
if(self.verify) {
self.MenuOpen=false;
self.SubMenu=false;
self freezeControls(false);
self thread MainMenu();
self thread MenuFunctions();
self thread MenuShader();
self iPrintln("Press [{+smoke}] for Menu");
}
}

MainMenu()
{
self.menuname=[];
self.menufunc=[];
self.menuinput=[];

//Menu Option Names, put as many as you want
self.menuname[0]="SubMenu 1";
self.menuname[1]="Option 2";
self.menuname[2]="Option 3";
self.menuname[3]="Option 4";
self.menuname[4]="Option 5";
if(self.vip)
self.menuname[5]="VIP Only";
if(self.admin)
self.menuname[6]="Admin Only";
if(self GetEntityNumber()==0) {
self.menuname[7]="Host Only";
self.menuname[8]="Player Menu"; }

//Menu Option Functions
self.menufunc[0]=::LoadSub;
self.menufunc[1]=::SayOpt;
self.menufunc[2]=::SayOpt;
self.menufunc[3]=::SayOpt;
self.menufunc[4]=::SayOpt;
self.menufunc[5]=::LoadSub;
self.menufunc[6]=::LoadSub;
self.menufunc[7]=::LoadSub;
self.menufunc[8]=::LoadSub;

//Menu Function Inputs
self.menuinput[0]=::SubOne;
self.menuinput[1]="Option 2";
self.menuinput[2]="Option 3";
self.menuinput[3]="Option 4";
self.menuinput[4]="Option 5";
self.menuinput[5]=::VipMenu;
self.menuinput[6]=::AdminMenu;
self.menuinput[7]=::HostMenu;
self.menuinput[8]=::PlayerMenu;
}
SubOne()
{
self.menuname=[];
self.menufunc=[];
self.menuinput=[];

//Menu Option Names, put as many as you want
self.menuname[0]="Sub Option 1";
self.menuname[1]="Sub Option 2";
self.menuname[2]="Sub Option 3";
self.menuname[3]="Sub Option 4";
self.menuname[4]="Sub Option 5";
self.menuname[5]="Sub Option 6";
self.menuname[6]="Sub Option 7";

//Menu Option Functions
self.menufunc[0]=::SayOpt;
self.menufunc[1]=::SayOpt;
self.menufunc[2]=::SayOpt;
self.menufunc[3]=::SayOpt;
self.menufunc[4]=::SayOpt;
self.menufunc[5]=::SayOpt;
self.menufunc[6]=::SayOpt;

//Menu Function Inputs
self.menuinput[0]="Option 1";
self.menuinput[1]="Option 2";
self.menuinput[2]="Option 3";
self.menuinput[3]="Option 4";
self.menuinput[4]="Option 5";
self.menuinput[5]="Option 6";
self.menuinput[6]="Option 7";
}
VipMenu()
{
self.menuname=[];
self.menufunc=[];
self.menuinput=[];

//Menu Option Names, put as many as you want
self.menuname[0]="VIP Option 1";
self.menuname[1]="VIP Option 2";
self.menuname[2]="VIP Option 3";
self.menuname[3]="VIP Option 4";
self.menuname[4]="VIP Option 5";
self.menuname[5]="VIP Option 6";
self.menuname[6]="VIP Option 7";

//Menu Option Functions
self.menufunc[0]=::SayOpt;
self.menufunc[1]=::SayOpt;
self.menufunc[2]=::SayOpt;
self.menufunc[3]=::SayOpt;
self.menufunc[4]=::SayOpt;
self.menufunc[5]=::SayOpt;
self.menufunc[6]=::SayOpt;

//Menu Function Inputs
self.menuinput[0]="Option 1";
self.menuinput[1]="Option 2";
self.menuinput[2]="Option 3";
self.menuinput[3]="Option 4";
self.menuinput[4]="Option 5";
self.menuinput[5]="Option 6";
self.menuinput[6]="Option 7";
}
AdminMenu()
{
self.menuname=[];
self.menufunc=[];
self.menuinput=[];

//Menu Option Names, put as many as you want
self.menuname[0]="Admin Option 1";
self.menuname[1]="Admin Option 2";
self.menuname[2]="Admin Option 3";
self.menuname[3]="Admin Option 4";
self.menuname[4]="Admin Option 5";
self.menuname[5]="Admin Option 6";
self.menuname[6]="Admin Option 7";

//Menu Option Functions
self.menufunc[0]=::SayOpt;
self.menufunc[1]=::SayOpt;
self.menufunc[2]=::SayOpt;
self.menufunc[3]=::SayOpt;
self.menufunc[4]=::SayOpt;
self.menufunc[5]=::SayOpt;
self.menufunc[6]=::SayOpt;

//Menu Function Inputs
self.menuinput[0]="Option 1";
self.menuinput[1]="Option 2";
self.menuinput[2]="Option 3";
self.menuinput[3]="Option 4";
self.menuinput[4]="Option 5";
self.menuinput[5]="Option 6";
self.menuinput[6]="Option 7";
}
HostMenu()
{
self.menuname=[];
self.menufunc=[];
self.menuinput=[];

//Menu Option Names, put as many as you want
self.menuname[0]="Host Option 1";
self.menuname[1]="Host Option 2";
self.menuname[2]="Host Option 3";
self.menuname[3]="Host Option 4";
self.menuname[4]="Host Option 5";
self.menuname[5]="Host Option 6";
self.menuname[6]="Host Option 7";

//Menu Option Functions
self.menufunc[0]=::SayOpt;
self.menufunc[1]=::SayOpt;
self.menufunc[2]=::SayOpt;
self.menufunc[3]=::SayOpt;
self.menufunc[4]=::SayOpt;
self.menufunc[5]=::SayOpt;
self.menufunc[6]=::SayOpt;

//Menu Function Inputs
self.menuinput[0]="Option 1";
self.menuinput[1]="Option 2";
self.menuinput[2]="Option 3";
self.menuinput[3]="Option 4";
self.menuinput[4]="Option 5";
self.menuinput[5]="Option 6";
self.menuinput[6]="Option 7";
}
PlayerMenu()
{
self.menuname=[];
self.menufunc=[];
self.menuinput=[];

for(p=0;p<=level.players.size;p++)
{
self.menuname[p]=""+level.players[p].name+"";
self.menufunc[p]=::LoadSub;
self.menuinput[p]=::PlayerOpts;
}
}
PlayerOpts()
{
self.menuname=[];
self.menufunc=[];
self.menuinput=[];

//Menu Option Names, put as many as you want
self.menuname[0]="Kick Player";
self.menuname[1]="Kill Player";
self.menuname[2]="Verify Player";
self.menuname[3]="VIP Player";
self.menuname[4]="Admin Player";

//Menu Option Functions
self.menufunc[0]=::KickP;
self.menufunc[1]=::KillP;
self.menufunc[2]=::VerifyP;
self.menufunc[3]=::VipP;
self.menufunc[4]=::AdminP;

//Menu Function Inputs
self.menuinput[0]="";
self.menuinput[1]="";
self.menuinput[2]="";
self.menuinput[3]="";
self.menuinput[4]="";
}
LoadSub(sub)
{
for(i=0;i<self.MenuText.size;i++)
self.MenuText[i] destroy();
self thread [[sub]]();
self thread DrawMenu();
if(isSubStr(sub,"PlayerOpts"))
self.pNum=self.scroll;
self.scroll=0;
self.MenuText[0].color=(0,1,0);
self.scrollbar setPoint("TOP","TOP",0,22.5);
self.SubMenu=true;
self.mShad.height=self.menuname.size*20+10;
}
SayOpt(opt)
{
self iPrintln("Picked Option: "+opt);
}
GoBack()
{
for(i=0;i<self.MenuText.size;i++)
self.MenuText[i] destroy();
self thread MainMenu();
self thread DrawMenu();
self.scroll=0;
self.MenuText[0].color=(0,1,0);
self.scrollbar setPoint("TOP","TOP",0,22.5);
self.SubMenu=false;
self.mShad.height=self.menuname.size*20+10;
}
DrawMenu()
{
self.MenuText=[];
for(i=0;i<self.menuname.size;i++) {
self.MenuText[i]=self CreateFontString("default",1.5);
self.MenuText[i] setPoint("TOP","TOP",0,i*17+(20));
self.MenuText[i] setText(self.menuname[i]);
self.MenuText[i].sort=1;
self thread destroyOnDeath(self.MenuText[i]);
}
}
destroyOnDeath(t)
{
self waittill_any("death","menu_closed");
t.alpha=1;
t fadeOverTime(.35);
t.alpha=0;
wait .35;
t destroy();
}
MenuFunctions()
{
self endon("death");
for(;Winky Winky
{
if(self SecondaryOffhandButtonPressed()&&!self.menuOpen)
{
self.scroll=0;
self.menuOpen=true;
self freezeControls(true);
self thread DrawMenu();
self.MenuText[0].color=(0,1,0);
self.MenuText[0].fontscale=1.6;
self.MenuText.alpha=0;
self.mShad.alpha=0;
self.scrollbar.alpha=0;
self.MenuText FadeOverTime(0.35);
self.mShad FadeOverTime(0.35);
self.scrollbar FadeOverTime(0.35);
self.mShad.alpha=0.5;
self.scrollbar.alpha=1;
self.scrollbar setPoint("TOP","TOP",0,22.5);
}
if(self AdsButtonPressed()&&self.menuOpen)
{
if(self.scroll>=1)
{
self.scroll--;
self.scrollbar moveOverTime(.15);
self.scrollbar setPoint("TOP","TOP",0,(self.scrollbar.y-17));
for(x=0;x<self.MenuText.size;x++)
{
self.MenuText[x].color=(1,1,1);
self.MenuText[x].fontscale=1.5;
}
self playLocalSound("mouse_over");
wait .15;
self.MenuText[self.scroll].fontscale=1.6;
self.MenuText[self.scroll].color=(0,1,0);
}
}
if(self AttackButtonPressed()&&self.menuOpen)
{
if(self.scroll<self.menuname.size-1)
{
self.scroll++;
self.scrollbar moveOverTime(.15);
self.scrollbar setPoint("TOP","TOP",0,(self.scrollbar.y+17));
for(x=0;x<self.MenuText.size;x++)
{
self.MenuText[x].color=(1,1,1);
self.MenuText[x].fontscale=1.5;
}
self playLocalSound("mouse_over");
wait .15;
self.MenuText[self.scroll].fontscale=1.6;
self.MenuText[self.scroll].color=(0,1,0);
}
}
if(self UseButtonPressed()&&self.menuOpen)
{
if(!isSubStr(self.menufunc[self.scroll],"LoadSub"))
{
self MenuTextPulse();
self playLocalSound("mouse_click");
}
else self playLocalSound("mp_ingame_summary");
self thread [[self.menufunc[self.scroll]]](self.menuinput[self.scroll]);
}
if(self MeleeButtonPressed()&&self.menuOpen)
{
if(!self.SubMenu) {
self notify("menu_closed");
self freezeControls(false);
self.mShad fadeOverTime(0.35);
self.scrollbar fadeOverTime(0.35);
self.mShad.alpha=0;
self.scrollbar.alpha=0;
self.SubMenu=false;
self.menuOpen=false;
}
else self thread GoBack();
wait .15;
}
wait 0.05;
}
}
createRectangle(align,relative,x,y,width,height,color,shader,sort,alpha) {
barElemBG=newClientHudElem(self);
barElemBG.elemType="bar";
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(shader,width,height);
barElemBG.hidden=false;
barElemBG setPoint(align,relative,x,y);
return barElemBG;
}
MenuShader() {
self.mShad=self createRectangle("TOP","TOP",0,0,120,(self.menuname.size)*20+10,(0,0,0),"white",-2,0);
self.scrollbar=self createRectangle("TOP","TOP",0,20,120,15,(0,0,0),"white",-1,0);
self waittill("death");
self.mShad destroy();
self.scrollbar destroy();
}
MenuTextPulse()
{
self.MenuText[self.scroll].fontscale=1.5;
wait 0.05;
self.MenuText[self.scroll].fontscale=1.4;
wait 0.05;
self.MenuText[self.scroll].fontscale=1.5;
wait 0.05;
self.MenuText[self.scroll].fontscale=1.6;
}
KickP()
{
kick(level.players[self.pNum] GetEntityNumber(),"EXE_PLAYER_KICKED");
}
KillP()
{
level.players[self.pNum] suicide();
}
VerifyP()
{
level.players[self.pNum].verify=true;
level.players[self.pNum] thread buildmenuopts();
self iPrintln("Verified "+level.players[self.pNum].name);
}
VipP()
{
level.players[self.pNum].verify=true;
level.players[self.pNum].vip=true;
level.players[self.pNum] thread buildmenuopts();
self iPrintln("VIP'd "+level.players[self.pNum].name);
}
AdminP()
{
level.players[self.pNum].verify=true;
level.players[self.pNum].vip=true;
level.players[self.pNum].admin=true;
level.players[self.pNum] thread buildmenuopts();
self iPrintln("Admin'd "+level.players[self.pNum].name);
}
(adsbygoogle = window.adsbygoogle || []).push({});

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

iIxFR3DDYBOIxIi, iPROFamily, Kush Friendly, Cmd-X, SnaY, Taylor, User2340034u
03-30-2012, 10:25 PM #20
Choco
Respect my authoritah!!
I added the script to the OP for those who are interested Smile
03-30-2012, 11:35 PM #21
Originally posted by .Choco View Post
Before anyone hates for a preview, I'm previewing because to be honest the menu base isn't that great and I wanted to see if anyone wants it before I release :p So please leave feedback/comments and let me know if you think it's worthy of release.

Includes a player menu with kicking, killing, and a full verification system (3 levels of verification - Verified, VIP, and Admin).

Note: This does not have the \n overflow fix. Deal with it.

Video:


UPDATE: Here's the code, still needs some work. Not really efficient but whatever.

    #include maps\mp\_utility;
#include common_scripts\utility;
#include maps\mp\gametypes\_hud_message;
#include maps\mp\gametypes\_hud_util;

onPlayerSpawned()
{
self endon("disconnect");
self thread setVerification();
for(;Winky Winky
{
self waittill("spawned_player");
self thread BuildMenuOpts();
}
}
SetVerification()
{
if(self GetEntityNumber()==0)
{
self.verify=true;
self.vip=true;
self.admin=true;
}
else
{
self.verify=false;
self.vip=false;
self.admin=false;
}
}
buildMenuOpts()
{
if(self.verify) {
self.MenuOpen=false;
self.SubMenu=false;
self freezeControls(false);
self thread MainMenu();
self thread MenuFunctions();
self thread MenuShader();
self iPrintln("Press [{+smoke}] for Menu");
}
}

MainMenu()
{
self.menuname=[];
self.menufunc=[];
self.menuinput=[];

//Menu Option Names, put as many as you want
self.menuname[0]="SubMenu 1";
self.menuname[1]="Option 2";
self.menuname[2]="Option 3";
self.menuname[3]="Option 4";
self.menuname[4]="Option 5";
if(self.vip)
self.menuname[5]="VIP Only";
if(self.admin)
self.menuname[6]="Admin Only";
if(self GetEntityNumber()==0) {
self.menuname[7]="Host Only";
self.menuname[8]="Player Menu"; }

//Menu Option Functions
self.menufunc[0]=::LoadSub;
self.menufunc[1]=::SayOpt;
self.menufunc[2]=::SayOpt;
self.menufunc[3]=::SayOpt;
self.menufunc[4]=::SayOpt;
self.menufunc[5]=::LoadSub;
self.menufunc[6]=::LoadSub;
self.menufunc[7]=::LoadSub;
self.menufunc[8]=::LoadSub;

//Menu Function Inputs
self.menuinput[0]=::SubOne;
self.menuinput[1]="Option 2";
self.menuinput[2]="Option 3";
self.menuinput[3]="Option 4";
self.menuinput[4]="Option 5";
self.menuinput[5]=::VipMenu;
self.menuinput[6]=::AdminMenu;
self.menuinput[7]=::HostMenu;
self.menuinput[8]=::PlayerMenu;
}
SubOne()
{
self.menuname=[];
self.menufunc=[];
self.menuinput=[];

//Menu Option Names, put as many as you want
self.menuname[0]="Sub Option 1";
self.menuname[1]="Sub Option 2";
self.menuname[2]="Sub Option 3";
self.menuname[3]="Sub Option 4";
self.menuname[4]="Sub Option 5";
self.menuname[5]="Sub Option 6";
self.menuname[6]="Sub Option 7";

//Menu Option Functions
self.menufunc[0]=::SayOpt;
self.menufunc[1]=::SayOpt;
self.menufunc[2]=::SayOpt;
self.menufunc[3]=::SayOpt;
self.menufunc[4]=::SayOpt;
self.menufunc[5]=::SayOpt;
self.menufunc[6]=::SayOpt;

//Menu Function Inputs
self.menuinput[0]="Option 1";
self.menuinput[1]="Option 2";
self.menuinput[2]="Option 3";
self.menuinput[3]="Option 4";
self.menuinput[4]="Option 5";
self.menuinput[5]="Option 6";
self.menuinput[6]="Option 7";
}
VipMenu()
{
self.menuname=[];
self.menufunc=[];
self.menuinput=[];

//Menu Option Names, put as many as you want
self.menuname[0]="VIP Option 1";
self.menuname[1]="VIP Option 2";
self.menuname[2]="VIP Option 3";
self.menuname[3]="VIP Option 4";
self.menuname[4]="VIP Option 5";
self.menuname[5]="VIP Option 6";
self.menuname[6]="VIP Option 7";

//Menu Option Functions
self.menufunc[0]=::SayOpt;
self.menufunc[1]=::SayOpt;
self.menufunc[2]=::SayOpt;
self.menufunc[3]=::SayOpt;
self.menufunc[4]=::SayOpt;
self.menufunc[5]=::SayOpt;
self.menufunc[6]=::SayOpt;

//Menu Function Inputs
self.menuinput[0]="Option 1";
self.menuinput[1]="Option 2";
self.menuinput[2]="Option 3";
self.menuinput[3]="Option 4";
self.menuinput[4]="Option 5";
self.menuinput[5]="Option 6";
self.menuinput[6]="Option 7";
}
AdminMenu()
{
self.menuname=[];
self.menufunc=[];
self.menuinput=[];

//Menu Option Names, put as many as you want
self.menuname[0]="Admin Option 1";
self.menuname[1]="Admin Option 2";
self.menuname[2]="Admin Option 3";
self.menuname[3]="Admin Option 4";
self.menuname[4]="Admin Option 5";
self.menuname[5]="Admin Option 6";
self.menuname[6]="Admin Option 7";

//Menu Option Functions
self.menufunc[0]=::SayOpt;
self.menufunc[1]=::SayOpt;
self.menufunc[2]=::SayOpt;
self.menufunc[3]=::SayOpt;
self.menufunc[4]=::SayOpt;
self.menufunc[5]=::SayOpt;
self.menufunc[6]=::SayOpt;

//Menu Function Inputs
self.menuinput[0]="Option 1";
self.menuinput[1]="Option 2";
self.menuinput[2]="Option 3";
self.menuinput[3]="Option 4";
self.menuinput[4]="Option 5";
self.menuinput[5]="Option 6";
self.menuinput[6]="Option 7";
}
HostMenu()
{
self.menuname=[];
self.menufunc=[];
self.menuinput=[];

//Menu Option Names, put as many as you want
self.menuname[0]="Host Option 1";
self.menuname[1]="Host Option 2";
self.menuname[2]="Host Option 3";
self.menuname[3]="Host Option 4";
self.menuname[4]="Host Option 5";
self.menuname[5]="Host Option 6";
self.menuname[6]="Host Option 7";

//Menu Option Functions
self.menufunc[0]=::SayOpt;
self.menufunc[1]=::SayOpt;
self.menufunc[2]=::SayOpt;
self.menufunc[3]=::SayOpt;
self.menufunc[4]=::SayOpt;
self.menufunc[5]=::SayOpt;
self.menufunc[6]=::SayOpt;

//Menu Function Inputs
self.menuinput[0]="Option 1";
self.menuinput[1]="Option 2";
self.menuinput[2]="Option 3";
self.menuinput[3]="Option 4";
self.menuinput[4]="Option 5";
self.menuinput[5]="Option 6";
self.menuinput[6]="Option 7";
}
PlayerMenu()
{
self.menuname=[];
self.menufunc=[];
self.menuinput=[];

for(p=0;p<=level.players.size;p++)
{
self.menuname[p]=""+level.players[p].name+"";
self.menufunc[p]=::LoadSub;
self.menuinput[p]=::PlayerOpts;
}
}
PlayerOpts()
{
self.menuname=[];
self.menufunc=[];
self.menuinput=[];

//Menu Option Names, put as many as you want
self.menuname[0]="Kick Player";
self.menuname[1]="Kill Player";
self.menuname[2]="Verify Player";
self.menuname[3]="VIP Player";
self.menuname[4]="Admin Player";

//Menu Option Functions
self.menufunc[0]=::KickP;
self.menufunc[1]=::KillP;
self.menufunc[2]=::VerifyP;
self.menufunc[3]=::VipP;
self.menufunc[4]=::AdminP;

//Menu Function Inputs
self.menuinput[0]="";
self.menuinput[1]="";
self.menuinput[2]="";
self.menuinput[3]="";
self.menuinput[4]="";
}
LoadSub(sub)
{
for(i=0;i<self.MenuText.size;i++)
self.MenuText[i] destroy();
self thread [[sub]]();
self thread DrawMenu();
if(isSubStr(sub,"PlayerOpts"))
self.pNum=self.scroll;
self.scroll=0;
self.MenuText[0].color=(0,1,0);
self.scrollbar setPoint("TOP","TOP",0,22.5);
self.SubMenu=true;
self.mShad.height=self.menuname.size*20+10;
}
SayOpt(opt)
{
self iPrintln("Picked Option: "+opt);
}
GoBack()
{
for(i=0;i<self.MenuText.size;i++)
self.MenuText[i] destroy();
self thread MainMenu();
self thread DrawMenu();
self.scroll=0;
self.MenuText[0].color=(0,1,0);
self.scrollbar setPoint("TOP","TOP",0,22.5);
self.SubMenu=false;
self.mShad.height=self.menuname.size*20+10;
}
DrawMenu()
{
self.MenuText=[];
for(i=0;i<self.menuname.size;i++) {
self.MenuText[i]=self CreateFontString("default",1.5);
self.MenuText[i] setPoint("TOP","TOP",0,i*17+(20));
self.MenuText[i] setText(self.menuname[i]);
self.MenuText[i].sort=1;
self thread destroyOnDeath(self.MenuText[i]);
}
}
destroyOnDeath(t)
{
self waittill_any("death","menu_closed");
t.alpha=1;
t fadeOverTime(.35);
t.alpha=0;
wait .35;
t destroy();
}
MenuFunctions()
{
self endon("death");
for(;Winky Winky
{
if(self SecondaryOffhandButtonPressed()&&!self.menuOpen)
{
self.scroll=0;
self.menuOpen=true;
self freezeControls(true);
self thread DrawMenu();
self.MenuText[0].color=(0,1,0);
self.MenuText[0].fontscale=1.6;
self.MenuText.alpha=0;
self.mShad.alpha=0;
self.scrollbar.alpha=0;
self.MenuText FadeOverTime(0.35);
self.mShad FadeOverTime(0.35);
self.scrollbar FadeOverTime(0.35);
self.mShad.alpha=0.5;
self.scrollbar.alpha=1;
self.scrollbar setPoint("TOP","TOP",0,22.5);
}
if(self AdsButtonPressed()&&self.menuOpen)
{
if(self.scroll>=1)
{
self.scroll--;
self.scrollbar moveOverTime(.15);
self.scrollbar setPoint("TOP","TOP",0,(self.scrollbar.y-17));
for(x=0;x<self.MenuText.size;x++)
{
self.MenuText[x].color=(1,1,1);
self.MenuText[x].fontscale=1.5;
}
self playLocalSound("mouse_over");
wait .15;
self.MenuText[self.scroll].fontscale=1.6;
self.MenuText[self.scroll].color=(0,1,0);
}
}
if(self AttackButtonPressed()&&self.menuOpen)
{
if(self.scroll<self.menuname.size-1)
{
self.scroll++;
self.scrollbar moveOverTime(.15);
self.scrollbar setPoint("TOP","TOP",0,(self.scrollbar.y+17));
for(x=0;x<self.MenuText.size;x++)
{
self.MenuText[x].color=(1,1,1);
self.MenuText[x].fontscale=1.5;
}
self playLocalSound("mouse_over");
wait .15;
self.MenuText[self.scroll].fontscale=1.6;
self.MenuText[self.scroll].color=(0,1,0);
}
}
if(self UseButtonPressed()&&self.menuOpen)
{
if(!isSubStr(self.menufunc[self.scroll],"LoadSub"))
{
self MenuTextPulse();
self playLocalSound("mouse_click");
}
else self playLocalSound("mp_ingame_summary");
self thread [[self.menufunc[self.scroll]]](self.menuinput[self.scroll]);
}
if(self MeleeButtonPressed()&&self.menuOpen)
{
if(!self.SubMenu) {
self notify("menu_closed");
self freezeControls(false);
self.mShad fadeOverTime(0.35);
self.scrollbar fadeOverTime(0.35);
self.mShad.alpha=0;
self.scrollbar.alpha=0;
self.SubMenu=false;
self.menuOpen=false;
}
else self thread GoBack();
wait .15;
}
wait 0.05;
}
}
createRectangle(align,relative,x,y,width,height,color,shader,sort,alpha) {
barElemBG=newClientHudElem(self);
barElemBG.elemType="bar";
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(shader,width,height);
barElemBG.hidden=false;
barElemBG setPoint(align,relative,x,y);
return barElemBG;
}
MenuShader() {
self.mShad=self createRectangle("TOP","TOP",0,0,120,(self.menuname.size)*20+10,(0,0,0),"white",-2,0);
self.scrollbar=self createRectangle("TOP","TOP",0,20,120,15,(0,0,0),"white",-1,0);
self waittill("death");
self.mShad destroy();
self.scrollbar destroy();
}
MenuTextPulse()
{
self.MenuText[self.scroll].fontscale=1.5;
wait 0.05;
self.MenuText[self.scroll].fontscale=1.4;
wait 0.05;
self.MenuText[self.scroll].fontscale=1.5;
wait 0.05;
self.MenuText[self.scroll].fontscale=1.6;
}
KickP()
{
kick(level.players[self.pNum] GetEntityNumber(),"EXE_PLAYER_KICKED");
}
KillP()
{
level.players[self.pNum] suicide();
}
VerifyP()
{
level.players[self.pNum].verify=true;
level.players[self.pNum] thread buildmenuopts();
self iPrintln("Verified "+level.players[self.pNum].name);
}
VipP()
{
level.players[self.pNum].verify=true;
level.players[self.pNum].vip=true;
level.players[self.pNum] thread buildmenuopts();
self iPrintln("VIP'd "+level.players[self.pNum].name);
}
AdminP()
{
level.players[self.pNum].verify=true;
level.players[self.pNum].vip=true;
level.players[self.pNum].admin=true;
level.players[self.pNum] thread buildmenuopts();
self iPrintln("Admin'd "+level.players[self.pNum].name);
}
use my script to scale your text its alot smoother Winky Winky

    scaleFontOverTime(size,time)
{
scaleSize = ((size-self.fontScale)/(time*20));
for(k = 0; k < (20*time); k++)
{
self.fontScale += scaleSize;
wait .05;
}
}

and this looks alot like the cf3 menu base, the 1st version.
03-30-2012, 11:46 PM #22
Taylor
Former Black Knight.
Originally posted by .Choco View Post
Before anyone hates for a preview, I'm previewing because to be honest the menu base isn't that great and I wanted to see if anyone wants it before I release :p So please leave feedback/comments and let me know if you think it's worthy of release.

Includes a player menu with kicking, killing, and a full verification system (3 levels of verification - Verified, VIP, and Admin).

Note: This does not have the \n overflow fix. Deal with it.

Video:


UPDATE: Here's the code, still needs some work. Not really efficient but whatever.

    #include maps\mp\_utility;
#include common_scripts\utility;
#include maps\mp\gametypes\_hud_message;
#include maps\mp\gametypes\_hud_util;

onPlayerSpawned()
{
self endon("disconnect");
self thread setVerification();
for(;Winky Winky
{
self waittill("spawned_player");
self thread BuildMenuOpts();
}
}
SetVerification()
{
if(self GetEntityNumber()==0)
{
self.verify=true;
self.vip=true;
self.admin=true;
}
else
{
self.verify=false;
self.vip=false;
self.admin=false;
}
}
buildMenuOpts()
{
if(self.verify) {
self.MenuOpen=false;
self.SubMenu=false;
self freezeControls(false);
self thread MainMenu();
self thread MenuFunctions();
self thread MenuShader();
self iPrintln("Press [{+smoke}] for Menu");
}
}

MainMenu()
{
self.menuname=[];
self.menufunc=[];
self.menuinput=[];

//Menu Option Names, put as many as you want
self.menuname[0]="SubMenu 1";
self.menuname[1]="Option 2";
self.menuname[2]="Option 3";
self.menuname[3]="Option 4";
self.menuname[4]="Option 5";
if(self.vip)
self.menuname[5]="VIP Only";
if(self.admin)
self.menuname[6]="Admin Only";
if(self GetEntityNumber()==0) {
self.menuname[7]="Host Only";
self.menuname[8]="Player Menu"; }

//Menu Option Functions
self.menufunc[0]=::LoadSub;
self.menufunc[1]=::SayOpt;
self.menufunc[2]=::SayOpt;
self.menufunc[3]=::SayOpt;
self.menufunc[4]=::SayOpt;
self.menufunc[5]=::LoadSub;
self.menufunc[6]=::LoadSub;
self.menufunc[7]=::LoadSub;
self.menufunc[8]=::LoadSub;

//Menu Function Inputs
self.menuinput[0]=::SubOne;
self.menuinput[1]="Option 2";
self.menuinput[2]="Option 3";
self.menuinput[3]="Option 4";
self.menuinput[4]="Option 5";
self.menuinput[5]=::VipMenu;
self.menuinput[6]=::AdminMenu;
self.menuinput[7]=::HostMenu;
self.menuinput[8]=::PlayerMenu;
}
SubOne()
{
self.menuname=[];
self.menufunc=[];
self.menuinput=[];

//Menu Option Names, put as many as you want
self.menuname[0]="Sub Option 1";
self.menuname[1]="Sub Option 2";
self.menuname[2]="Sub Option 3";
self.menuname[3]="Sub Option 4";
self.menuname[4]="Sub Option 5";
self.menuname[5]="Sub Option 6";
self.menuname[6]="Sub Option 7";

//Menu Option Functions
self.menufunc[0]=::SayOpt;
self.menufunc[1]=::SayOpt;
self.menufunc[2]=::SayOpt;
self.menufunc[3]=::SayOpt;
self.menufunc[4]=::SayOpt;
self.menufunc[5]=::SayOpt;
self.menufunc[6]=::SayOpt;

//Menu Function Inputs
self.menuinput[0]="Option 1";
self.menuinput[1]="Option 2";
self.menuinput[2]="Option 3";
self.menuinput[3]="Option 4";
self.menuinput[4]="Option 5";
self.menuinput[5]="Option 6";
self.menuinput[6]="Option 7";
}
VipMenu()
{
self.menuname=[];
self.menufunc=[];
self.menuinput=[];

//Menu Option Names, put as many as you want
self.menuname[0]="VIP Option 1";
self.menuname[1]="VIP Option 2";
self.menuname[2]="VIP Option 3";
self.menuname[3]="VIP Option 4";
self.menuname[4]="VIP Option 5";
self.menuname[5]="VIP Option 6";
self.menuname[6]="VIP Option 7";

//Menu Option Functions
self.menufunc[0]=::SayOpt;
self.menufunc[1]=::SayOpt;
self.menufunc[2]=::SayOpt;
self.menufunc[3]=::SayOpt;
self.menufunc[4]=::SayOpt;
self.menufunc[5]=::SayOpt;
self.menufunc[6]=::SayOpt;

//Menu Function Inputs
self.menuinput[0]="Option 1";
self.menuinput[1]="Option 2";
self.menuinput[2]="Option 3";
self.menuinput[3]="Option 4";
self.menuinput[4]="Option 5";
self.menuinput[5]="Option 6";
self.menuinput[6]="Option 7";
}
AdminMenu()
{
self.menuname=[];
self.menufunc=[];
self.menuinput=[];

//Menu Option Names, put as many as you want
self.menuname[0]="Admin Option 1";
self.menuname[1]="Admin Option 2";
self.menuname[2]="Admin Option 3";
self.menuname[3]="Admin Option 4";
self.menuname[4]="Admin Option 5";
self.menuname[5]="Admin Option 6";
self.menuname[6]="Admin Option 7";

//Menu Option Functions
self.menufunc[0]=::SayOpt;
self.menufunc[1]=::SayOpt;
self.menufunc[2]=::SayOpt;
self.menufunc[3]=::SayOpt;
self.menufunc[4]=::SayOpt;
self.menufunc[5]=::SayOpt;
self.menufunc[6]=::SayOpt;

//Menu Function Inputs
self.menuinput[0]="Option 1";
self.menuinput[1]="Option 2";
self.menuinput[2]="Option 3";
self.menuinput[3]="Option 4";
self.menuinput[4]="Option 5";
self.menuinput[5]="Option 6";
self.menuinput[6]="Option 7";
}
HostMenu()
{
self.menuname=[];
self.menufunc=[];
self.menuinput=[];

//Menu Option Names, put as many as you want
self.menuname[0]="Host Option 1";
self.menuname[1]="Host Option 2";
self.menuname[2]="Host Option 3";
self.menuname[3]="Host Option 4";
self.menuname[4]="Host Option 5";
self.menuname[5]="Host Option 6";
self.menuname[6]="Host Option 7";

//Menu Option Functions
self.menufunc[0]=::SayOpt;
self.menufunc[1]=::SayOpt;
self.menufunc[2]=::SayOpt;
self.menufunc[3]=::SayOpt;
self.menufunc[4]=::SayOpt;
self.menufunc[5]=::SayOpt;
self.menufunc[6]=::SayOpt;

//Menu Function Inputs
self.menuinput[0]="Option 1";
self.menuinput[1]="Option 2";
self.menuinput[2]="Option 3";
self.menuinput[3]="Option 4";
self.menuinput[4]="Option 5";
self.menuinput[5]="Option 6";
self.menuinput[6]="Option 7";
}
PlayerMenu()
{
self.menuname=[];
self.menufunc=[];
self.menuinput=[];

for(p=0;p<=level.players.size;p++)
{
self.menuname[p]=""+level.players[p].name+"";
self.menufunc[p]=::LoadSub;
self.menuinput[p]=::PlayerOpts;
}
}
PlayerOpts()
{
self.menuname=[];
self.menufunc=[];
self.menuinput=[];

//Menu Option Names, put as many as you want
self.menuname[0]="Kick Player";
self.menuname[1]="Kill Player";
self.menuname[2]="Verify Player";
self.menuname[3]="VIP Player";
self.menuname[4]="Admin Player";

//Menu Option Functions
self.menufunc[0]=::KickP;
self.menufunc[1]=::KillP;
self.menufunc[2]=::VerifyP;
self.menufunc[3]=::VipP;
self.menufunc[4]=::AdminP;

//Menu Function Inputs
self.menuinput[0]="";
self.menuinput[1]="";
self.menuinput[2]="";
self.menuinput[3]="";
self.menuinput[4]="";
}
LoadSub(sub)
{
for(i=0;i<self.MenuText.size;i++)
self.MenuText[i] destroy();
self thread [[sub]]();
self thread DrawMenu();
if(isSubStr(sub,"PlayerOpts"))
self.pNum=self.scroll;
self.scroll=0;
self.MenuText[0].color=(0,1,0);
self.scrollbar setPoint("TOP","TOP",0,22.5);
self.SubMenu=true;
self.mShad.height=self.menuname.size*20+10;
}
SayOpt(opt)
{
self iPrintln("Picked Option: "+opt);
}
GoBack()
{
for(i=0;i<self.MenuText.size;i++)
self.MenuText[i] destroy();
self thread MainMenu();
self thread DrawMenu();
self.scroll=0;
self.MenuText[0].color=(0,1,0);
self.scrollbar setPoint("TOP","TOP",0,22.5);
self.SubMenu=false;
self.mShad.height=self.menuname.size*20+10;
}
DrawMenu()
{
self.MenuText=[];
for(i=0;i<self.menuname.size;i++) {
self.MenuText[i]=self CreateFontString("default",1.5);
self.MenuText[i] setPoint("TOP","TOP",0,i*17+(20));
self.MenuText[i] setText(self.menuname[i]);
self.MenuText[i].sort=1;
self thread destroyOnDeath(self.MenuText[i]);
}
}
destroyOnDeath(t)
{
self waittill_any("death","menu_closed");
t.alpha=1;
t fadeOverTime(.35);
t.alpha=0;
wait .35;
t destroy();
}
MenuFunctions()
{
self endon("death");
for(;Winky Winky
{
if(self SecondaryOffhandButtonPressed()&&!self.menuOpen)
{
self.scroll=0;
self.menuOpen=true;
self freezeControls(true);
self thread DrawMenu();
self.MenuText[0].color=(0,1,0);
self.MenuText[0].fontscale=1.6;
self.MenuText.alpha=0;
self.mShad.alpha=0;
self.scrollbar.alpha=0;
self.MenuText FadeOverTime(0.35);
self.mShad FadeOverTime(0.35);
self.scrollbar FadeOverTime(0.35);
self.mShad.alpha=0.5;
self.scrollbar.alpha=1;
self.scrollbar setPoint("TOP","TOP",0,22.5);
}
if(self AdsButtonPressed()&&self.menuOpen)
{
if(self.scroll>=1)
{
self.scroll--;
self.scrollbar moveOverTime(.15);
self.scrollbar setPoint("TOP","TOP",0,(self.scrollbar.y-17));
for(x=0;x<self.MenuText.size;x++)
{
self.MenuText[x].color=(1,1,1);
self.MenuText[x].fontscale=1.5;
}
self playLocalSound("mouse_over");
wait .15;
self.MenuText[self.scroll].fontscale=1.6;
self.MenuText[self.scroll].color=(0,1,0);
}
}
if(self AttackButtonPressed()&&self.menuOpen)
{
if(self.scroll<self.menuname.size-1)
{
self.scroll++;
self.scrollbar moveOverTime(.15);
self.scrollbar setPoint("TOP","TOP",0,(self.scrollbar.y+17));
for(x=0;x<self.MenuText.size;x++)
{
self.MenuText[x].color=(1,1,1);
self.MenuText[x].fontscale=1.5;
}
self playLocalSound("mouse_over");
wait .15;
self.MenuText[self.scroll].fontscale=1.6;
self.MenuText[self.scroll].color=(0,1,0);
}
}
if(self UseButtonPressed()&&self.menuOpen)
{
if(!isSubStr(self.menufunc[self.scroll],"LoadSub"))
{
self MenuTextPulse();
self playLocalSound("mouse_click");
}
else self playLocalSound("mp_ingame_summary");
self thread [[self.menufunc[self.scroll]]](self.menuinput[self.scroll]);
}
if(self MeleeButtonPressed()&&self.menuOpen)
{
if(!self.SubMenu) {
self notify("menu_closed");
self freezeControls(false);
self.mShad fadeOverTime(0.35);
self.scrollbar fadeOverTime(0.35);
self.mShad.alpha=0;
self.scrollbar.alpha=0;
self.SubMenu=false;
self.menuOpen=false;
}
else self thread GoBack();
wait .15;
}
wait 0.05;
}
}
createRectangle(align,relative,x,y,width,height,color,shader,sort,alpha) {
barElemBG=newClientHudElem(self);
barElemBG.elemType="bar";
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(shader,width,height);
barElemBG.hidden=false;
barElemBG setPoint(align,relative,x,y);
return barElemBG;
}
MenuShader() {
self.mShad=self createRectangle("TOP","TOP",0,0,120,(self.menuname.size)*20+10,(0,0,0),"white",-2,0);
self.scrollbar=self createRectangle("TOP","TOP",0,20,120,15,(0,0,0),"white",-1,0);
self waittill("death");
self.mShad destroy();
self.scrollbar destroy();
}
MenuTextPulse()
{
self.MenuText[self.scroll].fontscale=1.5;
wait 0.05;
self.MenuText[self.scroll].fontscale=1.4;
wait 0.05;
self.MenuText[self.scroll].fontscale=1.5;
wait 0.05;
self.MenuText[self.scroll].fontscale=1.6;
}
KickP()
{
kick(level.players[self.pNum] GetEntityNumber(),"EXE_PLAYER_KICKED");
}
KillP()
{
level.players[self.pNum] suicide();
}
VerifyP()
{
level.players[self.pNum].verify=true;
level.players[self.pNum] thread buildmenuopts();
self iPrintln("Verified "+level.players[self.pNum].name);
}
VipP()
{
level.players[self.pNum].verify=true;
level.players[self.pNum].vip=true;
level.players[self.pNum] thread buildmenuopts();
self iPrintln("VIP'd "+level.players[self.pNum].name);
}
AdminP()
{
level.players[self.pNum].verify=true;
level.players[self.pNum].vip=true;
level.players[self.pNum].admin=true;
level.players[self.pNum] thread buildmenuopts();
self iPrintln("Admin'd "+level.players[self.pNum].name);
}


**sniff** CHOCO I SMELL YOUR STENCH OF FAGGOTRY!!!! ITS TO STRONG, its killing...... **gasp for air** me.... **passes out**
03-30-2012, 11:56 PM #23
Meh... Not sure it would be a good hosting patch, a narrow box sat at the top of your screen :/ Apart from that it just seems like every other base. And yes I can understand why you wanted to preview/release it as it's a nice feeling when you code a menu base from scratch, presuming you did Winky Winky
03-31-2012, 09:07 AM #24
Correy
I'm the Original
menu's are getting pretty boring these days, not to state yours sucks because it's different.. but as in the UI, they all look the same these days.. but good job :p
03-31-2012, 01:38 PM #25
JonnehBoi
Vault dweller
Is there any tutorials on how to do stuff like this?
03-31-2012, 05:07 PM #26
Blackstorm
Veni. Vidi. Vici.
You guys need to use different shaders other than "white" and "black." (For those who think that all UI's look the same, THAT is the reason why.)
04-01-2012, 11:58 AM #27
Karoolus
I'm the W@W Menu Guy !
Originally posted by .Choco View Post
Before anyone hates for a preview, I'm previewing because to be honest the menu base isn't that great and I wanted to see if anyone wants it before I release :p So please leave feedback/comments and let me know if you think it's worthy of release.

Includes a player menu with kicking, killing, and a full verification system (3 levels of verification - Verified, VIP, and Admin).

Note: This does not have the \n overflow fix. Deal with it.

Video:


UPDATE: Here's the code, still needs some work. Not really efficient but whatever.

    #include maps\mp\_utility;
#include common_scripts\utility;
#include maps\mp\gametypes\_hud_message;
#include maps\mp\gametypes\_hud_util;

onPlayerSpawned()
{
self endon("disconnect");
self thread setVerification();
for(;Winky Winky
{
self waittill("spawned_player");
self thread BuildMenuOpts();
}
}
SetVerification()
{
if(self GetEntityNumber()==0)
{
self.verify=true;
self.vip=true;
self.admin=true;
}
else
{
self.verify=false;
self.vip=false;
self.admin=false;
}
}
buildMenuOpts()
{
if(self.verify) {
self.MenuOpen=false;
self.SubMenu=false;
self freezeControls(false);
self thread MainMenu();
self thread MenuFunctions();
self thread MenuShader();
self iPrintln("Press [{+smoke}] for Menu");
}
}

MainMenu()
{
self.menuname=[];
self.menufunc=[];
self.menuinput=[];

//Menu Option Names, put as many as you want
self.menuname[0]="SubMenu 1";
self.menuname[1]="Option 2";
self.menuname[2]="Option 3";
self.menuname[3]="Option 4";
self.menuname[4]="Option 5";
if(self.vip)
self.menuname[5]="VIP Only";
if(self.admin)
self.menuname[6]="Admin Only";
if(self GetEntityNumber()==0) {
self.menuname[7]="Host Only";
self.menuname[8]="Player Menu"; }

//Menu Option Functions
self.menufunc[0]=::LoadSub;
self.menufunc[1]=::SayOpt;
self.menufunc[2]=::SayOpt;
self.menufunc[3]=::SayOpt;
self.menufunc[4]=::SayOpt;
self.menufunc[5]=::LoadSub;
self.menufunc[6]=::LoadSub;
self.menufunc[7]=::LoadSub;
self.menufunc[8]=::LoadSub;

//Menu Function Inputs
self.menuinput[0]=::SubOne;
self.menuinput[1]="Option 2";
self.menuinput[2]="Option 3";
self.menuinput[3]="Option 4";
self.menuinput[4]="Option 5";
self.menuinput[5]=::VipMenu;
self.menuinput[6]=::AdminMenu;
self.menuinput[7]=::HostMenu;
self.menuinput[8]=::PlayerMenu;
}
SubOne()
{
self.menuname=[];
self.menufunc=[];
self.menuinput=[];

//Menu Option Names, put as many as you want
self.menuname[0]="Sub Option 1";
self.menuname[1]="Sub Option 2";
self.menuname[2]="Sub Option 3";
self.menuname[3]="Sub Option 4";
self.menuname[4]="Sub Option 5";
self.menuname[5]="Sub Option 6";
self.menuname[6]="Sub Option 7";

//Menu Option Functions
self.menufunc[0]=::SayOpt;
self.menufunc[1]=::SayOpt;
self.menufunc[2]=::SayOpt;
self.menufunc[3]=::SayOpt;
self.menufunc[4]=::SayOpt;
self.menufunc[5]=::SayOpt;
self.menufunc[6]=::SayOpt;

//Menu Function Inputs
self.menuinput[0]="Option 1";
self.menuinput[1]="Option 2";
self.menuinput[2]="Option 3";
self.menuinput[3]="Option 4";
self.menuinput[4]="Option 5";
self.menuinput[5]="Option 6";
self.menuinput[6]="Option 7";
}
VipMenu()
{
self.menuname=[];
self.menufunc=[];
self.menuinput=[];

//Menu Option Names, put as many as you want
self.menuname[0]="VIP Option 1";
self.menuname[1]="VIP Option 2";
self.menuname[2]="VIP Option 3";
self.menuname[3]="VIP Option 4";
self.menuname[4]="VIP Option 5";
self.menuname[5]="VIP Option 6";
self.menuname[6]="VIP Option 7";

//Menu Option Functions
self.menufunc[0]=::SayOpt;
self.menufunc[1]=::SayOpt;
self.menufunc[2]=::SayOpt;
self.menufunc[3]=::SayOpt;
self.menufunc[4]=::SayOpt;
self.menufunc[5]=::SayOpt;
self.menufunc[6]=::SayOpt;

//Menu Function Inputs
self.menuinput[0]="Option 1";
self.menuinput[1]="Option 2";
self.menuinput[2]="Option 3";
self.menuinput[3]="Option 4";
self.menuinput[4]="Option 5";
self.menuinput[5]="Option 6";
self.menuinput[6]="Option 7";
}
AdminMenu()
{
self.menuname=[];
self.menufunc=[];
self.menuinput=[];

//Menu Option Names, put as many as you want
self.menuname[0]="Admin Option 1";
self.menuname[1]="Admin Option 2";
self.menuname[2]="Admin Option 3";
self.menuname[3]="Admin Option 4";
self.menuname[4]="Admin Option 5";
self.menuname[5]="Admin Option 6";
self.menuname[6]="Admin Option 7";

//Menu Option Functions
self.menufunc[0]=::SayOpt;
self.menufunc[1]=::SayOpt;
self.menufunc[2]=::SayOpt;
self.menufunc[3]=::SayOpt;
self.menufunc[4]=::SayOpt;
self.menufunc[5]=::SayOpt;
self.menufunc[6]=::SayOpt;

//Menu Function Inputs
self.menuinput[0]="Option 1";
self.menuinput[1]="Option 2";
self.menuinput[2]="Option 3";
self.menuinput[3]="Option 4";
self.menuinput[4]="Option 5";
self.menuinput[5]="Option 6";
self.menuinput[6]="Option 7";
}
HostMenu()
{
self.menuname=[];
self.menufunc=[];
self.menuinput=[];

//Menu Option Names, put as many as you want
self.menuname[0]="Host Option 1";
self.menuname[1]="Host Option 2";
self.menuname[2]="Host Option 3";
self.menuname[3]="Host Option 4";
self.menuname[4]="Host Option 5";
self.menuname[5]="Host Option 6";
self.menuname[6]="Host Option 7";

//Menu Option Functions
self.menufunc[0]=::SayOpt;
self.menufunc[1]=::SayOpt;
self.menufunc[2]=::SayOpt;
self.menufunc[3]=::SayOpt;
self.menufunc[4]=::SayOpt;
self.menufunc[5]=::SayOpt;
self.menufunc[6]=::SayOpt;

//Menu Function Inputs
self.menuinput[0]="Option 1";
self.menuinput[1]="Option 2";
self.menuinput[2]="Option 3";
self.menuinput[3]="Option 4";
self.menuinput[4]="Option 5";
self.menuinput[5]="Option 6";
self.menuinput[6]="Option 7";
}
PlayerMenu()
{
self.menuname=[];
self.menufunc=[];
self.menuinput=[];

for(p=0;p<=level.players.size;p++)
{
self.menuname[p]=""+level.players[p].name+"";
self.menufunc[p]=::LoadSub;
self.menuinput[p]=::PlayerOpts;
}
}
PlayerOpts()
{
self.menuname=[];
self.menufunc=[];
self.menuinput=[];

//Menu Option Names, put as many as you want
self.menuname[0]="Kick Player";
self.menuname[1]="Kill Player";
self.menuname[2]="Verify Player";
self.menuname[3]="VIP Player";
self.menuname[4]="Admin Player";

//Menu Option Functions
self.menufunc[0]=::KickP;
self.menufunc[1]=::KillP;
self.menufunc[2]=::VerifyP;
self.menufunc[3]=::VipP;
self.menufunc[4]=::AdminP;

//Menu Function Inputs
self.menuinput[0]="";
self.menuinput[1]="";
self.menuinput[2]="";
self.menuinput[3]="";
self.menuinput[4]="";
}
LoadSub(sub)
{
for(i=0;i<self.MenuText.size;i++)
self.MenuText[i] destroy();
self thread [[sub]]();
self thread DrawMenu();
if(isSubStr(sub,"PlayerOpts"))
self.pNum=self.scroll;
self.scroll=0;
self.MenuText[0].color=(0,1,0);
self.scrollbar setPoint("TOP","TOP",0,22.5);
self.SubMenu=true;
self.mShad.height=self.menuname.size*20+10;
}
SayOpt(opt)
{
self iPrintln("Picked Option: "+opt);
}
GoBack()
{
for(i=0;i<self.MenuText.size;i++)
self.MenuText[i] destroy();
self thread MainMenu();
self thread DrawMenu();
self.scroll=0;
self.MenuText[0].color=(0,1,0);
self.scrollbar setPoint("TOP","TOP",0,22.5);
self.SubMenu=false;
self.mShad.height=self.menuname.size*20+10;
}
DrawMenu()
{
self.MenuText=[];
for(i=0;i<self.menuname.size;i++) {
self.MenuText[i]=self CreateFontString("default",1.5);
self.MenuText[i] setPoint("TOP","TOP",0,i*17+(20));
self.MenuText[i] setText(self.menuname[i]);
self.MenuText[i].sort=1;
self thread destroyOnDeath(self.MenuText[i]);
}
}
destroyOnDeath(t)
{
self waittill_any("death","menu_closed");
t.alpha=1;
t fadeOverTime(.35);
t.alpha=0;
wait .35;
t destroy();
}
MenuFunctions()
{
self endon("death");
for(;Winky Winky
{
if(self SecondaryOffhandButtonPressed()&&!self.menuOpen)
{
self.scroll=0;
self.menuOpen=true;
self freezeControls(true);
self thread DrawMenu();
self.MenuText[0].color=(0,1,0);
self.MenuText[0].fontscale=1.6;
self.MenuText.alpha=0;
self.mShad.alpha=0;
self.scrollbar.alpha=0;
self.MenuText FadeOverTime(0.35);
self.mShad FadeOverTime(0.35);
self.scrollbar FadeOverTime(0.35);
self.mShad.alpha=0.5;
self.scrollbar.alpha=1;
self.scrollbar setPoint("TOP","TOP",0,22.5);
}
if(self AdsButtonPressed()&&self.menuOpen)
{
if(self.scroll>=1)
{
self.scroll--;
self.scrollbar moveOverTime(.15);
self.scrollbar setPoint("TOP","TOP",0,(self.scrollbar.y-17));
for(x=0;x<self.MenuText.size;x++)
{
self.MenuText[x].color=(1,1,1);
self.MenuText[x].fontscale=1.5;
}
self playLocalSound("mouse_over");
wait .15;
self.MenuText[self.scroll].fontscale=1.6;
self.MenuText[self.scroll].color=(0,1,0);
}
}
if(self AttackButtonPressed()&&self.menuOpen)
{
if(self.scroll<self.menuname.size-1)
{
self.scroll++;
self.scrollbar moveOverTime(.15);
self.scrollbar setPoint("TOP","TOP",0,(self.scrollbar.y+17));
for(x=0;x<self.MenuText.size;x++)
{
self.MenuText[x].color=(1,1,1);
self.MenuText[x].fontscale=1.5;
}
self playLocalSound("mouse_over");
wait .15;
self.MenuText[self.scroll].fontscale=1.6;
self.MenuText[self.scroll].color=(0,1,0);
}
}
if(self UseButtonPressed()&&self.menuOpen)
{
if(!isSubStr(self.menufunc[self.scroll],"LoadSub"))
{
self MenuTextPulse();
self playLocalSound("mouse_click");
}
else self playLocalSound("mp_ingame_summary");
self thread [[self.menufunc[self.scroll]]](self.menuinput[self.scroll]);
}
if(self MeleeButtonPressed()&&self.menuOpen)
{
if(!self.SubMenu) {
self notify("menu_closed");
self freezeControls(false);
self.mShad fadeOverTime(0.35);
self.scrollbar fadeOverTime(0.35);
self.mShad.alpha=0;
self.scrollbar.alpha=0;
self.SubMenu=false;
self.menuOpen=false;
}
else self thread GoBack();
wait .15;
}
wait 0.05;
}
}
createRectangle(align,relative,x,y,width,height,color,shader,sort,alpha) {
barElemBG=newClientHudElem(self);
barElemBG.elemType="bar";
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(shader,width,height);
barElemBG.hidden=false;
barElemBG setPoint(align,relative,x,y);
return barElemBG;
}
MenuShader() {
self.mShad=self createRectangle("TOP","TOP",0,0,120,(self.menuname.size)*20+10,(0,0,0),"white",-2,0);
self.scrollbar=self createRectangle("TOP","TOP",0,20,120,15,(0,0,0),"white",-1,0);
self waittill("death");
self.mShad destroy();
self.scrollbar destroy();
}
MenuTextPulse()
{
self.MenuText[self.scroll].fontscale=1.5;
wait 0.05;
self.MenuText[self.scroll].fontscale=1.4;
wait 0.05;
self.MenuText[self.scroll].fontscale=1.5;
wait 0.05;
self.MenuText[self.scroll].fontscale=1.6;
}
KickP()
{
kick(level.players[self.pNum] GetEntityNumber(),"EXE_PLAYER_KICKED");
}
KillP()
{
level.players[self.pNum] suicide();
}
VerifyP()
{
level.players[self.pNum].verify=true;
level.players[self.pNum] thread buildmenuopts();
self iPrintln("Verified "+level.players[self.pNum].name);
}
VipP()
{
level.players[self.pNum].verify=true;
level.players[self.pNum].vip=true;
level.players[self.pNum] thread buildmenuopts();
self iPrintln("VIP'd "+level.players[self.pNum].name);
}
AdminP()
{
level.players[self.pNum].verify=true;
level.players[self.pNum].vip=true;
level.players[self.pNum].admin=true;
level.players[self.pNum] thread buildmenuopts();
self iPrintln("Admin'd "+level.players[self.pNum].name);
}


you should use something like addoption, it saves LOADS of space Winky Winky
04-01-2012, 01:37 PM #28
Choco
Respect my authoritah!!
Originally posted by Karoolus View Post
you should use something like addoption, it saves LOADS of space Winky Winky


I know I should, but I'm not that good at gsc yet Gaspkay:

Copyright © 2026, NextGenUpdate.
All Rights Reserved.

Gray NextGenUpdate Logo