Guest User

Land Mines

a guest
Jan 16th, 2014
395
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pawn 3.96 KB | None | 0 0
  1.  
  2. #include <a_samp>
  3. #include <ZCMD>
  4. #define HOLDING(%0) \
  5.     ((newkeys & (%0)) == (%0))
  6.  
  7. #define FILTERSCRIPT
  8. #if defined FILTERSCRIPT
  9. #define MAX_LANDMINES 200
  10. #define GRAY 0xBEC4C3FF
  11.  
  12. new mine, Text3D: minetext;
  13. new caught[MAX_PLAYERS], mines[MAX_PLAYERS], planted[MAX_PLAYERS];
  14.  
  15. enum LandMineInfo
  16. {
  17.     active,
  18.     exploded,
  19.     Float: minex, Float: miney, Float: minez
  20. };
  21. new MineInfo[MAX_LANDMINES][LandMineInfo];
  22.  
  23. public OnFilterScriptInit()
  24. {
  25.     print("\n Landmine FS by Cannary2048");
  26.     CreatePickup(1239, 1, 691.2878,-1566.2411,14.2422, 0);
  27.     Create3DTextLabel("Land Mine Shop\n/buymines",0xFFFFFFFF, 691.2878,-1566.2411,14.2422, 13.0, 0, 0);
  28.     return 1;
  29. }
  30.  
  31. CMD:buymines(playerid, params[])
  32. {
  33.     ShowPlayerDialog(playerid, 12987, DIALOG_STYLE_MSGBOX, "Land Mine - Buy", "You're going to buy a Landmine.\nAre you sure?{236E1A} ($500)", "Yes", "Cancel");
  34.     return 1;
  35. }
  36.  
  37. public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
  38. {
  39.  
  40.     switch( dialogid )
  41.     {
  42.         case 12987:
  43.         {
  44.             if(response)
  45.             {
  46.                 mines[playerid] += 1;
  47.                 GivePlayerMoney(playerid, -500);
  48.                 SendClientMessage(playerid, -1, "You bought a landmine for $500!");
  49.             }
  50.             if(!response)
  51.             {
  52.                 return 1;
  53.             }
  54.         }
  55.     }
  56.     return 1;
  57. }
  58.  
  59. public OnFilterScriptExit()
  60. {
  61.     return 1;
  62. }
  63.  
  64. #else
  65.  
  66. main()
  67. {
  68. }
  69.  
  70. #endif
  71.  
  72.  
  73. public OnPlayerConnect(playerid)
  74. {
  75.     caught[playerid] = 0;
  76.     return 1;
  77. }
  78.  
  79. public OnPlayerDisconnect(playerid, reason)
  80. {
  81.     caught[playerid] = 0;
  82.     return 1;
  83. }
  84.  
  85. public OnPlayerInteriorChange(playerid, newinteriorid, oldinteriorid)
  86. {
  87.     return 1;
  88. }
  89.  
  90. stock CreateMine(Float:x, Float:y, Float:z)
  91. {
  92.     mine = CreateObject(1213, x, y, z-0.8, 0, 0, 0, 50.0);
  93.     SetObjectMaterial(mine, 0, 964, "cj_crate_will", "CJ_FLIGHT_CASE2", 0);
  94.     minetext = Create3DTextLabel("Land Mine\nStatus: {24F027}Deactivated{FFFFFF}.", 0xFFFFFFFF, x, y, z-0.3, 7.0, 0, 0);
  95.     return 1;
  96. }
  97.  
  98. stock DeleteMine()
  99. {
  100.     DestroyObject(mine);
  101.     return 1;
  102. }
  103.  
  104. forward Active();
  105. public Active()
  106. {
  107.     Update3DTextLabelText(minetext, 0xFFFFFFFF, "Land Mine\nStatus: {FFCC00}Activated{FFFFFF}.");
  108.     for(new i = 0; i < sizeof(MineInfo); i++)
  109.     {
  110.         MineInfo[i][active] = 1;
  111.     }
  112. }
  113.  
  114. forward Allowed(playerid);
  115. public Allowed(playerid)
  116. {
  117.     planted[playerid] = 0;
  118. }
  119.  
  120. public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
  121. {
  122.     if(HOLDING(KEY_CROUCH | KEY_NO))
  123.     {
  124.         for(new i = 0; i < sizeof(MineInfo); i++)
  125.         {
  126.             if(planted[playerid] == 0 && mines[playerid] >= 1) //&& mines[playerid] >= 1)
  127.             {
  128.                 planted[playerid] = 1;
  129.                 GetPlayerPos(playerid, MineInfo[i][minex], MineInfo[i][miney], MineInfo[i][minez]);
  130.                 CreateMine(MineInfo[i][minex], MineInfo[i][miney], MineInfo[i][minez]);
  131.                 SetTimer("Active", 2000, 0);
  132.                 SetTimer("Allowed", 10000, 0);
  133.                 SendClientMessage(playerid, -1, "You've planted it, now run!");
  134.             }
  135.             else if(mines[playerid] == 0) { return SendClientMessage(playerid, GRAY, "You don't have any mines."); }
  136.             else if(planted[playerid] == 0) { return SendClientMessage(playerid, GRAY, "No, sir! Wait ten seconds."); }
  137.         }
  138.     }
  139. //  else if(mines[playerid] == 1) { SendClientMessage(playerid, GRAY, "You don't have any landmines. Buy it at Marina near the burger shop!"); }
  140.     return 1;
  141. }
  142.  
  143. forward Arming();
  144. public Arming()
  145. {
  146.     for(new i = 0; i < sizeof(MineInfo); i++)
  147.     {
  148.         CreateExplosion(MineInfo[i][minex], MineInfo[i][miney], MineInfo[i][minez], 11, 2.0);
  149.         CreateExplosion(MineInfo[i][minex], MineInfo[i][miney], MineInfo[i][minez], 11, 2.0);
  150.         DeleteMine();
  151.         Delete3DTextLabel(minetext);
  152.     }
  153. }
  154.  
  155. public OnPlayerUpdate(playerid)
  156. {
  157.     for(new i = 0; i < sizeof(MineInfo); i++)
  158.     {
  159.         if(IsPlayerInRangeOfPoint(playerid, 3.0, MineInfo[i][minex], MineInfo[i][miney], MineInfo[i][minez]) && MineInfo[i][active] == 1)
  160.         {
  161.             MineInfo[i][active] = 0;
  162.             Update3DTextLabelText(minetext, 0xFFFFFFFF, "Land Mine\nStatus: {FF0000}Armed{FFFFFF}.");
  163.             SetTimer("Arming", 500, 0);
  164.         }
  165.     }
  166.     return 1;
  167. }
Advertisement
Add Comment
Please, Sign In to add comment