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
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
|
#pragma once
#include "util.hpp"
#include "vector.hpp"
enum player_controls_t {
IN_ATTACK = 1 << 0,
IN_JUMP = 1 << 1,
IN_DUCK = 1 << 2,
IN_FORWARD = 1 << 3,
IN_BACK = 1 << 4,
IN_USE = 1 << 5,
IN_CANCEL = 1 << 6,
IN_LEFT = 1 << 7,
IN_RIGHT = 1 << 8,
IN_MOVELEFT = 1 << 9,
IN_MOVERIGHT = 1 << 10,
IN_ATTACK2 = 1 << 11,
IN_RUN = 1 << 12,
IN_RELOAD = 1 << 13,
IN_ALT1 = 1 << 14,
IN_ALT2 = 1 << 15,
IN_SCORE = 1 << 16,
IN_SPEED = 1 << 17,
IN_WALK = 1 << 18,
IN_ZOOM = 1 << 19,
IN_WEAPON1 = 1 << 20,
IN_WEAPON2 = 1 << 21,
IN_BULLRUSH = 1 << 22,
IN_GRENADE1 = 1 << 23,
IN_GRENADE2 = 1 << 24,
IN_ATTACK3 = 1 << 25,
};
class user_cmd_t {
public:
int m_cmd_nr; // 0x0 virtual deconstructor removed
int m_tick_count; // 0x4
vec3_t m_viewangles; // 0x8
float m_forwardmove; // 0x14
float m_sidemove; // 0x18
float m_upmove; // 0x1C
int m_buttons; // 0x20
uint8_t m_impulse; // 0x24
int m_weaponselect; // 0x25
int m_weaponsubtype; // 0x29
int m_random_seed; // 0x2D
short m_mousedx; // 0x31
short m_mousedy; // 0x33
bool m_predicted; // 0x35
private:
uint8_t m_pad_0x36[ 0x6 ]; // 0x36
public:
bool m_world_clicking; // 0x3F
vec3_t m_world_click_direction; // 0x40
__forceinline user_cmd_t clamp( ) {
m_viewangles.clamp( );
m_forwardmove = std::clamp( m_forwardmove, -10000.f, 10000.f );
m_sidemove = std::clamp( m_sidemove, -10000.f, 10000.f );
m_upmove = std::clamp( m_upmove, -10000.f, 10000.f );
return *this;
}
private:
uint8_t m_pad_0x52[ 0xF2 ]; // 0x52 sizeof( user_cmd_t ) = 0x144 HUGE in gmod
};
class CHudChat {
public:
void ChatPrintf( int iPlayerIndex, int iFilter, const char* fmt ) {
using fn = void( __cdecl* )( void*, int, int, const char* );
util::get_vfunc< fn >( this, 26 )( this, iPlayerIndex, iFilter, fmt );
}
};
enum StereoEye_t
{
STEREO_EYE_MONO = 0,
STEREO_EYE_LEFT = 1,
STEREO_EYE_RIGHT = 2,
STEREO_EYE_MAX = 3,
};
class CViewSetup
{
public:
int x;
int m_nUnscaledX;
int y;
int m_nUnscaledY;
int width;
int m_nUnscaledWidth;
int height;
StereoEye_t m_eStereoEye;
int m_nUnscaledHeight;
bool m_bOrtho;
float m_OrthoLeft;
float m_OrthoTop;
float m_OrthoRight;
float m_OrthoBottom;
float fov;
float fovViewmodel;
vec3_t origin;
vec3_t angles;
float zNear;
float zFar;
float zNearViewmodel;
float zFarViewmodel;
bool m_bRenderToSubrectOfLargerScreen;
float m_flAspectRatio;
bool m_bOffCenter;
float m_flOffCenterTop;
float m_flOffCenterBottom;
float m_flOffCenterLeft;
float m_flOffCenterRight;
bool m_bDoBloomAndToneMapping;
bool m_bCacheFullSceneState;
bool m_bViewToProjectionOverride;
};
class IClientMode {
public:
char _pad[ 28 ];
CHudChat* m_pChatElement; //0x2A
};
|