StreetGT

StreetGT - Van of Motorcycles

Jun 26th, 2013
412
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pawn 7.61 KB | None | 0 0
  1. // Fill free to edit
  2. // Just keep my credits.
  3. // Van of motorcycles v2 by StreetGT from www.forum.sa-mp.com
  4.  
  5. #include <a_samp>
  6.  
  7. new GetIn[MAX_PLAYERS], InteriorTruck[9], slot = 0;
  8. new van;
  9.  
  10. forward Float:GetDistanceBetweenVehicles(vehicleid,carid);
  11. forward Float:GetDistBetweenVehiclePlayer(v1, p2);
  12.  
  13. public OnFilterScriptInit()
  14. {
  15.     print("\n--------------------------------------");
  16.     print(" Van of motorcycles by -> StreetGT <-");
  17.     print("--------------------------------------\n");
  18.     van = AddStaticVehicleEx(498,740.5068,-1332.7472,14.1702,269.5034,6,6,-1); // Mechanics Van
  19.     InteriorTruck[0]= CreateObject(11292, 2081.333496, -1375.118530, 300.764832, 0.0000, 0.0000, 0.0000);
  20.     InteriorTruck[1]= CreateObject(974, 2077.989258, -1376.559937, 300.831085, 0.0000, 0.0000, 0.0000);
  21.     InteriorTruck[2]= CreateObject(974, 2077.123047, -1374.362671, 300.655640, 0.0000, 0.0000, 270.0000);
  22.     InteriorTruck[3]= CreateObject(974, 2078.161133, -1373.030640, 300.330536, 0.0000, 0.0000, 0.0000);
  23.     InteriorTruck[4]= CreateObject(2395, 2080.772949, -1376.560547, 299.490601, 0.0000, 0.0000, 180.0000);
  24.     InteriorTruck[5]= CreateObject(1533, 2085.592773, -1373.328857, 299.552917, 0.0000, 0.0000, 270.0000);
  25.     InteriorTruck[6]= CreateObject(1533, 2085.569824, -1374.802246, 299.539307, 0.0000, 0.0000, 270.0000);
  26.     InteriorTruck[7]= CreateObject(1754, 2083.981445, -1373.538574, 299.553741, 0.0000, 0.0000, 0.0000);
  27.     InteriorTruck[8]= CreateObject(1754, 2083.128906, -1373.539063, 299.553741, 0.0000, 0.0000, 0.0000);
  28.     return 1;
  29. }
  30.  
  31. public OnFilterScriptExit()
  32. {
  33.     return 1;
  34. }
  35.  
  36. public OnPlayerConnect(playerid)
  37. {
  38.     GetIn[playerid] = 0;
  39.     return 1;
  40. }
  41.  
  42. public OnPlayerCommandText(playerid, cmdtext[])
  43. {
  44.     if(strcmp(cmdtext, "/descarregar", true) == 0)
  45.     {
  46.         if(IsPlayerConnected(playerid))
  47.         {
  48.             if(GetPlayerVehicleID(playerid) == van)
  49.             {
  50.                 if(slot == 0) return SendClientMessage(playerid, -1, "No bikes inside of the van of motorcycles.");
  51.                 Descarregar();
  52.             }
  53.             else SendClientMessage(playerid, -1, "You are not driving the van of motorcycles!");
  54.         }
  55.     }
  56.     return 0;
  57. }
  58.  
  59. public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
  60. {
  61.     if(newkeys & KEY_YES)
  62.     {
  63.         if(GetDistBetweenVehiclePlayer(van,playerid) <= 3 || IsPlayerInRangeOfPoint(playerid,3.0, 2084.6538,-1374.2390,300.5588))
  64.         {
  65.            GetInto(playerid);
  66.         }
  67.     }
  68.     if ((newkeys==KEY_ACTION) && (IsPlayerInAnyVehicle(playerid)) && (GetPlayerState(playerid)==PLAYER_STATE_DRIVER))
  69.     {
  70.         if (GetVehicleModel(GetPlayerVehicleID(playerid)) == 498)
  71.         {
  72.             new vid = GetClosestVehicle(playerid);
  73.             new Float:x,Float:y,Float:z;
  74.             GetPosBehindVehicle(van,x,y,z);
  75.             if(VehicleToPoint(3.0,vid,x,y,z))
  76.             {
  77.                 if(IsABike(vid))
  78.                 {
  79.                     if(!IsVehicleInUse(vid))
  80.                     {
  81.                         if(slot == 0)
  82.                         {
  83.                             SetVehiclePos(vid,2077.8936,-1375.0763,300.154);
  84.                             SetVehicleZAngle(vid,183.4);
  85.                             slot++;
  86.                         }
  87.                         else if(slot == 1)
  88.                         {
  89.                             SetVehiclePos(vid,2078.9941,-1375.0520,300.1554);
  90.                             SetVehicleZAngle(vid,183.4);
  91.                             slot++;
  92.                         }
  93.                         else if(slot == 2)
  94.                         {
  95.                             SetVehiclePos(vid,2079.8987,-1375.0085,300.1540);
  96.                             SetVehicleZAngle(vid,183.4);
  97.                             slot++;
  98.                         }
  99.                         else if(slot == 3)
  100.                         {
  101.                             SetVehiclePos(vid,2081.0239,-1374.8945,300.1557);
  102.                             SetVehicleZAngle(vid,183.4);
  103.                             slot++;
  104.                         }
  105.                         else return SendClientMessage(playerid,-1,"The van of motorcycles is already full!");
  106.                         if(slot >=0 && slot <= 4 ) { LinkVehicleToInterior(vid,1), SendClientMessage(playerid,0x33CCFFAA,"Vehicle towed to the interior!"); }
  107.                     }
  108.                     else SendClientMessage(playerid, -1,"Someone is inside of the vehicle!");
  109.                 }
  110.                 else SendClientMessage(playerid, -1,"This vehicle is not a bike!");
  111.             }
  112.             else SendClientMessage(playerid, -1,"There is no vehicle near of your boot!");
  113.         }
  114.     }
  115.     return 1;
  116. }
  117.  
  118. stock GetInto(playerid)
  119. {
  120.     if(IsPlayerConnected(playerid))
  121.     {
  122.         if(IsPlayerInAnyVehicle(playerid)) return 1;
  123.         if(GetIn[playerid] == 0)
  124.         {
  125.             if(GetDistBetweenVehiclePlayer(van,playerid) <= 3)
  126.             {
  127.                 GetIn[playerid] = 1;
  128.                 SetPlayerPos(playerid, 2084.479980, -1374.825928, 300.628052);
  129.                 SetPlayerFacingAngle(playerid, 0);
  130.                 SetCameraBehindPlayer(playerid);
  131.                 SetPlayerInterior(playerid, 1);
  132.             }
  133.         }
  134.         else if(GetIn[playerid] == 1)
  135.         {
  136.             if(IsPlayerInRangeOfPoint(playerid,3.0, 2084.6538,-1374.2390,300.5588))
  137.             {
  138.                 GetIn[playerid] = 0;
  139.                 new Float:X, Float:Y, Float:Z;
  140.                 GetVehiclePos(van, X, Y, Z);
  141.                 SetPlayerPos(playerid, X+4, Y, Z);
  142.                 SetPlayerInterior(playerid, 0);
  143.             }
  144.         }
  145.     }
  146.     return 1;
  147. }
  148.  
  149. Descarregar()
  150. {
  151.     for(new v = 0; v < MAX_VEHICLES; v++)
  152.     {
  153.         if(VehicleToPoint(20.0, v, 2084.479980, -1374.825928, 300.628052))
  154.         {
  155.             new Float:X, Float:Y, Float:Z;
  156.             GetVehiclePos(van, X, Y, Z);
  157.             SetVehiclePos(v, X+5, Y, Z);
  158.             LinkVehicleToInterior(v,0);
  159.             slot = 0;
  160.         }
  161.     }
  162.     return 1;
  163. }
  164.  
  165. public Float:GetDistBetweenVehiclePlayer(v1, p2)
  166. {
  167.     new Float:x1,Float:y1,Float:z1,Float:x2,Float:y2,Float:z2;
  168.     if(!IsPlayerConnected(p2))
  169.     {
  170.         return -1.00;
  171.     }
  172.     GetVehiclePos(v1,x1,y1,z1);
  173.     GetPlayerPos(p2,x2,y2,z2);
  174.     return floatsqroot(floatpower(floatabs(floatsub(x2,x1)),2)+floatpower(floatabs(floatsub(y2,y1)),2)+floatpower(floatabs(floatsub(z2,z1)),2));
  175. }
  176.  
  177. VehicleToPoint(Float:radi, vehicleid, Float:x, Float:y, Float:z)
  178. {
  179.     new Float:oldposx, Float:oldposy, Float:oldposz;
  180.     new Float:tempposx, Float:tempposy, Float:tempposz;
  181.     GetVehiclePos(vehicleid, oldposx, oldposy, oldposz);
  182.     tempposx = (oldposx -x);
  183.     tempposy = (oldposy -y);
  184.     tempposz = (oldposz -z);
  185.     if (((tempposx < radi) && (tempposx > -radi)) && ((tempposy < radi) && (tempposy > -radi)) && ((tempposz < radi) && (tempposz > -radi)))
  186.     {
  187.         return 1;
  188.     }
  189.     return 0;
  190. }
  191.  
  192. stock GetPosBehindVehicle(vehicleid, &Float:x, &Float:y, &Float:z, Float:offset=0.5)
  193. {
  194.     new Float:vehicleSize[3], Float:vehiclePos[3];
  195.     GetVehiclePos(vehicleid, vehiclePos[0], vehiclePos[1], vehiclePos[2]);
  196.     GetVehicleModelInfo(GetVehicleModel(vehicleid), VEHICLE_MODEL_INFO_SIZE, vehicleSize[0], vehicleSize[1], vehicleSize[2]);
  197.     GetXYBehindVehicle(vehicleid, vehiclePos[0], vehiclePos[1], (vehicleSize[1]/2)+offset);
  198.     x = vehiclePos[0];
  199.     y = vehiclePos[1];
  200.     z = vehiclePos[2];
  201.     return 1;
  202. }
  203.  
  204. GetXYBehindVehicle(vehicleid, &Float:q, &Float:w, Float:distance)
  205. {
  206.     new Float:a;
  207.     GetVehiclePos(vehicleid, q, w, a);
  208.     GetVehicleZAngle(vehicleid, a);
  209.     q += (distance * -floatsin(-a, degrees));
  210.     w += (distance * -floatcos(-a, degrees));
  211. }
  212.  
  213. forward GetClosestVehicle(playerid);
  214. public GetClosestVehicle(playerid)
  215. {
  216.     new x,Float:dis,Float:dis2,car;
  217.     car = 0;
  218.     dis = 99999.99;
  219.     for ( x = 0; x < MAX_VEHICLES; x++ )
  220.     {
  221.         dis2 = GetDistBetweenVehiclePlayer(x,playerid);
  222.         if((dis2 < dis && dis2 < 18.0) && GetPlayerVehicleID(playerid) != x)
  223.         {
  224.             dis = dis2;
  225.             car = x;
  226.         }
  227.     }
  228.     return car;
  229. }
  230.  
  231. stock IsABike(carid)
  232. {
  233.     new id = GetVehicleModel(carid);
  234.     if(id==448 || id==581 || id==522 || id==461 || id==463 || id==521 || id==523 || id==586|| id==468 || id==471 )
  235.     {
  236.         return 1;
  237.     }
  238.     return 0;
  239. }
  240.  
  241.  
  242. stock IsVehicleInUse(vehicleid)
  243. {
  244.     new temp;
  245.     for(new i=0;i<GetMaxPlayers();i++)
  246.     {
  247.         if(IsPlayerConnected(i) && IsPlayerInVehicle(i, vehicleid) && GetPlayerState(i)==PLAYER_STATE_DRIVER) { temp++; }
  248.     }
  249.     if(temp > 0)
  250.     {
  251.         return true;
  252.     }
  253.     else return false;
  254. }
Advertisement
Add Comment
Please, Sign In to add comment