/* Do not remove the headers from this file! see /USAGE for more info. */ /* ** who.c -- intermud who ** ** 95-May-15. Deathblade. Created. */ void send_to_mud(string type, string mudname, mixed * message); void send_to_user(string type, string mudname, string username, mixed * message); void return_error(string mudname, string username, string errcode, string errmsg); string canon_mudname(string mudname); nomask void do_who(string mudname) { send_to_mud("who-req", canon_mudname(mudname), ({ })); } protected nomask void rcv_who_req(string orig_mud, string orig_user, string targ_user, mixed * message) { mixed * who_data; who_data = map_array(users(), function (object user) { object body = user->query_body(); string visname = user->query_userid(); string title = 0; if ( body ) { if ( !body->is_visible() ) return 0; visname = body->query_name(); title = body->query_title(); } else if ( !(visname = user->query_userid()) ) return 0; else capitalize(visname); return ({ visname, query_idle(user), title }); } ) - ({ 0 }); send_to_user("who-reply", orig_mud, orig_user, ({ who_data })); } protected nomask void rcv_who_reply(string orig_mud, string orig_user, string targ_user, mixed * message) { object p; p = find_user(targ_user); if ( !p ) { return_error(orig_mud, orig_user, "unk-user", sprintf("Returned who-reply to unknown user '%s'", targ_user)); } else { string s; s = sprintf("[%s] %d users connected\n%s\n", orig_mud, sizeof(message[0]), repeat_string("-", 78)); s += implode(map_array(message[0], (: sprintf("%-15s%-10s%s", $1[0], convert_time(to_int($1[1]), 3), $1[2]) :)), "\n"); s += "\n" + repeat_string("-", 78) + "\n"; tell(p, s); } }