X-Git-Url: http://git.pk910.de/?a=blobdiff_plain;f=src%2Fcmd_neonserv_listrank.c;h=316e3c66ffbe1cc37f355bc23b9d26be4fc3e9e5;hb=44436a96352a38631237978c9fd431cef3d85cfb;hp=b87f19d7e53f0a2b50e1dd11f07f81ec76439a66;hpb=95fed4deda0319bee515e44ceec0c77061a2c04e;p=NeonServV5.git diff --git a/src/cmd_neonserv_listrank.c b/src/cmd_neonserv_listrank.c index b87f19d..316e3c6 100644 --- a/src/cmd_neonserv_listrank.c +++ b/src/cmd_neonserv_listrank.c @@ -1,4 +1,4 @@ -/* cmd_neonserv_listrank.c - NeonServ v5.0 +/* cmd_neonserv_listrank.c - NeonServ v5.3 * Copyright (C) 2011 Philipp Kreil (pk910) * * This program is free software: you can redistribute it and/or modify @@ -23,10 +23,10 @@ CMD_BIND(neonserv_cmd_listrank) { MYSQL_RES *res, *res2; - MYSQL_ROW row; + MYSQL_ROW row, row2; struct Table *table; int ranks = 0; - printf_mysql_query("SELECT `rank_id`, `rank_name` FROM `support_ranks`"); + printf_mysql_query("SELECT `rank_id`, `rank_name` FROM `support_ranks` ORDER BY `rank_order` ASC"); res = mysql_use(); table = table_init(3, mysql_num_rows(res) + 1, 0); char *content[3]; @@ -34,14 +34,23 @@ CMD_BIND(neonserv_cmd_listrank) { content[1] = get_language_string(user, "NS_LISTRANK_NAME"); content[2] = get_language_string(user, "NS_LISTRANK_ASSIGNED"); table_add(table, content); + char usersBuf[MAXLEN]; + int usersPos, userCount; + char assignedBuf[MAXLEN]; while ((row = mysql_fetch_row(res)) != NULL) { ranks++; content[0] = row[0]; content[1] = row[1]; - printf_mysql_query("SELECT COUNT(*) FROM `users` WHERE `user_rank` = '%s'", row[0]); + printf_mysql_query("SELECT `user_user`, `user_god` FROM `users` WHERE `user_rank` = '%s'", row[0]); res2 = mysql_use(); - row = mysql_fetch_row(res2); - content[2] = row[0]; + usersPos = 0; + userCount = 0; + while((row2 = mysql_fetch_row(res2)) != NULL) { + usersPos += sprintf(usersBuf+usersPos, (usersPos ? ", %s%s" : "%s%s"), (strcmp(row2[1], "0") ? "@" : ""), row2[0]); + userCount++; + } + sprintf(assignedBuf, (userCount ? "%d (%s)" : "%d"), userCount, usersBuf); + content[2] = assignedBuf; table_add(table, content); } //send the table @@ -53,8 +62,16 @@ CMD_BIND(neonserv_cmd_listrank) { if(!ranks) reply(getTextBot(), user, "NS_TABLE_NONE"); table_free(table); - printf_mysql_query("SELECT COUNT(*) FROM `users` WHERE `user_rank` = '0' AND `user_access` > 0"); + printf_mysql_query("SELECT `user_user` FROM `users` WHERE `user_rank` = '0' AND `user_access` > 0"); res2 = mysql_use(); - row = mysql_fetch_row(res2); - reply(getTextBot(), user, "NS_LISTRANK_UNRANKED", atoi(row[0])); + usersPos = 0; + userCount = 0; + while((row2 = mysql_fetch_row(res2)) != NULL) { + usersPos += sprintf(usersBuf+usersPos, (usersPos ? ", %s%s" : "%s%s"), (strcmp(row2[1], "0") ? "@" : ""), row2[0]); + userCount++; + } + reply(getTextBot(), user, "NS_LISTRANK_UNRANKED", userCount); + if(userCount) { + reply(getTextBot(), user, " %s", usersBuf); + } }