[Una simple duda] Temas de pickup.
#1

Muy buenas, bueno, lo primero de todo tengo que destacar que soy un principiante en el mundo de pawno. Y bien, estaba yo tranquilamente codigeando un poco, y se me ocurre lo siguiente:

*Cuando este cerca alguien de un pickup que ponga /entrar , estando cerca de este pickup y que le tp'e a una coordenada junto a otro diferente VW' y que ademбs si esta dentro de un vehiculo que se mantenga dentro
(la idea de un deposito);
E aquн mi cуdigo y duda;
Код:
public OnPlayerCommandText(playerid, cmdtext[])
{
    if(!strcmp(cmdtext, "/entrar", true))
    {
            if(IsPlayerInAnyVehicle(playerid))
      {
        new vehid = GetPlayerVehicleID(playerid);
        if(IsPlayerInRangeOfPoint(playerid, 7.0, -233.1192,987.3795,19.6272))
        SetVehiclePos(vehid,-1615.9586,742.4404,-5.2422);
        SetPlayerVirtualWorld(playerid, 54);
        SetVehicleVirtualWorld(GetPlayerVehicleID(playerid), 54);
        SetPlayerPos(playerid,-1615.9586,742.4404,-5.2422);
        return 0;
	  }
    }
    return 1;
}
En todo esto no me sale ningъn error ni warning', ahora , el problema es que aun poniendo esta funciуn;
Код:
if(IsPlayerInRangeOfPoint(playerid, 7.0, -233.1192,987.3795,19.6272))
Puedo colocar el comando estando en cualquier lado.
Si alguien sabe si estoy usando una funciуn incorrecta o algo que me lo comente , gracias.
Reply
#2

pawn Код:
public OnPlayerCommandText(playerid, cmdtext[])
{
    if(!strcmp(cmdtext, "/entrar", true))
    {
        if(IsPlayerInAnyVehicle(playerid))
        {
            new vehid = GetPlayerVehicleID(playerid);
            if(IsPlayerInRangeOfPoint(playerid, 7.0, -233.1192,987.3795,19.6272))
            {
                SetVehiclePos(vehid,-1615.9586,742.4404,-5.2422);
                SetPlayerVirtualWorld(playerid, 54);
                SetVehicleVirtualWorld(GetPlayerVehicleID(playerid), 54);
                SetPlayerPos(playerid,-1615.9586,742.4404,-5.2422);
          }
    }
    }
    return 1;
}
Reply
#3

Quote:
Originally Posted by Onfroi
Посмотреть сообщение
pawn Код:
public OnPlayerCommandText(playerid, cmdtext[])
{
    if(!strcmp(cmdtext, "/entrar", true))
    {
        if(IsPlayerInAnyVehicle(playerid))
        {
            new vehid = GetPlayerVehicleID(playerid);
            if(IsPlayerInRangeOfPoint(playerid, 7.0, -233.1192,987.3795,19.6272))
            {
                SetVehiclePos(vehid,-1615.9586,742.4404,-5.2422);
                SetPlayerVirtualWorld(playerid, 54);
                SetVehicleVirtualWorld(GetPlayerVehicleID(playerid), 54);
                SetPlayerPos(playerid,-1615.9586,742.4404,-5.2422);
          }
    }
    }
    return 1;
}
Muchas gracias @Onfroi por responderme, mira me gustarнa aprender y saber en que se diferencia ese codigo al mio .
Y tambiйn cabe a destacar que no me salta error ni nada pero que no me hace la funciуn, lo intente con la funciуn de "CMD:" (ZCMD) y si me deja pero mediante !strcmp nada. їTengo que aсadir algun include de strcmp o algo? (Siento mi novatada)
Reply
#4

Estabas retornando el comando en 0, por eso no funcionaba...
Reply
#5

Quote:
Originally Posted by LuKkY
Посмотреть сообщение
Muchas gracias @Onfroi por responderme, mira me gustarнa aprender y saber en que se diferencia ese codigo al mio .
Y tambiйn cabe a destacar que no me salta error ni nada pero que no me hace la funciуn, lo intente con la funciуn de "CMD:" (ZCMD) y si me deja pero mediante !strcmp nada. їTengo que aсadir algun include de strcmp o algo? (Siento mi novatada)
Te faltaron las llaves en eso se diferencia, pongamos un ejemplo sencillo.

pawn Код:
if(IsPlayerInRangeOfPoint(playerid, 7.0, -233.1192,987.3795,19.6272))
Eso significa, si el jugador estб en tal posiciуn pasa tal cosa, їquй pasa? lo que estй debajo de el en las llaves, pero si no pones llaves no pasarб nada, ejemplo, quiero que si estй en tal lugar le de 100 de vida, la funciуn es
pawn Код:
SetPlayerHealth(playerid, 100);
Ahora, їcуmo lo hacemos?

Asн
pawn Код:
if(IsPlayerInRangeOfPoint(playerid, 7.0, -233.1192,987.3795,19.6272))
{
SetPlayerHealth(playerid, 100);
return 1;
}
En cambio si ponemos asн, no funcionarб:

pawn Код:
{
if(IsPlayerInRangeOfPoint(playerid, 7.0, -233.1192,987.3795,19.6272))
SetPlayerHealth(playerid, 100);
return 1;
}

Sobre lo de los comandos, si usas ZCMD, strmpc se bloquea, es mejor ZCMD ya que es un procesador de comandos, strmpc solo compara cadenas de texto, ademбs la sencillez que tiene para usarse. Saludos-
Reply
#6

Quote:
Originally Posted by Goncho28
Посмотреть сообщение
Te faltaron las llaves en eso se diferencia, pongamos un ejemplo sencillo.

pawn Код:
if(IsPlayerInRangeOfPoint(playerid, 7.0, -233.1192,987.3795,19.6272))
Eso significa, si el jugador estб en tal posiciуn pasa tal cosa, їquй pasa? lo que estй debajo de el en las llaves, pero si no pones llaves no pasarб nada, ejemplo, quiero que si estй en tal lugar le de 100 de vida, la funciуn es
pawn Код:
SetPlayerHealth(playerid, 100);
Ahora, їcуmo lo hacemos?

Asн
pawn Код:
if(IsPlayerInRangeOfPoint(playerid, 7.0, -233.1192,987.3795,19.6272))
{
SetPlayerHealth(playerid, 100);
return 1;
}
En cambio si ponemos asн, no funcionarб:

pawn Код:
{
if(IsPlayerInRangeOfPoint(playerid, 7.0, -233.1192,987.3795,19.6272))
SetPlayerHealth(playerid, 100);
return 1;
}

Sobre lo de los comandos, si usas ZCMD, strmpc se bloquea, es mejor ZCMD ya que es un procesador de comandos, strmpc solo compara cadenas de texto, ademбs la sencillez que tiene para usarse. Saludos-
Muchas gracias por ambas respuestas, me ha quedado bastante claro la verdad, una ъltima duda que me ha surgido a raнz de tu ъltima respuesta...Si se anula strmpc al darle uso a ZCMD, їpodrнa usar el comando "/entrar" y que haga mas de una funciуn? Me explico; ..Yo no puedo repetir un comando por ejemplo;
Код:
CMD:entrar 
blabla
blabla
return
CMD:entrar
blabla
blabla
return
Por lo que aquн de nuevo la duda їHabrнa alguna manera de hacer que si se usa este comando en diferentes coordenadas haga distintas funciones, como tpЎar a otras coordenadas o abrir puertas..etc?
Reply
#7

Claro, te dejo un comando para entrar sencillo

pawn Код:
CMD:entrar(playerid, params[])
    {
        if(GetPlayerState(playerid) == PLAYER_STATE_ONFOOT)
        {
            ComprobarEntradas(playerid);
        }
    }
ComprobarEntradas es el stock que almacena todas las entradas, puedes agregar tantas quieras, mбs abajo te explico.
pawn Код:
stock ComprobarEntradas(playerid)
{
    if(PlayerToPoint(playerid, 1.5, 1395.4467,-1669.3635,13.5600))
    {
        SetPlayerPos(playerid, 238.6438,139.2395,1003.0234);
        SetPlayerInterior(playerid, 3);
        SetPlayerVirtualWorld(playerid, 1);
        SetPlayerFacingAngle(playerid, 360);
        return 1;
    }
    else if(PlayerToPoint(playerid, 1.5, 238.6438,139.2395,1003.0234))
    {
        SetPlayerPos(playerid, 1395.4467,-1669.3635,13.5600);
        SetPlayerInterior(playerid, 0);
        SetPlayerVirtualWorld(playerid, 0);
        SetPlayerFacingAngle(playerid, 270);
        return 1;
    }
    else if(PlayerToPoint(playerid, 1.5, 1402.1504,-1677.5054,6.1569))
    {
        SetPlayerPos(playerid, 202.1060,180.5154,1003.0346);
        SetPlayerInterior(playerid, 3);
        SetPlayerVirtualWorld(playerid, 1);
        SetPlayerFacingAngle(playerid, 180);
        return 1;
    }
/////// AQUН IRНA SI QUIERES AGREGAR OTRO
    }
  return 1;
}
Eso es bбsicamente la comisarнa, si quieres agregar mбs sigue este ejemplo y lo pones donde te indiquй:

pawn Код:
else if(PlayerToPoint(playerid, COOORDENADAS))
    {
        SetPlayerPos(playerid, X,Y,Z);
        SetPlayerInterior(playerid, 0); //Interior
        SetPlayerVirtualWorld(playerid, 0); //Virtualwolrd, no es obligatorio
        SetPlayerFacingAngle(playerid, 270); //Бngulo
        return 1;
    }
Interior: Cada interior tiene su propio interior, sй que suena raro pero es asн, usando /interior sabes en cuбl estбs...

VirtualWorld: Puede haber 2 personas en un mismo lugar pero si estбn en distinto virtual wolrd no se verбn.
Reply
#8

їLos "else" son ilimitados?
*Muchas gracias por la ayuda a tн y a todos los de este post'.
Reply
#9

Quote:
Originally Posted by LuKkY
Посмотреть сообщение
їLos "else" son ilimitados?
*Muchas gracias por la ayuda a tн y a todos los de este post'.
Sн, el cуdigo el else lo lee como "si esto no pasa leo lo que sigue" y asн hasta que el jugador estб en una de las posiciones puestas y funciona, esto lo hace en menos de 1 segundo.
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)