X-Git-Url: http://git.pk910.de/?a=blobdiff_plain;f=src%2Fevent_neonserv_mode.c;h=505d70d1abe45b356fd90dcce8a2839f68ba6e7a;hb=2d9db1adb1946aba00b203f40eff7d5db8163f01;hp=eeeff8c5258556c8aa79558c7e96795dff4781a2;hpb=6271d34960fbf9d0261deb9deb202c59dc49ca8b;p=NeonServV5.git diff --git a/src/event_neonserv_mode.c b/src/event_neonserv_mode.c index eeeff8c..505d70d 100644 --- a/src/event_neonserv_mode.c +++ b/src/event_neonserv_mode.c @@ -1,4 +1,4 @@ -/* event_neonserv_mode.c - NeonServ v5.0 +/* event_neonserv_mode.c - NeonServ v5.1 * Copyright (C) 2011 Philipp Kreil (pk910) * * This program is free software: you can redistribute it and/or modify @@ -32,7 +32,7 @@ struct neonserv_event_mode_cache { static void neonserv_event_mode(struct UserNode *user, struct ChanNode *chan, char *modes, char **argv, int argc) { struct ClientSocket *client = getBotForChannel(chan); if(!client) return; //we can't "see" this event - if(user->flags & (USERFLAG_ISBOT | USERFLAG_ISIRCOP)) return; + if(isNetworkService(user)) return; loadChannelSettings(chan); if(!(chan->flags & CHANFLAG_CHAN_REGISTERED)) return; struct neonserv_event_mode_cache *cache = malloc(sizeof(*cache)); @@ -115,7 +115,8 @@ static void neonserv_event_mode_async1(struct ClientSocket *client, struct UserN break; } carg = argv[arg++]; - if(modes[i] == 'o') { + cuser = searchUserByNick(carg); + if(modes[i] == 'o' && !(add && isBot(cuser))) { if(uaccess < db_canop) { reply(textclient, user, "NS_MODE_ENFOPS", chan->name); db_canop = -1; @@ -125,7 +126,7 @@ static void neonserv_event_mode_async1(struct ClientSocket *client, struct UserN modeBufferSet(modeBuf, !add, modes[i], carg); break; } - } else { + } else if(modes[i] == 'v') { if(uaccess < db_canvoice) { reply(textclient, user, "NS_MODE_ENFVOICE", chan->name); db_canvoice = -1; @@ -136,7 +137,6 @@ static void neonserv_event_mode_async1(struct ClientSocket *client, struct UserN break; } } - cuser = searchUserByNick(carg); if(!cuser) { break; //internal Bot error - this should never happen }