Skip to content

Commit 63bc8d4

Browse files
committed
steamworks: debug a issue
CGet seems to cache something which might be the cause.
1 parent 1480f79 commit 63bc8d4

File tree

3 files changed

+24
-2
lines changed

3 files changed

+24
-2
lines changed

source/modules/steamworks.cpp

Lines changed: 16 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ static Symbols::SV_InitGameServerSteam func_SV_InitGameServerSteam;
2525

2626
static Detouring::Hook detour_CSteam3Server_OnLoggedOff;
2727
static void hook_CSteam3Server_OnLoggedOff(CSteam3Server* srv, SteamServersDisconnected_t* info)
28-
{
28+
{
2929
detour_CSteam3Server_OnLoggedOff.GetTrampoline<Symbols::CSteam3Server_OnLoggedOff>()(srv, info);
3030

3131
if (Lua::PushHook("HolyLib:OnSteamDisconnect"))
@@ -37,7 +37,7 @@ static void hook_CSteam3Server_OnLoggedOff(CSteam3Server* srv, SteamServersDisco
3737

3838
static Detouring::Hook detour_CSteam3Server_OnLogonSuccess;
3939
static void hook_CSteam3Server_OnLogonSuccess(CSteam3Server* srv, SteamServersConnected_t* info)
40-
{
40+
{
4141
detour_CSteam3Server_OnLogonSuccess.GetTrampoline<Symbols::CSteam3Server_OnLogonSuccess>()(srv, info);
4242

4343
if (Lua::PushHook("HolyLib:OnSteamConnect"))
@@ -139,6 +139,14 @@ void CSteamWorksModule::LuaShutdown()
139139
}
140140
}
141141

142+
static Detouring::Hook detour_CGet_SteamUGC;
143+
static void* hook_CGet_SteamUGC(IGet* pGet)
144+
{
145+
void* pRet = detour_CGet_SteamUGC.GetTrampoline<Symbols::CGet_SteamUGC>()(pGet);
146+
Msg("holylib - Called CGet::SteamUGC %p\n", pRet);
147+
return pRet;
148+
}
149+
142150
void CSteamWorksModule::InitDetour(bool bPreServer)
143151
{
144152
if ( bPreServer ) { return; }
@@ -156,6 +164,12 @@ void CSteamWorksModule::InitDetour(bool bPreServer)
156164
(void*)hook_CSteam3Server_OnLogonSuccess, m_pID
157165
);
158166

167+
Detour::Create(
168+
&detour_CGet_SteamUGC, "CGet::SteamUGC",
169+
engine_loader.GetModule(), Symbols::CGet_SteamUGCSym,
170+
(void*)hook_CGet_SteamUGC, m_pID
171+
);
172+
159173
func_Steam3Server = (Symbols::Steam3ServerT)Detour::GetFunction(engine_loader.GetModule(), Symbols::Steam3ServerSym);
160174
func_CSteam3Server_Shutdown = (Symbols::CSteam3Server_Shutdown)Detour::GetFunction(engine_loader.GetModule(), Symbols::CSteam3Server_ShutdownSym);
161175
func_CSteam3Server_Activate = (Symbols::CSteam3Server_Activate)Detour::GetFunction(engine_loader.GetModule(), Symbols::CSteam3Server_ActivateSym);

source/symbols.cpp

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -560,6 +560,11 @@ namespace Symbols
560560
Symbol::FromSignature("\x55\x48\x89\xE5\x53\x48\x83\xEC\x08\x48\x8B\x1D********\x00\x00\x01"), // 55 48 89 E5 53 48 83 EC 08 48 8B 1D ?? ?? ?? ?? ?? ?? ?? ?? 00 00 01
561561
};
562562

563+
const std::vector<Symbol> CGet_SteamUGCSym = {
564+
Symbol::FromName("_ZN4CGet8SteamUGCEv"),
565+
NULL_SIGNATURE,
566+
};
567+
563568
//---------------------------------------------------------------------------------
564569
// Purpose: pas Symbols
565570
//---------------------------------------------------------------------------------

source/symbols.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -429,6 +429,9 @@ namespace Symbols
429429
typedef void (*SV_InitGameServerSteam)();
430430
extern const std::vector<Symbol> SV_InitGameServerSteamSym;
431431

432+
typedef void* (*CGet_SteamUGC)(void*);
433+
extern const std::vector<Symbol> CGet_SteamUGCSym;
434+
432435
//---------------------------------------------------------------------------------
433436
// Purpose: pas Symbols
434437
//---------------------------------------------------------------------------------

0 commit comments

Comments
 (0)