X-Git-Url: http://git.pk910.de/?p=NeonServV5.git;a=blobdiff_plain;f=src%2Fmodules%2FNeonServ.mod%2Fcmd_neonserv_nicklist.c;h=1287ad6c993ba8714738c64dc3b6b2d4b73e30d2;hp=d8fe67a0bc3c52a1a08db348a55bf92867f53666;hb=cdebdaa89c585c948a7abbfcda22fed6b029d9da;hpb=35b06c8fa1cd7e06fdf30782c389b3bd46dce3c7 diff --git a/src/modules/NeonServ.mod/cmd_neonserv_nicklist.c b/src/modules/NeonServ.mod/cmd_neonserv_nicklist.c index d8fe67a..1287ad6 100644 --- a/src/modules/NeonServ.mod/cmd_neonserv_nicklist.c +++ b/src/modules/NeonServ.mod/cmd_neonserv_nicklist.c @@ -122,12 +122,13 @@ static void neonserv_cmd_nicklist_async1(struct ClientSocket *client, struct Cli char *content[4]; int userlistlen, i, j; int db_enfops, db_enfvoice; - int caccess, synced_user; + int caccess, synced_user, accessbufpos; struct ChanUser *chanusers[chan->usercount]; struct ChanUser *chanuser; + struct ClientSocket *bot; int chanuser_count; char statebuf[5]; - char accessbuf[9]; + char accessbuf[50]; char viscountbuf[5]; int uaccess; @@ -199,20 +200,20 @@ static void neonserv_cmd_nicklist_async1(struct ClientSocket *client, struct Cli uaccess = db_enfvoice; } else { //fail... - sprintf(accessbuf, "\00307%d\003", uaccess); + accessbufpos = sprintf(accessbuf, "\00307%d\003", uaccess); break; } neonserv_cmd_nicklist_synchronize_user(chan, chanuser->user, uaccess); - sprintf(accessbuf, "\00309%d\003", uaccess); + accessbufpos = sprintf(accessbuf, "\00309%d\003", uaccess); synced_user = 1; } else { synced_user = 1; - sprintf(accessbuf, "\00307%d\003", uaccess); + accessbufpos = sprintf(accessbuf, "\00307%d\003", uaccess); } } else if((uaccess >= db_enfops && !(chanuser->flags & CHANUSERFLAG_OPPED)) || (uaccess >= db_enfvoice && !(chanuser->flags & CHANUSERFLAG_OPPED_OR_VOICED))) - sprintf(accessbuf, "\00303%d\003", uaccess); + accessbufpos = sprintf(accessbuf, "\00303%d\003", uaccess); else - sprintf(accessbuf, "%d", uaccess); + accessbufpos = sprintf(accessbuf, "%d", uaccess); break; } } @@ -229,21 +230,49 @@ static void neonserv_cmd_nicklist_async1(struct ClientSocket *client, struct Cli uaccess = db_enfvoice; } else { uaccess = 0; - sprintf(accessbuf, "\003040\003"); + accessbufpos = sprintf(accessbuf, "\003040\003"); } if(uaccess && (chanuser->user->flags & USERFLAG_ISAUTHED)) { neonserv_cmd_nicklist_synchronize_user(chan, chanuser->user, uaccess); - sprintf(accessbuf, "\00309%d\003", uaccess); + accessbufpos = sprintf(accessbuf, "\00309%d\003", uaccess); synced_user = 1; } else if(uaccess) { - sprintf(accessbuf, "\003040\003"); + accessbufpos = sprintf(accessbuf, "\003040\003"); } } else { synced_user = 1; - sprintf(accessbuf, "\003040\003"); + accessbufpos = sprintf(accessbuf, "\003040\003"); } } else if(!uaccess) - sprintf(accessbuf, "0"); + accessbufpos = sprintf(accessbuf, "0"); + j = 0; + if(isBot(chanuser->user)) { + //check if bot is secret + for(bot = getBots(SOCKET_FLAG_READY, NULL); bot; bot = getBots(SOCKET_FLAG_READY, bot)) { + if(bot->user == chanuser->user) + break; + } + if(bot && !(bot->flags & SOCKET_FLAG_SECRET_BOT)) { + if(j) + accessbufpos += sprintf(accessbuf+accessbufpos, ", "); + else { + accessbufpos += sprintf(accessbuf+accessbufpos, " ("); + j = 1; + } + accessbufpos += sprintf(accessbuf+accessbufpos, "%s", get_language_string(user, "NS_NICKLIST_ACCESS_BOT")); + } + } + if(chanuser->user->flags & USERFLAG_ISIRCOP) { + if(j) + accessbufpos += sprintf(accessbuf+accessbufpos, ", "); + else { + accessbufpos += sprintf(accessbuf+accessbufpos, " ("); + j = 1; + } + accessbufpos += sprintf(accessbuf+accessbufpos, "%s", get_language_string(user, "NS_NICKLIST_ACCESS_OPER")); + } + if(j) + accessbufpos += sprintf(accessbuf+accessbufpos, ")"); content[2] = accessbuf; if(flags & NEONSERV_CMD_NICKLIST_FLAG_VISCOUNT) { sprintf(viscountbuf, "%d", chanuser->visCount);