Advertisement
Guest User

Untitled

a guest
Sep 26th, 2011
2,409
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pawn 4.25 KB | None | 0 0
  1. //Backwardsman97
  2.  
  3. #include <a_samp>
  4.  
  5. /*------------------------------------
  6. native AddVehicleMissiles(vehicleid,Float:offsetx,Float:offsetz)
  7. native RemoveVehicleMissiles(vehicleid)
  8. native IsVehicleHot(vehicleid)
  9. -------------------------------------*/
  10.  
  11. #define MISSILE_DETONATE_TIME 500   //milliseconds
  12. #define MISSILE_EXPLODE_TYPE 10
  13. #define MISSILE_EXPLODE_RADIUS 10.0
  14. #define MISSILE_SPEED 40.0
  15. #define MISSILE_FIRE_KEY 1
  16.  
  17. new VehicleFire[MAX_VEHICLES];
  18. new VehicleBomb[MAX_VEHICLES][2];
  19. new VehicleSmok[MAX_VEHICLES][2];
  20. new Float:VehicleOffsetX[MAX_VEHICLES];
  21. new Float:VehicleOffsetZ[MAX_VEHICLES];
  22.  
  23. forward VM_OnPlayerKeyStateChange(playerid,newkeys);
  24. forward VM_Explode(vehicleid,mode);
  25. forward VM_OnVehicleFire(vehicleid,slot);
  26.  
  27. stock AddVehicleMissiles(vehicleid,Float:offsetx,Float:offsetz)
  28. {
  29.     if(!VehicleFire[vehicleid])
  30.     {
  31.         new Float:x,Float:u;
  32.         GetVehiclePos(vehicleid,x,u,u);
  33.         if(x != 0)
  34.         {
  35.             if(!IsValidObject(VehicleBomb[vehicleid][1]))
  36.             {
  37.                
  38.                 VehicleBomb[vehicleid][0] = CreateObject(3790,0.0,0.0,0.0,0,0,0,300.0);
  39.                 VehicleBomb[vehicleid][1] = CreateObject(3790,0.0,0.0,0.0,0,0,0,300.0);
  40.  
  41.                 AttachObjectToVehicle(VehicleBomb[vehicleid][0],vehicleid,offsetx,0,offsetz,0,0,270);
  42.                 AttachObjectToVehicle(VehicleBomb[vehicleid][1],vehicleid,-offsetx,0,offsetz,0,0,270);
  43.  
  44.                 VehicleOffsetX[vehicleid] = offsetx;
  45.                 VehicleOffsetZ[vehicleid] = offsetz;
  46.                 return 1;
  47.             }
  48.         }
  49.     }
  50.     return 0;
  51. }
  52.  
  53. stock RemoveVehicleMissiles(vehicleid)
  54. {
  55.     if(!VehicleFire[vehicleid])
  56.     {
  57.         if(IsValidObject(VehicleBomb[vehicleid][1]))
  58.         {
  59.             if(VehicleBomb[vehicleid][0])
  60.             {
  61.                 DestroyObject(VehicleBomb[vehicleid][0]);
  62.                 DestroyObject(VehicleBomb[vehicleid][1]);
  63.                 return 1;
  64.             }
  65.             return DestroyObject(VehicleBomb[vehicleid][1]),1;
  66.         }
  67.     }
  68.     return 0;
  69. }
  70.  
  71. stock IsVehicleHot(vehicleid)
  72. {
  73.     if(IsValidObject(VehicleBomb[vehicleid][1]))
  74.         return 1;
  75.  
  76.     return 0;
  77. }
  78.  
  79.  
  80. public VM_OnPlayerKeyStateChange(playerid,newkeys)
  81. {
  82.     if((newkeys & MISSILE_FIRE_KEY) == (MISSILE_FIRE_KEY))
  83.     {
  84.         new id = GetPlayerVehicleID(playerid);
  85.         if(!VehicleFire[id])
  86.         {
  87.             if(id)
  88.             {
  89.                 if(IsValidObject(VehicleBomb[id][1]))
  90.                 {
  91.                     new
  92.                     Float:x,
  93.                     Float:y,
  94.                     Float:z,
  95.                     Float:a;
  96.  
  97.  
  98.                     VehicleFire[id] = 1;
  99.  
  100.                     if(IsValidObject(VehicleBomb[id][0]))
  101.                     {
  102.                         DestroyObject(VehicleBomb[id][0]);
  103.  
  104.                         GetVehiclePos(id,x,y,z);
  105.                         GetVehicleZAngle(id,a);
  106.  
  107.                         a += 270;
  108.                         z += VehicleOffsetZ[id];
  109.  
  110.                         x += (VehicleOffsetX[id] * floatsin(-a, degrees));
  111.                         y += (VehicleOffsetX[id] * floatcos(-a, degrees));
  112.  
  113.                         VehicleBomb[id][0] = CreateObject(3790,x,y,z,0,0,a,300.0);
  114.                         VehicleSmok[id][0] = CreateObject(18731,x,y,z-1.3,0,0,0,300.0);
  115.  
  116.                         a += 90;
  117.  
  118.                         x += (30 * floatsin(-a, degrees));
  119.                         y += (30 * floatcos(-a, degrees));
  120.  
  121.                         MoveObject(VehicleBomb[id][0],x,y,z,MISSILE_SPEED);
  122.                         MoveObject(VehicleSmok[id][0],x,y,z-1.3,MISSILE_SPEED);
  123.  
  124.                         SetTimerEx("VM_Explode",MISSILE_DETONATE_TIME,0,"dd",id,0);
  125.                         VM_OnVehicleFire(id,0);
  126.                         return 1;
  127.                     }
  128.                     DestroyObject(VehicleBomb[id][1]);
  129.  
  130.                     GetVehiclePos(id,x,y,z);
  131.                     GetVehicleZAngle(id,a);
  132.  
  133.                     a += 90;
  134.                     z += VehicleOffsetZ[id];
  135.  
  136.                     x += (VehicleOffsetX[id] * floatsin(-a, degrees));
  137.                     y += (VehicleOffsetX[id] * floatcos(-a, degrees));
  138.  
  139.                     VehicleBomb[id][1] = CreateObject(3790,x,y,z,0,0,a+180,300.0);
  140.                     VehicleSmok[id][1] = CreateObject(18731,x,y,z-1.3,0,0,0,300.0);
  141.  
  142.                     a += 270;
  143.  
  144.                     x += (30 * floatsin(-a, degrees));
  145.                     y += (30 * floatcos(-a, degrees));
  146.  
  147.                     MoveObject(VehicleBomb[id][1],x,y,z,MISSILE_SPEED);
  148.                     MoveObject(VehicleSmok[id][1],x,y,z-1.3,MISSILE_SPEED);
  149.  
  150.                     SetTimerEx("VM_Explode",MISSILE_DETONATE_TIME,0,"dd",id,1);
  151.                     VM_OnVehicleFire(id,1);
  152.                     return 1;
  153.                 }
  154.             }
  155.             return 1;
  156.         }
  157.     }
  158.     return 1;
  159. }
  160.  
  161. public VM_Explode(vehicleid,mode)
  162. {
  163.     if(IsValidObject(VehicleBomb[vehicleid][mode]))
  164.     {
  165.         new
  166.         Float:x,
  167.         Float:y,
  168.         Float:z;
  169.  
  170.         GetObjectPos(VehicleBomb[vehicleid][mode],x,y,z);
  171.         CreateExplosion(x,y,z,MISSILE_EXPLODE_TYPE,MISSILE_EXPLODE_RADIUS);
  172.  
  173.         DestroyObject(VehicleBomb[vehicleid][mode]);
  174.         DestroyObject(VehicleSmok[vehicleid][mode]);
  175.  
  176.         VehicleFire[vehicleid] = 0;
  177.         return 1;
  178.     }
  179.     return 1;
  180. }
  181.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement