Advertisement
Guest User

Spike Strips

a guest
May 8th, 2010
387
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pawn 3.40 KB | None | 0 0
  1. #include <a_samp>
  2.  
  3. //#define ALLOWED_PICKUPS 350 // Uncomment this if you know that you will never reach 2048 pickups.
  4.  
  5. #if defined ALLOWED_PICKUPS
  6.     new iPickups[ALLOWED_PICKUPS];
  7. #else
  8.     new iPickups[MAX_PICKUPS];
  9. #endif
  10.  
  11. forward DestroyStinger(objectid, pickid1, pickid2, pickid3, pickid4);
  12.  
  13. public OnFilterScriptInit()
  14. {
  15.     print(" >>> Spike Strips loaded.");
  16.     return 1;
  17. }
  18.  
  19. public OnFilterScriptExit()
  20. {
  21.     for(new i = 0; i < sizeof(iPickups); i++){
  22.         if(iPickups[i] != 0){
  23.             if(IsValidObject(iPickups[i]))
  24.                 DestroyObject(iPickups[i]);
  25.             DestroyPickup(i);
  26.         }
  27.     }
  28.     return 1;
  29. }
  30.  
  31. public OnPlayerCommandText(playerid, cmdtext[])
  32. {
  33.     if (strcmp("/stinger", cmdtext, true, 8) == 0)
  34.     {
  35.         new vehicleid = GetPlayerVehicleID(playerid);
  36.         if(vehicleid == 0){
  37.  
  38.             new Float:X, Float:Y, Float:Z, Float:A;
  39.             GetPlayerPos(playerid, X, Y, Z);
  40.             GetPlayerFacingAngle(playerid, A);
  41.             CreateSmallStinger(X+(6.0*floatsin(-A, degrees)), Y+(6.0*floatcos(-A, degrees)), Z-0.825, A, GetPlayerVirtualWorld(playerid), 60000);
  42.         }
  43.         else{
  44.             new Float:X, Float:Y, Float:Z, Float:A;
  45.             GetVehiclePos(vehicleid, X, Y, Z);
  46.             GetVehicleZAngle(vehicleid, A);
  47.             CreateLargeStinger(X-(10.0*floatsin(-A, degrees)), Y-(10.0*floatcos(-A, degrees)), Z-0.325, A, GetPlayerVirtualWorld(playerid), 60000);
  48.         }
  49.         return 1;
  50.     }
  51.     return 0;
  52. }
  53.  
  54. public OnPlayerPickUpPickup(playerid, pickupid)
  55. {
  56.     if(iPickups[pickupid] != 0){
  57.         new vehicleid = GetPlayerVehicleID(playerid);
  58.         if(vehicleid != 0){
  59.             new panels, doors, lights, tires;
  60.             GetVehicleDamageStatus(vehicleid, panels, doors, lights, tires);
  61.             UpdateVehicleDamageStatus(vehicleid, panels, doors, lights, 15);
  62.         }
  63.     }
  64.     return 1;
  65. }
  66.  
  67. stock CreateLargeStinger(Float:X, Float:Y, Float:Z, Float:A, virtualworld, timer){
  68.     new Float:dis1 = floatsin(-A, degrees), Float:dis2 = floatcos(-A, degrees);
  69.     new pickid1 = CreatePickup(1007, 14, X+(4.0*dis1), Y+(4.0*dis2), Z, virtualworld);
  70.     new pickid2 = CreatePickup(1007, 14, X+(1.25*dis1), Y+(1.25*dis2), Z, virtualworld);
  71.     new pickid3 = CreatePickup(1007, 14, X-(4.0*dis1), Y-(4.0*dis2), Z, virtualworld);
  72.     new pickid4 = CreatePickup(1007, 14, X-(1.25*dis1), Y-(1.25*dis2), Z, virtualworld);
  73.     new objectid = CreateObject(2892, X, Y, Z, 0.0, 0.0, A);
  74.     iPickups[pickid1] = objectid;
  75.     iPickups[pickid2] = objectid;
  76.     iPickups[pickid3] = objectid;
  77.     iPickups[pickid4] = objectid;
  78.     if(timer > 0){
  79.         SetTimerEx("DestroyStinger", timer, 0, "iiiii", objectid, pickid1, pickid2, pickid3, pickid4);
  80.     }
  81. }
  82.  
  83. stock CreateSmallStinger(Float:X, Float:Y, Float:Z, Float:A, virtualworld, timer){
  84.     new Float:dis1 = floatsin(-A, degrees), Float:dis2 = floatcos(-A, degrees);
  85.     new pickid1 = CreatePickup(1007, 14, X+(1.5*dis1), Y+(1.5*dis2), Z, virtualworld);
  86.     new pickid2 = CreatePickup(1007, 14, X-(1.5*dis1), Y-(1.5*dis2), Z, virtualworld);  iPickups[pickid1] = 1;
  87.     new objectid = CreateObject(2899, X, Y, Z, 0.0, 0.0, A);
  88.     iPickups[pickid1] = objectid;
  89.     iPickups[pickid2] = objectid;
  90.     if(timer > 0){
  91.         SetTimerEx("DestroyStinger", timer, 0, "iiiii", objectid, pickid1, pickid2, 0, 0);
  92.     }
  93. }
  94.  
  95. public DestroyStinger(objectid, pickid1, pickid2, pickid3, pickid4){
  96.     DestroyObject(objectid);
  97.     iPickups[pickid1] = 0;
  98.     iPickups[pickid2] = 0;
  99.     iPickups[pickid3] = 0;
  100.     iPickups[pickid4] = 0;
  101.     DestroyPickup(pickid1);
  102.     DestroyPickup(pickid2);
  103.     DestroyPickup(pickid3);
  104.     DestroyPickup(pickid4);
  105. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement