VintageRice

[Cod5][Release] - Windows 8 Style Menu Base

May 5th, 2014
523
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 Windows 8 Style Base
  7.     Idea from 'JTAGxHACKER
  8.    
  9.     *First base by me written from scratch :)
  10.    
  11.     self.Tile[0] = Background
  12.     self.Tile[1] = Vertical Splits
  13.     self.Tile[2] = Horizontal Splits
  14.     self.Tile[3] = Menu Text
  15.     self.Tile[4] = Scroller
  16. */
  17.  
  18. Settings()
  19. {
  20.     self.InMenu = 0;
  21.    
  22.     self Dvars(0, 1, 0, false, 1, 0, 0);
  23.    
  24.     self thread Windows8();
  25.     self thread MenuOptions();
  26.     self thread DefaultColours();
  27. }
  28.  
  29. DefaultColours()
  30. {
  31.     self.Colour[0] = (0, .5, 1);
  32.     for(i = 1; i < 3; i++) self.Colour[i] = (0, 0, 0);
  33.     self.Colour[3] = (1, 1, 1);
  34.     self.Colour[4] = (0, .25, 1);
  35. }
  36.  
  37. /*
  38.     The reason I have done the menu options like this is because it saved space for testing, you need a basic scripting knowledge to add your own menus
  39.     So yeah, add menu's like so:
  40.    
  41.     MAIN MENU - self AddOption( 0, 0, "Main Menu Name", ::NewMenu, 0, "" );
  42.     SUB MENU - self AddOption( 0, 0, "Sub Menu Name", ::Test, "", "" );
  43. */
  44.  
  45. MenuOptions()
  46. {
  47.     self.MenuNames = []; self.Function = []; self.Input = []; self.Inputx = [];
  48.  
  49.     self.Title[0] = "Main Menu";
  50.     self.MenuNames[0] = [];
  51.     for(i = 0; i < 12; i++) self AddOption( 0, i, "Main Menu " + i, ::NewMenu, (i + 1), "" );
  52.    
  53.     for(i = 0; i < 12; i++)
  54.     {
  55.         self.Title[i + 1] = "Sub Menu " + i;
  56.         self.MenuNames[i + 1] = [];
  57.         for(o = 0; o < 12; o++) self AddOption( i + 1, o, "Sub Option " + o, ::Test, "", "" );
  58.     }
  59. }
  60.  
  61. Windows8()
  62. {
  63.     for(;;)
  64.     {
  65.         if(self.InMenu == 0 && self AdsButtonPressed() && self MeleeButtonPressed())
  66.         {
  67.             self.InMenu = 1;
  68.             self.Curs = 0;
  69.            
  70.             self Dvars(5, 0, 1, true, 0, 1, 1);
  71.             self MenuText();
  72.            
  73.             if(isDefined(level.chalk_hud2)) level.chalk_hud2 Destroy();
  74.             level.chalk_hud1 Destroy();
  75.            
  76.             self.Tile[0] = CreateElement("CENTER", "CENTER", 1000, 0, 400, 300, self.Colour[0], "white", 1, .3);
  77.             self.Tile[0] MoveElement(.3, 0, 0); wait .5;
  78.            
  79.             self.Tile[4] = CreateElement("CENTER", "CENTER", self.Tile[3][0].x, self.Tile[3][0].y, 100, 100, self.Colour[4], "white", 1, .3);
  80.    
  81.             for(i = 0; i < 3; i++) {self.Tile[1][i] = CreateElement("CENTER", "CENTER", ((i * 100) - 100), 0, 2, 300, self.Colour[1], "white", 2, 1); wait .125;}
  82.             for(i = 0; i < 2; i++) {self.Tile[2][i] = CreateElement("CENTER", "CENTER", 0, ((i * 100) - 50), 400, 2, self.Colour[2], "white", 2, 1); wait .125;}
  83.            
  84.             self SubMenu(0);
  85.            
  86.             wait .05;
  87.         }
  88.        
  89.         if(self.InMenu == 1 && self AdsButtonPressed() || self AttackButtonPressed())
  90.         {
  91.             self.Curs += self AttackButtonPressed();
  92.             self.Curs -= self AdsButtonPressed();
  93.            
  94.             if(self.Curs > self.MenuNames[self.SubMenu].size - 1) self.Curs = 0;
  95.             if(self.Curs < 0) self.Curs = self.MenuNames[self.SubMenu].size - 1;
  96.            
  97.             self MenuScroll();
  98.            
  99.             wait .1;
  100.         }
  101.        
  102.         if(self.InMenu == 1 && self UseButtonPressed())
  103.         {  
  104.             if(!isDefined(self.Input[self.SubMenu][self.Curs]) && !isDefined(self.Inputx[self.SubMenu][self.Curs])) self thread [[self.Function[self.SubMenu][self.Curs]]]();
  105.             else if(isDefined(self.Input[self.SubMenu][self.Curs]) && !isDefined(self.Inputx[self.SubMenu][self.Curs])) self thread [[self.Function[self.SubMenu][self.Curs]]](self.Input[self.SubMenu][self.Curs]);
  106.             else if(isDefined(self.Input[self.SubMenu][self.Curs]) && isDefined(self.Inputx[self.SubMenu][self.Curs])) self thread [[self.Function[self.SubMenu][self.Curs]]](self.Input[self.SubMenu][self.Curs],self.Inputx[self.SubMenu][self.Curs]);
  107.             wait .1;
  108.         }
  109.        
  110.         if(self.InMenu == 1 && self MeleeButtonPressed())
  111.         {
  112.             if(self.SubMenu == 0) self CloseMenu();
  113.             else self SubMenu(0);
  114.         }
  115.         wait .2;
  116.     }
  117. }
  118.  
  119. MenuScroll()
  120. {
  121.     self.Tile[4] MoveElement(.2, self.Tile[3][self.Curs].x, self.Tile[3][self.Curs].y);
  122.     for(i = 0; i < 12; i++) self.Tile[3][i].alpha = .5; wait .05; self.Tile[3][self.Curs].alpha = 1;
  123. }
  124.  
  125. CloseMenu()
  126. {
  127.     self.InMenu = 0;
  128.    
  129.     for(i = self.Tile[3].size; i > -1; i--) {self.Tile[3][i] destroy(); wait .125;}
  130.    
  131.     self.Tile[5] destroy();
  132.    
  133.     for(i = 2; i > -1; i--) {self.Tile[2][i] destroy(); wait .125;}
  134.     for(i = 3; i > -1; i--) {self.Tile[1][i] destroy(); wait .125;}
  135.    
  136.     self.Tile[4] destroy(); wait .125;
  137.     self.Tile[0] MoveElement(.3, 1000, 0); wait .4; self.Tile[0] destroy();
  138.    
  139.     self Dvars(0, 1, 0, false, 1, 0, 0);
  140. }
  141.  
  142. DefaultThings(Num)
  143. {
  144.     self.Curs = 0;
  145.     self.SubMenu = Num;
  146.     self MenuScroll();
  147. }
  148.  
  149. NewMenu(Num)
  150. {
  151.     self DefaultThings(Num);
  152.     self TextUpdate(self.MenuNames[Num], Num);
  153. }
  154.  
  155. SubMenu(Num)
  156. {
  157.     self DefaultThings(Num);
  158.     self TextUpdate(self.MenuNames[self.SubMenu], Num);
  159. }
  160.  
  161. TextUpdate(Menu, Num)
  162. {  
  163.     for(i = 0; i < 12; i++) {self.Tile[3][i] SetText(Menu[i]); wait .075;}
  164.     self.Tile[3].color = self.Colour[4];
  165.    
  166.     self.FinalTitle = "";
  167.     for(i = 0; i < self.Title[Num].size; i++) {self.FinalTitle += self.Title[Num][i]; self.Tile[5] SetText(self.FinalTitle); wait .075;}
  168. }
  169.  
  170. MenuText()
  171. {
  172.     self.MenuNumber = -1;
  173.     self.Tile[5] = CreateText("", "Default", 1.3, "LEFT", "CENTER", -200, -160, 2, .5);
  174.    
  175.     for(ii = 0; ii < 3; ii++)
  176.     {
  177.         for(i = 0; i < 4; i++)
  178.         {
  179.             self.MenuNumber++;
  180.             self.Tile[3][self.MenuNumber] = CreateText("", "Default", 1.3, "CENTER", "CENTER", (i * 100) - 150, (ii * 100) - 100, 2, .5);
  181.         }
  182.     }
  183. }
  184.  
  185. AddOption(M, N, Name, Func, Opt, Opt1)
  186. {
  187.     self.MenuNames[M][N] = Name;
  188.     self.Function[M][N] = Func;
  189.     if(isDefined(Opt))
  190.     {
  191.         self.Input[M][N] = Opt;
  192.     }
  193.     if(isDefined(Opt1))
  194.     {
  195.         self.Inputx[M][N] = Opt1;
  196.     }
  197. }
  198.  
  199. MoveElement(Time, xPos, yPos)
  200. {
  201.     self MoveOverTime(Time);
  202.    
  203.     self.x = xPos;
  204.     self.y = yPos;
  205. }
  206.    
  207. Dvars(Blur, CrossHair, HUD, Controls, Gun, Ammo, Score)
  208. {
  209.     self setClientDvars("cg_drawcrosshair", CrossHair, "ui_hud_hardcore", HUD, "cg_drawgun", Gun, "ammoCounterHide", Ammo, "miniscoreboardHide", Score);
  210.     self SetBlur(Blur, 0.3);
  211.     self FreezeControls(Controls);
  212. }
  213.  
  214. CreateText(Text, Font, Scale, Align, Relative, x, y, Sort, Alpha)
  215. {
  216.     self endon("death");
  217.     TextElem = createFontString(Font, Scale, self);
  218.    
  219.     TextElem setPoint(Align, Relative, x, y);
  220.     TextElem SetText(Text);
  221.    
  222.     TextElem.sort = Sort;
  223.     TextElem.alpha = Alpha;
  224.     TextElem.foreground = true;
  225.    
  226.     return TextElem;
  227. }
  228.  
  229. CreateElement(Align, Relative, X, Y, Width, Height, Color, Shader, Sort, Alpha)
  230. {
  231.     self endon("death");
  232.     RectangleElem = newClientHudElem( self );
  233.    
  234.     RectangleElem.elemType = "bar";
  235.     RectangleElem.width = Width;
  236.     RectangleElem.height = Height;
  237.     RectangleElem.align = Align;
  238.     RectangleElem.relative = Relative;
  239.     RectangleElem.xOffset = 0;
  240.     RectangleElem.yOffset = 0;
  241.     RectangleElem.children = [];
  242.     RectangleElem.sort = Sort;
  243.     RectangleElem.color = Color;
  244.     RectangleElem.alpha = Alpha;
  245.     RectangleElem setParent( level.uiParent );
  246.     RectangleElem setShader( Shader, Width , Height );
  247.     RectangleElem.hidden = false;
  248.     RectangleElem setPoint(Align, Relative, X, Y);
  249.    
  250.     return RectangleElem;
  251. }
  252.  
  253. //The functions that the menu does use to run are below:
  254.  
  255. Test()
  256. {
  257.     self iprintln(self.Tile[3][self.Curs]);
  258. }
Advertisement
Add Comment
Please, Sign In to add comment