Advertisement
sseebbyy

Custom Menu System v1.0 by Seby (for VC:MP)

Sep 23rd, 2014
411
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 28.97 KB | None | 0 0
  1. /*
  2. Custom Menu System v1.0 for Vice City Multiplayer.
  3. Scripter: Seby
  4. Special credits goes to shadow.heekz,Knucis and Gudio because I learnt new squirrel stuff from them.
  5.  
  6. Functions: CreateMenu(title,options);
  7. info - options are up to 8
  8.  
  9. Events: 1. onPlayerMenu(player,menuid,option);
  10. info - This is called when a player choose an option from the main menu, that has no submenu.
  11.        
  12.         2. onPlayerSubMenu(player,submenuid,option);
  13. info - This is called when a player choose an option from a submenu, of an option choosed in the main menu.
  14. */
  15.  
  16. menuoptionchoosen <- array(GetMaxPlayers(), null);
  17. menuidonscreen <- array(GetMaxPlayers(), null);
  18.  
  19. submenuonscreen <- array(GetMaxPlayers(), null);
  20. submenuoptionchoosen <- array(GetMaxPlayers(), null);
  21.  
  22. menucount <- 0;
  23. menu <- array(255, null);
  24.  
  25. //-------------------------------------------------------------------
  26.  
  27.  
  28. function onScriptLoad()
  29. {
  30.     // Bind Keys ==========================================================
  31.         UP_ARROW <- BindKey(true, 0x26, 0, 0);
  32.         DOWN_ARROW <- BindKey(true, 0x28, 0, 0);
  33.         SPACEBAR <- BindKey(true, 0x20, 0, 0);
  34.         BACKSPACE <- BindKey(true, 0x08, 0, 0);
  35.     // ====================================================================
  36.     print("Menu System v1.0 made by Seby was loaded.");
  37. }
  38.  
  39. //-------------------------------------------------------------------
  40.  
  41. function onScriptUnload()
  42. {
  43.     print("Menu System v1.0 made by Seby could not be loaded.");
  44. }
  45.  
  46. //-------------------------------------------------------------------
  47.  
  48. function onPlayerJoin( player )
  49. {
  50.     menuidonscreen[player.ID] = -1;
  51.     menuoptionchoosen[player.ID] = 0;
  52.     submenuoptionchoosen[player.ID] = 0;
  53.     submenuonscreen[player.ID] = 0;
  54. }
  55.  
  56. //-------------------------------------------------------------------
  57.  
  58. function onPlayerMenu(player, menuid, option)
  59. {
  60.         switch(menuid) // menu ID - it starts with 0
  61.         {
  62.                 case 0: // first menu/menu created
  63.                                 switch(option) // we are switching options now
  64.                                 {
  65.                                         case 1: // this means the first option from menu 0
  66.                                                         MessagePlayer("// code here for option 1 in menu 0",player);
  67.                                                 break;
  68.                                         case 2: // option 2
  69.                                                         // here script the code for the option2, when it is selected.
  70.                                                 break;
  71.                                 default: break;
  72.                                 }
  73.                 break;
  74.                 default: break;
  75.         }
  76. }
  77.  
  78. //-------------------------------------------------------------------
  79.  
  80. function onPlayerSubMenu(player, submenuid, option)
  81. {
  82.         switch(submenuid) // the ID of the selected option in main menu
  83.         {
  84.                 case 1: // it starts with ID 1, and not with 0
  85.                         switch(option)
  86.                         {
  87.                                 case 1: // the ID of the selected option in the sub menu - it also starts with ID 0
  88.                                         MessagePlayer("You choosed the option 1 of the submenu with ID 1",player);
  89.                                         break;
  90.                                 case 2:
  91.                                         MessagePlayer("// code here for the choosed option 2 of the submenu with ID 1",player);
  92.                                         break;
  93.                                 default: break;
  94.                         }
  95.                         break;
  96.                 default: break;
  97.         }
  98. }
  99.  
  100. //-------------------------------------------------------------------
  101.  
  102. function onPlayerCommand( player, command, arguments )
  103. {
  104.     local cmd = command;
  105.        
  106.     if(cmd == "menutest")
  107.     {
  108.         CreateMenu("Menu System","Option1","Option2","Option3","Option4","Option5","Option6","Option7","Option8");
  109.         menu[0].AddSubMenu(1,"Suboption1-nr1","Suboption1-nr2");
  110.         menu[0].AddSubMenu(2,"Suboption2-nr1","Suboption2-nr2","Suboption2-nr3");
  111.         menu[0].AddSubMenu(3,"Suboption3-nr1","Suboption3-nr2","Suboption3-nr3","Suboption3-nr4");
  112.         menu[0].AddSubMenu(4,"Suboption4-nr1","Suboption4-nr2","Suboption4-nr3","Suboption4-nr4","Suboption4-nr5");
  113.         menu[0].AddSubMenu(5,"Suboption5-nr1","Suboption5-nr2","Suboption5-nr3","Suboption5-nr4","Suboption5-nr5","Suboption5-nr6");
  114.         menu[0].AddSubMenu(6,"Suboption6-nr1","Suboption6-nr2","Suboption6-nr3","Suboption6-nr4","Suboption6-nr5","Suboption6-nr6","Suboption6-nr7");
  115.         menu[0].AddSubMenu(7,"Suboption7-nr1","Suboption7-nr2","Suboption7-nr3","Suboption7-nr4","Suboption7-nr5","Suboption&-nr6","Suboption7-nr7","Suboption7-nr8");
  116.         menu[0].AddSubMenu(8,"You","cannot","add","just","one","option !","The reason","is very logic.");
  117.         menu[0].ShowForPlayer(player);
  118.     }
  119.     return 1;
  120. }
  121.  
  122. //-------------------------------------------------------------------
  123.  
  124. function onKeyDown( player, bind )
  125. {
  126.     switch(bind)
  127.     {
  128.         case UP_ARROW:
  129.             if(menuidonscreen[player.ID] > -1) KeyBindMenu(player, UP_ARROW);
  130.             break;
  131.         case DOWN_ARROW:
  132.             if(menuidonscreen[player.ID] > -1) KeyBindMenu(player, DOWN_ARROW);
  133.             break;
  134.         case SPACEBAR:
  135.             if(menuidonscreen[player.ID] > -1) KeyBindMenu(player, SPACEBAR);
  136.             break;
  137.         case BACKSPACE:
  138.             if(menuidonscreen[player.ID] > -1) KeyBindMenu(player, BACKSPACE);
  139.             break;
  140.         default: break;
  141.     }
  142. }
  143.  
  144. //-------------------------------------------------------------------
  145.  
  146. class ClassForMenu
  147. {  
  148.             // textdraws
  149.                 t = null;
  150.                 tt = null;
  151.             // end of textdraws
  152.    
  153.             // sprites
  154.                 s = null;
  155.             // end of sprites
  156.                
  157.                 numberofparams = null;
  158.                 numberofparamssub = null;
  159.                 optionhassubmenu = null;
  160.                 ID = null;
  161.                 optionname = null;
  162.                 suboption = null;
  163.                
  164.                 x = null;
  165.                 y = null;
  166.                 optionx = null;
  167.                 titlecol = null;
  168.                 unselectedcol = null;
  169.                 selectedcol = null;
  170.                 spritex = null;
  171.                 spritey = null;
  172.                
  173.                 constructor(menuid,thetitle, ...)
  174.                 {
  175.                     if ( vargv.len() > 1 || vargv.len() > 8)
  176.                     {
  177.                    
  178.                         x = 80;
  179.                         y = 310;
  180.                         optionx = x+50;
  181.                         titlecol = 0xFF00FFFF;
  182.                         unselectedcol = 0xFFAAAAAA;
  183.                         selectedcol = 0xFFFFFFFF;
  184.                         spritex = x-10;
  185.                         spritey = y-10;
  186.                    
  187.                         t = array(9,null);
  188.                         tt = array(9,null);
  189.                         s = array(9,null);
  190.                         suboption = array(9,null);
  191.                         for(local i = 0; i < t.len(); i++)
  192.                         {
  193.                             t[i] = array(9,null);
  194.                             tt[i] = array(9,null);
  195.                             s[i] = array(9,null);
  196.                             suboption[i] = array(9,null);
  197.                         }
  198.                        
  199.                         optionname = array(9,null);
  200.                         numberofparamssub = array(9,null);
  201.                         optionhassubmenu = array(9, null);
  202.                        
  203.                         for(local i = 0; i < optionhassubmenu.len(); i++) optionhassubmenu[i] = 0;
  204.                        
  205.                         ID = menuid;
  206.                        
  207.                         local title = thetitle.tostring();
  208.                        
  209.                         //==================================================================================
  210.                         // Index options' names
  211.                         for(local so = 0; so <= vargv.len(); so++)
  212.                         {
  213.                             if(so)
  214.                             {
  215.                                 optionname[so] = vargv[so-1];
  216.                             }
  217.                         }
  218.                  
  219.                         // Textdraws
  220.                         t[0][0] = ::CreateTextdraw(title,x,y,titlecol);
  221.                         tt[0][1] = ::CreateTextdraw(":: " + vargv[0],optionx,y+15,selectedcol);
  222.                         t[0][2] = ::CreateTextdraw(":: " + vargv[1],optionx,y+30,unselectedcol);
  223.                        
  224.                         t[0][1] = ::CreateTextdraw(":: " + vargv[0],optionx,y+15,unselectedcol);
  225.                         tt[0][2] = ::CreateTextdraw(":: " + vargv[1],optionx,y+30,selectedcol);
  226.                        
  227.                         // Sprites
  228.                         s[0][0] = ::CreateSprite("menubackground.png",spritex,spritey,0,0,0,200);
  229.                         s[0][1] = ::CreateSprite("menubackground.png",spritex,spritey+18,0,0,0,200);
  230.                         s[0][2] = ::CreateSprite("menubackground.png",spritex,spritey+36,0,0,0,200);
  231.                         s[0][3] = ::CreateSprite("menubackground.png",spritex,spritey+54,0,0,0,200);
  232.                        
  233.                         numberofparams = vargv.len();
  234.                        
  235.                         //==================================================================================
  236.                        
  237.                             switch(vargv.len())
  238.                             {
  239.                                 case 8:
  240.                                         t[0][8] = ::CreateTextdraw(":: " + vargv[7],optionx,y+120,unselectedcol);
  241.                                         tt[0][8] = ::CreateTextdraw(":: " + vargv[7],optionx,y+120,selectedcol);
  242.                                         t[0][7] = ::CreateTextdraw(":: " + vargv[6],optionx,y+105,unselectedcol);
  243.                                         tt[0][7] = ::CreateTextdraw(":: " + vargv[6],optionx,y+105,selectedcol);
  244.                                         t[0][6] = ::CreateTextdraw(":: " + vargv[5],optionx,y+90,unselectedcol);
  245.                                         tt[0][6] = ::CreateTextdraw(":: " + vargv[5],optionx,y+90,selectedcol);
  246.                                         CreateAllToFive(vargv[2],vargv[3],vargv[4],optionx,y,unselectedcol,selectedcol,spritex,spritey);
  247.                                         s[0][8] = ::CreateSprite("menubackground.png",spritex,spritey+144,0,0,0,200);
  248.                                         s[0][7] = ::CreateSprite("menubackground.png",spritex,spritey+126,0,0,0,200);
  249.                                         break;
  250.                                 case 7:
  251.                                         t[0][7] = ::CreateTextdraw(":: " + vargv[6],optionx,y+105,unselectedcol);
  252.                                         tt[0][7] = ::CreateTextdraw(":: " + vargv[6],optionx,y+105,selectedcol);
  253.                                         t[0][6] = ::CreateTextdraw(":: " + vargv[5],optionx,y+90,unselectedcol);
  254.                                         tt[0][6] = ::CreateTextdraw(":: " + vargv[5],optionx,y+90,selectedcol);
  255.                                         CreateAllToFive(vargv[2],vargv[3],vargv[4],optionx,y,unselectedcol,selectedcol,spritex,spritey);
  256.                                         s[0][7] = ::CreateSprite("menubackground.png",spritex,spritey+126,0,0,0,200);
  257.                                         break;
  258.                                 case 6:
  259.                                         t[0][6] = ::CreateTextdraw(":: " + vargv[5],optionx,y+90,unselectedcol);
  260.                                         tt[0][6] = ::CreateTextdraw(":: " + vargv[5],optionx,y+90,selectedcol);
  261.                                         CreateAllToFive(vargv[2],vargv[3],vargv[4],optionx,y,unselectedcol,selectedcol,spritex,spritey);
  262.                                         s[0][7] = ::CreateSprite("menubackground.png",spritex,spritey+126,0,0,0,200);
  263.                                         break;
  264.                                 case 5:
  265.                                         CreateAllToFive(vargv[2],vargv[3],vargv[4],optionx,y,unselectedcol,selectedcol,spritex,spritey);
  266.                                 case 4:
  267.                                         t[0][4] = ::CreateTextdraw(":: " + vargv[3],optionx,y+60,unselectedcol);
  268.                                         tt[0][4] = ::CreateTextdraw(":: " + vargv[3],optionx,y+60,selectedcol);
  269.                                         t[0][3] = ::CreateTextdraw(":: " + vargv[2],optionx,y+45,unselectedcol);
  270.                                         tt[0][3] = ::CreateTextdraw(":: " + vargv[2],optionx,y+45,selectedcol);
  271.                                         s[0][5] = ::CreateSprite("menubackground.png",spritex,spritey+90,0,0,0,200);
  272.                                         s[0][4] = ::CreateSprite("menubackground.png",spritex,spritey+72,0,0,0,200);
  273.                                         break;
  274.                                 case 3:
  275.                                         t[0][3] = ::CreateTextdraw(":: " + vargv[2],optionx,y+45,unselectedcol);
  276.                                         tt[0][3] = ::CreateTextdraw(":: " + vargv[2],optionx,y+45,selectedcol);
  277.                                         s[0][4] = ::CreateSprite("menubackground.png",spritex,spritey+72,0,0,0,200);
  278.                                         break;
  279.                                 default: break;
  280.                             }
  281.                     } else ::print("Error in menu System - You can add min 2 options, and max 8 options !");
  282.                 }
  283.                
  284.                 function CreateAllToFive(param1,param2,param3,optionx,y,unselectedcol,selectedcol,spritex,spritey)
  285.                 {
  286.                     t[0][5] = ::CreateTextdraw(":: " + param3,optionx,y+75,unselectedcol);
  287.                     tt[0][5] = ::CreateTextdraw(":: " + param3,optionx,y+75,selectedcol);
  288.                     t[0][4] = ::CreateTextdraw(":: " + param2,optionx,y+60,unselectedcol);
  289.                     tt[0][4] = ::CreateTextdraw(":: " + param2,optionx,y+60,selectedcol);
  290.                     t[0][3] = ::CreateTextdraw(":: " + param1,optionx,y+45,unselectedcol);
  291.                     tt[0][3] = ::CreateTextdraw(":: " + param1,optionx,y+45,selectedcol);
  292.                                        
  293.                     s[0][6] = ::CreateSprite("menubackground.png",spritex,spritey+108,0,0,0,200);
  294.                     s[0][5] = ::CreateSprite("menubackground.png",spritex,spritey+90,0,0,0,200);
  295.                     s[0][4] = ::CreateSprite("menubackground.png",spritex,spritey+72,0,0,0,200);
  296.                 }
  297.                
  298.                 function AddSubMenu(option, ...)
  299.                 {
  300.                     if ( vargv.len() > 1 || vargv.len() < 9)
  301.                     {  
  302.                         numberofparamssub[option] = vargv.len();
  303.                                    
  304.                         for(local so = 1; so <= vargv.len(); so++)
  305.                         {
  306.                             if(so)
  307.                             {
  308.                                 suboption[option][so] = vargv[so-1];
  309.                             }
  310.                         }
  311.                         for(local so = vargv.len(); so < 9; so++)
  312.                         {
  313.                             if(so)
  314.                             {
  315.                                 if(so != vargv.len())
  316.                                     suboption[option][so] = 0;
  317.                             }
  318.                         }
  319.                                        
  320.                         StuffForSubMenu(option,numberofparamssub[option],suboption[option][1],suboption[option][2],suboption[option][3],suboption[option][4],suboption[option][5],suboption[option][6],suboption[option][7],suboption[option][8]);
  321.                     } else ::print("Error in menu System - You can add min 2 suboptions, and max 8 suboptions !");
  322.                 }
  323.                
  324.                 function StuffForSubMenu(option,params,name1,name2,name3,name4,name5,name6,name7,name8)
  325.                 {
  326.                         local title = optionname[option];
  327.                        
  328.                     optionhassubmenu[option] = 1;
  329.  
  330.                     t[option][0] = ::CreateTextdraw(title,x,y,titlecol);
  331.                     tt[option][1] = ::CreateTextdraw(":: " + name1,optionx,y+15,selectedcol);
  332.                     t[option][2] = ::CreateTextdraw(":: " + name2,optionx,y+30,unselectedcol); 
  333.                     t[option][1] = ::CreateTextdraw(":: " + name1,optionx,y+15,unselectedcol);
  334.                     tt[option][2] = ::CreateTextdraw(":: " + name2,optionx,y+30,selectedcol);
  335.  
  336.                     s[option][0] = ::CreateSprite("menubackground.png",spritex,spritey,0,0,0,200);
  337.                     s[option][1] = ::CreateSprite("menubackground.png",spritex,spritey+18,0,0,0,200);
  338.                     s[option][2] = ::CreateSprite("menubackground.png",spritex,spritey+36,0,0,0,200);
  339.                     s[option][3] = ::CreateSprite("menubackground.png",spritex,spritey+54,0,0,0,200);
  340.  
  341.                     if(name3 != null)
  342.                     {
  343.                         t[option][3] = ::CreateTextdraw(":: " + name3,optionx,y+45,unselectedcol);
  344.                         tt[option][3] = ::CreateTextdraw(":: " + name3,optionx,y+45,selectedcol);                              
  345.                         s[option][4] = ::CreateSprite("menubackground.png",spritex,spritey+72,0,0,0,200);
  346.                     }
  347.                     if(name4 != null)
  348.                     {
  349.                         t[option][4] = ::CreateTextdraw(":: " + name4,optionx,y+60,unselectedcol);
  350.                         tt[option][4] = ::CreateTextdraw(":: " + name4,optionx,y+60,selectedcol);
  351.                         s[option][5] = ::CreateSprite("menubackground.png",spritex,spritey+90,0,0,0,200);  
  352.                     }
  353.                     if(name5 != null)
  354.                     {
  355.                         t[option][5] = ::CreateTextdraw(":: " + name5,optionx,y+75,unselectedcol);
  356.                         tt[option][5] = ::CreateTextdraw(":: " + name5,optionx,y+75,selectedcol);
  357.                         s[option][6] = ::CreateSprite("menubackground.png",spritex,spritey+108,0,0,0,200);
  358.                     }
  359.                     if(name6 != null)
  360.                     {
  361.                         t[option][6] = ::CreateTextdraw(":: " + name6,optionx,y+90,unselectedcol);
  362.                         tt[option][6] = ::CreateTextdraw(":: " + name6,optionx,y+90,selectedcol);
  363.                         s[option][7] = ::CreateSprite("menubackground.png",spritex,spritey+126,0,0,0,200);
  364.                     }
  365.                     if(name7 != null)
  366.                     {
  367.                         t[option][7] = ::CreateTextdraw(":: " + name7,optionx,y+105,unselectedcol);
  368.                         tt[option][7] = ::CreateTextdraw(":: " + name7,optionx,y+105,selectedcol);
  369.                     }
  370.                     if(name8 != null)
  371.                     {
  372.                         t[option][8] = ::CreateTextdraw(":: " + name8,optionx,y+120,unselectedcol);
  373.                         tt[option][8] = ::CreateTextdraw(":: " + name8,optionx,y+120,selectedcol);
  374.                         s[option][8] = ::CreateSprite("menubackground.png",spritex,spritey+144,0,0,0,200);
  375.                     }
  376.                 }
  377.                
  378.                 function ShowSubMenuForPlayer(player,option)
  379.                 {
  380.                     local params = numberofparamssub[option];
  381.                     t[option][0].ShowForPlayer(player);
  382.                     tt[option][1].ShowForPlayer(player);
  383.                     t[option][2].ShowForPlayer(player);
  384.  
  385.                     for(local soo = 0; soo < 4; soo++)
  386.                         if(s[option][soo]) s[option][soo].ShowForPlayer(player);
  387.                        
  388.                     switch(params)
  389.                     {
  390.                         case 8:
  391.                             for(local soo = 2; soo < 9; soo++)
  392.                                 if(t[option][soo]) t[option][soo].ShowForPlayer(player);
  393.                             for(local soo = 4; soo < 9; soo++)
  394.                                 if(s[option][soo]) s[option][soo].ShowForPlayer(player);
  395.                         case 7:
  396.                             for(local soo = 2; soo < 8; soo++)
  397.                                 if(t[option][soo]) t[option][soo].ShowForPlayer(player);
  398.                             for(local soo = 4; soo < 8; soo++)
  399.                                 if(s[option][soo]) s[option][soo].ShowForPlayer(player);
  400.                         case 6:
  401.                             for(local soo = 2; soo < 7; soo++)
  402.                                 if(t[option][soo]) t[option][soo].ShowForPlayer(player);
  403.                             for(local soo = 4; soo < 7; soo++)
  404.                                 if(s[option][soo]) s[option][soo].ShowForPlayer(player);
  405.                         case 5:
  406.                             for(local soo = 2; soo < 6; soo++)
  407.                                 if(t[option][soo]) t[option][soo].ShowForPlayer(player);
  408.                             for(local soo = 4; soo < 6; soo++)
  409.                                 if(s[option][soo]) s[option][soo].ShowForPlayer(player);
  410.                         case 4:
  411.                             for(local soo = 2; soo < 5; soo++)
  412.                                 if(t[option][soo]) t[option][soo].ShowForPlayer(player);
  413.                             for(local soo = 4; soo < 5; soo++)
  414.                                 if(s[option][soo]) s[option][soo].ShowForPlayer(player);
  415.                             break;
  416.                         case 3:
  417.                             t[option][3].ShowForPlayer(player);
  418.                             s[option][4].ShowForPlayer(player);
  419.                             break;
  420.                         default: break;
  421.                     }
  422.                     ::submenuoptionchoosen[player.ID] = 1;
  423.                 }
  424.                
  425.                 function HideSubMenuForPlayer(player,option)
  426.                 {
  427.                     local params = numberofparamssub[option];
  428.                    
  429.                     t[option][0].HideFromPlayer(player);
  430.                     t[option][1].HideFromPlayer(player);
  431.                     tt[option][1].HideFromPlayer(player);
  432.                     t[option][2].HideFromPlayer(player);
  433.                     tt[option][2].HideFromPlayer(player);
  434.  
  435.                     for(local soo = 0; soo < 4; soo++)
  436.                         if(s[option][soo]) s[option][soo].HideFromPlayer(player);
  437.                        
  438.                     switch(params)
  439.                     {
  440.                         case 8:
  441.                             for(local soo = 2; soo < 9; soo++)
  442.                                 if(t[option][soo]) t[option][soo].HideFromPlayer(player);
  443.                             for(local tee = 2; tee < 9; tee++)
  444.                                 if(tt[option][tee]) tt[option][tee].HideFromPlayer(player);
  445.                             for(local soo = 4; soo < 9; soo++)
  446.                                 if(s[option][soo]) s[option][soo].HideFromPlayer(player);
  447.                         case 7:
  448.                             for(local soo = 2; soo < 8; soo++)
  449.                                 if(t[option][soo]) t[option][soo].HideFromPlayer(player);
  450.                             for(local tee = 2; tee < 8; tee++)
  451.                                 if(tt[option][tee]) tt[option][tee].HideFromPlayer(player);
  452.                             for(local soo = 4; soo < 8; soo++)
  453.                                 if(s[option][soo]) s[option][soo].HideFromPlayer(player);
  454.                         case 6:
  455.                             for(local soo = 2; soo < 7; soo++)
  456.                                 if(t[option][soo]) t[option][soo].HideFromPlayer(player);
  457.                             for(local tee = 2; tee < 7; tee++)
  458.                                 if(tt[option][tee]) tt[option][tee].HideFromPlayer(player);
  459.                             for(local soo = 4; soo < 7; soo++)
  460.                                 if(s[option][soo]) s[option][soo].HideFromPlayer(player);
  461.                         case 5:
  462.                             for(local soo = 2; soo < 6; soo++)
  463.                                 if(t[option][soo]) t[option][soo].HideFromPlayer(player);
  464.                             for(local tee = 2; tee < 6; tee++)
  465.                                 if(tt[option][tee]) tt[option][tee].HideFromPlayer(player);
  466.                             for(local soo = 4; soo < 6; soo++)
  467.                                 if(s[option][soo]) s[option][soo].HideFromPlayer(player);
  468.                         case 4:
  469.                             for(local soo = 2; soo < 5; soo++)
  470.                                 if(t[option][soo]) t[option][soo].HideFromPlayer(player);
  471.                             for(local tee = 2; tee < 5; tee++)
  472.                                 if(tt[option][tee]) tt[option][tee].HideFromPlayer(player);
  473.                             for(local soo = 4; soo < 5; soo++)
  474.                                 if(s[option][soo]) s[option][soo].HideFromPlayer(player);
  475.                             break;
  476.                         case 3:
  477.                             t[option][3].HideFromPlayer(player);
  478.                             tt[option][3].HideFromPlayer(player);
  479.                             s[option][4].HideFromPlayer(player);
  480.                             break;
  481.                         default: break;
  482.                     }
  483.                     ::submenuoptionchoosen[player.ID] = 0;
  484.                 }
  485.                            
  486.                 function ShowForPlayer(player)
  487.                 {  
  488.                         t[0][0].ShowForPlayer(player);
  489.                         tt[0][1].ShowForPlayer(player);
  490.                         t[0][2].ShowForPlayer(player);
  491.                        
  492.                         s[0][0].ShowForPlayer(player);
  493.                         s[0][1].ShowForPlayer(player);
  494.                         s[0][2].ShowForPlayer(player);
  495.                         s[0][3].ShowForPlayer(player);
  496.                     switch(numberofparams)
  497.                     {
  498.                         case 8:
  499.                             for(local sp = 4; sp < 9; sp++)
  500.                                 if(s[0][sp]) s[0][sp].ShowForPlayer(player);
  501.                             for(local te = 2; te < 9; te++)
  502.                                 if(t[0][te]) t[0][te].ShowForPlayer(player);
  503.                             break;
  504.                         case 7:
  505.                             for(local sp = 4; sp < 8; sp++)
  506.                                 if(s[0][sp]) s[0][sp].ShowForPlayer(player);
  507.                             for(local te = 2; te < 8; te++)
  508.                                 if(t[0][te]) t[0][te].ShowForPlayer(player);
  509.                             break;
  510.                         case 6:
  511.                             for(local sp = 4; sp < 7; sp++)
  512.                                 if(s[0][sp]) s[0][sp].ShowForPlayer(player);
  513.                             for(local te = 2; te < 7; te++)
  514.                                 if(t[0][te]) t[0][te].ShowForPlayer(player);
  515.                             break;
  516.                         case 5:
  517.                             for(local sp = 4; sp < 6; sp++)
  518.                                 if(s[0][sp]) s[0][sp].ShowForPlayer(player);
  519.                             for(local te = 2; te < 6; te++)
  520.                                 if(t[0][te]) t[0][te].ShowForPlayer(player);
  521.                             break;
  522.                         case 4:
  523.                             for(local sp = 4; sp < 5; sp++)
  524.                                 if(s[0][sp]) s[0][sp].ShowForPlayer(player);
  525.                             for(local te = 2; te < 5; te++)
  526.                                 if(t[0][te]) t[0][te].ShowForPlayer(player);
  527.                             break;
  528.                         case 3:
  529.                                 t[0][3].ShowForPlayer(player);
  530.                                 s[0][4].ShowForPlayer(player);
  531.                             break;
  532.                     default: break;
  533.                     } // end of switch
  534.                        
  535.                     player.IsFrozen = true;
  536.                     menuoptionchoosen[player.ID] = 1;
  537.                     menuidonscreen[player.ID] = ID;
  538.                 }
  539.                
  540.                 function HideFromPlayer(player, type)
  541.                 {
  542.                         t[0][0].HideFromPlayer(player);
  543.                         t[0][1].HideFromPlayer(player);
  544.                         tt[0][1].HideFromPlayer(player);
  545.                         t[0][2].HideFromPlayer(player);
  546.                         tt[0][2].HideFromPlayer(player);
  547.                         s[0][0].HideFromPlayer(player);
  548.                         s[0][1].HideFromPlayer(player);
  549.                         s[0][2].HideFromPlayer(player);
  550.                         s[0][3].HideFromPlayer(player);
  551.                        
  552.                         switch(numberofparams)
  553.                         {
  554.                             case 8:
  555.                                 for(local sp = 4; sp < 9; sp++)
  556.                                     if(s[0][sp]) s[0][sp].HideFromPlayer(player);
  557.                                 for(local te = 2; te < 9; te++)
  558.                                     if(t[0][te]) t[0][te].HideFromPlayer(player);
  559.                                 for(local tee = 2; tee < 9; tee++)
  560.                                     if(tt[0][tee]) tt[0][tee].HideFromPlayer(player);
  561.                                 break;
  562.                             case 7:
  563.                                 for(local sp = 4; sp < 8; sp++)
  564.                                     if(s[0][sp]) s[0][sp].HideFromPlayer(player);
  565.                                 for(local te = 2; te < 8; te++)
  566.                                     if(t[0][te]) t[0][te].HideFromPlayer(player);
  567.                                 for(local tee = 2; tee < 8; tee++)
  568.                                     if(tt[0][tee]) tt[0][tee].HideFromPlayer(player);
  569.                                 break;
  570.                             case 6:
  571.                                 for(local sp = 4; sp < 8; sp++)
  572.                                     if(s[0][sp]) s[0][sp].HideFromPlayer(player);
  573.                                 for(local te = 2; te < 7; te++)
  574.                                     if(t[0][te]) t[0][te].HideFromPlayer(player);
  575.                                 for(local tee = 2; tee < 7; tee++)
  576.                                     if(tt[0][tee]) tt[0][tee].HideFromPlayer(player);
  577.                                 break;
  578.                             case 5:
  579.                                 for(local sp = 4; sp < 7; sp++)
  580.                                     if(s[0][sp]) s[0][sp].HideFromPlayer(player);
  581.                                 for(local te = 2; te < 6; te++)
  582.                                     if(t[0][te]) t[0][te].HideFromPlayer(player);
  583.                                 for(local tee = 2; tee < 6; tee++)
  584.                                     if(tt[0][tee]) tt[0][tee].HideFromPlayer(player);
  585.                                 break;
  586.                             case 4:
  587.                                 for(local sp = 4; sp < 6; sp++)
  588.                                     if(s[0][sp]) s[0][sp].HideFromPlayer(player);
  589.                                 for(local te = 2; te < 5; te++)
  590.                                     if(t[0][te]) t[0][te].HideFromPlayer(player);
  591.                                 for(local tee = 2; tee < 5; tee++)
  592.                                     if(tt[0][tee]) tt[0][tee].HideFromPlayer(player);
  593.                                 break;
  594.                             case 3:
  595.                                     t[0][3].HideFromPlayer(player);
  596.                                     tt[0][3].HideFromPlayer(player);
  597.                                     s[0][4].HideFromPlayer(player);
  598.                                 break;
  599.                             default: break;
  600.                         } // end of switch
  601.                        
  602.                         switch(type)
  603.                         {
  604.                             case 0:
  605.                                 player.IsFrozen = false;
  606.                                 menuoptionchoosen[player.ID] = 0;
  607.                                 menuidonscreen[player.ID] = -1;
  608.                                 break;
  609.                             case 1:
  610.                                 break;
  611.                             default: break;
  612.                         } // end of switch
  613.                 }
  614.  
  615.             thetitle = "Menu System v1.0 (by Seby)";
  616. }
  617. function CreateMenu(thetitle, ...)
  618. {
  619.     if ( vargv.len() > 1 || vargv.len() > 8)
  620.     {
  621.         switch(vargv.len())
  622.         {
  623.             case 2:
  624.                 menu[menucount] = ClassForMenu(menucount,thetitle,vargv[0],vargv[1]);
  625.                 menucount++;
  626.                 return menu[menucount];
  627.             case 3:
  628.                 menu[menucount] = ClassForMenu(menucount,thetitle,vargv[0],vargv[1],vargv[2]);
  629.                 menucount++;
  630.                 return menu[menucount];
  631.             case 4:
  632.                 menu[menucount] = ClassForMenu(menucount,thetitle,vargv[0],vargv[1],vargv[2],vargv[3]);
  633.                 menucount++;
  634.                 return menu[menucount];
  635.             case 5:
  636.                 menu[menucount] = ClassForMenu(menucount,thetitle,vargv[0],vargv[1],vargv[2],vargv[3],vargv[4]);
  637.                 menucount++;
  638.                 return menu[menucount];
  639.             case 6:
  640.                 menu[menucount] = ClassForMenu(menucount,thetitle,vargv[0],vargv[1],vargv[2],vargv[3],vargv[4],vargv[5]);
  641.                 menucount++;
  642.                 return menu[menucount];
  643.             case 7:
  644.                 menu[menucount] = ClassForMenu(menucount,thetitle,vargv[0],vargv[1],vargv[2],vargv[3],vargv[4],vargv[5],vargv[6]);
  645.                 menucount++;
  646.                 return menu[menucount];
  647.             case 8:
  648.                 menu[menucount] = ClassForMenu(menucount,thetitle,vargv[0],vargv[1],vargv[2],vargv[3],vargv[4],vargv[5],vargv[6],vargv[7]);
  649.                 menucount++;
  650.                 return menu[menucount];
  651.             default: break;
  652.         }
  653.     } else ::print("Error in menu System - You can add min 2 options, and max 8 options !");
  654. }
  655.  
  656. function KeyBindMenu(player, bind)
  657. {
  658.     local   menuid = menuidonscreen[player.ID],
  659.             themenu = menu[menuid],
  660.             newoption = menuoptionchoosen[player.ID] + 1,
  661.             newoptionup = menuoptionchoosen[player.ID] - 1,
  662.             subnewoption = submenuoptionchoosen[player.ID] + 1,
  663.             subnewoptionup = submenuoptionchoosen[player.ID] - 1,
  664.             option = menuoptionchoosen[player.ID],
  665.             suboptionchoosen = submenuoptionchoosen[player.ID],
  666.             maxparams = themenu.numberofparams,
  667.             submaxparams = themenu.numberofparamssub[menuoptionchoosen[player.ID]];
  668.     switch(bind)
  669.     {
  670.         case UP_ARROW:
  671.                 if(submenuonscreen[player.ID] == 0)
  672.                 {
  673.                     if(option != 1)
  674.                     {      
  675.                         themenu.tt[0][option].HideFromPlayer(player);
  676.                         themenu.t[0][option].ShowForPlayer(player);
  677.                         themenu.t[0][newoptionup].HideFromPlayer(player);
  678.                         themenu.tt[0][newoptionup].ShowForPlayer(player);
  679.                         menuoptionchoosen[player.ID]--;
  680.                     }
  681.                     else
  682.                     {
  683.                         themenu.tt[0][option].HideFromPlayer(player);
  684.                         themenu.t[0][option].ShowForPlayer(player);
  685.                         themenu.t[0][maxparams].HideFromPlayer(player);
  686.                         themenu.tt[0][maxparams].ShowForPlayer(player);
  687.                         menuoptionchoosen[player.ID] = maxparams;
  688.                     }
  689.                 }
  690.                 else
  691.                 {
  692.                     if(suboptionchoosen != 1)
  693.                     {
  694.                         themenu.tt[option][suboptionchoosen].HideFromPlayer(player);
  695.                         themenu.t[option][suboptionchoosen].ShowForPlayer(player);
  696.                         themenu.t[option][subnewoptionup].HideFromPlayer(player);
  697.                         themenu.tt[option][subnewoptionup].ShowForPlayer(player);
  698.                         submenuoptionchoosen[player.ID]--;
  699.                     }
  700.                     else
  701.                     {
  702.                         themenu.tt[option][suboptionchoosen].HideFromPlayer(player);
  703.                         themenu.t[option][suboptionchoosen].ShowForPlayer(player);
  704.                         themenu.t[option][submaxparams].HideFromPlayer(player);
  705.                         themenu.tt[option][submaxparams].ShowForPlayer(player);
  706.                         submenuoptionchoosen[player.ID] = submaxparams;
  707.                     }
  708.                 }
  709.             break;
  710.         case DOWN_ARROW:
  711.                 if(submenuonscreen[player.ID] == 0)
  712.                 {
  713.                     if(option != maxparams)
  714.                     {
  715.                         themenu.tt[0][option].HideFromPlayer(player);
  716.                         themenu.t[0][option].ShowForPlayer(player);
  717.                         themenu.t[0][newoption].HideFromPlayer(player);
  718.                         themenu.tt[0][newoption].ShowForPlayer(player);
  719.                         menuoptionchoosen[player.ID]++;
  720.                     }
  721.                     else
  722.                     {
  723.                         themenu.tt[0][option].HideFromPlayer(player);
  724.                         themenu.t[0][option].ShowForPlayer(player);
  725.                         themenu.t[0][1].HideFromPlayer(player);
  726.                         themenu.tt[0][1].ShowForPlayer(player);
  727.                         menuoptionchoosen[player.ID] = 1;
  728.                     }
  729.                 }
  730.                 else
  731.                 {
  732.                     if(suboptionchoosen != submaxparams)
  733.                     {
  734.                         themenu.tt[option][suboptionchoosen].HideFromPlayer(player);
  735.                         themenu.t[option][suboptionchoosen].ShowForPlayer(player);
  736.                         themenu.t[option][subnewoption].HideFromPlayer(player);
  737.                         themenu.tt[option][subnewoption].ShowForPlayer(player);
  738.                         submenuoptionchoosen[player.ID]++;
  739.                     }
  740.                     else
  741.                     {
  742.                         themenu.tt[option][suboptionchoosen].HideFromPlayer(player);
  743.                         themenu.t[option][suboptionchoosen].ShowForPlayer(player);
  744.                         themenu.t[option][1].HideFromPlayer(player);
  745.                         themenu.tt[option][1].ShowForPlayer(player);
  746.                         submenuoptionchoosen[player.ID] = 1;
  747.                     }
  748.                 }
  749.             break;
  750.         case SPACEBAR:
  751.                 if(themenu.optionhassubmenu[option] == 0) onPlayerMenu(player, menuid, option);
  752.                 else
  753.                 {
  754.                     if(submenuonscreen[player.ID] == 0)
  755.                     {
  756.                         themenu.HideFromPlayer(player,1);
  757.                         themenu.ShowSubMenuForPlayer(player,option);
  758.                         submenuonscreen[player.ID] = 1;
  759.                     }
  760.                     onPlayerSubMenu(player, option, suboptionchoosen);
  761.                 }
  762.             break;
  763.         case BACKSPACE:
  764.                 if(submenuonscreen[player.ID] == 0)
  765.                 {
  766.                     themenu.HideFromPlayer(player,0);
  767.                     menuidonscreen[player.ID] = -1;
  768.                     menuoptionchoosen[player.ID] = 0;
  769.                 }
  770.                 else
  771.                 {
  772.                     submenuoptionchoosen[player.ID] = 0;
  773.                     submenuonscreen[player.ID] = 0;
  774.                     menuoptionchoosen[player.ID] = 1;
  775.                    
  776.                     themenu.HideSubMenuForPlayer(player,option);
  777.                     themenu.ShowForPlayer(player);
  778.                 }
  779.             break;
  780.         default: break;
  781.     }
  782. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement