public timer_fuel_lower()
{
new engine, lights, alarm, doors, bonnet, boot, objective;
for(new i=0;i<MAX_PLAYERS;i++) { //loop for all players
new PlayerVehicle = GetVehicleFileID(GetPlayerVehicleID(i));
if (isrefuelling[i]) continue; //stop when a player is already refuelling
new vid = GetPlayerVehicleID(i); //getting vehicle ID
if (GetPlayerVehicleSeat(i) == 0 && EngineOn[vid] == 1 || IsPlayerInHotWiredCar == 1 || Vehicles[PlayerVehicle][CarGroup] >= 0 && Vehicles[PlayerVehicle][CarGroup] == Player[i][Group]) { //if the player is a driver (it should only lower the fuel when theres an driver!)
fuel[vid] = fuel[vid] -1; //lowering fuel value
if (fuel[vid]<1) //if fuel is empty
{
GetVehicleParamsEx(vid, engine, lights, alarm, doors, bonnet, boot, objective);
fuel[vid] = 0; //setting fuel to 0 (else the timer will set it to -1 -2 -3 etc before removing player)
SetVehicleParamsEx(vid, 0, lights, alarm, doors, bonnet, boot, 0);
SendClientMessage(i, WHITE, "This vehicle is out of fuel");
}
}
new string[125];format(string,sizeof string,"Fuel:%i",fuel[vid]); //preparing string with next fuel value
TextDrawSetString(td_fuel[i],string); //updating textdraw
}
for(new veh = 0; veh < MAX_VEHICLES; veh ++)
{
if(EngineOn[veh] == 1 && !DoesVehHaveDriver(veh))
{
fuel[veh] --;
}
}
return 1;
}
if (GetPlayerVehicleSeat(i) == 0 && EngineOn[vid] == 1 || IsPlayerInHotWiredCar == 1 || Vehicles[PlayerVehicle][CarGroup] >= 0 && Vehicles[PlayerVehicle][CarGroup] == Player[i][Group])
if (GetPlayerVehicleSeat(i) == 0 && EngineOn[vid] == 0 || IsPlayerInHotWiredCar == 1 || Vehicles[PlayerVehicle][CarGroup] >= 0 && Vehicles[PlayerVehicle][CarGroup] == Player[i][Group])
pawn Код:
pawn Код:
|
You are finding vehicle id by new PlayerVehicle = GetVehicleFileID(GetPlayerVehicleID(i));
So when player leave car PlayerVehicle is equal to 0. I think this is a problem. |
GetVehicleParamsEx(vid, engine, lights, alarm, doors, bonnet, boot, objective)
if(engine == 0)
{
fuel[Veh] == Fuel[Veh]
}
GetVehicleParamsEx(vid, engine, lights, alarm, doors, bonnet, boot, objective)
if(engine == 0) return 1;
pawn Код:
pawn Код:
|
public timer_fuel_lower()
{
new engine, lights, alarm, doors, bonnet, boot, objective;
for(new i=0;i<MAX_PLAYERS;i++) { //loop for all players
new PlayerVehicle = GetVehicleFileID(GetPlayerVehicleID(i));
if (isrefuelling[i]) continue; //stop when a player is already refuelling
new vid = GetPlayerVehicleID(i); //getting vehicle ID
if (GetPlayerVehicleSeat(i) == 0 && EngineOn[vid] == 1 || !DoesVehHaveDriver(i) && EngineOn[vid] == 1 || IsPlayerInHotWiredCar == 1 || Vehicles[PlayerVehicle][CarGroup] >= 0 && Vehicles[PlayerVehicle][CarGroup] == Player[i][Group]) { //if the player is a driver (it should only lower the fuel when theres an driver!)
fuel[vid] = fuel[vid] -1; //lowering fuel value
if (fuel[vid]<1) //if fuel is empty
{
GetVehicleParamsEx(vid, engine, lights, alarm, doors, bonnet, boot, objective);
fuel[vid] = 0; //setting fuel to 0 (else the timer will set it to -1 -2 -3 etc before removing player)
SetVehicleParamsEx(vid, 0, lights, alarm, doors, bonnet, boot, 0);
SendClientMessage(i, WHITE, "This vehicle is out of fuel");
}
}
new string[125];format(string,sizeof string,"Fuel:%i",fuel[vid]); //preparing string with next fuel value
TextDrawSetString(td_fuel[i],string); //updating textdraw
}
return 1;
}
public timer_fuel_lower()
{
new engine, lights, alarm, doors, bonnet, boot, objective;
for(new i=0;i<MAX_Vehicles;i++)
{
GetVehicleParamsEx(vid, engine, lights, alarm, doors, bonnet, boot, objective);
if(engine == 1)
{
fuel[i] -= 1;
}
}
return 1;
}
public ShowGas()
{
new str[15];
new engine, lights, alarm, doors, bonnet, boot, objective;
for(new i=0;i<MAX_PLAYERS;i++)
{
if(IsPlayerInAnyVehicle(i))
{
if(fuel[GetPlayerVehicleID(i)] == 0)
{
GetVehicleParamsEx(GetPlayerVehicleID(i), engine, lights, alarm, doors, nonnet, boot, objective);
SendClientMessage(i, -1, "Your car ran out of fuel!");
SetVehicleParamsEx(GetPlayerVehicleID(i), 0, lights, alarm, doors, bonnet, boot, objective);
}
format(str, sizeof(str), "Fuel:%i", fuel[GetPlayerVehicleID(i)]);
GameTextForPlayer(i, str, 3000, 3);
}
}