Tenta esse ai que eu baixei a um tempo atrбs e editei ele й simples, porem nгo tem creditos :S
pawn Код:
#include <a_samp>
#pragma tabsize 0
new showspeedo[MAX_PLAYERS];
enum SavePlayerPosEnum
{
Float:LastX,
Float:LastY,
Float:LastZ
}
new SavePlayerPos[100][SavePlayerPosEnum];
forward Speedo();
forward StatUp();
new thespeed[100];
new sPVehicle[100];
new sIsInitalize;
new sOldState[100];
new sCalcTimer;
new sGSPSTimer;
new Float:sOldPos[MAX_VEHICLES][3];
new Text:sSpeedoText[100];
public OnFilterScriptInit()
{
SInitialize();
return 1;
}
public OnFilterScriptExit()
{
SClear();
return 1;
}
public OnPlayerConnect(playerid)
{
sOldState[playerid] = GetPlayerState(playerid);
showspeedo[playerid] = 1;
return 1;
}
public OnPlayerDisconnect(playerid, reason)
{
showspeedo[playerid] = 1;
if(sOldState[playerid] == PLAYER_STATE_DRIVER)
{
new vehicleid;
vehicleid = GetPlayerVehicleID(playerid);
if(vehicleid)
{
TextDrawHideForPlayer(playerid, sSpeedoText[playerid]);
}
}
return 1;
}
public OnPlayerCommandText(playerid, cmdtext[])
{
new idx;
new cmd[256];
cmd = strtok(cmdtext, idx);
if(!strcmp (cmdtext ,"/VOff" , true )) {
if(showspeedo[playerid] == 1)
{
if(GetPlayerState(playerid) == PLAYER_STATE_DRIVER)
{
TextDrawHideForPlayer(playerid, sSpeedoText[playerid]);
showspeedo[playerid] = 0;
}else
SendClientMessage(playerid, 0x4169FFAA, "[VELOCIMETRO] OFF.");
}
return 1;
}
if(strcmp(cmd, "/VON", true) == 0)
{
if(showspeedo[playerid] == 0)
{
if(GetPlayerState(playerid) == PLAYER_STATE_DRIVER)
{
TextDrawShowForPlayer(playerid, sSpeedoText[playerid]);
showspeedo[playerid] = 1;
}else
SendClientMessage(playerid, 0x4169FFAA, "[VELOCIMETRO] ON.");
}
return 1;
}
return 0;
}
SInitialize()
{
if(!sIsInitalize)
{
for(new i = 0; i <= 100; i++)
{
if(IsPlayerConnected(i))
{
if(GetPlayerState(i) == PLAYER_STATE_DRIVER)
{
new vehicleid = GetPlayerVehicleID(i);
SCreateGauge(i, vehicleid);
TextDrawShowForPlayer(i, sSpeedoText[i]);
}
}
}
sCalcTimer = SetTimer("Speedo", 500, 1);
sGSPSTimer = SetTimer("StatUp", 500, 1);
sIsInitalize = 1;
}
}
SClear()
{
if(sIsInitalize)
{
for(new i = 0; i <= 100; i++)
{
if(IsPlayerConnected(i))
{
if(GetPlayerState(i) == PLAYER_STATE_DRIVER)
{
new vehicleid;
vehicleid = GetPlayerVehicleID(i);
if(vehicleid)
{
TextDrawHideForPlayer(i, sSpeedoText[i]);
TextDrawDestroy(sSpeedoText[i]);
}
}
}
}
KillTimer(sCalcTimer);
KillTimer(sGSPSTimer);
sIsInitalize = 0;
}
}
public Speedo()
{
for(new i = 0; i <= 100; i++)
{
if(IsPlayerConnected(i))
{
if(sOldState[i] == PLAYER_STATE_DRIVER)
{
SCalculate(i, GetPlayerVehicleID(i));
}
}
}
}
public StatUp()
{
for(new i = 0; i <= 100; i++)
{
if(IsPlayerConnected(i))
{
if(sOldState[i] != GetPlayerState(i))
{
if(sOldState[i] == PLAYER_STATE_DRIVER)
{
if(sPVehicle[i])
{
TextDrawHideForPlayer(i, sSpeedoText[i]);
}
}
if(GetPlayerState(i) == PLAYER_STATE_DRIVER)
{
sPVehicle[i] = GetPlayerVehicleID(i);
SCreateGauge(i, sPVehicle[i]);
if(showspeedo[i] == 1)
{
TextDrawShowForPlayer(i, sSpeedoText[i]);
}
}
sOldState[i] = GetPlayerState(i);
}
}
}
}
SCreateGauge(playerid, vehicleid)
{
sSpeedoText[playerid] = TextDrawCreate(28.000000,318.000000, "...");
TextDrawLetterSize(sSpeedoText[playerid],0.699999,2.000000);
TextDrawTextSize(sSpeedoText[playerid], 640.0, 50.0);
TextDrawFont(sSpeedoText[playerid], 3);
TextDrawSetShadow(sSpeedoText[playerid],1);
TextDrawSetOutline(sSpeedoText[playerid],1);
TextDrawBackgroundColor(sSpeedoText[playerid],0x000000FF);
TextDrawColor(sSpeedoText[playerid],0xFFFFFFFF);
TextDrawLetterSize(sSpeedoText[playerid],0.599999,2.000000);
TextDrawAlignment(sSpeedoText[playerid],0);
TextDrawUseBox(sSpeedoText[playerid], 0);
SUpdateGauge(playerid);
TextDrawSetProportional(sSpeedoText[playerid], 1);
GetVehiclePos(vehicleid, sOldPos[vehicleid][0], sOldPos[vehicleid][1], sOldPos[vehicleid][2]);
}
SUpdateGauge(playerid)
{
new text[256];
new Float:distance,value;
new Float:x,Float:y,Float:z;
GetPlayerPos(playerid, x, y, z);
distance = floatsqroot(
floatpower(floatabs(
floatsub(x,SavePlayerPos[playerid][LastX])),2)+floatpower(
floatabs(
floatsub(y,SavePlayerPos[playerid][LastY])),2)+floatpower(
floatabs(
floatsub(z,SavePlayerPos[playerid][LastZ])),2));
value = floatround(distance * 5000);
SavePlayerPos[playerid][LastX] = x;
SavePlayerPos[playerid][LastY] = y;
SavePlayerPos[playerid][LastZ] = z;
format(text, 256, " ~b~%s%3d:~w~Km/h", text, floatround(value/1200)); //~g~%s%03d Km/h
thespeed[playerid] = floatround(value/1200);
TextDrawSetString(sSpeedoText[playerid], text);
}
SCalculate(playerid, vehicleid)
{
new Float:x, Float:y, Float:z;
GetVehiclePos(vehicleid, x, y, z);
SUpdateGauge(playerid);
sOldPos[vehicleid][0] = x;
sOldPos[vehicleid][1] = y;
sOldPos[vehicleid][2] = z;
}
strtok(const string[], &index)
{
new length = strlen(string);
while ((index < length) && (string[index] <= ' '))
{
index++;
}
new offset = index;
new result[20];
while ((index < length) && (string[index] > ' ') && ((index - offset) < (sizeof(result) - 1)))
{
result[index - offset] = string[index];
index++;
}
result[index - offset] = EOS;
return result;
}