(() =>
49 | {
50 | for (var i = 1; i <= Server.MaxPlayers; ++i)
51 | {
52 | var player = new CCSPlayerController(NativeAPI.GetEntityFromIndex(i));
53 |
54 | if (player is { IsValid: true, IsBot: false, PawnIsAlive: true })
55 | {
56 | var buttons = player.Buttons;
57 | var client = player.Index;
58 | if (client == IntPtr.Zero) return;
59 | if (!_usersSettings[client]!.IsShowSpeed) return;
60 |
61 | if (player.PlayerPawn.Value == null) continue;
62 |
63 | player.PrintToCenterHtml(
64 | $"Speed: {Math.Round(player.PlayerPawn.Value.AbsVelocity.Length2D())}
" +
65 | $"Jumps: {_usersSettings[client]!.CountJumps}
" +
66 | $"{((buttons & PlayerButtons.Left) != 0 ? "←" : "_")} " +
67 | $"{((buttons & PlayerButtons.Forward) != 0 ? "W" : "_")} " +
68 | $"{((buttons & PlayerButtons.Right) != 0 ? "→" : "_")}
" +
69 | $"{((buttons & PlayerButtons.Moveleft) != 0 ? "A" : "_")} " +
70 | $"{((buttons & PlayerButtons.Back) != 0 ? "S" : "_")} " +
71 | $"{((buttons & PlayerButtons.Moveright) != 0 ? "D" : "_")} ");
72 | }
73 | }
74 | });
75 | RegisterEventHandler(((@event, info) =>
76 | {
77 | if (@event.Userid.Handle == IntPtr.Zero || @event.Userid.UserId == null) return HookResult.Continue;
78 |
79 | var controller = @event.Userid;
80 | var client = controller.Index;
81 | if (client == IntPtr.Zero) return HookResult.Continue;
82 | _usersSettings[client]!.CountJumps = 0;
83 |
84 | return HookResult.Continue;
85 | }));
86 | AddCommand("css_speed", "", ((player, info) =>
87 | {
88 | if (player == null) return;
89 | var client = player.Index;
90 | _usersSettings[client]!.IsShowSpeed = !_usersSettings[client]!.IsShowSpeed;
91 | player.PrintToChat(_usersSettings[client]!.IsShowSpeed ? "Speedometer: \x06On" : "Speedometer: \x02Off");
92 | }));
93 | }
94 |
95 | private HookResult EventBombPlanted(EventBombPlanted @event, GameEventInfo info)
96 | {
97 | throw new NotImplementedException();
98 | }
99 | }
100 |
101 | public class UsersSettings
102 | {
103 | public int CountJumps { get; set; }
104 | public bool IsShowSpeed { get; set; }
105 | }
--------------------------------------------------------------------------------