Advertisement
StreetGT

StreetGT - Van of Motorcycles v3

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