mirror of
https://github.com/alliedmodders/metamod-source.git
synced 2025-12-09 11:28:33 +00:00
Client 'meta' command should now work with ServerGameClients004 and beyond.
--HG-- extra : convert_revision : svn%3Ac2935e3e-5518-0410-8daf-afa5dab7d4e3/trunk%40380
This commit is contained in:
parent
bf38135d88
commit
923164bb69
@ -1,5 +1,7 @@
|
|||||||
2007/??/?? 1.4.1:
|
2007/??/?? 1.4.1:
|
||||||
- Added API for getting highest supported IServerPluginCallbacks interface version.
|
- Added API for getting highest supported IServerPluginCallbacks interface version.
|
||||||
|
- The client version of the "meta" command should now work on games that use
|
||||||
|
ServerGameClients004 and beyond.
|
||||||
|
|
||||||
2007/04/05 1.4.0:
|
2007/04/05 1.4.0:
|
||||||
- Added API functions for retrieving User Message info without potentially crashing.
|
- Added API functions for retrieving User Message info without potentially crashing.
|
||||||
|
|||||||
@ -119,15 +119,6 @@ void InitMainStates()
|
|||||||
SH_ADD_HOOK_STATICFUNC(IServerGameDLL, LevelShutdown, g_GameDll.pGameDLL, LevelShutdown_handler, true);
|
SH_ADD_HOOK_STATICFUNC(IServerGameDLL, LevelShutdown, g_GameDll.pGameDLL, LevelShutdown_handler, true);
|
||||||
SH_ADD_HOOK_STATICFUNC(IServerGameDLL, LevelInit, g_GameDll.pGameDLL, LevelInit_handler, true);
|
SH_ADD_HOOK_STATICFUNC(IServerGameDLL, LevelInit, g_GameDll.pGameDLL, LevelInit_handler, true);
|
||||||
SH_ADD_HOOK_STATICFUNC(IServerGameDLL, GameInit, g_GameDll.pGameDLL, GameInit_handler, false);
|
SH_ADD_HOOK_STATICFUNC(IServerGameDLL, GameInit, g_GameDll.pGameDLL, GameInit_handler, false);
|
||||||
|
|
||||||
if (g_GameDll.pGameClients)
|
|
||||||
{
|
|
||||||
SH_ADD_HOOK_STATICFUNC(IServerGameClients, ClientCommand, g_GameDll.pGameClients, ClientCommand_handler, false);
|
|
||||||
} else {
|
|
||||||
/* If IServerGameClients isn't found, this really isn't a fatal error so... */
|
|
||||||
LogMessage("[META] Warning: Could not find IServerGameClients!");
|
|
||||||
LogMessage("[META] Warning: The 'meta' command will not be available to clients.");
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
bool DLLInit(CreateInterfaceFn engineFactory, CreateInterfaceFn physicsFactory, CreateInterfaceFn filesystemFactory, CGlobalVars *pGlobals)
|
bool DLLInit(CreateInterfaceFn engineFactory, CreateInterfaceFn physicsFactory, CreateInterfaceFn filesystemFactory, CGlobalVars *pGlobals)
|
||||||
@ -157,6 +148,15 @@ bool DLLInit(CreateInterfaceFn engineFactory, CreateInterfaceFn physicsFactory,
|
|||||||
|
|
||||||
g_GameDllPatch = SH_GET_CALLCLASS(g_GameDll.pGameDLL);
|
g_GameDllPatch = SH_GET_CALLCLASS(g_GameDll.pGameDLL);
|
||||||
|
|
||||||
|
if (g_GameDll.pGameClients)
|
||||||
|
{
|
||||||
|
SH_ADD_HOOK_STATICFUNC(IServerGameClients, ClientCommand, g_GameDll.pGameClients, ClientCommand_handler, false);
|
||||||
|
} else {
|
||||||
|
/* If IServerGameClients isn't found, this really isn't a fatal error so... */
|
||||||
|
LogMessage("[META] Warning: Could not find IServerGameClients!");
|
||||||
|
LogMessage("[META] Warning: The 'meta' command will not be available to clients.");
|
||||||
|
}
|
||||||
|
|
||||||
if (!g_SmmAPI.CacheCmds())
|
if (!g_SmmAPI.CacheCmds())
|
||||||
{
|
{
|
||||||
LogMessage("[META] Warning: Failed to initialize Con_Printf. Defaulting to Msg().");
|
LogMessage("[META] Warning: Failed to initialize Con_Printf. Defaulting to Msg().");
|
||||||
@ -374,7 +374,6 @@ SMM_API void *CreateInterface(const char *iface, int *ret)
|
|||||||
pInfo->lib = gamedll;
|
pInfo->lib = gamedll;
|
||||||
pInfo->loaded = true;
|
pInfo->loaded = true;
|
||||||
pInfo->pGameDLL = NULL;
|
pInfo->pGameDLL = NULL;
|
||||||
pInfo->pGameClients = (IServerGameClients *)((fn)(INTERFACEVERSION_SERVERGAMECLIENTS, NULL));
|
|
||||||
gamedll_list.push_back(pInfo);
|
gamedll_list.push_back(pInfo);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@ -447,6 +446,15 @@ SMM_API void *CreateInterface(const char *iface, int *ret)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* We use this interface for responding to the meta client command */
|
||||||
|
if (strncmp(iface, "ServerGameClients", 17) == 0)
|
||||||
|
{
|
||||||
|
void *ptr = (g_GameDll.factory)(iface, ret);
|
||||||
|
g_GameDll.pGameClients = static_cast<IServerGameClients *>(ptr);
|
||||||
|
|
||||||
|
return ptr;
|
||||||
|
}
|
||||||
|
|
||||||
/* If we got here, there's definitely a GameDLL */
|
/* If we got here, there's definitely a GameDLL */
|
||||||
IFACE_MACRO(g_GameDll.factory, GameDLL);
|
IFACE_MACRO(g_GameDll.factory, GameDLL);
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user