Advertisement
Guest User

Untitled

a guest
Aug 22nd, 2017
76
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 11.94 KB | None | 0 0
  1. #include <a_samp>
  2.  
  3. // #define VERDE 0x00FF00FF // No se lo utiliza pero por si la necesitan se los dejo
  4. #define ROJO 0xFD0000FF
  5. #define BLANCO 0xFFFFFFFF
  6.  
  7. #define GRAFFITI_MAXIMOS    500
  8. #define GRAFFITI_BALLA      1525
  9. #define GRAFFITI_GROVE      1528
  10. #define GRAFFITI_VAGO       1530
  11. #define GRAFFITI_CORONA     1526
  12. enum tagInfo
  13. {
  14.     tgSprayer[24],
  15.     Float:tgX,
  16.     Float:tgY,
  17.     Float:tgZ,
  18. };
  19.  
  20. new Spray[GRAFFITI_MAXIMOS],Tag,pintados[MAX_PLAYERS];
  21. new TagInfo[GRAFFITI_MAXIMOS][tagInfo];
  22.  
  23. forward pintando(playerid);
  24.  
  25. public OnFilterScriptInit()
  26. {
  27.     Tag = 0;
  28.     return 1;
  29. }
  30.  
  31. public OnPlayerConnect(playerid)
  32. {
  33.     pintados[playerid] = 0;
  34.     return 1;
  35. }
  36.  
  37. public OnPlayerCommandText(playerid, cmdtext[])
  38. {
  39.  
  40.     if(strcmp(cmdtext, "/borrargraffitis", true)==0)
  41.     {
  42.         if (Tag == 0) return SendClientMessage(playerid,ROJO,"No se a encontrado Graffitis a los alrededores");
  43.         if (!IsPlayerAdmin(playerid)) return SendClientMessage(playerid,ROJO,"No eres un administrador");
  44.         for(new stags = 1; stags <= 200; stags++)
  45.         {
  46.             DestroyObject(Spray[stags]);
  47.             Tag = 0;
  48.         }
  49.         return 1;
  50.     }
  51.     if(strcmp(cmdtext, "/borrargraffiti", true)==0)
  52.     {
  53.         new total;
  54.         new frm[128];
  55.         for(new i = 0; i < GRAFFITI_MAXIMOS; i++)
  56.         {
  57.             if(PlayerToPoint(playerid,2,TagInfo[i][tgX],TagInfo[i][tgY],TagInfo[i][tgZ]))
  58.             {
  59.                 GetPlayerName(playerid, frm, MAX_PLAYER_NAME);
  60.                 if (!strcmp(TagInfo[i][tgSprayer],frm))
  61.                 {
  62.                     DestroyObject(Spray[i]);
  63.                     TagInfo[i][tgX] = 0;
  64.                     TagInfo[i][tgY] = 0;
  65.                     TagInfo[i][tgZ] = 0;
  66.                     Spray[i] = INVALID_OBJECT_ID;
  67.                     strmid(TagInfo[i][tgSprayer], " ", 0, 1);
  68.                     Tag--;
  69.                     total++;
  70.                 }
  71.             }
  72.         }
  73.         format(frm, sizeof(frm), " Has borrado %d graffitis", total);
  74.         SendClientMessage(playerid, BLANCO, frm);
  75.         return 1;
  76.     }
  77.     if(strcmp(cmdtext, "/borrartag", true)==0)
  78.     {
  79.         if (!IsPlayerAdmin(playerid)) return SendClientMessage(playerid, ROJO, " No eres un administrador");
  80.         new total;
  81.         new frm[128];
  82.         for(new i = 0; i < GRAFFITI_MAXIMOS; i++)
  83.         {
  84.             if(PlayerToPoint(playerid,2,TagInfo[i][tgX],TagInfo[i][tgY],TagInfo[i][tgZ]))
  85.             {
  86.                 DestroyObject(Spray[i]);
  87.                 TagInfo[i][tgX] = 0;
  88.                 TagInfo[i][tgY] = 0;
  89.                 TagInfo[i][tgZ] = 0;
  90.                 Spray[i] = INVALID_OBJECT_ID;
  91.                 strmid(TagInfo[i][tgSprayer], " ", 0, 1);
  92.                 Tag--;
  93.                 total++;
  94.             }
  95.         }
  96.         format(frm, sizeof(frm), " Has borrado %d Graffitis", total);
  97.         SendClientMessage(playerid, BLANCO, frm);
  98.         return 1;
  99.     }
  100.     if(strcmp(cmdtext, "/pintar", true)==0)
  101.     {
  102.         if (Tag == 0) return SendClientMessage(playerid,ROJO,"No puedes pintar un graffiti");
  103.         new string[128];
  104.         for(new stags = 0; stags < GRAFFITI_MAXIMOS; stags++)
  105.         {
  106.             if (PlayerToPoint(playerid,2,TagInfo[stags][tgX],TagInfo[stags][tgY],TagInfo[stags][tgZ]))
  107.             {
  108.                 printf("%d - %d",Tag,stags);
  109.                 format(string,sizeof(string),"Graffitis: %s - Tag #%d",TagInfo[stags][tgSprayer],stags);
  110.                 SendClientMessage(playerid,BLANCO,string);
  111.             }
  112.         }
  113.         return 1;
  114.     }
  115.     return 0;
  116. }
  117.  
  118. public OnPlayerKeyStateChange(playerid,newkeys,oldkeys)
  119. {
  120.     if (newkeys == KEY_FIRE && GetPlayerWeapon(playerid) == 41)
  121.     {
  122.         SetTimerEx("pintando",2000,0,"d",playerid);
  123.     }
  124.     return 1;
  125. }
  126.  
  127. public pintando(playerid)
  128. {
  129.     new keys,updown,leftright;
  130.     GetPlayerKeys(playerid,keys,updown,leftright);
  131.     if (keys == KEY_FIRE)
  132.     {
  133.         if (GetPlayerSkin(playerid) >= 102 && GetPlayerSkin(playerid) <= 104) // Ballas
  134.         {
  135.             for(new stags = Tag; stags < GRAFFITI_MAXIMOS; stags++)
  136.             {
  137.                 if (Tag >= GRAFFITI_MAXIMOS-1) return SendClientMessage(playerid,ROJO,"Ya hay demasiados Graffitis pintados.");
  138.                 new Float:X, Float:Y, Float:Z,Float:A,name[24];
  139.                 GetPlayerPos(playerid, X, Y, Z);
  140.                 GetPlayerFacingAngle(playerid, A);
  141.                 GetPlayerName(playerid,name,24);
  142.                 X += (1 * floatsin(-A, degrees));
  143.                 Y += (1 * floatcos(-A, degrees));
  144.                 TagInfo[stags][tgX] = X;
  145.                 TagInfo[stags][tgY] = Y;
  146.                 TagInfo[stags][tgZ] = Z;
  147.                 pintados[playerid] = 1;
  148.                 Tag += 1;
  149.                 Spray[stags] = CreateObject(GRAFFITI_BALLA, X, Y, Z, 0.0, 0.0, A+90);
  150.                 GameTextForPlayer(playerid,"~r~~h~Grafiti pintado",3000,3);
  151.                 PlayerPlaySound(playerid,1057,0,0,0);
  152.                 strmid(TagInfo[stags][tgSprayer], name, 0, strlen(name),128);
  153.                 printf("[TAG] %s - %d",TagInfo[stags][tgSprayer],stags);
  154.                 break;
  155.             }
  156.         }
  157.         if (GetPlayerSkin(playerid) >= 105 && GetPlayerSkin(playerid) <= 107) // Grove
  158.         {
  159.             for(new stags = Tag; stags < GRAFFITI_MAXIMOS; stags++)
  160.             {
  161.                 if (Tag >= GRAFFITI_MAXIMOS-1) return SendClientMessage(playerid,ROJO,"Ya hay demasiados Graffitis pintados.");
  162.                 new Float:X, Float:Y, Float:Z,Float:A,name[24];
  163.                 GetPlayerPos(playerid, X, Y, Z);
  164.                 GetPlayerFacingAngle(playerid, A);
  165.                 GetPlayerName(playerid,name,24);
  166.                 X += (1 * floatsin(-A, degrees));
  167.                 Y += (1 * floatcos(-A, degrees));
  168.                 TagInfo[stags][tgX] = X;
  169.                 TagInfo[stags][tgY] = Y;
  170.                 TagInfo[stags][tgZ] = Z;
  171.                 pintados[playerid] = 1;
  172.                 Tag += 1;
  173.                 Spray[stags] = CreateObject(GRAFFITI_GROVE, X, Y, Z, 0.0, 0.0, A+90);
  174.                 GameTextForPlayer(playerid,"~b~~h~pintado!",3000,3);
  175.                 PlayerPlaySound(playerid,1057,0,0,0);
  176.                 strmid(TagInfo[stags][tgSprayer], name, 0, strlen(name),128);
  177.                 printf("[TAG] %s - %d",TagInfo[stags][tgSprayer],stags);
  178.                 break;
  179.             }
  180.         }
  181.  
  182.         if (GetPlayerSkin(playerid) >= 269 && GetPlayerSkin(playerid) <= 271) // Grove
  183.         {
  184.             for(new stags = Tag; stags < GRAFFITI_MAXIMOS; stags++)
  185.             {
  186.                 if (Tag >= GRAFFITI_MAXIMOS-1) return SendClientMessage(playerid,ROJO,"Ya hay demasiados Graffitis pintados.");
  187.                 new Float:X, Float:Y, Float:Z,Float:A,name[24];
  188.                 GetPlayerPos(playerid, X, Y, Z);
  189.                 GetPlayerFacingAngle(playerid, A);
  190.                 GetPlayerName(playerid,name,24);
  191.                 X += (1 * floatsin(-A, degrees));
  192.                 Y += (1 * floatcos(-A, degrees));
  193.                 TagInfo[stags][tgX] = X;
  194.                 TagInfo[stags][tgY] = Y;
  195.                 TagInfo[stags][tgZ] = Z;
  196.                 pintados[playerid] = 1;
  197.                 Tag += 1;
  198.                 Spray[stags] = CreateObject(GRAFFITI_GROVE, X, Y, Z, 0.0, 0.0, A+90);
  199.                 GameTextForPlayer(playerid,"~b~~h~pintado!",3000,3);
  200.                 PlayerPlaySound(playerid,1057,0,0,0);
  201.                 strmid(TagInfo[stags][tgSprayer], name, 0, strlen(name),128);
  202.                 printf("[TAG] %s - %d",TagInfo[stags][tgSprayer],stags);
  203.                 break;
  204.             }
  205.         }
  206.         if (GetPlayerSkin(playerid) == 184 && GetPlayerSkin(playerid) == 47) // Vagos
  207.         {
  208.             for(new stags = Tag; stags < GRAFFITI_MAXIMOS; stags++)
  209.             {
  210.                 if (Tag >= GRAFFITI_MAXIMOS-1) return SendClientMessage(playerid,ROJO,"Ya hay demasiados Graffitis pintados.");
  211.                 new Float:X, Float:Y, Float:Z,Float:A,name[24];
  212.                 GetPlayerPos(playerid, X, Y, Z);
  213.                 GetPlayerFacingAngle(playerid, A);
  214.                 GetPlayerName(playerid,name,24);
  215.                 X += (1 * floatsin(-A, degrees));
  216.                 Y += (1 * floatcos(-A, degrees));
  217.                 TagInfo[stags][tgX] = X;
  218.                 TagInfo[stags][tgY] = Y;
  219.                 TagInfo[stags][tgZ] = Z;
  220.                 pintados[playerid] = 1;
  221.                 Tag += 1;
  222.                 Spray[stags] = CreateObject(GRAFFITI_VAGO, X, Y, Z, 0.0, 0.0, A+90);
  223.                 GameTextForPlayer(playerid,"~b~~h~pintado!",3000,3);
  224.                 PlayerPlaySound(playerid,1057,0,0,0);
  225.                 strmid(TagInfo[stags][tgSprayer], name, 0, strlen(name),128);
  226.                 printf("[TAG] %s - %d",TagInfo[stags][tgSprayer],stags);
  227.                 break;
  228.             }
  229.         }
  230.         if (GetPlayerSkin(playerid) >= 108 && GetPlayerSkin(playerid) <= 110)// Vagos
  231.         {
  232.             for(new stags = Tag; stags < GRAFFITI_MAXIMOS; stags++)
  233.             {
  234.                 if (Tag >= GRAFFITI_MAXIMOS-1) return SendClientMessage(playerid,ROJO,"Ya hay demasiados Graffitis pintados.");
  235.                 new Float:X, Float:Y, Float:Z,Float:A,name[24];
  236.                 GetPlayerPos(playerid, X, Y, Z);
  237.                 GetPlayerFacingAngle(playerid, A);
  238.                 GetPlayerName(playerid,name,24);
  239.                 X += (1 * floatsin(-A, degrees));
  240.                 Y += (1 * floatcos(-A, degrees));
  241.                 TagInfo[stags][tgX] = X;
  242.                 TagInfo[stags][tgY] = Y;
  243.                 TagInfo[stags][tgZ] = Z;
  244.                 pintados[playerid] = 1;
  245.                 Tag += 1;
  246.                 Spray[stags] = CreateObject(GRAFFITI_VAGO, X, Y, Z, 0.0, 0.0, A+90);
  247.                 GameTextForPlayer(playerid,"~b~~h~pintado!",3000,3);
  248.                 PlayerPlaySound(playerid,1057,0,0,0);
  249.                 strmid(TagInfo[stags][tgSprayer], name, 0, strlen(name),128);
  250.                 printf("[TAG] %s - %d",TagInfo[stags][tgSprayer],stags);
  251.                 break;
  252.             }
  253.         }
  254.  
  255.         if (GetPlayerSkin(playerid) >= 114 && GetPlayerSkin(playerid) <= 116)  // Corona
  256.         {
  257.             for(new stags = Tag; stags < GRAFFITI_MAXIMOS; stags++)
  258.             {
  259.                 if (Tag >= GRAFFITI_MAXIMOS-1) return SendClientMessage(playerid,ROJO,"Ya hay demasiados Graffitis pintados.");
  260.                 new Float:X, Float:Y, Float:Z,Float:A,name[24];
  261.                 GetPlayerPos(playerid, X, Y, Z);
  262.                 GetPlayerFacingAngle(playerid, A);
  263.                 GetPlayerName(playerid,name,24);
  264.                 X += (1 * floatsin(-A, degrees));
  265.                 Y += (1 * floatcos(-A, degrees));
  266.                 TagInfo[stags][tgX] = X;
  267.                 TagInfo[stags][tgY] = Y;
  268.                 TagInfo[stags][tgZ] = Z;
  269.                 pintados[playerid] = 1;
  270.                 Tag += 1;
  271.                 Spray[stags] = CreateObject(GRAFFITI_CORONA, X, Y, Z, 0.0, 0.0, A+90);
  272.                 GameTextForPlayer(playerid,"~b~~h~Pintado!",3000,3);
  273.                 PlayerPlaySound(playerid,1057,0,0,0);
  274.                 strmid(TagInfo[stags][tgSprayer], name, 0, strlen(name),128);
  275.                 printf("[TAG] %s - %d",TagInfo[stags][tgSprayer],stags);
  276.                 break;
  277.             }
  278.         }
  279.         if (GetPlayerSkin(playerid) <= 41)// Corona
  280.         {
  281.             for(new stags = Tag; stags < GRAFFITI_MAXIMOS; stags++)
  282.             {
  283.                 if (Tag >= GRAFFITI_MAXIMOS-1) return SendClientMessage(playerid,ROJO,"Ya hay demasiados Graffitis pintados.");
  284.                 new Float:X, Float:Y, Float:Z,Float:A,name[24];
  285.                 GetPlayerPos(playerid, X, Y, Z);
  286.                 GetPlayerFacingAngle(playerid, A);
  287.                 GetPlayerName(playerid,name,24);
  288.                 X += (1 * floatsin(-A, degrees));
  289.                 Y += (1 * floatcos(-A, degrees));
  290.                 TagInfo[stags][tgX] = X;
  291.                 TagInfo[stags][tgY] = Y;
  292.                 TagInfo[stags][tgZ] = Z;
  293.                 pintados[playerid] = 1;
  294.                 Tag += 1;
  295.                 Spray[stags] = CreateObject(GRAFFITI_CORONA, X, Y, Z, 0.0, 0.0, A+90);
  296.                 GameTextForPlayer(playerid,"~b~~h~pintado!",3000,3);
  297.                 PlayerPlaySound(playerid,1057,0,0,0);
  298.                 strmid(TagInfo[stags][tgSprayer], name, 0, strlen(name),128);
  299.                 printf("[TAG] %s - %d",TagInfo[stags][tgSprayer],stags);
  300.                 break;
  301.             }
  302.         }
  303.         if (GetPlayerSkin(playerid) >= 173 && GetPlayerSkin(playerid) <= 175)// Corona
  304.         {
  305.             for(new stags = Tag; stags < GRAFFITI_MAXIMOS; stags++)
  306.             {
  307.                 if (Tag >= GRAFFITI_MAXIMOS-1) return SendClientMessage(playerid,ROJO,"Ya hay demasiados Graffitis pintados.");
  308.                 new Float:X, Float:Y, Float:Z,Float:A,name[24];
  309.                 GetPlayerPos(playerid, X, Y, Z);
  310.                 GetPlayerFacingAngle(playerid, A);
  311.                 GetPlayerName(playerid,name,24);
  312.                 X += (1 * floatsin(-A, degrees));
  313.                 Y += (1 * floatcos(-A, degrees));
  314.                 TagInfo[stags][tgX] = X;
  315.                 TagInfo[stags][tgY] = Y;
  316.                 TagInfo[stags][tgZ] = Z;
  317.                 pintados[playerid] = 1;
  318.                 Tag += 1;
  319.                 Spray[stags] = CreateObject(GRAFFITI_CORONA, X, Y, Z, 0.0, 0.0, A+90);
  320.                 GameTextForPlayer(playerid,"~b~~h~pintado!",3000,3);
  321.                 PlayerPlaySound(playerid,1057,0,0,0);
  322.                 strmid(TagInfo[stags][tgSprayer], name, 0, strlen(name),128);
  323.                 printf("[TAG] %s - %d",TagInfo[stags][tgSprayer],stags);
  324.                 break;
  325.             }
  326.         }
  327.     }
  328.     return 1;
  329. }
  330.  
  331. stock PlayerToPoint(playerid,Float:radi, Float:px, Float:py, Float:pz)
  332. {
  333.     if(IsPlayerConnected(playerid))
  334.     {
  335.         new Float:x, Float:y, Float:z;
  336.         new Float:ox, Float:oy, Float:oz;
  337.         GetPlayerPos(playerid, ox, oy, oz);
  338.         x = (ox -px);
  339.         y = (oy -py);
  340.         z = (oz -pz);
  341.         if (((x < radi) && (x > -radi)) && ((y < radi) && (y > -radi)) && ((z < radi) && (z > -radi))) return 1;
  342.     }
  343.     return 0;
  344. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement