put player in closest empty vehicle - Printable Version
+- SA-MP Forums Archive (
https://sampforum.blast.hk)
+-- Forum: SA-MP Scripting and Plugins (
https://sampforum.blast.hk/forumdisplay.php?fid=8)
+--- Forum: Scripting Help (
https://sampforum.blast.hk/forumdisplay.php?fid=12)
+---- Forum: Help Archive (
https://sampforum.blast.hk/forumdisplay.php?fid=89)
+---- Thread: put player in closest empty vehicle (
/showthread.php?tid=154469)
put player in closest empty vehicle -
russo666 - 14.06.2010
Title says everything.
I tried everything I could imagine and haven't sucess.
Thanks in advance.
Re: put player in closest empty vehicle -
coole210 - 14.06.2010
Modify this it should work:
Код:
public GetClosestPlayer(p1)
{
new
x,
Float:dis,
Float:dis2,
player;
player = -1;
dis = 99999.99;
for (x=0;x<MAX_PLAYERS;x++)
if(IsPlayerConnected(x))
if(x != p1)
{
dis2 = GetDistanceBetweenPlayers(x,p1);
if(dis2 < dis && dis2 != -1.00)
{
dis = dis2;
player = x;
}
}
return player;
}
public Float:GetDistanceBetweenPlayers(p1, p2)
{
new
Float:x1,
Float:y1,
Float:z1,
Float:x2,
Float:y2,
Float:z2;
if(!IsPlayerConnected(p1) || !IsPlayerConnected(p2))
return -1.00;
GetPlayerPos(p1,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));
}
- Tooken from [FS]Ironman
Re: put player in closest empty vehicle -
russo666 - 14.06.2010
It's 06:13am and i haven't sleep. I swear to god that i can't do anything better right know than this little crappy shit bad scripted:
pawn Код:
for(new v = 0; v < MAX_VEHICLES; v++)
{
#define INVALID_ID (0xFFFF) // Windows calculator lol // 65535
if(v != INVALID_ID)
{
for(new i = 0; i < MAX_PLAYERS; i++)
{
if(!IsPlayerInVehicle(i, v))
{
PutPlayerInVehicle(playerid, v, 0);
}
}
}
}
And don't worry about the closest vehicle. All the server vehicles are in one spot.
Edit: Finally solved. (I think, LOL!)
pawn Код:
stock Float:GetDistanceBetwinPoint(p1, Float:x2, Float:y2, Float:z2)
{
new Float:XX, Float:YY, Float:ZZ;
GetPlayerPos(p1, XX, YY, ZZ);
return floatsqroot(floatpower(floatabs(floatsub(x2,XX)),2)+floatpower(floatabs(floatsub(y2,YY)),2)+floatpower(floatabs(floatsub(z2,ZZ)),2));
}
stock GetClosestVehicle(playerid)
{
new car, Float:ang;
car = -1;
ang = 9999.9999;
for(new i = 0; i < MAX_PLAYERS; i++)
for(new v = 0; v < MAX_VEHICLES; v++)
{
if(!IsPlayerInVehicle(i, v))
{
new Float:X, Float:Y, Float:Z;
GetVehiclePos(v, X, Y, Z);
if(ang > GetDistanceBetwinPoint(playerid, X, Y, Z))
{
ang = GetDistanceBetwinPoint(playerid, X, Y, Z);
car = v;
}
}
}
return car;
}
Thanks Coole.