Advertisement
Guest User

[FilterScript] Spray Tag System 0.2b - (DOF2)

a guest
Mar 9th, 2014
1,331
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pawn 29.77 KB | None | 0 0
  1. /*
  2.     Spray Tag System criado por NurbWill;
  3.    
  4.    
  5.     Topico: http://forum.sa-mp.com/showthread.php?t=499642
  6.     Versão: 0.2b
  7.     Skype: Nurb.Will
  8.    
  9.     Thanks
  10.         Zeex for ZCMD
  11.         Incognito for Streamer
  12.         DOF2 for ...
  13. */
  14.  
  15.  
  16. #include    <a_samp>
  17. #include    <streamer>
  18. #include    <zcmd>
  19. #include    <dof2>
  20.  
  21. /*
  22.     ##############################################################
  23.     ######################## DEFINE'S ############################
  24.     ##############################################################
  25. */
  26.  
  27. // ######### Config's #########
  28. #define     SPRAYTAG_FOLDER             "spraytags/%s.ini"
  29.  
  30. #define     MAX_PLAYERS_TAGS            (5)                     // Maximo de spray tags criado por player.
  31.  
  32. #define     SPRAY_TAG_TIMER             (4)                     // Segundos para criar a spray tag.
  33. #define     SPRAY_TAG_OBJECT            (19353)                 // ID do objeto.
  34. #define     SPRAY_TAG_OBJECT_DISTANCE   (200.0)                 // Distância em que pode ser visto a spray tag
  35.  
  36. // ######### Custom Dialog's Type #########
  37. #define     TYPE_LIST_MENU              (0)
  38. #define     TYPE_LIST_EDIT              (1)
  39. #define     TYPE_LIST_CREATE            (2)
  40. #define     TYPE_LIST_TAGS              (3)
  41. #define     TYPE_LIST_TAGS_DELETE       (4)
  42. #define     TYPE_LIST_TAGS_CREATE       (5)
  43. #define     TYPE_LIST_TAGS_FIND         (6)
  44.  
  45. // ######### Dialog's ID #########
  46. #define     SPRAYTAG_MENU               (9800)
  47. #define     SPRAYTAG_DELETE             (9801)
  48. #define     SPRAYTAG_CREATE             (9802)
  49. #define     SPRAYTAG_CREATE_MAIN        (9803)
  50. #define     SPRAYTAG_CREATE_TEXT        (9804)
  51. #define     SPRAYTAG_CREATE_FONT        (9805)
  52. #define     SPRAYTAG_CREATE_SIZE        (9806)
  53. #define     SPRAYTAG_CREATE_COLOR       (9807)
  54. #define     SPRAYTAG_CREATE_FINISH      (9808)
  55. #define     SPRAYTAG_EDIT_MAIN          (9809)
  56. #define     SPRAYTAG_EDIT_TEXT          (9810)
  57. #define     SPRAYTAG_EDIT_FONT          (9811)
  58. #define     SPRAYTAG_EDIT_SIZE          (9812)
  59. #define     SPRAYTAG_EDIT_COLOR         (9813)
  60. #define     SPRAYTAG_EDIT_FINISH        (9814)
  61. #define     SPRAYTAG_EDIT_LIST          (9815)
  62. #define     SPRAYTAG_FIND               (9816)
  63. #define     SPRAYTAG_DIALOG_RETURN      (9817)
  64.  
  65. /*
  66.     ##############################################################
  67.     ########################## VAR'S #############################
  68.     ##############################################################
  69. */
  70.  
  71. enum SPRAYTAG_DATA
  72. {
  73.     _spSQLID,
  74.     _spObject,
  75.     _spText[50],
  76.     _spOwned[MAX_PLAYER_NAME],
  77.     _spFontColor,
  78.     _spBold,
  79.     _spFontSize,
  80.     _spFont[50],
  81.     Float:_spPosX,
  82.     Float:_spPosY,
  83.     Float:_spPosZ,
  84.     Float:_spPosRX,
  85.     Float:_spPosRY,
  86.     Float:_spPosRZ,
  87.     _spVW,
  88.     _spInt
  89. }
  90.  
  91. new
  92.     SprayTags[MAX_PLAYERS][MAX_PLAYERS_TAGS][SPRAYTAG_DATA],
  93.     spraytag_object[MAX_PLAYERS],
  94.     spraytag_timer[MAX_PLAYERS],
  95.     spraytag_timer_left[MAX_PLAYERS],
  96.     spraytag_find[MAX_PLAYERS],
  97.     spraytag_slot[MAX_PLAYERS],
  98.     spraytag_text[MAX_PLAYERS],
  99.     spraytag_size[MAX_PLAYERS],
  100.     spraytag_bold[MAX_PLAYERS],
  101.     spraytag_color[MAX_PLAYERS],
  102.     spraytag_font[MAX_PLAYERS],
  103.     Float:spraytag_positions[MAX_PLAYERS][6]
  104. ;
  105.  
  106. /*
  107.     ##############################################################
  108.     ######################### PUBLIC'S ###########################
  109.     ##############################################################
  110. */
  111.  
  112. public OnFilterScriptInit()
  113. {
  114.     print("\n--------------------------------------");
  115.     print(" Spray Tag System | Versão: 0.2b - By: Nurb Will;");
  116.     print("--------------------------------------\n");
  117.     return 1;
  118. }
  119.  
  120. public OnFilterScriptExit()
  121. {
  122.     DOF2_Exit();
  123. }
  124.  
  125. public OnPlayerConnect(playerid)
  126. {
  127.     Tag_Load(playerid);
  128.     return 1;
  129. }
  130.  
  131. forward SprayTag_Dialog(iPlayerID, iType);
  132. public SprayTag_Dialog(iPlayerID, iType)
  133. {
  134.     new
  135.         szDialog[500],
  136.         szText[50],
  137.         szFont[50],
  138.         szBold[4],
  139.         szColor[30]
  140.     ;
  141.    
  142.     switch(iType)
  143.     {
  144.         case TYPE_LIST_MENU:
  145.         {
  146.             ShowPlayerDialog(iPlayerID, SPRAYTAG_MENU, DIALOG_STYLE_LIST, "{F7EC6F}Spray Tag - {469BF0}Menu", "Criar spray tag\nEditar spray tag\nDeletar spray tag\nRastrear tag's", "Selecionar", "Sair");
  147.         }
  148.         case TYPE_LIST_CREATE:
  149.         {
  150.             switch(spraytag_bold[iPlayerID])
  151.             {
  152.                 case 0: szBold = "Não";
  153.                 case 1: szBold = "Sim";
  154.             }
  155.             switch(spraytag_color[iPlayerID])
  156.             {
  157.                 case -65536: szColor = "{FF0000}Vermelho";
  158.                 case -16468988: szColor = "{04B404}Verde";
  159.                 case -16730675: szColor = "{00B5CD}Azul Claro";
  160.                 case -256: szColor = "{FFFF00}Amarelo";
  161.                 case -16776961: szColor = "{0000FF}Azul";
  162.                 case -8092540: szColor = "{848484}Cinza";
  163.                 case -65281: szColor = "{FF00FF}Rosa";
  164.                 case -1: szColor = "{FFFFFF}Branco";
  165.             }
  166.            
  167.             format(szText, 50, spraytag_text[iPlayerID]);
  168.             format(szFont, 50, spraytag_font[iPlayerID]);
  169.            
  170.             format(szDialog, sizeof szDialog, "\
  171.                 {F7EC6F}Texto: %s\n\
  172.                 {F7EC6F}Fonte: %s\n\
  173.                 {F7EC6F}Tamanho: %d\n\
  174.                 {F7EC6F}Cor: %s\n\
  175.                 {F7EC6F}Negrito: %s\n\
  176.                 {FFB957}Criar Tag",
  177.                 szText,
  178.                 szFont,
  179.                 spraytag_size[iPlayerID],
  180.                 szColor,
  181.                 szBold
  182.             );
  183.             ShowPlayerDialog(iPlayerID, SPRAYTAG_CREATE_MAIN, DIALOG_STYLE_LIST, "{F7EC6F}Spray Tag - {469BF0}Customização", szDialog, "Selecionar", "Voltar");
  184.         }
  185.         case TYPE_LIST_EDIT:
  186.         {
  187.             switch(spraytag_bold[iPlayerID])
  188.             {
  189.                 case 0: szBold = "Não";
  190.                 case 1: szBold = "Sim";
  191.             }
  192.             switch(spraytag_color[iPlayerID])
  193.             {
  194.                 case -65536: szColor = "{FF0000}Vermelho";
  195.                 case -16468988: szColor = "{04B404}Verde";
  196.                 case -16730675: szColor = "{00B5CD}Azul Claro";
  197.                 case -256: szColor = "{FFFF00}Amarelo";
  198.                 case -16776961: szColor = "{0000FF}Azul";
  199.                 case -8092540: szColor = "{848484}Cinza";
  200.                 case -65281: szColor = "{FF00FF}Rosa";
  201.                 case -1: szColor = "{FFFFFF}Branco";
  202.             }
  203.  
  204.             format(szDialog, sizeof szDialog, "\
  205.                 {F7EC6F}Texto: %s\n\
  206.                 {F7EC6F}Fonte: %s\n\
  207.                 {F7EC6F}Tamanho: %d\n\
  208.                 {F7EC6F}Cor: %s\n\
  209.                 {F7EC6F}Negrito: %s\n\
  210.                 {1EAAD9}Editar Tag",
  211.                 spraytag_text[iPlayerID],
  212.                 spraytag_font[iPlayerID],
  213.                 spraytag_size[iPlayerID],
  214.                 szColor,
  215.                 szBold
  216.             );
  217.             ShowPlayerDialog(iPlayerID, SPRAYTAG_EDIT_LIST, DIALOG_STYLE_LIST, "{F7EC6F}Spray Tag - {469BF0}Customização", szDialog, "Selecionar", "Voltar");
  218.         }
  219.         case TYPE_LIST_TAGS:
  220.         {
  221.             new
  222.                 szName[MAX_PLAYER_NAME]
  223.             ;
  224.                    
  225.             GetPlayerName(iPlayerID, szName, sizeof szName);
  226.             for(new i; i < MAX_PLAYERS_TAGS; i++)
  227.             {
  228.                 new szTag[24];
  229.                 format(szTag, sizeof szTag, "{F7EC6F}Livre");
  230.                 if(SprayTags[iPlayerID][i][_spPosX] != 0.0 && SprayTags[iPlayerID][i][_spPosY] != 0.0)
  231.                 {
  232.                     format(szTag, sizeof(szTag), "{F7EC6F}Spray Tag #%i", i);
  233.                 }
  234.                 format(szDialog, sizeof(szDialog), "%s%s\n", szDialog, szTag);
  235.             }
  236.            
  237.             ShowPlayerDialog(iPlayerID, SPRAYTAG_EDIT_MAIN, DIALOG_STYLE_LIST, "{F7EC6F}Spray Tag - {469BF0}Editar suas tag's", szDialog, "Selecionar", "Voltar");
  238.         }
  239.         case TYPE_LIST_TAGS_DELETE:
  240.         {
  241.             new
  242.                 szName[MAX_PLAYER_NAME]
  243.             ;
  244.                    
  245.             GetPlayerName(iPlayerID, szName, sizeof szName);
  246.                    
  247.             for(new i; i < MAX_PLAYERS_TAGS; i++)
  248.             {
  249.                 new szTag[24];
  250.                 format(szTag, sizeof szTag, "{F7EC6F}Livre");
  251.                 if(SprayTags[iPlayerID][i][_spPosX] != 0.0 && SprayTags[iPlayerID][i][_spPosY] != 0.0)
  252.                 {
  253.                     format(szTag, sizeof(szTag), "{F7EC6F}Spray Tag #%i", i);
  254.                 }
  255.                 format(szDialog, sizeof(szDialog), "%s%s\n", szDialog, szTag);
  256.             }
  257.             ShowPlayerDialog(iPlayerID, SPRAYTAG_DELETE, DIALOG_STYLE_LIST, "{F7EC6F}Spray Tag - {469BF0}Deletar suas tag's", szDialog, "Selecionar", "Voltar");
  258.         }
  259.         case TYPE_LIST_TAGS_CREATE:
  260.         {
  261.             new
  262.                 szName[MAX_PLAYER_NAME]
  263.             ;
  264.                    
  265.             GetPlayerName(iPlayerID, szName, sizeof szName);
  266.                    
  267.             for(new i; i < MAX_PLAYERS_TAGS; i++)
  268.             {
  269.                 new szTag[24];
  270.                 format(szTag, sizeof szTag, "{F7EC6F}Livre");
  271.                 if(SprayTags[iPlayerID][i][_spPosX] != 0.0 && SprayTags[iPlayerID][i][_spPosY] != 0.0)
  272.                 {
  273.                     format(szTag, sizeof(szTag), "{F7EC6F}Spray Tag #%i", i);
  274.                 }
  275.                 format(szDialog, sizeof(szDialog), "%s%s\n", szDialog, szTag);
  276.             }
  277.             ShowPlayerDialog(iPlayerID, SPRAYTAG_CREATE, DIALOG_STYLE_LIST, "{F7EC6F}Spray Tag - {469BF0}Selecione um slot livre", szDialog, "Selecionar", "Voltar");
  278.         }
  279.         case TYPE_LIST_TAGS_FIND:
  280.         {
  281.             new
  282.                 szName[MAX_PLAYER_NAME]
  283.             ;
  284.                    
  285.             GetPlayerName(iPlayerID, szName, sizeof szName);
  286.                    
  287.             for(new i; i < MAX_PLAYERS_TAGS; i++)
  288.             {
  289.                 new szTag[24];
  290.                 format(szTag, sizeof szTag, "{F7EC6F}Livre");
  291.                 if(SprayTags[iPlayerID][i][_spPosX] != 0.0 && SprayTags[iPlayerID][i][_spPosY] != 0.0)
  292.                 {
  293.                     format(szTag, sizeof(szTag), "{F7EC6F}Spray Tag #%i", i);
  294.                 }
  295.                 format(szDialog, sizeof(szDialog), "%s%s\n", szDialog, szTag);
  296.             }
  297.             ShowPlayerDialog(iPlayerID, SPRAYTAG_FIND, DIALOG_STYLE_LIST, "{F7EC6F}Spray Tag - {469BF0}Selecione a tag que você deseja encontrar", szDialog, "Selecionar", "Voltar");
  298.         }
  299.     }
  300.     return 1;
  301. }
  302.  
  303. public OnPlayerEnterCheckpoint(playerid)
  304. {
  305.     if(spraytag_find[playerid])
  306.     {
  307.         SendClientMessage(playerid, -1, "Você chegou na sua spray tag.");
  308.         DisablePlayerCheckpoint(playerid);
  309.     }
  310.     return 1;
  311. }
  312.  
  313. public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
  314. {
  315.     switch(dialogid)
  316.     {
  317.         case SPRAYTAG_DIALOG_RETURN: SprayTag_Dialog(playerid, TYPE_LIST_MENU);
  318.         case SPRAYTAG_MENU:
  319.         {
  320.             if(!response) return 1;
  321.             switch(listitem)
  322.             {
  323.                 case 0:
  324.                 {
  325.                     SprayTag_Dialog(playerid, TYPE_LIST_TAGS_CREATE);
  326.                 }
  327.                 case 1: SprayTag_Dialog(playerid, TYPE_LIST_TAGS);
  328.                 case 2: SprayTag_Dialog(playerid, TYPE_LIST_TAGS_DELETE);
  329.                 case 3:  SprayTag_Dialog(playerid, TYPE_LIST_TAGS_FIND);
  330.             }
  331.         }
  332.         case SPRAYTAG_EDIT_MAIN:
  333.         {
  334.             if(!response) return SprayTag_Dialog(playerid, TYPE_LIST_MENU);
  335.             if(SprayTags[playerid][listitem][_spPosX] == 0.0)
  336.                 return ShowPlayerDialog(playerid, SPRAYTAG_DIALOG_RETURN, DIALOG_STYLE_MSGBOX, "{F7EC6F}Spray Tag - {BD0000} Ops!!", "Ops! Não tem nada nesse slot.", "Okay", "");
  337.                
  338.             spraytag_slot[playerid] = listitem;
  339.            
  340.             spraytag_bold[playerid] = SprayTags[playerid][listitem][_spBold];
  341.             spraytag_color[playerid] = SprayTags[playerid][listitem][_spFontColor];
  342.             format(spraytag_text[playerid], 50, SprayTags[playerid][listitem][_spText]);
  343.             format(spraytag_font[playerid], 50, SprayTags[playerid][listitem][_spFont]);
  344.             spraytag_size[playerid] = SprayTags[playerid][listitem][_spFontSize];
  345.             SprayTag_Dialog(playerid, TYPE_LIST_EDIT);
  346.         }
  347.         case SPRAYTAG_DELETE:
  348.         {
  349.             if(!response) return SprayTag_Dialog(playerid, TYPE_LIST_MENU);
  350.            
  351.             if(SprayTags[playerid][listitem][_spPosX] == 0.0)
  352.                 return ShowPlayerDialog(playerid, SPRAYTAG_DIALOG_RETURN, DIALOG_STYLE_MSGBOX, "{F7EC6F}Spray Tag - {BD0000} Ops!!", "Ops! Não tem nada nesse slot.", "Okay", "");
  353.                
  354.             new
  355.                 szMessage[60]
  356.             ;
  357.                
  358.             Tags_Clear(playerid, listitem);
  359.             format(szMessage, sizeof szMessage, "[Spray Tag] A spray tag #%i foi deletada com sucesso.", listitem);
  360.             SendClientMessage(playerid, -1, szMessage);
  361.             SprayTag_Dialog(playerid, TYPE_LIST_MENU);
  362.         }
  363.         case SPRAYTAG_FIND:
  364.         {
  365.             if(!response) return SprayTag_Dialog(playerid, TYPE_LIST_MENU);
  366.            
  367.             if(SprayTags[playerid][listitem][_spPosX] == 0.0)
  368.                 return ShowPlayerDialog(playerid, SPRAYTAG_DIALOG_RETURN, DIALOG_STYLE_MSGBOX, "{F7EC6F}Spray Tag - {BD0000} Ops!!", "Ops! Não tem nada nesse slot.", "Okay", "");
  369.                
  370.             new
  371.                 szMessage[60]
  372.             ;
  373.             spraytag_find[playerid] = SetPlayerCheckpoint(playerid, SprayTags[playerid][listitem][_spPosX], SprayTags[playerid][listitem][_spPosY], SprayTags[playerid][listitem][_spPosZ], 3.0);
  374.             format(szMessage, sizeof szMessage, "[Spray Tag] Um checkpoint foi marcado na sua spraytag #%i.", listitem);
  375.             SendClientMessage(playerid, -1, szMessage);
  376.         }
  377.         case SPRAYTAG_CREATE:
  378.         {
  379.             if(!response) return SprayTag_Dialog(playerid, TYPE_LIST_MENU);
  380.            
  381.             if(SprayTags[playerid][listitem][_spPosX] == 0.0)
  382.             {
  383.                 spraytag_slot[playerid] = listitem;
  384.                 format(spraytag_text[playerid], 50, "Exemplo");
  385.                 format(spraytag_font[playerid], 50, "Arial");
  386.                 spraytag_color[playerid] = -1;
  387.                 spraytag_size[playerid] = 24;
  388.                 spraytag_bold[playerid] = 0;
  389.                 SprayTag_Dialog(playerid, TYPE_LIST_CREATE);
  390.             } else ShowPlayerDialog(playerid, SPRAYTAG_DIALOG_RETURN, DIALOG_STYLE_MSGBOX, "{F7EC6F}Spray Tag - {BD0000} Ops!!", "Ops! Este slot já está sendo usado.", "Okay", "");
  391.         }
  392.         case SPRAYTAG_EDIT_LIST:
  393.         {
  394.             if(!response) return SprayTag_Dialog(playerid, TYPE_LIST_TAGS);
  395.            
  396.             new
  397.                 iIndex = spraytag_slot[playerid]
  398.             ;
  399.            
  400.             switch(listitem)
  401.             {
  402.                 case 0: ShowPlayerDialog(playerid, SPRAYTAG_EDIT_TEXT, DIALOG_STYLE_INPUT, "{F7EC6F}Spray Tag - {469BF0}Texto", "Digite o texto que você quer que aparece na Spray Tag", "Certo", "Voltar");
  403.                 case 1: ShowPlayerDialog(playerid, SPRAYTAG_EDIT_FONT, DIALOG_STYLE_LIST, "{F7EC6F}Spray Tag - {469BF0}Fonte", "Arial\nCourier\nImpact\nPricedown\nDaredevil\nBombing\naaaiight! fat\nFrom Street Art\nGhang\nGraffogie\nGraphers Blog\nNosegrind Demo", "Certo", "Voltar");
  404.                 case 2: ShowPlayerDialog(playerid, SPRAYTAG_EDIT_SIZE, DIALOG_STYLE_INPUT, "{F7EC6F}Spray Tag - {469BF0}Tamanho", "Digite o tamanho que você quer que aparece na Spray Tag", "Certo", "Voltar");
  405.                 case 3: ShowPlayerDialog(playerid, SPRAYTAG_EDIT_COLOR, DIALOG_STYLE_LIST, "{F7EC6F}Spray Tag - {469BF0}Cor", "{FF0000}Vermelho\n{04B404}Verde\n{00B5CD}Azul Claro\n{FFFF00}Amarelo\n{0000FF}Azul\n{848484}Cinza\n{FF00FF}Rosa\n{FFFFFF}Branco", "Certo", "Voltar");
  406.                 case 4:
  407.                 {
  408.                     switch(spraytag_bold[playerid])
  409.                     {
  410.                         case 0: spraytag_bold[playerid] = 1;
  411.                         case 1: spraytag_bold[playerid] = 0;
  412.                     }
  413.                     SprayTag_Dialog(playerid, TYPE_LIST_EDIT);
  414.                 }
  415.                 case 5:
  416.                 {
  417.                     EditDynamicObject(playerid, SprayTags[playerid][iIndex][_spObject]);
  418.                     SetPVarInt(playerid, "SPRAYTAG_EDIT", 2);
  419.                 }
  420.             }
  421.         }
  422.         case SPRAYTAG_EDIT_TEXT:
  423.         {
  424.             if(!response) return SprayTag_Dialog(playerid, TYPE_LIST_EDIT);
  425.             format(spraytag_text[playerid], 32, inputtext);
  426.             SprayTag_Dialog(playerid, TYPE_LIST_EDIT);
  427.         }
  428.         case SPRAYTAG_EDIT_FONT:
  429.         {
  430.             if(!response) return SprayTag_Dialog(playerid, TYPE_LIST_EDIT);
  431.             format(spraytag_font[playerid], 32, inputtext);
  432.             SprayTag_Dialog(playerid, TYPE_LIST_EDIT);
  433.         }
  434.         case SPRAYTAG_EDIT_SIZE:
  435.         {
  436.             if(!response) return SprayTag_Dialog(playerid, TYPE_LIST_EDIT);
  437.             spraytag_size[playerid] = strval(inputtext);
  438.             SprayTag_Dialog(playerid, TYPE_LIST_EDIT);
  439.         }
  440.         case SPRAYTAG_EDIT_COLOR:
  441.         {
  442.             if(!response) return SprayTag_Dialog(playerid, TYPE_LIST_EDIT);
  443.             new iColor;
  444.             switch(listitem)
  445.             {
  446.                 case 0: iColor = HexToInt("0xFFFF0000");
  447.                 case 1: iColor = HexToInt("0xFF04B404");
  448.                 case 2: iColor = HexToInt("0xFF00B5CD");
  449.                 case 3: iColor = HexToInt("0xFFFFFF00");
  450.                 case 4: iColor = HexToInt("0xFF0000FF");
  451.                 case 5: iColor = HexToInt("0xFF848484");
  452.                 case 6: iColor = HexToInt("0xFFFF00FF");
  453.                 case 7: iColor = HexToInt("0xFFFFFFFF");
  454.             }
  455.             spraytag_color[playerid] = iColor;
  456.             SprayTag_Dialog(playerid, TYPE_LIST_EDIT);
  457.         }
  458.        
  459.         case SPRAYTAG_CREATE_MAIN:
  460.         {
  461.             if(!response) return SprayTag_Dialog(playerid, TYPE_LIST_TAGS_CREATE);
  462.             switch(listitem)
  463.             {
  464.                 case 0: ShowPlayerDialog(playerid, SPRAYTAG_CREATE_TEXT, DIALOG_STYLE_INPUT, "{F7EC6F}Spray Tag - {469BF0}Texto", "Digite o texto que você quer que aparece na Spray Tag", "Certo", "Voltar");
  465.                 case 1: ShowPlayerDialog(playerid, SPRAYTAG_CREATE_FONT, DIALOG_STYLE_LIST, "{F7EC6F}Spray Tag - {469BF0}Fonte", "Arial\nCourier\nImpact\nPricedown\nDaredevil\nBombing\naaaiight! fat\nFrom Street Art\nGhang\nGraffogie\nGraphers Blog\nNosegrind Demo", "Certo", "Voltar");
  466.                 case 2: ShowPlayerDialog(playerid, SPRAYTAG_CREATE_SIZE, DIALOG_STYLE_INPUT, "{F7EC6F}Spray Tag - {469BF0}Tamanho", "Digite o tamanho que você quer que aparece na Spray Tag", "Certo", "Voltar");
  467.                 case 3: ShowPlayerDialog(playerid, SPRAYTAG_CREATE_COLOR, DIALOG_STYLE_LIST, "{F7EC6F}Spray Tag - {469BF0}Cor", "{FF0000}Vermelho\n{04B404}Verde\n{00B5CD}Azul Claro\n{FFFF00}Amarelo\n{0000FF}Azul\n{848484}Cinza\n{FF00FF}Rosa\n{FFFFFF}Branco", "Certo", "Voltar");
  468.                 case 4:
  469.                 {
  470.                     switch(spraytag_bold[playerid])
  471.                     {
  472.                         case 0: spraytag_bold[playerid] = 1;
  473.                         case 1: spraytag_bold[playerid] = 0;
  474.                     }
  475.                     SprayTag_Dialog(playerid, TYPE_LIST_CREATE);
  476.                 }
  477.                 case 5:
  478.                 {
  479.                     new
  480.                         Float:Position[3],
  481.                         szText[50],
  482.                         szFont[50]
  483.                     ;
  484.                    
  485.                     GetPlayerPos(playerid, Position[0], Position[1], Position[2]);
  486.                     format(szText, 50, spraytag_text[playerid]);
  487.                     format(szFont, 50, spraytag_font[playerid]);
  488.                    
  489.                     spraytag_object[playerid] = CreateDynamicObject(SPRAY_TAG_OBJECT, Position[0]-1.0, Position[1], Position[2], 0.0, 0.0, 0.0, GetPlayerVirtualWorld(playerid), GetPlayerInterior(playerid), -1, SPRAY_TAG_OBJECT_DISTANCE);
  490.                     SetDynamicObjectMaterialText(spraytag_object[playerid], 0, szText, OBJECT_MATERIAL_SIZE_512x512, szFont, spraytag_size[playerid], spraytag_bold[playerid], spraytag_color[playerid], 0, 1);
  491.                     EditDynamicObject(playerid, spraytag_object[playerid]);
  492.                     SetPVarInt(playerid, "SPRAYTAG_EDIT", 1);
  493.                 }
  494.             }
  495.         }
  496.         case SPRAYTAG_CREATE_TEXT:
  497.         {
  498.             if(!response) return SprayTag_Dialog(playerid, TYPE_LIST_CREATE);
  499.             format(spraytag_text[playerid], 50, inputtext);
  500.             SprayTag_Dialog(playerid, TYPE_LIST_CREATE);
  501.         }
  502.         case SPRAYTAG_CREATE_FONT:
  503.         {
  504.             if(!response) return SprayTag_Dialog(playerid, TYPE_LIST_CREATE);
  505.             format(spraytag_font[playerid], 50, inputtext);
  506.             SprayTag_Dialog(playerid, TYPE_LIST_CREATE);
  507.         }
  508.         case SPRAYTAG_CREATE_SIZE:
  509.         {
  510.             if(!response) return SprayTag_Dialog(playerid, TYPE_LIST_CREATE);
  511.             spraytag_size[playerid] = strval(inputtext);
  512.             SprayTag_Dialog(playerid, TYPE_LIST_CREATE);
  513.         }
  514.         case SPRAYTAG_CREATE_COLOR:
  515.         {
  516.             if(!response) return SprayTag_Dialog(playerid, TYPE_LIST_CREATE);
  517.             new iColor;
  518.             switch(listitem)
  519.             {
  520.                 case 0: iColor = HexToInt("0xFFFF0000");
  521.                 case 1: iColor = HexToInt("0xFF04B404");
  522.                 case 2: iColor = HexToInt("0xFF00B5CD");
  523.                 case 3: iColor = HexToInt("0xFFFFFF00");
  524.                 case 4: iColor = HexToInt("0xFF0000FF");
  525.                 case 5: iColor = HexToInt("0xFF848484");
  526.                 case 6: iColor = HexToInt("0xFFFF00FF");
  527.                 case 7: iColor = HexToInt("0xFFFFFFFF");
  528.             }
  529.             spraytag_color[playerid] = iColor;
  530.             SprayTag_Dialog(playerid, TYPE_LIST_CREATE);
  531.         }
  532.     }
  533.  
  534.     return 1;
  535. }
  536.  
  537. public OnPlayerEditDynamicObject(playerid, objectid, response, Float:x, Float:y, Float:z, Float:rx, Float:ry, Float:rz)
  538. {
  539.     if(response == EDIT_RESPONSE_FINAL)
  540.     {
  541.         if(GetPVarInt(playerid, "SPRAYTAG_EDIT") == 1)
  542.         {
  543.             if(!IsPlayerInRangeOfPoint(playerid, 3, x, y, z))
  544.             {
  545.                 DestroyDynamicObject(spraytag_object[playerid]);
  546.                 DeletePVar(playerid, "SPRAYTAG_EDIT");
  547.                 return SendClientMessage(playerid, -1, "Você não está perto da spray tag.");
  548.             }
  549.            
  550.             spraytag_positions[playerid][0] = x;
  551.             spraytag_positions[playerid][1] = y;
  552.             spraytag_positions[playerid][2] = z;
  553.             spraytag_positions[playerid][3] = rx;
  554.             spraytag_positions[playerid][4] = ry;
  555.             spraytag_positions[playerid][5] = rz;
  556.            
  557.             spraytag_timer[playerid] = SetTimerEx("SprayTag", 1000, true, "ii", playerid, 2);
  558.            
  559.             ApplyAnimation(playerid, "SPRAYCAN", "spraycan_full", 4.0, 1, 1, 1, 0, 0, 1);
  560.            
  561.             spraytag_timer_left[playerid] = SPRAY_TAG_TIMER;
  562.             DestroyDynamicObject(spraytag_object[playerid]);
  563.         }
  564.         if(GetPVarInt(playerid, "SPRAYTAG_EDIT") == 2)
  565.         {
  566.             new
  567.                 iIndex = spraytag_slot[playerid]
  568.             ;
  569.            
  570.             if(!IsPlayerInRangeOfPoint(playerid, 3, x, y, z))
  571.             {
  572.                 DestroyDynamicObject(SprayTags[playerid][iIndex][_spObject]);
  573.                 SprayTag_Spawn(playerid, iIndex);
  574.                 DeletePVar(playerid, "SPRAYTAG_EDIT");
  575.                 return SendClientMessage(playerid, -1, "Você não está perto da spray tag.");
  576.             }
  577.                
  578.             spraytag_positions[playerid][0] = x;
  579.             spraytag_positions[playerid][1] = y;
  580.             spraytag_positions[playerid][2] = z;
  581.             spraytag_positions[playerid][3] = rx;
  582.             spraytag_positions[playerid][4] = ry;
  583.             spraytag_positions[playerid][5] = rz;
  584.            
  585.             spraytag_timer[playerid] = SetTimerEx("SprayTag", 1000, true, "ii", playerid, 1);
  586.            
  587.             ApplyAnimation(playerid, "SPRAYCAN", "spraycan_full", 4.0, 1, 1, 1, 0, 0, 1);
  588.            
  589.             spraytag_timer_left[playerid] = SPRAY_TAG_TIMER;
  590.             DestroyDynamicObject(SprayTags[playerid][iIndex][_spObject]);
  591.         }
  592.     }
  593.     if(response == EDIT_RESPONSE_CANCEL)
  594.     {
  595.         if(GetPVarInt(playerid, "SPRAYTAG_EDIT") >= 1)
  596.         {
  597.             DestroyDynamicObject(spraytag_object[playerid]);
  598.             DestroyDynamicObject(SprayTags[playerid][spraytag_slot[playerid]][_spObject]);
  599.             SprayTag_Spawn(playerid, spraytag_slot[playerid]);
  600.             DeletePVar(playerid, "SPRAYTAG_EDIT");
  601.         }
  602.     }
  603.     return 1;
  604. }
  605.  
  606. forward SprayTag(playerid, type);
  607. public SprayTag(playerid, type)
  608. {
  609.     new
  610.         iIndex = spraytag_slot[playerid]
  611.     ;
  612.    
  613.     if(!IsPlayerConnected(playerid))
  614.     {
  615.         spraytag_timer_left[playerid] = 0;
  616.         DeletePVar(playerid, "SPRAYTAG_EDIT");
  617.         KillTimer(spraytag_timer[playerid]);
  618.         return 1;
  619.     }
  620.    
  621.     spraytag_timer_left[playerid]--;
  622.    
  623.     switch(type)
  624.     {
  625.         case 1:
  626.         {
  627.             if(spraytag_timer_left[playerid] == 0)
  628.             {
  629.                 DestroyDynamicObject(SprayTags[playerid][iIndex][_spObject]);
  630.                 DestroyDynamicObject(spraytag_object[playerid]);
  631.                
  632.                 format(SprayTags[playerid][iIndex][_spText], 50, spraytag_text[playerid]);
  633.                 format(SprayTags[playerid][iIndex][_spFont], 50, spraytag_font[playerid]);
  634.                
  635.                 SprayTags[playerid][iIndex][_spPosX] = spraytag_positions[playerid][0];
  636.                 SprayTags[playerid][iIndex][_spPosY] = spraytag_positions[playerid][1];
  637.                 SprayTags[playerid][iIndex][_spPosZ] = spraytag_positions[playerid][2];
  638.                 SprayTags[playerid][iIndex][_spPosRX] = spraytag_positions[playerid][3];
  639.                 SprayTags[playerid][iIndex][_spPosRY] = spraytag_positions[playerid][4];
  640.                 SprayTags[playerid][iIndex][_spPosRZ] = spraytag_positions[playerid][5];
  641.                 SprayTags[playerid][iIndex][_spFontColor] = spraytag_color[playerid];
  642.                 SprayTags[playerid][iIndex][_spFontSize] = spraytag_size[playerid];
  643.                 SprayTags[playerid][iIndex][_spBold] = spraytag_bold[playerid];
  644.                
  645.                 SprayTag_Spawn(playerid, iIndex);
  646.                 Tags_Save(playerid, iIndex);
  647.                
  648.                 ClearAnimations(playerid);
  649.                 ApplyAnimation(playerid, "GRAFFITI", "graffiti_Chkout", 4.0, 0, 0, 0, 0, 0, 1);
  650.                 KillTimer(spraytag_timer[playerid]);
  651.             }
  652.         }
  653.         case 2:
  654.         {
  655.             if(spraytag_timer_left[playerid] == 0)
  656.             {
  657.                 SprayTag_Create(playerid, spraytag_slot[playerid]);
  658.                 ClearAnimations(playerid);
  659.                 ApplyAnimation(playerid, "GRAFFITI", "graffiti_Chkout", 4.0, 0, 0, 0, 0, 0, 1);
  660.                 KillTimer(spraytag_timer[playerid]);
  661.             }
  662.         }
  663.     }
  664.     DeletePVar(playerid, "SPRAYTAG_EDIT");
  665.     return 1;
  666. }
  667.  
  668. /*
  669.     ##############################################################
  670.     ######################### COMMAND'S ##########################
  671.     ##############################################################
  672. */
  673.  
  674. /*CMD:loadtags(playerid)
  675. {
  676.     Tag_Load(playerid);
  677.     return 1;
  678. }*/
  679.  
  680. CMD:tags(playerid)
  681. {
  682.     if(IsPlayerConnected(playerid)) SprayTag_Dialog(playerid, TYPE_LIST_MENU);
  683.     return 1;
  684. }
  685.  
  686. /*
  687.     ##############################################################
  688.     ######################### STOCK'S ############################
  689.     ##############################################################
  690. */
  691.  
  692. stock SprayTag_Create(playerid, iIndex)
  693. {
  694.     if(IsPlayerConnected(playerid))
  695.     {
  696.         new
  697.             szMessage[128]
  698.         ;
  699.        
  700.         SprayTags[playerid][iIndex][_spPosX] = spraytag_positions[playerid][0];
  701.         SprayTags[playerid][iIndex][_spPosY] = spraytag_positions[playerid][1];
  702.         SprayTags[playerid][iIndex][_spPosZ] = spraytag_positions[playerid][2];
  703.         SprayTags[playerid][iIndex][_spPosRX] = spraytag_positions[playerid][3];
  704.         SprayTags[playerid][iIndex][_spPosRY] = spraytag_positions[playerid][4];
  705.         SprayTags[playerid][iIndex][_spPosRZ] = spraytag_positions[playerid][5];
  706.        
  707.         format(SprayTags[playerid][iIndex][_spText], 50, spraytag_text[playerid]);
  708.         format(SprayTags[playerid][iIndex][_spFont], 50, spraytag_font[playerid]);
  709.        
  710.         SprayTags[playerid][iIndex][_spFontColor] = spraytag_color[playerid];
  711.         SprayTags[playerid][iIndex][_spFontSize] = spraytag_size[playerid];
  712.         SprayTags[playerid][iIndex][_spBold] = spraytag_bold[playerid];
  713.        
  714.         SprayTag_Spawn(playerid, iIndex);
  715.         Tags_Save(playerid, iIndex);
  716.        
  717.         format(szMessage, sizeof szMessage, "[Spray Tag] Você criou uma spray tag com ID # %i.", iIndex);
  718.         SendClientMessage(playerid, -1, szMessage);
  719.     }
  720. }
  721.  
  722. stock SprayTag_Spawn(playerid, iIndex)
  723. {
  724.     SprayTags[playerid][iIndex][_spObject] = CreateDynamicObject(SPRAY_TAG_OBJECT, SprayTags[playerid][iIndex][_spPosX], SprayTags[playerid][iIndex][_spPosY], SprayTags[playerid][iIndex][_spPosZ], SprayTags[playerid][iIndex][_spPosRX], SprayTags[playerid][iIndex][_spPosRY], SprayTags[playerid][iIndex][_spPosRZ], SprayTags[playerid][iIndex][_spVW], SprayTags[playerid][iIndex][_spInt], -1, SPRAY_TAG_OBJECT_DISTANCE);
  725.     SetDynamicObjectMaterialText(SprayTags[playerid][iIndex][_spObject], 0, SprayTags[playerid][iIndex][_spText], OBJECT_MATERIAL_SIZE_512x512, SprayTags[playerid][iIndex][_spFont], SprayTags[playerid][iIndex][_spFontSize], SprayTags[playerid][iIndex][_spBold], SprayTags[playerid][iIndex][_spFontColor], 0, 1);
  726.     return 1;
  727. }
  728.  
  729. stock Tag_Load(playerid)
  730. {
  731.     if(IsPlayerConnected(playerid))
  732.     {
  733.         new
  734.             szFile[40],
  735.             szLine[28],
  736.             szName[MAX_PLAYER_NAME]
  737.         ;
  738.         GetPlayerName(playerid, szName, MAX_PLAYER_NAME);
  739.         format(szFile, 40, SPRAYTAG_FOLDER, szName);
  740.        
  741.         for(new i; i < MAX_PLAYERS_TAGS; i++)
  742.         {
  743.             format(szLine, sizeof szLine, "Text%i", i); format(SprayTags[playerid][i][_spText], 50, DOF2_GetString(szFile, szLine));
  744.             format(szLine, sizeof szLine, "Font%i", i); format(SprayTags[playerid][i][_spFont], 50, DOF2_GetString(szFile, szLine));
  745.             format(szLine, sizeof szLine, "FontSize%i", i); SprayTags[playerid][i][_spFontSize] = DOF2_GetInt(szFile, szLine);
  746.             format(szLine, sizeof szLine, "FontBold%i", i); SprayTags[playerid][i][_spBold] = DOF2_GetInt(szFile, szLine);
  747.             format(szLine, sizeof szLine, "FontColor%i", i); SprayTags[playerid][i][_spFontColor] = DOF2_GetInt(szFile, szLine);
  748.             format(szLine, sizeof szLine, "PosX%i", i); SprayTags[playerid][i][_spPosX] = DOF2_GetFloat(szFile, szLine);
  749.             format(szLine, sizeof szLine, "PosY%i", i); SprayTags[playerid][i][_spPosY] = DOF2_GetFloat(szFile, szLine);
  750.             format(szLine, sizeof szLine, "PosZ%i", i); SprayTags[playerid][i][_spPosZ] = DOF2_GetFloat(szFile, szLine);
  751.             format(szLine, sizeof szLine, "RotX%i", i); SprayTags[playerid][i][_spPosRX] = DOF2_GetFloat(szFile, szLine);
  752.             format(szLine, sizeof szLine, "RotY%i", i); SprayTags[playerid][i][_spPosRY] = DOF2_GetFloat(szFile, szLine);
  753.             format(szLine, sizeof szLine, "RotZ%i", i); SprayTags[playerid][i][_spPosRZ] = DOF2_GetFloat(szFile, szLine);
  754.             format(szLine, sizeof szLine, "VirtualWorld%i", i); SprayTags[playerid][i][_spVW] = DOF2_GetInt(szFile, szLine);
  755.             format(szLine, sizeof szLine, "Interior%i", i); SprayTags[playerid][i][_spInt] = DOF2_GetInt(szFile, szLine);
  756.            
  757.             if(SprayTags[playerid][i][_spPosX] != 0.0)
  758.             {
  759.                 SprayTag_Spawn(playerid, i);
  760.             }
  761.         }
  762.     }
  763.     return 1;
  764. }
  765.  
  766. stock Tags_Clear(playerid, iIndex)
  767. {
  768.     format(SprayTags[playerid][iIndex][_spText], 50, "Exemplo");
  769.     format(SprayTags[playerid][iIndex][_spFont], 50, "Arial");
  770.     SprayTags[playerid][iIndex][_spFontSize] = 24;
  771.     SprayTags[playerid][iIndex][_spBold] = 0;
  772.     SprayTags[playerid][iIndex][_spFontColor] = -1;
  773.     SprayTags[playerid][iIndex][_spPosX] = 0.0;
  774.     SprayTags[playerid][iIndex][_spPosY] = 0.0;
  775.     SprayTags[playerid][iIndex][_spPosZ] = 0.0;
  776.     SprayTags[playerid][iIndex][_spPosRX] = 0.0;
  777.     SprayTags[playerid][iIndex][_spPosRY] = 0.0;
  778.     SprayTags[playerid][iIndex][_spPosRZ] = 0.0;
  779.     SprayTags[playerid][iIndex][_spVW] = 0;
  780.     SprayTags[playerid][iIndex][_spInt] = 0;
  781.     DestroyDynamicObject(SprayTags[playerid][iIndex][_spObject]);
  782.     Tags_Save(playerid, iIndex);
  783.     return 1;
  784. }
  785.  
  786. stock Tags_Save(playerid, iIndex)
  787. {
  788.     if(IsPlayerConnected(playerid))
  789.     {
  790.         new
  791.             szFile[32],
  792.             szLine[128],
  793.             szName[MAX_PLAYER_NAME]
  794.         ;
  795.  
  796.         GetPlayerName(playerid, szName, MAX_PLAYER_NAME);
  797.         format(szFile, 32, SPRAYTAG_FOLDER, szName);
  798.         if(!DOF2_FileExists(szFile)) DOF2_CreateFile(szFile);
  799.         {
  800.             format(szLine, sizeof szLine, "Text%i", iIndex); DOF2_SetString(szFile, szLine, SprayTags[playerid][iIndex][_spText]);
  801.             format(szLine, sizeof szLine, "Font%i", iIndex); DOF2_SetString(szFile, szLine, SprayTags[playerid][iIndex][_spFont]);
  802.             format(szLine, sizeof szLine, "FontSize%i", iIndex); DOF2_SetInt(szFile, szLine, SprayTags[playerid][iIndex][_spFontSize]);
  803.             format(szLine, sizeof szLine, "FontBold%i", iIndex); DOF2_SetInt(szFile, szLine, SprayTags[playerid][iIndex][_spBold]);
  804.             format(szLine, sizeof szLine, "FontColor%i", iIndex); DOF2_SetInt(szFile, szLine, SprayTags[playerid][iIndex][_spFontColor]);
  805.             format(szLine, sizeof szLine, "PosX%i", iIndex); DOF2_SetFloat(szFile, szLine, SprayTags[playerid][iIndex][_spPosX]);
  806.             format(szLine, sizeof szLine, "PosY%i", iIndex); DOF2_SetFloat(szFile, szLine, SprayTags[playerid][iIndex][_spPosY]);
  807.             format(szLine, sizeof szLine, "PosZ%i", iIndex); DOF2_SetFloat(szFile, szLine, SprayTags[playerid][iIndex][_spPosZ]);
  808.             format(szLine, sizeof szLine, "RotX%i", iIndex); DOF2_SetFloat(szFile, szLine, SprayTags[playerid][iIndex][_spPosRX]);
  809.             format(szLine, sizeof szLine, "RotY%i", iIndex); DOF2_SetFloat(szFile, szLine, SprayTags[playerid][iIndex][_spPosRY]);
  810.             format(szLine, sizeof szLine, "RotZ%i", iIndex); DOF2_SetFloat(szFile, szLine, SprayTags[playerid][iIndex][_spPosRZ]);
  811.             format(szLine, sizeof szLine, "VirtualWorld%i", iIndex); DOF2_SetInt(szFile, szLine, SprayTags[playerid][iIndex][_spVW]);
  812.             format(szLine, sizeof szLine, "Interior%i", iIndex); DOF2_SetInt(szFile, szLine, SprayTags[playerid][iIndex][_spInt]);
  813.             DOF2_SaveFile();
  814.         }
  815.     }
  816.     return 1;
  817. }
  818.  
  819. stock HexToInt(string[]) // Created by Zamaroth
  820. {
  821.     if (string[0] == 0) return 0;
  822.    
  823.     new
  824.         i,
  825.         cur = 1,
  826.         res = 0
  827.     ;
  828.    
  829.     for (i = strlen(string); i > 0; i --) {
  830.         if (string[i-1] < 58) res = res + cur * (string[i-1]-48); else res = res + cur * (string[i-1]-65+10);
  831.         cur = cur * 16;
  832.     }
  833.     return res;
  834. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement