Posts: 2,041
Threads: 97
Joined: Jun 2013
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.
Posts: 4,930
Threads: 467
Joined: Dec 2010
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.
Posts: 4,930
Threads: 467
Joined: Dec 2010
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.
Posts: 141
Threads: 49
Joined: Jan 2014
Reputation:
0
El dios del scripting nunca falla, gracias Chaoz:3