Код
#include <amxmodx>
#include <fakemeta>
#define PLUGIN "Speedometer"
#define VERSION "1.3"
#define AUTHOR "AciD & Fintok!"
#define FREQ 0.1
new cvar_showspeed, cvar_color, r, g, b
new bool:g_bPlrSpeed[33]
new Float:g_fBest[33]
new Float:g_fTime[33]
new g_ShowSpeed
new g_SyncHud
public plugin_init()
{
register_plugin(PLUGIN, VERSION, AUTHOR)
register_cvar(PLUGIN, VERSION, FCVAR_SERVER|FCVAR_EXTDLL|FCVAR_SPONLY)
register_forward(FM_UpdateClientData, "fwd_UpdateClientData_Post", 1)
register_clcmd("say /speed", "toogleSpeed")
cvar_showspeed = register_cvar("showspeed", "1")
cvar_color = register_cvar("speed_colors", "85 255 0")
g_SyncHud = CreateHudSyncObj()
}
public plugin_cfg()
{
g_ShowSpeed = get_pcvar_num(cvar_showspeed)
new colors[16], red[4], green[4], blue[4]
get_pcvar_string(cvar_color, colors, charsmax(colors))
parse(colors, red, 85, green, 255, blue, 0)
r = str_to_num(red)
g = str_to_num(green)
b = str_to_num(blue)
}
public client_putinserver(id)
g_bPlrSpeed[id] = g_ShowSpeed ? true : false
public toogleSpeed(id)
g_bPlrSpeed[id] = g_bPlrSpeed[id] ? false : true
public fwd_UpdateClientData_Post(id)
{
if(!is_user_connected(id) || !g_bPlrSpeed[id])
return
static Float:gametime
gametime = get_gametime()
if((gametime - g_fTime[id]) < FREQ)
return
static target
target = pev(id, pev_iuser1) == 4 ? pev(id, pev_iuser2) : id
if(!is_user_connected(target))
return
static Float:velocity[3]
pev(target, pev_velocity, velocity)
static Float:speed
speed = floatsqroot(floatpower(velocity[0], 2.0) + floatpower(velocity[1], 2.0))
if(speed > g_fBest[target])
g_fBest[target] = speed
set_hudmessage(r, g, b, -1.0, 0.7, 0, 0.0, FREQ, FREQ + 0.01, 0.0)
ShowSyncHudMsg(id, g_SyncHud, "%3.2f скорость^n%3.2f рекорд^n", speed, g_fBest[target])
g_fTime[id] = gametime
}