Chris53340

Panneau Publicitaire

Nov 2nd, 2014
375
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pawn 6.76 KB | None | 0 0
  1. /*
  2.         Fait par Christopher
  3.         Panneau publicitaire
  4. */
  5.  
  6. #include <a_samp>
  7.  
  8. #define NULLBYTE 1
  9. #define MAX_PANNEAU 200 // Nombre maximum de panneau publicitaire
  10. #define DIALOGUE_TEXTE 1 // dialogid
  11.  
  12. enum PPub {
  13.     p_PiD,
  14.     p_Text[25],
  15.     Float:p_PosX,
  16.     Float:p_PosY,
  17.     Float:p_PosZ,
  18.     Float:p_RotX,
  19.     Float:p_RotY,
  20.     Float:p_RotZ,
  21.     p_Createur[MAX_PLAYER_NAME+NULLBYTE]
  22. }
  23. new Addon[3][MAX_PANNEAU];
  24.  
  25.  
  26. new Publicitaire[MAX_PANNEAU][PPub], PanneauObject[MAX_PANNEAU], IDPanneauProvisoire[MAX_PLAYERS], PlayerName[MAX_PLAYER_NAME+NULLBYTE];
  27.  
  28. public OnPlayerCommandText(playerid, cmdtext[]) {
  29.     new cmd[128], idx;
  30.     cmd = strtok(cmdtext, idx);
  31.     if(!strcmp(cmd, "/panneau", true)) {
  32.         new subcmd[128];
  33.         subcmd = strtok(cmdtext, idx);
  34.         if(!strlen(subcmd)) {
  35.             if(IsPlayerAdmin(playerid)) SendClientMessage(playerid, -1, "[Commande]: /panneau [Creer/Modifier/Supprimer]");
  36.             else SendClientMessage(playerid, -1, "[Commande]: /panneau [Creer/Modifier]");
  37.         }
  38.         else if(strcmp(subcmd,"creer",true) == 0) {
  39.             for(new i=0; i<MAX_PANNEAU; i++) {
  40.                 if(!IsValidObject(PanneauObject[i])) {
  41.                     new Float:X, Float:Y, Float:Z;
  42.                     GetPlayerPos(playerid, X, Y, Z);
  43.                     PanneauObject[i] = CreateObject(19482, X+1, Y, Z, 0.00000, 0.00000, 0.00000);
  44.                     IDPanneauProvisoire[playerid] = i;
  45.  
  46.                     Addon[0][i] = CreateObject(1260, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000);
  47.                     Addon[1][i] = CreateObject(4735, 0.00000, 0.00000, 0.00000,   0.00000, 0.00000, 0.60000);
  48.                     SetObjectMaterialText(Addon[1][i], "Votre Publicité", 0, OBJECT_MATERIAL_SIZE_256x32, "Calibri", 15, 0, 0xFF000000, 0xFFFFFFFF, OBJECT_MATERIAL_TEXT_ALIGN_CENTER);
  49.                     Addon[2][i] = CreateObject(4735, 0.00000, 0.00000, 0.00000,   0.00000, 0.00000, 180.60001);
  50.                     SetObjectMaterialText(Addon[2][i], "Votre Publicité", 0, OBJECT_MATERIAL_SIZE_256x32, "Calibri", 15, 0, 0xFF000000, 0xFFFFFFFF, OBJECT_MATERIAL_TEXT_ALIGN_CENTER);
  51.                     AttachObjectToObject(Addon[0][i], PanneauObject[i], 0.00000, 0.00000, 0.00000,   0.00000, 0.00000, 0.0000);
  52.                     AttachObjectToObject(Addon[1][i], PanneauObject[i], 0.35799, 0.09278, 5.36258,   0.00000, 0.00000, 0.60000);
  53.                     AttachObjectToObject(Addon[2][i], PanneauObject[i], 0.73180, 0.09280, 5.36260,   0.00000, 0.00000, 180.60001);
  54.  
  55.                     EditObject(playerid, PanneauObject[i]);
  56.                     return 1;
  57.                
  58.                 } else {
  59.                     SendClientMessage(playerid, -1, "Le nombre de panneau autoriser à été dépassé!");
  60.                     return 1;
  61.                 }
  62.             }
  63.             return 1;
  64.         }
  65.         else if(strcmp(subcmd,"modifier",true) == 0)
  66.         {
  67.             new Float:X, Float:Y, Float:Z;
  68.             GetPlayerPos(playerid, X, Y, Z);
  69.             GetPlayerName(playerid, PlayerName, sizeof(PlayerName));
  70.             for(new i = 0; i <MAX_PANNEAU; i++) {
  71.                 if(IsValidObject(PanneauObject[i])) {
  72.                     if(IsPlayerInRangeOfPoint(playerid, 20.0, Publicitaire[i][p_PosX], Publicitaire[i][p_PosY], Publicitaire[i][p_PosZ])) {
  73.                         if(!strcmp(Publicitaire[IDPanneauProvisoire[playerid]][p_Createur], PlayerName, true)) {
  74.                             IDPanneauProvisoire[playerid] = i;
  75.                             EditObject(playerid, PanneauObject[i]);
  76.                             return 1;
  77.                         } else if(IsPlayerAdmin(playerid)) {
  78.                             IDPanneauProvisoire[playerid] = i;
  79.                             EditObject(playerid, PanneauObject[i]);
  80.                             return 1;
  81.                         } else SendClientMessage(playerid, -1, "Vous n'avez pas la permission de modifier cette publicité");
  82.                         return 1;
  83.                     }
  84.                 } else SendClientMessage(playerid, -1, "Il n'y as aucun panneau publicitaire dans les environs");
  85.                 return 1;
  86.             }
  87.         }
  88.         else if(strcmp(subcmd,"supprimer",true) == 0)
  89.         {
  90.             new Float:X, Float:Y, Float:Z;
  91.             GetPlayerPos(playerid, X, Y, Z);
  92.             GetPlayerName(playerid, PlayerName, sizeof(PlayerName));
  93.             if(IsPlayerAdmin(playerid)) {
  94.                 for(new i = 0; i <MAX_PANNEAU; i++) {
  95.                     if(IsValidObject(PanneauObject[i])) {
  96.                         if(IsPlayerInRangeOfPoint(playerid, 20.0, Publicitaire[i][p_PosX], Publicitaire[i][p_PosY], Publicitaire[i][p_PosZ])) {
  97.                             DestroyObject(Addon[0][i]);
  98.                             DestroyObject(Addon[1][i]);
  99.                             DestroyObject(Addon[2][i]);
  100.                             DestroyObject(PanneauObject[i]);
  101.                         }
  102.                     } else SendClientMessage(playerid, -1, "Il n'y as aucun panneau publicitaire dans les environs");
  103.                     return 1;
  104.                 }
  105.             } else SendClientMessage(playerid, -1, "Vous n'avez pas la permission de supprimer cette publicité");
  106.             return 1;
  107.         }
  108.     }
  109.     return 1;
  110. }
  111. public OnPlayerEditObject(playerid, playerobject, objectid, response, Float:fX, Float:fY, Float:fZ, Float:fRotX, Float:fRotY, Float:fRotZ) {
  112.     if(objectid == PanneauObject[IDPanneauProvisoire[playerid]]) {
  113.         if(response == EDIT_RESPONSE_FINAL) {
  114.             ShowPlayerDialog(playerid,DIALOGUE_TEXTE, DIALOG_STYLE_INPUT, "Publicité", "Entrez votre texte ici (25 caractères).", "Valider", "");
  115.  
  116.             GetPlayerName(playerid, PlayerName, sizeof(PlayerName));
  117.  
  118.             Publicitaire[IDPanneauProvisoire[playerid]][p_PiD] = IDPanneauProvisoire[playerid];
  119.             Publicitaire[IDPanneauProvisoire[playerid]][p_PosX] = fX;
  120.             Publicitaire[IDPanneauProvisoire[playerid]][p_PosY] = fY;
  121.             Publicitaire[IDPanneauProvisoire[playerid]][p_PosZ] = fZ;
  122.             Publicitaire[IDPanneauProvisoire[playerid]][p_RotX] = fRotX;
  123.             Publicitaire[IDPanneauProvisoire[playerid]][p_RotY] = fRotY;
  124.             Publicitaire[IDPanneauProvisoire[playerid]][p_RotZ] = fRotZ;
  125.             Publicitaire[IDPanneauProvisoire[playerid]][p_Createur] = PlayerName;
  126.         }
  127.         return 1;
  128.     }
  129.     return 1;
  130. }
  131. public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
  132. {
  133.     switch(dialogid)
  134.     {
  135.         case DIALOGUE_TEXTE: {
  136.             if(!response) ShowPlayerDialog(playerid,DIALOGUE_TEXTE, DIALOG_STYLE_INPUT, "Publicité", "Entrez votre texte ici (25 caractères).", "Valider", "");
  137.             else {
  138.                 Publicitaire[IDPanneauProvisoire[playerid]][p_Text] = strval(inputtext);
  139.                 SetObjectMaterialText(Addon[1][IDPanneauProvisoire[playerid]], inputtext, 0, OBJECT_MATERIAL_SIZE_256x32, "Calibri", 15, 0, 0xFF000000, 0xFFFFFFFF, OBJECT_MATERIAL_TEXT_ALIGN_CENTER);
  140.                 SetObjectMaterialText(Addon[2][IDPanneauProvisoire[playerid]], inputtext, 0, OBJECT_MATERIAL_SIZE_256x32, "Calibri", 15, 0, 0xFF000000, 0xFFFFFFFF, OBJECT_MATERIAL_TEXT_ALIGN_CENTER);
  141.             }
  142.         }
  143.     }
  144.     return 1;
  145. }
  146. strtok(const string[], &index)
  147. {
  148.     new length = strlen(string);
  149.     while ((index < length) && (string[index] <= ' '))
  150.     {
  151.         index++;
  152.     }
  153.  
  154.     new offset = index;
  155.     new result[20];
  156.     while ((index < length) && (string[index] > ' ') && ((index - offset) < (sizeof(result) - 1)))
  157.     {
  158.         result[index - offset] = string[index];
  159.         index++;
  160.     }
  161.     result[index - offset] = EOS;
  162.     return result;
  163. }
  164. #error N'hésite pas à dire merci et à nous rendre visite sur www.outstanding-gaming.com
Advertisement
Add Comment
Please, Sign In to add comment