2021-12-25 22:36:38 +01:00
# pragma once
2022-04-09 02:18:57 +02:00
/* ==== CVENGINESERVER ================================================================================================================================================== */
2022-04-18 03:35:08 +02:00
inline CMemory p_IVEngineServer__PersistenceAvailable ;
inline auto IVEngineServer__PersistenceAvailable = p_IVEngineServer__PersistenceAvailable . RCast < bool ( * ) ( void * entidx , int clientidx ) > ( ) ;
2022-01-26 23:43:16 +01:00
2022-04-18 03:35:08 +02:00
inline CMemory p_IVEngineServer__IsDedicatedServer ;
inline auto IVEngineServer__IsDedicatedServer = p_IVEngineServer__IsDedicatedServer . RCast < bool ( * ) ( void ) > ( ) ;
2022-01-26 23:43:16 +01:00
2022-04-18 03:35:08 +02:00
inline CMemory p_IVEngineServer__GetNumHumanPlayers ;
inline auto IVEngineServer__GetNumHumanPlayers = p_IVEngineServer__GetNumHumanPlayers . RCast < int64_t ( * ) ( void ) > ( ) ;
2022-03-26 00:24:13 +01:00
2022-04-18 03:35:08 +02:00
inline CMemory p_IVEngineServer__GetNumFakeClients ;
inline auto IVEngineServer__GetNumFakeClients = p_IVEngineServer__GetNumFakeClients . RCast < int64_t ( * ) ( void ) > ( ) ;
2022-03-26 00:24:13 +01:00
2022-04-18 03:35:08 +02:00
inline bool * g_bDedicated = nullptr ;
2021-12-25 22:36:38 +01:00
///////////////////////////////////////////////////////////////////////////////
2022-03-26 00:24:13 +01:00
bool HIVEngineServer__PersistenceAvailable ( void * entidx , int clientidx ) ;
2021-12-25 22:36:38 +01:00
void IVEngineServer_Attach ( ) ;
void IVEngineServer_Detach ( ) ;
///////////////////////////////////////////////////////////////////////////////
2022-01-05 22:56:49 +01:00
extern bool g_bIsPersistenceVarSet [ MAX_PLAYERS ] ;
2021-12-25 22:36:38 +01:00
///////////////////////////////////////////////////////////////////////////////
class HVEngineServer : public IDetour
{
2022-04-11 01:44:30 +02:00
virtual void GetAdr ( void ) const
2021-12-25 22:36:38 +01:00
{
2022-05-13 14:53:25 +02:00
spdlog : : debug ( " | FUN: IVEngineServer::PersistenceAvailable : {:#18x} | \n " , p_IVEngineServer__PersistenceAvailable . GetPtr ( ) ) ;
spdlog : : debug ( " | FUN: IVEngineServer::IsDedicatedServer : {:#18x} | \n " , p_IVEngineServer__IsDedicatedServer . GetPtr ( ) ) ;
spdlog : : debug ( " | FUN: IVEngineServer::GetNumHumanPlayers : {:#18x} | \n " , p_IVEngineServer__GetNumHumanPlayers . GetPtr ( ) ) ;
spdlog : : debug ( " | FUN: IVEngineServer::GetNumFakeClients : {:#18x} | \n " , p_IVEngineServer__GetNumFakeClients . GetPtr ( ) ) ;
spdlog : : debug ( " | VAR: g_bDedicated : {:#18x} | \n " , reinterpret_cast < uintptr_t > ( g_bDedicated ) ) ;
spdlog : : debug ( " +----------------------------------------------------------------+ \n " ) ;
2021-12-25 22:36:38 +01:00
}
2022-04-18 03:35:08 +02:00
virtual void GetFun ( void ) const
{
2022-08-09 03:02:00 +02:00
p_IVEngineServer__PersistenceAvailable = g_GameDll . FindPatternSIMD ( reinterpret_cast < rsig_t > ( " \x3B \x15 \x00 \x00 \x00 \x00 \x7D \x33 " ) , " xx????xx " ) ;
p_IVEngineServer__IsDedicatedServer = g_GameDll . FindPatternSIMD ( reinterpret_cast < rsig_t > ( " \x0F \xB6 \x05 \x00 \x00 \x00 \x00 \xC3 \xCC \xCC \xCC \xCC \xCC \xCC \xCC \xCC \x48 \x8B \x05 \x00 \x00 \x00 \x00 \xC3 \xCC \xCC \xCC \xCC \xCC \xCC \xCC \xCC \x40 \x53 " ) , " xxx????xxxxxxxxxxxx????xxxxxxxxxxx " ) ;
p_IVEngineServer__GetNumHumanPlayers = g_GameDll . FindPatternSIMD ( reinterpret_cast < rsig_t > ( " \x8B \x15 \x00 \x00 \x00 \x00 \x33 \xC0 \x85 \xD2 \x7E \x24 " ) , " xx????xxxxxx " ) ;
p_IVEngineServer__GetNumFakeClients = g_GameDll . FindPatternSIMD ( reinterpret_cast < rsig_t > ( " \x8B \x05 \x00 \x00 \x00 \x00 \x33 \xC9 \x85 \xC0 \x7E \x2D " ) , " xx????xxxxxx " ) ;
2022-04-18 03:35:08 +02:00
IVEngineServer__PersistenceAvailable = p_IVEngineServer__PersistenceAvailable . RCast < bool ( * ) ( void * entidx , int clientidx ) > ( ) ; /*3B 15 ?? ?? ?? ?? 7D 33*/
IVEngineServer__IsDedicatedServer = p_IVEngineServer__IsDedicatedServer . RCast < bool ( * ) ( void ) > ( ) ; /*0F B6 05 ?? ?? ?? ?? C3 CC CC CC CC CC CC CC CC 48 8B 05 ?? ?? ?? ?? C3 CC CC CC CC CC CC CC CC 40 53*/
IVEngineServer__GetNumHumanPlayers = p_IVEngineServer__GetNumHumanPlayers . RCast < int64_t ( * ) ( void ) > ( ) ; /*8B 15 ?? ?? ?? ?? 33 C0 85 D2 7E 24*/
IVEngineServer__GetNumFakeClients = p_IVEngineServer__GetNumFakeClients . RCast < int64_t ( * ) ( void ) > ( ) ; /*8B 05 ?? ?? ?? ?? 33 C9 85 C0 7E 2D*/
}
virtual void GetVar ( void ) const
{
g_bDedicated = p_IVEngineServer__IsDedicatedServer . Offset ( 0x0 ) . ResolveRelativeAddress ( 0x3 , 0x7 ) . RCast < bool * > ( ) ;
}
2022-04-11 01:44:30 +02:00
virtual void GetCon ( void ) const { }
virtual void Attach ( void ) const { }
virtual void Detach ( void ) const { }
2021-12-25 22:36:38 +01:00
} ;
///////////////////////////////////////////////////////////////////////////////
REGISTER ( HVEngineServer ) ;