diff --git a/r5dev/pluginsdk/dllmain.cpp b/r5dev/pluginsdk/dllmain.cpp index e3fd08b7..ecaebf46 100644 --- a/r5dev/pluginsdk/dllmain.cpp +++ b/r5dev/pluginsdk/dllmain.cpp @@ -9,9 +9,11 @@ #include "core/stdafx.h" #include "pluginsdk.h" -extern "C" __declspec(dllexport) bool PluginInstance_OnLoad(const char* pszSelfModule) +extern "C" __declspec(dllexport) bool PluginInstance_OnLoad(const char* pszSelfModule, const char* pszSDKModule) { g_pPluginSDK = new CPluginSDK(pszSelfModule); + g_pPluginSDK->SetSDKModule(CModule(pszSDKModule)); + return g_pPluginSDK->InitSDK(); } diff --git a/r5dev/pluginsdk/pluginsdk.cpp b/r5dev/pluginsdk/pluginsdk.cpp index 760c836d..d5bed641 100644 --- a/r5dev/pluginsdk/pluginsdk.cpp +++ b/r5dev/pluginsdk/pluginsdk.cpp @@ -21,7 +21,6 @@ CPluginSDK::CPluginSDK(const char* pszSelfModule) : m_FactoryInstance(nullptr), { m_SelfModule = CModule(pszSelfModule); m_GameModule = CModule("r5apex.exe"); - m_SDKModule = CModule("gamesdk.dll"); // THIS NEEDS TO BE CHANGED FOR DEDI/CLIENT SDK SUPPORT. AT BEST DO THIS VIA PluginInstance_OnLoad. } //--------------------------------------------------------------------------------- diff --git a/r5dev/pluginsdk/pluginsdk.h b/r5dev/pluginsdk/pluginsdk.h index cae6ab4b..de3025bd 100644 --- a/r5dev/pluginsdk/pluginsdk.h +++ b/r5dev/pluginsdk/pluginsdk.h @@ -11,6 +11,8 @@ public: ~CPluginSDK(); bool InitSDK(); + + inline void SetSDKModule(const CModule& sdkModule) { m_SDKModule = sdkModule; }; private: IFactory* m_FactoryInstance; diff --git a/r5dev/pluginsystem/pluginsystem.cpp b/r5dev/pluginsystem/pluginsystem.cpp index d569ffe9..0af98558 100644 --- a/r5dev/pluginsystem/pluginsystem.cpp +++ b/r5dev/pluginsystem/pluginsystem.cpp @@ -60,7 +60,7 @@ bool CPluginSystem::LoadPluginInstance(PluginInstance_t& pluginInst) auto onLoadFn = pluginModule.GetExportedFunction("PluginInstance_OnLoad").RCast(); Assert(onLoadFn); - if (!onLoadFn(pluginInst.m_svPluginName.c_str())) + if (!onLoadFn(pluginInst.m_svPluginName.c_str(), g_SDKDll.GetModuleName().c_str())) { FreeLibrary(loadedPlugin); return false; diff --git a/r5dev/pluginsystem/pluginsystem.h b/r5dev/pluginsystem/pluginsystem.h index 38bb5f1b..42c131e8 100644 --- a/r5dev/pluginsystem/pluginsystem.h +++ b/r5dev/pluginsystem/pluginsystem.h @@ -81,7 +81,7 @@ public: PluginInstance_t(string svPluginName, string svPluginFullPath) : m_svPluginName(svPluginName), m_svPluginFullPath(svPluginFullPath), m_svDescription(std::string()), m_bIsLoaded(false) {}; // Might wanna make a status code system. - typedef bool(*OnLoad)(const char*); + typedef bool(*OnLoad)(const char*, const char*); typedef void(*OnUnload)(); CModule m_hModule;