sharkbait263

[GSC] BO2 Menu Base

Sep 11th, 2014
9,253
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 11.18 KB | None | 0 0
  1. #include maps\mp\gametypes\_hud_util;
  2. #include maps\mp\gametypes\_rank;
  3.  
  4. //BO2 GSC Menu Base By Shark
  5.  
  6. init()
  7. {
  8.     level thread onplayerconnect();
  9. }
  10.  
  11. onplayerconnect()
  12. {
  13.     for(;;)
  14.     {
  15.         level waittill( "connecting", player );
  16.         if(player isHost())
  17.             player.status = "Host";
  18.         else
  19.             player.status = "Unverified";
  20.            
  21.         player thread onplayerspawned();
  22.     }
  23. }
  24.  
  25. onplayerspawned()
  26. {
  27.     self endon( "disconnect" );
  28.     level endon( "game_ended" );
  29.    
  30.     self.MenuInit = false;
  31.    
  32.     for(;;)
  33.     {
  34.         self waittill( "spawned_player" );
  35.         self welcomeMessage();
  36.         if( self.status == "Host" || self.status == "CoHost" || self.status == "Admin" || self.status == "VIP" || self.status == "Verified")
  37.         {
  38.             if (!self.MenuInit)
  39.             {
  40.                 self.MenuInit = true;
  41.                 self thread MenuInit();
  42.                 self thread closeMenuOnDeath();
  43.             }
  44.         }
  45.     }
  46. }
  47.  
  48. drawText(text, font, fontScale, x, y, color, alpha, glowColor, glowAlpha, sort)
  49. {
  50.     hud = self createFontString(font, fontScale);
  51.     hud setText(text);
  52.     hud.x = x;
  53.     hud.y = y;
  54.     hud.color = color;
  55.     hud.alpha = alpha;
  56.     hud.glowColor = glowColor;
  57.     hud.glowAlpha = glowAlpha;
  58.     hud.sort = sort;
  59.     hud.alpha = alpha;
  60.     return hud;
  61. }
  62.  
  63. drawShader(shader, x, y, width, height, color, alpha, sort)
  64. {
  65.     hud = newClientHudElem(self);
  66.     hud.elemtype = "icon";
  67.     hud.color = color;
  68.     hud.alpha = alpha;
  69.     hud.sort = sort;
  70.     hud.children = [];
  71.     hud setParent(level.uiParent);
  72.     hud setShader(shader, width, height);
  73.     hud.x = x;
  74.     hud.y = y;
  75.     return hud;
  76. }
  77.  
  78. verificationToNum(status)
  79. {
  80.     if (status == "Host")
  81.         return 5;
  82.     if (status == "CoHost")
  83.         return 4;
  84.     if (status == "Admin")
  85.         return 3;
  86.     if (status == "VIP")
  87.         return 2;
  88.     if (status == "Verified")
  89.         return 1;
  90.     else
  91.         return 0;
  92. }
  93.  
  94. verificationToColor(status)
  95. {
  96.     if (status == "Host")
  97.         return "^2Host";
  98.     if (status == "CoHost")
  99.         return "^5CoHost";
  100.     if (status == "Admin")
  101.         return "^1Admin";
  102.     if (status == "VIP")
  103.         return "^4VIP";
  104.     if (status == "Verified")
  105.         return "^3Verified";
  106.     else
  107.         return "^7Unverified";
  108. }
  109.  
  110. changeVerificationMenu(player, verlevel)
  111. {
  112.     if( player.status != verlevel)
  113.     {      
  114.         player.status = verlevel;
  115.    
  116.         self.menu.title destroy();
  117.         self.menu.title = drawText("[" + verificationToColor(player.status) + "^7] " + player.name, "objective", 2, 280, 30, (1, 1, 1), 0, (0, 0.58, 1), 1, 3);
  118.         self.menu.title FadeOverTime(0.3);
  119.         self.menu.title.alpha = 1;
  120.        
  121.         if(player.status == "Unverified")
  122.             self thread destroyMenu(player);
  123.    
  124.         player suicide();
  125.         self iPrintln("Set Access Level For " + player.name + " To " + verificationToColor(verlevel));
  126.         player iPrintln("Your Access Level Has Been Set To " + verificationToColor(verlevel));
  127.     }
  128.     else
  129.     {
  130.         self iPrintln("Access Level For " + player.name + " Is Already Set To " + verificationToColor(verlevel));
  131.     }
  132. }
  133.  
  134. changeVerification(player, verlevel)
  135. {
  136.     player.status = verlevel;
  137. }
  138.  
  139. Iif(bool, rTrue, rFalse)
  140. {
  141.     if(bool)
  142.         return rTrue;
  143.     else
  144.         return rFalse;
  145. }
  146.  
  147. welcomeMessage()
  148. {
  149.     notifyData = spawnstruct();
  150.     notifyData.titleText = "Welcome " + self.name + " To Menu"; //Line 1
  151.     notifyData.notifyText = "Your Status Is " + verificationToColor(self.status); //Line 2
  152.     notifyData.glowColor = (0.3, 0.6, 0.3); //RGB Color array divided by 100
  153.     notifyData.duration = 5; //Change Duration
  154.     notifyData.font = "objective"; //font
  155.     notifyData.hideWhenInMenu = false;
  156.     self thread maps\mp\gametypes\_hud_message::notifyMessage(notifyData);
  157. }
  158.  
  159. CreateMenu()
  160. {
  161.     self add_menu("Main Menu", undefined, "Unverified");
  162.     self add_option("Main Menu", "Sub Menu 1", ::submenu, "SubMenu1", "Sub Menu 1");
  163.     self add_option("Main Menu", "Sub Menu 2", ::submenu, "SubMenu2", "Sub Menu 2");
  164.     self add_option("Main Menu", "Sub Menu 3", ::submenu, "SubMenu3", "Sub Menu 3");
  165.     self add_option("Main Menu", "Players", ::submenu, "PlayersMenu", "Players");
  166.        
  167.     self add_menu("SubMenu1", "Main Menu", "Admin");
  168.     self add_option("SubMenu1", "Option 1");
  169.     self add_option("SubMenu1", "Option 2");
  170.     self add_option("SubMenu1", "Option 3");
  171.        
  172.     self add_menu("SubMenu2", "Main Menu", "VIP");
  173.     self add_option("SubMenu2", "Option 1");
  174.     self add_option("SubMenu2", "Option 2");
  175.     self add_option("SubMenu2", "Option 3");
  176.        
  177.     self add_menu("SubMenu3", "Main Menu", "Verified");
  178.     self add_option("SubMenu3", "Option 1");
  179.     self add_option("SubMenu3", "Option 2");
  180.     self add_option("SubMenu3", "Option 3");
  181.        
  182.     self add_menu("PlayersMenu", "Main Menu", "CoHost");
  183.     for (i = 0; i < 12; i++)
  184.     { self add_menu("pOpt " + i, "PlayersMenu", "CoHost"); }
  185. }
  186.  
  187. updatePlayersMenu()
  188. {
  189.     self.menu.menucount["PlayersMenu"] = 0;
  190.     for (i = 0; i < 12; i++)
  191.     {
  192.         player = level.players[i];
  193.         name = player.name;
  194.        
  195.         playersizefixed = level.players.size - 1;
  196.         if(self.menu.curs["PlayersMenu"] > playersizefixed)
  197.         {
  198.             self.menu.scrollerpos["PlayersMenu"] = playersizefixed;
  199.             self.menu.curs["PlayersMenu"] = playersizefixed;
  200.         }
  201.        
  202.         self add_option("PlayersMenu", "[" + verificationToColor(player.status) + "^7] " + player.name, ::submenu, "pOpt " + i, "[" + verificationToColor(player.status) + "^7] " + player.name);
  203.    
  204.         self add_menu_alt("pOpt " + i, "PlayersMenu");
  205.         self add_option("pOpt " + i, "Give CoHost", ::changeVerificationMenu, player, "CoHost");
  206.         self add_option("pOpt " + i, "Give Admin", ::changeVerificationMenu, player, "Admin");
  207.         self add_option("pOpt " + i, "Give VIP", ::changeVerificationMenu, player, "VIP");
  208.         self add_option("pOpt " + i, "Verify", ::changeVerificationMenu, player, "Verified");
  209.         self add_option("pOpt " + i, "Unverify", ::changeVerificationMenu, player, "Unverified");
  210.     }
  211. }
  212.  
  213. add_menu_alt(Menu, prevmenu)
  214. {
  215.     self.menu.getmenu[Menu] = Menu;
  216.     self.menu.menucount[Menu] = 0;
  217.     self.menu.previousmenu[Menu] = prevmenu;
  218. }
  219.  
  220. add_menu(Menu, prevmenu, status)
  221. {
  222.     self.menu.status[Menu] = status;
  223.     self.menu.getmenu[Menu] = Menu;
  224.     self.menu.scrollerpos[Menu] = 0;
  225.     self.menu.curs[Menu] = 0;
  226.     self.menu.menucount[Menu] = 0;
  227.     self.menu.previousmenu[Menu] = prevmenu;
  228. }
  229.  
  230. add_option(Menu, Text, Func, arg1, arg2)
  231. {
  232.     Menu = self.menu.getmenu[Menu];
  233.     Num = self.menu.menucount[Menu];
  234.     self.menu.menuopt[Menu][Num] = Text;
  235.     self.menu.menufunc[Menu][Num] = Func;
  236.     self.menu.menuinput[Menu][Num] = arg1;
  237.     self.menu.menuinput1[Menu][Num] = arg2;
  238.     self.menu.menucount[Menu] += 1;
  239. }
  240.  
  241. openMenu()
  242. {
  243.     self freezeControls( false );
  244.     self StoreText("Main Menu", "Main Menu");
  245.                    
  246.     self.menu.background FadeOverTime(0.3);
  247.     self.menu.background.alpha = 0.65;
  248.  
  249.     self.menu.line MoveOverTime(0.15);
  250.     self.menu.line.y = -50;
  251.    
  252.     self.menu.scroller MoveOverTime(0.15);
  253.     self.menu.scroller.y = self.menu.opt[self.menu.curs[self.menu.currentmenu]].y+1;
  254.     self.menu.open = true;
  255. }
  256.  
  257. closeMenu()
  258. {
  259.     for(i = 0; i < self.menu.opt.size; i++)
  260.     {
  261.         self.menu.opt[i] FadeOverTime(0.3);
  262.         self.menu.opt[i].alpha = 0;
  263.     }
  264.    
  265.     self.menu.background FadeOverTime(0.3);
  266.     self.menu.background.alpha = 0;
  267.    
  268.     self.menu.title FadeOverTime(0.3);
  269.     self.menu.title.alpha = 0;
  270.    
  271.     self.menu.line MoveOverTime(0.15);
  272.     self.menu.line.y = -550;
  273.    
  274.     self.menu.scroller MoveOverTime(0.15);
  275.     self.menu.scroller.y = -500;   
  276.     self.menu.open = false;
  277. }
  278.  
  279. destroyMenu(player)
  280. {
  281.     player.MenuInit = false;
  282.     closeMenu();
  283.    
  284.     wait 0.3;
  285.    
  286.     for(i=0; i < self.menu.menuopt[player.menu.currentmenu].size; i++)
  287.     { player.menu.opt[i] destroy(); }
  288.        
  289.     player.menu.background destroy();
  290.     player.menu.scroller destroy();
  291.     player.menu.line destroy();
  292.     player.menu.title destroy();
  293.     player notify( "destroyMenu" );
  294. }
  295.  
  296. closeMenuOnDeath()
  297. {  
  298.     self endon("disconnect");
  299.     self endon( "destroyMenu" );
  300.     level endon("game_ended");
  301.     for (;;)
  302.     {
  303.         self waittill("death");
  304.         self.menu.closeondeath = true;
  305.         self submenu("Main Menu", "Main Menu");
  306.         closeMenu();
  307.         self.menu.closeondeath = false;
  308.     }
  309. }
  310.  
  311. StoreShaders()
  312. {
  313.     self.menu.background = self drawShader("white", 320, -50, 300, 500, (0, 0, 0), 0, 0);
  314.     self.menu.scroller = self drawShader("white", 320, -500, 300, 17, (0, 0, 0), 255, 1);
  315.     self.menu.line = self drawShader("white", 170, -550, 2, 500, (0, 0, 0), 255, 2);
  316. }
  317.  
  318. StoreText(menu, title)
  319. {
  320.     self.menu.currentmenu = menu;
  321.     self.menu.title destroy();
  322.     self.menu.title = drawText(title, "objective", 2, 280, 30, (1, 1, 1), 0, (0, 0.58, 1), 1, 3);
  323.     self.menu.title FadeOverTime(0.3);
  324.     self.menu.title.alpha = 1;
  325.    
  326.     for(i=0; i < self.menu.menuopt[menu].size; i++)
  327.     {
  328.         self.menu.opt[i] destroy();
  329.         self.menu.opt[i] = drawText(self.menu.menuopt[menu][i], "objective", 1.6, 280, 68 + (i*20), (1, 1, 1), 0, (0, 0, 0), 0, 4);
  330.         self.menu.opt[i] FadeOverTime(0.3);
  331.         self.menu.opt[i].alpha = 1;
  332.     }
  333. }
  334.  
  335. MenuInit()
  336. {
  337.     self endon("disconnect");
  338.     self endon( "destroyMenu" );
  339.     level endon("game_ended");
  340.        
  341.     self.menu = spawnstruct();
  342.     self.toggles = spawnstruct();
  343.      
  344.     self.menu.open = false;
  345.    
  346.     self StoreShaders();
  347.     self CreateMenu();
  348.    
  349.     for(;;)
  350.     {  
  351.         if(self MeleeButtonPressed() && self adsbuttonpressed() && !self.menu.open) // Open.
  352.         {
  353.             openMenu();
  354.         }
  355.         if(self.menu.open)
  356.         {
  357.             if(self usebuttonpressed())
  358.             {
  359.                 if(isDefined(self.menu.previousmenu[self.menu.currentmenu]))
  360.                 {
  361.                     self submenu(self.menu.previousmenu[self.menu.currentmenu]);
  362.                 }
  363.                 else
  364.                 {
  365.                     closeMenu();
  366.                 }
  367.                 wait 0.2;
  368.             }
  369.             if(self actionslotonebuttonpressed() || self actionslottwobuttonpressed())
  370.             {  
  371.                 self.menu.curs[self.menu.currentmenu] += (Iif(self actionslottwobuttonpressed(), 1, -1));
  372.                 self.menu.curs[self.menu.currentmenu] = (Iif(self.menu.curs[self.menu.currentmenu] < 0, self.menu.menuopt[self.menu.currentmenu].size-1, Iif(self.menu.curs[self.menu.currentmenu] > self.menu.menuopt[self.menu.currentmenu].size-1, 0, self.menu.curs[self.menu.currentmenu])));
  373.                
  374.                 self.menu.scroller MoveOverTime(0.15);
  375.                 self.menu.scroller.y = self.menu.opt[self.menu.curs[self.menu.currentmenu]].y+1;
  376.             }
  377.             if(self jumpbuttonpressed())
  378.             {
  379.                 self thread [[self.menu.menufunc[self.menu.currentmenu][self.menu.curs[self.menu.currentmenu]]]](self.menu.menuinput[self.menu.currentmenu][self.menu.curs[self.menu.currentmenu]], self.menu.menuinput1[self.menu.currentmenu][self.menu.curs[self.menu.currentmenu]]);
  380.                 wait 0.2;
  381.             }
  382.         }
  383.         wait 0.05;
  384.     }
  385. }
  386.  
  387. submenu(input, title)
  388. {
  389.     if (verificationToNum(self.status) >= verificationToNum(self.menu.status[input]))
  390.     {
  391.         for(i=0; i < self.menu.opt.size; i++)
  392.         { self.menu.opt[i] destroy(); }
  393.        
  394.         if (input == "Main Menu")
  395.             self thread StoreText(input, "Main Menu");
  396.         else if (input == "PlayersMenu")
  397.         {
  398.             self updatePlayersMenu();
  399.             self thread StoreText(input, "Players");
  400.         }
  401.         else
  402.             self thread StoreText(input, title);
  403.            
  404.         self.CurMenu = input;
  405.        
  406.         self.menu.scrollerpos[self.CurMenu] = self.menu.curs[self.CurMenu];
  407.         self.menu.curs[input] = self.menu.scrollerpos[input];
  408.        
  409.         if (!self.menu.closeondeath)
  410.         {
  411.             self.menu.scroller MoveOverTime(0.15);
  412.             self.menu.scroller.y = self.menu.opt[self.menu.curs[self.CurMenu]].y+1;
  413.         }
  414.     }
  415.     else
  416.     {
  417.         self iPrintln("Only Players With ^1" + verificationToColor(self.menu.status[input]) + " ^7Can Access This Menu!");
  418.     }
  419. }
  420.  
  421. //Functions
Advertisement
Add Comment
Please, Sign In to add comment