diff --git a/Modules.cpp b/Modules.cpp index 773d4830..beb5588c 100644 --- a/Modules.cpp +++ b/Modules.cpp @@ -22,6 +22,7 @@ for (unsigned int a = 0; a < size(); a++) { \ try { \ type* pMod = (type *) (*this)[a]; \ + pMod->SetClient(m_pClient); \ if (m_pUser) { \ pMod->SetUser(m_pUser); \ pMod->func; \ @@ -29,6 +30,7 @@ } else { \ pMod->func; \ } \ + pMod->SetClient(NULL); \ } catch (CModule::EModException e) { \ if (e == CModule::UNLOAD) { \ UnloadModule((*this)[a]->GetModName()); \ @@ -45,6 +47,7 @@ try { \ type* pMod = (type*) (*this)[a]; \ CModule::EModRet e = CModule::CONTINUE; \ + pMod->SetClient(m_pClient); \ if (m_pUser) { \ pMod->SetUser(m_pUser); \ e = pMod->func; \ @@ -52,6 +55,7 @@ } else { \ e = pMod->func; \ } \ + pMod->SetClient(NULL); \ if (e == CModule::HALTMODS) { \ break; \ } else if (e == CModule::HALTCORE) { \ @@ -541,6 +545,7 @@ void CGlobalModule::OnFailedLogin(const CString& sUsername, const CString& sRemo CModules::CModules() { m_pUser = NULL; + m_pClient = NULL; } CModules::~CModules() { @@ -555,12 +560,6 @@ void CModules::UnloadAll() { } } -void CModules::SetClient(CClient* pClient) { - for (unsigned int a = 0; a < size(); a++) { - (*this)[a]->SetClient(pClient); - } -} - bool CModules::OnBoot() { for (unsigned int a = 0; a < size(); a++) { if (!(*this)[a]->OnBoot()) { diff --git a/Modules.h b/Modules.h index 5bac94c7..06f590ed 100644 --- a/Modules.h +++ b/Modules.h @@ -359,7 +359,7 @@ public: virtual ~CModules(); void SetUser(CUser* pUser) { m_pUser = pUser; } - void SetClient(CClient* pClient); + void SetClient(CClient* pClient) { m_pClient = pClient; } void UnloadAll(); @@ -426,6 +426,7 @@ public: protected: CUser* m_pUser; + CClient* m_pClient; }; class CGlobalModule : public CModule {