Advertisement
Guest User

Untitled

a guest
Jul 20th, 2013
236
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pawn 4.84 KB | None | 0 0
  1. #define FILTERSCRIPT
  2.  
  3. #include <a_samp>
  4. #include <zcmd>
  5. #include <streamer>
  6.  
  7. #if defined FILTERSCRIPT
  8.  
  9. #define COL_OLIVE                         "{B9C900}"
  10. #define COL_WHITE                        "{FFFFFF}"
  11. #define MAX_MINES (5)
  12. #define MAX_SERVERMINES (100)
  13.  
  14. new totalMines[MAX_PLAYERS];
  15. new serverMines[MAX_SERVERMINES];
  16. new bool:isLive[MAX_SERVERMINES];
  17. new bool:isImmune[MAX_PLAYERS];
  18. new Text3D:mineText[MAX_SERVERMINES];
  19.  
  20. public OnFilterScriptInit()
  21. {
  22.     print("\n--------------------------------");
  23.     print("land mine filterscript by BigGroter");
  24.     print("-----------------------------------\n");
  25.     return 1;
  26. }
  27.  
  28. public OnFilterScriptExit()
  29. {
  30.     print("\n------------------------------------------");
  31.     print("Unloading land mine filterscript by BigGroter");
  32.     print("--------------------------------------------\n");
  33.     return 1;
  34. }
  35.  
  36. #else
  37. #endif
  38.  
  39. public OnPlayerConnect(playerid)
  40. {
  41.     totalMines[playerid] = 0;
  42.     isImmune[playerid] = false;
  43.     return 1;
  44. }
  45.  
  46. CMD:placemine(playerid, params[])
  47. {
  48.     if(totalMines[playerid] >= MAX_MINES) return SendClientMessage(playerid, -1, ""#COL_OLIVE#"INFO: "#COL_WHITE#"You may not place any more mines!");
  49.     new idx = getFreeMineSlot();
  50.     if(serverMines[idx] >= MAX_SERVERMINES) return SendClientMessage(playerid, -1, ""#COL_OLIVE#"INFO: "#COL_WHITE#"You may not place any more mines, the server amount has been reached!");
  51.     new Float:x, Float:y, Float:z;
  52.     GetPlayerPos(playerid, x,y,z);
  53.     mineText[idx] = CreateDynamic3DTextLabel("DANGER: land mine", 0xFF0000FF , x, y, z, 4.5);
  54.     serverMines[idx] = CreateDynamicCircle(x, y, 2.5);
  55.     isLive[idx] = false;
  56.     ApplyAnimation(playerid, "BOMBER", "BOM_Plant", 4.1, 0, 0, 0, 1, 1, 1);
  57.     SendClientMessage(playerid, -1, ""#COL_OLIVE#"INFO: "#COL_WHITE#"The mine will become live in ten seconds, leave the area before you get blown up yourself!");
  58.     SetTimerEx("mineTimer", 10000, false, "d", idx);
  59.     totalMines[playerid]++;
  60.     new i = CountDynamicAreas();
  61.     printf("%d mines", i);
  62.     return 1;
  63. }
  64. CMD:immune(playerid, params[])
  65. {
  66.     if(!IsPlayerAdmin(playerid)) return SendClientMessage(playerid, -1, ""#COL_OLIVE#"INFO: "#COL_WHITE#"You are not authorized to use this command!");
  67.     if(isImmune[playerid] == true)
  68.     {
  69.         isImmune[playerid] = false;
  70.         SendClientMessage(playerid, -1, ""#COL_OLIVE#"INFO: "#COL_WHITE#"You can now be killed by land mines.");
  71.     }
  72.     else
  73.     {
  74.         isImmune[playerid] = true;
  75.         SendClientMessage(playerid, -1, ""#COL_OLIVE#"INFO: "#COL_WHITE#"You are now immune to land mines!");
  76.     }
  77.     return 1;
  78. }
  79. CMD:immunelist(playerid, params[])
  80. {
  81.     new message[128], pName[MAX_PLAYER_NAME];
  82.     SendClientMessage(playerid, -1, "These people are currently "#COL_OLIVE#"immune"#COL_WHITE#" to land mines:");
  83.     for(new i=0;i<MAX_PLAYERS;i++)
  84.     {
  85.         if(IsPlayerConnected(i))
  86.         {
  87.             if(isImmune[i])
  88.             {
  89.                 GetPlayerName(playerid, pName, sizeof(pName));
  90.                 format(message, sizeof(message), "%s", pName);
  91.                 SendClientMessage(playerid, -1, message);
  92.             }
  93.         }
  94.     }
  95.     return 1;
  96. }
  97. CMD:removemine(playerid, params[])
  98. {
  99.     if(!IsPlayerAdmin(playerid)) return SendClientMessage(playerid, -1, ""#COL_OLIVE#"INFO: "#COL_WHITE#"You are not authorized to use this command!");
  100.     if(!IsPlayerInAnyDynamicArea(playerid)) return SendClientMessage(playerid, -1, ""#COL_OLIVE#"INFO: "#COL_WHITE#"You are not near any mines!");
  101.     for(new i=0;i<MAX_SERVERMINES;i++)
  102.     {
  103.         if(IsPlayerInDynamicArea(playerid, serverMines[i]))
  104.         {
  105.             DestroyDynamicArea(serverMines[i]);
  106.             DestroyDynamic3DTextLabel(mineText[i]);
  107.         }
  108.     }
  109.     return 1;
  110. }
  111. CMD:minehelp(playerid, params[])
  112. {
  113.     SendClientMessage(playerid, -1, ""#COL_OLIVE#"LM CMDS: "#COL_WHITE#"/placemine, /immunelist, /minehelp");
  114.     if(IsPlayerAdmin(playerid))
  115.     {
  116.         SendClientMessage(playerid, -1, ""#COL_OLIVE#"LM ADM CMDS: "#COL_WHITE#"/removemine, /immune");
  117.     }
  118.     return 1;
  119. }
  120. stock getFreeMineSlot()
  121. {
  122.     new i = CountDynamicAreas();
  123.     return i+1;
  124. }
  125. forward OnPlayerEnterDynamicArea(playerid, areaid);
  126. public OnPlayerEnterDynamicArea(playerid, areaid)
  127. {
  128.     if(!isLive[areaid]) return 1;
  129.     if(isImmune[playerid]) return 1;
  130.     new vehid, Float:x, Float:y, Float:z;
  131.     GetPlayerPos(playerid, x,y,z);
  132.     if(IsPlayerInAnyVehicle(playerid))
  133.     {
  134.         vehid = GetPlayerVehicleID(playerid);
  135.         SendClientMessage(playerid, -1, "You drove over a land mine!");
  136.         SetVehicleHealth(vehid, 0);
  137.         for(new i=0;i<MAX_PLAYERS;i++)
  138.         {
  139.             if(IsPlayerConnected(i))
  140.             {
  141.                 if(!isImmune[i])
  142.                 {
  143.                     if(IsPlayerInVehicle(i, vehid))
  144.                     {
  145.                         SetPlayerHealth(i, 0);
  146.                     }
  147.                 }
  148.             }
  149.         }
  150.     }
  151.     else
  152.     {
  153.         SendClientMessage(playerid, -1, "You stepped on a land mine!");
  154.         SetPlayerHealth(playerid, 0);
  155.     }
  156.     CreateExplosion(x,y,z,0, 12);
  157.    
  158.     return 1;
  159. }
  160. forward mineTimer(mineID);
  161. public mineTimer(mineID)
  162. {
  163.     isLive[mineID] = true;
  164.     return 1;
  165. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement