Link: wiki.sa-mp.com/wiki/GetPlayerDistanceFromPoint
Vagy!
n e w F l o a t : XX 1 , F l o a t : Y Y 1 , F l o a t : Z Z 1;
new id;
G e t P l a y e r P o s ( i d , XX 1 , Y Y 1 , Z Z 1 ) ;
i f ( I s P l a y e r I n R a n g e O f P o i n t ( p l a y e r i d , 5 . 0 , XX 1 , Y Y 1 , Z Z 1 )) return SendClientMessage(playerid,-1,\"Nem vagy játékos közelében!\");
Sima, for-os megoldás:
CMD:tele(playerid)
{
new Float: x, Float: y, Float: z;
GetPlayerPos(playerid, x, y, z);
for(new i; i<MAX_PLAYERS; i++)
{
{
if(IsPlayerInRangeOfPoint(i, 5.0, x, y, z)) return SetPlayerPos(playerid, 0, 0, 0);
}
}
return 1;
}
Gyorsabb, foreach-os megoldás:
CMD:tele(playerid)
{
new Float: x, Float: y, Float: z;
GetPlayerPos(playerid, x, y, z);
foreach(Player, i)
{
{
if(IsPlayerInRangeOfPoint(i, 5.0, x, y, z)) return SetPlayerPos(playerid, 0, 0, 0);
}
}
return 1;
}
Ezt a kódot én nem teljesen iylen de hasonló célokra használtam. 100%-ig nem vagyok benne biztos hogy tökéletesen mûködik majd neked de egy próbát megér. Viszont ha nem mûködik kis alakítással már mûködhet. Sok sikert
stock IsPlayerFacingPlayer(playerid, targetid, Float:dOffset)
{
new
Float:pX,
Float:pY,
Float:pZ,
Float:pA,
Float:X,
Float:Y,
Float:Z,
Float:ang;
if(!IsPlayerConnected(playerid) || !IsPlayerConnected(targetid)) return 0;
GetPlayerPos(targetid, pX, pY, pZ);
GetPlayerPos(playerid, X, Y, Z);
GetPlayerFacingAngle(playerid, pA);
if( Y > pY ) ang = (-acos((X - pX) / floatsqroot((X - pX)*(X - pX) + (Y - pY)*(Y - pY))) - 90.0);
else if( Y < pY && X < pX ) ang = (acos((X - pX) / floatsqroot((X - pX)*(X - pX) + (Y - pY)*(Y - pY))) - 450.0);
else if( Y < pY ) ang = (acos((X - pX) / floatsqroot((X - pX)*(X - pX) + (Y - pY)*(Y - pY))) - 90.0);
if(AngleInRangeOfAngle(-ang, pA, dOffset)) return true;
return false;
}
stock AngleInRangeOfAngle(Float:a1, Float:a2, Float:range)
{
a1 -= a2;
if((a1 < range) && (a1 > -range)) return true;
return false;
}
stock IsPlayerBehindPlayer(playerid, targetid, Float:dOffset)
{
new
Float:pa,
Float:ta;
if(!IsPlayerConnected(playerid) || !IsPlayerConnected(targetid)) return 0;
GetPlayerFacingAngle(playerid, pa);
GetPlayerFacingAngle(targetid, ta);
if(AngleInRangeOfAngle(pa, ta, dOffset) && IsPlayerFacingPlayer(playerid, targetid, dOffset)) return true;
return false;
}
//innentõl oda rakd a kódot ahol használod
new Float:X,Float:Y,Float:Z;
foreach(Player,i)
{
GetPlayerPos(i,X,Y,Z);
if(IsPlayerInRangeOfPoint(playerid,5.0,X,Y,Z))
{
if(!IsPlayerBehindPlayer(i, playerid, 90))//ez csak arra kell hogy biztos ne legyen mögötte
{
if(IsPlayerFacingPoint(i, 60, X,Y,Z))//ezt a szöget úgy állítsd be ahogy neked jó. Ez a szög az a szög ami a \"látószöget\" nézi hogy benne vagy e abban a részben ahol teleportálni kell
{
//teleportálod
}
}
}
}
Lehet hogy neked az IsPlayerFacingPointnem is kell bele majd próbûld ki ugyis, akkor az lesz hogy a játékos elötti fékörben teleportálja a játékosokat