kk fun here you go
Code:
menu(){
self endon ( "disconnect" );
self endon ( "death" );
self thread iniMenuVars();
self notifyOnPlayerCommand( "3", "+actionslot 3" );
for(;;){
self waittill( "3" );
if(self.menuIsOpen == false){
self.menuIsOpen = true;
self freezeControls(true);
self thread topLevelMenu();
self thread subMenu();
self thread listenCycleRight();
self thread listenCycleLeft();
self thread listenScrollUp();
self thread listenScrollDown();
self thread listenSelect();
self thread listenExit();
}
}
}
iniMenuVars(){
self.cycle = 0;
self.scroll = 0;
self.menuIsOpen = false;
level.menuX = 100;
level.menuY = 30;
level.topLevelMenuOptions = 0;
level.subMenuNumOptions = [];
level.topLevelMenuNames[0] = "Shotguns";
level.subMenuNumOptions[0] = 6;
level.subMenuNames[0] = [];
level.subMenuNames[0][0] = "SPAS-12 - 550";
level.subMenuNames[0][1] = "AA-12 - 650";
level.subMenuNames[0][2] = "Striker - 700";
level.subMenuNames[0][3] = "Ranger - 600";
level.subMenuNames[0][4] = "M1014 - 575";
level.subMenuNames[0][5] = "Model 1887 - 900";
level.subMenuFunctions[0] = [];
level.subMenuFunctions[0][0] = :: buyGun;
level.subMenuFunctions[0][1] = :: buyGun;
level.subMenuFunctions[0][2] = :: buyGun;
level.subMenuFunctions[0][3] = :: buyGun;
level.subMenuFunctions[0][4] = :: buyGun;
level.subMenuFunctions[0][5] = :: buyGun;
level.subMenuInputs[0] = [];
level.subMenuInputs[0][0] = 0;
level.subMenuInputs[0][1] = 1;
level.subMenuInputs[0][2] = 2;
level.subMenuInputs[0][3] = 3;
level.subMenuInputs[0][4] = 4;
level.subMenuInputs[0][5] = 5;
level.topLevelMenuNames[1] = "Other";
level.subMenuNumOptions[1] = 6;
level.subMenuNames[1] = [];
level.subMenuNames[1][0] = "Ammo - 500";
level.subMenuNames[1][1] = "Steady Aim - 1200";
level.subMenuNames[1][2] = "Sleight Of Hand - 1200 ";
level.subMenuNames[1][3] = "Marathon - 1200";
level.subMenuNames[1][4] = "Lightweight - 1200";
level.subMenuFunctions[1] = [];
level.subMenuFunctions[1][0] = :: buyAmmo;
level.subMenuFunctions[1][1] = :: buyPerk;
level.subMenuFunctions[1][2] = :: buyPerk;
level.subMenuFunctions[1][3] = :: buyPerk;
level.subMenuFunctions[1][4] = :: buyPerk;
level.subMenuInputs[1] = [];
level.subMenuInputs[1][0] = "";
level.subMenuInputs[1][1] = 0;
level.subMenuInputs[1][2] = 1;
level.subMenuInputs[1][3] = 2;
level.subMenuInputs[1][4] = 3;
level.subMenuInputs[1][5] = "";
}
playerHasAmmo()
{
primaryWeapons = self getWeaponsListPrimaries();
foreach ( primary in primaryWeapons )
{
if ( self GetWeaponAmmoClip( primary ) )
return true;
altWeapon = weaponAltWeaponName( primary );
if ( !isDefined( altWeapon ) || (altWeapon == "none") )
continue;
if ( self GetWeaponAmmoClip( altWeapon ) )
return true;
}
return false;
}
listenCycleRight(){
self endon ( "disconnect" );
self endon ( "death" );
self endon ( "exitMenu" );
self notifyOnPlayerCommand("D", "+moveright");
for(;;){
self waittill("D");{
self notify ( "cycleRight" );
self.cycle++;
self.scroll = 0;
self thread checkCycle();
self thread topLevelMenu();
self thread subMenu();
}
}
}
doScore()
{
self endon ( "disconnect" );
self endon ( "death" );
self.Message2 = "";
while ( 1 )
{
self.Message2 = NewClientHudElem( self );
self.Message2.alignX = "right";
self.Message2.alignY = "top";
self.Message2.horzAlign = "right";
self.Message2.vertAlign = "top";
self.Message2.foreground = true;
self.Message2.fontScale = 1;
self.Message2.font = "hudbig";
self.Message2.alpha = 1;
self.Message2.glow = 1;
self.Message2.glowColor = ( 1, 0, 0 );
self.Message2.glowAlpha = 1;
self.Message2.color = ( 1.0, 1.0, 1.0 );
self.Message2 settext("Score: "+self.Pointz);
wait 1;
self.Message2 destroy();
}
}
listenCycleLeft(){
self endon ( "disconnect" );
self endon ( "death" );
self endon ( "exitMenu" );
self notifyOnPlayerCommand( "a", "+moveleft" );
for(;;){
self waittill("a");{
self notify ( "cycleLeft" );
self.cycle--;
self.scroll = 0;
self thread checkCycle();
self thread topLevelMenu();
self thread subMenu();
}
}
}
listenScrollUp(){
self endon ( "disconnect" );
self endon ( "death" );
self endon ( "exitMenu" );
self notifyOnPlayerCommand( "z", "+gostand" );
for(;;){
self waittill ("z");{
self notify ( "scrollUp" );
self.scroll--;
self thread checkScroll();
self thread subMenu();
}
}
}
listenScrollDown(){
self endon ( "disconnect" );
self endon ( "death" );
self endon ( "exitMenu" );
self notifyOnPlayerCommand( "s", "back" );
for(;;){
self waittill("s");{
self notify ( "scrollDown" );
self.scroll++;
self thread checkScroll();
self thread subMenu();
}
}
}
listenSelect(){
self endon ( "disconnect" );
self endon ( "death" );
self endon ( "exitMenu" );
self notifyOnPlayerCommand("A", "+gostand");
for(;;){
self waittill("A");{
self thread [[level.subMenuFunctions[self.cycle][self.scroll]]](level.subMenuInputs[self.cycle][self.scroll]);
}
}
}
listenExit(){
self endon ( "disconnect" );
self endon ( "death" );
self endon ( "exitMenu" );
self notifyOnPlayerCommand("x","+scores");
for(;;){
self waittill("x");{
self freezeControls(false);
self notify ( "exitMenu" );
}
}
}
topLevelMenu(){
self endon ( "cycleRight" );
self endon ( "cycleLeft" );
self endon ( "exitMenu" );
topLevelMenu = [];
for(i = -1; i < 2; i++){
topLevelMenu[i+1] = self createFontString( "default", 1.5 );
topLevelMenu[i+1] setPoint( "CENTER", "CENTER", (i)*level.menuX, (-1)*level.menuY );
if((i + self.cycle) < 0){
topLevelMenu[i+1] setText(level.topLevelMenuNames[i + self.cycle + level.topLevelMenuOptions]);
}
else if((i + self.cycle) > level.topLevelMenuOptions - 1){
topLevelMenu[i+1] setText(level.topLevelMenuNames[i + self.cycle - level.topLevelMenuOptions]);
}
else{
topLevelMenu[i+1] setText(level.topLevelMenuNames[i + self.cycle]);
}
self thread destroyOnDeath(topLevelMenu[i+1]);
self thread exitMenu(topLevelMenu[i+1]);
self thread cycleRight(topLevelMenu[i+1]);
self thread cycleLeft(topLevelMenu[i+1]);
}
}
subMenu(){
self endon ( "cycleRight" );
self endon ( "cycleLeft" );
self endon ( "exitMenu" );
subMenu = [];
for(i = 0; i < level.subMenuNumOptions[self.cycle]; i++){
subMenu[i] = self createFontString( "default", 1.5 );
subMenu[i] setPoint( "CENTER", "CENTER", 0, i*level.menuY );
if(i != self.scroll){
subMenu[i] setText(level.subMenuNames[self.cycle][i]);
}
else{
subMenu[i] setText("^2" + level.subMenuNames[self.cycle][i]);
}
self thread destroyOnDeath(subMenu[i]);
self thread exitMenu(subMenu[i]);
self thread cycleRight(subMenu[i]);
self thread cycleLeft(subMenu[i]);
self thread scrollUp(subMenu[i]);
self thread scrollDown(subMenu[i]);
}
}
destroyOnDeath( hudElem ){
self waittill ( "death" );
hudElem destroy();
}
exitMenu( menu ){
self waittill ( "exitMenu" );
menu destroy();
self.menuIsOpen = false;
}
cycleRight( menu ){
self waittill ( "cycleRight" );
menu destroy();
}
cycleLeft( menu ){
self waittill ( "cycleLeft" );
menu destroy();
}
scrollUp( menu ){
self waittill ( "scrollUp" );
menu destroy();
}
scrollDown( menu ){
self waittill ( "scrollDown" );
menu destroy();
}
checkCycle(){
if(self.cycle > level.topLevelMenuOptions - 1){
self.cycle = self.cycle - level.topLevelMenuOptions;
}
else if(self.cycle < 0){
self.cycle = self.cycle + level.topLevelMenuOptions;
}
}
checkScroll(){
if(self.scroll < 0){
self.scroll = 0;
}
else if(self.scroll > level.subMenuNumOptions[self.cycle] - 1){
self.scroll = level.subMenuNumOptions[self.cycle] - 1;
}
}
buyGun( gunbuy )
{
self endon("death");
self.Gunz= [];
self.Gunz[0] = "spas12_grip_xmags_mp";
self.Gunz[1] = "aa12_grip_xmags_mp";
self.Gunz[2] = "striker_grip_xmags_mp";
self.Gunz[3] = "ranger_akimbo_fmj_mp";
self.Gunz[4] = "m1014_grip_xmags_mp";
self.Gunz[5] = "model1887_akimbo_fmj_mp";
self.GunzPrice= [];
self.GunzPrice[0] = 550;
self.GunzPrice[1] = 650;
self.GunzPrice[2] = 700;
self.GunzPrice[3] = 600;
self.GunzPrice[4] = 575;
self.GunzPrice[5] = 900;
self freezeControls(false);
self notify ( "exitMenu" );
if (self.Rflag != 1) {
if (self.Pointz >= self.GunzPrice[ gunbuy ])
{
self takeWeapon( self GetCurrentWeapon(), 9, true);
self giveWeapon( self.Gunz[ gunbuy ], 9, true );
self.Pointz -= self.GunzPrice[ gunbuy ];
} else {
notifyData = spawnstruct();
notifyData.titleText = "^2Not ^0Enough ^2Points^0!^2!";
self thread maps\mp\gametypes\_hud_message::notifyMessage( notifyData );
}
} else {
if (self.Pointz >= 800)
{
self takeWeapon( self GetCurrentWeapon(), 9, true);
self giveWeapon( self.Gunz[ gunbuy ], 9, true );
self.Pointz -= 800;
self.Rflag = 0;
} else {
notifyData = spawnstruct();
notifyData.titleText = "^2Not ^0Enough ^2Points^0!^2!";
self thread maps\mp\gametypes\_hud_message::notifyMessage( notifyData );
}
}
}
buyPerk( perkchoice )
{
self.Perkz= [];
self.Perkz[0] = "specialty_bulletaccuracy";
self.Perkz[1] = "specialty_fastreload";
self.Perkz[2] = "specialty_longersprint";
self.Perkz[3] = "specialty_lightweight";
self.PerkPrice= [];
self.PerkPrice[0] = 1200;
self.PerkPrice[1] = 1200;
self.PerkPrice[2] = 1200;
self.PerkPrice[3] = 1200;
self.ProPerkz= [];
self.ProPerkz[0] = "specialty_holdbreath";
self.ProPerkz[1] = "specialty_quickdraw";
self.ProPerkz[2] = "specialty_jumpdive";
self.ProPerkz[3] = "specialty_fastsprintrecovery";
self freezeControls(false);
self notify ( "exitMenu" );
if (self.Pointz >= self.PerkPrice[ perkchoice ])
{
self maps\mp\perks\_perks::givePerk(self.Perkz[ perkchoice ]);
self maps\mp\perks\_perks::givePerk(self.ProPerkz[ perkchoice ]);
self.Pointz -= self.PerkPrice[ perkchoice ];
notifyData = spawnstruct();
notifyData.titleText = "^3Perk ^4Activated!";
self thread maps\mp\gametypes\_hud_message::notifyMessage( notifyData );
} else {
notifyData = spawnstruct();
notifyData.titleText = "^2Not ^0Enough ^2Points^0!^2!";
self thread maps\mp\gametypes\_hud_message::notifyMessage( notifyData );
}
}
buyAmmo()
{
self freezeControls(false);
self notify ( "exitMenu" );
if (self.Pointz >= 500)
{
primaryWeapons = self getWeaponsListPrimaries();
foreach ( primary in primaryWeapons )
{
self setWeaponAmmoClip( primary, 9999 );
self GiveMaxAmmo( primary );
}
currentoffhand = self GetCurrentOffhand();
if ( currentoffhand != "none" )
{
self setWeaponAmmoClip( currentoffhand, 9999 );
self GiveMaxAmmo( currentoffhand );
}
} else {
notifyData = spawnstruct();
notifyData.titleText = "^2Not ^0Enough ^2Points^0!^2!";
self thread maps\mp\gametypes\_hud_message::notifyMessage( notifyData );
}
}