Advertisement
Guest User

Seif

a guest
Aug 22nd, 2008
1,233
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 6.10 KB | None | 0 0
  1. #include <a_samp>
  2. //**COLORS*//
  3. #define GREEN 0x21DD00FF
  4. #define RED 0xE60000FF
  5. #define ADMIN_RED 0xFB0000FF
  6. #define YELLOW 0xFFFF00FF
  7. #define ORANGE 0xF97804FF
  8. #define LIGHTRED 0xFF8080FF
  9. #define LIGHTBLUE 0x00C2ECFF
  10. #define PURPLE 0xB360FDFF
  11. #define PLAYER_COLOR 0xFFFFFFFF
  12. #define BLUE 0x1229FAFF
  13. #define LIGHTGREEN 0x38FF06FF
  14. #define DARKPINK 0xE100E1FF
  15. #define DARKGREEN 0x008040FF
  16. #define ANNOUNCEMENT 0x6AF7E1FF
  17. #define COLOR_SYSTEM 0xEFEFF7AA
  18. #define GRAY 0xCECECEFF
  19.  
  20. #define MAX_TAGS    200
  21.  
  22. #define BALLAS_TAG  1529
  23. #define GROVE_TAG   1528
  24.  
  25. enum tagInfo
  26. {
  27.     tgSprayer[24],
  28.     Float:tgX,
  29.     Float:tgY,
  30.     Float:tgZ,
  31. };
  32.  
  33. new Spray[MAX_TAGS],Tag,Sprayed[MAX_PLAYERS];
  34. new TagInfo[MAX_TAGS][tagInfo];
  35.  
  36. forward OnPlayerSpray(playerid);
  37.  
  38. public OnFilterScriptInit() // > OnGameModeInit
  39. {
  40.     Tag = 0;
  41.     return 1;
  42. }
  43.  
  44. public OnPlayerConnect(playerid)
  45. {
  46.     Sprayed[playerid] = 0;
  47.     return 1;
  48. }
  49.  
  50. public OnPlayerCommandText(playerid, cmdtext[])
  51. {
  52.  
  53.     if(strcmp(cmdtext, "/deltags", true)==0)
  54.     {
  55.         if (Tag == 0) return SendClientMessage(playerid,RED,"No sprayed tags found");
  56.         if (!IsPlayerAdmin(playerid)) return SendClientMessage(playerid,RED,"You're not an admin");
  57.         for(new stags = 1; stags <= 200; stags++)
  58.         {
  59.             DestroyObject(Spray[stags]);
  60.             Tag = 0;
  61.         }
  62.         return 1;
  63.     }
  64.     if(strcmp(cmdtext, "/wipetag", true)==0)
  65.     {
  66.         new count;
  67.         new frm[128];
  68.         for(new i = 0; i < MAX_TAGS; i++)
  69.         {
  70.             if(PlayerToPoint(playerid,2,TagInfo[i][tgX],TagInfo[i][tgY],TagInfo[i][tgZ]))
  71.             {
  72.                 GetPlayerName(playerid, frm, MAX_PLAYER_NAME);
  73.                 if (!strcmp(TagInfo[i][tgSprayer],frm))
  74.                 {
  75.                     DestroyObject(Spray[i]);
  76.                     TagInfo[i][tgX] = 0;
  77.                     TagInfo[i][tgY] = 0;
  78.                     TagInfo[i][tgZ] = 0;
  79.                     Spray[i] = INVALID_OBJECT_ID;
  80.                     strmid(TagInfo[i][tgSprayer], " ", 0, 1);
  81.                     Tag--;
  82.                     count++;
  83.                 }
  84.             }
  85.         }
  86.         format(frm, sizeof(frm), " You have wiped %d tags", count);
  87.         SendClientMessage(playerid, GRAY, frm);
  88.         return 1;
  89.     }
  90.     if(strcmp(cmdtext, "/deltag", true)==0)
  91.     {
  92.         if (!IsPlayerAdmin(playerid)) return SendClientMessage(playerid, RED, " You're not an admin");
  93.         new count;
  94.         new frm[128];
  95.         for(new i = 0; i < MAX_TAGS; i++)
  96.         {
  97.             if(PlayerToPoint(playerid,2,TagInfo[i][tgX],TagInfo[i][tgY],TagInfo[i][tgZ]))
  98.             {
  99.                 DestroyObject(Spray[i]);
  100.                 TagInfo[i][tgX] = 0;
  101.                 TagInfo[i][tgY] = 0;
  102.                 TagInfo[i][tgZ] = 0;
  103.                 Spray[i] = INVALID_OBJECT_ID;
  104.                 strmid(TagInfo[i][tgSprayer], " ", 0, 1);
  105.                 Tag--;
  106.                 count++;
  107.             }
  108.         }
  109.         format(frm, sizeof(frm), " You have deleted %d tags", count);
  110.         SendClientMessage(playerid, GRAY, frm);
  111.         return 1;
  112.     }
  113.     if(strcmp(cmdtext, "/sprayer", true)==0)
  114.     {
  115.         if (Tag == 0) return SendClientMessage(playerid,RED,"No sprayed tags found");
  116.         new string[128];
  117.         for(new stags = 0; stags < MAX_TAGS; stags++)
  118.         {
  119.             if (PlayerToPoint(playerid,2,TagInfo[stags][tgX],TagInfo[stags][tgY],TagInfo[stags][tgZ]))
  120.             {
  121.                 printf("%d - %d",Tag,stags);
  122.                 format(string,sizeof(string),"Tag Sprayer: %s - Tag #%d",TagInfo[stags][tgSprayer],stags);
  123.                 SendClientMessage(playerid,GRAY,string);
  124.             }
  125.         }
  126.         return 1;
  127.     }
  128.     return 0;
  129. }
  130.  
  131. public OnPlayerKeyStateChange(playerid,newkeys,oldkeys)
  132. {
  133.     if (newkeys == KEY_FIRE && GetPlayerWeapon(playerid) == 41)
  134.     {
  135.         SetTimerEx("OnPlayerSpray",2000,0,"d",playerid);
  136.     }
  137.     return 1;
  138. }
  139.  
  140. public OnPlayerSpray(playerid)
  141. {
  142.     new keys,updown,leftright;
  143.     GetPlayerKeys(playerid,keys,updown,leftright);
  144.     if (keys == KEY_FIRE)
  145.     {
  146.         if (GetPlayerSkin(playerid) >= 102 && GetPlayerSkin(playerid) <= 104) // Ballas
  147.         {
  148.             for(new stags = Tag; stags < MAX_TAGS; stags++)
  149.             {
  150.                 if (Tag >= MAX_TAGS-1) return SendClientMessage(playerid,RED,"You can no longer spray tags because there are too many tags.");
  151.                 new Float:X, Float:Y, Float:Z,Float:A,name[24];
  152.                 GetPlayerPos(playerid, X, Y, Z);
  153.                 GetPlayerFacingAngle(playerid, A);
  154.                 GetPlayerName(playerid,name,24);
  155.                 X += (1 * floatsin(-A, degrees));
  156.                 Y += (1 * floatcos(-A, degrees));
  157.                 TagInfo[stags][tgX] = X;
  158.                 TagInfo[stags][tgY] = Y;
  159.                 TagInfo[stags][tgZ] = Z;
  160.                 Sprayed[playerid] = 1;
  161.                 Tag += 1;
  162.                 Spray[stags] = CreateObject(BALLAS_TAG, X, Y, Z, 0.0, 0.0, A+90);
  163.                 GameTextForPlayer(playerid,"~r~~h~Sprayed!",3000,3);
  164.                 PlayerPlaySound(playerid,1057,0,0,0);
  165.                 strmid(TagInfo[stags][tgSprayer], name, 0, strlen(name),128);
  166.                 printf("[TAG] %s - %d",TagInfo[stags][tgSprayer],stags);
  167.                 break;
  168.             }
  169.         }
  170.         if (GetPlayerSkin(playerid) >= 105 && GetPlayerSkin(playerid) <= 107) // Grove
  171.         {
  172.             for(new stags = Tag; stags < MAX_TAGS; stags++)
  173.             {
  174.                 if (Tag >= MAX_TAGS-1) return SendClientMessage(playerid,RED,"You can no longer spray tags because there are too many tags.");
  175.                 new Float:X, Float:Y, Float:Z,Float:A,name[24];
  176.                 GetPlayerPos(playerid, X, Y, Z);
  177.                 GetPlayerFacingAngle(playerid, A);
  178.                 GetPlayerName(playerid,name,24);
  179.                 X += (1 * floatsin(-A, degrees));
  180.                 Y += (1 * floatcos(-A, degrees));
  181.                 TagInfo[stags][tgX] = X;
  182.                 TagInfo[stags][tgY] = Y;
  183.                 TagInfo[stags][tgZ] = Z;
  184.                 Sprayed[playerid] = 1;
  185.                 Tag += 1;
  186.                 Spray[stags] = CreateObject(GROVE_TAG, X, Y, Z, 0.0, 0.0, A+90);
  187.                 GameTextForPlayer(playerid,"~b~~h~Sprayed!",3000,3);
  188.                 PlayerPlaySound(playerid,1057,0,0,0);
  189.                 strmid(TagInfo[stags][tgSprayer], name, 0, strlen(name),128);
  190.                 printf("[TAG] %s - %d",TagInfo[stags][tgSprayer],stags);
  191.                 break;
  192.             }
  193.         }
  194.     }
  195.     return 1;
  196. }
  197.  
  198. stock PlayerToPoint(playerid,Float:radi, Float:px, Float:py, Float:pz)
  199. {
  200.     if(IsPlayerConnected(playerid))
  201.     {
  202.         new Float:x, Float:y, Float:z;
  203.         new Float:ox, Float:oy, Float:oz;
  204.         GetPlayerPos(playerid, ox, oy, oz);
  205.         x = (ox -px);
  206.         y = (oy -py);
  207.         z = (oz -pz);
  208.         if (((x < radi) && (x > -radi)) && ((y < radi) && (y > -radi)) && ((z < radi) && (z > -radi))) return 1;
  209.     }
  210.     return 0;
  211. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement