4 IShareSys *g_pShareSys = NULL;
5 IExtension *myself = NULL;
6 IHandleSys *g_pHandleSys = NULL;
7 ISourceMod *g_pSM = NULL;
9 PLATFORM_EXTERN_C IExtensionInterface *GetSMExtAPI()
11 return g_pExtensionIface;
14 SDKExtension::SDKExtension()
16 #if defined SMEXT_CONF_METAMOD
17 m_SourceMMLoaded = false;
18 m_WeAreUnloaded = false;
19 m_WeGotPauseChange = false;
23 bool SDKExtension::OnExtensionLoad(IExtension *me, IShareSys *sys, char *error, size_t err_max, bool late)
28 #if defined SMEXT_CONF_METAMOD
29 m_WeAreUnloaded = true;
31 if (!m_SourceMMLoaded)
35 snprintf(error, err_max, "Metamod attach failed");
41 SM_GET_IFACE(HANDLESYSTEM, g_pHandleSys);
42 SM_GET_IFACE(SOURCEMOD, g_pSM);
44 if (SDK_OnLoad(error, err_max, late))
46 #if defined SMEXT_CONF_METAMOD
47 m_WeAreUnloaded = true;
55 bool SDKExtension::IsMetamodExtension()
57 #if defined SMEXT_CONF_METAMOD
64 void SDKExtension::OnExtensionPauseChange(bool state)
66 #if defined SMEXT_CONF_METAMOD
67 m_WeGotPauseChange = true;
69 SDK_OnPauseChange(state);
72 void SDKExtension::OnExtensionsAllLoaded()
77 void SDKExtension::OnExtensionUnload()
79 #if defined SMEXT_CONF_METAMOD
80 m_WeAreUnloaded = true;
85 const char *SDKExtension::GetExtensionAuthor()
87 return SMEXT_CONF_AUTHOR;
90 const char *SDKExtension::GetExtensionDateString()
92 return SMEXT_CONF_DATESTRING;
95 const char *SDKExtension::GetExtensionDescription()
97 return SMEXT_CONF_DESCRIPTION;
100 const char *SDKExtension::GetExtensionVerString()
102 return SMEXT_CONF_VERSION;
105 const char *SDKExtension::GetExtensionName()
107 return SMEXT_CONF_NAME;
110 const char *SDKExtension::GetExtensionTag()
112 return SMEXT_CONF_LOGTAG;
115 const char *SDKExtension::GetExtensionURL()
117 return SMEXT_CONF_URL;
120 bool SDKExtension::SDK_OnLoad(char *error, size_t err_max, bool late)
125 void SDKExtension::SDK_OnUnload()
129 void SDKExtension::SDK_OnPauseChange(bool paused)
133 void SDKExtension::SDK_OnAllLoaded()
137 #if defined SMEXT_CONF_METAMOD
140 ISmmPlugin *g_PLAPI = NULL;
141 SourceHook::ISourceHook *g_SHPtr = NULL;
142 ISmmAPI *g_SMAPI = NULL;
144 IVEngineServer *engine = NULL;
145 IServerGameDLL *gamedll = NULL;
147 SMM_API void *PL_EXPOSURE(const char *name, int *code)
149 if (name && !strcmp(name, PLAPI_NAME))
155 return static_cast<void *>(g_pExtensionIface);
160 *code = IFACE_FAILED;
166 bool SDKExtension::Load(PluginId id, ISmmAPI *ismm, char *error, size_t maxlen, bool late)
170 GET_V_IFACE_ANY(serverFactory, gamedll, IServerGameDLL, INTERFACEVERSION_SERVERGAMEDLL);
171 GET_V_IFACE_CURRENT(engineFactory, engine, IVEngineServer, INTERFACEVERSION_VENGINESERVER);
173 m_SourceMMLoaded = true;
175 return SDK_OnMetamodLoad(error, maxlen, late);
178 bool SDKExtension::Unload(char *error, size_t maxlen)
180 if (!m_WeAreUnloaded)
184 snprintf(error, maxlen, "This extension must be unloaded by SourceMod.");
189 return SDK_OnMetamodUnload(error, maxlen);
192 bool SDKExtension::Pause(char *error, size_t maxlen)
194 if (!m_WeGotPauseChange)
198 snprintf(error, maxlen, "This extension must be paused by SourceMod.");
203 m_WeGotPauseChange = false;
205 return SDK_OnMetamodPauseChange(true, error, maxlen);
208 bool SDKExtension::Unpause(char *error, size_t maxlen)
210 if (!m_WeGotPauseChange)
214 snprintf(error, maxlen, "This extension must be unpaused by SourceMod.");
219 m_WeGotPauseChange = false;
221 return SDK_OnMetamodPauseChange(false, error, maxlen);
224 const char *SDKExtension::GetAuthor()
226 return GetExtensionAuthor();
229 const char *SDKExtension::GetDate()
231 return GetExtensionDateString();
234 const char *SDKExtension::GetDescription()
236 return GetExtensionDescription();
239 const char *SDKExtension::GetLicense()
241 return SMEXT_CONF_LICENSE;
244 const char *SDKExtension::GetLogTag()
246 return GetExtensionTag();
249 const char *SDKExtension::GetName()
251 return GetExtensionName();
254 const char *SDKExtension::GetURL()
256 return GetExtensionURL();
259 const char *SDKExtension::GetVersion()
261 return GetExtensionVerString();
264 bool SDKExtension::SDK_OnMetamodLoad(char *error, size_t err_max, bool late)
269 bool SDKExtension::SDK_OnMetamodUnload(char *error, size_t err_max)
274 bool SDKExtension::SDK_OnMetamodPauseChange(bool paused, char *error, size_t err_max)