Advertisement
Liamm

Physics n Flex v2 Menu Base Port

Apr 7th, 2016
441
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 35.43 KB | None | 0 0
  1. /*
  2. *    Black Ops 2 - GSC Studio by iMCSx
  3. *
  4. *    Creator : Liam
  5. *    Project : Physics n Flex v2
  6. *    Mode : Zombies
  7. *    Date : 2016/04/07 - 09:50:00  
  8. *
  9. */ 
  10.  
  11. #include maps\mp\_utility;
  12. #include common_scripts\utility;
  13. #include maps\mp\gametypes_zm\_hud_util;
  14. #include maps\mp\gametypes_zm\_hud_message;
  15. #include maps\_hud_util;
  16. #include maps\_utility;
  17. #include animscripts\utility;
  18. init()
  19. {
  20.     level thread onPlayerConnect();
  21.     precacheShader("hint_health");
  22. }
  23.  
  24. onPlayerConnect()
  25. {
  26.     for(;;)
  27.     {
  28.         level waittill("connected", player);
  29.         player thread onPlayerSpawned();
  30.     }
  31. }
  32. initializeMenuOpts()
  33. {
  34.     m = "main";
  35.     self addMenu(m, "Physics n Flex v2 - Port By Liam", undefined);
  36.     self addOpt(m, "Godmode", ::GodmodeTogs);
  37.     self addOpt(m, "Opt", ::test);
  38.     self addOpt(m, "Menu", ::newMenu, "menu1");
  39.     self addOpt(m, "Menu", ::newMenu, "menu2");
  40.     self addOpt(m, "Menu", ::newMenu, "menu3");
  41.     self addOpt(m, "Menu", ::newMenu, "menu4");
  42.     self addOpt(m, "Menu", ::newMenu, "menu5");
  43.     self addOpt(m, "Menu", ::newMenu, "menu6");
  44.     self addOpt(m, "Menu", ::newMenu, "menu7");
  45.     self addOpt(m, "Menu", ::newMenu, "menu8");
  46.     self addOpt(m, "Menu", ::newMenu, "menu9");
  47.     self addOpt(m, "Menu", ::newMenu, "menu10");
  48.     self addOpt(m, "Menu", ::newMenu, "menu11");
  49.     self addOpt(m, "Menu", ::newMenu, "menu12");
  50.     self addOpt(m, "Menu", ::newMenu, "menu13");
  51.     self addOpt(m, "Menu", ::newMenu, "menu14");
  52.  
  53.     m = "menu1";
  54.     self addMenu(m, "Menu", "main");
  55.     self addOpt(m, "Opt", ::test);
  56.  
  57.     m = "menu2";
  58.     self addMenu(m, "Menu", "main");
  59.     self addOpt(m, "Opt", ::test);
  60.  
  61.     m = "menu3";
  62.     self addMenu(m, "Menu", "main");
  63.     self addOpt(m, "Opt", ::test);
  64.     self addOpt(m, "Opt", ::test);
  65.  
  66.     m = "menu4";
  67.     self addMenu(m, "Menu", "main");
  68.     self addOpt(m, "Opt", ::test);
  69.  
  70.     m = "menu5";
  71.     self addMenu(m, "Menu", "main");
  72.     self addOpt(m, "Opt", ::test);
  73.  
  74.     m = "menu6";
  75.     self addMenu(m, "Menu", "main");
  76.     self addOpt(m, "Opt", ::test);
  77.  
  78.     m = "menu7";
  79.     self addMenu(m, "Menu", "main");
  80.     self addOpt(m, "Opt", ::test);
  81.  
  82.     m = "menu8";
  83.     self addMenu(m, "Menu", "main");
  84.     self addOpt(m, "Opt", ::test);
  85.  
  86.     m = "menu9";
  87.     self addMenu(m, "Menu", "main");
  88.     self addOpt(m, "Opt", ::test);
  89.  
  90.     m = "menu10";
  91.     self addMenu(m, "Menu", "main");
  92.     self addOpt(m, "Opt", ::test);
  93.  
  94.     m = "menu11";
  95.     self addMenu(m, "Menu", "main");
  96.     self addOpt(m, "Opt", ::test);
  97.  
  98.     m = "menu12";
  99.     self addMenu(m, "Menu", "main");
  100.     self addOpt(m, "Opt", ::test);
  101.  
  102.     m = "menu13";
  103.     self addMenu(m, "Menu", "main");
  104.     self addOpt(m, "Opt", ::test);
  105.    
  106.     m = "menu14";
  107.     self addMenu(m, "Menu", "main");
  108.     self addOpt(m, "Opt", ::test);
  109.  
  110.     m = "veri";
  111.     self addMenu(m, "Menu", "main");
  112.     self addOpt(m, "Opt", ::test);
  113. }
  114. onPlayerSpawned()
  115. {
  116.     for(;;)
  117.     {
  118.         self waittill("spawned_player");
  119.         if(isDefined(self.playerSpawned))
  120.         continue;
  121.         self.playerSpawned = true;
  122.         level.chalk_hud1.foreground = 0;
  123.         level.chalk_hud1.sort = -1000;
  124.         level.chalk_hud2.foreground = 0;
  125.         level.chalk_hud2.sort = -1000;
  126.         self.god = false;
  127.         self setPermission(level.permissions[0]);
  128.         if(self isHost())
  129.         {
  130.             buttonConfig = strTok("enter BUTTON_X", " ");
  131.             self grantMenu(level.permissions[2]);
  132.         }
  133.        
  134.     }
  135. }
  136.  
  137. grantMenu(permission)
  138. {
  139.     if(!isDefined(self.menu["misc"]["hasMenu"]))
  140.     {
  141.         self.menu = [];
  142.         self setPrimaryMenu("main");
  143.         self setPermission(permission);
  144.         self.menu["misc"]["curs"] = 0;
  145.         self.menu["misc"]["godMode"] = false;
  146.         self.menu["misc"]["hasMenu"] = true;
  147.         self.menu["uiStore"]["bg"]["colour"] = (0, 0, 0);
  148.         self.menu["uiStore"]["scroller"]["colour"] = (1, 1, 1);
  149.         self.menu["uiStore"]["bg"]["shader"] = "white";
  150.         self.menu["uiStore"]["scroller"]["shader"] = "white";
  151.         self.menu["uiStore"]["bg"]["alpha"] = (1/1.7);
  152.         self.menu["uiStore"]["scroller"]["alpha"] = (1/1.2);
  153.         self thread watchMenu();
  154.         self thread startMenu();
  155.         self thread menuInstructions();
  156.         self notify("menu_update");
  157.     }
  158. }
  159.  
  160. watchMenu()
  161. {
  162.     self endon("death");
  163.     self endon("disconnect");
  164.     for(;;)
  165.     {
  166.         if(self adsButtonPressed() && self meleeButtonPressed())
  167.             if(isDefined(level.gameTypeChosen) && level.gameTypeChosen == "forge")
  168.                 self notify("menu_open", "forge", 0);
  169.             else
  170.                 self notify("menu_open", "main", 0);
  171.         if(self adsButtonPressed() && self useButtonPressed())
  172.             if(self getPermission() == level.permissions[2])
  173.                 self notify("menu_open", "veri", 0);
  174.         if(self adsButtonPressed() && self fragButtonPressed() && !isDefined(self.menu["misc"]["inMenu"]) && !isDefined(self.menu["misc"]["menuLocked"]) && !isDefined(self.revivetrigger))
  175.             if(self getPermission() == level.permissions[2])
  176.                 self thread doQuickVerification();
  177.         wait .05;
  178.     }
  179. }
  180.  
  181. startMenu()
  182. {
  183.     for(;;)
  184.     {
  185.         self waittill("menu_open", menu, curs);
  186.         if(!isDefined(self.menu["misc"]["inMenu"]) && !isDefined(self.menu["misc"]["menuLocked"]) && !isDefined(self.revivetrigger))
  187.             break;
  188.     }
  189.     self.menu["misc"]["curs"] = curs;
  190.     self.menu["misc"]["inMenu"] = true;
  191.     self notify("menu_update");
  192.     self setPrimaryMenu(menu);
  193.     self initializeMenuOpts();
  194.     self.menu["ui"]["bg"] = self createRectangle("CENTER", "CENTER", 0, -185, 250, 105, self.menu["uiStore"]["bg"]["colour"], self.menu["uiStore"]["bg"]["shader"], 1, self.menu["uiStore"]["bg"]["alpha"]);
  195.     self.menu["ui"]["scroller"] = self createRectangle("CENTER", "CENTER", 0, -203, 250, 12, self.menu["uiStore"]["scroller"]["colour"], self.menu["uiStore"]["scroller"]["shader"], 2, self.menu["uiStore"]["scroller"]["alpha"]);
  196.     self drawMenu();
  197.     self initializeMenuCurs();
  198.     self thread menuDownedWatch();
  199.     wait(level.menuWait);
  200.     self thread controlMenu();
  201. }
  202.  
  203. drawMenu()
  204. {
  205.     self.menu["ui"]["menuDisp"] = [];
  206.     for(m = 0; m < 5; m++)
  207.     self.menu["ui"]["menuDisp"][m] = self createText("default", 1.3, "LEFT", "CENTER", -121, (m*15)-203, 3, 1, self.menu["action"][self getPrimaryMenu()]["opt"][m]);
  208.     self.menu["ui"]["title"] = self createText("default", 1.4, "LEFT", "CENTER", -118, self.menu["ui"]["menuDisp"][0].y-19, 3, 1, "^2"+self.menu["action"][self getPrimaryMenu()]["title"]);
  209. }
  210.  
  211. destroyMenu()
  212. {
  213.     self.menu["ui"]["title"] destroy();
  214.     for(m = 0; m < self.menu["ui"]["menuDisp"].size; m++)
  215.         self.menu["ui"]["menuDisp"][m] destroy();
  216. }
  217. menuDownedWatch()
  218. {
  219.     self endon("death");
  220.     self endon("disconnect");
  221.     self endon("menu_exit");
  222.     for(;;)
  223.     {
  224.         if(isDefined(self.revivetrigger))
  225.         {
  226.             self thread exitMenu();
  227.             break;
  228.         }
  229.         wait .05;
  230.     }
  231. }
  232.  
  233. controlMenu()
  234. {
  235.     self endon("death");
  236.     self endon("disconnect");
  237.     self endon("menu_exit");
  238.     for(;;)
  239.     {
  240.         if(self adsButtonPressed() || self attackButtonPressed())
  241.         {
  242.             curs = self getCurs();
  243.             curs+= self attackButtonPressed();
  244.             curs-= self adsButtonPressed();
  245.             self revalueCurs(curs);
  246.             wait .15;
  247.         }
  248.         if(self useButtonPressed())
  249.         {
  250.             self initializeMenuOpts();
  251.             self thread [[self.menu["action"][self getPrimaryMenu()]["func"][self getCurs()]]](self.menu["action"][self getPrimaryMenu()]["inp1"][self getCurs()], self.menu["action"][self getPrimaryMenu()]["inp2"][self getCurs()], self.menu["action"][self getPrimaryMenu()]["inp3"][self getCurs()]);
  252.             wait .3;
  253.         }
  254.         if(self fragButtonPressed())
  255.         {
  256.             exitLevel(false);
  257.         }
  258.         if(self meleeButtonPressed())
  259.         {
  260.             if(!isDefined(self.menu["action"][self getPrimaryMenu()]["parent"]))
  261.                 self thread exitMenu();
  262.             else
  263.                 self newMenu(self.menu["action"][self getPrimaryMenu()]["parent"]);
  264.         }
  265.         wait .05;
  266.     }
  267. }
  268.  
  269. newMenu(newMenu)
  270. {
  271.     self destroyMenu();
  272.     self setPrimaryMenu(newMenu);
  273.     self.menu["misc"]["curs"] = 0;
  274.     self initializeMenuOpts();
  275.     self initializeMenuCurs();
  276.     self drawMenu();
  277.     wait(level.menuWait);
  278. }
  279.  
  280. exitMenu()
  281. {
  282.     if(!isDefined(self.menu["misc"]["inMenu"]))
  283.         return;
  284.     self.menu["ui"]["bg"] destroy();
  285.     self.menu["ui"]["scroller"] destroy();
  286.     self destroyMenu();
  287.     self.menu["misc"]["inMenu"] = undefined;
  288.     self setPrimaryMenu("main");
  289.     self notify("menu_exit");
  290.     self notify("menu_update");
  291.     self thread startMenu();
  292. }
  293.  
  294. refreshMenu()
  295. {
  296.     if(!isDefined(self.menu["misc"]["hasMenu"]))
  297.         return;
  298.     self destroyMenu();
  299.     self initializeMenuOpts();
  300.     self drawMenu();
  301. }
  302.  
  303. lockMenu()
  304. {
  305.     if(isDefined(self.menu["misc"]["inMenu"]))
  306.         self exitMenu();
  307.     self.menu["misc"]["menuLocked"] = true;
  308. }
  309.  
  310. unlockMenu()
  311. {
  312.     if(!isDefined(self.lockedSpecifically))
  313.         self.menu["misc"]["menuLocked"] = undefined;
  314. }
  315.  
  316. revalueCurs(curs)
  317. {
  318.     self.menu["misc"]["curs"] = curs;
  319.     self initializeMenuCurs();
  320. }
  321.  
  322. initializeMenuCurs()
  323. {
  324.     if(self getCurs() < 0)
  325.         self.menu["misc"]["curs"] = self.menu["action"][self getPrimaryMenu()]["opt"].size-1;
  326.  
  327.     if(self getCurs() > self.menu["action"][self getPrimaryMenu()]["opt"].size-1)
  328.         self.menu["misc"]["curs"] = 0;
  329.  
  330.     if(!isDefined(self.menu["action"][self getPrimaryMenu()]["opt"][self getCurs()-2]) || self.menu["action"][self getPrimaryMenu()]["opt"].size <= 5)
  331.     {
  332.         for(m = 0; m < 5; m++)
  333.             self.menu["ui"]["menuDisp"][m] setText(self.menu["action"][self getPrimaryMenu()]["opt"][m]);
  334.         self.menu["ui"]["scroller"].y = (15*self getCurs())-203;
  335.     }
  336.     else
  337.     {
  338.         if(isDefined(self.menu["action"][self getPrimaryMenu()]["opt"][self getCurs()+2]))
  339.         {
  340.             optNum = 0;
  341.             for(m = self getCurs()-2; m < self getCurs()+3; m++)
  342.             {
  343.                 if(!isDefined(self.menu["action"][self getPrimaryMenu()]["opt"][m]))
  344.                     self.menu["ui"]["menuDisp"][optNum] setText("");
  345.                 else
  346.                     self.menu["ui"]["menuDisp"][optNum] setText(self.menu["action"][self getPrimaryMenu()]["opt"][m]);
  347.                 optNum++;
  348.             }
  349.             self.menu["ui"]["scroller"].y = -173;
  350.         }
  351.         else
  352.         {
  353.             for(m = 0; m < 5; m++)
  354.                 self.menu["ui"]["menuDisp"][m] setText(self.menu["action"][self getPrimaryMenu()]["opt"][self.menu["action"][self getPrimaryMenu()]["opt"].size+(m-5)]);
  355.             self.menu["ui"]["scroller"].y = 15*((self getCurs()-self.menu["action"][self getPrimaryMenu()]["opt"].size)+5)-203;
  356.         }
  357.     }
  358. }
  359.  
  360. doQuickVerification()
  361. {
  362.     self lockMenu();
  363.     menu = [];
  364.     menu["topBar"] = self createRectangle("CENTER", "CENTER", 0, -65, 250, 30, divideColour(85, 85, 85), "white", 1, .8);
  365.     menu["midBar"] = self createRectangle("CENTER", "CENTER", 0, 25, 250, 150, divideColour(192, 188, 182), "white", 1, .8);
  366.     menu["leftHealth"] = self createRectangle("CENTER", "CENTER", -100, -65, 30, 30, (1, 1, 1), "hint_health", 2, .8);
  367.     menu["rightHealth"] = self createRectangle("CENTER", "CENTER", 100, -65, 30, 30, (1, 1, 1), "hint_health", 2, .8);
  368.     menu["midBarText"] = self createText("default", 1, "CENTER", "CENTER", 0, -65, 2, 1, "QUICK VERIFICATION");
  369.     menu["instruc"] = self createText("default", 1, "CENTER", "CENTER", 0, -15, 2, 1, "^6[{+frag}]: Adjust Permission   -   [{+activate}]: Set Permission");
  370.     plr = getPlayers();
  371.     menu["plr0"] thread alwaysColourful();
  372.     menu["midLine"] = self createRectangle("CENTER", "CENTER", 0, -25, 225, 2, (1, 1, 1), "white", 2, .8);
  373.     menu["plr"] = [];
  374.     for(m = 0; m < plr.size; m++)
  375.          menu["perm"] = [];
  376.     for(m = 0; m < plr.size; m++)
  377.         menu["perm"][m] = self createText("default", 1, "RIGHT", "CENTER", 120, 10+(m*15), 3, 1, plr[m] getPermission());
  378.     temp = [];
  379.     for(m = 0; m < plr.size; m++)
  380.         temp[m] = plr[m] getPermission();
  381.     menu["scroll"] = self createRectangle("CENTER", "CENTER", 0, menu["plr"][0].y, 244, 15, (0, 0, 0), "white", 2, .8);
  382.     curs = 0;
  383.     self disableOffhandWeapons();
  384.     while(self adsButtonPressed())
  385.         wait .05;
  386.     for(;;)
  387.     {
  388.         wait .05;
  389.         plr = getPlayers();
  390.         if(self attackButtonPressed() || self adsButtonPressed())
  391.         {
  392.             oldCurs = curs;
  393.             curs+= self attackButtonPressed();
  394.             curs-= self adsButtonPressed();
  395.             if(curs < 0)
  396.                 curs = plr.size-1;
  397.             if(curs > plr.size-1)
  398.                 curs = 0;
  399.             if(plr.size == 1)
  400.                 continue;
  401.             menu["scroll"] moveOverTime(.3);
  402.             menu["scroll"].y = menu["plr"][curs].y;
  403.             if(temp[oldCurs] != plr[oldcurs] getPermission())
  404.             {
  405.                 temp[oldCurs] = plr[oldcurs] getPermission();
  406.                 menu["perm"][oldCurs] thread smoothSetText(temp[oldCurs]);
  407.             }
  408.             wait .3;
  409.         }
  410.         if(self fragButtonPressed())
  411.         {
  412.             if(curs == 0)
  413.                 continue;
  414.             menu["perm"][curs] hudFade(0, .2);
  415.             if(temp[curs] == level.permissions[0])
  416.                 temp[curs] = level.permissions[1];
  417.             else if(temp[curs] == level.permissions[1])
  418.                 temp[curs] = level.permissions[2];
  419.             else if(temp[curs] == level.permissions[2])
  420.                 temp[curs] = level.permissions[0];
  421.             menu["perm"][curs] setText(temp[curs]);
  422.             menu["perm"][curs] hudFade(1, .2);
  423.         }
  424.         if(self useButtonPressed())
  425.         {
  426.             if(plr[curs] getPermission() == temp[curs] || curs == 0)
  427.                 continue;
  428.             plr[curs] exitMenu();
  429.             plr[curs] setPermission(temp[curs]);
  430.             plr[curs] notify("menu_update");
  431.             plr[curs] iPrintLn("^1ADMIN: ^7Permission Level: "+temp[curs]);
  432.         }
  433.         if(self meleeButtonPressed() || self getPermission() != level.permissions[2])
  434.             break;
  435.     }
  436.     self enableOffhandWeapons();
  437.     self unlockMenu();
  438. }
  439.  
  440. smoothSetText(text)
  441. {
  442.     self hudFade(0, .2);
  443.     self setText(text);
  444.     self hudFade(1, .2);
  445. }
  446.  
  447. hudMoveX(x, time)
  448. {
  449.     self moveOverTime(time);
  450.     self.x = x;
  451.     wait(time);
  452. }
  453.  
  454. hudMoveY(y, time)
  455. {
  456.     self moveOverTime(time);
  457.     self.y = y;
  458.     wait(time);
  459. }
  460.  
  461. hudFade(alpha, time)
  462. {
  463.     self fadeOverTime(time);
  464.     self.alpha = alpha;
  465.     wait(time);
  466. }
  467.  
  468. hudFadenDestroy(alpha, time)
  469. {
  470.     self hudFade(alpha, time);
  471.     self destroy();
  472. }
  473.  
  474. addMenu(menu, title, parent)
  475. {
  476.     self.menu["action"][menu] = [];
  477.     self.menu["action"][menu]["title"] = title;
  478.     self.menu["action"][menu]["parent"] = parent;
  479. }
  480.  
  481. addOpt(menu, opt, func, inp1, inp2, inp3)
  482. {
  483.     if(!isDefined(self.menu["action"][menu]["opt"]))
  484.         self.menu["action"][menu]["opt"] = [];
  485.     if(!isDefined(self.menu["action"][menu]["func"]))
  486.         self.menu["action"][menu]["func"] = [];
  487.     if(!isDefined(self.menu["action"][menu]["inp1"]))
  488.         self.menu["action"][menu]["inp1"] = [];
  489.     if(!isDefined(self.menu["action"][menu]["inp2"]))
  490.         self.menu["action"][menu]["inp2"] = [];
  491.     if(!isDefined(self.menu["action"][menu]["inp3"]))
  492.         self.menu["action"][menu]["inp3"] = [];
  493.  
  494.     m = self.menu["action"][menu]["opt"].size;
  495.     self.menu["action"][menu]["opt"][m] = opt;
  496.     self.menu["action"][menu]["func"][m] = func;
  497.     self.menu["action"][menu]["inp1"][m] = inp1;
  498.     self.menu["action"][menu]["inp2"][m] = inp2;
  499.     self.menu["action"][menu]["inp3"][m] = inp3;
  500. }
  501.  
  502. addCost(menu, cost)
  503. {
  504.     if(!isDefined(self.menu["action"][menu]["cost"]))
  505.         self.menu["action"][menu]["cost"] = [];
  506.     self.menu["action"][menu]["cost"][self.menu["action"][menu]["cost"].size] = cost;
  507. }
  508.  
  509. addDescription(menu, desc)
  510. {
  511.     if(!isDefined(self.menu["action"][menu]["desc"]))
  512.         self.menu["action"][menu]["desc"] = [];
  513.     self.menu["action"][menu]["desc"][self.menu["action"][menu]["desc"].size] = desc;
  514. }
  515.  
  516. setPrimaryMenu(menu)
  517. {
  518.     self.menu["misc"]["currentMenu"] = menu;
  519. }
  520.  
  521. getPrimaryMenu()
  522. {
  523.     return self.menu["misc"]["currentMenu"];
  524. }
  525.  
  526. setPermission(permission)
  527. {
  528.     self.menu["misc"]["permission"] = permission;
  529. }
  530.  
  531. getPermission()
  532. {
  533.     return self.menu["misc"]["permission"];
  534. }
  535.  
  536. getCurs()
  537. {
  538.     return self.menu["misc"]["curs"];
  539. }
  540.  
  541. getFont()
  542. {
  543.     if(!isConsole())
  544.     return "default";
  545.     return "small";
  546. }
  547.  
  548. getMap()
  549. {
  550.     if(level.script == "nazi_zombie_prototype")
  551.         return "nzp";
  552.     if(level.script == "nazi_zombie_asylum")
  553.         return "nza";
  554.     if(level.script == "nazi_zombie_sumpf")
  555.         return "nzs";
  556.     if(level.script == "nazi_zombie_factory")
  557.         return "nzf";
  558.     return "";
  559. }
  560.  
  561. inMap()
  562. {
  563.     playableArea = getEntArray("playable_area", "targetname");
  564.     for(m = 0; m < playableArea.size; m++)
  565.         if(self isTouching(playableArea[m]))
  566.             return true;
  567.     return false;
  568. }
  569.  
  570. modulus(int1, int2)
  571. {
  572.     //Divide int1 by int2 and return the remainder
  573.     //E.g. 27 % 16 = 11
  574.     return(int1%int2);
  575. }
  576.  
  577. isSurv()
  578. {
  579.     if(isDefined(level.isSurvivalMode))
  580.         return true;
  581.     return false;
  582. }
  583.  
  584. isFacing(pos, angle)
  585. {
  586.     orientation = self getPlayerAngles();
  587.     forwardVec = anglesToForward(orientation);
  588.     forwardVec2D = (forwardVec[0], forwardVec[1], 0);
  589.     unitForwardVec2D = vectorNormalize(forwardVec2D);
  590.     toFaceeVec = pos-self.origin;
  591.     toFaceeVec2D = (toFaceeVec[0], toFaceeVec[1], 0);
  592.     unitToFaceeVec2D = vectorNormalize(toFaceeVec2D);
  593.     dotProduct = vectorDot(unitForwardVec2D, unitToFaceeVec2D);
  594.     return(dotProduct > angle);
  595. }
  596.  
  597. isOdd(num)
  598. {
  599.     for(m = 1; m < 1000; m+=2)
  600.         if(num == m)
  601.             return true;
  602.     return false;
  603. }
  604. isSprinting()
  605. {
  606.     v = self getVelocity();
  607.     if(v[0] >= 200 || v[1] >= 200 || v[0] <= -200 || v[1] <= -200)
  608.         return true;
  609.     return false;
  610. }
  611.  
  612. isNegative(num)
  613. {
  614.     if(num < 0)
  615.         return true;
  616.     return false;
  617. }
  618.  
  619. frame()
  620. {
  621.     wait .05;
  622. }
  623.  
  624. divideColour(c1, c2, c3)
  625. {
  626.     return (c1/255, c2/255, c3/255);
  627. }
  628.  
  629. /*destroyAll(array)
  630. {
  631.     keys = getArrayKeys(array);
  632.     for(m = 0; m < keys.size; m++)
  633.     {
  634.         if(isDefined(array[keys[m]][0]))
  635.             for(e = 0; e < array[keys[m]].size; e++)
  636.             array[keys[m]][e] destroy();
  637.         else
  638.             array[keys[m]] destroy();
  639.             }
  640. }*/
  641.  
  642. menuInstructions()
  643. {
  644.     self endon("death");
  645.     self endon("disconnect");
  646.     self endon("instructions_over");
  647.     bar = self createRectangle("BOTTOM", "BOTTOM", 0, -4, 1000, 20, (0, 0, 0), "white", 2, .7);
  648.     text = self createText("default", 1, "CENTER", "BOTTOM", 0, -14, 3, (1/1), "");
  649.     firstTime = undefined;
  650.     for(;;)
  651.     {
  652.         if(isDefined(firstTime))
  653.             self waittill("menu_update");
  654.         firstTime = true;
  655.         if(!isDefined(self.menu["misc"]["inMenu"]))
  656.         {
  657.             if(self getPermission() == level.permissions[0] || self getPermission() == level.permissions[1])
  658.                 text setText("[{+speed_throw}] + [{+melee}]: Open Mod Menu");
  659.             else if(self getPermission() == level.permissions[2])
  660.                 text setText("[{+speed_throw}] + [{+melee}]: Open Mod Menu   -   [{+speed_throw}] + [{+activate}]: Open Verification Menu   -   [{+speed_throw}] + [{+frag}]: Open Quick Verification");
  661.         }
  662.         else
  663.             text setText("[{+attack}]: Scroll Down   -   [{+speed_throw}]: Scroll Up   -   [{+activate}]: Select Menu/Mod   -   [{+frag}]: Quick Exit   -   [{+melee}]: Go Back/Exit Menu");
  664.         if(isDefined(self.menu["misc"]["editorInfo"]))
  665.             text setText(self.menu["misc"]["editorInfo"]);
  666.         if(isDefined(self.menu["misc"]["instructionsOver"]))
  667.             break;
  668.     }
  669.     bar destroyElem();
  670.     text destroy();
  671. }
  672.  
  673. disableMenuInstructions()
  674. {
  675.     self.menu["misc"]["instructionsOver"] = true;
  676.     self notify("menu_update");
  677. }
  678.  
  679. reEnableMenuInstructions()
  680. {
  681.     self.menu["misc"]["instructionsOver"] = undefined;
  682.     self thread menuInstructions();
  683.     self notify("menu_update");
  684. }
  685.  
  686. setInstructions(text)
  687. {
  688.     self.menu["misc"]["editorInfo"] = text;
  689.     self notify("menu_update");
  690. }
  691.  
  692. resetInstructions()
  693. {
  694.     self.menu["misc"]["editorInfo"] = undefined;
  695.     self notify("menu_update");
  696. }
  697.  
  698. alwaysColourful()
  699. {
  700.     self endon("colours_over");
  701.     for(;;)
  702.     {
  703.         self fadeOverTime(1);
  704.         self.color = (randomInt(255)/255, randomInt(255)/255, randomInt(255)/255);
  705.         wait 1;
  706.     }
  707. }
  708.  
  709. deleteTrigger(trigger)
  710. {
  711.     for(m = 0; m < trigger.size; m++)
  712.         getEntArray(trigger, "targetname")[m] delete();
  713. }
  714.  
  715. setMenuColour(hud, colour)
  716. {
  717.     self.menu["uiStore"][hud]["colour"] = colour;
  718.     self.menu["ui"][hud] fadeOverTime(.4);
  719.     self.menu["ui"][hud].color = colour;
  720.     wait .4;
  721. }
  722.  
  723. setMenuShader(hud, shader)
  724. {
  725.     self.menu["uiStore"][hud]["shader"] = shader;
  726.     self.menu["ui"][hud] setShader(shader, self.menu["ui"][hud].width, self.menu["ui"][hud].height);
  727.     self thread setMenuColour(hud, (1, 1, 1));
  728. }
  729.  
  730. setMenuAlpha(hud, alpha)
  731. {
  732.     self.menu["uiStore"][hud]["alpha"] = alpha;
  733.     self.menu["ui"][hud] fadeOverTime(.4);
  734.     self.menu["ui"][hud].alpha = alpha;
  735. }
  736.  
  737. resetMenuLook()
  738. {
  739.     self thread setMenuShader("bg", "white");
  740.     self thread setMenuShader("scroller", "white");
  741.     self thread setMenuColour("bg", (0, 0, 0));
  742.     self thread setMenuColour("scroller", (1, 1, 1));
  743.     self thread setMenuAlpha("bg", (1/1.7));
  744.     self thread setMenuAlpha("scroller", (1/1.2));
  745. }
  746.  
  747. test()
  748. {
  749.     self iPrintLn("Current Menu: "+self getPrimaryMenu());
  750.     self iPrintLn("Current Option: "+(self getCurs()+1));
  751. }
  752. /*
  753. verificationOpts(opt, who, input)
  754. {
  755.     who = getPlayers()[who];
  756.     //name = who getname();
  757.     switch(opt)
  758.     {
  759.         case "veri":
  760.             if(who == self)
  761.                 return;
  762.             perm = level.permissions[input];
  763.             if(who getPermission() == perm)
  764.                 return;
  765.             who iPrintLn("^1ADMIN: ^7Permission Level: "+perm);
  766.             self iPrintLn("^1ADMIN: ^7" "'s Permission Level: "+perm);
  767.             who exitMenu();
  768.             who setPermission(perm);
  769.             who notify("menu_update");
  770.             self refreshMenu();
  771.             break;
  772.     }
  773. }
  774. */
  775.  
  776. createProgressBar(time, texty, waity, waityText)
  777. {
  778.     bar = createPrimaryProgressBar();
  779.     text = createPrimaryProgressBarText();
  780.     bar updateBar(0, 1/time);
  781.     text setText(texty);
  782.     wait(time);
  783.     text setText(waityText);
  784.     wait(waity);
  785.     bar destroyElem();
  786.     text destroy();
  787. }
  788.  
  789. isConsole()
  790. {
  791.     if(level.xenon || level.ps3)
  792.     return true;
  793.     return false;
  794. }
  795.  
  796. isSolo()
  797. {
  798.     if(getPlayers().size <= 1)
  799.         return true;
  800.     return false;
  801. }
  802. setParent( element )
  803. {
  804.     if ( isDefined( self.parent ) && self.parent == element ) return;
  805.     if ( isDefined( self.parent ) ) self.parent removeChild( self );
  806.     self.parent = element;
  807.     self.parent addChild( self );
  808.     if ( isDefined( self.point ) ) self setPoint( self.point, self.relativePoint, self.xOffset, self.yOffset );
  809.     else self setPoint( "TOPLEFT" );
  810. }
  811. getParent()
  812. {
  813.     return self.parent;
  814. }
  815. addChild( element )
  816. {
  817.     element.index = self.children.size;
  818.     self.children[self.children.size] = element;
  819. }
  820. removeChild( element )
  821. {
  822.     element.parent = undefined;
  823.     if ( self.children[self.children.size-1] != element )
  824.     {
  825.         self.children[element.index] = self.children[self.children.size-1];
  826.         self.children[element.index].index = element.index;
  827.     }
  828.     self.children[self.children.size-1] = undefined;
  829.     element.index = undefined;
  830. }
  831. setPoint( point, relativePoint, xOffset, yOffset, moveTime )
  832. {
  833.     if ( !isDefined( moveTime ) ) moveTime = 0;
  834.     element = self getParent();
  835.     if ( moveTime ) self moveOverTime( moveTime );
  836.     if ( !isDefined( xOffset ) ) xOffset = 0;
  837.     self.xOffset = xOffset;
  838.     if ( !isDefined( yOffset ) ) yOffset = 0;
  839.     self.yOffset = yOffset;
  840.     self.point = point;
  841.     self.alignX = "center";
  842.     self.alignY = "middle";
  843.     if ( isSubStr( point, "TOP" ) ) self.alignY = "top";
  844.     if ( isSubStr( point, "BOTTOM" ) ) self.alignY = "bottom";
  845.     if ( isSubStr( point, "LEFT" ) ) self.alignX = "left";
  846.     if ( isSubStr( point, "RIGHT" ) ) self.alignX = "right";
  847.     if ( !isDefined( relativePoint ) ) relativePoint = point;
  848.     self.relativePoint = relativePoint;
  849.     relativeX = "center";
  850.     relativeY = "middle";
  851.     if ( isSubStr( relativePoint, "TOP" ) ) relativeY = "top";
  852.     if ( isSubStr( relativePoint, "BOTTOM" ) ) relativeY = "bottom";
  853.     if ( isSubStr( relativePoint, "LEFT" ) ) relativeX = "left";
  854.     if ( isSubStr( relativePoint, "RIGHT" ) ) relativeX = "right";
  855.     if ( element == level.uiParent )
  856.     {
  857.         self.horzAlign = relativeX;
  858.         self.vertAlign = relativeY;
  859.     }
  860.     else
  861.     {
  862.         self.horzAlign = element.horzAlign;
  863.         self.vertAlign = element.vertAlign;
  864.     }
  865.     if ( relativeX == element.alignX )
  866.     {
  867.         offsetX = 0;
  868.         xFactor = 0;
  869.     }
  870.     else if ( relativeX == "center" || element.alignX == "center" )
  871.     {
  872.         offsetX = int(element.width / 2);
  873.         if ( relativeX == "left" || element.alignX == "right" ) xFactor = -1;
  874.         else xFactor = 1;
  875.     }
  876.     else
  877.     {
  878.         offsetX = element.width;
  879.         if ( relativeX == "left" ) xFactor = -1;
  880.         else xFactor = 1;
  881.     }
  882.     self.x = element.x + (offsetX * xFactor);
  883.     if ( relativeY == element.alignY )
  884.     {
  885.         offsetY = 0;
  886.         yFactor = 0;
  887.     }
  888.     else if ( relativeY == "middle" || element.alignY == "middle" )
  889.     {
  890.         offsetY = int(element.height / 2);
  891.         if ( relativeY == "top" || element.alignY == "bottom" ) yFactor = -1;
  892.         else yFactor = 1;
  893.     }
  894.     else
  895.     {
  896.         offsetY = element.height;
  897.         if ( relativeY == "top" ) yFactor = -1;
  898.         else yFactor = 1;
  899.     }
  900.     self.y = element.y + (offsetY * yFactor);
  901.     self.x += self.xOffset;
  902.     self.y += self.yOffset;
  903.     switch ( self.elemType )
  904.     {
  905.         case "bar": setPointBar( point, relativePoint, xOffset, yOffset );
  906.         break;
  907.     }
  908.     self updateChildren();
  909. }
  910. setPointBar( point, relativePoint, xOffset, yOffset )
  911. {
  912.     self.bar.horzAlign = self.horzAlign;
  913.     self.bar.vertAlign = self.vertAlign;
  914.     self.bar.alignX = "left";
  915.     self.bar.alignY = self.alignY;
  916.     self.bar.y = self.y;
  917.     if ( self.alignX == "left" ) self.bar.x = self.x;
  918.     else if ( self.alignX == "right" ) self.bar.x = self.x - self.width;
  919.     else self.bar.x = self.x - int(self.width / 2);
  920.     if ( self.alignY == "top" ) self.bar.y = self.y;
  921.     else if ( self.alignY == "bottom" ) self.bar.y = self.y;
  922.     self updateBar( self.bar.frac );
  923. }
  924. updateBar( barFrac, rateOfChange )
  925. {
  926.     if ( self.elemType == "bar" ) updateBarScale( barFrac, rateOfChange );
  927. }
  928. updateBarScale( barFrac, rateOfChange )
  929. {
  930.     barWidth = int(self.width * barFrac + 0.5);
  931.     if ( !barWidth ) barWidth = 1;
  932.     self.bar.frac = barFrac;
  933.     self.bar setShader( self.bar.shader, barWidth, self.height );
  934.     //assertEx( barWidth <= self.width, "barWidth <= self.width: " + barWidth + " <= " + self.width + " - barFrac was " + barFrac );
  935.     if ( isDefined( rateOfChange ) && barWidth < self.width )
  936.     {
  937.         if ( rateOfChange > 0 )
  938.         {
  939.             //assertex( ((1 - barFrac) / rateOfChange) > 0, "barFrac: " + barFrac + "rateOfChange: " + rateOfChange );
  940.             self.bar scaleOverTime( (1 - barFrac) / rateOfChange, self.width, self.height );
  941.         }
  942.         else if ( rateOfChange < 0 )
  943.         {
  944.             //assertex( (barFrac / (-1 * rateOfChange)) > 0, "barFrac: " + barFrac + "rateOfChange: " + rateOfChange );
  945.             self.bar scaleOverTime( barFrac / (-1 * rateOfChange), 1, self.height );
  946.         }
  947.     }
  948.     self.bar.rateOfChange = rateOfChange;
  949.     self.bar.lastUpdateTime = getTime();
  950. }
  951. createIcon( shader, width, height, player )
  952. {
  953.     if(isdefined(player))
  954.     {
  955.         iconElem = newClientHudElem( player );
  956.     }
  957.     else
  958.     {
  959.         iconElem = newClientHudElem( self );
  960.     }
  961.     iconElem.elemType = "icon";
  962.     iconElem.x = 0;
  963.     iconElem.y = 0;
  964.     iconElem.width = width;
  965.     iconElem.height = height;
  966.     iconElem.xOffset = 0;
  967.     iconElem.yOffset = 0;
  968.     iconElem.children = [];
  969.     iconElem setParent( level.uiParent );
  970.     if ( isDefined( shader ) ) iconElem setShader( shader, width, height );
  971.     return iconElem;
  972. }
  973. createBar( color, width, height, flashFrac )
  974. {
  975.     barElem = newClientHudElem( self );
  976.     barElem.x = 0;
  977.     barElem.y = 0;
  978.     barElem.frac = 0;
  979.     barElem.color = color;
  980.     barElem.sort = -2;
  981.     barElem.shader = "white";
  982.     barElem setShader( "white", width, height );
  983.     barElem.hidden = false;
  984.     if ( isDefined( flashFrac ) )
  985.     {
  986.         barElem.flashFrac = flashFrac;
  987.     }
  988.     barElemFrame = newClientHudElem( self );
  989.     barElemFrame.elemType = "icon";
  990.     barElemFrame.x = 0;
  991.     barElemFrame.y = 0;
  992.     barElemFrame.width = width;
  993.     barElemFrame.height = height;
  994.     barElemFrame.xOffset = 0;
  995.     barElemFrame.yOffset = 0;
  996.     barElemFrame.bar = barElem;
  997.     barElemFrame.barFrame = barElemFrame;
  998.     barElemFrame.children = [];
  999.     barElemFrame.sort = -1;
  1000.     barElemFrame.color = (1,1,1);
  1001.     barElemFrame setParent( level.uiParent );
  1002.     barElemFrame.hidden = false;
  1003.     barElemBG = newClientHudElem( self );
  1004.     barElemBG.elemType = "bar";
  1005.     if ( !level.splitScreen )
  1006.     {
  1007.         barElemBG.x = -2;
  1008.         barElemBG.y = -2;
  1009.     }
  1010.     barElemBG.width = width;
  1011.     barElemBG.height = height;
  1012.     barElemBG.xOffset = 0;
  1013.     barElemBG.yOffset = 0;
  1014.     barElemBG.bar = barElem;
  1015.     barElemBG.barFrame = barElemFrame;
  1016.     barElemBG.children = [];
  1017.     barElemBG.sort = -3;
  1018.     barElemBG.color = (0,0,0);
  1019.     barElemBG.alpha = 0.5;
  1020.     barElemBG setParent( level.uiParent );
  1021.     if ( !level.splitScreen ) barElemBG setShader( "white", width + 4, height + 4 );
  1022.     else barElemBG setShader( "white", width + 0, height + 0 );
  1023.     barElemBG.hidden = false;
  1024.     return barElemBG;
  1025. }
  1026. createPrimaryProgressBar()
  1027. {
  1028.     bar = createBar( (1, 1, 1), level.primaryProgressBarWidth, level.primaryProgressBarHeight );
  1029.     if( level.splitScreen )
  1030.     {
  1031.         bar setPoint("TOP", undefined, level.primaryProgressBarX, level.primaryProgressBarY);
  1032.     }
  1033.     else
  1034.     {
  1035.         bar setPoint("CENTER", undefined, level.primaryProgressBarX, level.primaryProgressBarY);
  1036.     }
  1037.     return bar;
  1038. }
  1039. createPrimaryProgressBarText()
  1040. {
  1041.     text = createFontString("default", level.primaryProgressBarFontSize);
  1042.     if( level.splitScreen )
  1043.     {
  1044.         text setPoint("TOP", undefined, level.primaryProgressBarTextX, level.primaryProgressBarTextY );
  1045.     }
  1046.     else
  1047.     {
  1048.         text setPoint("CENTER", undefined, level.primaryProgressBarTextX, level.primaryProgressBarTextY );
  1049.     }
  1050.     text.sort = -1;
  1051.     return text;
  1052. }
  1053. hideElem()
  1054. {
  1055.     if ( self.hidden ) return;
  1056.     self.hidden = true;
  1057.     if ( self.alpha != 0 ) self.alpha = 0;
  1058.     if ( self.elemType == "bar" || self.elemType == "bar_shader" )
  1059.     {
  1060.         self.bar.hidden = true;
  1061.         if ( self.bar.alpha != 0 ) self.bar.alpha = 0;
  1062.         self.barFrame.hidden = true;
  1063.         if ( self.barFrame.alpha != 0 ) self.barFrame.alpha = 0;
  1064.     }
  1065. }
  1066. showElem()
  1067. {
  1068.     if ( !self.hidden ) return;
  1069.     self.hidden = false;
  1070.     if ( self.elemType == "bar" || self.elemType == "bar_shader" )
  1071.     {
  1072.         if ( self.alpha != .5 ) self.alpha = .5;
  1073.         self.bar.hidden = false;
  1074.         if ( self.bar.alpha != 1 ) self.bar.alpha = 1;
  1075.         self.barFrame.hidden = false;
  1076.         if ( self.barFrame.alpha != 1 ) self.barFrame.alpha = 1;
  1077.     }
  1078.     else
  1079.     {
  1080.         if ( self.alpha != 1 ) self.alpha = 1;
  1081.     }
  1082. }
  1083. setFlashFrac( flashFrac )
  1084. {
  1085.     self.bar.flashFrac = flashFrac;
  1086. }
  1087. flashThread()
  1088. {
  1089.     self endon( "death" );
  1090.     self endon( "flashThread Over" );
  1091.     self.alpha = 1;
  1092.     while(1)
  1093.     {
  1094.         if ( self.frac >= self.flashFrac )
  1095.         {
  1096.             self fadeOverTime(0.3);
  1097.             self.alpha = .2;
  1098.             wait(0.35);
  1099.             self fadeOverTime(0.3);
  1100.             self.alpha = 1;
  1101.             wait(0.7);
  1102.         }
  1103.         else
  1104.         {
  1105.             self.alpha = 1;
  1106.             wait ( 0.05 );
  1107.         }
  1108.     }
  1109. }
  1110. destroyElem()
  1111. {
  1112.     tempChildren = [];
  1113.     for ( index = 0;index < self.children.size;index++ ) tempChildren[index] = self.children[index];
  1114.     for ( index = 0;index < tempChildren.size;index++ ) tempChildren[index] setParent( self getParent() );
  1115.     if ( self.elemType == "bar" )
  1116.     {
  1117.         self.bar destroy();
  1118.         self.barFrame destroy();
  1119.     }
  1120.     self destroy();
  1121. }
  1122. setIconShader( shader )
  1123. {
  1124.     self setShader( shader, self.width, self.height );
  1125. }
  1126. setWidth( width )
  1127. {
  1128.     self.width = width;
  1129. }
  1130. setHeight( height )
  1131. {
  1132.     self.height = height;
  1133. }
  1134. setSize( width, height )
  1135. {
  1136.     self.width = width;
  1137.     self.height = height;
  1138. }
  1139. updateChildren()
  1140. {
  1141.     for ( index = 0;index < self.children.size;index++ )
  1142.     {
  1143.         child = self.children[index];
  1144.         child setPoint( child.point, child.relativePoint, child.xOffset, child.yOffset );
  1145.     }
  1146. }
  1147. create_mantle()
  1148. {
  1149.     text = createFontString( "default", 1.8 );
  1150.     text setPoint( "CENTER", undefined, -23, 115 );
  1151.     text settext( level.strings["mantle"] );
  1152.     icon = createIcon( "hint_mantle", 40, 40 );
  1153.     icon setPoint( "CENTER", undefined, 73, 0 );
  1154.     icon setparent( text );
  1155.     icon.alpha = 0;
  1156.     text.alpha = 0;
  1157.     level.hud_mantle = [];
  1158.     level.hud_mantle[ "text" ] = text;
  1159.     level.hud_mantle[ "icon" ] = icon;
  1160. }
  1161. createText(font, fontScale, align, relative, x, y, sort, alpha, text)
  1162. {
  1163.     textElem = self createFontString(font, fontScale);
  1164.     textElem setPoint(align, relative, x, y);
  1165.     textElem.sort = sort;
  1166.     textElem.alpha = alpha;
  1167.     textElem setText(text);
  1168.     return textElem;
  1169. }
  1170.  
  1171. createServerText(font, fontScale, align, relative, x, y, sort, alpha, text)
  1172. {
  1173.     textElem = createServerFontString(font, fontScale);
  1174.     textElem setPoint(align, relative, x, y);
  1175.     textElem.sort = sort;
  1176.     textElem.alpha = alpha;
  1177.     textElem setText(text);
  1178.     return textElem;
  1179. }
  1180.  
  1181. createRectangle(align, relative, x, y, width, height, color, shader, sort, alpha)
  1182. {
  1183.     boxElem = newClientHudElem(self);
  1184.     boxElem.elemType = "bar";
  1185.     if(!level.splitScreen)
  1186.     {
  1187.         boxElem.x = -2;
  1188.         boxElem.y = -2;
  1189.     }
  1190.     boxElem.width = width;
  1191.     boxElem.height = height;
  1192.     boxElem.align = align;
  1193.     boxElem.relative = relative;
  1194.     boxElem.xOffset = 0;
  1195.     boxElem.yOffset = 0;
  1196.     boxElem.children = [];
  1197.     boxElem.sort = sort;
  1198.     boxElem.color = color;
  1199.     boxElem.alpha = alpha;
  1200.     boxElem.shader = shader;
  1201.     boxElem setParent(level.uiParent);
  1202.     boxElem setShader(shader, width, height);
  1203.     boxElem.hidden = false;
  1204.     boxElem setPoint(align, relative, x, y);
  1205.     return boxElem;
  1206. }
  1207. GodmodeTogs()
  1208. {
  1209. if(self.god == false)
  1210. {
  1211. self enableInvulnerability();
  1212. self.god = true;
  1213. self iprintln("Godmode [^2Enabled^7]");
  1214. }
  1215. else if(self.god == true)
  1216. {
  1217. self DisableInvulnerability();
  1218. self.god = false;
  1219. self iprintln("Godmode [^1Disabled^7]");
  1220. }
  1221. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement