pawn Code:
#include <a_samp>
forward timer_update();
forward timer_refuel(playerid);
new isrefuelling[MAX_PLAYERS] = 0;
new fuel[MAX_VEHICLES];
new Text:td_vFuel[MAX_PLAYERS];
new Text:td_vSpeed[MAX_PLAYERS];
new Text:Textdraw0;
new Text:Textdraw1;
new Text:Textdraw2;
new Text:Textdraw3;
public OnFilterScriptInit()
{
// VEHICLE
for(new i=0;i<MAX_VEHICLES;i++) {
fuel[i] = 250 + random(150); //setting fuel for vehicles
td_vSpeed[i] = TextDrawCreate(516.000000, 375.000000, "KM/H:");
TextDrawBackgroundColor(td_vSpeed[i], 255);
TextDrawFont(td_vSpeed[i], 3);
TextDrawLetterSize(td_vSpeed[i], 0.500000, 1.000000);
TextDrawColor(td_vSpeed[i], -1);
TextDrawSetOutline(td_vSpeed[i], 1);
TextDrawSetProportional(td_vSpeed[i], 1);
td_vFuel[i] = TextDrawCreate(516.000000, 385.000000, "Fuel:");
TextDrawBackgroundColor(td_vFuel[i], 255);
TextDrawFont(td_vFuel[i], 3);
TextDrawLetterSize(td_vFuel[i], 0.500000, 1.000000);
TextDrawColor(td_vFuel[i], -1);
TextDrawSetOutline(td_vFuel[i], 1);
TextDrawSetProportional(td_vFuel[i], 1);
}
for(new i; i < MAX_PLAYERS; i ++)
{
if(IsPlayerConnected(i))
{
TextDrawShowForPlayer(i, Textdraw0);
TextDrawShowForPlayer(i, Textdraw1);
TextDrawShowForPlayer(i, Textdraw2);
TextDrawShowForPlayer(i, Textdraw3);
TextDrawShowForPlayer(i, td_vSpeed[i]);
TextDrawShowForPlayer(i, td_vFuel[i]);
}
}
return 1;
}
public OnFilterScriptExit()
{
for(new i; i < MAX_PLAYERS; i ++)
{
if(IsPlayerConnected(i))
{
TextDrawHideForAll(td_vSpeed[i]);
TextDrawDestroy(td_vSpeed[i]);
TextDrawHideForAll(td_vFuel[i]);
TextDrawDestroy(td_vFuel[i]);
}
}
return 1;
}
public OnPlayerConnect(playerid)
{
TextDrawShowForPlayer(playerid, td_vSpeed[playerid]);
TextDrawShowForPlayer(playerid, td_vFuel[playerid]);
return 1;
}
public OnPlayerDisconnect(playerid)
{
for(new i=0;i<MAX_PLAYERS;i++) {
TextDrawDestroy(td_vFuel[i]);
TextDrawDestroy(td_vSpeed[i]);
}
return 1;
}
public OnPlayerStateChange(playerid, newstate, oldstate)
{
if (newstate == PLAYER_STATE_DRIVER || newstate == PLAYER_STATE_PASSENGER)
{
TextDrawSetString(td_vFuel[playerid],"Fuel:");
TextDrawShowForPlayer(playerid,td_vFuel[playerid]);
TextDrawShowForPlayer(playerid,td_vSpeed[playerid]);
} else {
TextDrawHideForPlayer(playerid,td_vFuel[playerid]);
TextDrawHideForPlayer(playerid,td_vSpeed[playerid]);
}
return 1;
}
public OnPlayerCommandText(playerid,cmdtext[]) {
if (!strcmp("/refuel",cmdtext,true,7)) {
if (!IsPlayerInAnyVehicle(playerid)) return SendClientMessage(playerid,0xFFC800FF,"You are not in an vehicle!"); //if a player isnt in a vehicle, it stops here
if (isrefuelling[playerid]) return SendClientMessage(playerid,0xFFC800FF,"You are already refuelling!"); //if a player is already refuelling, it stops here
if (GetPlayerMoney(playerid) - 80 <0) return SendClientMessage(playerid,0xFFC800FF,"You dont have enough money!"); //if a player doesnt have $80 anymore, it stops here
GivePlayerMoney(playerid,-80); //Sets the player's cash -$80
SetCameraBehindPlayer(playerid); //Sets the camera behind the player (looks better because the player will be frozen for a few secs)
TogglePlayerControllable(playerid,0); //freezes the player so he cant drive and refuel at the same time
isrefuelling[playerid] = 1; //setting isrefuelling to 1 so the player cant spam /refuel
TextDrawSetString(td_vFuel[playerid],"Refuelling..."); //changing textdraw to /refuel
SetTimerEx("timer_refuel",4500,false,"i",playerid); //setting refueltimer
return 1;
}
return 0;
}
public timer_update()
{
for(new i=0;i<MAX_PLAYERS;i++) {
if (isrefuelling[i]) continue;
new vid = GetPlayerVehicleID(i);
if (GetPlayerVehicleSeat(i) == 0) {
fuel[vid] = fuel[vid] - 2;
if (fuel[vid]<1)
{
fuel[vid] = 0;
RemovePlayerFromVehicle(i);
GameTextForPlayer(i,"~r~You are out of ~w~fuel~r~!",5000,4);
}
}
new string[128];format(string,sizeof string,"Fuel: %i",fuel[vid] /4);
TextDrawSetString(td_vFuel[i],string);
new Float:speed_x,Float:speed_y,Float:speed_z,Float:temp_speed,final_speed;
GetVehicleVelocity(vid,speed_x,speed_y,speed_z);
temp_speed = floatsqroot(((speed_x*speed_x)+(speed_y*speed_y))+(speed_z*speed_z))*136.666667;
final_speed = floatround(temp_speed,floatround_round);
format(string,sizeof string,"Speed: %i",final_speed);
TextDrawSetString(td_vSpeed[i],string);
}
return 1;
}
public timer_refuel(playerid)
{
new vid = GetPlayerVehicleID(playerid);
fuel[vid] = fuel[vid] = 400;
isrefuelling[playerid] = 0;
TextDrawSetString(td_vFuel[playerid],"Fuel: 100");
TogglePlayerControllable(playerid,1);
}