Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // Fill free to edit
- // Just keep my credits.
- // Van of motorcycles v3 by StreetGT from www.forum.sa-mp.com
- #include <a_samp>
- new Slot[4];
- new GetIn[MAX_PLAYERS], van, InteriorTruck[9];
- new Float:BikePos[4][] =
- {
- {2077.8936,-1375.0763,300.154},
- {2078.9941,-1375.0520,300.1554},
- {2079.8987,-1375.0085,300.1540},
- {2081.0239,-1374.8945,300.1557}
- };
- forward Float:GetDistanceBetweenVehicles(vehicleid,carid);
- forward Float:GetDistBetweenVehiclePlayer(v1, p2);
- strtok(const string[], &index)
- {
- new length = strlen(string);
- while ((index < length) && (string[index] <= ' ')) { index++; }
- new offset = index;
- new result[20];
- while ((index < length) && (string[index] > ' ') && ((index - offset) < (sizeof(result) - 1)))
- {
- result[index - offset] = string[index];
- index++;
- }
- result[index - offset] = EOS;
- return result;
- }
- public OnFilterScriptInit()
- {
- print("\n--------------------------------------");
- print(" Van of motorcycles by -> StreetGT <-");
- print("--------------------------------------\n");
- van = AddStaticVehicleEx(498,740.5068,-1332.7472,14.1702,269.5034,6,6,-1); // Mechanics Van
- printf("VanID: %d",van);
- InteriorTruck[0]= CreateObject(11292, 2081.333496, -1375.118530, 300.764832, 0.0000, 0.0000, 0.0000);
- InteriorTruck[1]= CreateObject(974, 2077.989258, -1376.559937, 300.831085, 0.0000, 0.0000, 0.0000);
- InteriorTruck[2]= CreateObject(974, 2077.123047, -1374.362671, 300.655640, 0.0000, 0.0000, 270.0000);
- InteriorTruck[3]= CreateObject(974, 2078.161133, -1373.030640, 300.330536, 0.0000, 0.0000, 0.0000);
- InteriorTruck[4]= CreateObject(2395, 2080.772949, -1376.560547, 299.490601, 0.0000, 0.0000, 180.0000);
- InteriorTruck[5]= CreateObject(1533, 2085.592773, -1373.328857, 299.552917, 0.0000, 0.0000, 270.0000);
- InteriorTruck[6]= CreateObject(1533, 2085.569824, -1374.802246, 299.539307, 0.0000, 0.0000, 270.0000);
- InteriorTruck[7]= CreateObject(1754, 2083.981445, -1373.538574, 299.553741, 0.0000, 0.0000, 0.0000);
- InteriorTruck[8]= CreateObject(1754, 2083.128906, -1373.539063, 299.553741, 0.0000, 0.0000, 0.0000);
- for(new i = 0; i < 4; i++)
- {
- Slot[i] = -1;
- }
- return 1;
- }
- public OnFilterScriptExit()
- {
- return 1;
- }
- public OnPlayerConnect(playerid)
- {
- GetIn[playerid] = 0;
- return 1;
- }
- public OnPlayerCommandText(playerid, cmdtext[])
- {
- new string[128];
- new cmd[128],tmp[128],idx;
- cmd = strtok(cmdtext, idx);
- if(strcmp(cmd, "/unloadbikes", true) == 0)
- {
- if(IsPlayerConnected(playerid))
- {
- if(GetPlayerVehicleID(playerid) != van) return SendClientMessage(playerid, -1, "You are not driving the van of motorcycles!");
- for(new i = 0; i < 4; i++)
- {
- if(Slot[i] != -1)
- {
- UnloadBike(i);
- }
- }
- }
- return 1;
- }
- if(strcmp(cmd, "/unloadbike", true) == 0)
- {
- if(IsPlayerConnected(playerid))
- {
- if(GetPlayerVehicleID(playerid) != van) return SendClientMessage(playerid, -1, "You are not driving the van of motorcycles!");
- tmp = strtok(cmdtext, idx);
- if(!strlen(tmp)) return SendClientMessage(playerid, -1,"Use < /unloadbike [slot-id] >");
- new slotid = strval(tmp);
- if(slotid < 1 || slotid > 4) return SendClientMessage(playerid, -1, "Slot number not below 1 or above 4 !");
- if(Slot[slotid-1] == -1) return SendClientMessage(playerid, -1, "There is no bike in this slot !");
- format(string, sizeof(string), "* You have unloaded VehID:%d from Slot:%d", Slot[slotid-1],slotid);
- SendClientMessage(playerid, -1, string);
- UnloadBike(slotid-1);
- }
- return 1;
- }
- if(strcmp(cmd, "/loadbike", true) == 0)
- {
- if(IsPlayerConnected(playerid))
- {
- if(GetPlayerVehicleID(playerid) != van) return SendClientMessage(playerid, -1, "You are not driving the van of motorcycles!");
- tmp = strtok(cmdtext, idx);
- if(!strlen(tmp)) return SendClientMessage(playerid, -1,"Use < /loadbike [slot-id] >");
- new slotid = strval(tmp);
- if(slotid < 1 || slotid > 4) return SendClientMessage(playerid, -1, "Slot number not below 1 or above 4 !");
- if(Slot[slotid-1] != -1) return SendClientMessage(playerid, -1, "There is already a bike in this slot !");
- new vid = GetClosestVehicle(playerid);
- new Float:x,Float:y,Float:z;
- GetPosBehindVehicle(van,x,y,z);
- if(VehicleToPoint(3.0,vid,x,y,z))
- {
- if(IsABike(vid))
- {
- if(!IsVehicleInUse(vid))
- {
- format(string, sizeof(string), "* You have loaded VehID:%d in Slot:%d", vid,slotid);
- SendClientMessage(playerid, -1, string);
- SetVehiclePos(vid,BikePos[slotid-1][0],BikePos[slotid-1][1],BikePos[slotid-1][2]);
- SetVehicleZAngle(vid,183.4);
- LinkVehicleToInterior(vid,1);
- Slot[slotid-1] = vid;
- }
- else SendClientMessage(playerid, -1,"Someone is inside of the vehicle!");
- }
- else SendClientMessage(playerid, -1,"This vehicle is not a bike!");
- }
- else SendClientMessage(playerid, -1,"There is no vehicle near of your boot!");
- }
- return 1;
- }
- return 0;
- }
- public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
- {
- if(newkeys & KEY_YES)
- {
- if(GetDistBetweenVehiclePlayer(van,playerid) <= 3 || IsPlayerInRangeOfPoint(playerid,3.0, 2084.6538,-1374.2390,300.5588))
- {
- GetInto(playerid);
- }
- }
- if ((newkeys==KEY_ACTION) && (IsPlayerInAnyVehicle(playerid)) && (GetPlayerState(playerid)==PLAYER_STATE_DRIVER))
- {
- if (GetVehicleModel(GetPlayerVehicleID(playerid)) == 498)
- {
- new vid = GetClosestVehicle(playerid);
- new Float:x,Float:y,Float:z;
- GetPosBehindVehicle(van,x,y,z);
- if(VehicleToPoint(3.0,vid,x,y,z))
- {
- if(IsABike(vid))
- {
- if(!IsVehicleInUse(vid))
- {
- new id = GetFreeSlot();
- if(id)
- {
- Slot[id] = vid;
- SetVehiclePos(vid,BikePos[id][0],BikePos[id][1],BikePos[id][2]);
- SetVehicleZAngle(vid,183.4);
- LinkVehicleToInterior(vid,1);
- SendClientMessage(playerid,0x33CCFFAA,"Vehicle towed to the interior!");
- }
- else SendClientMessage(playerid,-1,"The van of motorcycles is already full!");
- }
- else SendClientMessage(playerid, -1,"Someone is inside of the vehicle!");
- }
- else SendClientMessage(playerid, -1,"This vehicle is not a bike!");
- }
- else SendClientMessage(playerid, -1,"There is no vehicle near of your boot!");
- }
- }
- return 1;
- }
- stock GetInto(playerid)
- {
- if(IsPlayerConnected(playerid))
- {
- if(IsPlayerInAnyVehicle(playerid)) return 1;
- if(GetIn[playerid] == 0)
- {
- if(GetDistBetweenVehiclePlayer(van,playerid) <= 3)
- {
- GetIn[playerid] = 1;
- SetPlayerPos(playerid, 2084.479980, -1374.825928, 300.628052);
- SetPlayerFacingAngle(playerid, 0);
- SetCameraBehindPlayer(playerid);
- SetPlayerInterior(playerid, 1);
- }
- }
- else if(GetIn[playerid] == 1)
- {
- if(IsPlayerInRangeOfPoint(playerid,3.0, 2084.6538,-1374.2390,300.5588))
- {
- GetIn[playerid] = 0;
- new Float:X, Float:Y, Float:Z;
- GetVehiclePos(van, X, Y, Z);
- SetPlayerPos(playerid, X+4, Y, Z);
- SetPlayerInterior(playerid, 0);
- }
- }
- }
- return 1;
- }
- stock UnloadBike(slotid)
- {
- new Float:X, Float:Y, Float:Z;
- GetVehiclePos(van, X, Y, Z);
- SetVehiclePos(Slot[slotid], X+5, Y, Z);
- LinkVehicleToInterior(Slot[slotid],0);
- Slot[slotid] = -1;
- return 1;
- }
- public Float:GetDistBetweenVehiclePlayer(v1, p2)
- {
- new Float:x1,Float:y1,Float:z1,Float:x2,Float:y2,Float:z2;
- if(!IsPlayerConnected(p2))
- {
- return -1.00;
- }
- GetVehiclePos(v1,x1,y1,z1);
- GetPlayerPos(p2,x2,y2,z2);
- return floatsqroot(floatpower(floatabs(floatsub(x2,x1)),2)+floatpower(floatabs(floatsub(y2,y1)),2)+floatpower(floatabs(floatsub(z2,z1)),2));
- }
- VehicleToPoint(Float:radi, vehicleid, Float:x, Float:y, Float:z)
- {
- new Float:oldposx, Float:oldposy, Float:oldposz;
- new Float:tempposx, Float:tempposy, Float:tempposz;
- GetVehiclePos(vehicleid, oldposx, oldposy, oldposz);
- tempposx = (oldposx -x);
- tempposy = (oldposy -y);
- tempposz = (oldposz -z);
- if (((tempposx < radi) && (tempposx > -radi)) && ((tempposy < radi) && (tempposy > -radi)) && ((tempposz < radi) && (tempposz > -radi)))
- {
- return 1;
- }
- return 0;
- }
- stock GetPosBehindVehicle(vehicleid, &Float:x, &Float:y, &Float:z, Float:offset=0.5)
- {
- new Float:vehicleSize[3], Float:vehiclePos[3];
- GetVehiclePos(vehicleid, vehiclePos[0], vehiclePos[1], vehiclePos[2]);
- GetVehicleModelInfo(GetVehicleModel(vehicleid), VEHICLE_MODEL_INFO_SIZE, vehicleSize[0], vehicleSize[1], vehicleSize[2]);
- GetXYBehindVehicle(vehicleid, vehiclePos[0], vehiclePos[1], (vehicleSize[1]/2)+offset);
- x = vehiclePos[0];
- y = vehiclePos[1];
- z = vehiclePos[2];
- return 1;
- }
- GetXYBehindVehicle(vehicleid, &Float:q, &Float:w, Float:distance)
- {
- new Float:a;
- GetVehiclePos(vehicleid, q, w, a);
- GetVehicleZAngle(vehicleid, a);
- q += (distance * -floatsin(-a, degrees));
- w += (distance * -floatcos(-a, degrees));
- }
- forward GetClosestVehicle(playerid);
- public GetClosestVehicle(playerid)
- {
- new x,Float:dis,Float:dis2,car;
- car = 0;
- dis = 99999.99;
- for ( x = 0; x < MAX_VEHICLES; x++ )
- {
- dis2 = GetDistBetweenVehiclePlayer(x,playerid);
- if((dis2 < dis && dis2 < 18.0) && GetPlayerVehicleID(playerid) != x)
- {
- dis = dis2;
- car = x;
- }
- }
- return car;
- }
- stock IsABike(carid)
- {
- new id = GetVehicleModel(carid);
- if(id==448 || id==581 || id==522 || id==461 || id==463 || id==521 || id==523 || id==586|| id==468 || id==471 )
- {
- return 1;
- }
- return 0;
- }
- stock IsVehicleInUse(vehicleid)
- {
- new temp;
- for(new i=0;i<GetMaxPlayers();i++)
- {
- if(IsPlayerConnected(i) && IsPlayerInVehicle(i, vehicleid) && GetPlayerState(i)==PLAYER_STATE_DRIVER) { temp++; }
- }
- if(temp > 0)
- {
- return true;
- }
- else return false;
- }
- stock GetFreeSlot()
- {
- for(new i = 0; i < 4; i++)
- {
- if(Slot[i] == -1) return i;
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement