//===== Copyright © 1996-2005, Valve Corporation, All rights reserved. ======// // // Purpose: // // $NoKeywords: $ //===========================================================================// #include "core/stdafx.h" #include "tier1/cmd.h" #include "tier1/cvar.h" #include "tier1/strtools.h" #include "engine/sys_dll.h" #include "engine/sys_dll2.h" #ifndef DEDICATED #include "client/vengineclient_impl.h" #endif // !DEDICATED //----------------------------------------------------------------------------- // Figure out if we're running a Valve mod or not. //----------------------------------------------------------------------------- static bool IsValveMod(const char* pModName) { return (Q_stricmp(pModName, "cstrike") == 0 || Q_stricmp(pModName, "dod") == 0 || Q_stricmp(pModName, "hl1mp") == 0 || Q_stricmp(pModName, "tf") == 0 || Q_stricmp(pModName, "hl2mp") == 0 || Q_stricmp(pModName, "csgo") == 0); } //----------------------------------------------------------------------------- // Figure out if we're running a Respawn mod or not. //----------------------------------------------------------------------------- static bool IsRespawnMod(const char* pModName) { return (Q_stricmp(pModName, "r1") == 0 || Q_stricmp(pModName, "r2") == 0 || Q_stricmp(pModName, "r5") == 0); } //----------------------------------------------------------------------------- // Initialization, shutdown of a mod. //----------------------------------------------------------------------------- bool CEngineAPI::ModInit(CEngineAPI* pEngineAPI, const char* pModName, const char* pGameDir) { g_pConCommand->InitShipped(); g_pConCommand->PurgeShipped(); g_pConVar->InitShipped(); g_pConVar->PurgeShipped(); bool results = CEngineAPI_ModInit(pEngineAPI, pModName, pGameDir); if (!IsValveMod(pModName) && !IsRespawnMod(pModName)) { #ifndef DEDICATED g_pEngineClient->SetRestrictServerCommands(true); // Restrict server commands. g_pEngineClient->SetRestrictClientCommands(true); // Restrict client commands. #endif // !DEDICATED ConCommandBase* disconnect = g_pCVar->FindCommandBase("disconnect"); disconnect->AddFlags(FCVAR_SERVER_CAN_EXECUTE); // Make sure server is not restricted to this. } return results; } /////////////////////////////////////////////////////////////////////////////// void SysDll2_Attach() { DetourAttach((LPVOID*)&CEngineAPI_ModInit, &CEngineAPI::ModInit); } void SysDll2_Detach() { DetourDetach((LPVOID*)&CEngineAPI_ModInit, &CEngineAPI::ModInit); }