fix for amb1776 - regression on orangebox, OnConfigsExecuted wouldn't execute
--HG-- branch : sourcemod-1.0.x extra : convert_revision : svn%3A39bc706e-5318-0410-9160-8a85361fbb7c/branches/sourcemod-1.0.x%402265
This commit is contained in:
parent
3edc824bc2
commit
299a17cd26
@ -54,20 +54,19 @@ CoreConfig g_CoreConfig;
|
|||||||
bool g_bConfigsExecd = false;
|
bool g_bConfigsExecd = false;
|
||||||
bool g_bServerExecd = false;
|
bool g_bServerExecd = false;
|
||||||
bool g_bGotServerStart = false;
|
bool g_bGotServerStart = false;
|
||||||
|
bool g_bGotTrigger = false;
|
||||||
ConCommand *g_pExecPtr = NULL;
|
ConCommand *g_pExecPtr = NULL;
|
||||||
ConVar *g_ServerCfgFile = NULL;
|
ConVar *g_ServerCfgFile = NULL;
|
||||||
|
|
||||||
void CheckAndFinalizeConfigs();
|
void CheckAndFinalizeConfigs();
|
||||||
|
|
||||||
/* :TODO: use PM's new macros. this is a fast patch so I don't have time to look them up. */
|
|
||||||
#if defined ORANGEBOX_BUILD
|
#if defined ORANGEBOX_BUILD
|
||||||
bool __SourceHook_FHRemoveConCommandDispatch(void *,bool,class fastdelegate::FastDelegate1<class CCommand const &,void>);
|
SH_DECL_EXTERN1_void(ConCommand, Dispatch, SH_NOATTRIB, false, const CCommand &);
|
||||||
int __SourceHook_FHAddConCommandDispatch(void *,enum SourceHook::ISourceHook::AddHookMode,bool,class fastdelegate::FastDelegate1<class CCommand const &,void>);
|
void Hook_ExecDispatchPre(const CCommand &cmd)
|
||||||
void Hook_ExecDispatch(const CCommand &cmd)
|
|
||||||
#else
|
#else
|
||||||
extern bool __SourceHook_FHAddConCommandDispatch(void *,bool,class fastdelegate::FastDelegate0<void>);
|
extern bool __SourceHook_FHAddConCommandDispatch(void *,bool,class fastdelegate::FastDelegate0<void>);
|
||||||
extern bool __SourceHook_FHRemoveConCommandDispatch(void *,bool,class fastdelegate::FastDelegate0<void>);
|
extern bool __SourceHook_FHRemoveConCommandDispatch(void *,bool,class fastdelegate::FastDelegate0<void>);
|
||||||
void Hook_ExecDispatch()
|
void Hook_ExecDispatchPre()
|
||||||
#endif
|
#endif
|
||||||
{
|
{
|
||||||
#if !defined ORANGEBOX_BUILD
|
#if !defined ORANGEBOX_BUILD
|
||||||
@ -75,10 +74,24 @@ void Hook_ExecDispatch()
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
const char *arg = cmd.Arg(1);
|
const char *arg = cmd.Arg(1);
|
||||||
|
|
||||||
if (!g_bServerExecd
|
if (!g_bServerExecd
|
||||||
&& arg != NULL
|
&& arg != NULL
|
||||||
&& strcmp(arg, g_ServerCfgFile->GetString()) == 0)
|
&& strcmp(arg, g_ServerCfgFile->GetString()) == 0)
|
||||||
{
|
{
|
||||||
|
g_bGotTrigger = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#if defined ORANGEBOX_BUILD
|
||||||
|
void Hook_ExecDispatchPost(const CCommand &cmd)
|
||||||
|
#else
|
||||||
|
void Hook_ExecDispatchPost()
|
||||||
|
#endif
|
||||||
|
{
|
||||||
|
if (g_bGotTrigger)
|
||||||
|
{
|
||||||
|
g_bGotTrigger = false;
|
||||||
g_bServerExecd = true;
|
g_bServerExecd = true;
|
||||||
CheckAndFinalizeConfigs();
|
CheckAndFinalizeConfigs();
|
||||||
}
|
}
|
||||||
@ -112,7 +125,8 @@ void CoreConfig::OnSourceModShutdown()
|
|||||||
|
|
||||||
if (g_pExecPtr != NULL)
|
if (g_pExecPtr != NULL)
|
||||||
{
|
{
|
||||||
SH_REMOVE_HOOK_STATICFUNC(ConCommand, Dispatch, g_pExecPtr, Hook_ExecDispatch, true);
|
SH_REMOVE_HOOK_STATICFUNC(ConCommand, Dispatch, g_pExecPtr, Hook_ExecDispatchPre, false);
|
||||||
|
SH_REMOVE_HOOK_STATICFUNC(ConCommand, Dispatch, g_pExecPtr, Hook_ExecDispatchPost, true);
|
||||||
g_pExecPtr = NULL;
|
g_pExecPtr = NULL;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -139,7 +153,8 @@ void CoreConfig::OnSourceModLevelChange(const char *mapName)
|
|||||||
g_pExecPtr = (ConCommand *)pBase;
|
g_pExecPtr = (ConCommand *)pBase;
|
||||||
if (g_pExecPtr != NULL)
|
if (g_pExecPtr != NULL)
|
||||||
{
|
{
|
||||||
SH_ADD_HOOK_STATICFUNC(ConCommand, Dispatch, g_pExecPtr, Hook_ExecDispatch, true);
|
SH_ADD_HOOK_STATICFUNC(ConCommand, Dispatch, g_pExecPtr, Hook_ExecDispatchPre, false);
|
||||||
|
SH_ADD_HOOK_STATICFUNC(ConCommand, Dispatch, g_pExecPtr, Hook_ExecDispatchPost, true);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@ -152,6 +167,7 @@ void CoreConfig::OnSourceModLevelChange(const char *mapName)
|
|||||||
g_bConfigsExecd = false;
|
g_bConfigsExecd = false;
|
||||||
g_bServerExecd = false;
|
g_bServerExecd = false;
|
||||||
g_bGotServerStart = false;
|
g_bGotServerStart = false;
|
||||||
|
g_bGotTrigger = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
void CoreConfig::OnRootConsoleCommand(const char *cmdname, const CCommand &command)
|
void CoreConfig::OnRootConsoleCommand(const char *cmdname, const CCommand &command)
|
||||||
|
Loading…
Reference in New Issue
Block a user