// New mudlist command for I3 system // Added some enhancements, Avatar of Eodon, 09/19/95 #include <net/i3.h> inherit DAEMON; #define SYNTAX "Syntax: mudlist [-a] [mudname]\n" string *format_info(string name,mixed vls,string option) { string flags=""; mapping services=vls[10]; flags += (services["tell"]) ? "* ":" "; flags += (services["who"]) ? "* ":" "; flags += (services["finger"]) ? "* ":" "; flags += (services["locate"]) ? "* ":" "; flags += (services["channel"]) ? "* ":" "; flags += (services["news"]) ? "* ":" "; flags += (services["mail"]) ? "* ":" "; return ((vls[0]==-1) || (option=="-a")) ? ({sprintf("%-15s %-17s %-5d %-15s %s", name,vls[1],vls[2], vls[5][0..14], flags)}): ({}); } int cmd_mudlist(string args) { string *mud,flags; mixed *vls; int i,j; mapping list,newlist; string *result=({}); string *sorted=({}); list = I3_DAEMON->query_mudlist(); if (!sizeof(list)) { message("error","No muds on I3 Network!\n", this_player() ); return 1; } mud = keys(list); vls = values(list); result = ({"There are currently "+sizeof(mud)+" muds on the I3 Network!\n", sprintf("%-15s %-17s %-5s %-15s %s","Name","IP","Port", "MudLib","T W F L C N M L"), sprintf("%-15s %-17s %-5s %-15s %s","----","--","----", "------","- - - - - - - -")}); if (args && args!="") { string option="",name=args; if (sscanf(args,"-%s %s",option,name)==2 && option!="-a") { write(SYNTAX); return 1; } else if (args=="-a") { option = "-a"; name = ""; } if (name!="" && (j=member_array(name,mud))==-1) { write("Sorry, the mud "+args+" is not in the list right now. Try again "+ "later.\n"); return 1; } sorted += format_info(mud[j][0..14],vls[j],option); } else for (i=0; i<sizeof(mud); i++) sorted += format_info(mud[i][0..14],vls[i],args); result += sort_array(sorted,"compare_names",this_object()); this_player()->more(result); return 1; } int compare_names(string a,string b) { return strcmp(a,b); } string help() { write(SYNTAX+"\n"+ "This command gives a full list of all muds and their addresses that "+ "are connected to the Intermud 3 network. "+ "For more info see: http://www.imaginary.com/~beek/intermud.\n"); }