Advertisement
sseebbyy

CMSS v2

Feb 25th, 2015
251
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 19.28 KB | None | 0 0
  1. /*
  2.  
  3. Custom Menu System by Seby v2.0 for Vice City Multiplayer.
  4. VC:MP Website:  http://www.vc-mp.org
  5. VC:MP Forum:    http://forum.vc-mp.org
  6. ===================================================================================================================================================================
  7.  
  8. CREDITS:
  9.  
  10. Scripter: Seby (aka sseebbyy)
  11. Special credits goes to shadow.heekz, Knucis and Gudio because I learnt new squirrel stuff from them.
  12.  
  13. DO NOT REMOVE THEM, OR WE WILL NEVER OFFER YOU HELP OR SCRIPTS AGAIN !
  14.  
  15. ===================================================================================================================================================================
  16.  
  17. Description:
  18.     Custom Menu System by Seby ( aka CMSS ) is a system that gives scripters the ability to create their own INTERACTIVE MENU,
  19. up to 10 options, but every option can also have a submenu (with another 10 options) !!
  20.  
  21.     Version 2.0 works a lot different than v1.0:
  22.         -Now there are 9 sprites, created when the script is loaded. We only show them when needed.
  23.         -The textdraws are all created right in the moment of accessing the menu, but don't worry, it will not reach the
  24. VC:MP limit (256) that fast, because it works in this way: when a player X wants to see a menu that is also shown for
  25. player Y, the textdraws will be just shown to X, not re-created ! So the textdraws will be removed only when there will be
  26. no viewer.
  27.         -No more double textdraws. ( 2 textdraws were used for one option, in v1.0, one grey, one white )
  28.         -To avoid the bugs, a player that is watching a menu and leave the server or just get killed without closing it,
  29. everything related to menus will be instantly canceled for him. ( menuRageQuit( player ) )
  30.         -You are now able to set the title of a submenu. (not like before, where the title were auto-set)
  31.         -No need to manually hide the main menu, when you want to show the submenu ! Just use "menuInstance.ShowSubmenu( player, 5 )"
  32. and it will do everything for you. Same goes for HideSubmenu function.
  33.  
  34.     And maybe more, but I don't remember right now... but take a look at the script, and you will understand. :)
  35.     I made it as understable as I could.
  36.    
  37.     The single thing that stays the same as in v1.0, is the way we save menus' instance: " menu[ ID ] "
  38.     So, when you want to add a submenu for that menu, you will do like this: " menu[3].AddSubmenu( 3, "/Option 3 - blabla", "option 1", "option 2", ... ) "
  39.    
  40.     Keys used to interact with the menu, used in my example, are: UP_ARROW, DOWN_ARROW, SPACEBAR (select), BACKSPACE (back)
  41.    
  42.     I hope I didn't miss anything important.
  43.    
  44. ===================================================================================================================================================================
  45.     Here is the list with the new functions'n'events:  
  46.  
  47.     Menu functions: CreateMenu( title, option1, option2, ... ),
  48.                     menuRageQuit( player ),
  49.                     menuRageQuitAll( ),
  50.                    
  51.                     menuInstance.ShowMenu( player ),
  52.                     menuInstance.HideMenu( player ),
  53.                    
  54.                     menuInstance.AddSubmenu( optionID of mainmenu, title, option1, option2, ... ),
  55.                    
  56.                     menuInstance.ShowSubmenu( player, option ),
  57.                     menuInstance.HideSubmenu( player, option );
  58.  
  59.     Menu events:    onPlayerEnterMenu( player, menuID ),
  60.                     onPlayerExitMenu( player, menuID ),
  61.                     onPlayerSelectInMenu( player, menuID, option );
  62.                    
  63.     Submenu events: onPlayerEnterSubmenu( player, menuID, submenuID ),
  64.                     onPlayerExitSubmenu( player, menuID, submenuID ),
  65.                     onPlayerSelectInSubmenu( player, menuID, submenuID, option );
  66.                    
  67. ===================================================================================================================================================================
  68.  
  69. */
  70.  
  71. // Bind Keys ==========================================================
  72. KEY_MENU_UP <- BindKey(true, 0x26, 0, 0);       // UP_ARROW
  73. KEY_MENU_DOWN <- BindKey(true, 0x28, 0, 0);     // DOWN_ARROW
  74. KEY_MENU_SELECT <- BindKey(true, 0x20, 0, 0);   // SPACEBAR
  75. KEY_MENU_BACK <- BindKey(true, 0x08, 0, 0);     // BACKSPAGE
  76. // ====================================================================
  77.  
  78. // Changeable settings
  79. menuX <- 80;                                    // menu pos x
  80. menuY <- 310;                                   // menu pos y
  81. menuSpritePosX <- menuX - 10;                   // sprite pos x
  82. menuSpritePosY <- menuY - 10;                   // sprite pos y
  83. menuSpriteAlpha <- 200;                         // sprites' alpha
  84. menuOptionPrefix <- "::";                       // options' prefix
  85. menuOptionPosX <- menuX + 50;                   // options' pos x
  86. menuTitleColor <- 0xFF00FFFF;                   // menus' title color
  87. menuOptionColorSelected <- 0xFFFFFFFF;          // selected options' color
  88. menuOptionColorUnselected <- 0xFFAAAAAA;        // unselected options' color
  89.  
  90.  
  91. // Don't touch this !
  92. menu <- array( 100, null );
  93. menuCount <- 0;
  94. menuSprite <- array( 9, null );
  95.  
  96. menuOptionPosY <- array( 11, null );
  97. menuOptionPosY[0] = menuY;
  98.  
  99. menuOnScreen <- array( GetMaxPlayers(), null );
  100. menuOptionChoosen <- array( GetMaxPlayers(), null );
  101.  
  102. submenuOnScreen <- array( GetMaxPlayers(), null );
  103. submenuOptionChoosen <- array( GetMaxPlayers(), null );
  104.  
  105. for(local i = 0; i < menuSprite.len(); i++)
  106.     menuSprite[i] = CreateSprite( "menuBackType" + i + ".png", menuSpritePosX, menuSpritePosY, 0, 0, 0,  menuSpriteAlpha);
  107.  
  108. class menuTextdrawClass
  109. {
  110.     instance = null;
  111.     text = null;
  112.     number = null;
  113.  
  114.    
  115.         constructor( paramText, paramNumber )
  116.         {
  117.             text = paramText;
  118.             number = paramNumber;
  119.         }
  120.        
  121.         function Show( player, way )
  122.         {
  123.             switch( way )
  124.             {
  125.                 case 0:
  126.                     if( number == 0 )
  127.                         // number 0 is the title
  128.                         instance = ::CreateTextdraw( text, menuX, menuY, menuTitleColor );
  129.                     else
  130.                     {
  131.                         menuOptionPosY[number] = menuOptionPosY[number-1] + 15;
  132.                         instance = ::CreateTextdraw( menuOptionPrefix + " " + text, menuOptionPosX, menuOptionPosY[number], menuOptionColorUnselected );
  133.                     }
  134.                     break;
  135.                 default: break;
  136.             }
  137.                
  138.             instance.ShowForPlayer( player );
  139.         }
  140.        
  141.         function Hide( player, way )
  142.         {
  143.             instance.HideFromPlayer( player );
  144.            
  145.             switch( way )
  146.             {
  147.                 case -1:
  148.                 case 0:
  149.                     instance.Delete( );
  150.                     break;
  151.                 default: break;
  152.             }
  153.         }
  154.        
  155.         function BeSelected( player )
  156.         {
  157.             instance.SetColourForPlayer( player, menuOptionColorSelected );
  158.         }
  159.        
  160.         function BeUnselected( player )
  161.         {
  162.             instance.SetColourForPlayer( player, menuOptionColorUnselected );
  163.         }
  164. }
  165.  
  166. class ExCreateMenu
  167. {
  168.     ID = null;
  169.     title = null;
  170.     menuOption = null;
  171.     params = null;
  172.    
  173.     subtitle = null;
  174.     subparams = null;
  175.    
  176.     viewers = null;
  177.     submenuViewers = null;
  178.        
  179.         constructor( menuID, ... )
  180.         {  
  181.             if ( vargv.len() < 3 || vargv.len() > 11 ) print("[CMSS Error] CreateMenu failed - the number of options written is under 2 or bigger than 10 !");
  182.             else
  183.             {
  184.                 title = vargv[0].tostring();
  185.                
  186.                 viewers = 0;
  187.                 submenuViewers = array( 11, null );
  188.                
  189.                 subparams = array( 11, null );
  190.                 menuOption = array( 11, null );
  191.                 for( local i = 0; i < menuOption.len(); i++)
  192.                 {
  193.                     menuOption[i] = array( 11, null );
  194.                 }
  195.                    
  196.                 params = vargv.len();
  197.                        
  198.                     for(local i = 0; i < vargv.len(); i++)
  199.                         menuOption[0][i] = menuTextdrawClass( vargv[i], i );
  200.                        
  201.                 ID = menuID;
  202.             }
  203.         }
  204.        
  205.         function ShowMenu( player )
  206.         {
  207.             if( !player ) return;
  208.             else
  209.             {
  210.                 menuSprite[ params - 3 ].ShowForPlayer( player );
  211.            
  212.                 for(local i = 0; i < params; i++)
  213.                     if( menuOption[0][i] ) menuOption[0][i].Show( player, viewers );
  214.                
  215.                 menuOption[0][1].BeSelected( player );
  216.                 menuOptionChoosen[ player.ID ] = 1;
  217.                
  218.                 if( menuOnScreen[ player.ID ] == -1 )
  219.                 {  
  220.                     menuOnScreen[ player.ID ] = ID;
  221.                     player.IsFrozen = true;
  222.                        
  223.                     viewers++;
  224.                    
  225.                     onPlayerEnterMenu( player, ID );
  226.                 }
  227.             }
  228.         }
  229.        
  230.         function HideMenu( player )
  231.         {
  232.             if( !player ) return;
  233.             else
  234.             {
  235.                 menuSprite[ params - 3 ].HideFromPlayer( player );
  236.  
  237.                 for(local i = 0; i < params; i++)
  238.                     if( menuOption[0][i] )
  239.                         if( submenuOnScreen[ player.ID ] == 1 ) menuOption[0][i].Hide( player, viewers );
  240.                         else menuOption[0][i].Hide( player, viewers - 1 );
  241.                
  242.                 if( menuOnScreen[ player.ID ] != -1 && submenuOnScreen[ player.ID ] == 0 )
  243.                 {
  244.                     menuOnScreen[ player.ID ] = -1;
  245.                     menuOptionChoosen[ player.ID ] = 0;
  246.                     player.IsFrozen = false;
  247.                        
  248.                     viewers--;
  249.                    
  250.                     onPlayerExitMenu( player, ID );
  251.                 }
  252.             }
  253.         }
  254.        
  255.         function AddSubmenu( option, ... )
  256.         {
  257.             if( option < 1 || option > 10 ) print( "[CMSS Error] AddSubmenu failed - the specified option doesn't exist. It needs to be from 1 to 10." );
  258.             else if ( vargv.len() < 3 || vargv.len() > 11 ) print( "[CMSS Error] AddSubmenu failed - the number of suboptions written is under 2 or bigger than 10 !" );
  259.             else
  260.             {
  261.                 subtitle = vargv[0].tostring();
  262.                 subparams[ option ] = vargv.len();
  263.                        
  264.                     for(local i = 0; i < vargv.len(); i++)
  265.                         menuOption[ option ][ i ] = menuTextdrawClass( vargv[i], i );
  266.                        
  267.                 submenuViewers[ option ] = 0;
  268.             }
  269.         }
  270.        
  271.         function ShowSubmenu( player, option )
  272.         {
  273.             if( !player ) return;
  274.             else
  275.             {
  276.                 for( local i = 0; i < subparams[ option ]; i++ )
  277.                     if( menuOption[ option ][ i ] ) menuOption[ option ][ i ].Show( player, submenuViewers[ option ] );
  278.                
  279.                 menuOption[ option ][ 1 ].BeSelected( player );
  280.                 submenuOnScreen[ player.ID ] = 1;
  281.                 submenuOptionChoosen[ player.ID ] = 1;
  282.                
  283.                 submenuViewers[ option ]++;
  284.                
  285.                 menu[ ID ].HideMenu( player );
  286.                
  287.                 menuSprite[ subparams[ option ] - 3 ].ShowForPlayer( player );
  288.                
  289.                 onPlayerEnterSubmenu( player, ID, option );
  290.             }
  291.         }
  292.        
  293.         function HideSubmenu( player, option )
  294.         {
  295.             if( !player ) return;
  296.             else
  297.             {
  298.                 menuSprite[ subparams[ option ] - 3 ].HideFromPlayer( player );
  299.            
  300.                 menu[ ID ].ShowMenu( player );
  301.                
  302.                 for(local i = 0; i < subparams[ option ]; i++ )
  303.                     if( menuOption[ option ][ i ] ) menuOption[ option ][ i ].Hide( player, submenuViewers[ option ] - 1 );
  304.                    
  305.                 submenuOnScreen[ player.ID ] = 0;
  306.                 submenuOptionChoosen[ player.ID ] = 0;
  307.                
  308.                 submenuViewers[ option ]--;
  309.                
  310.                 onPlayerExitSubmenu( player, ID, option );
  311.             }
  312.         }
  313. }
  314.  
  315. function CreateMenu( ... )
  316. {
  317.     if ( vargv.len() < 3 || vargv.len() > 11 ) print("[CMSS Error] CreateMenu failed - the number of options written is under 2 or bigger than 10 !");
  318.     else
  319.     {
  320.         switch( vargv.len() )
  321.         {
  322.             case 3:
  323.                 menu[menuCount] = ExCreateMenu( menuCount, vargv[0], vargv[1], vargv[2] );
  324.                 menuCount++;
  325.                 return menu[menuCount];
  326.             case 4:
  327.                 menu[menuCount] = ExCreateMenu( menuCount, vargv[0], vargv[1], vargv[2], vargv[3] );
  328.                 menuCount++;
  329.                 return menu[menuCount];
  330.             case 5:
  331.                 menu[menuCount] = ExCreateMenu( menuCount, vargv[0], vargv[1], vargv[2], vargv[3], vargv[4] );
  332.                 menuCount++;
  333.                 return menu[menuCount];
  334.             case 6:
  335.                 menu[menuCount] = ExCreateMenu( menuCount, vargv[0], vargv[1], vargv[2], vargv[3], vargv[4], vargv[5] );
  336.                 menuCount++;
  337.                 return menu[menuCount];
  338.             case 7:
  339.                 menu[menuCount] = ExCreateMenu( menuCount, vargv[0], vargv[1], vargv[2], vargv[3], vargv[4], vargv[5], vargv[6] );
  340.                 menuCount++;
  341.                 return menu[menuCount];
  342.             case 8:
  343.                 menu[menuCount] = ExCreateMenu( menuCount, vargv[0], vargv[1], vargv[2], vargv[3], vargv[4], vargv[5], vargv[6], vargv[7] );
  344.                 menuCount++;
  345.                 return menu[menuCount];
  346.             case 9:
  347.                 menu[menuCount] = ExCreateMenu( menuCount, vargv[0], vargv[1], vargv[2], vargv[3], vargv[4], vargv[5], vargv[6], vargv[7], vargv[8] );
  348.                 menuCount++;
  349.                 return menu[menuCount];
  350.             case 10:
  351.                 menu[menuCount] = ExCreateMenu( menuCount, vargv[0], vargv[1], vargv[2], vargv[3], vargv[4], vargv[5], vargv[6], vargv[7], vargv[8], vargv[9] );
  352.                 menuCount++;
  353.                 return menu[menuCount];
  354.             case 11:
  355.                 menu[menuCount] = ExCreateMenu( menuCount, vargv[0], vargv[1], vargv[2], vargv[3], vargv[4], vargv[5], vargv[6], vargv[7], vargv[8], vargv[9], vargv[10] );
  356.                 menuCount++;
  357.                 return menu[menuCount];
  358.         }
  359.     }
  360. }
  361.  
  362. // =========================================== S E R V E R   E V E N T S ==============================================
  363.  
  364. function onScriptLoad()
  365. {
  366.     print( "Custom Menu System by Seby (v2.0) was successfully loaded !" );
  367. }
  368.  
  369. function onScriptUnload()
  370. {
  371.     print( "Custom Menu System by Seby (v2.0) couldn't be loaded !" );
  372. }
  373.  
  374. // =========================================== P L A Y E R   E V E N T S ==============================================
  375.  
  376. function onPlayerJoin( player )
  377. {
  378.     menuOnScreen[ player.ID ] = -1;
  379.     menuOptionChoosen[ player.ID ] = 0;
  380.    
  381.     submenuOnScreen[ player.ID ] = 0;
  382.     submenuOptionChoosen[ player.ID ] = 0;
  383. }
  384.  
  385. function onPlayerPart( player, reason )
  386. {
  387.     menuRageQuit( player );
  388. }
  389.  
  390. function onPlayerDeath( player, reason )
  391. {
  392.     menuRageQuit( player );
  393. }
  394.  
  395. function onPlayerKill( player, killer, reason, bodypart )
  396. {
  397.     menuRageQuit( player );
  398. }
  399.  
  400. function onPlayerTeamKill( player, killer, reason, bodypart )
  401. {
  402.     menuRageQuit( player );
  403. }
  404.  
  405. function onPlayerCommand( player, cmd, text )
  406. {
  407.     if( cmd == "testmenu" )
  408.     {
  409.         CreateMenu("Menu System v2","option1","option2","option3","option4","option5","option6","option7","option8","option9","option10");
  410.         menu[0].AddSubmenu( 1, "/option1","option1","option2","option3");
  411.         menu[0].AddSubmenu( 2, "/option2","option1","option2","option3","option4");
  412.         menu[0].AddSubmenu( 3, "/option3","option1","option2","option3","option4","option5");
  413.         menu[0].AddSubmenu( 4, "/option4","option1","option2","option3","option4","option5","option6");
  414.         menu[0].AddSubmenu( 5, "/option5","option1","option2","option3","option4","option5","option6","option7");
  415.         menu[0].AddSubmenu( 6, "/option6","option1","option2","option3","option4","option5","option6","option7","option8");
  416.         menu[0].AddSubmenu( 7, "/option7","option1","option2","option3","option4","option5","option6","option7","option8","option9");
  417.         menu[0].AddSubmenu( 8, "/option8","option1","option2","option3","option4","option5","option6","option7","option8","option9","option10");
  418.         menu[0].AddSubmenu( 9, "/option9","option12","option22","option32","option42","option52","option62","option72","option82","option92","option102");
  419.         menu[0].AddSubmenu( 10, "/option10","option122","option222","option322","option422","option522","option622","option722","option822","option922","option1022");
  420.     }
  421.    
  422.     else if( cmd == "showtestmenu" )
  423.     {
  424.         if( menu[0] ) menu[0].ShowMenu( player );
  425.     }
  426.    
  427.     else if( cmd == "hidetestmenu" )
  428.     {
  429.         if( menu[0] ) menu[0].HideMenu( player );
  430.     }
  431.     return 1;
  432. }
  433.  
  434. // =========================================== B I N D   E V E N T S ==============================================
  435.  
  436. function onKeyDown( player, key )
  437. {
  438.     switch( key )
  439.     {
  440.         case KEY_MENU_UP:
  441.             if( menuOnScreen[ player.ID ] > -1 ) KeyBindMenu(player, KEY_MENU_UP);
  442.             break;
  443.         case KEY_MENU_DOWN:
  444.             if( menuOnScreen[ player.ID ] > -1 ) KeyBindMenu(player, KEY_MENU_DOWN);
  445.             break;
  446.         case KEY_MENU_SELECT:
  447.             if( menuOnScreen[ player.ID ] > -1 ) KeyBindMenu(player, KEY_MENU_SELECT);
  448.             break;
  449.         case KEY_MENU_BACK:
  450.             if( menuOnScreen[ player.ID ] > -1 ) KeyBindMenu(player, KEY_MENU_BACK);
  451.             break;
  452.         default: break;
  453.     }
  454. }
  455.  
  456. // ====================================== C U S T O M   M E N U   E V E N T S =========================================
  457.  
  458. function onPlayerEnterMenu( player, menuID )
  459. {
  460.     print( player.Name + " entered in menu " + menuID );
  461. }
  462.  
  463. function onPlayerExitMenu( player, menuID )
  464. {
  465.     print( player.Name + " left the menu " + menuID );
  466. }
  467.  
  468. function onPlayerEnterSubmenu( player, menuID, submenuID )
  469. {
  470.     print( player.Name + " entered in submenu " + submenuID + " of menu " + menuID );
  471. }
  472.  
  473. function onPlayerExitSubmenu( player, menuID, submenuID )
  474. {
  475.     print( player.Name + " left the submenu " + submenuID + " of menu " + menuID );
  476. }
  477.  
  478. function onPlayerSelectInMenu( player, menuID, option )
  479. {
  480.     print( player.Name + " selected option " + option + " from menu " + menuID);
  481. }
  482.  
  483. function onPlayerSelectInSubmenu( player, menuID, submenuID, option )
  484. {
  485.     print( player.Name + " selected option " + option + " from submenu " + submenuID + " of menu " + menuID );
  486. }
  487.  
  488. // ================================== E N D   OF   O F F I C I A L   E V E N T S ======================================
  489.  
  490. function menuRageQuit( player )
  491. {
  492.     if( player )
  493.     {
  494.         if( menuOnScreen[ player.ID ] != -1 )
  495.         {
  496.             local   menuID = menuOnScreen[ player.ID ],
  497.                     menuInstance = menu[ menuID ],
  498.                     option = menuOptionChoosen[ player.ID ];
  499.            
  500.             if( submenuOnScreen[ player.ID ] != 0 )
  501.             {
  502.                 menuInstance.HideSubmenu( player, option );
  503.             }
  504.            
  505.             menuInstance.HideMenu( player );
  506.         }
  507.     }
  508. }
  509.  
  510. function menuRageQuitAll( )
  511. {
  512.     for( local plr, i = 0; i <= GetPlayers(); i++ )
  513.     {
  514.         plr = FindPlayer(i);
  515.         if( plr ) menuRageQuit( plr );
  516.     }
  517. }
  518.  
  519. function KeyBindMenu( player, key )
  520. {
  521.     local   menuID = menuOnScreen[ player.ID ],
  522.             menuInstance = menu[ menuID ],
  523.             option = menuOptionChoosen[ player.ID ],
  524.             upperOption = option - 1,
  525.             downerOption = option + 1,
  526.             paramsNumber = menuInstance.params - 1,
  527.  
  528.             suboption = submenuOptionChoosen[ player.ID ],
  529.             upperSubOption = suboption - 1,
  530.             downerSubOption = suboption + 1,
  531.             subparamsNumber = menuInstance.subparams[ menuOptionChoosen[ player.ID ] ];
  532.        
  533.     switch( key )
  534.     {
  535.         case KEY_MENU_UP:
  536.             if( submenuOnScreen[ player.ID ] != 1 )
  537.             {
  538.                 menuInstance.menuOption[ 0 ][ option ].BeUnselected( player );
  539.                
  540.                 if( option != 1 )
  541.                 {
  542.                     menuInstance.menuOption[ 0 ][ upperOption ].BeSelected( player );
  543.                     menuOptionChoosen[ player.ID ]--;
  544.                 }
  545.                 else
  546.                 {
  547.                     menuInstance.menuOption[ 0 ][ paramsNumber ].BeSelected( player );
  548.                     menuOptionChoosen[ player.ID ] = paramsNumber;
  549.                 }
  550.             }
  551.             else
  552.             {
  553.                 menuInstance.menuOption[ option ][ suboption ].BeUnselected( player );
  554.                
  555.                 if( suboption != 1 )
  556.                 {
  557.                     menuInstance.menuOption[ option ][ upperSubOption ].BeSelected( player );
  558.                     submenuOptionChoosen[ player.ID ]--;
  559.                 }
  560.                 else
  561.                 {
  562.                     menuInstance.menuOption[ option ][ subparamsNumber - 1 ].BeSelected( player );
  563.                     submenuOptionChoosen[ player.ID ] = subparamsNumber - 1;
  564.                 }
  565.             }
  566.             break;
  567.         case KEY_MENU_DOWN:
  568.             if( submenuOnScreen[ player.ID ] != 1 )
  569.             {
  570.                 menuInstance.menuOption[0][option].BeUnselected( player );
  571.                
  572.                 if( option != paramsNumber )
  573.                 {
  574.                     menuInstance.menuOption[0][downerOption].BeSelected( player );
  575.                     menuOptionChoosen[ player.ID ]++;
  576.                 }
  577.                 else
  578.                 {
  579.                     menuInstance.menuOption[0][1].BeSelected( player );
  580.                     menuOptionChoosen[ player.ID ] = 1;
  581.                 }
  582.             }
  583.             else
  584.             {
  585.                 menuInstance.menuOption[ option ][ suboption ].BeUnselected( player );
  586.                
  587.                 if( suboption != subparamsNumber - 1 )
  588.                 {
  589.                     menuInstance.menuOption[ option ][ downerSubOption ].BeSelected( player );
  590.                     submenuOptionChoosen[ player.ID ]++;
  591.                 }
  592.                 else
  593.                 {
  594.                     menuInstance.menuOption[ option ][ 1 ].BeSelected( player );
  595.                     submenuOptionChoosen[ player.ID ] = 1;
  596.                 }
  597.             }
  598.             break;
  599.         case KEY_MENU_SELECT:
  600.             if( subparamsNumber > 0 )
  601.             {
  602.                 if( submenuOnScreen[ player.ID ] == 0 ) menuInstance.ShowSubmenu( player, option );
  603.                 else onPlayerSelectInSubmenu( player, menuID, option, suboption );
  604.             }
  605.             else onPlayerSelectInMenu( player, menuID, option );
  606.             break;
  607.         case KEY_MENU_BACK:
  608.             if( submenuOnScreen[ player.ID ] == 1 ) menuInstance.HideSubmenu( player, option );
  609.             else menuInstance.HideMenu( player );
  610.             break;
  611.         default: break;
  612.     }
  613. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement