Problema Sistema Gasolina
#1

Bueno eh estado sacando el sistema de gasolina con ProgressBar del GM Virtual Rol.
y poniendolo en el GM de Zenon City.
Y no me da ningun error ,pero no hace las funciones que tendria que hacer.
El problema es el siguiente.
La barra de gasolina me aparece asi normal sin subirme al vehiculo, una vez subido en el vehiclo la barra baja rapidamente y no no se detiene y no dice nada de que queda poca gasolina, (la barra baja en 2 segundos).
Despues de que la barra se quede vacia sigue conduciendo el auto y no me dice nada pero despues de 10 segundos o asi me lo dice y se detiene el vehiculo,pero me bajo y me vuelvo a subir y el vehiculo puedo arrancarlo(que deberia quedarse quieto y decirme que no hay gasolina).
Esto es lo que he hecho x)

Los news y define

Код:
#define RunOutTime 25000
#define GasMax 100
#define CAR_AMOUNT 700 //Change to Your Vehicle Amount
#define RefuelWait 5000
new Gas[MAX_VEHICLES];
new Text:GasolinaT[MAX_PLAYERS];// No lo pongo completo porque es un simple TextDraw
new Bar:BGasolina[MAX_PLAYERS];
new checkgastimer;
new gGas[MAX_PLAYERS];
new NoFuel[MAX_PLAYERS];
Esto en OnPlayerConnect
Код:
BGasolina[playerid] = CreateProgressBar(144.00, 402.00, 74.50, 3.20, 7527679, 100.0);
 SetProgressBarMaxValue(BGasolina[playerid], 100);
Aqui donde se resetean las variables...
NoFuel[playerid] = 0;	
gGas[playerid] = 0;
En OnPlayerDisconnect
Код:
DestroyProgressBar(BGasolina[playerid]);
OnPlayerUpdate
Код:
new vehicleid = GetPlayerVehicleID(playerid);
     if(IsPlayerInAnyVehicle(playerid))
     Gas[vehicleid]--;
     SetProgressBarValue(BGasolina[playerid], Gas[vehicleid]);
     UpdateProgressBar(BGasolina[playerid], playerid);
     TextDrawShowForPlayer(playerid,GasolinaT[playerid]);
     TextDrawHideForPlayer(playerid,GasolinaT[playerid]);
     TextDrawShowForPlayer(playerid,GasolinaT[playerid]);
En OnGamemodeExit
Код:
KillTimer(checkgastimer);
En OnGameModeInit
Код:
checkgastimer = SetTimer("CheckGas", RunOutTime, 1);
	for(new c=0;c<CAR_AMOUNT;c++)
	{
		Gas[c] = RandomEx(50,100);
	}
Los forwards
Код:
forward CheckGas();
Aqui los public
Код:
public CheckGas()
{
	new string[256];
	for(new i=0;i<MAX_PLAYERS;i++)
	{
    	if(IsPlayerConnected(i))
       	{
       	    if(GetPlayerState(i) == PLAYER_STATE_DRIVER)
       	    {
	       		new vehicle = GetPlayerVehicleID(i);
	        	if(Gas[vehicle] >= 1)
		   		{
		   		    if(Gas[vehicle] <= 10)
				    {
			   			PlayerPlaySound(i, 1085, 0.0, 0.0, 0.0);
				    }
					if(IsAPlane(vehicle) || IsABoat(vehicle) || IsAHarvest(vehicle)  || IsASweeper(vehicle) || arr_Engine[vehicle] == 0) { Gas[vehicle]++; }
	              	Gas[vehicle]--;
	              	format(string,sizeof(string),"~n~~n~~n~~n~~n~~n~~n~~w~Gasolina: ~r~%d",Gas[vehicle]);
	              	return 1;
		   		}
	   			else if(Gas[vehicle] <= 0)
	           	{
	              	NoFuel[i] = 1;
	              	Gas[vehicle] = 0;
	              	TogglePlayerControllable(i, 0);
		        	GameTextForPlayer(i,"~n~~n~~n~~n~~n~~n~~n~No queda Gasolina",1500,3);
				}
			}
    	}
	}
	return 1;
}
OnPlayerEnterVehicle
Код:
	if(NoFuel[playerid] == 1)
			{
			    TogglePlayerControllable(playerid, 1);
				RemovePlayerFromVehicle(playerid);
				NoFuel[playerid] = 0;
			}
OnPlayerExitVehicle
Код:
if(gGas[playerid] == 1)
	{
	    GameTextForPlayer(playerid, "~n~~n~~n~~n~~n~~n~~n~~n~~n~~n~~n~~n~~n~~n~~n~Queda Poca Gasolina", 500, 3);
	}
	if (GetPlayerState(playerid) == 1)
	{
		return 1;
	}
Y esto intente ponerlo en

function SetVehicleEngine(vehicleid, playerid)
Код:
{
	new engine,lights,alarm,doors,bonnet,boot,objective;
    GetVehicleParamsEx(vehicleid,engine,lights,alarm,doors,bonnet,boot,objective);
    if(engine == VEHICLE_PARAMS_ON)
	{
		SetVehicleParamsEx(vehicleid,VEHICLE_PARAMS_OFF,lights,alarm,doors,bonnet,boot,objective);
		SendClientMessageEx(playerid, COLOR_WHITE, "Motor a sido apagado con йxito.");
		EncendioMotor[playerid] = 0;
		arr_Engine{vehicleid} = 0;
	}
    else if(engine == VEHICLE_PARAMS_OFF || engine == VEHICLE_PARAMS_UNSET)
	{
		new Float: f_vHealth;
		GetVehicleHealth(vehicleid, f_vHealth);
		if(f_vHealth < 350.0) return SendClientMessageEx(playerid, COLOR_RED, "El coche no prenderб, el motor se ha quemado! (/servicios)");
		for(new i=0;i<MAX_PLAYERS;i++)
		if(Gas[vehicleid] <= 0)
	           	{
	              	NoFuel[i] = 1;
	              	Gas[vehicleid] = 0;
	              	TogglePlayerControllable(i, 0);
		        	GameTextForPlayer(i,"~n~~n~~n~~n~~n~~n~~n~No queda Gasolina",1500,3);
				}
		SetVehicleParamsEx(vehicleid,VEHICLE_PARAMS_ON,lights,alarm,doors,bonnet,boot,objective);
		Info[playerid][pSpeedo] = 1;
		SendClientMessageEx(playerid, COLOR_GREEN2, "Vehiculo a encendido con йxito. (/v motor para apagarlo)");
		arr_Engine{vehicleid} = 1;
	}
	return 1;
}
Que seria casi lo mismo que en public CheckGas.. Pero nada sigue igual..
Reply
#2

Tendrias que hacer un timer en el que cada tantos segundos le saque tanta gasolina a todos los autos encendidos en el servidor, y que el mismo tambien checkee si tienen poca gasolina para apagarlo.

Proba asi, seguro te va a funcionar!
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)