mirror of
https://github.com/alliedmodders/metamod-source.git
synced 2025-02-20 13:54:14 +01:00
Fix provider reaching calling directly outside for "meta" ConCommand
This commit is contained in:
parent
15c84495cb
commit
acd8644688
@ -195,6 +195,11 @@ static class ProviderCallbacks : public IMetamodSourceProviderCallbacks
|
||||
ITER_EVENT(OnLevelShutdown, ());
|
||||
}
|
||||
|
||||
virtual bool OnCommand_Meta(IMetamodSourceCommandInfo* info) override
|
||||
{
|
||||
return Command_Meta(info);
|
||||
}
|
||||
|
||||
virtual bool OnCommand_ClientMeta(edict_t* client, IMetamodSourceCommandInfo* info) override
|
||||
{
|
||||
return Command_ClientMeta(client, info);
|
||||
|
@ -90,6 +90,11 @@ namespace SourceMM
|
||||
*/
|
||||
virtual void OnLevelShutdown() = 0;
|
||||
|
||||
/**
|
||||
* @brief Called when the ConCommand "meta" is executed
|
||||
*/
|
||||
virtual bool OnCommand_Meta(IMetamodSourceCommandInfo* info) = 0;
|
||||
|
||||
/**
|
||||
* @brief Called when a client executes "meta" as a ClientCommand
|
||||
*/
|
||||
|
@ -30,14 +30,12 @@
|
||||
#include <KeyValues.h>
|
||||
#include <filesystem.h>
|
||||
|
||||
#if SOURCE_ENGINE >= SE_ORANGEBOX
|
||||
void LocalCommand_Meta(const CCommand& args);
|
||||
#else
|
||||
void LocalCommand_Meta();
|
||||
#endif
|
||||
|
||||
ConCommand meta_local_cmd("meta", LocalCommand_Meta, "Metamod:Source control options");
|
||||
|
||||
static SourceProvider g_SourceProvider;
|
||||
|
||||
IMetamodSourceProvider* provider = &g_SourceProvider;
|
||||
|
||||
SH_DECL_HOOK0(IServerGameDLL, GameInit, SH_NOATTRIB, 0, bool);
|
||||
SH_DECL_HOOK6(IServerGameDLL, LevelInit, SH_NOATTRIB, 0, bool, const char*, const char*, const char*, const char*, bool, bool);
|
||||
SH_DECL_HOOK0_void(IServerGameDLL, LevelShutdown, SH_NOATTRIB, 0);
|
||||
@ -466,7 +464,12 @@ void LocalCommand_Meta()
|
||||
{
|
||||
GlobCommand cmd;
|
||||
#endif
|
||||
Command_Meta(&cmd);
|
||||
|
||||
if (nullptr != g_SourceProvider.m_pCallbacks)
|
||||
{
|
||||
GlobCommand cmd(&args);
|
||||
g_SourceProvider.m_pCallbacks->OnCommand_Meta(&cmd);
|
||||
}
|
||||
}
|
||||
|
||||
#if SOURCE_ENGINE == SE_CSGO || SOURCE_ENGINE == SE_BLADE || SOURCE_ENGINE == SE_MCV
|
||||
@ -661,7 +664,3 @@ void SourceProvider::Hook_ClientCommand(edict_t * client)
|
||||
|
||||
RETURN_META(MRES_IGNORED);
|
||||
}
|
||||
|
||||
static SourceProvider g_SourceProvider;
|
||||
|
||||
IMetamodSourceProvider* provider = &g_SourceProvider;
|
@ -115,6 +115,12 @@ private:
|
||||
IFileSystem* baseFs = nullptr;
|
||||
std::vector<UsrMsgInfo> usermsgs_list;
|
||||
bool bOriginalEngine = false;
|
||||
|
||||
#if SOURCE_ENGINE >= SE_ORANGEBOX
|
||||
friend void LocalCommand_Meta(const CCommand& args);
|
||||
#else
|
||||
friend void LocalCommand_Meta();
|
||||
#endif
|
||||
};
|
||||
|
||||
#endif
|
||||
|
@ -33,7 +33,11 @@
|
||||
#include <filesystem.h>
|
||||
#include <iserver.h>
|
||||
|
||||
void LocalCommand_Meta(const CCommand& args);
|
||||
|
||||
static Source2Provider g_Source2Provider;
|
||||
|
||||
IMetamodSourceProvider* provider = &g_Source2Provider;
|
||||
|
||||
|
||||
ConCommand meta_local_cmd("meta", LocalCommand_Meta, "Metamod:Source control options");
|
||||
|
||||
@ -346,8 +350,11 @@ private:
|
||||
|
||||
void LocalCommand_Meta(const CCommand& args)
|
||||
{
|
||||
GlobCommand cmd(&args);
|
||||
Command_Meta(&cmd);
|
||||
if (nullptr != g_Source2Provider.m_pCallbacks)
|
||||
{
|
||||
GlobCommand cmd(&args);
|
||||
g_Source2Provider.m_pCallbacks->OnCommand_Meta(&cmd);
|
||||
}
|
||||
}
|
||||
|
||||
bool Source2Provider::KVLoadFromFile(KeyValues* kv, IFileSystem* filesystem, const char* resourceName, const char* pathID)
|
||||
@ -447,7 +454,3 @@ void Source2Provider::Hook_ClientCommand(CEntityIndex index, const CCommand& _cm
|
||||
|
||||
RETURN_META(MRES_IGNORED);
|
||||
}
|
||||
|
||||
static Source2Provider g_Source2Provider;
|
||||
|
||||
IMetamodSourceProvider* provider = &g_Source2Provider;
|
@ -77,6 +77,8 @@ private:
|
||||
private:
|
||||
IFileSystem* baseFs = nullptr;
|
||||
std::string sLastMap;
|
||||
|
||||
friend void LocalCommand_Meta(const CCommand& args);
|
||||
};
|
||||
|
||||
#endif
|
||||
|
Loading…
x
Reference in New Issue
Block a user