X-Git-Url: https://git.netwichtig.de/gitweb/?a=blobdiff_plain;f=src%2Fmodules%2Fm_deaf.cpp;h=20a2e0f3d64d9b9c4ec4b400dd1c6464d2bf9fb3;hb=cd7657bddc7a6dc2e7326077d173a874bf71f6bd;hp=9479b6b1c5984880427bb57d106ad758ec3b182d;hpb=3a554ef1e9be9dbcf3de3301a4a6c2938d643bea;p=user%2Fhenk%2Fcode%2Finspircd.git diff --git a/src/modules/m_deaf.cpp b/src/modules/m_deaf.cpp index 9479b6b1c..20a2e0f3d 100644 --- a/src/modules/m_deaf.cpp +++ b/src/modules/m_deaf.cpp @@ -11,10 +11,10 @@ * --------------------------------------------------- */ +#include "inspircd.h" #include "users.h" #include "channels.h" #include "modules.h" -#include "inspircd.h" /* $ModDesc: Provides support for ircu style usermode +d (deaf to channel messages and channel notices) */ @@ -31,6 +31,7 @@ class User_d : public ModeHandler { if (!dest->IsModeSet('d')) { + dest->WriteServ("NOTICE %s :*** You have enabled usermode +d, deaf mode. This mode means you WILL NOT receive any messages from any channels you are in. If you did NOT mean to do this, use /mode %s -d.", dest->nick, dest->nick); dest->SetMode('d',true); return MODEACTION_ALLOW; } @@ -52,10 +53,11 @@ class ModuleDeaf : public Module User_d* m1; public: ModuleDeaf(InspIRCd* Me) - : Module::Module(Me) + : Module(Me) { m1 = new User_d(ServerInstance); - ServerInstance->AddMode(m1, 'd'); + if (!ServerInstance->AddMode(m1, 'd')) + throw ModuleException("Could not add new modes!"); } void Implements(char* List) @@ -94,11 +96,11 @@ class ModuleDeaf : public Module for (CUList::iterator i = ulist->begin(); i != ulist->end(); i++) { - if (IS_LOCAL(i->second)) + if (IS_LOCAL(i->first)) { - if (i->second->IsModeSet('d')) + if (i->first->IsModeSet('d')) { - exempt_list[i->second] = i->second; + exempt_list[i->first] = i->first->nick; } } } @@ -106,7 +108,7 @@ class ModuleDeaf : public Module virtual int PreText(userrec* user,void* dest,int target_type, std::string &text, char status, CUList &exempt_list) { - if (target_type == TYPE_CHANNEL) + if ((target_type == TYPE_CHANNEL) & (IS_LOCAL(user))) { chanrec* chan = (chanrec*)dest; if (chan) @@ -150,7 +152,7 @@ class ModuleDeafFactory : public ModuleFactory }; -extern "C" void * init_module( void ) +extern "C" DllExport void * init_module( void ) { return new ModuleDeafFactory; }