yeik
Acquaintance
Offline
Posts: 16
|
 |
« on: June 05, 2007, 05:58:32 AM » |
|
/* who.c
Tacitus @ LPUniversity 06-FEB-07 Standard command
*/
/* Originally concieved on 08-APR-05; Rewritten 06-FEB-07 */
/* Last edited on Febuary 06th, 2007 by Tacitus@LPUniversity */ /* QA has never occured for this file */
#include <ansi.h> #define R "" #define Y "" #define MUDNAME "WHAT a WHAcky Mud"
string renderTag(string rank); object array sortRankIndex(object array ranks);
int main(string arg) { int cslen, clen, sdif, uon, don; string output, output2, mudname, tstring; string ostr;
if(arg && sscanf(arg, "@%s", mudname) == 1) { "/adm/daemons/chmodules/chdmod_i3.c"->send_packet( ({ "who-req", 5, mud_name(), this_player()->query_name(), mudname, 0 }) ); return 1; }
output = ""; output2 = ""; sdif=0; foreach(string rank in sortRankIndex(RANK_D->getRanks())) { mixed array gir= sort_array(RANK_D->getInteractives(rank), -1); foreach(object user in gir) { if(user->query_name()!="login") { tstring=user->query_title(); clen=strlen(tstring); tstring= "home/y/yeik/cstrip"->strip_colours(tstring); cslen=strlen(tstring); sdif=clen-cslen; if(rank=="user") uon++; if(uon==1) output2 = sprintf("%YELLOW%*%RESET%%35'='s%-43'='s%YELLOW%*%RESET%\n", "", "Players");
if(rank!="user") don++; if(don==1) output = sprintf("%YELLOW%*%RESET%%34'='s%-44'='s%YELLOW%*%RESET%\n", "", "Developers");
ostr = sprintf("%YELLOW%*%RESET% %s %-"+(50+sdif)+"s%RESET% %4s %s %5s %YELLOW%*%RESET% \n", renderTag(rank)+"|", capitalize(user->query_name())+" "+ user->query_title(), (user->query_env("away") ? " (A)" : (in_edit( user ) ? "(*)" : (in_input( user ) ? "(+)" : ""))), "|", (((query_idle( user ) / 60) / 60) >=1 ? query_idle( user ) /60/60/24 >=1 ? query_idle(user) /60/60/24/7 >=1 ?query_idle(user) /60/60/24/7 +"w" : query_idle( user ) /60/60/24 +"d" :query_idle( user ) / 60/ 60 +"h" : query_idle( user ) / 60 + "m")); if(rank=="user") output2 += ostr; else output+=ostr; } } }
write("\n"); clen=strlen(MUDNAME); cslen=strlen("/home/y/yeik/cstrip"->strip_colours(MUDNAME)); sdif= clen-cslen; /* write(Y+"*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*"+HIR+"W"+NOR+"o"+HIR+"W"+HIG+" Mud"+NOR+Y"-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*"+R+"\n"); */ write(sprintf("%YELLOW%%37'*-'s%YELLOW%%-"+(42+sdif)+"'-*'s*%RESET% \n", "", MUDNAME)); write(sprintf("%YELLOW%*%RESET%%-10s %s %-39s %16s %5s %YELLOW%*%RESET% \n" , " Rank", " | ", "Name", "|", "Idle")); /* write(Y+"*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-**-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*"+R+"\n"); */ write(output); write(output2); write(Y+"*"+R+"~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"+Y+"*"+R+" \n"); write(sprintf("%YELLOW%*%RESET% %25s %20s %20s %29s \n", "Total online: "+sizeof(users()), "Players : "+uon, "Developers: "+(sizeof(users())-uon), "*")); write(Y+"*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-**-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*"+R+" \n\n"); return 1; }
string renderTag(string rank) { string tag; string tmp;
tmp = RANK_D->queryRankProperty(rank, "short");
tag = "[ " + tmp + " ]"; tag = sprintf("%-11s", tag); tag = replace_string(tag, tmp, RANK_D->queryRankProperty(rank, "colour") + capitalize(tmp) + ""); return tag; }
object array sortRankIndex(object array ranks) { object array returnValue = ({}); int i = sizeof(ranks);
while(i--) returnValue += ({ ranks });
return returnValue; }
string help() { return(HIW + " SYNTAX: " + NOR + "who [@<mud>]\n\n" + "This command will display all the users who are currently logged\n" + "into " + mud_name() + ". It also lets you know if they are currently\n" + "editing, in input, and/or idle. You may also find out who is on a mud\n" + "on the I3 network by using the 'who @<mud>' syntax\n"); }
|