23.07.2012, 00:31
Basically, sometimes if you go in a car, both Speedometer and Fuel Gauge's display. But sometimes, just the fuel gauge displays, I've had 3 people on the server testing, maybe it will fully work for 2 people and not work for one or vice versa, it's completely random. Here's the code:
Under OnPlayerConnect.
Engine on Command.
Forwards.
Speedo + Fuel Timers.
If you can find something, let me know!
Under OnPlayerConnect.
pawn Код:
speed[playerid] = TextDrawCreate(478,389,"_");
TextDrawLetterSize(speed[playerid],0.37,2.0);
TextDrawSetOutline(speed[playerid],1);
TextDrawFont(speed[playerid], 2);
fuel[playerid] = TextDrawCreate(478,413,"_");
TextDrawLetterSize(fuel[playerid],0.37,2.0);
TextDrawSetOutline(fuel[playerid],1);
TextDrawFont(fuel[playerid], 2);
pawn Код:
CMD:eon(playerid, params[])
{
if(LoggedIn[playerid] == 0)return SendClientMessage(playerid, COLOUR_GREY, "You must be logged in to use this command.");
if(IsRefuelling[playerid] == 1)return SendClientMessage(playerid, COLOUR_GREY, "You may not turn your engine on as you are refuelling.");
printf("checks if refueling");
new string[128];
new vehicleid = GetPlayerVehicleID(playerid);
new name = GetVehicleModel(vehicleid) - 400;
if(GetPlayerState(playerid) != PLAYER_STATE_DRIVER)return SendClientMessage(playerid, COLOUR_GREY, "You are not the driver.");
printf("checks player state");
if(EngineStartStatus[vehicleid] == 1)return SendClientMessage(playerid, COLOUR_GREY, "The engine is already on.");
printf("checks engine");
if(!IsPlayerInAnyVehicle(playerid))return SendClientMessage(playerid, COLOUR_GREY, "You are not in a vehicle.");
printf("checks if in vehicle.");
KillTimer(SpeedoSysTimer[playerid]);
printf("kills speedo");
KillTimer(FuelSysTimer[playerid]);
printf("kills fuel");
TextDrawShowForPlayer(playerid,speed[playerid]);
printf("shows speedo");
TextDrawShowForPlayer(playerid,fuel[playerid]);
printf("shows fuel");
TextDrawDestroy(enginestring);
SpeedoSysTimer[playerid] = SetTimerEx("SpeedoUpdate", 300, true, "i", playerid);
printf("speedotimer");
FuelSysTimer[playerid] = SetTimerEx("FuelUpdate", 30000, true, "i", playerid);
printf("fueltimer");
SetTimer("FuelSave", 4000, 1);
if(VehFuel[vehicleid] > 0)
{
EngineStartStatus[vehicleid] = 1;
GameTextForPlayer(playerid, "~g~Engine starting...", 2500, 5);
SetTimerEx("EngineOn", 3000, false, "i", playerid);
format(string, sizeof(string), "* %s turns the %s's ignition key...", GetNameEx(playerid), VehicleNames[name]);
ProxDetector(30.0, playerid, string, COLOUR_PURPLE, COLOUR_PURPLE, COLOUR_PURPLE, COLOUR_PURPLE, COLOUR_PURPLE);
}
else if(VehFuel[vehicleid] == 0)
{
EngineStartStatus[vehicleid] = 0;
SendClientMessage(playerid, COLOUR_REALRED, "Your vehicle is out of fuel..");
format(string, sizeof(string), "* The %s has run out of fuel and failed to start.", VehicleNames[name]);
ProxDetector(30.0, playerid, string, COLOUR_PURPLE, COLOUR_PURPLE, COLOUR_PURPLE, COLOUR_PURPLE, COLOUR_PURPLE);
}
return 1;
}
pawn Код:
forward SpeedoUpdate(playerid);
forward FuelUpdate(playerid);
new Text:speed[MAX_PLAYERS],Text:fuel[MAX_PLAYERS];
pawn Код:
public SpeedoUpdate(playerid)
{
if(IsPlayerInAnyVehicle(playerid))
{
new Float:x,Float:y,Float:z,string[24],vehicleid = GetPlayerVehicleID(playerid);
GetVehicleVelocity(vehicleid,x,y,z);
format(string,sizeof(string),"~g~Speed: ~w~%d mph",floatround(floatsqroot(((x*x)+(y*y))+(z*z))*156.666667*0.641371192));
TextDrawSetString(speed[playerid],string);
format(string,sizeof(string),"~g~Fuel: ~w~%d%%",VehFuel[vehicleid]);
TextDrawSetString(fuel[playerid],string);
}
}
public FuelUpdate(playerid)
{
if(IsPlayerInAnyVehicle(playerid))
{
new pvehicle = GetPlayerVehicleID(playerid);
for(new i = 1;i<MAX_VEHICLES;i++)
{
if(GetVehicleModel(i))
{
GetVehicleParamsEx(i,engine,lights,alarm,doors,bonnet,boot,objective);
if(engine == 1)
{
if(VehFuel[i] > 0)
{
VehFuel[i]--;
Fuel = VehFuel[i];
}
else if(VehFuel[pvehicle] == 0)
{
KillTimer(FuelSysTimer[playerid]);
EngineStartStatus[i] = 0;
SetVehicleParamsEx(i,0,lights,alarm,doors,bonnet,boot,objective);
GameTextForPlayer(playerid, "~r~out of fuel", 3000, 5);
SendClientMessage(playerid, COLOUR_REALRED, "Your vehicle has run out of fuel.");
}
}
}
}
}
}