їPorquй me tira el mensaje cuando estб todo bien?
#1

Os dejarй el codigo, trata de que cuando entres a un vehнculo te informe de que si tiene gasolina o no, si la tiene que prosiga con la funciуn, pero aъn que el vehнculo tenga gasolina indica que no hay.

pawn Код:
public OnPlayerEnterVehicle(playerid, vehicleid, ispassenger)
{
new IDVEH = GetPlayerVehicleID(playerid);
if(Vehiculo[IDVEH][Gasolina] >= 0)
{
SendClientMessage(playerid,-1,"Vehiculo sin gasolina.");
}
else if(Vehiculo[IDVEH][Gasolina] >= 0)
{
if(Vehiculo[vehicleid][Motor] == 0) {
SendClientMessage(playerid, -1, "El motor estб apagado. Usa /encender o apreta Right Click para encenederlo.");
}
else if(Vehiculo[vehicleid][Motor] == 1)
{
SetTimerEx("Comprobargasolina", 35000, false, "i", playerid);
SendClientMessage(playerid,-1,"El vehнculo estб abierto, ahora gasta gasolina.");
}
}
return 0;
}
Reply
#2

pawn Код:
if(Vehiculo[IDVEH][Gasolina] >= 0)
deberia ser:

pawn Код:
if(Vehiculo[IDVEH][Gasolina] == 0)
Reply
#3

Sigue sin ir Chaoz.
Reply
#4

Podrнas intentarlo asн:

pawn Код:
// // 'OnPlayerEnterVehicle' - Es llamada cuando un jugador estб entrando a un vehнculo (aъn sin estar adentro de йl).
// 'OnPlayerStateChange' - Es llamada cuando un jugador cambia de estado. En este caso, verifica si el jugador cambiу su estado a conductor de un vehнculo.
public OnPlayerStateChange(playerid, newstate, oldstate)
{
    if(newstate == PLAYER_STATE_DRIVER) // Si el nuevo estado es 'conductor'.
    {
        new IDVEH = GetPlayerVehicleID(playerid);
        if(Vehiculo[IDVEH][Gasolina] <= 0) // Si la variable 'gasolina' de la ID del vehнculo es menos o igual que '0'.
        {
            SendClientMessage(playerid,-1,"Vehiculo sin gasolina.");
        }
        else if(Vehiculo[IDVEH][Gasolina] >= 0) // Caso contrario...
        {
            if(Vehiculo[vehicleid][Motor] == 0)
            {
                SendClientMessage(playerid, -1, "El motor estб apagado. Usa /encender o apreta Right Click para encenederlo.");
            }
            else if(Vehiculo[vehicleid][Motor] == 1)
            {
                SetTimerEx("Comprobargasolina", 35000, false, "i", playerid);
                SendClientMessage(playerid,-1,"El vehнculo estб abierto, ahora gasta gasolina.");
            }
        }
    }
    return 1;
}

Si sigue el problema, el error quizбs estб en el sistema de gasolina. Puedes usar esto para comprobar:

pawn Код:
CMD:gasolinavar(playerid, params[])
{
    if(!IsPlayerInAnyVehicle(playerid)) return 0; // Si no estбs en un vehнculo, te aparecerб que el comando no existe.
    else
    {
        Vehiculo[GetPlayerVehicleID(playerid)][Gasolina] = 100;
    }
    return 1;
}

Tienes que entrar al vehнculo, usar ese comando, salir del vehнculo y entrar otra vez para verificar.
Reply
#5

pawn Код:
public OnPlayerEnterVehicle(playerid, vehicleid, ispassenger)
{
    if(!Vehiculo[vehicleid][Gasolina])
        return SendClientMessage(playerid, -1, "Vehiculo sin gasolina.");

    if(!Vehiculo[vehicleid][Motor])
        return SendClientMessage(playerid, -1, "El motor estб apagado. Usa /encender o apreta Right Click para encenederlo.");

    SetTimerEx("Comprobargasolina", 35000, false, "i", playerid);
    SendClientMessage(playerid, -1, "El vehнculo estб abierto, ahora gasta gasolina.");
   
    return 1;
}
El problema esta en que tu codigo cambia el id del vehiculo pues este callback es llamado cuando el jugador COMIENZA a ingresar al vehiculo.
Reply
#6

Quote:
Originally Posted by the_chaoz
Посмотреть сообщение
pawn Код:
public OnPlayerEnterVehicle(playerid, vehicleid, ispassenger)
{
    if(!Vehiculo[vehicleid][Gasolina])
        return SendClientMessage(playerid, -1, "Vehiculo sin gasolina.");

    if(!Vehiculo[vehicleid][Motor])
        return SendClientMessage(playerid, -1, "El motor estб apagado. Usa /encender o apreta Right Click para encenederlo.");

    SetTimerEx("Comprobargasolina", 35000, false, "i", playerid);
    SendClientMessage(playerid, -1, "El vehнculo estб abierto, ahora gasta gasolina.");
   
    return 1;
}
El problema esta en que tu codigo cambia el id del vehiculo pues este callback es llamado cuando el jugador COMIENZA a ingresar al vehiculo.
OnPlayerEnterVehicle causara problemas por la razon que dice en la wiki y en el mensaje que eliminaste.
es recomendable utilizar OnPlayerStateChange.

saludos.
Reply
#7

Quote:
Originally Posted by OTACON
Посмотреть сообщение
OnPlayerEnterVehicle causara problemas por la razon que dice en la wiki y en el mensaje que eliminaste.
es recomendable utilizar OnPlayerStateChange.

saludos.
Estas equivocado, el codigo que le deje si funciona, el problema con el codigo que el tenia es que utilizaba el id del vehiculo en el cual ESTABA el jugador (utiliza GetPlayerVehicleID), mi codigo utiliza vehicleid. Entonces їPodes explicarme que problemas causaria?
Reply
#8

Quote:
Originally Posted by the_chaoz
Посмотреть сообщение
Estas equivocado, el codigo que le deje si funciona, el problema con el codigo que el tenia es que utilizaba el id del vehiculo en el cual ESTABA el jugador (utiliza GetPlayerVehicleID), mi codigo utiliza vehicleid. Entonces їPodes explicarme que problemas causaria?
nunca dije que estaba mal, dije que no es recomendable, es mejor OnPlayerStateChange ya que el mensaje y el timer tienen que retonar en el vehiculo, OnPlayerStateChange es mas estable.

nunca dije que estaba mal.
saludos.
Reply
#9

El dios del scripting nunca falla, gracias Chaoz:3
Reply


Forum Jump:


Users browsing this thread: 3 Guest(s)