new bool:g_bSpeed[33], Float:g_fRecord[33], bool:g_bConnected[33], g_iHudSync, g_iMaxPlayers;
register_plugin(PLUGIN, VERSION, AUTHOR);
register_clcmd("say /speed", "Command_Speed");
set_task(0.1, "Task_Speedometer", TASK_SPEEDOMETER, .flags = "b");
g_iHudSync = CreateHudSyncObj();
g_iMaxPlayers = get_maxplayers();
public client_putinserver(id)
public client_disconnect(id)
g_bConnected[id] = false;
g_bSpeed[id] = !g_bSpeed[id];
public Task_Speedometer()
new id, target, Float:fVelocity[3], Float:fSpeed, iPercent, iColor[3];
for(id = 1; id <= g_iMaxPlayers; id++)
if(!g_bConnected[id] || !g_bSpeed[id]) continue;
target = pev(id, pev_iuser1) == 4 ? pev(id, pev_iuser2) : id;
pev(target, pev_velocity, fVelocity);
fSpeed = vector_length(fVelocity);
if(fSpeed > g_fRecord[target]) g_fRecord[target] = fSpeed;
if(g_fRecord[target] > 0.0) iPercent = floatround(fSpeed * 100.0 / g_fRecord[target]);
set_hudmessage(iColor[0], iColor[1], iColor[2], -1.0, 0.75, 0, _, 0.1, _, _, 2);
ShowSyncHudMsg(id, g_iHudSync, "Speed: %3.2f[%d%%]^nRecord: %3.2f",
fSpeed, iPercent, g_fRecord[target]);