Advertisement
B-Matt

Bomb System by B-Matt v2.0

Nov 9th, 2012
479
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pawn 11.63 KB | None | 0 0
  1. /***************************************************************
  2. *                                                              *
  3. *   Bomb System v2.0                                           *
  4. *   (c) 2012. B-Matt                                           *
  5. *                                                              *
  6. ****************************************************************/
  7.  
  8. //----Includes----
  9. #include <a_samp>
  10. #include <ZCMD>
  11. #include <sscanf2>
  12.  
  13. //----News----
  14. new Bomb[MAX_PLAYERS]; //Timer bomb
  15. new TB[MAX_PLAYERS]; //Trigger Bomb
  16. new CBomb[MAX_VEHICLES]; //Car Bomb
  17. new TCBomb[MAX_VEHICLES]; //Vehicle Bomb aka Car bomb2
  18. new BArmed[MAX_PLAYERS]; //Timer bomb
  19. new TArmed[MAX_PLAYERS]; //Trigger bomb
  20. new CArmed[MAX_PLAYERS]; //Car bomb
  21. new TCArmed[MAX_PLAYERS]; //Trigger car bomb
  22. new BombO; //bomb object
  23. new BombT; //bomb timer
  24.  
  25. //----Forwards----
  26. forward detonate(bomb);
  27.  
  28. //----SA-MP Callbacks----
  29. public OnFilterScriptInit()
  30. {
  31.     print("\n*************************************************");
  32.     print("*        Bomb system by: B-Matt      *");
  33.     print("*************************************************\n");
  34.     return 1;
  35. }
  36.  
  37. public OnFilterScriptExit()
  38. {
  39.     return 1;
  40. }
  41.  
  42. public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
  43. {
  44.     if(response)
  45.     {
  46.         switch(dialogid)
  47.         {
  48.             case 1:
  49.             {
  50.                 switch(listitem)
  51.                 {
  52.                     case 0://TBOMB
  53.                     {
  54.                         if(GetPlayerMoney(playerid) < 500) return SendClientMessage(playerid, 0xFFFFFF, "You don't have enough cash (500$).");
  55.                         GivePlayerMoney(playerid, -500);
  56.                         SendClientMessage(playerid, 0xFFFFFFFF, "You successfully bought Timer bomb!");
  57.                         Bomb[playerid] = 1;
  58.                     }
  59.                     case 1: //TB
  60.                     {
  61.                         if(GetPlayerMoney(playerid) < 800) return SendClientMessage(playerid, 0xFFFFFF, "You don't have enough cash (800$).");
  62.                         GivePlayerMoney(playerid, -800);
  63.                         SendClientMessage(playerid, 0xFFFFFFFF, "You successfully bought Trigger bomb!");
  64.                         TB[playerid] = 1;
  65.                     }
  66.                     case 2: //CBOMB
  67.                     {
  68.                         if(GetPlayerMoney(playerid) < 1000) return SendClientMessage(playerid, 0xFFFFFF, "You don't have enough cash (1.000$).");
  69.                         GivePlayerMoney(playerid, -1000);
  70.                         SendClientMessage(playerid, 0xFFFFFFFF, "You successfully bought Car bomb!");
  71.                         CBomb[playerid] = 1;
  72.                     }
  73.                     case 3: //TCBOMB
  74.                     {
  75.                         if(GetPlayerMoney(playerid) < 1500) return SendClientMessage(playerid, 0xFFFFFF, "You don't have enough cash (1.500$).");
  76.                         GivePlayerMoney(playerid, -1500);
  77.                         SendClientMessage(playerid, 0xFFFFFFFF, "You successfully bought Trigger Car bomb!");
  78.                         TCBomb[playerid] = 1;
  79.                     }
  80.                 }
  81.             }
  82.         }
  83.     }
  84.     return 1;
  85. }
  86.  
  87. public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
  88. {
  89.     new pState = GetPlayerState(playerid);
  90.     if (pState == PLAYER_STATE_DRIVER)
  91.     {
  92.         if (newkeys & KEY_UP)
  93.         {
  94.             if(CArmed[playerid] == 1)
  95.             {
  96.                 if (IsPlayerInAnyVehicle(playerid))
  97.                 {
  98.                     new Float:X, Float:Y, Float:Z;
  99.                     new vehicleid = GetPlayerVehicleID(playerid);
  100.                     GetVehiclePos(vehicleid, X, Y, Z);
  101.                     CreateExplosion(X, Y, Z, 12, 15.0);
  102.                     CreateExplosion(X, Y, Z, 10, 15.0);
  103.                     CArmed[playerid] = 0;
  104.                 }
  105.             }
  106.         }
  107.     }
  108.     if (newkeys & KEY_FIRE) //TB
  109.     {
  110.         if(TArmed[playerid] == 1)
  111.         {
  112.             new Float:X, Float:Y, Float:Z;
  113.             GetObjectPos(BombO, X, Y, Z);
  114.             CreateExplosion(X, Y, Z, 2, 100.0);
  115.             CreateExplosion(X, Y, Z, 12, 25.0);
  116.             CreateExplosion(X, Y, Z, 10, 30.0);
  117.             DestroyObject(BombO);
  118.             TArmed[playerid] = 0;
  119.         }
  120.     }
  121.     if (newkeys & KEY_FIRE) //TCBomb
  122.     {
  123.         if(TCArmed[playerid] == 1)
  124.         {
  125.             new Float:X, Float:Y, Float:Z;
  126.             new vehicleid = GetPlayerVehicleID(playerid);
  127.             GetVehiclePos(vehicleid, X, Y, Z);
  128.             CreateExplosion(X, Y, Z, 2, 100.0);
  129.             CreateExplosion(X, Y, Z, 12, 25.0);
  130.             CreateExplosion(X, Y, Z, 12, 50.0);
  131.             CreateExplosion(X, Y, Z, 10, 35.0);
  132.             DestroyObject(BombO);
  133.             TCArmed[playerid] = 0;
  134.         }
  135.     }
  136.     return 1;
  137. }
  138.  
  139. //----Custom Callbacks----
  140. public detonate(bomb)
  141. {
  142.     new Float:X, Float:Y, Float:Z;
  143.     GetObjectPos(BombO, X, Y, Z);
  144.     CreateExplosion(X, Y, Z, 0, 50.0);
  145.     DestroyObject(BombO);
  146.     KillTimer(BombT);
  147.     return 1;
  148. }
  149.  
  150. //----Commands----
  151. CMD:buy(playerid, params[])
  152. {
  153.     if(Bomb[playerid] == 0 || TB[playerid] == 0 || CBomb[playerid] == 0)
  154.     {
  155.         ShowPlayerDialog(playerid, 1, DIALOG_STYLE_LIST, "Bomb buy", "Timer bomb\nTrigger bomb\nCar Bomb\nTrigger car bomb", "Buy", "Select");
  156.     }
  157.     else return SendClientMessage(playerid, 0xE21414FF, "You already have bomb!");
  158.     return 1;
  159. }
  160.  
  161. CMD:plant(playerid, params[])
  162. {
  163.     if(Bomb[playerid] == 1) //BOMBT
  164.     {
  165.         new time;
  166.         if (sscanf(params, "i", time)) return SendClientMessage(playerid, 0xFFFFFFFF, "USAGE: /plant [time]");
  167.         BombT = SetTimer("detonate",time*1000,false); //time*1000 because if you type 5 it will convert that in seconds (5*1000=5000 miliseconds = 5 seconds)
  168.         ApplyAnimation(playerid, "BOMBER", "BOM_Plant", 4.1, 0, 0, 0, 0, 1000, 1);
  169.         new Float:X, Float:Y, Float:Z;
  170.         GetPlayerPos(playerid, X, Y, Z);
  171.         BombO = CreateObject(1252, X, Y, Z, 0.0, 0.0, 96.0);
  172.         BArmed[playerid] = 1;
  173.         Bomb[playerid] = 0;
  174.     }
  175.     if(TB[playerid] == 1)//TB
  176.     {
  177.         ApplyAnimation(playerid, "BOMBER", "BOM_Plant", 4.1, 0, 0, 0, 0, 1000, 1);
  178.         new Float:X, Float:Y, Float:Z;
  179.         GetPlayerPos(playerid, X, Y, Z);
  180.         BombO = CreateObject(1252, X, Y, Z, 0.0, 0.0, 96.0);
  181.         TArmed[playerid] = 1;
  182.         GivePlayerWeapon(playerid, 40, 2);
  183.         TB[playerid] = 0;
  184.     }
  185.     if(CBomb[playerid] == 1) //CBOMB
  186.     {
  187.         new Float:X, Float:Y, Float:Z;
  188.         new vehicleid = GetPlayerVehicleID(playerid);
  189.         GetVehiclePos(vehicleid, X, Y, Z);
  190.         if(IsPlayerInRangeOfPoint(playerid, 2.0, X, Y, Z))
  191.         {
  192.             SendClientMessage(playerid, 0xFFFFFFFF, "You planted bomb! Get out of there!");
  193.             CArmed[playerid] = 1;
  194.             CBomb[playerid] = 0;
  195.         }
  196.     }
  197.     if(TCBomb[playerid] == 1) //TCBOMB
  198.     {
  199.         new Float:X, Float:Y, Float:Z;
  200.         new vehicleid = GetPlayerVehicleID(playerid);
  201.         GetVehiclePos(vehicleid, X, Y, Z);
  202.         if(IsPlayerInRangeOfPoint(playerid, 2.0, X, Y, Z))
  203.         {
  204.             SendClientMessage(playerid, 0xFFFFFFFF, "You planted bomb! Get out of there!");
  205.             GivePlayerWeapon(playerid, 40, 2);
  206.             TCArmed[playerid] = 1;
  207.             TCBomb[playerid] = 0;
  208.         }
  209.     }
  210.     return 1;
  211. }
  212.  
  213. CMD:give(playerid, params[])
  214. {
  215.     if(Bomb[playerid] == 1)
  216.     {
  217.         if (sscanf(params, "u")) return SendClientMessage(playerid, 0xFFFFFFFF, "USAGE: /give [playerid/username]");
  218.         new PID, string[64];
  219.         new Sendername[MAX_PLAYER_NAME], Playername[MAX_PLAYER_NAME];
  220.         GetPlayerName(playerid, Sendername, sizeof(Sendername));
  221.         GetPlayerName(PID, Playername, sizeof(Playername));
  222.         format(string, sizeof(string), "You sent Bomb to %s", Playername);
  223.         SendClientMessage(playerid, 0xFFFFFFFF, string);
  224.         format(string, sizeof(string), "You received a Bomb from %s", Sendername);
  225.         SendClientMessage(PID, 0xFFFFFFFF, string);
  226.         Bomb[PID] = 1;
  227.     }
  228.     if(TB[playerid] == 1)
  229.     {
  230.         if (sscanf(params, "u")) return SendClientMessage(playerid, 0xFFFFFFFF, "USAGE: /give [playerid/username]");
  231.         new PID, string[64];
  232.         new Sendername[MAX_PLAYER_NAME], Playername[MAX_PLAYER_NAME];
  233.         GetPlayerName(playerid, Sendername, sizeof(Sendername));
  234.         GetPlayerName(PID, Playername, sizeof(Playername));
  235.         format(string, sizeof(string), "You sent Trigger bomb to %s", Playername);
  236.         SendClientMessage(playerid, 0xFFFFFFFF, string);
  237.         format(string, sizeof(string), "You received a Trigger bomb from %s", Sendername);
  238.         SendClientMessage(PID, 0xFFFFFFFF, string);
  239.         TB[PID] = 1;
  240.     }
  241.     if(CBomb[playerid] == 1)
  242.     {
  243.         if (sscanf(params, "u")) return SendClientMessage(playerid, 0xFFFFFFFF, "USAGE: /give [playerid/username]");
  244.         new PID, string[64];
  245.         new Sendername[MAX_PLAYER_NAME], Playername[MAX_PLAYER_NAME];
  246.         GetPlayerName(playerid, Sendername, sizeof(Sendername));
  247.         GetPlayerName(PID, Playername, sizeof(Playername));
  248.         format(string, sizeof(string), "You sent Car bomb to %s", Playername);
  249.         SendClientMessage(playerid, 0xFFFFFFFF, string);
  250.         format(string, sizeof(string), "You received a Car bomb from %s", Sendername);
  251.         SendClientMessage(PID, 0xFFFFFFFF, string);
  252.         CBomb[PID] = 1;
  253.     }
  254.     if(TCBomb[playerid] == 1)
  255.     {
  256.         if (sscanf(params, "u")) return SendClientMessage(playerid, 0xFFFFFFFF, "USAGE: /give [playerid/username]");
  257.         new PID, string[64];
  258.         new Sendername[MAX_PLAYER_NAME], Playername[MAX_PLAYER_NAME];
  259.         GetPlayerName(playerid, Sendername, sizeof(Sendername));
  260.         GetPlayerName(PID, Playername, sizeof(Playername));
  261.         format(string, sizeof(string), "You sent Trigger car bomb to %s", Playername);
  262.         SendClientMessage(playerid, 0xFFFFFFFF, string);
  263.         format(string, sizeof(string), "You received a Trigger car bomb from %s", Sendername);
  264.         SendClientMessage(PID, 0xFFFFFFFF, string);
  265.         TCBomb[PID] = 1;
  266.     }
  267.     return 1;
  268. }
  269.  
  270. CMD:defuse(playerid, params[])
  271. {
  272.     if(BArmed[playerid] == 1)
  273.     {
  274.         new Float:X, Float:Y, Float:Z;
  275.         GetObjectPos(BombO, X, Y, Z);
  276.         if(IsPlayerInRangeOfPoint(playerid, 1.0, X, Y, Z))
  277.         {
  278.             new defuse = random(2);
  279.             switch(defuse)
  280.             {
  281.                 case 0:
  282.                 {
  283.                     SendClientMessage(playerid, 0xFF1F1FFF, "You failed to defuse the bomb. {FFFFFF}GET OUT OF THERE!");
  284.                     GetObjectPos(BombO, X, Y, Z);
  285.                     CreateExplosion(X, Y, Z, 0, 50.0);
  286.                     DestroyObject(BombO);
  287.                     KillTimer(BombT);
  288.                 }
  289.                 case 1:
  290.                 {
  291.                     SendClientMessage(playerid, 0xFFFFFFFF, "You successfully defused bomb.");
  292.                     BArmed[playerid] = 0;
  293.                     DestroyObject(BombO);
  294.                     KillTimer(BombT);
  295.                 }
  296.             }
  297.         }
  298.         else return SendClientMessage(playerid, 0xFF1F1FFF, "You are not near a bomb!");
  299.     }
  300.     if(TArmed[playerid] == 1)
  301.     {
  302.         new Float:X, Float:Y, Float:Z;
  303.         GetObjectPos(BombO, X, Y, Z);
  304.         if(IsPlayerInRangeOfPoint(playerid, 1.0, X, Y, Z))
  305.         {
  306.             new defuse = random(2);
  307.             switch(defuse)
  308.             {
  309.                 case 0:
  310.                 {
  311.                     SendClientMessage(playerid, 0xFF1F1FFF, "You failed to defuse the bomb. {FFFFFF}GET OUT OF THERE!");
  312.                     GetObjectPos(BombO, X, Y, Z);
  313.                     CreateExplosion(X, Y, Z, 2, 100.0);
  314.                     CreateExplosion(X, Y, Z, 12, 25.0);
  315.                     CreateExplosion(X, Y, Z, 10, 30.0);
  316.                     DestroyObject(BombO);
  317.                     BArmed[playerid] = 0;
  318.                 }
  319.                 case 1:
  320.                 {
  321.                     SendClientMessage(playerid, 0xFFFFFFFF, "You successfully defused bomb.");
  322.                     DestroyObject(BombO);
  323.                     TArmed[playerid] = 0;
  324.                 }
  325.             }
  326.         }
  327.         else return SendClientMessage(playerid, 0xFF1F1FFF, "You are not near a bomb!");
  328.     }
  329.     if(CArmed[playerid] == 1 || TCArmed[playerid] == 1)
  330.     {
  331.         new Float:X, Float:Y, Float:Z;
  332.         new vehicleid = GetPlayerVehicleID(playerid);
  333.         GetVehiclePos(vehicleid, X, Y, Z);
  334.         if(IsPlayerInRangeOfPoint(playerid, 1.0, X, Y, Z))
  335.         {
  336.             new defuse = random(2);
  337.             switch(defuse)
  338.             {
  339.                 case 0:
  340.                 {
  341.                     SendClientMessage(playerid, 0xFF1F1FFF, "You failed to defuse the bomb. {FFFFFF}GET OUT OF THERE!");
  342.                     GetVehiclePos(vehicleid, X, Y, Z);
  343.                     CreateExplosion(X, Y, Z, 12, 15.0);
  344.                     CreateExplosion(X, Y, Z, 10, 15.0);
  345.                     CArmed[playerid] = 0;
  346.                     TCArmed[playerid] = 0;
  347.                 }
  348.                 case 1:
  349.                 {
  350.                     SendClientMessage(playerid, 0xFFFFFFFF, "You successfully defused bomb.");
  351.                     CArmed[playerid] = 0;
  352.                     TCArmed[playerid] = 0;
  353.                 }
  354.             }
  355.         }
  356.         else return SendClientMessage(playerid, 0xFF1F1FFF, "You are not near a bomb!");
  357.     }
  358.     return 1;
  359. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement