inherit COMMAND_BASE; #include <login_handler.h> int cmd() { int players, logins, login_q, first, creators, total; string output, *str, *logins_n; object pl; str = ({ }); foreach(pl in users()) { if (pl->query_login_ob()) logins++; else { str += ({ pl->query_cap_name() }); if (creatorp(pl)) creators++; else players++; } } logins_n = map(LOGIN_HANDLER->query_login_queue(), (: $1->query_cap_name() :)); logins_n = filter(logins_n, (: $1 :)); logins_n = sort_array(logins_n, 1); login_q = sizeof(logins_n); if (login_q > 0) { first = 0; if (login_q > 1) write(sprintf(login_q+" currently queued: %-=*s\n", this_player()->query_cols()-17, implode(logins_n[0..<2], ", ")+" and "+ logins_n[<1])); else write(sprintf("Currently Queued: %-=*s\n", this_player()->query_cols()-19, logins_n[0])); } output = "There "; first = 1; if (creators > 0) { if (first) if (creators == 1) output += "is "; else output += "are "; if (creators == 1) output += "one creator"; else output += creators +" creators"; first = 0; if (logins - login_q > 0) output += ", "; else if ( !players ) output += " logged on.\n"; else output += " and "; } if (logins - login_q > 0) { if (first) if (logins - login_q == 1) output += "is "; else output += "are "; if (logins - login_q == 1) output += "one person logging in"; else output += ( logins - login_q ) +" people logging in"; first = 0; if ( !players ) output += ".\n"; else output += " and "; } if ( players ) { if (first) if (players == 1) output += "is "; else output += "are "; if (players == 1) output += "one player "; else output += players +" players "; } total = sizeof(users()); output += "A total of "+ sizeof(users()) + " people logged on.\n"; write( output ); str = filter(str, (: $1 :)); str = sort_array(str, 1); if (sizeof(str) > 1) write(sprintf("Currently logged on: %-=*s\n", this_player()->query_cols()-24, implode(str[0..<2], ", ")+" and "+ str[<1])); else write("Currently logged on: "+str[0]+".\n"); return 1; } /* cmd() */ mixed *query_patterns() { return ({ "", (: cmd() :) }); } /* query_patterns() */