SA-MP Forums Archive
Bug with refuel need help. - Printable Version

+- SA-MP Forums Archive (https://sampforum.blast.hk)
+-- Forum: SA-MP Scripting and Plugins (https://sampforum.blast.hk/forumdisplay.php?fid=8)
+--- Forum: Scripting Help (https://sampforum.blast.hk/forumdisplay.php?fid=12)
+---- Forum: Help Archive (https://sampforum.blast.hk/forumdisplay.php?fid=89)
+---- Thread: Bug with refuel need help. (/showthread.php?tid=271439)



Bug with refuel need help. - GBLTeam - 24.07.2011

I have one bug when i go to gas station and type /refuel then move my car and its not stoping taking my money like crazy i can't stop it.




Here is comamnd:

Refuel CMD:
Code:
CMD:refuel(playerid, params[])
{
    if(IsPlayerInAnyVehicle(playerid) && GetPlayerState(playerid) == PLAYER_STATE_DRIVER)
	{
	    new vehicleid = GetPlayerVehicleID(playerid);
	    new engine,lights,alarm,doors,bonnet,boot,objective;
    	GetVehicleParamsEx(vehicleid,engine,lights,alarm,doors,bonnet,boot,objective);
	    if(engine == VEHICLE_PARAMS_ON) return SendClientMessageEx(playerid, COLOR_RED, "You need to shut off the engine before filling up (/car engine).");
	    if(!IsAtFuelStation(playerid)) return SendClientMessageEx(playerid, COLOR_RED, "You're not at a fuel station.");
	    if(GetVehicleModel(vehicleid) == 481 || GetVehicleModel(vehicleid) == 509 || GetVehicleModel(vehicleid) == 510) return SendClientMessageEx(playerid,COLOR_RED,"This vehicle doesn't need fuel.");
	    if(VehicleFuel[vehicleid] >= 100.0) return SendClientMessageEx(playerid, COLOR_RED, "This vehicle's tank is already full.");
	    if(RefuelingVehicle[playerid] == 1) return SendClientMessageEx(playerid, COLOR_RED, "You are refilling your vehicle's tank.");
       	SendClientMessageEx(playerid, COLOR_WHITE, "Refueling your vehicle's tank, please wait.");
       	RefuelingVehicle[playerid] = 1;
       	RefuelingVehicleTimer[playerid] = SetTimerEx("ReFill", 1000, true, "i", playerid);
	}
	return 1;
}
Refill timer:
Code:
forward ReFill(playerid);
public ReFill(playerid)
{
	if(!IsAtFuelStation(playerid) || !IsPlayerInAnyVehicle(playerid) || VehicleFuel[GetPlayerVehicleID(playerid)] >= 100.0 || GetPlayerCash(playerid) < 1)
	{
		StopRefueling(playerid);
	}
	else
	{
	    new engine,lights,alarm,doors,bonnet,boot,objective;
    	GetVehicleParamsEx(GetPlayerVehicleID(playerid),engine,lights,alarm,doors,bonnet,boot,objective);
		if(engine == VEHICLE_PARAMS_ON) return StopRefueling(playerid);
		VehicleFuel[GetPlayerVehicleID(playerid)] += 1.0; RefuelingVehiclePrice[playerid] += 30;
		if(VehicleFuel[GetPlayerVehicleID(playerid)] >= 100.0) VehicleFuel[GetPlayerVehicleID(playerid)] = 100.0;
	}
	return true;
}



Re: Bug with refuel need help. - Dirkon - 24.07.2011

Try changing this:
pawn Code:
RefuelingVehicleTimer[playerid] = SetTimerEx("ReFill", 1000, true, "i", playerid);
With this:
pawn Code:
RefuelingVehicleTimer[playerid] = SetTimerEx("ReFill", 1000, false, "i", playerid);
I don't know, but maybe you have that problem because you set your timer to repeat.


Re: Bug with refuel need help. - alpha500delta - 24.07.2011

Quote:
Originally Posted by Dirkon
View Post
Try changing this:
pawn Code:
RefuelingVehicleTimer[playerid] = SetTimerEx("ReFill", 1000, true, "i", playerid);
With this:
pawn Code:
RefuelingVehicleTimer[playerid] = SetTimerEx("ReFill", 1000, false, "i", playerid);
I don't know, but maybe you have that problem because you set your timer to repeat.
That will work, but you can also use KillTimer .


Re: Bug with refuel need help. - MadeMan - 24.07.2011

Show StopRefueling(playerid) function.


Re: Bug with refuel need help. - GBLTeam - 24.07.2011

Quote:
Originally Posted by Dirkon
View Post
Try changing this:
pawn Code:
RefuelingVehicleTimer[playerid] = SetTimerEx("ReFill", 1000, true, "i", playerid);
With this:
pawn Code:
RefuelingVehicleTimer[playerid] = SetTimerEx("ReFill", 1000, false, "i", playerid);
I don't know, but maybe you have that problem because you set your timer to repeat.
Not working.


Quote:
Originally Posted by MadeMan
View Post
Show StopRefueling(playerid) function.
Code:
stock StopRefueling(playerid)
{
	GivePlayerCash(playerid, -RefuelingVehiclePrice[playerid]);
	SendFormattedMessage(playerid, COLOR_WHITE,"Your vehicle's tank has been refilled for $%d.", RefuelingVehiclePrice[playerid]);

	new mypoint = -1;
	for (new i=0; i<MAX_POINTS; i++)
	{
		if(strcmp(Points[i][Name], "Fossil Fuel Company", true) == 0)
		{
			mypoint = i;
		}
	}
	for(new i = 0; i < sizeof(FamilyInfo); i++)
	{
		if(strcmp(Points[mypoint][Owner], FamilyInfo[i][FamilyName], true) == 0)
		{
			FamilyInfo[i][FamilyBank] = FamilyInfo[i][FamilyBank]+(RefuelingVehiclePrice[playerid]/10);
		}
	}

	RefuelingVehicle[playerid] = 0; RefuelingVehiclePrice[playerid] = 0; RefuelingVehicleTimer[playerid] = 0; KillTimer(RefuelingVehicleTimer[playerid]);
	return true;
}
Anyone to help me please.


Re: Bug with refuel need help. - MoroDan - 24.07.2011

Try this:
PHP Code:
forward ReFill(playerid);
public 
ReFill(playerid)
{
    if(!
IsAtFuelStation(playerid) || !IsPlayerInAnyVehicle(playerid) || VehicleFuel[GetPlayerVehicleID(playerid)] >= 100.0 || GetPlayerCash(playerid) < 1)
    {
        
StopRefueling(playerid);
        
KillTimer(RefuelingVehicleTimer[playerid]);
    }
    else
    {
        new 
engine,lights,alarm,doors,bonnet,boot,objective;
        
GetVehicleParamsEx(GetPlayerVehicleID(playerid),engine,lights,alarm,doors,bonnet,boot,objective);
        if(
engine == VEHICLE_PARAMS_ON)
        {
            
KillTimer(RefuelingVehicleTimer[playerid]);
            return 
StopRefueling(playerid);
        }
        
VehicleFuel[GetPlayerVehicleID(playerid)] += 1.0RefuelingVehiclePrice[playerid] += 30;
        if(
VehicleFuel[GetPlayerVehicleID(playerid)] >= 100.0VehicleFuel[GetPlayerVehicleID(playerid)] = 100.0;
    }
    return 
true;

Or this:
PHP Code:
stock StopRefueling(playerid)
{
    
GivePlayerCash(playerid, -RefuelingVehiclePrice[playerid]);
    
SendFormattedMessage(playeridCOLOR_WHITE,"Your vehicle's tank has been refilled for $%d."RefuelingVehiclePrice[playerid]);
    new 
mypoint = -1;
    for (new 
i=0i<MAX_POINTSi++)
    {
        if(
strcmp(Points[i][Name], "Fossil Fuel Company"true) == 0)
        {
            
mypoint i;
        }
    }
    for(new 
0sizeof(FamilyInfo); i++)
    {
        if(
strcmp(Points[mypoint][Owner], FamilyInfo[i][FamilyName], true) == 0)
        {
            
FamilyInfo[i][FamilyBank] = FamilyInfo[i][FamilyBank]+(RefuelingVehiclePrice[playerid]/10);
        }
    }
    
KillTimer(RefuelingVehicleTimer[playerid]);
    
RefuelingVehicle[playerid] = RefuelingVehiclePrice[playerid] = RefuelingVehicleTimer[playerid] = 0
    return 
true;

Both works .


Re: Bug with refuel need help. - GBLTeam - 24.07.2011

Quote:
Originally Posted by MoroDan
View Post
Try this:
PHP Code:
forward ReFill(playerid);
public 
ReFill(playerid)
{
    if(!
IsAtFuelStation(playerid) || !IsPlayerInAnyVehicle(playerid) || VehicleFuel[GetPlayerVehicleID(playerid)] >= 100.0 || GetPlayerCash(playerid) < 1)
    {
        
StopRefueling(playerid);
        
KillTimer(RefuelingVehicleTimer[playerid]);
    }
    else
    {
        new 
engine,lights,alarm,doors,bonnet,boot,objective;
        
GetVehicleParamsEx(GetPlayerVehicleID(playerid),engine,lights,alarm,doors,bonnet,boot,objective);
        if(
engine == VEHICLE_PARAMS_ON)
        {
            
KillTimer(RefuelingVehicleTimer[playerid]);
            return 
StopRefueling(playerid);
        }
        
VehicleFuel[GetPlayerVehicleID(playerid)] += 1.0RefuelingVehiclePrice[playerid] += 30;
        if(
VehicleFuel[GetPlayerVehicleID(playerid)] >= 100.0VehicleFuel[GetPlayerVehicleID(playerid)] = 100.0;
    }
    return 
true;

Or this:
PHP Code:
stock StopRefueling(playerid)
{
    
GivePlayerCash(playerid, -RefuelingVehiclePrice[playerid]);
    
SendFormattedMessage(playeridCOLOR_WHITE,"Your vehicle's tank has been refilled for $%d."RefuelingVehiclePrice[playerid]);
    new 
mypoint = -1;
    for (new 
i=0i<MAX_POINTSi++)
    {
        if(
strcmp(Points[i][Name], "Fossil Fuel Company"true) == 0)
        {
            
mypoint i;
        }
    }
    for(new 
0sizeof(FamilyInfo); i++)
    {
        if(
strcmp(Points[mypoint][Owner], FamilyInfo[i][FamilyName], true) == 0)
        {
            
FamilyInfo[i][FamilyBank] = FamilyInfo[i][FamilyBank]+(RefuelingVehiclePrice[playerid]/10);
        }
    }
    
KillTimer(RefuelingVehicleTimer[playerid]);
    
RefuelingVehicle[playerid] = RefuelingVehiclePrice[playerid] = RefuelingVehicleTimer[playerid] = 0
    return 
true;

Both works .
Not working,Still have bug :S


Re: Bug with refuel need help. - =WoR=Varth - 25.07.2011

pawn Code:
public ReFill(playerid)
{
    if(!IsAtFuelStation(playerid) || !IsPlayerInAnyVehicle(playerid) || VehicleFuel[GetPlayerVehicleID(playerid)] >= 100.0 || GetPlayerCash(playerid) < 1)
    {
        StopRefueling(playerid);
    }
    else
    {
        new engine,lights,alarm,doors,bonnet,boot,objective;
        GetVehicleParamsEx(GetPlayerVehicleID(playerid),engine,lights,alarm,doors,bonnet,boot,objective);
        if(engine == VEHICLE_PARAMS_ON) return StopRefueling(playerid);
        VehicleFuel[GetPlayerVehicleID(playerid)] += 1.0; RefuelingVehiclePrice[playerid] += 30;
        if(VehicleFuel[GetPlayerVehicleID(playerid)] >= 100.0) VehicleFuel[GetPlayerVehicleID(playerid)] = 100.0;
        KillTimer(RefuelingVehicleTimer[playerid]);//This...
    }
    return true;
}



Re: Bug with refuel need help. - GBLTeam - 25.07.2011

Quote:
Originally Posted by varthshenon
View Post
pawn Code:
public ReFill(playerid)
{
    if(!IsAtFuelStation(playerid) || !IsPlayerInAnyVehicle(playerid) || VehicleFuel[GetPlayerVehicleID(playerid)] >= 100.0 || GetPlayerCash(playerid) < 1)
    {
        StopRefueling(playerid);
    }
    else
    {
        new engine,lights,alarm,doors,bonnet,boot,objective;
        GetVehicleParamsEx(GetPlayerVehicleID(playerid),engine,lights,alarm,doors,bonnet,boot,objective);
        if(engine == VEHICLE_PARAMS_ON) return StopRefueling(playerid);
        VehicleFuel[GetPlayerVehicleID(playerid)] += 1.0; RefuelingVehiclePrice[playerid] += 30;
        if(VehicleFuel[GetPlayerVehicleID(playerid)] >= 100.0) VehicleFuel[GetPlayerVehicleID(playerid)] = 100.0;
        KillTimer(RefuelingVehicleTimer[playerid]);//This...
    }
    return true;
}
This work but not refueling vehicle and didnt takes money..


Re: Bug with refuel need help. - Berky - 25.07.2011

Use a servertimer such as Y_Less's Timers:
Code:
Timer:ServerSecondTimer[1000]
{
if(RefuelingVehicleTimer[playerid] > 0)
{
RefuelingVehicleTimer[playerid]--;
}
}
On refill you set the RefuelingVehicleTimer[playerid] to 10 (10 seconds) and after 10 seconds it will stop refilling.


Re: Bug with refuel need help. - =WoR=Varth - 26.07.2011

I mean
pawn Код:
public ReFill(playerid)
{
    if(!IsAtFuelStation(playerid) || !IsPlayerInAnyVehicle(playerid) || VehicleFuel[GetPlayerVehicleID(playerid)] >= 100.0 || GetPlayerCash(playerid) < 1)
    {
        StopRefueling(playerid);
    }
    else
    {
        new engine,lights,alarm,doors,bonnet,boot,objective;
        GetVehicleParamsEx(GetPlayerVehicleID(playerid),engine,lights,alarm,doors,bonnet,boot,objective);
        if(engine == VEHICLE_PARAMS_ON) return StopRefueling(playerid);
        VehicleFuel[GetPlayerVehicleID(playerid)] += 1.0; RefuelingVehiclePrice[playerid] += 30;
        if(VehicleFuel[GetPlayerVehicleID(playerid)] >= 100.0) StopRefueling(playerid);
    }
    return true;
}
Sorry