15.08.2012, 23:47
Se existe uma construзгo? Para isto eu criei CHK Path. Ele checa se a uma coordenada diagonal de XY e XY tem algum objeto para atrapalhar a ligaзгo. Й lento, mas funciona.
Implementaзгo do algorнtimo:
http://forum.sa-mp.com/showpost.php?...postcount=1855
- Vou tentar implementar no seu cуdigo
pawn Код:
CHK_Path(npcid, Float:x,Float:y) {
static
Float:px,
Float:py,
Float:pz,
Float:andreasZ;
if(!GetPlayerPos(npcid, px, py, pz)) return false;
// fixs cartesian plane
if(y > 0) y *= 02;
if(y < 0) y *= -1;
if(x > 0) x *= 02;
if(x < 0) x *= -1;
//
if(py > 0) py *= 02;
if(py < 0) py *= -1;
if(px > 0) px *= 02;
if(px < 0) px *= -1;
// fix negative values
if(px > x) {
px ^= x;
x ^= px;
px ^= x;
}
if(py > y) {
py ^= y;
y ^= py;
py ^= y;
}
// now py < y and px < x
// diagonal path finding
for(new Float:nx = nx - px; nx > 0.0; nx -= 1.5) {
for(new Float:ny = y - py; ny > 0.0; ny -= 1.5) {
MapAndreas_FindZ_For2DCoord(nx, ny, andreasZ);
if(andreasZ > pz - 1.0) {
return false;
}
}
}
return true;
}
http://forum.sa-mp.com/showpost.php?...postcount=1855
- Vou tentar implementar no seu cуdigo