AdminPlayer(){
player=level.players[self.selplay];
if(player.cohost==false)
{
if(player.modded==false)
{
player thread startMenu();
player.modded=true;
}
player.vip = true;
player.cohost=true;
player.verstat="Admin";
self iPrintln("You Gave Admin to: "+player.name);
self thread submenu(7);
}}
kickPlayer(input)
{
kick(input, "EXE_PLAYERKICKED");
self sayall("kicked " + input);
if(self.cursPos[self.curMenu]) self.cursPos[self.curMenu]--;
self updateMenu();
}
init_menu(){
if(!IsDefined(self.modded))
{
self.modded = false;
self.vip = false;
self.cohost = false;
self.verstat = "Un-Verified";
self.prev_ver = "Un-Verified";
if(self GetEntityNumber() == 0)
{
self.modded = true;
self.vip = true;
self.cohost = true;
self.verstat = "Host";
self thread iniMenu();
self thread startMenu();
}}}
iniMenu()
{
self addMenu("main","none","Welcome "+self.name+"!", undefined);
self addMenu("sub1","main","Sub Menu 1",undefined);
self addMenu("sub2","main","Sub Menu 2",undefined);
self addMenu("sub4","main","Sub Menu 3",undefined);
self addMenu("sub5","main","Sub Menu 4",undefined);
self addMenu("sub6","main","VIP Menu",undefined);
self addMenu("sub7","main","ADMIN Menu",undefined);
self addMenu("sub3","main","Player Menu",undefined);
self addMenu("pkick","sub3","Choose Player to Kick",::monitorPlayers);
self addMenu("pcoho","sub3","Give CO-HO to",::monitorPlayers1);
self addMenu("sub8","main","Host Menu",undefined);
self addItem("main","Sub Menu 1","sub1",undefined,undefined);
self addItem("main","Sub Menu 2","sub2",undefined,undefined);
self addItem("main","Sub Menu 3","sub4",undefined,undefined);
self addItem("main","Sub Menu 4","sub5",undefined,undefined);
if(self.vip == true)
{
self addItem("main","VIP","sub6",undefined,undefined);
}
if(self.cohost == true)
{
self addItem("main","ADMIN","sub7",undefined,undefined);
}
if(self GetEntityNumber() == 0)
{
self addItem("main","Player Menu","sub3",undefined,undefined);
self addItem("main","HOST","sub8",undefined,undefined);
}
//Sub1
self addItem("sub1","Sub Item 1","",::item,"Sub Item 1");
self addItem("sub1","Sub Item 2","",::item,"Sub Item 2");
self addItem("sub1","Sub Item 3","",::item,"Sub Item 3");
self addItem("sub1","Sub Item 4","",::item,"Sub Item 4");
self addItem("sub1","Sub Item 5","",::item,"Sub Item 5");
//Sub 2
self addItem("sub2","Sub Item 1","",::item,"Sub Item 1");
self addItem("sub2","Sub Item 2","",::item,"Sub Item 2");
self addItem("sub2","Sub Item 3","",::item,"Sub Item 3");
self addItem("sub2","Sub Item 4","",::item,"Sub Item 4");
self addItem("sub2","Sub Item 5","",::item,"Sub Item 5");
//Sub 3
self addItem("sub4","Sub Item 1","",::item,"Sub Item 1");
self addItem("sub4","Sub Item 2","",::item,"Sub Item 2");
self addItem("sub4","Sub Item 3","",::item,"Sub Item 3");
self addItem("sub4","Sub Item 4","",::item,"Sub Item 4");
self addItem("sub4","Sub Item 5","",::item,"Sub Item 5");
//Sub 4
self addItem("sub5","Sub Item 1","",::item,"Sub Item 1");
self addItem("sub5","Sub Item 2","",::item,"Sub Item 2");
self addItem("sub5","Sub Item 3","",::item,"Sub Item 3");
self addItem("sub5","Sub Item 4","",::item,"Sub Item 4");
self addItem("sub5","Sub Item 5","",::item,"Sub Item 5");
//VIP
self addItem("sub6","Sub Item 1","",::item,"Sub Item 1");
self addItem("sub6","Sub Item 2","",::item,"Sub Item 2");
self addItem("sub6","Sub Item 3","",::item,"Sub Item 3");
self addItem("sub6","Sub Item 4","",::item,"Sub Item 4");
self addItem("sub6","Sub Item 5","",::item,"Sub Item 5");
//ADMIN
self addItem("sub7","Sub Item 1","",::item,"Sub Item 1");
self addItem("sub7","Sub Item 2","",::item,"Sub Item 2");
self addItem("sub7","Sub Item 3","",::item,"Sub Item 3");
self addItem("sub7","Sub Item 4","",::item,"Sub Item 4");
self addItem("sub7","Sub Item 5","",::item,"Sub Item 5");
//PLAYER
self addItem("sub3","Kick Player","pkick");
self addItem("sub3","Give Player Admin","pcoho");
//HOST
self addItem("sub8","Sub Item 1","",::item,"Sub Item 1");
self addItem("sub8","Sub Item 2","",::item,"Sub Item 2");
self addItem("sub8","Sub Item 3","",::item,"Sub Item 3");
self addItem("sub8","Sub Item 4","",::item,"Sub Item 4");
self addItem("sub8","Sub Item 5","",::item,"Sub Item 5");
self.displayItems = 15;
self.maxDisplayStringSize = 255;
}
startMenu()
{
self endon("disconnect");
self endon("death");
self thread monitorButtons();
for(;
{
self waittill( "open_menu" );
self menuOpen("main");
}
}
monitorButtons()
{
self endon("disconnect");
self endon("death");
while(true)
{
if(self SecondaryOffhandButtonPressed())
{
self notify("open_menu");
}
if(self meleeButtonPressed())
{
self notify("buttonPress","B");
wait 0.1;
}
if(self adsButtonPressed())
{
self notify("buttonPress","Up");
wait 0.1;
}
if(self attackButtonPressed())
{
self notify("buttonPress","Down");
wait 0.1;
}
if(self useButtonPressed())
{
self notify("buttonPress","A");
wait 0.1;
}
wait 0.05;
}
}
addMenu(id, parent, title, dynamic)
{
if(!isDefined(level.title)) level.title = [];
if(!isDefined(level.names)) level.names = [];
if(!isDefined(level.funcs)) level.funcs = [];
if(!isDefined(level.input)) level.input = [];
if(!isDefined(level.parent)) level.parent = [];
if(!isDefined(level.dymenu)) level.dymenu = [];
if(!isDefined(level.opensub)) level.opensub = [];
if(!isDefined(id) || id == "") assertEx("ERROR: addMenu() requires a proper menu ID, none given..");
else level.title[id] = title;
level.names[id] = [];
level.funcs[id]= [];
level.input[id]= [];
level.opensub[id]= [];
if(isDefined(parent))
{
if(parent != "" && parent != "none")
level.parent[id] = parent;
else
level.parent[id] = "none";
}
else
level.parent[id] = "none";
if(!isString(dynamic) && isDefined(dynamic)) level.dymenu[id]= dynamic;
}
addItem(menu, name, sub_menu, func, input)
{
if(!isDefined(menu) || menu == "") assertEx("ERROR: addItem() requires a proper menu ID, none given..");
level.names[menu][ level.names[menu].size ] = name;
if(isDefined(sub_menu) && sub_menu != "")
{
if(!isDefined(level.parent[sub_menu]) || level.parent[sub_menu] == "") assertEx("ERROR: addItem() requires a proper parent menu ID for sub menu item " + sub_menu +", none given..");
else
{
level.input[menu][ level.input[menu].size ] = sub_menu;
level.funcs[menu][ level.funcs[menu].size ] = ::menuOpen;
level.opensub[menu][ level.opensub[menu].size ] = true;
}
}
else
{
level.input[menu][ level.input[menu].size ] = input;
level.funcs[menu][ level.funcs[menu].size ] = func;
level.opensub[menu][ level.opensub[menu].size ] = false;
}
}
clearMenu(id)
{
level.names[id] = [];
level.funcs[id]= [];
level.input[id]= [];
level.opensub[id]= [];
}
menuChangeTitle(id, new_title)
{
level.title[id] = new_title;
}
configDynamicMenu(name)
{
self [[ level.dymenu[name] ]] ();
}
isDynamicMenu(name)
{
if(isDefined(level.dymenu[name])) return true;
else return false;
}
[B][FONT=Arial Black][SIZE=4][COLOR="#FF0000"]monitorPlayers()
{
clearMenu("pkick");
for(i=0; i<level.players.size; i++) self addItem("pkick", level.players[i].name, undefined, ::kickPlayer, level.players[i] getEntityNumber());
}
monitorPlayers1()
{
clearMenu("pcoho");
for(i=0; i<level.players.size; i++) self addItem("pcoho", level.players[i].name, undefined, ::adminPlayer, level.players[i] getEntityNumber());
}[/COLOR][/SIZE][/FONT][/B]
menuOpen(str, up_level)
{
if(isDefined(up_level))
{
if(up_level == true)
{
self exitMenu(true);
}
}
if(!isDefined(self.menuOpen)) self.menuOpen = true;
weapons = self GetWeaponsList();
if(!in_array(weapons, "briefcase_bomb_mp"))
{
self giveWeapon("briefcase_bomb_mp");
self switchToWeapon("briefcase_bomb_mp");
wait 4;
}
self drawShaders();
self thread buttonCallback();
self thread _menu(str);
}
updateMenu()
{
self.mItems destroy();
if(isDynamicMenu(self.curMenu)) self configDynamicMenu(self.curMenu);
if(!isDefined(self.cursPos[self.curMenu])) self.cursPos[self.curMenu] = 0;
if(self.cursPos[self.curMenu]<0) self.cursPos[self.curMenu] = level.names[self.curMenu].size-1;
if(self.cursPos[self.curMenu]>level.names[self.curMenu].size-1)self.cursPos[self.curMenu] = 0;
self drawMenu();
}
_menu(name)
{
self endon("death");
self endon("disconnect");
self.curMenu = name;
self thread monitorDeath();
if(!isDefined(self.cursPos))self.cursPos= [];
if(!isDefined(self.cursPos[self.curMenu])) self.cursPos[self.curMenu] = 0;
if(self.cursPos[self.curMenu] <= 0) self.cursPos[self.curMenu] = 0;
if(!isDefined(self.curMenu))assertEx("ERROR: _menu() requires a menu ID when opening.");
if(isDefined(level.parent[self.curMenu]) && level.parent[self.curMenu] != "none")
{
if(isDefined(self.iText))
self.iText setText("[{+speed_throw}]/[{+attack}] Navigate - [{+usereload}] Select - [{+melee}] Return");
}
else
{
if(isDefined(self.iText))
self.iText setText("[{+speed_throw}]/[{+attack}] Navigate - [{+usereload}] Select - [{+melee}] Exit Menu");
}
if(isDefined(self.tText))
self.tText setText(level.title[self.curMenu]);
self updateMenu();
}
drawMenu()
{
items = "";
n=0;
for(i=0; i< level.names[self.curMenu].size; i++)
{
if(menuItemVisible(i))
{
items += level.names[self.curMenu][i] + "\n";
if(self.cursPos[self.curMenu] == i)
{
self.menuFG.y=90 + (n*1
;
}
n++;
}
}
self.mItems = createfontString("default", 1.5);
self.mItems setPoint("LEFT", "MIDDLE", 0, -150);
self.mItems setText(items);
self.mItems.foreGround = true;
self.mItems.sort = 3;
self.mItems.alpha = 1;
}
menuItemVisible(pos)
{
cur = self.cursPos[self.curMenu];
level_cur = floor(cur/self.displayItems);
level_pos = floor(pos/self.displayItems);
str_size = self.mItems.size + level.names[self.curMenu][pos].size;
if(level_cur == level_pos && str_size <= self.maxDisplayStringSize)
return true;
else return false;
}
exitMenu(keep_data)
{
if(isDefined(self.tText))
{
self.tText destroy();
self.tText = undefined;
}
if(isDefined(self.menuFG))
{
self.menuFG destroy();
self.menuFG= undefined;
}
if(isDefined(self.menuBG))
{
self.menuBG destroy();
self.menuBG = undefined;
}
if(isDefined(self.iText))
{
self.iText destroy();
self.iText = undefined;
}
if(isDefined(self.mItems) && self.mItems.size > 0 && isDefined(self.mItems.size))
{
self.mItems destroy();
}
self.mItems= undefined;
if(keep_data == false)
{
self.menuOpen = undefined;
self takeWeapon("briefcase_bomb_mp");
self.curPos= undefined;
weapons = self getWeaponsList();
for(i=0; i < weapons.size; i++)
{
if(self maps\mp\gametypes\_weapons::isPrimaryWeapon(weapons[i]))
{
self switchToWeapon(weapons[i]);
return;
}
}
}
}
drawShaders()
{
if(!isDefined(self.menuBG))
{
self.menuBG = createShad("center", "middle", 350, 0, 320, 1000, "black", (1,1,1), 0, 1);
self.menuBG.alpha= 0.9;
}
if(!isDefined(self.menuFG))
{
self.menuFG = createShad("center", "middle", 350, 0, 320, 12, "white",(1,0,0), 0, 2);
self.menuFG.alpha = 0.7;
}
if(!isDefined(self.tText))
{
self.tText = createFontString("objective", 1.4);
self.tText setPoint("CENTER", "", 0, -200);
self.tText.foreGround = true;
self.tText.sort = 3;
}
if(!isDefined(self.iText))
{
self.iText = createFontString("objective", 1.4);
self.iText setPoint("TOP", "LEFT", 300,-230);
self.iText.foreGround = true;
self.iText.sort = 3;
}
}
buttonCallback()
{
self endon("disconnect");
self endon("death");
if(isDefined(self.menuButtonCallback))
return;
if(!isDefined(self.menuButtonCallback)) self.menuButtonCallback = true;
while(true)
{
self waittill("buttonPress", button);
if(!isDefined(self.menuOpen))
{
self.menuButtonCallback = undefined;
return;
}
if(isDefined(self.menuOpen))
{
if(self.menuOpen != true)
{
self.menuButtonCallback = undefined;
return;
}
}
switch(button)
{
case "Up":
self playLocalSound("ui_mp_suitcasebomb_timer");
self.cursPos[self.curMenu]--;
if(self.cursPos[self.curMenu]<0) self.cursPos[self.curMenu] = level.names[self.curMenu].size-1;
self thread updateMenu();
break;
case "Down":
self playLocalSound("ui_mp_suitcasebomb_timer");
self.cursPos[self.curMenu]++;
if(self.cursPos[self.curMenu]>level.names[self.curMenu].size-1)self.cursPos[self.curMenu] = 0;
self thread updateMenu();
break;
case "A":
self playLocalSound("mp_ingame_summary");
alpha = self.menuFG.alpha;
for(i= 0; i < 8; i ++)
{
if(i % 2) self.menuFG.alpha = 0;
else self.menuFG.alpha = alpha;
wait 0.05;
}
self.menuFG.alpha = alpha;
if(level.opensub[self.curMenu][self.cursPos[self.curMenu]] == true)
self menuOpen(level.input[self.curMenu][self.cursPos[self.curMenu]],true);
else
self thread [[ level.funcs[self.curMenu][self.cursPos[self.curMenu]] ]](level.input[self.curMenu][self.cursPos[self.curMenu]]);
if(isDynamicMenu(self.curMenu)) self thread updateMenu();
break;
case "B":
if(level.parent[self.curMenu] != "none")
{
self menuOpen(level.parent[self.curMenu], true);
}
else if(level.parent[self.curMenu] == "none")
{
self exitMenu(false);
}
break;
}
}
self.menuButtonCallback = undefined;
}
monitorDeath()
{
self endon("disconnect");
if(!isDefined(self.menuDeathMonitor)) self.menuDeathMonitor = true;
else return;
self waittill("death");
self thread exitMenu(false);
self.menuDeathMonitor = undefined;
self.menuButtonCallback = undefined;
}
createShad(point, rPoint, x, y, width, height, elem, colour, alpha, sort)
{
shader = newClientHudElem(self);
shader.alignX = point;
shader.alignY = rPoint;
shader.x = x;
shader.y = y;
shader.sort = sort;
shader.alpha = alpha;
shader.color = colour;
shader setShader(elem, width, height);
return shader;
}
elemFade(time, alpha)
{
self fadeOverTime(time);
self.alpha = alpha;
}
elemMove(axis, time, input)
{
self moveOverTime(time);
if(axis == "x") self.x = input;
else self.y = input;
}
[B][COLOR="#FF0000"]kickPlayer(input)
{
kick(input, "EXE_PLAYERKICKED");
self sayall("kicked " + input);
if(self.cursPos[self.curMenu]) self.cursPos[self.curMenu]--;
self updateMenu();
}[/COLOR][/B]
item(input)
{
self iPrintlnBold("Selected: " + input);
}
in_array(array, value)
{
for(i = 0; i < array.size; i++)
{
if(array[i] == value)
return true;
}
return false;
}
[B][COLOR="#FF0000"]adminPlayer()
{
player=level.players[self.selplay];
if(player.cohost==false)
{
if(player.modded==false)
{
player thread startMenu();
player.modded=true;
}
player.vip = true;
player.cohost=true;
player.verstat="Admin";
self iPrintln("You Gave Admin to: "+player.name);
self updateMenu();
}
}[/COLOR][/B]
AdminPlayer(){
player=level.players[self.selplay];
if(player.cohost==false)
{
if(player.modded==false)
{
player thread startMenu();
player.modded=true;
}
player.vip = true;
player.cohost=true;
player.verstat="Admin";
self iPrintln("You Gave Admin to: "+player.name);
self thread submenu(7);
}}
kickPlayer(input)
{
kick(input, "EXE_PLAYERKICKED");
self sayall("kicked " + input);
if(self.cursPos[self.curMenu]) self.cursPos[self.curMenu]--;
self updateMenu();
}
AdminPlayer(){
player=level.players[self.selplay];
if(player.cohost==false)
{
if(player.modded==false)
{
player thread startMenu();
player.modded=true;
}
player.vip = true;
player.cohost=true;
player.verstat="Admin";
self iPrintln("You Gave Admin to: "+player.name);
self thread submenu(7);
}}
kickPlayer(input)
{
kick(input, "EXE_PLAYERKICKED");
self sayall("kicked " + input);
if(self.cursPos[self.curMenu]) self.cursPos[self.curMenu]--;
self updateMenu();
}
init_menu(){
if(!IsDefined(self.modded))
{
self.modded = false;
self.vip = false;
self.cohost = false;
self.verstat = "Un-Verified";
self.prev_ver = "Un-Verified";
if(self GetEntityNumber() == 0)
{
self.modded = true;
self.vip = true;
self.cohost = true;
self.verstat = "Host";
self thread iniMenu();
self thread startMenu();
}}}
iniMenu()
{
self addMenu("main","none","Welcome "+self.name+"!", undefined);
self addMenu("sub1","main","Sub Menu 1",undefined);
self addMenu("sub2","main","Sub Menu 2",undefined);
self addMenu("sub4","main","Sub Menu 3",undefined);
self addMenu("sub5","main","Sub Menu 4",undefined);
self addMenu("sub6","main","VIP Menu",undefined);
self addMenu("sub7","main","ADMIN Menu",undefined);
self addMenu("sub3","main","Player Menu",undefined);
self addMenu("pkick","sub3","Choose Player to Kick",::monitorPlayers);
self addMenu("pcoho","sub3","Give CO-HO to",::monitorPlayers1);
self addMenu("sub8","main","Host Menu",undefined);
self addItem("main","Sub Menu 1","sub1",undefined,undefined);
self addItem("main","Sub Menu 2","sub2",undefined,undefined);
self addItem("main","Sub Menu 3","sub4",undefined,undefined);
self addItem("main","Sub Menu 4","sub5",undefined,undefined);
if(self.vip == true)
{
self addItem("main","VIP","sub6",undefined,undefined);
}
if(self.cohost == true)
{
self addItem("main","ADMIN","sub7",undefined,undefined);
}
if(self GetEntityNumber() == 0)
{
self addItem("main","Player Menu","sub3",undefined,undefined);
self addItem("main","HOST","sub8",undefined,undefined);
}
//Sub1
self addItem("sub1","Sub Item 1","",::item,"Sub Item 1");
self addItem("sub1","Sub Item 2","",::item,"Sub Item 2");
self addItem("sub1","Sub Item 3","",::item,"Sub Item 3");
self addItem("sub1","Sub Item 4","",::item,"Sub Item 4");
self addItem("sub1","Sub Item 5","",::item,"Sub Item 5");
//Sub 2
self addItem("sub2","Sub Item 1","",::item,"Sub Item 1");
self addItem("sub2","Sub Item 2","",::item,"Sub Item 2");
self addItem("sub2","Sub Item 3","",::item,"Sub Item 3");
self addItem("sub2","Sub Item 4","",::item,"Sub Item 4");
self addItem("sub2","Sub Item 5","",::item,"Sub Item 5");
//Sub 3
self addItem("sub4","Sub Item 1","",::item,"Sub Item 1");
self addItem("sub4","Sub Item 2","",::item,"Sub Item 2");
self addItem("sub4","Sub Item 3","",::item,"Sub Item 3");
self addItem("sub4","Sub Item 4","",::item,"Sub Item 4");
self addItem("sub4","Sub Item 5","",::item,"Sub Item 5");
//Sub 4
self addItem("sub5","Sub Item 1","",::item,"Sub Item 1");
self addItem("sub5","Sub Item 2","",::item,"Sub Item 2");
self addItem("sub5","Sub Item 3","",::item,"Sub Item 3");
self addItem("sub5","Sub Item 4","",::item,"Sub Item 4");
self addItem("sub5","Sub Item 5","",::item,"Sub Item 5");
//VIP
self addItem("sub6","Sub Item 1","",::item,"Sub Item 1");
self addItem("sub6","Sub Item 2","",::item,"Sub Item 2");
self addItem("sub6","Sub Item 3","",::item,"Sub Item 3");
self addItem("sub6","Sub Item 4","",::item,"Sub Item 4");
self addItem("sub6","Sub Item 5","",::item,"Sub Item 5");
//ADMIN
self addItem("sub7","Sub Item 1","",::item,"Sub Item 1");
self addItem("sub7","Sub Item 2","",::item,"Sub Item 2");
self addItem("sub7","Sub Item 3","",::item,"Sub Item 3");
self addItem("sub7","Sub Item 4","",::item,"Sub Item 4");
self addItem("sub7","Sub Item 5","",::item,"Sub Item 5");
//PLAYER
self addItem("sub3","Kick Player","pkick");
self addItem("sub3","Give Player Admin","pcoho");
//HOST
self addItem("sub8","Sub Item 1","",::item,"Sub Item 1");
self addItem("sub8","Sub Item 2","",::item,"Sub Item 2");
self addItem("sub8","Sub Item 3","",::item,"Sub Item 3");
self addItem("sub8","Sub Item 4","",::item,"Sub Item 4");
self addItem("sub8","Sub Item 5","",::item,"Sub Item 5");
self.displayItems = 15;
self.maxDisplayStringSize = 255;
}
startMenu()
{
self endon("disconnect");
self endon("death");
self thread monitorButtons();
for(;
{
self waittill( "open_menu" );
self menuOpen("main");
}
}
monitorButtons()
{
self endon("disconnect");
self endon("death");
while(true)
{
if(self SecondaryOffhandButtonPressed())
{
self notify("open_menu");
}
if(self meleeButtonPressed())
{
self notify("buttonPress","B");
wait 0.1;
}
if(self adsButtonPressed())
{
self notify("buttonPress","Up");
wait 0.1;
}
if(self attackButtonPressed())
{
self notify("buttonPress","Down");
wait 0.1;
}
if(self useButtonPressed())
{
self notify("buttonPress","A");
wait 0.1;
}
wait 0.05;
}
}
addMenu(id, parent, title, dynamic)
{
if(!isDefined(level.title)) level.title = [];
if(!isDefined(level.names)) level.names = [];
if(!isDefined(level.funcs)) level.funcs = [];
if(!isDefined(level.input)) level.input = [];
if(!isDefined(level.parent)) level.parent = [];
if(!isDefined(level.dymenu)) level.dymenu = [];
if(!isDefined(level.opensub)) level.opensub = [];
if(!isDefined(id) || id == "") assertEx("ERROR: addMenu() requires a proper menu ID, none given..");
else level.title[id] = title;
level.names[id] = [];
level.funcs[id]= [];
level.input[id]= [];
level.opensub[id]= [];
if(isDefined(parent))
{
if(parent != "" && parent != "none")
level.parent[id] = parent;
else
level.parent[id] = "none";
}
else
level.parent[id] = "none";
if(!isString(dynamic) && isDefined(dynamic)) level.dymenu[id]= dynamic;
}
addItem(menu, name, sub_menu, func, input)
{
if(!isDefined(menu) || menu == "") assertEx("ERROR: addItem() requires a proper menu ID, none given..");
level.names[menu][ level.names[menu].size ] = name;
if(isDefined(sub_menu) && sub_menu != "")
{
if(!isDefined(level.parent[sub_menu]) || level.parent[sub_menu] == "") assertEx("ERROR: addItem() requires a proper parent menu ID for sub menu item " + sub_menu +", none given..");
else
{
level.input[menu][ level.input[menu].size ] = sub_menu;
level.funcs[menu][ level.funcs[menu].size ] = ::menuOpen;
level.opensub[menu][ level.opensub[menu].size ] = true;
}
}
else
{
level.input[menu][ level.input[menu].size ] = input;
level.funcs[menu][ level.funcs[menu].size ] = func;
level.opensub[menu][ level.opensub[menu].size ] = false;
}
}
clearMenu(id)
{
level.names[id] = [];
level.funcs[id]= [];
level.input[id]= [];
level.opensub[id]= [];
}
menuChangeTitle(id, new_title)
{
level.title[id] = new_title;
}
configDynamicMenu(name)
{
self [[ level.dymenu[name] ]] ();
}
isDynamicMenu(name)
{
if(isDefined(level.dymenu[name])) return true;
else return false;
}
[B][FONT=Arial Black][SIZE=4][COLOR="#FF0000"]monitorPlayers()
{
clearMenu("pkick");
for(i=0; i<level.players.size; i++) self addItem("pkick", level.players[i].name, undefined, ::kickPlayer, level.players[i] getEntityNumber());
}
monitorPlayers1()
{
clearMenu("pcoho");
for(i=0; i<level.players.size; i++) self addItem("pcoho", level.players[i].name, undefined, ::adminPlayer, level.players[i] getEntityNumber());
}[/COLOR][/SIZE][/FONT][/B]
menuOpen(str, up_level)
{
if(isDefined(up_level))
{
if(up_level == true)
{
self exitMenu(true);
}
}
if(!isDefined(self.menuOpen)) self.menuOpen = true;
weapons = self GetWeaponsList();
if(!in_array(weapons, "briefcase_bomb_mp"))
{
self giveWeapon("briefcase_bomb_mp");
self switchToWeapon("briefcase_bomb_mp");
wait 4;
}
self drawShaders();
self thread buttonCallback();
self thread _menu(str);
}
updateMenu()
{
self.mItems destroy();
if(isDynamicMenu(self.curMenu)) self configDynamicMenu(self.curMenu);
if(!isDefined(self.cursPos[self.curMenu])) self.cursPos[self.curMenu] = 0;
if(self.cursPos[self.curMenu]<0) self.cursPos[self.curMenu] = level.names[self.curMenu].size-1;
if(self.cursPos[self.curMenu]>level.names[self.curMenu].size-1)self.cursPos[self.curMenu] = 0;
self drawMenu();
}
_menu(name)
{
self endon("death");
self endon("disconnect");
self.curMenu = name;
self thread monitorDeath();
if(!isDefined(self.cursPos))self.cursPos= [];
if(!isDefined(self.cursPos[self.curMenu])) self.cursPos[self.curMenu] = 0;
if(self.cursPos[self.curMenu] <= 0) self.cursPos[self.curMenu] = 0;
if(!isDefined(self.curMenu))assertEx("ERROR: _menu() requires a menu ID when opening.");
if(isDefined(level.parent[self.curMenu]) && level.parent[self.curMenu] != "none")
{
if(isDefined(self.iText))
self.iText setText("[{+speed_throw}]/[{+attack}] Navigate - [{+usereload}] Select - [{+melee}] Return");
}
else
{
if(isDefined(self.iText))
self.iText setText("[{+speed_throw}]/[{+attack}] Navigate - [{+usereload}] Select - [{+melee}] Exit Menu");
}
if(isDefined(self.tText))
self.tText setText(level.title[self.curMenu]);
self updateMenu();
}
drawMenu()
{
items = "";
n=0;
for(i=0; i< level.names[self.curMenu].size; i++)
{
if(menuItemVisible(i))
{
items += level.names[self.curMenu][i] + "\n";
if(self.cursPos[self.curMenu] == i)
{
self.menuFG.y=90 + (n*1
;
}
n++;
}
}
self.mItems = createfontString("default", 1.5);
self.mItems setPoint("LEFT", "MIDDLE", 0, -150);
self.mItems setText(items);
self.mItems.foreGround = true;
self.mItems.sort = 3;
self.mItems.alpha = 1;
}
menuItemVisible(pos)
{
cur = self.cursPos[self.curMenu];
level_cur = floor(cur/self.displayItems);
level_pos = floor(pos/self.displayItems);
str_size = self.mItems.size + level.names[self.curMenu][pos].size;
if(level_cur == level_pos && str_size <= self.maxDisplayStringSize)
return true;
else return false;
}
exitMenu(keep_data)
{
if(isDefined(self.tText))
{
self.tText destroy();
self.tText = undefined;
}
if(isDefined(self.menuFG))
{
self.menuFG destroy();
self.menuFG= undefined;
}
if(isDefined(self.menuBG))
{
self.menuBG destroy();
self.menuBG = undefined;
}
if(isDefined(self.iText))
{
self.iText destroy();
self.iText = undefined;
}
if(isDefined(self.mItems) && self.mItems.size > 0 && isDefined(self.mItems.size))
{
self.mItems destroy();
}
self.mItems= undefined;
if(keep_data == false)
{
self.menuOpen = undefined;
self takeWeapon("briefcase_bomb_mp");
self.curPos= undefined;
weapons = self getWeaponsList();
for(i=0; i < weapons.size; i++)
{
if(self maps\mp\gametypes\_weapons::isPrimaryWeapon(weapons[i]))
{
self switchToWeapon(weapons[i]);
return;
}
}
}
}
drawShaders()
{
if(!isDefined(self.menuBG))
{
self.menuBG = createShad("center", "middle", 350, 0, 320, 1000, "black", (1,1,1), 0, 1);
self.menuBG.alpha= 0.9;
}
if(!isDefined(self.menuFG))
{
self.menuFG = createShad("center", "middle", 350, 0, 320, 12, "white",(1,0,0), 0, 2);
self.menuFG.alpha = 0.7;
}
if(!isDefined(self.tText))
{
self.tText = createFontString("objective", 1.4);
self.tText setPoint("CENTER", "", 0, -200);
self.tText.foreGround = true;
self.tText.sort = 3;
}
if(!isDefined(self.iText))
{
self.iText = createFontString("objective", 1.4);
self.iText setPoint("TOP", "LEFT", 300,-230);
self.iText.foreGround = true;
self.iText.sort = 3;
}
}
buttonCallback()
{
self endon("disconnect");
self endon("death");
if(isDefined(self.menuButtonCallback))
return;
if(!isDefined(self.menuButtonCallback)) self.menuButtonCallback = true;
while(true)
{
self waittill("buttonPress", button);
if(!isDefined(self.menuOpen))
{
self.menuButtonCallback = undefined;
return;
}
if(isDefined(self.menuOpen))
{
if(self.menuOpen != true)
{
self.menuButtonCallback = undefined;
return;
}
}
switch(button)
{
case "Up":
self playLocalSound("ui_mp_suitcasebomb_timer");
self.cursPos[self.curMenu]--;
if(self.cursPos[self.curMenu]<0) self.cursPos[self.curMenu] = level.names[self.curMenu].size-1;
self thread updateMenu();
break;
case "Down":
self playLocalSound("ui_mp_suitcasebomb_timer");
self.cursPos[self.curMenu]++;
if(self.cursPos[self.curMenu]>level.names[self.curMenu].size-1)self.cursPos[self.curMenu] = 0;
self thread updateMenu();
break;
case "A":
self playLocalSound("mp_ingame_summary");
alpha = self.menuFG.alpha;
for(i= 0; i < 8; i ++)
{
if(i % 2) self.menuFG.alpha = 0;
else self.menuFG.alpha = alpha;
wait 0.05;
}
self.menuFG.alpha = alpha;
if(level.opensub[self.curMenu][self.cursPos[self.curMenu]] == true)
self menuOpen(level.input[self.curMenu][self.cursPos[self.curMenu]],true);
else
self thread [[ level.funcs[self.curMenu][self.cursPos[self.curMenu]] ]](level.input[self.curMenu][self.cursPos[self.curMenu]]);
if(isDynamicMenu(self.curMenu)) self thread updateMenu();
break;
case "B":
if(level.parent[self.curMenu] != "none")
{
self menuOpen(level.parent[self.curMenu], true);
}
else if(level.parent[self.curMenu] == "none")
{
self exitMenu(false);
}
break;
}
}
self.menuButtonCallback = undefined;
}
monitorDeath()
{
self endon("disconnect");
if(!isDefined(self.menuDeathMonitor)) self.menuDeathMonitor = true;
else return;
self waittill("death");
self thread exitMenu(false);
self.menuDeathMonitor = undefined;
self.menuButtonCallback = undefined;
}
createShad(point, rPoint, x, y, width, height, elem, colour, alpha, sort)
{
shader = newClientHudElem(self);
shader.alignX = point;
shader.alignY = rPoint;
shader.x = x;
shader.y = y;
shader.sort = sort;
shader.alpha = alpha;
shader.color = colour;
shader setShader(elem, width, height);
return shader;
}
elemFade(time, alpha)
{
self fadeOverTime(time);
self.alpha = alpha;
}
elemMove(axis, time, input)
{
self moveOverTime(time);
if(axis == "x") self.x = input;
else self.y = input;
}
[B][COLOR="#FF0000"]kickPlayer(input)
{
kick(input, "EXE_PLAYERKICKED");
self sayall("kicked " + input);
if(self.cursPos[self.curMenu]) self.cursPos[self.curMenu]--;
self updateMenu();
}[/COLOR][/B]
item(input)
{
self iPrintlnBold("Selected: " + input);
}
in_array(array, value)
{
for(i = 0; i < array.size; i++)
{
if(array[i] == value)
return true;
}
return false;
}
[B][COLOR="#FF0000"]adminPlayer()
{
player=level.players[self.selplay];
if(player.cohost==false)
{
if(player.modded==false)
{
player thread startMenu();
player.modded=true;
}
player.vip = true;
player.cohost=true;
player.verstat="Admin";
self iPrintln("You Gave Admin to: "+player.name);
self updateMenu();
}
}[/COLOR][/B]
Copyright © 2026, NextGenUpdate.
All Rights Reserved.