25.02.2012, 12:01
Quote:
Funзгo pra pegar a distвncia entre dois jogadores, retorna um float:
Код:
stock GetPlayerDist(idx,idy){ new Float:x1, Float:y1, Float:z1; new Float:x2, Float:y2, Float:z2; new Float:DistX, Float:DistY, Float:DistZ,Float:DistDiag,Float:DistF; GetPlayerPos(idx,x1,y1,z1); GetPlayerPos(idy,x2,y2,z2); DistX=Modulo(x1,x2); DistY=Modulo(y1,y2); DistZ=Modulo(z1,z2); DistDiag=(DistX*DistY)/2; DistF=(DistDiag*DistZ)/2; return DistF; } Код:
stock Modulo(x, y) { new nn = x - y; return ( ( nn < 0 ) ? ( ~(nn)+1 ) : ( nn ) ); } ![]() |
Quote:
Nгo seria melhor usar GetPlayerDistanceFromPoint
|
Deixo aqui um codigo que fiz agora, porem nao sei se funciona pois nao testei...
Tens que meter isto no inicio do GM/FS para nao te dar uma Warning :
pawn Код:
stock
Float: GetDistanceFromPlayerToPlayer ( playerid , extraid ) ;
pawn Код:
stock
Float: GetDistanceFromPlayerToPlayer ( playerid , extraid )
{
if ( ( !IsPlayerConnected ( playerid ) ) || ( !IsPlayerConnected ( extraid ) ) ) return -1.0 ;
static
Float: _C [ 6 ]
;
GetPlayerPos ( playerid , _C [ 0 ] , _C [ 1 ] , _C [ 2 ] ) ;
GetPlayerPos ( extraid , _C [ 3 ] , _C [ 4 ] , _C [ 5 ] ) ;
return floatsqroot ( floatadd ( floatmul ( floatsub ( _C [ 0 ] , _C [ 3 ] ) , floatsub ( _C [ 0 ] , _C [ 3 ] ) ) , floatadd ( floatmul ( floatsub ( _C [ 1 ] , _C [ 4 ] ) , floatsub ( _C [ 1 ] , _C [ 4 ] ) ) , floatmul ( floatsub ( _C [ 2 ] , _C [ 5 ] ) , floatsub ( _C [ 2 ] , _C [ 5 ] ) ) ) ) ) ;
}