Advertisement
sseebbyy

CMSS v2 (12.03.2015) + onPlayerSwitchOptions

Mar 12th, 2015
232
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 20.43 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. onPlayerSwitchOptionsInMenu( player, menuID, oldOption, newOption )
  62. onPlayerSelectInMenu( player, menuID, option );
  63.  
  64. Submenu events: onPlayerEnterSubmenu( player, menuID, submenuID ),
  65. onPlayerExitSubmenu( player, menuID, submenuID ),
  66. onPlayerSwitchOptionsInSubmenu( player, menuID, submenuID, oldOption, newOption )
  67. onPlayerSelectInSubmenu( player, menuID, submenuID, option );
  68.  
  69. ===================================================================================================================================================================
  70.  
  71. */
  72.  
  73. // Bind Keys ==========================================================
  74. KEY_MENU_UP <- BindKey(true, 0x26, 0, 0); // UP_ARROW
  75. KEY_MENU_DOWN <- BindKey(true, 0x28, 0, 0); // DOWN_ARROW
  76. KEY_MENU_SELECT <- BindKey(true, 0x20, 0, 0); // SPACEBAR
  77. KEY_MENU_BACK <- BindKey(true, 0x08, 0, 0); // BACKSPAGE
  78. // ====================================================================
  79.  
  80. // Changeable settings
  81. menuX <- 80; // menu pos x
  82. menuY <- 310; // menu pos y
  83. menuSpritePosX <- menuX - 10; // sprite pos x
  84. menuSpritePosY <- menuY - 10; // sprite pos y
  85. menuSpriteAlpha <- 200; // sprites' alpha
  86. menuOptionPrefix <- "::"; // options' prefix
  87. menuOptionPosX <- menuX + 50; // options' pos x
  88. menuTitleColor <- 0xFF00FFFF; // menus' title color
  89. menuOptionColorSelected <- 0xFFFFFFFF; // selected options' color
  90. menuOptionColorUnselected <- 0xFFAAAAAA; // unselected options' color
  91.  
  92.  
  93. // Don't touch this !
  94. menu <- array( 100, null );
  95. menuCount <- 0;
  96. menuSprite <- array( 9, null );
  97.  
  98. menuOptionPosY <- array( 11, null );
  99. menuOptionPosY[0] = menuY;
  100.  
  101. menuOnScreen <- array( GetMaxPlayers(), null );
  102. menuOptionChoosen <- array( GetMaxPlayers(), null );
  103.  
  104. submenuOnScreen <- array( GetMaxPlayers(), null );
  105. submenuOptionChoosen <- array( GetMaxPlayers(), null );
  106.  
  107. for(local i = 0; i < menuSprite.len(); i++)
  108. menuSprite[i] = CreateSprite( "menuBackType" + i + ".png", menuSpritePosX, menuSpritePosY, 0, 0, 0, menuSpriteAlpha);
  109.  
  110. class menuTextdrawClass
  111. {
  112. instance = null;
  113. text = null;
  114. number = null;
  115.  
  116.  
  117. constructor( paramText, paramNumber )
  118. {
  119. text = paramText;
  120. number = paramNumber;
  121. }
  122.  
  123. function Show( player, way )
  124. {
  125. switch( way )
  126. {
  127. case 0:
  128. if( number == 0 )
  129. // number 0 is the title
  130. instance = ::CreateTextdraw( text, menuX, menuY, menuTitleColor );
  131. else
  132. {
  133. menuOptionPosY[number] = menuOptionPosY[number-1] + 15;
  134. instance = ::CreateTextdraw( menuOptionPrefix + " " + text, menuOptionPosX, menuOptionPosY[number], menuOptionColorUnselected );
  135. }
  136. break;
  137. default: break;
  138. }
  139.  
  140. instance.ShowForPlayer( player );
  141. }
  142.  
  143. function Hide( player, way )
  144. {
  145. instance.HideFromPlayer( player );
  146.  
  147. switch( way )
  148. {
  149. case -1:
  150. case 0:
  151. instance.Delete( );
  152. break;
  153. default: break;
  154. }
  155. }
  156.  
  157. function BeSelected( player )
  158. {
  159. instance.SetColourForPlayer( player, menuOptionColorSelected );
  160. }
  161.  
  162. function BeUnselected( player )
  163. {
  164. instance.SetColourForPlayer( player, menuOptionColorUnselected );
  165. }
  166. }
  167.  
  168. class ExCreateMenu
  169. {
  170. ID = null;
  171. title = null;
  172. menuOption = null;
  173. params = null;
  174.  
  175. subtitle = null;
  176. subparams = null;
  177.  
  178. viewers = null;
  179. submenuViewers = null;
  180.  
  181. constructor( menuID, ... )
  182. {
  183. if ( vargv.len() < 3 || vargv.len() > 11 ) print("[CMSS Error] CreateMenu failed - the number of options written is under 2 or bigger than 10 !");
  184. else
  185. {
  186. title = vargv[0].tostring();
  187.  
  188. viewers = 0;
  189. submenuViewers = array( 11, null );
  190.  
  191. subparams = array( 11, null );
  192. menuOption = array( 11, null );
  193. for( local i = 0; i < menuOption.len(); i++)
  194. {
  195. menuOption[i] = array( 11, null );
  196. }
  197.  
  198. params = vargv.len();
  199.  
  200. for(local i = 0; i < vargv.len(); i++)
  201. menuOption[0][i] = menuTextdrawClass( vargv[i], i );
  202.  
  203. ID = menuID;
  204. }
  205. }
  206.  
  207. function ShowMenu( player )
  208. {
  209. if( !player ) return;
  210. else
  211. {
  212. menuSprite[ params - 3 ].ShowForPlayer( player );
  213.  
  214. for(local i = 0; i < params; i++)
  215. if( menuOption[0][i] ) menuOption[0][i].Show( player, viewers );
  216.  
  217. menuOption[0][1].BeSelected( player );
  218. menuOptionChoosen[ player.ID ] = 1;
  219.  
  220. if( menuOnScreen[ player.ID ] == -1 )
  221. {
  222. menuOnScreen[ player.ID ] = ID;
  223. player.IsFrozen = true;
  224.  
  225. viewers++;
  226.  
  227. onPlayerEnterMenu( player, ID );
  228. onPlayerSwitchOptionsInMenu( player, ID, 0, 1 );
  229. }
  230. }
  231. }
  232.  
  233. function HideMenu( player )
  234. {
  235. if( !player ) return;
  236. else
  237. {
  238. menuSprite[ params - 3 ].HideFromPlayer( player );
  239.  
  240. for(local i = 0; i < params; i++)
  241. if( menuOption[0][i] )
  242. if( submenuOnScreen[ player.ID ] == 1 ) menuOption[0][i].Hide( player, viewers );
  243. else menuOption[0][i].Hide( player, viewers - 1 );
  244.  
  245. if( menuOnScreen[ player.ID ] != -1 && submenuOnScreen[ player.ID ] == 0 )
  246. {
  247. menuOnScreen[ player.ID ] = -1;
  248. menuOptionChoosen[ player.ID ] = 0;
  249. player.IsFrozen = false;
  250.  
  251. viewers--;
  252.  
  253. onPlayerExitMenu( player, ID );
  254. }
  255. }
  256. }
  257.  
  258. function AddSubmenu( option, ... )
  259. {
  260. if( option < 1 || option > 10 ) print( "[CMSS Error] AddSubmenu failed - the specified option doesn't exist. It needs to be from 1 to 10." );
  261. 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 !" );
  262. else
  263. {
  264. subtitle = vargv[0].tostring();
  265. subparams[ option ] = vargv.len();
  266.  
  267. for(local i = 0; i < vargv.len(); i++)
  268. menuOption[ option ][ i ] = menuTextdrawClass( vargv[i], i );
  269.  
  270. submenuViewers[ option ] = 0;
  271. }
  272. }
  273.  
  274. function ShowSubmenu( player, option )
  275. {
  276. if( !player ) return;
  277. else
  278. {
  279. for( local i = 0; i < subparams[ option ]; i++ )
  280. if( menuOption[ option ][ i ] ) menuOption[ option ][ i ].Show( player, submenuViewers[ option ] );
  281.  
  282. menuOption[ option ][ 1 ].BeSelected( player );
  283. submenuOnScreen[ player.ID ] = 1;
  284. submenuOptionChoosen[ player.ID ] = 1;
  285.  
  286. submenuViewers[ option ]++;
  287.  
  288. menu[ ID ].HideMenu( player );
  289.  
  290. menuSprite[ subparams[ option ] - 3 ].ShowForPlayer( player );
  291.  
  292. onPlayerEnterSubmenu( player, ID, option );
  293. onPlayerSwitchOptionsInSubmenu( player, ID, option, 0, 1 );
  294. }
  295. }
  296.  
  297. function HideSubmenu( player, option )
  298. {
  299. if( !player ) return;
  300. else
  301. {
  302. menuSprite[ subparams[ option ] - 3 ].HideFromPlayer( player );
  303.  
  304. menu[ ID ].ShowMenu( player );
  305.  
  306. for(local i = 0; i < subparams[ option ]; i++ )
  307. if( menuOption[ option ][ i ] ) menuOption[ option ][ i ].Hide( player, submenuViewers[ option ] - 1 );
  308.  
  309. submenuOnScreen[ player.ID ] = 0;
  310. submenuOptionChoosen[ player.ID ] = 0;
  311.  
  312. submenuViewers[ option ]--;
  313.  
  314. onPlayerExitSubmenu( player, ID, option );
  315. }
  316. }
  317. }
  318.  
  319. function CreateMenu( ... )
  320. {
  321. if ( vargv.len() < 3 || vargv.len() > 11 ) print("[CMSS Error] CreateMenu failed - the number of options written is under 2 or bigger than 10 !");
  322. else
  323. {
  324. switch( vargv.len() )
  325. {
  326. case 3:
  327. menu[menuCount] = ExCreateMenu( menuCount, vargv[0], vargv[1], vargv[2] );
  328. menuCount++;
  329. return menu[menuCount];
  330. case 4:
  331. menu[menuCount] = ExCreateMenu( menuCount, vargv[0], vargv[1], vargv[2], vargv[3] );
  332. menuCount++;
  333. return menu[menuCount];
  334. case 5:
  335. menu[menuCount] = ExCreateMenu( menuCount, vargv[0], vargv[1], vargv[2], vargv[3], vargv[4] );
  336. menuCount++;
  337. return menu[menuCount];
  338. case 6:
  339. menu[menuCount] = ExCreateMenu( menuCount, vargv[0], vargv[1], vargv[2], vargv[3], vargv[4], vargv[5] );
  340. menuCount++;
  341. return menu[menuCount];
  342. case 7:
  343. menu[menuCount] = ExCreateMenu( menuCount, vargv[0], vargv[1], vargv[2], vargv[3], vargv[4], vargv[5], vargv[6] );
  344. menuCount++;
  345. return menu[menuCount];
  346. case 8:
  347. menu[menuCount] = ExCreateMenu( menuCount, vargv[0], vargv[1], vargv[2], vargv[3], vargv[4], vargv[5], vargv[6], vargv[7] );
  348. menuCount++;
  349. return menu[menuCount];
  350. case 9:
  351. menu[menuCount] = ExCreateMenu( menuCount, vargv[0], vargv[1], vargv[2], vargv[3], vargv[4], vargv[5], vargv[6], vargv[7], vargv[8] );
  352. menuCount++;
  353. return menu[menuCount];
  354. case 10:
  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] );
  356. menuCount++;
  357. return menu[menuCount];
  358. case 11:
  359. 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] );
  360. menuCount++;
  361. return menu[menuCount];
  362. }
  363. }
  364. }
  365.  
  366. // =========================================== S E R V E R E V E N T S ==============================================
  367.  
  368. function onScriptLoad()
  369. {
  370. print( "Custom Menu System by Seby (v2.0) was successfully loaded !" );
  371. }
  372.  
  373. function onScriptUnload()
  374. {
  375. print( "Custom Menu System by Seby (v2.0) couldn't be loaded !" );
  376. }
  377.  
  378. // =========================================== P L A Y E R E V E N T S ==============================================
  379.  
  380. function onPlayerJoin( player )
  381. {
  382. menuOnScreen[ player.ID ] = -1;
  383. menuOptionChoosen[ player.ID ] = 0;
  384.  
  385. submenuOnScreen[ player.ID ] = 0;
  386. submenuOptionChoosen[ player.ID ] = 0;
  387. }
  388.  
  389. function onPlayerPart( player, reason )
  390. {
  391. menuRageQuit( player );
  392. }
  393.  
  394. function onPlayerDeath( player, reason )
  395. {
  396. menuRageQuit( player );
  397. }
  398.  
  399. function onPlayerKill( player, killer, reason, bodypart )
  400. {
  401. menuRageQuit( player );
  402. }
  403.  
  404. function onPlayerTeamKill( player, killer, reason, bodypart )
  405. {
  406. menuRageQuit( player );
  407. }
  408.  
  409. function onPlayerCommand( player, cmd, text )
  410. {
  411. if( cmd == "testmenu" )
  412. {
  413. CreateMenu("Menu System v2","option1","option2","option3","option4","option5","option6","option7","option8","option9","option10");
  414. menu[0].AddSubmenu( 1, "/option1","option1","option2","option3");
  415. menu[0].AddSubmenu( 2, "/option2","option1","option2","option3","option4");
  416. menu[0].AddSubmenu( 3, "/option3","option1","option2","option3","option4","option5");
  417. menu[0].AddSubmenu( 4, "/option4","option1","option2","option3","option4","option5","option6");
  418. menu[0].AddSubmenu( 5, "/option5","option1","option2","option3","option4","option5","option6","option7");
  419. menu[0].AddSubmenu( 6, "/option6","option1","option2","option3","option4","option5","option6","option7","option8");
  420. menu[0].AddSubmenu( 7, "/option7","option1","option2","option3","option4","option5","option6","option7","option8","option9");
  421. menu[0].AddSubmenu( 8, "/option8","option1","option2","option3","option4","option5","option6","option7","option8","option9","option10");
  422. menu[0].AddSubmenu( 9, "/option9","option12","option22","option32","option42","option52","option62","option72","option82","option92","option102");
  423. menu[0].AddSubmenu( 10, "/option10","option122","option222","option322","option422","option522","option622","option722","option822","option922","option1022");
  424. }
  425.  
  426. else if( cmd == "showtestmenu" )
  427. {
  428. if( menu[0] ) menu[0].ShowMenu( player );
  429. }
  430.  
  431. else if( cmd == "hidetestmenu" )
  432. {
  433. if( menu[0] ) menu[0].HideMenu( player );
  434. }
  435. return 1;
  436. }
  437.  
  438. // =========================================== B I N D E V E N T S ==============================================
  439.  
  440. function onKeyDown( player, key )
  441. {
  442. switch( key )
  443. {
  444. case KEY_MENU_UP:
  445. if( menuOnScreen[ player.ID ] > -1 ) KeyBindMenu(player, KEY_MENU_UP);
  446. break;
  447. case KEY_MENU_DOWN:
  448. if( menuOnScreen[ player.ID ] > -1 ) KeyBindMenu(player, KEY_MENU_DOWN);
  449. break;
  450. case KEY_MENU_SELECT:
  451. if( menuOnScreen[ player.ID ] > -1 ) KeyBindMenu(player, KEY_MENU_SELECT);
  452. break;
  453. case KEY_MENU_BACK:
  454. if( menuOnScreen[ player.ID ] > -1 ) KeyBindMenu(player, KEY_MENU_BACK);
  455. break;
  456. default: break;
  457. }
  458. }
  459.  
  460. // ====================================== C U S T O M M E N U E V E N T S =========================================
  461.  
  462. function onPlayerEnterMenu( player, menuID )
  463. {
  464. print( player.Name + " entered in menu " + menuID );
  465. }
  466.  
  467. function onPlayerExitMenu( player, menuID )
  468. {
  469. print( player.Name + " left the menu " + menuID );
  470. }
  471.  
  472. function onPlayerEnterSubmenu( player, menuID, submenuID )
  473. {
  474. print( player.Name + " entered in submenu " + submenuID + " of menu " + menuID );
  475. }
  476.  
  477. function onPlayerExitSubmenu( player, menuID, submenuID )
  478. {
  479. print( player.Name + " left the submenu " + submenuID + " of menu " + menuID );
  480. }
  481.  
  482. function onPlayerSwitchOptionsInMenu( player, menuID, oldOption, newOption )
  483. {
  484. print( player.Name + " switched options in menu ID " + menuID + ". (old: " + oldOption + ") (new: " + newOption + ")");
  485. }
  486.  
  487. function onPlayerSwitchOptionsInSubmenu( player, menuID, submenuID, oldOption, newOption )
  488. {
  489. print( player.Name + " switched options in submenu ID " + submenuID + " of menu ID " + menuID + ". (old: " + oldOption + ") (new: " + newOption + ")");
  490. }
  491.  
  492. function onPlayerSelectInMenu( player, menuID, option )
  493. {
  494. print( player.Name + " selected option " + option + " from menu " + menuID);
  495. }
  496.  
  497. function onPlayerSelectInSubmenu( player, menuID, submenuID, option )
  498. {
  499. print( player.Name + " selected option " + option + " from submenu " + submenuID + " of menu " + menuID );
  500. }
  501.  
  502. // ================================== E N D OF O F F I C I A L E V E N T S ======================================
  503.  
  504. function menuRageQuit( player )
  505. {
  506. if( player )
  507. {
  508. if( menuOnScreen[ player.ID ] != -1 )
  509. {
  510. local menuID = menuOnScreen[ player.ID ],
  511. menuInstance = menu[ menuID ],
  512. option = menuOptionChoosen[ player.ID ];
  513.  
  514. if( submenuOnScreen[ player.ID ] != 0 )
  515. {
  516. menuInstance.HideSubmenu( player, option );
  517. }
  518.  
  519. menuInstance.HideMenu( player );
  520. }
  521. }
  522. }
  523.  
  524. function menuRageQuitAll( )
  525. {
  526. for( local plr, i = 0; i <= GetPlayers(); i++ )
  527. {
  528. plr = FindPlayer(i);
  529. if( plr ) menuRageQuit( plr );
  530. }
  531. }
  532.  
  533. function KeyBindMenu( player, key )
  534. {
  535. local menuID = menuOnScreen[ player.ID ],
  536. menuInstance = menu[ menuID ],
  537. option = menuOptionChoosen[ player.ID ],
  538. upperOption = option - 1,
  539. downerOption = option + 1,
  540. paramsNumber = menuInstance.params - 1,
  541.  
  542. suboption = submenuOptionChoosen[ player.ID ],
  543. upperSubOption = suboption - 1,
  544. downerSubOption = suboption + 1,
  545. subparamsNumber = menuInstance.subparams[ menuOptionChoosen[ player.ID ] ];
  546.  
  547. switch( key )
  548. {
  549. case KEY_MENU_UP:
  550. if( submenuOnScreen[ player.ID ] != 1 )
  551. {
  552. menuInstance.menuOption[ 0 ][ option ].BeUnselected( player );
  553.  
  554. if( option != 1 )
  555. {
  556. menuInstance.menuOption[ 0 ][ upperOption ].BeSelected( player );
  557. menuOptionChoosen[ player.ID ]--;
  558. }
  559. else
  560. {
  561. menuInstance.menuOption[ 0 ][ paramsNumber ].BeSelected( player );
  562. menuOptionChoosen[ player.ID ] = paramsNumber;
  563. }
  564.  
  565. onPlayerSwitchOptionsInMenu( player, menuID, option, menuOptionChoosen[ player.ID ] );
  566. }
  567. else
  568. {
  569. menuInstance.menuOption[ option ][ suboption ].BeUnselected( player );
  570.  
  571. if( suboption != 1 )
  572. {
  573. menuInstance.menuOption[ option ][ upperSubOption ].BeSelected( player );
  574. submenuOptionChoosen[ player.ID ]--;
  575. }
  576. else
  577. {
  578. menuInstance.menuOption[ option ][ subparamsNumber - 1 ].BeSelected( player );
  579. submenuOptionChoosen[ player.ID ] = subparamsNumber - 1;
  580. }
  581.  
  582. onPlayerSwitchOptionsInSubmenu( player, menuID, option, suboption, submenuOptionChoosen[ player.ID ] );
  583. }
  584. break;
  585. case KEY_MENU_DOWN:
  586. if( submenuOnScreen[ player.ID ] != 1 )
  587. {
  588. menuInstance.menuOption[0][option].BeUnselected( player );
  589.  
  590. if( option != paramsNumber )
  591. {
  592. menuInstance.menuOption[0][downerOption].BeSelected( player );
  593. menuOptionChoosen[ player.ID ]++;
  594. }
  595. else
  596. {
  597. menuInstance.menuOption[0][1].BeSelected( player );
  598. menuOptionChoosen[ player.ID ] = 1;
  599. }
  600.  
  601. onPlayerSwitchOptionsInMenu( player, menuID, option, menuOptionChoosen[ player.ID ] );
  602. }
  603. else
  604. {
  605. menuInstance.menuOption[ option ][ suboption ].BeUnselected( player );
  606.  
  607. if( suboption != subparamsNumber - 1 )
  608. {
  609. menuInstance.menuOption[ option ][ downerSubOption ].BeSelected( player );
  610. submenuOptionChoosen[ player.ID ]++;
  611. }
  612. else
  613. {
  614. menuInstance.menuOption[ option ][ 1 ].BeSelected( player );
  615. submenuOptionChoosen[ player.ID ] = 1;
  616. }
  617.  
  618. onPlayerSwitchOptionsInSubmenu( player, menuID, option, suboption, submenuOptionChoosen[ player.ID ] );
  619. }
  620. break;
  621. case KEY_MENU_SELECT:
  622. if( subparamsNumber > 0 )
  623. {
  624. if( submenuOnScreen[ player.ID ] == 0 ) menuInstance.ShowSubmenu( player, option );
  625. else onPlayerSelectInSubmenu( player, menuID, option, suboption );
  626. }
  627. else onPlayerSelectInMenu( player, menuID, option );
  628. break;
  629. case KEY_MENU_BACK:
  630. if( submenuOnScreen[ player.ID ] == 1 ) menuInstance.HideSubmenu( player, option );
  631. else menuInstance.HideMenu( player );
  632. break;
  633. default: break;
  634. }
  635. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement