Guest User

Tannz0rz

a guest
Oct 11th, 2009
2,076
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 10.63 KB | None | 0 0
  1. #define FILTERSCRIPT
  2.  
  3. #define COLOR_LIGHTBLUE 0x33CCFFAA
  4. #define COLOR_RED 0xAA3333AA
  5.  
  6. #include <a_samp>
  7.  
  8. enum HydrogenBomb
  9. {
  10.     Nuke,
  11.     Float:x,
  12.     Float:y,
  13.     Float:z,
  14.     bool:bombactive,
  15.     timer,
  16.     shock,
  17.     count,
  18.     area
  19. };
  20. new NuclearBomb[MAX_PLAYERS][HydrogenBomb];
  21. new bool:PlayerPushed[MAX_PLAYERS];
  22. new bool:detonated[MAX_PLAYERS];
  23.  
  24. public OnFilterScriptInit()
  25. {
  26.     print("\n--------------------------------------");
  27.     print(" Hydrogen Bomb ");
  28.     print("--------------------------------------\n");
  29.     for(new i=0;i<MAX_PLAYERS;i++)
  30.     {
  31.         NuclearBomb[i][bombactive] = false;
  32.         NuclearBomb[i][count] = 0;
  33.         NuclearBomb[i][area] = 0;
  34.         PlayerPushed[i] = false;
  35.         detonated[i] = false;
  36.     }
  37.     return 1;
  38. }
  39.  
  40. public OnPlayerCommandText(playerid, cmdtext[])
  41. {
  42.     if(strcmp(cmdtext, "/plantbomb", true) == 0)
  43.     {
  44.         if(!NuclearBomb[playerid][bombactive])
  45.         {
  46.             new Float:bx, Float:by, Float:bz, Float:ba;
  47.             GetPlayerPos(playerid, bx, by, bz);
  48.             GetPlayerFacingAngle(playerid, ba);
  49.             bx += (floatsin(-ba, degrees));
  50.             by += (floatcos(-ba, degrees));
  51.             NuclearBomb[playerid][Nuke] = CreateObject(3786, bx, by, bz, 0, 0, ba);
  52.             NuclearBomb[playerid][x] = bx;
  53.             NuclearBomb[playerid][y] = by;
  54.             NuclearBomb[playerid][z] = bz;
  55.             NuclearBomb[playerid][area] = 0;
  56.             ApplyAnimation(playerid, "BOMBER","BOM_Plant_In",4.0,0,0,0,0,0);
  57.             NuclearBomb[playerid][bombactive] = true;
  58.             detonated[playerid] = false;
  59.             SendClientMessage(playerid, COLOR_LIGHTBLUE, "Bomb planted. Flee the area.");
  60.         }
  61.         else return SendClientMessage(playerid, COLOR_RED, "You've already planted a bomb!");
  62.     }
  63.     if(strcmp(cmdtext, "/detonate", true) == 0)
  64.     {
  65.         if(NuclearBomb[playerid][bombactive])
  66.         {
  67.             NuclearBomb[playerid][timer] = SetTimerEx("Detonation", 250, 1, "i", playerid);
  68.             DestroyObject(NuclearBomb[playerid][Nuke]);
  69.             SendClientMessage(playerid, COLOR_LIGHTBLUE, "Bomb detonated.");
  70.         }
  71.         else return SendClientMessage(playerid, COLOR_RED, "You haven't planted a bomb!");
  72.     }
  73.     return 0;
  74. }
  75.  
  76. forward Detonation(playerid);
  77. public Detonation(playerid)
  78. {
  79.     if(NuclearBomb[playerid][count] == 0)
  80.     {
  81.         CreateExplosion(NuclearBomb[playerid][x], NuclearBomb[playerid][y], NuclearBomb[playerid][z], 7, 10);
  82.     }
  83.     else if(NuclearBomb[playerid][count] == 1)
  84.     {
  85.         CreateExplosion(NuclearBomb[playerid][x], NuclearBomb[playerid][y], NuclearBomb[playerid][z], 7, 10);
  86.         CreateExplosion(NuclearBomb[playerid][x], NuclearBomb[playerid][y], NuclearBomb[playerid][z]+3, 7, 10);
  87.     }
  88.     else if(NuclearBomb[playerid][count] == 2)
  89.     {
  90.         CreateExplosion(NuclearBomb[playerid][x], NuclearBomb[playerid][y], NuclearBomb[playerid][z], 7, 10);
  91.         CreateExplosion(NuclearBomb[playerid][x], NuclearBomb[playerid][y], NuclearBomb[playerid][z]+3, 7, 10);
  92.         CreateExplosion(NuclearBomb[playerid][x], NuclearBomb[playerid][y], NuclearBomb[playerid][z]+6, 7, 10);
  93.     }
  94.     else if(NuclearBomb[playerid][count] == 3)
  95.     {
  96.         CreateExplosion(NuclearBomb[playerid][x], NuclearBomb[playerid][y], NuclearBomb[playerid][z]+3, 7, 10);
  97.         CreateExplosion(NuclearBomb[playerid][x], NuclearBomb[playerid][y], NuclearBomb[playerid][z]+6, 7, 10);
  98.         CreateExplosion(NuclearBomb[playerid][x], NuclearBomb[playerid][y], NuclearBomb[playerid][z]+9, 7, 10);
  99.     }
  100.     else if(NuclearBomb[playerid][count] == 4)
  101.     {
  102.         CreateExplosion(NuclearBomb[playerid][x], NuclearBomb[playerid][y], NuclearBomb[playerid][z]+6, 7, 10);
  103.         CreateExplosion(NuclearBomb[playerid][x], NuclearBomb[playerid][y], NuclearBomb[playerid][z]+9, 7, 10);
  104.         CreateExplosion(NuclearBomb[playerid][x], NuclearBomb[playerid][y], NuclearBomb[playerid][z]+12, 7, 10);
  105.     }
  106.     else if(NuclearBomb[playerid][count] == 5)
  107.     {
  108.         CreateExplosion(NuclearBomb[playerid][x], NuclearBomb[playerid][y], NuclearBomb[playerid][z]+9, 7, 10);
  109.         CreateExplosion(NuclearBomb[playerid][x], NuclearBomb[playerid][y], NuclearBomb[playerid][z]+12, 7, 10);
  110.         CreateExplosion(NuclearBomb[playerid][x], NuclearBomb[playerid][y], NuclearBomb[playerid][z]+15, 7, 10);
  111.     }
  112.     else if(NuclearBomb[playerid][count] == 6)
  113.     {
  114.         CreateExplosion(NuclearBomb[playerid][x], NuclearBomb[playerid][y], NuclearBomb[playerid][z]+12, 7, 10);
  115.         CreateExplosion(NuclearBomb[playerid][x], NuclearBomb[playerid][y], NuclearBomb[playerid][z]+15, 7, 10);
  116.         CreateExplosion(NuclearBomb[playerid][x], NuclearBomb[playerid][y], NuclearBomb[playerid][z]+18, 7, 10);
  117.     }
  118.     else if(NuclearBomb[playerid][count] == 7)
  119.     {
  120.         CreateExplosion(NuclearBomb[playerid][x], NuclearBomb[playerid][y], NuclearBomb[playerid][z]+15, 7, 10);
  121.         CreateExplosion(NuclearBomb[playerid][x], NuclearBomb[playerid][y], NuclearBomb[playerid][z]+18, 7, 10);
  122.         CreateExplosion(NuclearBomb[playerid][x], NuclearBomb[playerid][y], NuclearBomb[playerid][z]+21, 7, 10);
  123.     }
  124.     else if(NuclearBomb[playerid][count] == 9)
  125.     {
  126.         CreateExplosion(NuclearBomb[playerid][x], NuclearBomb[playerid][y], NuclearBomb[playerid][z]+18, 7, 10);
  127.         CreateExplosion(NuclearBomb[playerid][x], NuclearBomb[playerid][y], NuclearBomb[playerid][z]+21, 7, 10);
  128.         CreateExplosion(NuclearBomb[playerid][x], NuclearBomb[playerid][y], NuclearBomb[playerid][z]+24, 7, 10);
  129.         CreateExplosion(NuclearBomb[playerid][x], NuclearBomb[playerid][y]+10, NuclearBomb[playerid][z]+24, 7, 10);
  130.         CreateExplosion(NuclearBomb[playerid][x], NuclearBomb[playerid][y]-10, NuclearBomb[playerid][z]+24, 7, 10);
  131.         CreateExplosion(NuclearBomb[playerid][x]+10, NuclearBomb[playerid][y], NuclearBomb[playerid][z]+24, 7, 10);
  132.         CreateExplosion(NuclearBomb[playerid][x]-10, NuclearBomb[playerid][y], NuclearBomb[playerid][z]+24, 7, 10);
  133.     }
  134.     else if(NuclearBomb[playerid][count] == 10)
  135.     {
  136.         CreateExplosion(NuclearBomb[playerid][x], NuclearBomb[playerid][y], NuclearBomb[playerid][z]+21, 7, 10);
  137.         CreateExplosion(NuclearBomb[playerid][x], NuclearBomb[playerid][y], NuclearBomb[playerid][z]+24, 7, 10);
  138.         CreateExplosion(NuclearBomb[playerid][x], NuclearBomb[playerid][y]+10, NuclearBomb[playerid][z]+24, 7, 10);
  139.         CreateExplosion(NuclearBomb[playerid][x], NuclearBomb[playerid][y]-10, NuclearBomb[playerid][z]+24, 7, 10);
  140.         CreateExplosion(NuclearBomb[playerid][x]+10, NuclearBomb[playerid][y], NuclearBomb[playerid][z]+24, 7, 10);
  141.         CreateExplosion(NuclearBomb[playerid][x]-10, NuclearBomb[playerid][y], NuclearBomb[playerid][z]+24, 7, 10);
  142.         CreateExplosion(NuclearBomb[playerid][x], NuclearBomb[playerid][y], NuclearBomb[playerid][z]+27, 7, 10);
  143.         CreateExplosion(NuclearBomb[playerid][x], NuclearBomb[playerid][y]+7, NuclearBomb[playerid][z]+27, 7, 10);
  144.         CreateExplosion(NuclearBomb[playerid][x], NuclearBomb[playerid][y]-7, NuclearBomb[playerid][z]+27, 7, 10);
  145.         CreateExplosion(NuclearBomb[playerid][x]+7, NuclearBomb[playerid][y], NuclearBomb[playerid][z]+27, 7, 10);
  146.         CreateExplosion(NuclearBomb[playerid][x]-7, NuclearBomb[playerid][y], NuclearBomb[playerid][z]+27, 7, 10);
  147.     }
  148.     else if(NuclearBomb[playerid][count] >= 11)
  149.     {
  150.         CreateExplosion(NuclearBomb[playerid][x], NuclearBomb[playerid][y], NuclearBomb[playerid][z]+24, 7, 10);
  151.         CreateExplosion(NuclearBomb[playerid][x], NuclearBomb[playerid][y]+10, NuclearBomb[playerid][z]+24, 7, 10);
  152.         CreateExplosion(NuclearBomb[playerid][x], NuclearBomb[playerid][y]-10, NuclearBomb[playerid][z]+24, 7, 10);
  153.         CreateExplosion(NuclearBomb[playerid][x]+10, NuclearBomb[playerid][y], NuclearBomb[playerid][z]+24, 7, 10);
  154.         CreateExplosion(NuclearBomb[playerid][x]-10, NuclearBomb[playerid][y], NuclearBomb[playerid][z]+24, 7, 10);
  155.         CreateExplosion(NuclearBomb[playerid][x], NuclearBomb[playerid][y], NuclearBomb[playerid][z]+27, 7, 10);
  156.         CreateExplosion(NuclearBomb[playerid][x], NuclearBomb[playerid][y]+7, NuclearBomb[playerid][z]+27, 7, 10);
  157.         CreateExplosion(NuclearBomb[playerid][x], NuclearBomb[playerid][y]-7, NuclearBomb[playerid][z]+27, 7, 10);
  158.         CreateExplosion(NuclearBomb[playerid][x]+7, NuclearBomb[playerid][y], NuclearBomb[playerid][z]+27, 7, 10);
  159.         CreateExplosion(NuclearBomb[playerid][x]-7, NuclearBomb[playerid][y], NuclearBomb[playerid][z]+27, 7, 10);
  160.         CreateExplosion(NuclearBomb[playerid][x], NuclearBomb[playerid][y], NuclearBomb[playerid][z]+30, 7, 10);
  161.         CreateExplosion(NuclearBomb[playerid][x], NuclearBomb[playerid][y]+3, NuclearBomb[playerid][z]+30, 7, 10);
  162.         CreateExplosion(NuclearBomb[playerid][x], NuclearBomb[playerid][y]-3, NuclearBomb[playerid][z]+30, 7, 10);
  163.         CreateExplosion(NuclearBomb[playerid][x]+3, NuclearBomb[playerid][y], NuclearBomb[playerid][z]+30, 7, 10);
  164.         CreateExplosion(NuclearBomb[playerid][x]-3, NuclearBomb[playerid][y], NuclearBomb[playerid][z]+30, 7, 10);
  165.         KillTimer(NuclearBomb[playerid][timer]);
  166.         NuclearBomb[playerid][count] = 0;
  167.         NuclearBomb[playerid][bombactive] = false;
  168.     }
  169.     if(!detonated[playerid])
  170.     {
  171.  
  172.         NuclearBomb[playerid][shock] = SetTimerEx("Shockwave", 500, 1, "i", playerid);
  173.         detonated[playerid] = true;
  174.        
  175.     }
  176.     NuclearBomb[playerid][count]++;
  177.     return 0;
  178. }
  179.  
  180. forward Shockwave(playerid);
  181. public Shockwave(playerid)
  182. {
  183.     NuclearBomb[playerid][area]+= 100;
  184.    
  185.     for(new sz=0; sz<MAX_PLAYERS;sz++)
  186.     {
  187.         if(PlayerToPoint(NuclearBomb[playerid][area], sz, NuclearBomb[playerid][x], NuclearBomb[playerid][y], NuclearBomb[playerid][z])/* && !PlayerPushed[sz]*/)
  188.         {
  189.             PushPlayer(sz, NuclearBomb[playerid][x], NuclearBomb[playerid][y]);
  190.             PlayerPushed[sz] = true;
  191.         }
  192.     }
  193.     if(NuclearBomb[playerid][area] >= 1000)
  194.     {
  195.         NuclearBomb[playerid][area] = 0;
  196.         for(new pz=0;pz<MAX_PLAYERS;pz++) PlayerPushed[pz] = false;
  197.         detonated[playerid] = false;
  198.         KillTimer(NuclearBomb[playerid][shock]);
  199.     }
  200.     return 0;
  201. }
  202.  
  203. stock PushPlayer(playerid, Float:X, Float:Y)
  204. {
  205.     new
  206.        Float:pX,
  207.        Float:pY,
  208.        Float:pZ;
  209.     GetPlayerPos(playerid, pX, pY, pZ);
  210.  
  211.     new Float:ang = (-acos((X - pX) / floatsqroot((X - pX)*(X - pX) + (Y - pY)*(Y - pY))) - 90.0);
  212.     pX = (-3 * floatsin(-ang, degrees));
  213.     pY = (-3 * floatcos(-ang, degrees));
  214.  
  215.     if(GetPlayerState(playerid) == 2)
  216.     {
  217.         SetVehicleVelocity(GetPlayerVehicleID(playerid), pX, pY, 1.0);
  218.         SetVehicleHealth(GetPlayerVehicleID(playerid), 0.0);
  219.     }
  220.     else if(GetPlayerState(playerid) == 1)
  221.     {
  222.         SetPlayerVelocity(playerid, pX, pY, 1.0);
  223.     }
  224.     SetPlayerHealth(playerid, 1.0);
  225.     return 0;
  226. }
  227.  
  228. PlayerToPoint(Float:radius, playerid, Float:X, Float:Y, Float:Z)
  229. {
  230.     new Float:oldpos[3], Float:temppos[3];
  231.     GetPlayerPos(playerid, oldpos[0], oldpos[1], oldpos[2]);
  232.     temppos[0] = (oldpos[0] -X);
  233.     temppos[1] = (oldpos[1] -Y);
  234.     temppos[2] = (oldpos[2] -Z);
  235.     if(((temppos[0] < radius) && (temppos[0] > -radius)) && ((temppos[1] < radius) && (temppos[1] > -radius)) && ((temppos[2] < radius) && (temppos[2] > -radius)))
  236.     {
  237.         return true;
  238.     }
  239.     return false;
  240. }
Advertisement
Add Comment
Please, Sign In to add comment