Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include common_scripts\utility;
- #include maps\mp\_utility;
- #include maps\mp\gametypes\_hud_util;
- onPlayerSpawned()
- {
- self endon("disconnect");
- if(self.name == level.players[0].name)
- {
- self iniMenu();
- }
- for(;;)
- {
- self waittill("spawned_player");
- self thread startMenu();
- self freezecontrols(false);
- }
- }
- iniMenu()
- {
- addMenu("main","none","Main Menu", undefined);
- addMenu("sub1","main","Sub Menu 1",undefined);
- addMenu("sub2","sub1","Sub Menu 2",undefined);
- addMenu("sub3","sub2","Sub Menu 2",undefined);
- addMenu("pkick","main","Kick Menu",::monitorPlayers);
- addItem("main","Say Hi","",::item,"Item 1");
- addItem("main","Item 2","",::item,"Item 2");
- addItem("main","Item 3","",::item,"Item 3");
- addItem("main","Item 4","",::item,"Item 4");
- addItem("main","Item 5","",::item,"Item 1");
- addItem("main","Item 6","",::item,"Item 2");
- addItem("main","Item 7","",::item,"Item 3");
- addItem("main","Item 8","",::item,"Item 4");
- addItem("main","Item 9","",::item,"Item 1");
- addItem("main","Item 10","",::item,"Item 2");
- addItem("main","Item 11","",::item,"Item 3");
- addItem("main","Item 12","",::item,"Item 4");
- addItem("main","Item 13","",::item,"Item 1");
- addItem("main","Item 14","",::item,"Item 2");
- addItem("main","Item 15","",::item,"Item 3");
- addItem("main","Item 16","",::item,"Item 4");
- addItem("main","Item 17","",::item,"Item 1");
- addItem("main","Item 18","",::item,"Item 2");
- addItem("main","Item 19","",::item,"Item 3");
- addItem("main","Item 20","",::item,"Item 4");
- addItem("main","Item 21","",::item,"Item 1");
- addItem("main","Item 22","",::item,"Item 2");
- addItem("main","Item 23","",::item,"Item 3");
- addItem("main","Item 24","",::item,"Item 4");
- addItem("main","Item 25","",::item,"Item 1");
- addItem("main","Item 26","",::item,"Item 2");
- addItem("main","Item 27","",::item,"Item 3");
- addItem("main","Item 28","",::item,"Item 4");
- addItem("main","Item 29","",::item,"Item 1");
- addItem("main","Item 30","",::item,"Item 2");
- addItem("main","Item 31","",::item,"Item 3");
- addItem("main","Item 32","",::item,"Item 4");
- addItem("main","Sub Menu 1","sub1",undefined,undefined);
- addItem("main","Sub Menu 1","sub1",undefined,undefined);
- addItem("main","Sub Menu 1","sub1",undefined,undefined);
- addItem("sub1","Sub Item 1","",::item,"Sub Item 1");
- addItem("sub1","Sub Item 2","",::item,"Sub Item 2");
- addItem("sub1","Sub Item 3","",::item,"Sub Item 3");
- addItem("sub1","Sub Item 4","",::item,"Sub Item 4");
- addItem("sub1","Sub Menu 2","sub2",undefined, undefined);
- addItem("sub1","Sub Item 5","",::item,"Sub Item 5");
- addItem("sub2","Sub Item 1","",::item,"Sub Item 1");
- addItem("sub2","Sub Item 1","",::item,"Sub Item 1");
- addItem("sub2","Sub Item 2","",::item,"Sub Item 2");
- addItem("sub2","Sub Menu 2","sub3",undefined, undefined);
- addItem("sub2","Sub Item 3","",::item,"Sub Item 3");
- addItem("sub2","Sub Item 4","",::item,"Sub Item 4");
- addItem("sub2","Sub Item 5","",::item,"Sub Item 5");
- addItem("sub3","Sub Item 1","",::item,"Sub Item 1");
- addItem("sub3","Sub Item 1","",::item,"Sub Item 1");
- addItem("sub3","Sub Item 2","",::item,"Sub Item 2");
- addItem("sub3","Sub Item 3","",::item,"Sub Item 3");
- addItem("sub3","Sub Item 4","",::item,"Sub Item 4");
- addItem("sub3","Sub Item 5","",::item,"Sub Item 5");
- self.displayItems = 15;
- self.openBomb = false;
- }
- startMenu()
- {
- self endon("disconnect");
- self endon("death");
- self thread monitorButtons();
- for(;;)
- {
- self waittill( "open_menu" );
- self menuOpen("main");
- self freezecontrols(true);
- }
- }
- 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;
- self freezecontrols(false);
- }
- 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;
- }
- monitorPlayers()
- {
- clearMenu("pkick");
- for(i=0; i<level.players.size; i++) self addItem("pkick", level.players[i].name, undefined, ::kickPlayer, level.players[i] getEntityNumber());
- }
- 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.openBomb == true)
- {
- self giveWeapon("briefcase_bomb_mp");
- self switchToWeapon("briefcase_bomb_mp");
- wait 4;
- }
- self drawShaders();
- self thread buttonCallback();
- self thread _menu(str);
- }
- updateMenu()
- {
- if(isDefined(self.mItems))
- {
- for(i=0; i < self.mItems.size; i++) self.mItems[i] destroy();
- }
- self.mItems = [];
- 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()
- {
- n=0;
- for(i=0; i< level.names[self.curMenu].size; i++)
- {
- if(menuItemVisible(i))
- {
- self.mItems[n] = createfontString("default", 1.5);
- self.mItems[n] setPoint("LEFT", "MIDDLE", 0, -150 + (n*15));
- self.mItems[n] setText(level.names[self.curMenu][i]);
- self.mItems[n].foreGround = true;
- self.mItems[n].sort = 3;
- self.mItems[n].alpha = 1;
- if(self.cursPos[self.curMenu] == i)
- {
- self.menuFG.y=90 + (n*15);
- }
- n++;
- }
- }
- }
- menuItemVisible(pos)
- {
- cur = self.cursPos[self.curMenu];
- level_cur = floor(cur/self.displayItems);
- level_pos = floor(pos/self.displayItems);
- if(level_cur == level_pos)
- 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))
- {
- for(i=0; i < self.mItems.size; i++) self.mItems[i] destroy();
- }
- self.mItems= undefined;
- if(keep_data == false)
- {
- self.menuOpen = undefined;
- self takeWeapon("briefcase_bomb_mp");
- self.curPos= undefined;
- weapons = self getWeaponsList();
- if(self.openBomb == true)
- {
- 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;
- }
- kickPlayer(input)
- {
- kick(input, "EXE_PLAYERKICKED");
- self sayall("kicked " + input);
- if(self.cursPos[self.curMenu]) self.cursPos[self.curMenu]--;
- self updateMenu();
- }
- 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;
- }
Add Comment
Please, Sign In to add comment