Vehicle with no fuel
#1

Hey I have problem in my script I defined my vehicles that are not using fuel, some bikes and carts and so on.. here is stock:

pawn Код:
stock NoFuel(playerid)
{
    new V = GetPlayerVehicleID(playerid);
    if(V == 481 || V == 509 || V == 510 || V == 441 || V == 464 || V == 465 || V == 501 || V == 564 || V == 594)
    {
        return 1;
    }
    return 0;
}
And OnPlayerStateChange:

pawn Код:
public OnPlayerStateChange(playerid, newstate, oldstate)
{
    new vehicleid = GetPlayerVehicleID(playerid);
    new engine,lights,alarm,doors,bonnet,boot,objective;
    GetVehicleParamsEx(vehicleid,engine,lights,alarm,doors,bonnet,boot,objective);
    if(oldstate == PLAYER_STATE_ONFOOT && newstate == PLAYER_STATE_DRIVER)
    {
        if(GetPlayerVehicleID(playerid) == NoFuel(vehicleid))
        {
            SetVehicleParamsEx(vehicleid,1,lights,alarm,doors,bonnet,boot,objective);
            return 1;
        }
        if(oldstate-1 && newstate)
        {
            TextDrawHideForPlayer(playerid, vName[playerid]);
            TextDrawHideForPlayer(playerid, vSpeed[playerid]);
            TextDrawHideForPlayer(playerid, vGear[playerid]);
            TextDrawHideForPlayer(playerid, vHP[playerid]);
            TextDrawHideForPlayer(playerid, vFuel[playerid]);
            TextDrawHideForPlayer(playerid, HP[playerid]);
            TextDrawHideForPlayer(playerid, Speed[playerid]);
            TextDrawHideForPlayer(playerid, Gear[playerid]);
            TextDrawHideForPlayer(playerid, Veh[playerid]);
            TextDrawHideForPlayer(playerid, Fuel[playerid]);
        }
        if(Carinfo[vehicleid][F] < 1)
        {
            TextDrawHideForPlayer(playerid, vName[playerid]);
            TextDrawHideForPlayer(playerid, vSpeed[playerid]);
            TextDrawHideForPlayer(playerid, vGear[playerid]);
            TextDrawHideForPlayer(playerid, vHP[playerid]);
            TextDrawHideForPlayer(playerid, vFuel[playerid]);
            TextDrawHideForPlayer(playerid, HP[playerid]);
            TextDrawHideForPlayer(playerid, Speed[playerid]);
            TextDrawHideForPlayer(playerid, Gear[playerid]);
            TextDrawHideForPlayer(playerid, Veh[playerid]);
            TextDrawHideForPlayer(playerid, Fuel[playerid]);
            SendClientMessage(playerid, COLOR_YELLOW,"{FF0000}INFO: {FFFFFF}This vehicle is out of fuel, buy gas can at any gas station and refuel it.");
            SetVehicleParamsEx(vehicleid,0,lights,alarm,doors,bonnet,boot,objective);
            return 1;
        }
        else if(Carinfo[vehicleid][F] > 1 && vehicleid != NoFuel(playerid))
        {
            SendClientMessage(playerid, COLOR_RED,"{FF6A22}INFO: {FFFFFF}Write {FF6A22}/engine {FFFFFF}to turn on engine.");
            return 1;
        }
    }
    return 1;
}
The problem is when I sit on bike vehicle params (in this case engine) is still turned off so I need to use /engine on it -.-' what is wrong?
Reply
#2

You are comparing the vehicle ID when you should be comparing the vehicle model.

pawn Код:
stock NoFuel(vehicleid)
{
    switch (GetVehicleModel(vehicleid))
    {
        case 481, 509, 510, 441, 464, 465, 501, 564, 594:
            return 1;
    }
    return 0;
}
Reply
#3

It still tell me this:
pawn Код:
else if(Carinfo[vehicleid][F] > 1 && vehicleid != NoFuel(playerid))
        {
            SendClientMessage(playerid, COLOR_RED,"{FF6A22}INFO: {FFFFFF}Write {FF6A22}/engine {FFFFFF}to turn on engine.");
            return 1;
        }
Maybe because of this loop on Filterscript init?

pawn Код:
for(new vehicleid; vehicleid < MAX_VEHICLES; vehicleid++)
    {
        Carinfo[vehicleid][F] = 100;
    }
Reply
#4

pawn Код:
else if(Carinfo[vehicleid][F] > 1 && vehicleid != NoFuel(GetPlayerVehicleID(playerid)))
        {
            SendClientMessage(playerid, COLOR_RED,"{FF6A22}INFO: {FFFFFF}Write {FF6A22}/engine {FFFFFF}to turn on engine.");
            return 1;
        }
The NoFuel I've posted must not take "playerid" as a parameter.
Reply
#5

Okay but it still say "write /engine to turn on the engine" if I sit on bike.. :/ this might help you to find problem in script

pawn Код:
public OnPlayerStateChange(playerid, newstate, oldstate)
{
    new vehicleid = GetPlayerVehicleID(playerid);
    new engine,lights,alarm,doors,bonnet,boot,objective;
    GetVehicleParamsEx(vehicleid,engine,lights,alarm,doors,bonnet,boot,objective);
    if(oldstate == PLAYER_STATE_ONFOOT && newstate == PLAYER_STATE_DRIVER)
    {
        if(GetPlayerVehicleID(playerid) == NoFuel(vehicleid))
        {
            SetVehicleParamsEx(vehicleid,1,lights,alarm,doors,bonnet,boot,objective);
            return 1;
        }
        if(oldstate-1 && newstate)
        {
            KillTimer(GasTimer[playerid]);
            TextDrawHideForPlayer(playerid, vName[playerid]);
            TextDrawHideForPlayer(playerid, vSpeed[playerid]);
            TextDrawHideForPlayer(playerid, vGear[playerid]);
            TextDrawHideForPlayer(playerid, vHP[playerid]);
            TextDrawHideForPlayer(playerid, vFuel[playerid]);
            TextDrawHideForPlayer(playerid, HP[playerid]);
            TextDrawHideForPlayer(playerid, Speed[playerid]);
            TextDrawHideForPlayer(playerid, Gear[playerid]);
            TextDrawHideForPlayer(playerid, Veh[playerid]);
            TextDrawHideForPlayer(playerid, Fuel[playerid]);
        }
        if(Carinfo[vehicleid][F] < 1)
        {
            TextDrawHideForPlayer(playerid, vName[playerid]);
            TextDrawHideForPlayer(playerid, vSpeed[playerid]);
            TextDrawHideForPlayer(playerid, vGear[playerid]);
            TextDrawHideForPlayer(playerid, vHP[playerid]);
            TextDrawHideForPlayer(playerid, vFuel[playerid]);
            TextDrawHideForPlayer(playerid, HP[playerid]);
            TextDrawHideForPlayer(playerid, Speed[playerid]);
            TextDrawHideForPlayer(playerid, Gear[playerid]);
            TextDrawHideForPlayer(playerid, Veh[playerid]);
            TextDrawHideForPlayer(playerid, Fuel[playerid]);
            SendClientMessage(playerid, COLOR_YELLOW,"{FF0000}INFO: {FFFFFF}This vehicle is out of fuel, buy gas can at any gas station and refuel it.");
            SetVehicleParamsEx(vehicleid,0,lights,alarm,doors,bonnet,boot,objective);
            return 1;
        }
        else if(Carinfo[vehicleid][F] > 1 && vehicleid != NoFuel(GetPlayerVehicleID(playerid)))
        {
            SendClientMessage(playerid, COLOR_RED,"{FF6A22}INFO: {FFFFFF}Write {FF6A22}/engine {FFFFFF}to turn on engine.");
            return 1;
        }
    }
    return 1;
}
Reply
#6

pawn Код:
public OnPlayerStateChange(playerid, newstate, oldstate)
{
    new vehicleid = GetPlayerVehicleID(playerid);
    new engine,lights,alarm,doors,bonnet,boot,objective;
    GetVehicleParamsEx(vehicleid,engine,lights,alarm,doors,bonnet,boot,objective);
    if(oldstate == PLAYER_STATE_ONFOOT && newstate == PLAYER_STATE_DRIVER)
    {
        if(NoFuel(vehicleid))
        {
            SetVehicleParamsEx(vehicleid,1,lights,alarm,doors,bonnet,boot,objective);
            return 1;
        }
        if(oldstate-1 && newstate)
        {
            KillTimer(GasTimer[playerid]);
            TextDrawHideForPlayer(playerid, vName[playerid]);
            TextDrawHideForPlayer(playerid, vSpeed[playerid]);
            TextDrawHideForPlayer(playerid, vGear[playerid]);
            TextDrawHideForPlayer(playerid, vHP[playerid]);
            TextDrawHideForPlayer(playerid, vFuel[playerid]);
            TextDrawHideForPlayer(playerid, HP[playerid]);
            TextDrawHideForPlayer(playerid, Speed[playerid]);
            TextDrawHideForPlayer(playerid, Gear[playerid]);
            TextDrawHideForPlayer(playerid, Veh[playerid]);
            TextDrawHideForPlayer(playerid, Fuel[playerid]);
        }
        if(Carinfo[vehicleid][F] < 1)
        {
            TextDrawHideForPlayer(playerid, vName[playerid]);
            TextDrawHideForPlayer(playerid, vSpeed[playerid]);
            TextDrawHideForPlayer(playerid, vGear[playerid]);
            TextDrawHideForPlayer(playerid, vHP[playerid]);
            TextDrawHideForPlayer(playerid, vFuel[playerid]);
            TextDrawHideForPlayer(playerid, HP[playerid]);
            TextDrawHideForPlayer(playerid, Speed[playerid]);
            TextDrawHideForPlayer(playerid, Gear[playerid]);
            TextDrawHideForPlayer(playerid, Veh[playerid]);
            TextDrawHideForPlayer(playerid, Fuel[playerid]);
            SendClientMessage(playerid, COLOR_YELLOW,"{FF0000}INFO: {FFFFFF}This vehicle is out of fuel, buy gas can at any gas station and refuel it.");
            SetVehicleParamsEx(vehicleid,0,lights,alarm,doors,bonnet,boot,objective);
            return 1;
        }
        else if(Carinfo[vehicleid][F] > 1 && !NoFuel(vehicleid))
        {
            SendClientMessage(playerid, COLOR_RED,"{FF6A22}INFO: {FFFFFF}Write {FF6A22}/engine {FFFFFF}to turn on engine.");
            return 1;
        }
    }
    return 1;
}
Reply
#7

Thank you what about this code?
pawn Код:
if(GetPlayerVehicleID(playerid) == NoFuel(GetPlayerVehicleID(playerid))) return SendClientMessage(playerid, COLOR_RED,"{FF6A22}INFO: {FFFFFF}You can't do that on this vehicle.");
If I'm sitting on bike I can still use it :/ - it's code from command
Reply
#8

No, that's not how you use it at all!

Change:

pawn Код:
if(GetPlayerVehicleID(playerid) == NoFuel(GetPlayerVehicleID(playerid)))
So change it to this code below. Any other code like that one above should be replaced with this one:

pawn Код:
if (NoFuel(GetPlayerVehicleID(playerid)))
Reply
#9

Thank you rep+
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)