[Duda] Diferencia
#1

їCual es la diferencia entre GetPlayerPos y SetPlayerPos? Por que necesito hacer que si un jugador esta en "X" area pase "X" cosa.

Pero no entiendo la diferencia entre esos 2.
Reply
#2

GetPlayerPos obtiene la posicion actual del jugador, mientras que SetPlayerPos cambia la posicion actual del jugador a la indicada.
Reply
#3

para hacer "si un jugador esta en X area pase X cosa" podes usar IsPlayerInRangeOfPoint(id,radio,cordenadas X Y Z)
Reply
#4

Quote:
Originally Posted by spell
Посмотреть сообщение
para hacer "si un jugador esta en X area pase X cosa" podes usar IsPlayerInRangeOfPoint(id,radio,cordenadas X Y Z)
De hecho, lo que deberia utilizar es IsPlayerInArea (nativa en caso de utilizar el Streamer de incognito con el nombre de "IsPlayerInDynamicArea").

pawn Код:
stock IsPlayerInArea(playerid, Float:minX, Float:minY, Float:maxX, Float:maxY)
{
    if(!IsPlayerConnected(playerid))
        return 0;
    new Float:P[3];
    GetPlayerPos(playerid, P[0], P[1], P[2]);
    if((maxX-P[0]) >= 0 && (P[0]-minX) >= 0 && (maxY-P[1]) >= 0 && (P[1]-minY) >= 0)
        return 1;
    return 0;
}
Reply
#5

Las coordenadas que voy a utilizar son estas:

X min: 1740.234375
Y min: 2859.375
X max: 1792.96875
Y max: 2783.203125

Entonces me quedaria asi:

PHP код:
stock IsPlayerInArea(playerid1740.2343752859.3751792.968752783.203125)
{
    if(!
IsPlayerConnected(playerid))
        return 
0;
    new 
Float:P[3];
    
GetPlayerPos(playeridP[0], P[1], P[2]);
    if((
maxX-P[0]) >= && (P[0]-minX) >= && (maxY-P[1]) >= && (P[1]-minY) >= 0)
        return 
1;
    return 
0;

Reply
#6

No, lo que yo te di es la definicion de una funcion.

Su forma de uso es la siguiente:

pawn Код:
//Donde lo necesites:
if(IsPlayerInArea(playerid, 1740.234375, 2859.375, 1792.96875, 2783.203125))
{
    //Aqui realizas la accion, ya que el jugador estara dentro del area indicada.
}

//Fuera de cualquier callback y/o funcion
stock IsPlayerInArea(playerid, Float:minX, Float:minY, Float:maxX, Float:maxY)
{
    if(!IsPlayerConnected(playerid))
        return 0;
    new Float:P[3];
    GetPlayerPos(playerid, P[0], P[1], P[2]);
    if((maxX-P[0]) >= 0 && (P[0]-minX) >= 0 && (maxY-P[1]) >= 0 && (P[1]-minY) >= 0)
        return 1;
    return 0;
}
Reply
#7

Pero si quiero teletransportar al player a esa area? Uso SetPlayerPos?
Reply
#8

Quote:
Originally Posted by VodKa'
Посмотреть сообщение
Pero si quiero teletransportar al player a esa area? Uso SetPlayerPos?
Eso ya te lo respondi:
Quote:
Originally Posted by the_chaoz
Посмотреть сообщение
GetPlayerPos obtiene la posicion actual del jugador, mientras que SetPlayerPos cambia la posicion actual del jugador a la indicada.
Reply
#9

Sisi, pero la funciуn es asi:

SetPlayerPos(playerid,Float,Float:y,Float:z)

Y en las coordenadas cual pongo? X min o X max?
Reply
#10

Quote:
Originally Posted by VodKa'
Посмотреть сообщение
Sisi, pero la funciуn es asi:

SetPlayerPos(playerid,Float,Float:y,Float:z)

Y en las coordenadas cual pongo? X min o X max?
Estas con un mal concepto de las funciones. Mira te hago un dibujo asi entiendes como funciona:

Код:
(minX;minY)++++++++++++++(minX;maxY)
+                           +
+                           +
+                           +
+                           +
+                           +
+                    P      +
+                           +
+                           +
(maxX;minY)+++++++++++++(maxX;maxY)
P repesenta una posicion dentro del area y tiene sus propias coordenadas (X, Y, Z).
Dentro de SetPlayerPos utilizas el X, Y, Z correspondientes a la posicion que quieres. Y en IsPlayerInArea, utilizas los expremos de las areas.
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)