-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathtest_speedometer.sma
79 lines (61 loc) · 1.83 KB
/
test_speedometer.sma
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
// Note: This is a modified version of Speedometer by AcidoX
// https://forums.alliedmods.net/showthread.php?p=702520
//
// Changes:
// - Speed updates as quickly as possible
// - Much, much less optimized because of the above change
// - Stopped the speedometer text from flickering
//
// This is only intended to be used for testing purposes and should probably not
// be used on a real server
#include <amxmodx>
#include <fakemeta>
#define PLUGIN "Test Speedometer"
#define VERSION "0.1"
#define AUTHOR ""
new bool:plrSpeed[33]
new SyncHud,showspeed,color, maxplayers, r, g, b
public plugin_init() {
register_plugin(PLUGIN, VERSION, AUTHOR)
register_clcmd("say /speed", "toggleSpeedometer")
showspeed = register_cvar("showspeed", "1")
color = register_cvar("speed_colors", "255 255 255")
SyncHud = CreateHudSyncObj()
maxplayers = get_maxplayers()
new colors[16], red[4], green[4], blue[4]
get_pcvar_string(color, colors, sizeof colors - 1)
parse(colors, red, 3, green, 3, blue, 3)
r = str_to_num(red)
g = str_to_num(green)
b = str_to_num(blue)
}
public server_frame()
{
update_speeds()
}
public client_putinserver(id)
{
plrSpeed[id] = showspeed > 0 ? true : false
}
public toggleSpeedometer(id)
{
plrSpeed[id] = plrSpeed[id] ? false : true
return PLUGIN_HANDLED
}
public update_speeds()
{
static i, target
static Float:velocity[3]
static Float:speed, Float:speedh
for(i=1; i<=maxplayers; i++)
{
if(!is_user_connected(i)) continue
if(!plrSpeed[i]) continue
target = pev(i, pev_iuser1) == 4 ? pev(i, pev_iuser2) : i
pev(target, pev_velocity, velocity)
speed = vector_length(velocity)
speedh = floatsqroot(floatpower(velocity[0], 2.0) + floatpower(velocity[1], 2.0))
set_hudmessage(r, g, b, -1.0, 0.7, 0, 0.0, 1.0, 0.01, 0.0)
ShowSyncHudMsg(i, SyncHud, "%3.2f units/second^n%3.2f velocity", speed, speedh)
}
}