Advertisement
BaSs_HaXoR

Sharks BO2 GSC Menu Base

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