Advertisement
Dayrion

[GTRP] Fs tag

Dec 21st, 2016
116
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pawn 22.43 KB | None | 0 0
  1. /*
  2.         -------------------------------------------
  3.         * Tag Filterscript made by Dayrion
  4.  
  5.         * Inclued required :
  6.             - a_samp    by SA:MP teams
  7.             - sscanf    by Y_Less
  8.             - streamer  by Incognito
  9.             - a_mysql   by BleuG
  10.                 - zcmd      by Zeex
  11.                 or
  12.                 - izcmd     by Yashas
  13.  
  14.         - /edittag [Tagid]
  15.             » Allows you edit any tag even if you are not in range
  16.         - /deltag [Tagid]
  17.             » Delete a tag
  18.         -------------------------------------------
  19. */
  20.  
  21. #include <a_samp>
  22. #include <sscanf>
  23. #include <streamer>
  24. //#include <a_mysql>
  25.  
  26. #tryinclude <zcmd>
  27. #if !defined CMD
  28.     #tryinclude <izcmd>
  29.     #if !defined CMD
  30.         #error "izcmd or zcmd can not be included."
  31.     #endif
  32. #endif
  33.  
  34. #define         RED_U               "{FF0000}"
  35. #define         WHITE_U             "{FFFFFF}"
  36. #define         BLUE_U              "{66A3FF}"
  37. #define         LBLUE_U             "{99D6FF}"
  38. #define         GREEN_U             "{39AC39}"
  39. #define         BROWN_U             "{9E3E3E}"
  40. #define         ORANGE_U            "{ffc34d}"
  41. #define         SAUMON_U            "{FF4D4D}"
  42. #define         RED                 0xFF0000FF
  43. #define         WHITE               0xFFFFFFFF
  44. #define         BLUE                0x99CCFFFF
  45. #define         LBLUE               0x99D6FFFF
  46. #define         GREEN               0x008000FF
  47. #define         BROWN               0x9E3E3EFF
  48. #define         SAUMON              0xFF4D4DFF
  49. #define         ORANGE              0xff6600FF
  50. #define         GOLD                0xFFBB33FF
  51.  
  52. #define         SCM                 SendClientMessage
  53. #define         PUBLIC:%0(%1)       forward %0(%1); public %0(%1)
  54. #define         MYSQL_HOST          "localhost"
  55. #define         MYSQL_USER          "root"
  56. #define         MYSQL_DATABASE      "myserver"
  57. #define         MYSQL_PASSWORD      ""
  58.  
  59. #define         OBJECT_WALL         19362
  60. #define         MAX_TAG             50  // total
  61. #define         INVALID_TAG_ID      MAX_TAG+1*4
  62. #define         MAX_TAG_PER_PLAYER  1  
  63. #define         TIME_SPRAY          2 // secondes
  64.  
  65. #define         MAX_POLICE_LENGTH   30 // caractères
  66. #define         MAX_TEXT_LENGTH     20 // caractères
  67. #define         FONT_SIZE           14
  68. #define         BOLD_TEXT           false
  69. #define         TEXT_ALIGNEMENT     1 // 0 : gauche | 1 : centré | 2 : droite
  70.  
  71. // ================================================================================================================================================================================================================================================
  72.  
  73. enum _:Dialog
  74. {
  75.     DIALOG_MODIFIER = 52,
  76.     DIALOG_TEXT,
  77.     DIALOG_MENU_CREER,
  78.     DIALOG_MENU_MODIFIER,
  79.     DIALOG_POLICE,
  80.     DIALOG_COLOR,
  81.     DIALOG_FIN
  82. };
  83.  
  84. //static MySQL:MySQL;
  85.  
  86. enum e_Tag
  87. {
  88.     tID,
  89.     tSQLIB,
  90.     tOwner[MAX_PLAYER_NAME],
  91.     tText[MAX_TEXT_LENGTH + EOS],
  92.     tPolice[MAX_POLICE_LENGTH + EOS],
  93.     tColor,
  94.     Float:tPosX,
  95.     Float:tPosY,
  96.     Float:tPosZ,
  97.     Float:tRX,
  98.     Float:tRY,
  99.     Float:tRZ,
  100.     tVW,
  101.     tInterior,
  102.     bool:tExist
  103. };
  104.  
  105. new p_Tag[MAX_TAG][e_Tag],
  106.     bool:Editing[MAX_PLAYERS],
  107.     TimeHold[MAX_PLAYERS],
  108.     bool:IsHolding[MAX_PLAYERS],
  109.     TagNumber,
  110.     CurrentTag[MAX_PLAYERS],
  111.     PlayerTag[MAX_PLAYERS];
  112.  
  113. // ================================================================================================================================================================================================================================================
  114.  
  115. public OnFilterScriptInit()
  116. {
  117.     print("\n--------------------------------------");
  118.     print(" [Initialization] Tag script by Dayrion");
  119.     print("--------------------------------------\n");
  120.  
  121.  
  122.     for(new i, j = MAX_PLAYERS; i < j; i++)
  123.     {
  124.         if(!IsPlayerConnected(i))
  125.             continue;
  126.  
  127.         IsHolding[i] = false;
  128.         TimeHold[i] = 0;
  129.         SetTagNumberForPlayer(i);
  130.     }
  131.  
  132. /*
  133.     new MySQLOpt: option_id = mysql_init_options();
  134.  
  135.     mysql_set_option(option_id, AUTO_RECONNECT, true);
  136.  
  137.     MySQL = mysql_connect(MYSQL_HOST, MYSQL_USER, MYSQL_PASSWORD, MYSQL_DATABASE, option_id);
  138.    
  139.     if(MySQL == MYSQL_INVALID_HANDLE || mysql_errno(MySQL) != 0)
  140.     {
  141.         print("[FS] Cannont connect to MySQL");
  142.         SendRconCommand("unloadfs tag");
  143.         return 1;
  144.     }
  145.  
  146.     new query[590];
  147.     format(query, sizeof(query), "CREATE TABLE IF NOT EXISTS `Tag` (`SQLIB` INTEGER PRIMARY KEY AUTO_INCREMENT, `ID` INT NOT NULL DEFAULT '0', `Owner` VARCHAR(25) NOT NULL DEFAULT '', `Text` VARCHAR(21) NOT NULL DEFAULT '', `x` FLOAT NOT NULL DEFAULT '0.0', `y` FLOAT NOT NULL DEFAULT '0.0', `z` FLOAT NOT NULL DEFAULT '0.0', `rX` FLOAT NOT NULL DEFAULT '0.0'");
  148.     strcat(query, ", `rY` FLOAT NOT NULL DEFAULT '0.0', `rZ` FLOAT NOT NULL DEFAULT '0.0', `Police` VARCHAR(31) NOT NULL DEFAULT '', `VirtualWorld` INT NOT NULL DEFAULT '0', `Interior` INT NOT NULL DEFAULT '0', `Exist` INT NOT NULL DEFAULT '0', `Color` INT NOT NULL DEFAULT '0')");
  149.     mysql_query(MySQL, query);
  150.     mysql_pquery(MySQL, "SELECT * FROM Tag", "OnTagLoading", "");   */
  151.  
  152.     return 1;
  153. }
  154.  
  155. public OnFilterScriptExit()
  156. {
  157.     for(new i, j = MAX_TAG; i < j; i++)
  158.     {
  159.         DestroyDynamicObject(p_Tag[i][tID]);
  160.         if(p_Tag[i][tExist])
  161.             SaveTag(i);
  162.     }
  163.     print("\n--------------------------------------");
  164.     print(" [Closing] Tag script unloaded");
  165.     print("--------------------------------------\n");
  166.     return 1;
  167. }
  168. /*
  169. PUBLIC:OnTagLoading()
  170. {
  171.     for(new i, tagid = 1, j = cache_num_rows(); i != j; i++, tagid++)
  172.     {
  173.         cache_get_value_int(i, "SQLIB", p_Tag[tagid][tSQLIB]);
  174.         cache_get_value(i, "Owner", p_Tag[tagid][tOwner], MAX_PLAYER_NAME);
  175.         cache_get_value(i, "Text", p_Tag[tagid][tText], MAX_TEXT_LENGTH);
  176.         cache_get_value_float(i, "x", p_Tag[tagid][tPosX]);
  177.         cache_get_value_float(i, "y", p_Tag[tagid][tPosY]);
  178.         cache_get_value_float(i, "z", p_Tag[tagid][tPosZ]);
  179.         cache_get_value_float(i, "rX", p_Tag[tagid][tRX]);
  180.         cache_get_value_float(i, "rY", p_Tag[tagid][tRY]);
  181.         cache_get_value_float(i, "rZ", p_Tag[tagid][tRZ]);
  182.         cache_get_value(i, "Police", p_Tag[tagid][tPolice], MAX_POLICE_LENGTH);
  183.         cache_get_value_int(i, "VirtualWorld", p_Tag[tagid][tVW]);
  184.         cache_get_value_int(i, "Color", p_Tag[tagid][tColor]);
  185.         cache_get_value_int(i, "Interior", p_Tag[tagid][tInterior]);
  186.         cache_get_value_int(i, "Exist", bool:p_Tag[tagid][tExist]);
  187.  
  188.         p_Tag[tagid][tID] = CreateDynamicObject(OBJECT_WALL, p_Tag[tagid][tPosX], p_Tag[tagid][tPosY], p_Tag[tagid][tPosZ], p_Tag[tagid][tRX], p_Tag[tagid][tRY], p_Tag[tagid][tRZ], p_Tag[tagid][tVW], p_Tag[tagid][tInterior]);
  189.         SetDynamicObjectMaterialText(p_Tag[tagid][tID], 0, p_Tag[tagid][tText], OBJECT_MATERIAL_SIZE_128x64, p_Tag[tagid][tPolice], FONT_SIZE, BOLD_TEXT, GetxColorByID(p_Tag[tagid][tColor]), _, TEXT_ALIGNEMENT);
  190.         printf("» Tag ID %i loaded.", tagid);
  191.         TagNumber++;
  192.     }
  193.  
  194.     for(new i, j = MAX_PLAYERS; i < j; i++)
  195.     {
  196.         if(!IsPlayerConnected(i))
  197.             continue;
  198.  
  199.         IsHolding[i] = false;
  200.         TimeHold[i] = 0;
  201.         SetTagNumberForPlayer(i);
  202.     }
  203.     printf("\n[Initialization] Loading ended. %i tag loaded.", TagNumber);
  204. }*/
  205.  
  206. // ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
  207.  
  208. public OnPlayerConnect(playerid)
  209. {      
  210.     IsHolding[playerid] = false;
  211.     TimeHold[playerid] = 0;
  212.     SetTagNumberForPlayer(playerid);
  213.     return 1;
  214. }
  215.  
  216. // ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
  217.  
  218. public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
  219. {
  220.     if(dialogid == DIALOG_MODIFIER)
  221.     {
  222.         if(response)
  223.         {
  224.             switch(listitem)
  225.             {
  226.                 case 0: ShowPlayerDialog(playerid, DIALOG_TEXT, DIALOG_STYLE_INPUT, "Message", "Entrez le texte du tag (19 caractères max.)", "Ok", "Annulez");
  227.                 case 1: ShowPlayerDialog(playerid, DIALOG_POLICE, DIALOG_STYLE_LIST, "Choisissez la police", "» Arial\n» Comic Sans MS\n» Microsoft Sans Serif\n» Adobe Devanagari\n» Brush Script Std\n» GrilledCheese BTN Toasted", "Choisir", "Annulez");
  228.                 case 2: ShowPlayerDialog(playerid, DIALOG_COLOR, DIALOG_STYLE_LIST, "Choisissez la couleur", RED_U"» Rouge\n"BLUE_U"» Bleu\n"GREEN_U"» Vert\n"BROWN_U"» Marron\n"ORANGE_U"» Orange", "Choisir", "Annulez");
  229.                 case 3: ReloadTag(CurrentTag[playerid]), EditDynamicObject(playerid, p_Tag[CurrentTag[playerid]][tID]);
  230.                 case 4: ReloadTag(CurrentTag[playerid]), Editing[playerid] = false;
  231.                 default: printf("Debug ~ Erreur DIALOG_MODIFIER (Playerid:%i)", playerid);
  232.             }
  233.         }
  234.         else if(!Editing[playerid])
  235.             CancelTag(playerid);
  236.         else
  237.             return 1;
  238.     }
  239.  
  240.     if(dialogid == DIALOG_TEXT)
  241.     {
  242.         if(response)
  243.         {
  244.             if(strlen(inputtext) > 19)
  245.                 return SCM(playerid, RED, "[Erreur] {ffffff}Le texte ne peut pas faire plus de 19 carractères.");
  246.  
  247.             format(p_Tag[CurrentTag[playerid]][tText], 20, inputtext);
  248.             if(!Editing[playerid])
  249.                 ShowPlayerDialog(playerid, DIALOG_POLICE, DIALOG_STYLE_LIST, "Choisissez la police", "» Arial\n» Comic Sans MS\n» Microsoft Sans Serif\n» Adobe Devanagari\n» Brush Script Std\n» GrilledCheese BTN Toasted", "Choisir", "Annulez");
  250.             else
  251.                 ShowPlayerDialog(playerid, DIALOG_MODIFIER, DIALOG_STYLE_LIST, "Modifier votre tag", "- Entrez le texte du tag\n- Choisissez la police\n- Choisissez la couleur\n- Position\n- Confirm", "Ok", "");
  252.            
  253.         }
  254.         else if(!Editing[playerid])
  255.             CancelTag(playerid);
  256.         else
  257.             return 1;
  258.     }
  259.  
  260.     if(dialogid == DIALOG_POLICE)
  261.     {
  262.         if(response)
  263.         {
  264.             switch(listitem)
  265.             {
  266.                 case 0: format(p_Tag[CurrentTag[playerid]][tPolice], 30, "Arial");
  267.                 case 1: format(p_Tag[CurrentTag[playerid]][tPolice], 30, "Comic Sans MS");
  268.                 case 2: format(p_Tag[CurrentTag[playerid]][tPolice], 30, "Microsoft Sans Serif");
  269.                 case 3: format(p_Tag[CurrentTag[playerid]][tPolice], 30, "Adobe Devanagari");
  270.                 case 4: format(p_Tag[CurrentTag[playerid]][tPolice], 30, "Brush Script Std");
  271.                 case 5: format(p_Tag[CurrentTag[playerid]][tPolice], 30, "GrilledCheese BTN Toasted");
  272.                 default : format(p_Tag[CurrentTag[playerid]][tPolice], 30, "Arial");
  273.             }
  274.             if(!Editing[playerid])
  275.                 ShowPlayerDialog(playerid, DIALOG_COLOR, DIALOG_STYLE_LIST, "Choisissez la couleur", RED_U"» Rouge\n"BLUE_U"» Bleu\n"GREEN_U"» Vert\n"BROWN_U"» Marron\n"ORANGE_U"» Orange", "Choisir", "Annulez");
  276.             else
  277.                 ShowPlayerDialog(playerid, DIALOG_MODIFIER, DIALOG_STYLE_LIST, "Modifier votre tag", "- Entrez le texte du tag\n- Choisissez la police\n- Choisissez la couleur\n- Position\n- Confirm", "Ok", "");
  278.         }
  279.         else if(!Editing[playerid])
  280.             CancelTag(playerid);
  281.         else
  282.             return 1;
  283.     }
  284.  
  285.     if(dialogid == DIALOG_COLOR)
  286.     {
  287.         if(response)
  288.         {
  289.             p_Tag[CurrentTag[playerid]][tColor] = listitem;
  290.  
  291.             if(!Editing[playerid])
  292.             {  
  293.                 new string[110];
  294.                 format(string, sizeof(string), "- [ID] %i | [Text] \"%s\" | [Police] \"%s\" | Color: %s", p_Tag[CurrentTag[playerid]][tID], p_Tag[CurrentTag[playerid]][tText], p_Tag[CurrentTag[playerid]][tPolice], GetColorByID(p_Tag[CurrentTag[playerid]][tColor]));
  295.                 ShowPlayerDialog(playerid, DIALOG_FIN, DIALOG_STYLE_MSGBOX, "Recap", string, "Ok", "Annulez");
  296.             }
  297.             else
  298.                 ShowPlayerDialog(playerid, DIALOG_MODIFIER, DIALOG_STYLE_LIST, "Modifier votre tag", "- Entrez le texte du tag\n- Choisissez la police\n- Choisissez la couleur\n- Position\n- Confirm", "Ok", "");
  299.         }
  300.  
  301.         else if(!Editing[playerid])
  302.             CancelTag(playerid);
  303.         else
  304.             return 1;
  305.     }
  306.  
  307.     if(dialogid == DIALOG_FIN)
  308.     {
  309.         if(response)
  310.         {
  311.             new Float:x,
  312.                 Float:y,
  313.                 Float:z;
  314.  
  315.             GetPlayerPos(playerid, x, y, z);
  316.             p_Tag[CurrentTag[playerid]][tID] = CreateDynamicObject(OBJECT_WALL, x+1.0, y+1.0, z, 0.0, 0.0, 0.0, (p_Tag[CurrentTag[playerid]][tVW] = GetPlayerVirtualWorld(playerid)), (p_Tag[CurrentTag[playerid]][tInterior] = GetPlayerInterior(playerid)));
  317.             Editing[playerid] = true;
  318.             SetDynamicObjectMaterialText(p_Tag[CurrentTag[playerid]][tID], 0, p_Tag[CurrentTag[playerid]][tText], OBJECT_MATERIAL_SIZE_128x64, p_Tag[CurrentTag[playerid]][tPolice], FONT_SIZE, BOLD_TEXT, GetxColorByID(p_Tag[CurrentTag[playerid]][tColor]), _, TEXT_ALIGNEMENT);
  319.             EditDynamicObject(playerid, p_Tag[CurrentTag[playerid]][tID]);
  320.             return 1;
  321.         }
  322.  
  323.         else if(!Editing[playerid])
  324.             CancelTag(playerid);
  325.         else
  326.             return 1;
  327.     }
  328.     return 1;
  329. }
  330.  
  331. // ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
  332.  
  333. public OnPlayerEditDynamicObject(playerid, objectid, response, Float:x, Float:y, Float:z, Float:rx, Float:ry, Float:rz)
  334. {
  335.     if(Editing[playerid] && response == EDIT_RESPONSE_FINAL)
  336.     {
  337.         p_Tag[CurrentTag[playerid]][tPosX] = x;
  338.         p_Tag[CurrentTag[playerid]][tPosY] = y;
  339.         p_Tag[CurrentTag[playerid]][tPosZ] = z;
  340.         p_Tag[CurrentTag[playerid]][tRX] = rx;
  341.         p_Tag[CurrentTag[playerid]][tRY] = ry;
  342.         p_Tag[CurrentTag[playerid]][tRZ] = rz;
  343.         Editing[playerid] = false;
  344.         DestroyDynamicObject(p_Tag[CurrentTag[playerid]][tID]);
  345.         p_Tag[CurrentTag[playerid]][tID] = CreateDynamicObject(OBJECT_WALL, x, y, z, rx, ry, rz, (p_Tag[CurrentTag[playerid]][tVW] = GetPlayerVirtualWorld(playerid)), (p_Tag[CurrentTag[playerid]][tInterior] = GetPlayerInterior(playerid)));
  346.         SetDynamicObjectMaterialText(p_Tag[CurrentTag[playerid]][tID], 0, p_Tag[CurrentTag[playerid]][tText], OBJECT_MATERIAL_SIZE_128x64, p_Tag[CurrentTag[playerid]][tPolice], FONT_SIZE, BOLD_TEXT, GetxColorByID(p_Tag[CurrentTag[playerid]][tColor]), _, TEXT_ALIGNEMENT);
  347.  
  348.         if(!p_Tag[CurrentTag[playerid]][tExist])
  349.         {
  350.             new query[400],
  351.                 name[MAX_PLAYER_NAME];
  352.             GetPlayerName(playerid, name, sizeof(name));
  353.             //mysql_format(MySQL, query, sizeof(query), "INSERT INTO `Tag` (`Owner`, `Text`) VALUES ('%s', '%s')", name, p_Tag[CurrentTag[playerid]][tText]);
  354.             p_Tag[CurrentTag[playerid]][tExist] = true;
  355.             format(p_Tag[CurrentTag[playerid]][tOwner], MAX_PLAYER_NAME, "%s", name);
  356.             //mysql_tquery(MySQL, query, "OnTagCreated", "i", CurrentTag[playerid]);
  357.             PlayerTag[playerid]++;
  358.             TagNumber++;
  359.         }
  360.         else
  361.             SaveTag(CurrentTag[playerid]);
  362.     }
  363. }
  364. /*
  365. PUBLIC:OnTagCreated(tagid)
  366. {
  367.     p_Tag[tagid][tSQLIB] = cache_insert_id();
  368.     SaveTag(tagid);
  369. }
  370. */
  371. // ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
  372.  
  373. #define IsHolding(%0) \
  374.     ((newkeys & (%0)) == (%0))
  375.  
  376. public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
  377. {
  378.     if(IsHolding(KEY_FIRE))
  379.     {
  380.         TimeHold[playerid] = gettime();
  381.         IsHolding[playerid] = true;
  382.     }
  383.     else if(IsHolding[playerid] && (gettime() - TimeHold[playerid]) >= TIME_SPRAY && GetPlayerWeapon(playerid) == 41)
  384.     {
  385.         IsHolding[playerid] = false;
  386.         if((CurrentTag[playerid] = GetNearestTag(playerid)) != INVALID_TAG_ID)
  387.         {
  388.             Editing[playerid] = true;
  389.             ShowPlayerDialog(playerid, DIALOG_MODIFIER, DIALOG_STYLE_LIST, "Modifier votre tag", "- Entrez le texte du tag\n- Choisissez la police\n- Choisissez la couleur\n- Position\n- Confirm", "Ok", "");
  390.             return 1;
  391.         }
  392.         else
  393.         {
  394.             CurrentTag[playerid] = GetFreeTagSlot();
  395.             if(PlayerTag[playerid] >= MAX_TAG_PER_PLAYER)
  396.                 return SCM(playerid, RED, "[Erreur] {ffffff}Vous ne pouvez plus créer de tag (limite atteinte).");
  397.             if(TagNumber+1 < MAX_TAG)
  398.                 ShowPlayerDialog(playerid, DIALOG_TEXT, DIALOG_STYLE_INPUT, "Message", "Enter the text's tag", "Ok", "Annulez");               
  399.             else
  400.                 return CurrentTag[playerid] = 0, SCM(playerid, RED, "Le nombre de tag sur le serveur a atteint sa limite.");
  401.             return 1;
  402.         }
  403.     }
  404.     else
  405.     {
  406.         TimeHold[playerid] = 0;
  407.         IsHolding[playerid] = false;
  408.     }
  409.     return 1;
  410. }
  411.  
  412. // ================================================================================================================================================================================================================================================
  413.  
  414. public OnPlayerSpawn(playerid)
  415. {
  416.     GivePlayerWeapon(playerid, 41, 99999);
  417.     return 1;
  418. }
  419.  
  420. public OnPlayerCommandText(playerid, cmdtext[])
  421. {
  422.     if(!strcmp(cmdtext, "/edittag"))
  423.     {
  424.         if(!IsPlayerAdmin(playerid))
  425.             return 0;
  426.  
  427.         if(sscanf(cmdtext, "i", CurrentTag[playerid]))
  428.             return SCM(playerid, LBLUE, "/edittag [TagID]");
  429.         if(!p_Tag[CurrentTag[playerid]][tExist])
  430.             return SCM(playerid, RED, "[Erreur] {ffffff}ID de tag incorrect.");
  431.         Editing[playerid] = true;
  432.  
  433.         ShowPlayerDialog(playerid, DIALOG_MODIFIER, DIALOG_STYLE_LIST, "Modifier votre tag", "- Entrez le cmdtexte du tag\n- Choisissez la police\n- Choisissez la couleur\n- Position\n- Confirm", "Ok", "");
  434.         return 1;  
  435.     }
  436.  
  437.     else if(!strcmp(cmdtext, "/deltag"))
  438.     {
  439.         if(!IsPlayerAdmin(playerid))
  440.             return 0;
  441.  
  442.         new tagid;
  443.  
  444.         if(sscanf(cmdtext, "i", tagid))
  445.             return SCM(playerid, LBLUE, "/deltag [TagID]");
  446.  
  447.         if(!p_Tag[tagid][tExist])
  448.             return SCM(playerid, RED, "[Erreur] {ffffff}ID de tag incorrect.");
  449.         new
  450.             name[MAX_PLAYER_NAME];
  451.        
  452.         DestroyDynamicObject(p_Tag[tagid][tID]);
  453.  
  454.         for(new i; i < MAX_PLAYERS; i++)
  455.         {
  456.             if(!IsPlayerConnected(i))
  457.                 continue;
  458.             GetPlayerName(i, name, sizeof(name));
  459.             if(!strcmp(p_Tag[tagid][tOwner], name))
  460.             {
  461.                 PlayerTag[i]--;
  462.                 break;
  463.             }
  464.         }
  465.         // new query[45];
  466.         // mysql_format(MySQL, query, sizeof(query), "DELETE FROM `Tag` WHERE `SQLIB` = '%d'", p_Tag[tagid][tSQLIB]);
  467.         // mysql_query(MySQL, query, false);
  468.         CurrentTag[playerid] = tagid;
  469.         CancelTag(playerid);
  470.         SCM(playerid, GREEN, "Tag supprimé.");
  471.         return 1;
  472.     }
  473.     return 1;
  474. }
  475.  
  476. /*
  477. CMD:edittag(playerid, params[])
  478. {
  479.     if(!IsPlayerAdmin(playerid))
  480.         return 0;
  481.  
  482.     if(sscanf(params, "i", CurrentTag[playerid]))
  483.         return SCM(playerid, LBLUE, "/edittag [TagID]");
  484.     if(!p_Tag[CurrentTag[playerid]][tExist])
  485.         return SCM(playerid, RED, "[Erreur] {ffffff}ID de tag incorrect.");
  486.     Editing[playerid] = true;
  487.  
  488.     ShowPlayerDialog(playerid, DIALOG_MODIFIER, DIALOG_STYLE_LIST, "Modifier votre tag", "- Entrez le texte du tag\n- Choisissez la police\n- Choisissez la couleur\n- Position\n- Confirm", "Ok", "");
  489.     return 1;
  490. }
  491.  
  492. CMD:deltag(playerid, params[])
  493. {
  494.     if(!IsPlayerAdmin(playerid))
  495.         return 0;
  496.  
  497.     new tagid;
  498.  
  499.     if(sscanf(params, "i", tagid))
  500.         return SCM(playerid, LBLUE, "/deltag [TagID]");
  501.  
  502.     if(!p_Tag[tagid][tExist])
  503.         return SCM(playerid, RED, "[Erreur] {ffffff}ID de tag incorrect.");
  504.     new
  505.         name[MAX_PLAYER_NAME];
  506.    
  507.     DestroyDynamicObject(p_Tag[tagid][tID]);
  508.  
  509.     for(new i; i < MAX_PLAYERS; i++)
  510.     {
  511.         if(!IsPlayerConnected(i))
  512.             continue;
  513.         GetPlayerName(i, name, sizeof(name));
  514.         if(!strcmp(p_Tag[tagid][tOwner], name))
  515.         {
  516.             PlayerTag[i]--;
  517.             break;
  518.         }
  519.     }
  520.     // new query[45];
  521.     // mysql_format(MySQL, query, sizeof(query), "DELETE FROM `Tag` WHERE `SQLIB` = '%d'", p_Tag[tagid][tSQLIB]);
  522.     // mysql_query(MySQL, query, false);
  523.     CurrentTag[playerid] = tagid;
  524.     CancelTag(playerid);
  525.     SCM(playerid, GREEN, "Tag supprimé.");
  526.     return 1;
  527. }*/
  528.  
  529. // ================================================================================================================================================================================================================================================
  530.  
  531. ReloadTag(tagid)
  532. {
  533.     if(!p_Tag[tagid][tExist])
  534.         return printf("[Erreur] Tag ID %i doesn't exist.", tagid);
  535.  
  536.     DestroyDynamicObject(p_Tag[tagid][tID]);
  537.     p_Tag[tagid][tID] = CreateDynamicObject(OBJECT_WALL, p_Tag[tagid][tPosX], p_Tag[tagid][tPosY], p_Tag[tagid][tPosZ], p_Tag[tagid][tRX], p_Tag[tagid][tRY], p_Tag[tagid][tRZ], p_Tag[tagid][tVW], p_Tag[tagid][tInterior]);
  538.     SetDynamicObjectMaterialText(p_Tag[tagid][tID], 0, p_Tag[tagid][tText], OBJECT_MATERIAL_SIZE_128x64, p_Tag[tagid][tPolice], FONT_SIZE, BOLD_TEXT, GetxColorByID(p_Tag[tagid][tColor]), _, TEXT_ALIGNEMENT);
  539.     return 1;
  540. }
  541.  
  542. SetTagNumberForPlayer(playerid)
  543. {
  544.     new Name[MAX_PLAYER_NAME];
  545.     GetPlayerName(playerid, Name, MAX_PLAYER_NAME);
  546.     for(new i; i < TagNumber; i++)
  547.     {
  548.         if(!p_Tag[i][tExist])
  549.             continue;
  550.  
  551.         if(!strcmp(p_Tag[i][tOwner], Name))
  552.             PlayerTag[playerid]++;
  553.     }
  554.     return 1;
  555. }
  556.  
  557. GetNearestTag(playerid, Float:range = 5.0)
  558. {
  559.     new Float:distance = 999.0,
  560.         tag = INVALID_TAG_ID,
  561.         Float:a;
  562.  
  563.     for(new i; i <= TagNumber; i++)
  564.     {
  565.         if(!p_Tag[i][tExist])
  566.             continue;
  567.         a = GetPlayerDistanceFromPoint(playerid, p_Tag[i][tPosX], p_Tag[i][tPosY], p_Tag[i][tPosZ]);
  568.         if(a > distance && a < range || a > range)
  569.             continue;
  570.         else
  571.             distance = a, tag = i;
  572.     }
  573.     return tag;
  574. }
  575.  
  576. GetFreeTagSlot()
  577. {
  578.     for(new i=1; i < MAX_TAG; i++)
  579.     {
  580.         if(!p_Tag[i][tExist])
  581.             return i;
  582.     }
  583.     return INVALID_TAG_ID;
  584. }
  585.  
  586. SaveTag(tagid)
  587. {
  588.     return 1;
  589.     // new query[400 + EOS];
  590.     // strcat(query, "UPDATE `Tag` SET `Owner` = '%s', `Text` = '%s', `Color` = '%d', `x` = '%f', `y` = '%f', `z` = '%f', `rX` = '%f', `rY` = '%f',`rZ` = '%f', `VirtualWorld` = '%d', `Interior` = '%d', `Exist` = '%d', `ID` = '%d', `Police` = '%s' WHERE `SQLIB` = '%d'");
  591.     // mysql_format(MySQL, query, sizeof(query), query, p_Tag[tagid][tOwner], p_Tag[tagid][tText], p_Tag[tagid][tColor], p_Tag[tagid][tPosX], p_Tag[tagid][tPosY], p_Tag[tagid][tPosZ], p_Tag[tagid][tRX], p_Tag[tagid][tRY], p_Tag[tagid][tRZ], p_Tag[tagid][tVW], p_Tag[tagid][tInterior], _:p_Tag[tagid][tExist], p_Tag[tagid][tID], p_Tag[tagid][tPolice], p_Tag[tagid][tSQLIB]);
  592.     // mysql_query(MySQL, query);
  593.     // return 1;
  594. }
  595.  
  596. CancelTag(playerid)
  597. {
  598.     p_Tag[CurrentTag[playerid]][tID] = 0;
  599.     p_Tag[CurrentTag[playerid]][tSQLIB] = 0;
  600.     p_Tag[CurrentTag[playerid]][tColor] = -1;
  601.     p_Tag[CurrentTag[playerid]][tPosX] = 0.0;
  602.     p_Tag[CurrentTag[playerid]][tPosY] = 0.0;
  603.     p_Tag[CurrentTag[playerid]][tPosZ] = 0.0;
  604.     p_Tag[CurrentTag[playerid]][tRX] = 0.0;
  605.     p_Tag[CurrentTag[playerid]][tRY] = 0.0;
  606.     p_Tag[CurrentTag[playerid]][tRZ] = 0.0;
  607.     p_Tag[CurrentTag[playerid]][tVW] = 0;
  608.     p_Tag[CurrentTag[playerid]][tInterior] = 0;
  609.     p_Tag[CurrentTag[playerid]][tExist] = false;
  610.     Editing[playerid] = false;
  611.     format(p_Tag[CurrentTag[playerid]][tText], 20, "%s", EOS);
  612.     format(p_Tag[CurrentTag[playerid]][tOwner], 24, "%s", EOS);
  613.     format(p_Tag[CurrentTag[playerid]][tPolice], 30, "%s", EOS);
  614. }
  615.  
  616. GetxColorByID(colorid)
  617. {
  618.     switch(colorid)
  619.     {
  620.         case 0: return 0xFFFF0000;
  621.         case 1: return 0xFF99CCFF;
  622.         case 2: return 0xFF008000;
  623.         case 3: return 0xFF9E3E3E;
  624.         case 4: return 0xFFFF6600;
  625.     }
  626.     return 1;
  627. }
  628.  
  629. GetColorByID(colorid)
  630. {
  631.     static colorstr[50] = WHITE_U"Unknown";
  632.     switch(colorid)
  633.     {
  634.         case 0:
  635.         {
  636.             format(colorstr, sizeof(colorstr), RED_U"Rouge");
  637.             return colorstr;
  638.         }
  639.         case 1:
  640.         {
  641.             format(colorstr, sizeof(colorstr), BLUE_U"Bleu");
  642.             return colorstr;
  643.         }
  644.         case 2:
  645.         {
  646.             format(colorstr, sizeof(colorstr), GREEN_U"Vert");
  647.             return colorstr;
  648.         }
  649.         case 3:
  650.         {
  651.             format(colorstr, sizeof(colorstr), BROWN_U"Marron");
  652.             return colorstr;
  653.         }
  654.         case 4:
  655.         {
  656.             format(colorstr, sizeof(colorstr), ORANGE_U"Orange");
  657.             return colorstr;
  658.         }
  659.     }
  660.     return colorstr;
  661. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement