SA-MP Forums Archive
IsPlayerInArea no funciona :| - Printable Version

+- SA-MP Forums Archive (https://sampforum.blast.hk)
+-- Forum: Non-English (https://sampforum.blast.hk/forumdisplay.php?fid=9)
+--- Forum: Languages (https://sampforum.blast.hk/forumdisplay.php?fid=33)
+---- Forum: Español/Spanish (https://sampforum.blast.hk/forumdisplay.php?fid=29)
+---- Thread: IsPlayerInArea no funciona :| (/showthread.php?tid=503169)



IsPlayerInArea no funciona :| - xDarkuzSx - 28.03.2014

Hola primeramente tengo este cуdigo:

pawn Код:
IsPlayerInArea(playerid, Float:MinX, Float:MinY, Float:MaxX, Float:MaxY)
{
    new Float:X, Float:Y, Float:Z;

    GetPlayerPos(playerid, X, Y, Z);
    if(X >= MinX && X <= MaxX && Y >= MinY && Y <= MaxY) {
        return 1;
    }
    return 0;
}
stock EnZonaSegura(playerid)
{
    if(IsPlayerInArea(playerid, 1827.987, -1449.987, 1715.987, -1323.987 ) == 1 ||
    IsPlayerInArea(playerid, 2245.995, -1215.599, 2175.995, -1145.599 ) == 1 ||
    IsPlayerInArea(playerid, 1100.171, -1994.005, 1296.171, -2078.005 ) == 1 ||
    IsPlayerInArea(playerid, 1297.161, -831.044, 1227.161, -775.044 ) == 1 ||
    IsPlayerInArea(playerid, 156.809, 1945.068, 282.809, 1833.068 ) == 1 ||
    IsPlayerInArea(playerid, -1889.145, 351.053, -2001.145, 589.053 ) == 1 ||
    IsPlayerInArea(playerid, 2888.435, 844.508, 2776.435, 1012.508 ) == 1 ||
    IsPlayerInArea(playerid, 2736.047, -1069.794, 2624.047, -1167.794 ) == 1 ||
    IsPlayerInArea(playerid, 2437.847, -1628.469, 2535.847, -1726.469 ) == 1 )
    {
        return 1;
    }
    return 0;
}
lo que sucede es quй cuando utilizo:
EnZonaSegura(playerid)
siempre retorna 0 y estoy en la zona, lose porquй tambien las hice con gangzones:

pawn Код:
SZ1 = GangZoneCreate( 1827.987, -1449.987, 1715.987, -1323.987 );
    SZ2 = GangZoneCreate( 2245.995, -1215.599, 2175.995, -1145.599 );
    SZ3 = GangZoneCreate( 1100.171, -1994.005, 1296.171, -2078.005 );
    SZ4 = GangZoneCreate( 1297.161, -831.044, 1227.161, -775.044 );
    SZ5 = GangZoneCreate( 156.809, 1945.068, 282.809, 1833.068 );
    SZ6 = GangZoneCreate( -1889.145, 351.053, -2001.145, 589.053 );
    SZ7 = GangZoneCreate( 2888.435, 844.508, 2776.435, 1012.508 );
    SZ8 = GangZoneCreate( 2736.047, -1069.794, 2624.047, -1167.794 );
    SZ9 = GangZoneCreate( 2437.847, -1628.469, 2535.847, -1726.469 );
Alguna idea de porquй no funciona?

La utilizo asi:
pawn Код:
if(EnZonaSegura(playerid) == 1)
{
//ejecutar funcion
}
pero siempre retorna 0


Respuesta: IsPlayerInArea no funciona :| - Swedky - 28.03.2014

Intenta de esta forma:

pawn Код:
IsPlayerInArea(playerid, Float:MinX, Float:MinY, Float:MaxX, Float:MaxY)
{
    new Float:X, Float:Y, Float:Z;
    GetPlayerPos(playerid, X, Y, Z);
   
    if(X >= MinX && X <= MaxX && Y >= MinY && Y <= MaxY) return 1;
    else return 0;
}
stock EnZonaSegura(playerid)
{
    if(IsPlayerInArea(playerid, 1827.987, -1449.987, 1715.987, -1323.987)) return 1;
    else if(IsPlayerInArea(playerid, 2245.995, -1215.599, 2175.995, -1145.599)) return 1;
    else if(IsPlayerInArea(playerid, 1100.171, -1994.005, 1296.171, -2078.005)) return 1;
    else if(IsPlayerInArea(playerid, 1297.161, -831.044, 1227.161, -775.044)) return 1;
    else if(IsPlayerInArea(playerid, 156.809, 1945.068, 282.809, 1833.068)) return 1;
    else if(IsPlayerInArea(playerid, -1889.145, 351.053, -2001.145, 589.053)) return 1;
    else if(IsPlayerInArea(playerid, 2888.435, 844.508, 2776.435, 1012.508)) return 1;
    else if(IsPlayerInArea(playerid, 2736.047, -1069.794, 2624.047, -1167.794)) return 1;
    else if(IsPlayerInArea(playerid, 2437.847, -1628.469, 2535.847, -1726.469)) return 1;
    else return 0;
}



Respuesta: IsPlayerInArea no funciona :| - xDarkuzSx - 28.03.2014

Quote:
Originally Posted by EnzoMetlc
Посмотреть сообщение
Intenta de esta forma:

pawn Код:
IsPlayerInArea(playerid, Float:MinX, Float:MinY, Float:MaxX, Float:MaxY)
{
    new Float:X, Float:Y, Float:Z;
    GetPlayerPos(playerid, X, Y, Z);
   
    if(X >= MinX && X <= MaxX && Y >= MinY && Y <= MaxY) return 1;
    else return 0;
}
stock EnZonaSegura(playerid)
{
    if(IsPlayerInArea(playerid, 1827.987, -1449.987, 1715.987, -1323.987)) return 1;
    else if(IsPlayerInArea(playerid, 2245.995, -1215.599, 2175.995, -1145.599)) return 1;
    else if(IsPlayerInArea(playerid, 1100.171, -1994.005, 1296.171, -2078.005)) return 1;
    else if(IsPlayerInArea(playerid, 1297.161, -831.044, 1227.161, -775.044)) return 1;
    else if(IsPlayerInArea(playerid, 156.809, 1945.068, 282.809, 1833.068)) return 1;
    else if(IsPlayerInArea(playerid, -1889.145, 351.053, -2001.145, 589.053)) return 1;
    else if(IsPlayerInArea(playerid, 2888.435, 844.508, 2776.435, 1012.508)) return 1;
    else if(IsPlayerInArea(playerid, 2736.047, -1069.794, 2624.047, -1167.794)) return 1;
    else if(IsPlayerInArea(playerid, 2437.847, -1628.469, 2535.847, -1726.469)) return 1;
    else return 0;
}
Si lo intente asi primero pero no funcionaba .-. xd mejor use areas dinamicas..
asн que Problema resuelto xd


Respuesta: IsPlayerInArea no funciona :| - OTACON - 28.03.2014

es por que tienes mal el IsPlayerInArea.

tuyo

Код:
IsPlayerInArea(playerid, Float:MinX, Float:MinY, Float:MaxX, Float:MaxY)
{
    new Float:X, Float:Y, Float:Z;

    GetPlayerPos(playerid, X, Y, Z);
    if(X >= MinX && X <= MaxX && Y >= MinY && Y <= MaxY) {
        return 1;
    }
    return 0;
}
mio ( la forma correcta)
Код:
stock IsPlayerInArea(playerid, Float:minx, Float:maxx, Float:miny, Float:maxy)
{
    new Float:x, Float:y, Float:z;
    GetPlayerPos(playerid, x, y, z);
    if (x > minx && x < maxx && y > miny && y < maxy) return 1;
    return 0;
}
---> [Tutorial] IsPlayerInArea By OTACON

para verificar tantos IsPlayerInArea utiliza la forma que ya te dijo enzo.


https://sampwiki.blast.hk/wiki/Areacheck



PD: es recomendable utilizar streamer.

saludos.

EDIT: enzo ese else esta mal, por logica si el stock tiene un return 0; y la funcion de adentro retorna en false va a retonar el return del stock de lo contrario retonara el return de la funcion de adentro.




Respuesta: IsPlayerInArea no funciona :| - xDarkuzSx - 28.03.2014

Quote:
Originally Posted by OTACON
Посмотреть сообщение
es por que tienes mal el IsPlayerInArea.

tuyo

Код:
IsPlayerInArea(playerid, Float:MinX, Float:MinY, Float:MaxX, Float:MaxY)
{
    new Float:X, Float:Y, Float:Z;

    GetPlayerPos(playerid, X, Y, Z);
    if(X >= MinX && X <= MaxX && Y >= MinY && Y <= MaxY) {
        return 1;
    }
    return 0;
}
mio ( la forma correcta)
Код:
stock IsPlayerInArea(playerid, Float:minx, Float:maxx, Float:miny, Float:maxy)
{
    new Float:x, Float:y, Float:z;
    GetPlayerPos(playerid, x, y, z);
    if (x > minx && x < maxx && y > miny && y < maxy) return 1;
    return 0;
}
---> [Tutorial] IsPlayerInArea By OTACON

para verificar tantos IsPlayerInArea utiliza la forma que ya te dijo enzo.


https://sampwiki.blast.hk/wiki/Areacheck



PD: es recomendable utilizar streamer.

saludos.

EDIT: enzo ese else esta mal, por logica si el stock tiene un return 0; y la funcion de adentro retorna en false va a retonar el return del stock de lo contrario retonara el return de la funcion de adentro.

Ah LOL, No me habia fijado en eso de arriba, XD, pero bueno creo que es mejor utilizar CreateDynamicRectangle xD


Re: IsPlayerInArea no funciona :| - bm0z - 30.03.2014

No va a funcionar porque estas usando "min" en "max" y "max" en "min": IsPlayerInArea(playerid, 1827.987, -1449.987, 1715.987, -1323.987)

Si no quieres complicarte mucho, una soluciуn fбcil serнa:

if(MinX > MaxX)
{
new Float:temp = MaxX;
MaxX = MinX;
MinX = temp;
}

if(MinY > MaxY)
{
new Float:temp = MaxY;
MaxY = MinY;
MinY = temp;
}


Respuesta: IsPlayerInArea no funciona :| - Jovazxc - 30.03.2014

La funcion esta bien, las coordenadas son en base al gangzonecreate me imagino..

(Float:minx, Float:miny, Float:maxx, Float:maxy)