/* -*- LPC -*- */
inherit COMMAND_BASE;
#include <login_handler.h>
int playercompare(object p1, object p2);
int cmd(string guild_name) {
int i;
int countcre;
int countplay;
int counttest;
int countloginq;
int countlogins;
string obtyp;
string tmp;
object *arr;
string nam;
string cres;
string plays;
string testers;
string *login_q;
string logins;
countcre = 0;
countplay = 0;
counttest = 0;
cres = "";
plays = "";
testers = "",
logins = "";
arr = sort_array(users(), (: playercompare :));
arr = filter(arr, (: !$1->query_invis() ||
$1->query_visible(this_player()) :) );
if (guild_name) {
// Do weird filtering!
arr = "/cmds/player/who"->filter_users(arr, guild_name);
if (!sizeof(arr)) {
add_failed_mess("Unable to find any members of " +
guild_name + ".\n");
return 0;
}
}
for(i=0;i<sizeof(arr);i++) {
nam = arr[i]->query_cap_name();
switch (arr[i]->query_invis()) {
case 0:
break;
case 1:
nam = "[" + nam + "]";
break;
case 2:
nam = "[{" + nam + "}]";
break;
case 3:
nam = "[<" + nam + ">]";
break;
default:
nam = "?" + nam + "?";
break;
}
obtyp = arr[i]->query_object_type();
switch(obtyp) {
case "X":
break;
case " ":
break;
case "C":
nam += "(%^CYAN%^C%^RESET%^)";
if ( DOMAIN_H->query_member("liaison",(string)arr[i]->query_name())) {
nam += "(%^YELLOW%^l%^RESET%^)";
}
break;
case "S":
nam += "(%^BOLD%^%^CYAN%^S%^RESET%^)";
if ( DOMAIN_H->query_member("liaison",(string)arr[i]->query_name())) {
nam += "(%^YELLOW%^l%^RESET%^)";
}
break;
case "A":
nam += "(%^BOLD%^%^RED%^A%^RESET%^)";
if ( DOMAIN_H->query_member("liaison",(string)arr[i]->query_name())) {
nam += "(%^YELLOW%^l%^RESET%^)";
}
break;
case "L":
nam += "(%^RED%^L%^RESET%^)";
if ( DOMAIN_H->query_member("liaison",(string)arr[i]->query_name())) {
nam += "(%^YELLOW%^l%^RESET%^)";
}
break;
default:
break;
}
if (creatorp(arr[i])) {
countcre++;
cres = cres + " " + nam;
} else if (obtyp == "p") {
counttest++;
testers = testers + " " + nam;
} else if(arr[i]->query_login_ob()) {
countlogins++;
logins = logins + " " + nam;
} else {
countplay++;
plays = plays + " " + nam;
}
}
login_q = map(LOGIN_HANDLER->query_login_queue(),
(: $1->query_cap_name() :));
login_q = filter(login_q, (: $1 :));
login_q = sort_array(login_q, 1);
countloginq = sizeof(login_q);
write("%^BOLD%^" + countcre + " Creators:%^RESET%^" + cres + "\n");
if (guild_name != "creator" && guild_name != "creators") {
switch (counttest) {
case 0:
break;
case 1:
write("%^BOLD%^" + counttest + " Playtester:%^RESET%^" + testers + "\n");
break;
default:
write("%^BOLD%^" + counttest + " Playtesters:%^RESET%^" + testers + "\n");
break;
}
write("%^BOLD%^" + countplay + " Players:%^RESET%^" + plays + "\n");
if (countlogins < countloginq) {
countlogins = countloginq;
}
if (countlogins-countloginq) {
logins = replace(logins, ({ "[", "", "]", ""}));
if(countloginq) {
foreach(tmp in login_q) {
logins = replace(logins, tmp+" ", "");
}
}
write("%^BOLD%^" + (countlogins - countloginq) +
" Logging in:%^RESET%^" + logins + "\n");
}
if(countloginq) {
write("%^BOLD%^" + countloginq + " Queued:%^RESET%^ " +
implode(login_q, " ") + "\n");
}
} else {
countlogins = 0;
counttest = 0;
countplay = 0;
}
write("%^BOLD%^" + (countcre + counttest + countplay + countlogins) +
" Total%^RESET%^\n");
return 1;
} /* cmd() */
int playercompare(object p1, object p2) {
return strcmp(p1->query_name(), p2->query_name());
} /* playercompare() */
mixed *query_patterns() {
return ({ "", (: cmd(0) :),
"<string'guild name'>", (: cmd($4[0]) :) });
} /* query_patterns() */