new SpeedoSysTimer[MAX_PLAYERS];
new FuelSysTimer[MAX_PLAYERS];
forward SpeedoUpdate(playerid);
forward FuelUpdate(playerid);
new Text:speed[MAX_PLAYERS],Text:fuel[MAX_PLAYERS];
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;
}
public SpeedoUpdate()
{
foreach(Player, i)
{
if(IsPlayerInAnyVehicle(i))
{
new Float:x,Float:y,Float:z,string[24],vehicleid = GetPlayerVehicleID(i);
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[i],string);
format(string,sizeof(string),"~g~Fuel: ~w~%d%%",VehFuel[vehicleid]);
TextDrawSetString(fuel[i],string);
}
}
}
SpeedoSysTimer[playerid] = SetTimerEx("SpeedoUpdate", 800, true, "i", playerid);
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);
}
}
well...
you have this pawn Code:
pawn Code:
as you have a cmd to turn on the speedo , etc.. just forward the player id so you dont have to loop through all players creating more lag becouse the timers is running at 300 every milisecond and if you add the [b]loop[/u] that will eat alot of cpu mem. will cause lagg! |
TextDrawShowForPlayer(playerid,fuel[playerid]);