Advertisement
sseebbyy

Dialog System v1.0 for VC:MP 0.4

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