Advertisement
Guest User

Spike Strips

a guest
May 9th, 2010
663
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.41 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, -1, -1);
  92. }
  93. }
  94.  
  95. public DestroyStinger(objectid, pickid1, pickid2, pickid3, pickid4){
  96. DestroyObject(objectid);
  97. DestroyPickup(pickid1);
  98. DestroyPickup(pickid2);
  99. DestroyPickup(pickid3);
  100. DestroyPickup(pickid4);
  101. iPickups[pickid1] = -1;
  102. iPickups[pickid2] = -1;
  103. iPickups[pickid3] = -1;
  104. iPickups[pickid4] = -1;
  105. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement