[Una simple duda] Temas de pickup. -
LuKkY - 21.07.2015
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.
Re: [Una simple duda] Temas de pickup. -
Onfroi - 21.07.2015
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;
}
Re: [Una simple duda] Temas de pickup. -
LuKkY - 21.07.2015
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)
Re: [Una simple duda] Temas de pickup. -
Unrea1 - 21.07.2015
Estabas retornando el comando en 0, por eso no funcionaba...
Respuesta: Re: [Una simple duda] Temas de pickup. -
Goncho28 - 21.07.2015
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-
Re: Respuesta: Re: [Una simple duda] Temas de pickup. -
LuKkY - 22.07.2015
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?
Respuesta: [Una simple duda] Temas de pickup. -
Goncho28 - 22.07.2015
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.
Re: [Una simple duda] Temas de pickup. -
LuKkY - 22.07.2015
їLos "
else" son ilimitados?

*Muchas gracias por la ayuda a tн y a todos los de este post'.
Respuesta: Re: [Una simple duda] Temas de pickup. -
Goncho28 - 22.07.2015
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.