X-Git-Url: https://git.netwichtig.de/gitweb/?a=blobdiff_plain;f=src%2Fmodules%2Fm_deaf.cpp;h=20a2e0f3d64d9b9c4ec4b400dd1c6464d2bf9fb3;hb=cd7657bddc7a6dc2e7326077d173a874bf71f6bd;hp=819ba4dcef1be24fdcef82f8e9388a46b7bd77f4;hpb=8a31c029ce8f8b4cc10ba7b9835d981cea62c8fa;p=user%2Fhenk%2Fcode%2Finspircd.git diff --git a/src/modules/m_deaf.cpp b/src/modules/m_deaf.cpp index 819ba4dce..20a2e0f3d 100644 --- a/src/modules/m_deaf.cpp +++ b/src/modules/m_deaf.cpp @@ -2,24 +2,19 @@ * | Inspire Internet Relay Chat Daemon | * +------------------------------------+ * - * InspIRCd is copyright (C) 2002-2006 ChatSpike-Dev. - * E-mail: - * - * - * - * Written by Craig Edwards, Craig McLure, and others. + * InspIRCd: (C) 2002-2007 InspIRCd Development Team + * See: http://www.inspircd.org/wiki/index.php/Credits + * * This program is free but copyrighted software; see * the file COPYING for details. * * --------------------------------------------------- */ -using namespace std; - +#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) */ @@ -36,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; } @@ -57,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) @@ -99,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; } } } @@ -111,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) @@ -155,7 +152,7 @@ class ModuleDeafFactory : public ModuleFactory }; -extern "C" void * init_module( void ) +extern "C" DllExport void * init_module( void ) { return new ModuleDeafFactory; }