Advertisement
Guest User

Spike Strips

a guest
May 27th, 2010
165
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pawn 6.74 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][5];
  7. #else
  8.     new iPickups[MAX_PICKUPS][5];
  9. #endif
  10.  
  11. forward DestroyStinger(stingerid);
  12.  
  13. public OnFilterScriptInit()
  14. {
  15.     print(" >>> Spike Strips loaded.");
  16.     for(new i = 0; i < sizeof(iPickups); i++){
  17.         iPickups[i][0] = -1;
  18.         iPickups[i][1] = -1;
  19.         iPickups[i][2] = -1;
  20.         iPickups[i][3] = -1;
  21.         iPickups[i][4] = -1;
  22.     }
  23.     return 1;
  24. }
  25.  
  26. public OnFilterScriptExit()
  27. {
  28.     for(new i = 0; i < sizeof(iPickups); i++){
  29.         DestroyObject(iPickups[i][0]);
  30.         DestroyPickup(iPickups[i][1]);
  31.         DestroyPickup(iPickups[i][2]);
  32.         DestroyPickup(iPickups[i][3]);
  33.         DestroyPickup(iPickups[i][4]);
  34.     }
  35.     return 1;
  36. }
  37.  
  38. public OnPlayerCommandText(playerid, cmdtext[])
  39. {
  40.     if (strcmp("/stinger", cmdtext, true, 8) == 0)
  41.     {
  42.         new vehicleid = GetPlayerVehicleID(playerid);
  43.         if(vehicleid == 0){
  44.  
  45.             new Float:X, Float:Y, Float:Z, Float:A;
  46.             GetPlayerPos(playerid, X, Y, Z);
  47.             GetPlayerFacingAngle(playerid, A);
  48.             CreateSmallStinger(X+(6.0*floatsin(-A, degrees)), Y+(6.0*floatcos(-A, degrees)), Z-0.825, A, GetPlayerVirtualWorld(playerid), 60000);
  49.         }
  50.         else{
  51.             new Float:X, Float:Y, Float:Z, Float:A;
  52.             GetVehiclePos(vehicleid, X, Y, Z);
  53.             GetVehicleZAngle(vehicleid, A);
  54.             CreateLargeStinger(X-(10.0*floatsin(-A, degrees)), Y-(10.0*floatcos(-A, degrees)), Z-0.325, A, GetPlayerVirtualWorld(playerid), 60000);
  55.         }
  56.         return 1;
  57.     }
  58.     if (strcmp("/destroystinger", cmdtext, true, 14) == 0)
  59.     {
  60.         new Float:X, Float:Y, Float:Z;
  61.         for(new stingerid = 0; stingerid < sizeof(iPickups); stingerid++){
  62.             if(iPickups[stingerid][0] == -1)
  63.                 continue;
  64.            
  65.             GetObjectPos(iPickups[stingerid][0], X, Y, Z);
  66.             if(IsPlayerInRangeOfPoint(playerid, 3.0, X, Y, Z)){
  67.                 DestroyStinger(stingerid);
  68.                 break;
  69.             }
  70.         }
  71.         return 1;
  72.     }
  73.     return 0;
  74. }
  75.  
  76. public OnPlayerPickUpPickup(playerid, pickupid)
  77. {
  78.     for(new stingerid = 0; stingerid < sizeof(iPickups); stingerid++){
  79.         if(pickupid == iPickups[stingerid][1]){
  80.             new Float:X, Float:Y, Float:Z, Float:A;
  81.             GetObjectPos(iPickups[stingerid][0], X, Y, Z);
  82.             GetObjectRot(iPickups[stingerid][0], A, A, A);
  83.             new Float:dis1 = floatsin(-A, degrees), Float:dis2 = floatcos(-A, degrees);
  84.             PopPlayerTires(playerid);
  85.             DestroyPickup(pickupid);
  86.             if(iPickups[stingerid][3] == -1){ // Small Stinger
  87.                 iPickups[stingerid][1] = CreatePickup(1007, 14, X+(1.5*dis1), Y+(1.5*dis2), Z, GetPlayerVirtualWorld(playerid));
  88.             }
  89.             else{ // Large Stinger
  90.                 iPickups[stingerid][1] = CreatePickup(1007, 14, X+(4.0*dis1), Y+(4.0*dis2), Z, GetPlayerVirtualWorld(playerid));
  91.             }
  92.             break;
  93.         }
  94.         else if(pickupid == iPickups[stingerid][2]){
  95.             new Float:X, Float:Y, Float:Z, Float:A;
  96.             GetObjectPos(iPickups[stingerid][0], X, Y, Z);
  97.             GetObjectRot(iPickups[stingerid][0], A, A, A);
  98.             new Float:dis1 = floatsin(-A, degrees), Float:dis2 = floatcos(-A, degrees);
  99.             PopPlayerTires(playerid);
  100.             DestroyPickup(pickupid);
  101.             if(iPickups[stingerid][3] == -1){ // Small Stinger
  102.                 iPickups[stingerid][2] = CreatePickup(1007, 14, X-(1.5*dis1), Y-(1.5*dis2), Z, GetPlayerVirtualWorld(playerid));
  103.             }
  104.             else{ // Large Stinger
  105.                 iPickups[stingerid][2] = CreatePickup(1007, 14, X+(1.25*dis1), Y+(1.25*dis2), Z, GetPlayerVirtualWorld(playerid));
  106.             }
  107.             break;
  108.         }
  109.         else if(pickupid == iPickups[stingerid][3]){
  110.             new Float:X, Float:Y, Float:Z, Float:A;
  111.             GetObjectPos(iPickups[stingerid][0], X, Y, Z);
  112.             GetObjectRot(iPickups[stingerid][0], A, A, A);
  113.             new Float:dis1 = floatsin(-A, degrees), Float:dis2 = floatcos(-A, degrees);
  114.             PopPlayerTires(playerid);
  115.             DestroyPickup(pickupid);
  116.             iPickups[stingerid][3] = CreatePickup(1007, 14, X-(4.0*dis1), Y-(4.0*dis2), Z, GetPlayerVirtualWorld(playerid));
  117.             break;
  118.         }
  119.         else if(pickupid == iPickups[stingerid][4]){
  120.             new Float:X, Float:Y, Float:Z, Float:A;
  121.             GetObjectPos(iPickups[stingerid][0], X, Y, Z);
  122.             GetObjectRot(iPickups[stingerid][0], A, A, A);
  123.             new Float:dis1 = floatsin(-A, degrees), Float:dis2 = floatcos(-A, degrees);
  124.             PopPlayerTires(playerid);
  125.             DestroyPickup(pickupid);
  126.             iPickups[stingerid][4] = CreatePickup(1007, 14, X-(1.25*dis1), Y-(1.25*dis2), Z, GetPlayerVirtualWorld(playerid));
  127.             break;
  128.         }
  129.     }
  130.     return 1;
  131. }
  132.  
  133. stock PopPlayerTires(playerid){
  134.     new vehicleid = GetPlayerVehicleID(playerid);
  135.     if(vehicleid != 0){
  136.         new panels, doors, lights, tires;
  137.         GetVehicleDamageStatus(vehicleid, panels, doors, lights, tires);
  138.         UpdateVehicleDamageStatus(vehicleid, panels, doors, lights, 15);
  139.     }
  140. }
  141.  
  142. stock CreateLargeStinger(Float:X, Float:Y, Float:Z, Float:A, virtualworld, timer){
  143.     for(new stingerid = 0; stingerid < sizeof(iPickups); stingerid++){
  144.         if(iPickups[stingerid][0] == -1){
  145.             new Float:dis1 = floatsin(-A, degrees), Float:dis2 = floatcos(-A, degrees);
  146.             iPickups[stingerid][0] = CreateObject(2892, X, Y, Z, 0.0, 0.0, A);
  147.             iPickups[stingerid][1] = CreatePickup(1007, 14, X+(4.0*dis1), Y+(4.0*dis2), Z, virtualworld);
  148.             iPickups[stingerid][2] = CreatePickup(1007, 14, X+(1.25*dis1), Y+(1.25*dis2), Z, virtualworld);
  149.             iPickups[stingerid][3] = CreatePickup(1007, 14, X-(4.0*dis1), Y-(4.0*dis2), Z, virtualworld);
  150.             iPickups[stingerid][4] = CreatePickup(1007, 14, X-(1.25*dis1), Y-(1.25*dis2), Z, virtualworld);
  151.             if(timer > 0){
  152.                 SetTimerEx("DestroyStinger", timer, 0, "i", stingerid);
  153.             }
  154.         }
  155.     }
  156. }
  157.  
  158. stock CreateSmallStinger(Float:X, Float:Y, Float:Z, Float:A, virtualworld, timer){
  159.     for(new stingerid = 0; stingerid < sizeof(iPickups); stingerid++){
  160.         if(iPickups[stingerid][0] == -1){
  161.             new Float:dis1 = floatsin(-A, degrees), Float:dis2 = floatcos(-A, degrees);
  162.             iPickups[stingerid][0] = CreateObject(2899, X, Y, Z, 0.0, 0.0, A);
  163.             iPickups[stingerid][1] = CreatePickup(1007, 14, X+(1.5*dis1), Y+(1.5*dis2), Z, virtualworld);
  164.             iPickups[stingerid][2] = CreatePickup(1007, 14, X-(1.5*dis1), Y-(1.5*dis2), Z, virtualworld);
  165.             if(timer > 0){
  166.                 SetTimerEx("DestroyStinger", timer, 0, "i", stingerid);
  167.             }
  168.             break;
  169.         }
  170.     }
  171. }
  172.  
  173. public DestroyStinger(stingerid){
  174.     DestroyObject(iPickups[stingerid][0]);
  175.     DestroyPickup(iPickups[stingerid][1]);
  176.     DestroyPickup(iPickups[stingerid][2]);
  177.     DestroyPickup(iPickups[stingerid][3]);
  178.     DestroyPickup(iPickups[stingerid][4]);
  179.     iPickups[stingerid][0] = -1;
  180.     iPickups[stingerid][1] = -1;
  181.     iPickups[stingerid][2] = -1;
  182.     iPickups[stingerid][3] = -1;
  183.     iPickups[stingerid][4] = -1;
  184. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement