VintageRice

[Cod5][Release] - 'Tabbed' Menu Base

May 24th, 2014
853
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #include common_scripts\utility;
  2. #include maps\_utility;
  3. #include maps\_hud_util;
  4.  
  5. /*
  6.     vRice's Tabbed Menu Base
  7.     Created in about 8 hours (Including bug fixing), 2 hours spent figuring out scroller & infinite scroll combination |:
  8.    
  9.     Massive credit to Kieran: for the idea, he made the original base/design. He also made my selecting script a lot smaller
  10.     www.youtube.com/YourDesiqn
  11.  
  12.     self.Menu[0] = Titles
  13.     self.Menu[1] = Options
  14.     self.Menu[2] = Title Scroller
  15.     self.Menu[3] = Option Scroller
  16.     self.Menu[4] = Background
  17.    
  18.     I have decided to comment on each function to make it easier for the n000bBbbzz ;)
  19. */
  20.  
  21. // This is what you should thread from _cheat.gsc or something
  22. Settings()
  23. {
  24.     self.InMenu = 0;
  25.    
  26.     self thread MenuOptions();
  27.     self thread Controls();
  28.     self thread DefaultValues("Both");
  29. }
  30.  
  31. // Everything that controls the menu (the heart of it ;))
  32. Controls()
  33. {
  34.     for(;;)
  35.     {
  36.         if(self.InMenu == 0)
  37.         {
  38.             if(self AdsButtonPressed() && self MeleeButtonPressed())
  39.             {
  40.                 self.InMenu = 1;
  41.                
  42.                 for(i = 0; i < 2; i++) self.Curs["Titles"][i] = 0;
  43.                 for(i = 0; i < 2; i++) self.Curs["Options"][i] = 0;
  44.                
  45.                 self MenuGUI();
  46.                 self NewMenu(0);
  47.             }
  48.         }
  49.        
  50.         else
  51.         {
  52.             if(self AttackButtonPressed() || self AdsButtonPressed())
  53.             {
  54.                 self.Curs["Options"][1] += self AttackButtonPressed();
  55.                 self.Curs["Options"][1] -= self AdsButtonPressed();
  56.                
  57.                 if(self AttackButtonPressed() && self.Curs["Options"][0] == 3 && self.Menu["Value"]["Options"][6] != self.MenuNames[self.SubMenu].size - 1 && self.MenuNames[self.SubMenu].size > 7)
  58.                 {
  59.                     for(i = 0; i < 7; i++) self.Menu["Value"]["Options"][i]++;
  60.                     self TextUpdate("SubMenu");
  61.                 }
  62.                
  63.                 else if(self AdsButtonPressed() && self.Curs["Options"][0] == 3 && self.Menu["Value"]["Options"][0] != 0 && self.MenuNames[self.SubMenu].size > 7)
  64.                 {
  65.                     for(i = 0; i < 7; i++) self.Menu["Value"]["Options"][i]--;
  66.                     self TextUpdate("SubMenu");
  67.                 }
  68.                
  69.                 else
  70.                 {
  71.                     if(self.Curs["Options"][0] >= 0 || self.Curs["Options"][0] <= 6)
  72.                     {
  73.                         self.Curs["Options"][0] += self AttackButtonPressed();
  74.                         self.Curs["Options"][0] -= self AdsButtonPressed();
  75.                     }
  76.                    
  77.                     if(self.MenuNames[self.SubMenu].size < 7)
  78.                     {
  79.                         if(self.Curs["Options"][1] > self.MenuNames[self.SubMenu].size - 1) for(i = 0; i < 2; i++) self.Curs["Options"][i] = 0;
  80.                         if(self.Curs["Options"][1] < 0) for(i = 0; i < 2; i++) self.Curs["Options"][i] = self.MenuNames[self.SubMenu].size - 1;
  81.                     }
  82.                    
  83.                     else
  84.                     {
  85.                         if(self.Curs["Options"][0] > 6) self RedoOptions("+", 0);
  86.                         if(self.Curs["Options"][0] < 0) self RedoOptions("-", 6);
  87.                     }
  88.                    
  89.                     self.Menu[3] MoveElement(.1, 160, self.Menu[1][self.Curs["Options"][0]].y);
  90.                     self ScrollColour(7, self.Menu[1], self.Curs["Options"][0]);
  91.                 }
  92.                
  93.                 wait .05;
  94.             }
  95.            
  96.             if(self FragButtonPressed())
  97.             {
  98.                 self.Curs["Titles"][1]++;
  99.                
  100.                 if(self.Curs["Titles"][0] == 1 && self.Menu["Value"]["Titles"][2] != self.MenuNames["Main"].size - 1 && self.MenuNames["Main"].size > 3)
  101.                 {
  102.                     for(i = 0; i < 3; i++) self.Menu["Value"]["Titles"][i]++;
  103.                     self TextUpdate("Main");
  104.                 }
  105.                
  106.                 else
  107.                 {
  108.                     if(self.Curs["Titles"][0] >= 0 || self.Curs["Titles"][0] <= 2) self.Curs["Titles"][0]++;
  109.                     if(self.MenuNames["Main"].size < 3) if(self.Curs["Titles"][1] > self.MenuNames["Main"].size - 1) for(i = 0; i < 2; i++) self.Curs["Titles"][i] = 0;
  110.                     if(self.Curs["Titles"][0] > 2) self RedoTitles();
  111.                    
  112.                     self.Menu[2] MoveElement(.1, self.Menu[0][self.Curs["Titles"][0]].x, -25);
  113.                     self ScrollColour(3, self.Menu[0], self.Curs["Titles"][0]);
  114.                 }
  115.                
  116.                 self NewMenu(self.Curs["Titles"][1]);
  117.                 wait .05;
  118.             }
  119.                
  120.             if(self UseButtonPressed())
  121.             {
  122.                 self thread [[self.Function[self.SubMenu][self.Curs["Options"][1]]]](self.aInput[self.SubMenu][self.Curs["Options"][1]], self.bInput[self.SubMenu][self.Curs["Options"][1]]);
  123.                 wait .1;
  124.             }
  125.            
  126.             if(self MeleeButtonPressed()) self AnimateGUI("Close");
  127.         }
  128.         wait .1;
  129.     }
  130. }
  131.  
  132. // These are the options which you're adding to the menu
  133. MenuOptions()
  134. {  
  135.     for(i = 0; i < 15; i++) self AddOption("Main", i, "Main Menu " + i, ::NewMenu, i);
  136.     for(i = 0; i < 15; i++) for(ii = 0; ii < 15; ii++) self AddOption(i, ii, "Sub Option " + ii, ::Testing);
  137. }
  138.  
  139. // How the menu looks, creating all the elements (13 in total)
  140. MenuGUI()
  141. {
  142.     for(i = 0; i < 3; i++) self.Menu[0][i] = CreateText(self.MenuNames["Main"][i], "Default", 1.25, "CENTER", "LEFT", -150, -25, 1, 1);
  143.     for(i = 0; i < 7; i++) self.Menu[1][i] = CreateText(self.MenuNames[0][i], "Default", 1.25, "CENTER", "LEFT", -150, i * 20, 2, 1);
  144.    
  145.     self.Menu[2] = CreateElement("CENTER", "LEFT", -150, -25, 100, 20, (0, 0, 0), "WHITE", 2, .4);
  146.     self.Menu[3] = CreateElement("CENTER", "LEFT", 160, self.Menu[1][0].y, 300, 20, (0, 0, 0), "WHITE", 2, 0);
  147.     self.Menu[4] = CreateElement("CENTER", "LEFT", -150, self.Menu[1][3].y, 300, 150, (0, 0, 0), "WHITE", 1, .4);
  148.    
  149.     self AnimateGUI("Open");
  150. }
  151.  
  152. // Opening and closing animation
  153. AnimateGUI(Option)
  154. {
  155.     if(Option == "Open")
  156.     {
  157.         self.Menu[2] MoveElement(.13, 60, -25);
  158.         self.Menu[4] MoveElement(.13, 160, self.Menu[1][3].y, "Yes");
  159.        
  160.         for(i = 3; i > -1; i--) self.Menu[0][i] MoveElement(.13, ((i * 100) - 100) + 160, -25, "Yes");
  161.         for(i = 0; i < 8; i++) self.Menu[1][i] MoveElement(.13, 160, i * 20, "Yes");
  162.    
  163.         self.Menu[3] fadeOverTime(.3);
  164.         self.Menu[3].alpha = .4;
  165.        
  166.         self ScrollColour(7, self.Menu[1], self.Curs["Options"][0]);
  167.     }
  168.    
  169.     if(Option == "Close")
  170.     {
  171.         self.Menu[3] fadeOverTime(.3);
  172.         self.Menu[3].alpha = 0;
  173.        
  174.         if(self.Menu[5].alpha > 0)
  175.         {
  176.             self.Menu[5] fadeOverTime(.3);
  177.             self.Menu[5].alpha = 0;
  178.         }
  179.        
  180.         for(i = 7; i > -1; i--) self.Menu[1][i] MoveElement(.13, -150, i * 20, "Yes");
  181.         for(i = 0; i < 3; i++) self.Menu[0][i] MoveElement(.13, -150, -25, "Yes");
  182.        
  183.         self.Menu[4] MoveElement(.13, -150, self.Menu[1][3].y);
  184.         self.Menu[2] MoveElement(.13, -150, -25, "Yes");
  185.        
  186.         wait .1;
  187.         self CloseMenu();
  188.     }
  189. }
  190.  
  191. // The blue fade you see over the selected option
  192. ScrollColour(Num, Menu, Curs)
  193. {
  194.     for(i = 0; i < Num; i++)
  195.     {
  196.         Menu[i] fadeOverTime(.25);
  197.         Menu[i].color = (1, 1, 1);
  198.     }
  199.    
  200.     Menu[Curs] fadeOverTime(.25);
  201.     Menu[Curs].color = (0, .5, 1);
  202. }
  203.  
  204. // Resets the titles to 0
  205. RedoTitles()
  206. {
  207.     self.Curs["Titles"][0] = 0;
  208.     self.Curs["Titles"][1] = 0;
  209.    
  210.     self.Menu[2] MoveElement(.1, self.Menu[0][0].x, -25);
  211.     for(i = 0; i < 3; i++) self.Menu[0][i] SetText(self.MenuNames["Main"][i]);
  212.    
  213.     self DefaultValues("Titles");
  214. }
  215.  
  216. // Resets the options to either 0 or self.MenuNames[self.SubMenu].size - 1
  217. RedoOptions(Direction, Num)
  218. {
  219.     self.Curs["Options"][0] = Num;
  220.    
  221.     self.Menu[3] MoveElement(.1, 160, self.Menu[1][Num].y);
  222.     self ScrollColour(7, self.Menu[1], self.Curs["Options"][0]);
  223.    
  224.     if(Direction == "+")
  225.     {
  226.         for(i = 0; i < 7; i++) self.Menu[1][i] SetText(self.MenuNames[self.SubMenu][i]);
  227.         self DefaultValues("Options");
  228.        
  229.         self.Curs["Options"][1] = 0;
  230.     }
  231.    
  232.     else
  233.     {
  234.         for(i = 0; i < 8; i++)
  235.         {
  236.             self.Menu[1][7 - i] SetText(self.MenuNames[self.SubMenu][self.MenuNames[self.SubMenu].size - i]);
  237.             self.Menu["Value"]["Options"][7 - i] = self.MenuNames[self.SubMenu].size - i;
  238.         }
  239.        
  240.         self.Curs["Options"][1] = self.MenuNames[self.SubMenu].size - 1;
  241.     }
  242. }
  243.  
  244. // Deletes all the menus hud elements
  245. CloseMenu()
  246. {
  247.     self.InMenu = 0;
  248.    
  249.     for(i = 0; i < 3; i++) self.Menu[0][i] destroy();
  250.     for(i = 0; i < 7; i++) self.Menu[1][i] destroy();
  251.    
  252.     for(i = 0; i < 6; i++) self.Menu[i] destroy();
  253. }
  254.  
  255. // Resets the 'infinite' option values
  256. DefaultValues(Value)
  257. {
  258.     if(Value == "Options" || Value == "Both") for(i = 0; i < 7; i++) self.Menu["Value"]["Options"][i] = i;
  259.     if(Value == "Titles" || Value == "Both") for(i = 0; i < 3; i++) self.Menu["Value"]["Titles"][i] = i;
  260. }
  261.  
  262. // Updates the text for titles and options
  263. TextUpdate(Menu)
  264. {
  265.     if(Menu == "Main")
  266.     {
  267.         for(i = 0; i < 3; i++) self.Menu[0][i] SetText(self.MenuNames["Main"][self.Menu["Value"]["Titles"][i]]);
  268.        
  269.         self.Menu[2] scaleOverTime(.05, 110, 20); wait .1;
  270.         self.Menu[2] scaleOverTime(.05, 100, 20);
  271.     }
  272.     else for(i = 0; i < 7; i++) self.Menu[1][i] SetText(self.MenuNames[self.SubMenu][self.Menu["Value"]["Options"][i]]);
  273. }
  274.  
  275. // What happens when I new menu is created
  276. NewMenu(Num)
  277. {
  278.     self.SubMenu = Num;
  279.     for(i = 0; i < 2; i++) self.Curs["Options"][i] = 0;
  280.    
  281.     if(self.Menu[3].y != self.Menu[1][0].y)
  282.     {
  283.         self.Menu[3] MoveElement(.1, 160, self.Menu[1][0].y);
  284.         self ScrollColour(7, self.Menu[1], self.Curs["Options"][0]);
  285.     }
  286.    
  287.     self ScrollColour(3, self.Menu[0], self.Curs["Titles"][0]);
  288.                
  289.     self DefaultValues("Options");
  290.     self TextUpdate("SubMenu");
  291. }
  292.  
  293. // How the menu adds options
  294. AddOption(M, N, Name, Func, aParam, bParam)
  295. {
  296.     self.MenuNames[M][N] = Name;
  297.     self.Function[M][N] = Func;
  298.    
  299.     if(isDefined(aParam)) self.aInput[M][N] = aParam;
  300.     if(isDefined(bParam)) self.bInput[M][N] = bParam;
  301. }
  302.  
  303. // Moves hud elements
  304. MoveElement(Time, xPos, yPos, Wait)
  305. {
  306.     self MoveOverTime(Time);
  307.     self.x = xPos; self.y = yPos;
  308.    
  309.     if(Wait == "Yes") wait Time;
  310. }
  311.  
  312. // Creating all of the text in the menu
  313. CreateText(Text, Font, Scale, Align, Relative, X, Y, Sort, Alpha)
  314. {
  315.     self endon("death");
  316.     TextElem = createFontString(Font, Scale, self);
  317.    
  318.     TextElem setPoint(Align, Relative, x, y);
  319.     TextElem SetText(Text);
  320.    
  321.     TextElem.sort = Sort;
  322.     TextElem.alpha = Alpha;
  323.     TextElem.foreground = true;
  324.    
  325.     return TextElem;
  326. }
  327.  
  328. // Creating the elements
  329. CreateElement(Align, Relative, X, Y, Width, Height, Color, Shader, Sort, Alpha)
  330. {
  331.     self endon("death");
  332.     RectangleElem = newClientHudElem( self );
  333.    
  334.     RectangleElem.elemType = "bar";
  335.     RectangleElem.width = Width;
  336.     RectangleElem.height = Height;
  337.     RectangleElem.align = Align;
  338.     RectangleElem.relative = Relative;
  339.     RectangleElem.xOffset = 0;
  340.     RectangleElem.yOffset = 0;
  341.     RectangleElem.children = [];
  342.     RectangleElem.sort = Sort;
  343.     RectangleElem.color = Color;
  344.     RectangleElem.alpha = Alpha;
  345.     RectangleElem setParent( level.uiParent );
  346.     RectangleElem setShader( Shader, Width , Height );
  347.     RectangleElem.hidden = false;
  348.     RectangleElem setPoint(Align, Relative, X, Y);
  349.    
  350.     return RectangleElem;
  351. }
  352.  
  353. // For... testing...
  354. Testing()
  355. {
  356.     self iprintln(self.MenuNames[self.SubMenu][self.Curs["Options"][1]]);
  357. }
Advertisement
Add Comment
Please, Sign In to add comment