26.10.2017, 16:43
hello there i got a problem with this warp/teleport system
its work okay sometimes but if im too far from the traget nothing happens just nothing no effect
also when there only me in server i dont get the message "the server are empty
can someone fix it or explain the issue? idk whats wrong here
here is the GetClosestPlayer
its work okay sometimes but if im too far from the traget nothing happens just nothing no effect
also when there only me in server i dont get the message "the server are empty
can someone fix it or explain the issue? idk whats wrong here
pawn Код:
if(PlayerTeam[playerid] == Matrix)
{
if(PlayerInfo[playerid][SkillLevel] == 2)
{
if(PInfo[playerid][CanWarp] == 0) return SendClientMessage(playerid,red,"You dont have enough energy to use your power");
new id = -1;
id = GetClosestPlayer(playerid,9000);//i tried to increase the range ........but the problem are same
if(id == -1) return SendClientMessage(playerid,red,"server is empty");
if(Team[id] == Matrix) return SendClientMessage(playerid,red,"You are to close to another matrix");
PInfo[playerid][CanWarp] = 0;
PInfo[playerid][WarpTimer] = SetTimerEx("ResetDigVar",DIGTIME,false,"i",playerid);
SetTimerEx("WarpToTarget",3000,false,"ii",playerid,id);
static Float:x,Float:y,Float:z;
GetPlayerPos(playerid,x,y,z);
}
pawn Код:
function Float:GetDistanceBetweenPoints(Float:rx1,Float:ry1,Float:rz1,Float:rx2,Float:ry2,Float:rz2)
{
return floatadd(floatadd(floatsqroot(floatpower(floatsub(rx1,rx2),2)),floatsqroot(floatpower(floatsub(ry1,ry2),2))),floatsqroot(floatpower(floatsub(rz1,rz2),2)));
}
stock GetClosestPlayer(playerid,Float:limit)
{
new Float:x1, Float:y1, Float:z1, Float:x2, Float:y2, Float:z2;
GetPlayerPos(playerid,x1,y1,z1);
new Float:Range = 999.9;
new id = INVALID_PLAYER_ID;//-1
for(new i; i < MAX_PLAYERS;i++)
{
if(!IsPlayerConnected(i)) continue;
if(playerid != i)
{
GetPlayerPos(i,x2,y2,z2);
new Float:Dist = GetDistanceBetweenPoints(x1,y1,z1,x2,y2,z2);
if(floatcmp(Range,Dist) == 1 && floatcmp(limit,Range) == 1)
{
Range = Dist;
id = i;
}
}
}
return id;
}