Check if requests for interfaces succeed

IBinTools might not be available if we're running on a newer SourceMod version than the extension is compiled against.
This commit is contained in:
Peace-Maker 2019-04-09 18:00:58 +02:00
parent 0a5cab577a
commit 9d07c9d74c
3 changed files with 14 additions and 1 deletions

View File

@ -113,12 +113,21 @@ void SourceTVManager::SDK_OnAllLoaded()
#endif #endif
SM_GET_LATE_IFACE(BINTOOLS, bintools); SM_GET_LATE_IFACE(BINTOOLS, bintools);
if (!bintools)
{
smutils->LogError(myself, "Could not find interface: %s. Won't be able to send events to local spectators only.", SMINTERFACE_BINTOOLS_NAME);
}
SM_GET_LATE_IFACE(SDKTOOLS, sdktools); SM_GET_LATE_IFACE(SDKTOOLS, sdktools);
if (!sdktools)
{
smutils->LogError(myself, "Could not find interface: %s. Some functions won't work.", SMINTERFACE_SDKTOOLS_NAME);
}
g_pSTVForwards.Init(); g_pSTVForwards.Init();
SetupNativeCalls(); SetupNativeCalls();
iserver = sdktools->GetIServer(); if (sdktools)
iserver = sdktools->GetIServer();
if (!iserver) if (!iserver)
smutils->LogError(myself, "Failed to get IServer interface from SDKTools. Some functions won't work."); smutils->LogError(myself, "Failed to get IServer interface from SDKTools. Some functions won't work.");

View File

@ -35,6 +35,7 @@
#include "extension.h" #include "extension.h"
#include "amtl/am-vector.h" #include "amtl/am-vector.h"
#include "amtl/am-utility.h" #include "amtl/am-utility.h"
#include "amtl/am-autoptr.h"
class HLTVServerWrapper { class HLTVServerWrapper {
public: public:

View File

@ -235,6 +235,9 @@ static bool BroadcastEventLocal(IHLTVServer *server, IGameEvent *event, bool bRe
return false; return false;
} }
if (!bintools)
return false;
PassInfo pass[2]; PassInfo pass[2];
pass[0].flags = PASSFLAG_BYVAL; pass[0].flags = PASSFLAG_BYVAL;
pass[0].type = PassType_Basic; pass[0].type = PassType_Basic;