diff --git a/Extension/swgameserver.cpp b/Extension/swgameserver.cpp index 6130c34..aa66b35 100644 --- a/Extension/swgameserver.cpp +++ b/Extension/swgameserver.cpp @@ -74,7 +74,9 @@ ISteamClient *SteamWorksGameServer::GetSteamClient(void) const char *pLibSteamPath = g_SteamWorks.pSWGameServer->GetLibraryPath(); void *(*pGSInternalCreateAddress)(const char *) = NULL; + void *(*pInternalCreateAddress)(const char *) = NULL; const char *pGSInternalFuncName = "SteamGameServerInternal_CreateInterface"; + const char *pInternalFuncName = "SteamInternal_CreateInterface"; if (g_SteamWorks.pSWGameData) { @@ -82,6 +84,7 @@ ISteamClient *SteamWorksGameServer::GetSteamClient(void) if (pConfig != NULL) { pConfig->GetMemSig(pGSInternalFuncName, reinterpret_cast(&pGSInternalCreateAddress)); + pConfig->GetMemSig(pInternalFuncName, reinterpret_cast(&pInternalCreateAddress)); } } @@ -93,11 +96,19 @@ ISteamClient *SteamWorksGameServer::GetSteamClient(void) pGSInternalCreateAddress = reinterpret_cast(pLibrary->GetSymbolAddress(pGSInternalFuncName)); } + if (pInternalCreateAddress == NULL) + { + pInternalCreateAddress = reinterpret_cast(pLibrary->GetSymbolAddress(pInternalFuncName)); + } + pLibrary->CloseLibrary(); } if (pGSInternalCreateAddress != NULL) this->m_pClient = static_cast((*pGSInternalCreateAddress)(STEAMCLIENT_INTERFACE_VERSION)); + + if (this->m_pClient == NULL && pInternalCreateAddress != NULL) + this->m_pClient = static_cast((*pInternalCreateAddress)(STEAMCLIENT_INTERFACE_VERSION)); } return this->m_pClient;