Advertisement
Guest User

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

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