2023-01-19 16:11:48 +01:00
|
|
|
|
//====== Copyright <20> 1996-2005, Valve Corporation, All rights reserved. =======//
|
|
|
|
|
//
|
|
|
|
|
// Purpose:
|
|
|
|
|
//
|
|
|
|
|
// $NoKeywords: $
|
|
|
|
|
//
|
|
|
|
|
//=============================================================================//
|
|
|
|
|
#if !defined( USERCMD_H )
|
|
|
|
|
#define USERCMD_H
|
|
|
|
|
#ifdef _WIN32
|
|
|
|
|
#pragma once
|
|
|
|
|
#endif
|
2023-06-05 01:24:23 +02:00
|
|
|
|
#include "tier1/bitbuf.h"
|
2023-01-19 16:11:48 +01:00
|
|
|
|
#include "mathlib/vector.h"
|
|
|
|
|
|
|
|
|
|
//-------------------------------------------------------------------------------------
|
|
|
|
|
// Forward declarations
|
|
|
|
|
//-------------------------------------------------------------------------------------
|
|
|
|
|
class CUserCmd;
|
|
|
|
|
|
|
|
|
|
inline CMemory p_CUserCmd__Reset;
|
|
|
|
|
inline auto v_CUserCmd__Reset = p_CUserCmd__Reset.RCast<void(*)(CUserCmd* pUserCmd)>();
|
|
|
|
|
|
2023-01-19 20:45:59 +01:00
|
|
|
|
inline CMemory p_CUserCmd__Copy;
|
|
|
|
|
inline auto v_CUserCmd__Copy = p_CUserCmd__Copy.RCast<CUserCmd*(*)(CUserCmd* pDest, CUserCmd* pSource)>();
|
|
|
|
|
|
2023-06-05 01:24:23 +02:00
|
|
|
|
inline CMemory p_ReadUserCmd;
|
|
|
|
|
inline auto v_ReadUserCmd = p_ReadUserCmd.RCast<int (*)(bf_read* buf, CUserCmd* move, CUserCmd* from)>();
|
|
|
|
|
|
2023-01-19 16:11:48 +01:00
|
|
|
|
//-------------------------------------------------------------------------------------
|
|
|
|
|
//
|
|
|
|
|
//-------------------------------------------------------------------------------------
|
|
|
|
|
class CUserCmd
|
|
|
|
|
{
|
|
|
|
|
public:
|
|
|
|
|
CUserCmd() // Cannot be constructed during DLL init.
|
|
|
|
|
{
|
2023-01-31 00:03:40 +01:00
|
|
|
|
Reset();
|
2023-01-19 16:11:48 +01:00
|
|
|
|
}
|
|
|
|
|
|
2023-06-05 01:24:23 +02:00
|
|
|
|
inline CUserCmd* Copy(CUserCmd* pSource) { return v_CUserCmd__Copy(this, pSource); }
|
|
|
|
|
inline void Reset() { v_CUserCmd__Reset(this); }
|
2023-01-31 00:03:40 +01:00
|
|
|
|
|
2023-01-19 16:11:48 +01:00
|
|
|
|
int32_t command_number;
|
|
|
|
|
int32_t tick_count;
|
|
|
|
|
float curtime;
|
|
|
|
|
QAngle viewangles;
|
2023-06-05 01:24:23 +02:00
|
|
|
|
float maybe;
|
|
|
|
|
char pad_0x0018[8];
|
2023-01-19 16:11:48 +01:00
|
|
|
|
float forwardmove;
|
|
|
|
|
float sidemove;
|
|
|
|
|
float upmove;
|
|
|
|
|
int32_t buttons;
|
|
|
|
|
char pad_0x0034[336];
|
|
|
|
|
int32_t randomseed;
|
|
|
|
|
char pad_0x0188[8];
|
|
|
|
|
Vector3D headposition;
|
|
|
|
|
float maxpitch;
|
2023-06-05 01:24:23 +02:00
|
|
|
|
char pad_0x01A0[56];
|
|
|
|
|
float frametime;
|
2023-01-19 16:11:48 +01:00
|
|
|
|
};
|
|
|
|
|
|
2023-06-05 01:24:23 +02:00
|
|
|
|
static_assert(sizeof(CUserCmd) == 0x1DC);
|
2023-01-19 16:11:48 +01:00
|
|
|
|
|
|
|
|
|
///////////////////////////////////////////////////////////////////////////////
|
|
|
|
|
class VUserCmd : public IDetour
|
|
|
|
|
{
|
|
|
|
|
virtual void GetAdr(void) const
|
|
|
|
|
{
|
2023-01-25 02:26:52 +01:00
|
|
|
|
LogFunAdr("CUserCmd::Reset", p_CUserCmd__Reset.GetPtr());
|
|
|
|
|
LogFunAdr("CUserCmd::Copy", p_CUserCmd__Copy.GetPtr());
|
2023-06-05 01:24:23 +02:00
|
|
|
|
LogFunAdr("ReadUserCmd", p_ReadUserCmd.GetPtr());
|
2023-01-19 16:11:48 +01:00
|
|
|
|
}
|
|
|
|
|
virtual void GetFun(void) const
|
|
|
|
|
{
|
2023-01-31 00:03:40 +01:00
|
|
|
|
p_CUserCmd__Reset = g_GameDll.FindPatternSIMD("E8 ?? ?? ?? ?? 48 8B DF 66 83 FE FF").FollowNearCallSelf();
|
2023-01-19 16:11:48 +01:00
|
|
|
|
v_CUserCmd__Reset = p_CUserCmd__Reset.RCast<void(*)(CUserCmd*)>();
|
2023-01-19 20:45:59 +01:00
|
|
|
|
|
|
|
|
|
p_CUserCmd__Copy = g_GameDll.FindPatternSIMD("E8 ?? ?? ?? ?? 4C 8B 9B ?? ?? ?? ??").FollowNearCallSelf();
|
|
|
|
|
v_CUserCmd__Copy = p_CUserCmd__Copy.RCast<CUserCmd* (*)(CUserCmd*, CUserCmd*)>();
|
2023-06-05 01:24:23 +02:00
|
|
|
|
|
|
|
|
|
p_ReadUserCmd = g_GameDll.FindPatternSIMD("E8 ?? ?? ?? ?? 4C 8B C6 48 81 C6 ?? ?? ?? ??").FollowNearCallSelf();
|
|
|
|
|
v_ReadUserCmd = p_ReadUserCmd.RCast<int (*)(bf_read*, CUserCmd*, CUserCmd*)>();
|
2023-01-19 16:11:48 +01:00
|
|
|
|
}
|
|
|
|
|
virtual void GetVar(void) const { }
|
|
|
|
|
virtual void GetCon(void) const { }
|
2023-06-05 01:24:23 +02:00
|
|
|
|
virtual void Attach(void) const;
|
|
|
|
|
virtual void Detach(void) const;
|
2023-01-19 16:11:48 +01:00
|
|
|
|
};
|
|
|
|
|
///////////////////////////////////////////////////////////////////////////////
|
|
|
|
|
|
|
|
|
|
#endif // USERCMD_H
|