Use SteamWorks C++ API in CStrike RulesFix, for better interface compatibility.
This commit is contained in:
parent
47f135534d
commit
b62f332611
@ -39,9 +39,6 @@ bool bPatched = false;
|
|||||||
|
|
||||||
RulesFix rulesfix;
|
RulesFix rulesfix;
|
||||||
|
|
||||||
ISteamGameServer *(*SteamAPI_SteamGameServer)();
|
|
||||||
void (*SteamAPI_ISteamGameServer_SetKeyValue)(ISteamGameServer *self, const char *pKey, const char *pValue);
|
|
||||||
|
|
||||||
SH_DECL_HOOK1_void(IServerGameDLL, GameServerSteamAPIActivated, SH_NOATTRIB, 0, bool);
|
SH_DECL_HOOK1_void(IServerGameDLL, GameServerSteamAPIActivated, SH_NOATTRIB, 0, bool);
|
||||||
|
|
||||||
RulesFix::RulesFix() :
|
RulesFix::RulesFix() :
|
||||||
@ -93,23 +90,6 @@ void RulesFix::OnLoad()
|
|||||||
, nullptr, 0);
|
, nullptr, 0);
|
||||||
if (pLibrary != nullptr)
|
if (pLibrary != nullptr)
|
||||||
{
|
{
|
||||||
const char *pSteamGameServerFuncName = "SteamAPI_SteamGameServer_v013";
|
|
||||||
const char *pSetKeyValueFuncName = "SteamAPI_ISteamGameServer_SetKeyValue";
|
|
||||||
|
|
||||||
// When will hl2sdk-csgo be updated the SteamWorks SDK, change this to export.
|
|
||||||
SteamAPI_SteamGameServer = reinterpret_cast<ISteamGameServer *(*)()>(pLibrary->GetSymbolAddress(pSteamGameServerFuncName));
|
|
||||||
SteamAPI_ISteamGameServer_SetKeyValue = reinterpret_cast<void (*)(ISteamGameServer *self, const char *pKey, const char *pValue)>(pLibrary->GetSymbolAddress(pSetKeyValueFuncName));
|
|
||||||
|
|
||||||
if(SteamAPI_SteamGameServer == nullptr)
|
|
||||||
{
|
|
||||||
g_pSM->LogError(myself, "[CStrike] Failed to get %s function", pSteamGameServerFuncName);
|
|
||||||
}
|
|
||||||
|
|
||||||
if(SteamAPI_ISteamGameServer_SetKeyValue == nullptr)
|
|
||||||
{
|
|
||||||
g_pSM->LogError(myself, "[CStrike] Failed to get %s function", pSetKeyValueFuncName);
|
|
||||||
}
|
|
||||||
|
|
||||||
pLibrary->CloseLibrary();
|
pLibrary->CloseLibrary();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -185,20 +165,18 @@ static void OnConVarChanged(IConVar *var, const char *pOldValue, float flOldValu
|
|||||||
|
|
||||||
void RulesFix::OnNotifyConVarChanged(ConVar *pVar)
|
void RulesFix::OnNotifyConVarChanged(ConVar *pVar)
|
||||||
{
|
{
|
||||||
if (!bPatched || !SteamAPI_SteamGameServer || !SteamAPI_ISteamGameServer_SetKeyValue)
|
if (!bPatched)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
ISteamGameServer *pSteamClientGameServer = SteamAPI_SteamGameServer();
|
if (SteamGameServer())
|
||||||
|
|
||||||
if (pSteamClientGameServer)
|
|
||||||
{
|
{
|
||||||
if (pVar->IsFlagSet(FCVAR_PROTECTED))
|
if (pVar->IsFlagSet(FCVAR_PROTECTED))
|
||||||
{
|
{
|
||||||
SteamAPI_ISteamGameServer_SetKeyValue(pSteamClientGameServer, pVar->GetName(), !pVar->GetString()[0] ? "0" : "1");
|
SteamGameServer()->SetKeyValue(pVar->GetName(), !pVar->GetString()[0] ? "0" : "1");
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
SteamAPI_ISteamGameServer_SetKeyValue(pSteamClientGameServer, pVar->GetName(), pVar->GetString());
|
SteamGameServer()->SetKeyValue(pVar->GetName(), pVar->GetString());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user