summaryrefslogtreecommitdiff
path: root/cheat/gmod/IClientMode.hpp
diff options
context:
space:
mode:
Diffstat (limited to 'cheat/gmod/IClientMode.hpp')
-rw-r--r--cheat/gmod/IClientMode.hpp139
1 files changed, 139 insertions, 0 deletions
diff --git a/cheat/gmod/IClientMode.hpp b/cheat/gmod/IClientMode.hpp
new file mode 100644
index 0000000..4996af6
--- /dev/null
+++ b/cheat/gmod/IClientMode.hpp
@@ -0,0 +1,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
+}; \ No newline at end of file