From 64453b06615f76f397879a1dc92a57ace19db70e Mon Sep 17 00:00:00 2001 From: Kawe Mazidjatari <48657826+Mauler125@users.noreply.github.com> Date: Sun, 2 Jul 2023 21:31:19 +0200 Subject: [PATCH] Add CUserCmd constructor to SDK Internal constructor from the engine. --- r5dev/game/shared/usercmd.h | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/r5dev/game/shared/usercmd.h b/r5dev/game/shared/usercmd.h index 37332741..2665eecc 100644 --- a/r5dev/game/shared/usercmd.h +++ b/r5dev/game/shared/usercmd.h @@ -18,6 +18,9 @@ //------------------------------------------------------------------------------------- class CUserCmd; +inline CMemory p_CUserCmd__CUserCmd; +inline auto v_CUserCmd__CUserCmd = p_CUserCmd__CUserCmd.RCast(); + inline CMemory p_CUserCmd__Reset; inline auto v_CUserCmd__Reset = p_CUserCmd__Reset.RCast(); @@ -35,7 +38,7 @@ class CUserCmd public: CUserCmd() // Cannot be constructed during DLL init. { - Reset(); + v_CUserCmd__CUserCmd(this); } inline CUserCmd* Copy(CUserCmd* pSource) { return v_CUserCmd__Copy(this, pSource); } @@ -89,17 +92,23 @@ public: static_assert(sizeof(CUserCmd) == 0x1DC); +int ReadUserCmd(bf_read* buf, CUserCmd* move, CUserCmd* from); + /////////////////////////////////////////////////////////////////////////////// class VUserCmd : public IDetour { virtual void GetAdr(void) const { + LogFunAdr("CUserCmd::CUserCmd", p_CUserCmd__CUserCmd.GetPtr()); LogFunAdr("CUserCmd::Reset", p_CUserCmd__Reset.GetPtr()); LogFunAdr("CUserCmd::Copy", p_CUserCmd__Copy.GetPtr()); LogFunAdr("ReadUserCmd", p_ReadUserCmd.GetPtr()); } virtual void GetFun(void) const { + p_CUserCmd__CUserCmd = g_GameDll.FindPatternSIMD("E8 ?? ?? ?? ?? 48 81 C3 ?? ?? ?? ?? 48 83 EF 01 75 EB 33 C0").FollowNearCallSelf(); + v_CUserCmd__CUserCmd = p_CUserCmd__CUserCmd.RCast(); + p_CUserCmd__Reset = g_GameDll.FindPatternSIMD("E8 ?? ?? ?? ?? 48 8B DF 66 83 FE FF").FollowNearCallSelf(); v_CUserCmd__Reset = p_CUserCmd__Reset.RCast();