From d930cb66e02cf771123a8e412d6a94f456fc00ec Mon Sep 17 00:00:00 2001 From: PixieCore <41352111+PixieCore@users.noreply.github.com> Date: Sun, 27 Mar 2022 23:50:35 +0200 Subject: [PATCH] Migrated CClient to CBaseClient. --- r5dev/client/cdll_engine_int.cpp | 1 - r5dev/client/client.cpp | 6 ----- r5dev/client/client.h | 39 ----------------------------- r5dev/core/init.cpp | 1 - r5dev/ebisusdk/EbisuSDK.cpp | 1 - r5dev/engine/baseclient.cpp | 3 +++ r5dev/engine/baseclient.h | 22 ++++++++++++++-- r5dev/engine/net_chan.h | 3 ++- r5dev/server/server.cpp | 2 +- r5dev/tier0/cmd.cpp | 1 - r5dev/vproj/gamesdk.vcxproj | 2 -- r5dev/vproj/gamesdk.vcxproj.filters | 6 ----- 12 files changed, 26 insertions(+), 61 deletions(-) delete mode 100644 r5dev/client/client.cpp delete mode 100644 r5dev/client/client.h diff --git a/r5dev/client/cdll_engine_int.cpp b/r5dev/client/cdll_engine_int.cpp index cf025ad0..4ddfc9f6 100644 --- a/r5dev/client/cdll_engine_int.cpp +++ b/r5dev/client/cdll_engine_int.cpp @@ -4,7 +4,6 @@ #include "tier0/cvar.h" #include "tier0/commandline.h" #include "client/IVEngineClient.h" -#include "client/client.h" #include "client/cdll_engine_int.h" #include "engine/net_chan.h" #include "engine/cl_rcon.h" diff --git a/r5dev/client/client.cpp b/r5dev/client/client.cpp deleted file mode 100644 index 4bf5817a..00000000 --- a/r5dev/client/client.cpp +++ /dev/null @@ -1,6 +0,0 @@ -#include "core/stdafx.h" -#include "client/client.h" -#include "engine/baseclient.h" - -/////////////////////////////////////////////////////////////////////////////// -CBaseClient* g_pClient = reinterpret_cast(g_pClientBuffer.GetPtr()); diff --git a/r5dev/client/client.h b/r5dev/client/client.h deleted file mode 100644 index 87fbb99f..00000000 --- a/r5dev/client/client.h +++ /dev/null @@ -1,39 +0,0 @@ -#pragma once -#include "server/IVEngineServer.h" - -// PLEASE REMOVE AND FULLY MIGRATE TO CBASECLIENT! - -//----------------------------------------------------------------------------- -// Forward declarations -//----------------------------------------------------------------------------- -class CBaseClient; - -/////////////////////////////////////////////////////////////////////////////// -extern CBaseClient* g_pClient; - -namespace -{ -#if defined (GAMEDLL_S0) || defined (GAMEDLL_S1) - const uintptr_t g_dwCClientSize = 0x4A440; - const uintptr_t g_dwPersistenceVar = 0x5B4; - const uintptr_t g_dwCClientPadding = 0x49E88; -#elif defined (GAMEDLL_S2) || defined (GAMEDLL_S3) - const uintptr_t g_dwCClientSize = 0x4A4C0; - const uintptr_t g_dwPersistenceVar = 0x5BC; - const uintptr_t g_dwCClientPadding = 0x49F00; -#endif - static ADDRESS g_pClientBuffer = p_IVEngineServer__PersistenceAvailable.FindPatternSelf("48 8D 0D", ADDRESS::Direction::DOWN, 150).ResolveRelativeAddressSelf(0x3, 0x7); -} - -/////////////////////////////////////////////////////////////////////////////// -class HClient : public IDetour -{ - virtual void debugp() - { - std::cout << "| VAR: g_pClient : 0x" << std::hex << std::uppercase << g_pClient << std::setw(0) << " |" << std::endl; - std::cout << "+----------------------------------------------------------------+" << std::endl; - } -}; -/////////////////////////////////////////////////////////////////////////////// - -REGISTER(HClient); diff --git a/r5dev/core/init.cpp b/r5dev/core/init.cpp index 1b9bff77..7ce2fb8a 100644 --- a/r5dev/core/init.cpp +++ b/r5dev/core/init.cpp @@ -34,7 +34,6 @@ #include "vguimatsurface/MatSystemSurface.h" #include "client/cdll_engine_int.h" #endif // !DEDICATED -#include "client/client.h" #include "client/IVEngineClient.h" #ifndef CLIENT_DLL #include "server/server.h" diff --git a/r5dev/ebisusdk/EbisuSDK.cpp b/r5dev/ebisusdk/EbisuSDK.cpp index b361d25b..dc1e7b85 100644 --- a/r5dev/ebisusdk/EbisuSDK.cpp +++ b/r5dev/ebisusdk/EbisuSDK.cpp @@ -1,6 +1,5 @@ #include "core/stdafx.h" #include "ebisusdk/EbisuSDK.h" -#include "client/client.h" #include "engine/sys_utils.h" //----------------------------------------------------------------------------- diff --git a/r5dev/engine/baseclient.cpp b/r5dev/engine/baseclient.cpp index 12373c10..9850b808 100644 --- a/r5dev/engine/baseclient.cpp +++ b/r5dev/engine/baseclient.cpp @@ -206,3 +206,6 @@ void CBaseClient_Detach() DetourDetach((LPVOID*)&CBaseClient_Clear, &CBaseClient::Clear); DetourDetach((LPVOID*)&CBaseClient_Connect, &CBaseClient::Connect); } + +/////////////////////////////////////////////////////////////////////////////// +CBaseClient* g_pClient = reinterpret_cast(g_pClientBuffer.GetPtr()); \ No newline at end of file diff --git a/r5dev/engine/baseclient.h b/r5dev/engine/baseclient.h index 51302963..0a89a0d8 100644 --- a/r5dev/engine/baseclient.h +++ b/r5dev/engine/baseclient.h @@ -1,8 +1,15 @@ #pragma once -#include "client/client.h" #include "common/protocol.h" +#include "server/IVEngineServer.h" +//----------------------------------------------------------------------------- +// Forward declarations +//----------------------------------------------------------------------------- class CBaseServer; +class CBaseClient; + +/////////////////////////////////////////////////////////////////////////////// +extern CBaseClient* g_pClient; class CBaseClient { @@ -33,7 +40,7 @@ private: char pad_0000[16]; //0x0000 std::int32_t m_nUserID; //0x0010 char pad_0014[844]; //0x0014 - void* m_ConVars; //0x0360 + void* m_ConVars; //0x0360 This is a KeyValue*! char pad_0368[8]; //0x0368 CBaseServer* m_Server; //0x0370 char pad_0378[40]; //0x0378 @@ -63,6 +70,16 @@ namespace ADDRESS p_CBaseClient_Clear = g_mGameDll.FindPatternSIMD((std::uint8_t*)"\x40\x53\x41\x56\x41\x57\x48\x83\xEC\x20\x48\x8B\xD9\x48\x89\x74", "xxxxxxxxxxxxxxxx"); void* (*CBaseClient_Clear)(CBaseClient* pClient) = (void* (*)(CBaseClient*))p_CBaseClient_Clear.GetPtr(); /*40 53 41 56 41 57 48 83 EC 20 48 8B D9 48 89 74*/ + + static ADDRESS g_pClientBuffer = p_IVEngineServer__PersistenceAvailable.FindPatternSelf("48 8D 0D", ADDRESS::Direction::DOWN, 150).ResolveRelativeAddressSelf(0x3, 0x7); + + + // Notes for earlier seasons. +#if defined (GAMEDLL_S0) || defined (GAMEDLL_S1) + const std::uintptr_t g_dwCClientSize = 0x4A440; + const std::uintptr_t g_dwPersistenceVar = 0x5B4; + const std::uintptr_t g_dwCClientPadding = 0x49E88; +#endif } /////////////////////////////////////////////////////////////////////////////// @@ -74,6 +91,7 @@ class HBaseClient : public IDetour { virtual void debugp() { + std::cout << "| VAR: g_pClient : 0x" << std::hex << std::uppercase << g_pClient << std::setw(0) << " |" << std::endl; std::cout << "| FUN: CBaseClient::Connect : 0x" << std::hex << std::uppercase << p_CBaseClient_Connect.GetPtr() << std::setw(npad) << " |" << std::endl; std::cout << "| FUN: CBaseClient::Clear : 0x" << std::hex << std::uppercase << p_CBaseClient_Clear.GetPtr() << std::setw(npad) << " |" << std::endl; std::cout << "+----------------------------------------------------------------+" << std::endl; diff --git a/r5dev/engine/net_chan.h b/r5dev/engine/net_chan.h index c02c3aa1..e944e643 100644 --- a/r5dev/engine/net_chan.h +++ b/r5dev/engine/net_chan.h @@ -1,8 +1,9 @@ #pragma once #include "common/protocol.h" -#include "client/client.h" #include "tier1/NetAdr2.h" +class CBaseClient; + namespace { /* ==== CNETCHAN ======================================================================================================================================================== */ diff --git a/r5dev/server/server.cpp b/r5dev/server/server.cpp index 3900481a..ac27b1d1 100644 --- a/r5dev/server/server.cpp +++ b/r5dev/server/server.cpp @@ -2,7 +2,7 @@ #include "tier0/cvar.h" #include "engine/sys_utils.h" #include "server/server.h" -#include "client/client.h" +#include "engine/baseclient.h" #include "networksystem/r5net.h" #include "public/include/bansystem.h" diff --git a/r5dev/tier0/cmd.cpp b/r5dev/tier0/cmd.cpp index c98af4ca..66503408 100644 --- a/r5dev/tier0/cmd.cpp +++ b/r5dev/tier0/cmd.cpp @@ -2,7 +2,6 @@ #include "tier0/cmd.h" #include "tier0/cvar.h" #include "tier0/completion.h" -#include "client/client.h" #include "engine/sys_utils.h" //----------------------------------------------------------------------------- diff --git a/r5dev/vproj/gamesdk.vcxproj b/r5dev/vproj/gamesdk.vcxproj index a1d939bf..21c1df9f 100644 --- a/r5dev/vproj/gamesdk.vcxproj +++ b/r5dev/vproj/gamesdk.vcxproj @@ -13,7 +13,6 @@ - @@ -110,7 +109,6 @@ - diff --git a/r5dev/vproj/gamesdk.vcxproj.filters b/r5dev/vproj/gamesdk.vcxproj.filters index 999d1867..420a9ee7 100644 --- a/r5dev/vproj/gamesdk.vcxproj.filters +++ b/r5dev/vproj/gamesdk.vcxproj.filters @@ -168,9 +168,6 @@ - - sdk\client - sdk\client @@ -425,9 +422,6 @@ sdk\client - - sdk\client - sdk\client