//=============================================================================// // // Purpose: Interface the engine exposes to the game DLL // //=============================================================================// #include "core/stdafx.h" #include "engine/cmd.h" #include "clientstate.h" #include "vengineclient_impl.h" //--------------------------------------------------------------------------------- // Purpose: define if commands from the server should be restricted or not. // Input : bRestricted - // Output : //--------------------------------------------------------------------------------- void CEngineClient::SetRestrictServerCommands(bool bRestricted) { g_pClientState->m_bRestrictServerCommands = bRestricted; } //--------------------------------------------------------------------------------- // Purpose: get value for if commands are restricted from servers. // Input : // Output : bool //--------------------------------------------------------------------------------- bool CEngineClient::GetRestrictServerCommands() const { return g_pClientState->m_bRestrictServerCommands; } //--------------------------------------------------------------------------------- // Purpose: define if commands on the client should be restricted or not. // Input : bRestricted - // Output : //--------------------------------------------------------------------------------- void CEngineClient::SetRestrictClientCommands(bool bRestricted) { g_pClientState->m_bRestrictClientCommands = bRestricted; } //--------------------------------------------------------------------------------- // Purpose: get value for if commands are restricted for clients. // Input : // Output : bool //--------------------------------------------------------------------------------- bool CEngineClient::GetRestrictClientCommands() const { return g_pClientState->m_bRestrictClientCommands; } //--------------------------------------------------------------------------------- // Purpose: get local player // Input : // Output : int //--------------------------------------------------------------------------------- int CEngineClient::GetLocalPlayer() { const static int index = 36; return CallVFunc(index, this); } //--------------------------------------------------------------------------------- // Purpose: execute client command // Input : *thisptr - // *szCmdString - // Output : //--------------------------------------------------------------------------------- void CEngineClient::_ClientCmd(CEngineClient* thisptr, const char* const szCmdString) { const bool restrictClientCommands = g_pClientState->m_bRestrictClientCommands; const int numMarkers = 2; if (restrictClientCommands && !Cbuf_HasRoomForExecutionMarkers(numMarkers)) { DevWarning(eDLL_T::CLIENT, "%s: No room for %i execution markers; command \"%s\" ignored\n", __FUNCTION__, numMarkers, szCmdString); return; } if (restrictClientCommands) { Cbuf_AddExecutionMarker(Cbuf_GetCurrentPlayer(), eCmdExecutionMarker_Enable_FCVAR_CLIENTCMD_CAN_EXECUTE); } Cbuf_AddText(Cbuf_GetCurrentPlayer(), szCmdString, cmd_source_t::kCommandSrcCode); Cbuf_AddText(Cbuf_GetCurrentPlayer(), "\n", cmd_source_t::kCommandSrcCode); if (restrictClientCommands) { Cbuf_AddExecutionMarker(Cbuf_GetCurrentPlayer(), eCmdExecutionMarker_Disable_FCVAR_CLIENTCMD_CAN_EXECUTE); } } void HVEngineClient::Detour(const bool bAttach) const { DetourSetup(&CEngineClient__ClientCmd, &CEngineClient::_ClientCmd, bAttach); }