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 ] ) ) ) ) ) ;
}



