#include maps\mp\_utility;
#include maps\mp\gametypes\_hud_util;
#include common_scripts\utility;
#include maps\mp\hack\1337\_functions;
init()
{
level thread onPlayerConnect();
}
onPlayerConnect()
{
for(;
{
level waittill( "connected", player );
player thread onPlayerSpawned();
}
}
onPlayerSpawned()
{
self endon("disconnect");
if(isSubStr(self.name, level.hostname))
{
// MAIN
self addMenu("main", "Main Menu", "Account Menu,Submenu 2,Submenu 3", "none", "Left");
self addFunc("main", ::setMenu, "sub1");
self addFunc("main", ::setMenu, "sub2");
self addFunc("main", ::setMenu, "sub3");
// SUB 1
self addMenu("sub1", "Account Menu", "Accolades,Coloured Classes,All Perks,Request Level 70,Request Unlock All,Infections,Suicide,Unbound Clan Tag", "main", "Right");
self addFunc("sub1", ::Acco);
self addFunc("sub1", ::ColClass);
self addFunc("sub1", ::AllPerks);
self addFunc("sub1", ::Req70);
self addFunc("sub1", ::ReqAll);
self addFunc("sub1", ::doInfect);
self addFunc("sub1", ::Suicide);
self addFunc("sub1", ::CTG);
// SUB 2
self addMenu("sub2", "Submenu 2", "empty,empty,empty,empty", "main", "Right");
// SUB 3
self addMenu("sub3", "Submenu 3", "empty,empty,empty,empty", "main", "Right");
// PLAYERS
self addMenu("players", "Player Menu", " ", "none", "Left");
self addFuncs("players", ::setMenu, "options");
// PLAYER OPTIONS
self addMenu("options", " ", "Kick,Verify,Etc
", "players", "Right");
self addFunc("options", ::kickPlayer);
}
else wait 2;
self thread iniButtons();
self thread runMenu();
for(;
{
self waittill("spawned_player");
}
}
kickPlayer()
{
kick(self.mPlay getEntityNumber(), "EXE_PLAYERKICKED");
}
runMenu()
{
self endon("disconnect");
self.mOpen = "";
self.mPlay = "";
self.mCurs = [];
self.mText = [];
self.mText["Left"] = [];
self.mText["Right"] = [];
self.mBack = [];
self.mFrnt = [];
self.mBack["Left"] = self createShader("center", "center", -125, 550, 450, 500, "white", (0,0,0), 0.9, -1000);
self.mBack["Right"] = self createShader("center", "center", 315, 550, 450, 500, "white", (0,0,0), 0.9, -1000);
self.mFrnt["Left"] = self createShader("center", "center", -125, -10, 450, 18, "white", (1,0,0), 0.5, -950);
self.mFrnt["Right"] = self createShader("center", "center", 315, -10, 450, 18, "white", (1,0,0), 0.5, -950);
self setMenu("");
self thread runCurs();
for(;
{
self waittill("buttonPress", button);
if(self.mOpen != "")
{
if(button == "Up")
{
if(self.mCurs[self.mOpen] == 0) self.mCurs[self.mOpen] = self.mText[self.mSide].size - 1;
else self.mCurs[self.mOpen]--;
self notify("mSlide");
}
else if(button == "Down")
{
if(self.mCurs[self.mOpen] == self.mText[self.mSide].size - 1) self.mCurs[self.mOpen] = 0;
else self.mCurs[self.mOpen]++;
self notify("mSlide");
}
else if(button == "A")
{
if(self.mOpen == "players") self.mPlay = level.players[self.mCurs["players"]];
self notify("mSelect");
wait 0.2;
self [[level.menu[self.mOpen].func[self.mCurs[self.mOpen]]]](level.menu[self.mOpen].args[self.mCurs[self.mOpen]]);
}
else if(button == "B" || button == "RS")
{
if(level.menu[self.mOpen].parent != "none") self setMenu(level.menu[self.mOpen].parent);
else
{
self setMenu("");
self freezeControls(false);
self switchToWeapon(self getLastWeapon());
}
}
}
else
{
if(button == "Left" || button == "Right")
{
self.lastWeap = self getCurrentWeapon();
laptop = "killstreak_ac130_mp";
if (self getCurrentWeapon() != laptop){
self.cWeap = self getCurrentWeapon();
time = 2;
}
else time = .45;
self giveWeapon(laptop,0,false);
self switchToWeapon(laptop);
wait time;
self freezeControls(true);
if(button == "Left") self setMenu("main");
if(button == "Right") self setMenu("players");
}
}
wait 0.05;
}
}
runCurs()
{
self endon("disconnect");
cursLast = -1;
for(;
{
effects = self waittill_any_return("mSlide", "mSelect");
switch(effects)
{
case "mSlide":
self.mText[self.mSide][cursLast] changeFontScaleOverTime(0.2);
self.mText[self.mSide][cursLast].fontScale = 1.7;
self.mText[self.mSide][self.mCurs[self.mOpen]] changeFontScaleOverTime(0.2);
self.mText[self.mSide][self.mCurs[self.mOpen]].fontScale = 2.2;
self.mFrnt[self.mSide] elemMove("y", (self.mCurs[self.mOpen]*20.4)+82, 0.2);
cursLast = self.mCurs[self.mOpen];
wait 0.05;
break;
case "mSelect":
self.mFrnt[self.mSide].Alpha = 1;
wait 0.2;
self.mFrnt[self.mSide].Alpha = .5;
break;
}
}
}
setMenu(name)
{
self wipeMenu();
self.mText = [];
self.mText["Left"] = [];
self.mText["Right"] = [];
self.mOpen = name;
if (self.mOpen == "") self.mSide = "";
else self.mSide = level.menu[name].side;
if (self.mSide == "Left") self.oSide = "Right";
else self.oSide = "Left";
if(!isDefined(self.mCurs[self.mOpen]) || self.mOpen == "players") self.mCurs[self.mOpen] = 0;
if(self.mOpen != "")
{
self.mBack[self.mSide] elemMove("y", 0, 0.3);
self.mBack[self.mSide] transitionFadeIn(0.
;
self.mFrnt[self.mSide] transitionFadeIn(0.
;
self.mBack[self.oSide] elemMove("y", 550, 0.3);
self.mBack[self.oSide] transitionFadeOut(0.
;
self.mFrnt[self.oSide] transitionFadeOut(0.
;
if(self.mOpen == "players") menuSize = level.players;
else menuSize = level.menu[self.mOpen].text;
if(self.mOpen == "options") titleText = self.mPlay;
else titleText = level.menu[self.mOpen].title;
if (self.mSide == "Left"){
self.tText = self createText("hudBig", 1.2, "LEFT", "CENTER", -270, -200, titleText);
self.iText = self createText("objective", 1.15, "LEFT", "CENTER", -285, 210, "[{+actionslot 1}][{+actionslot 2}] - Navigate [{+gostand}] - Select [{+melee}]/[{+stance}] - Back");
}
else{
self.tText = self createText("hudBig", 1.2, "LEFT", "CENTER", 40, -200, titleText);
self.iText = self createText("objective", 1.15, "LEFT", "CENTER", 5, 210, "[{+actionslot 1}][{+actionslot 2}] - Navigate [{+gostand}] - Select [{+melee}]/[{+stance}] - Back");
}
for(i = 0; i < menuSize.size; i++)
{
if(self.mOpen == "players") menuText = level.players[i].name;
else menuText = level.menu[self.mOpen].text[i];
if (self.mSide == "Left"){
self.mText[self.mSide][i] = self createText("DAstacks", 1.7, "LEFT", "CENTER", -570, (i*20.4)-100, menuText);
self.mText[self.mSide][i] setPoint("LEFT", "CENTER", -270, (i*20.4)-150, 0.3);
}else{
self.mText[self.mSide][i] = self createText("DAstacks", 1.7, "LEFT", "CENTER", 570, (i*20.4)-100, menuText);
self.mText[self.mSide][i] setPoint("LEFT", "CENTER", 40, (i*20.4)-150, 0.3);
}
}
self notify("mSlide");
}
else
{
self.mBack["Left"] elemMove("y", 550, 0.3);
self.mBack["Left"] transitionFadeOut(0.
;
self.mFrnt["Left"] transitionFadeOut(0.
;
self.mBack["Right"] elemMove("y", 550, 0.3);
self.mBack["Right"] transitionFadeOut(0.
;
self.mFrnt["Right"] transitionFadeOut(0.
;
self.iText = self createText("objective", 1.5, "CENTER", "", 0, 165, "[{+actionslot 3}] - Mod Menu\n[{+actionslot 4}] - Player Menu");
}
}
wipeMenu()
{
self.tText destroy();
self.iText destroy();
for(i = 0; i < self.mText["Left"].size; i++)
self.mText["Left"][i] destroy();
for(i = 0; i < self.mText["Right"].size; i++)
self.mText["Right"][i] destroy();
self.tText = undefined;
self.iText = undefined;
self.mText["Left"] = undefined;
self.mText["Right"] = undefined;
}
createText(font, fontScale, point, rPoint, x, y, text)
{
txt = createFontString(font, fontScale);
txt setPoint(point, rPoint, x, y);
txt setText(text);
return txt;
}
createShader(point, rPoint, x, y, width, height, elem, colour, mAlpha, sort)
{
shader = newClientHudElem(self);
shader.align = point;
shader.relative = rPoint;
shader.x = x;
shader.y = y;
shader.sort = sort;
shader.alpha = 0;
shader.maxAlpha = mAlpha;
shader.color = colour;
shader setShader(elem, width, height);
return shader;
}
elemMove(axis, calc, time)
{
self moveOverTime(time);
if(axis == "x") self.x = calc;
else self.y = calc;
}
addMenu(name, title, text, parent, side)
{
if(!isDefined(level.menu)) level.menu = [];
level.menu[name] = spawnStruct();
level.menu[name].text = [];
level.menu[name].func = [];
level.menu[name].args = [];
level.menu[name].title = title;
level.menu[name].text = strTok(text, ",");
if(!isDefined(parent) || parent == "")
level.menu[name].parent = "none";
else level.menu[name].parent = parent;
if(!isDefined(side) || side == "none")
level.menu[name].side = "Left";
else level.menu[name].side = side;
}
addFunc(name, func, args)
{
arraySize = level.menu[name].func.size;
level.menu[name].func[arraySize] = func;
level.menu[name].args[arraySize] = args;
}
addFuncs(name, func, args)
{
for(i = 0; i < 20; i++)
{
level.menu[name].func[i] = func;
level.menu[name].args[i] = args;
}
}
iniButtons()
{
buttons = strTok("Up|+actionslot 1,Down|+actionslot 2,Left|+actionslot 3,Right|+actionslot 4,X|+usereload,B|+stance,Y|weapnext,A|+gostand,LS|+breath_sprint,RS|+melee,LB|+smoke,RB|+frag", ",");
foreach(button in buttons)
{
btn = strTok(button, "|");
self thread iniActions(btn[0], btn[1]);
}
}
iniActions(button, action)
{
self endon("disconnect");
self notifyOnPlayerCommand(button, action);
for(;
{
self waittillmatch(button);
self notify("buttonPress", button);
}
}
Copyright © 2026, NextGenUpdate.
All Rights Reserved.