15.07.2010, 10:15
hello, im having troubles getting the closest vehicle NEAR ME (So dont check all cars in server), that is not my own vehicle!
can u help me out!
can u help me out!
stock FindClosestVehicle(playerid)
{
new
Float:x, Float:y, Float:z,
closest = -1;
for(new a = 0; a < MAX_VEHICLES; a++)
{
GetVehiclePos(a, x, y, z);
if(a != YOUR_VEHICLEID_OR_ARRAY/VARIBLE && IsPlayerInRangeOfPoint(playerid, 10.0, x, y, z))
{
closest = a;
}
}
if(closest != -1) return closest;
return INVALID_VEHICLE_ID;
}
stock FindClosestVehicle(playerid){ new Float:x, Float:y, Float:z, new closest = 100000; new closestid; for(new a = 0; a < MAX_VEHICLES; a++){ GetVehiclePos(a, x, y, z); if(GetPlayerDistanceToPointEx(playerid,x,y,z) < closest && GetPlayerVehicleID(playerid) != a) { closestid = a; closest = GetPlayerDistanceToPointEx(playerid,x,y,z); } } if(closest < 100000) return closestid; return INVALID_VEHICLE_ID; } stock GetPlayerDistanceToPointEx(playerid,Float:x,Float:y,Float:z) { new Float:x1,Float:y1,Float:z1; new Float:dis; GetPlayerPos(playerid,x1,y1,z1); dis = floatsqroot((x-x1)*(x-x1)+(y-y1)*(y-y1)+(z-z1)*(z-z1)); return floatround(dis); }
public GetClosestVehicle(carid)
{
new x,Float:dis,Float:dis2,car;
car = 0;
dis = 99999.99;
for ( x = 0; x < MAX_VEHICLES; x++ )
{
if(x != carid)
{
dis2 = GetDistanceBetweenVehicles(x,carid);
if(dis2 < dis && dis2 < 8.0)
{
dis = dis2;
car = x;
}
}
}
return car;
}
public Float:GetDistanceBetweenVehicles(vehicleid,carid)
{
new Float:x1,Float:y1,Float:z1,Float:x2,Float:y2,Float:z2;
GetVehiclePos(vehicleid,x1,y1,z1);
GetVehiclePos(carid,x2,y2,z2);
return floatsqroot(floatpower(floatabs(floatsub(x2,x1)),2)+floatpower(floatabs(floatsub(y2,y1)),2)+floatpower(floatabs(floatsub(z2,z1)),2));
}