/* /daemon/services/who.c
* from the Dead Souls LPC Library
* handles the Intermud 3 who service
* created by Descartes of Borg 950623
*/
#define SERVICE_WHO
#include <daemons.h>
#include <rooms.h>
void eventReceiveWhoReply(mixed *packet) {
string list, *who;
object ob;
if( file_name(previous_object()) != INTERMUD_D ) return;
if( !packet[5] || !(ob = find_player(convert_name(packet[5]))) ) return;
list = "%^MAGENTA%^Remote who information from " + packet[2] + ":%^RESET%^\n";
foreach(who in packet[6])
list += who[0] + " (" + who[1] + " idle): " + who[2] +"\n";
ob->eventPrint(list);
}
void eventReceiveWhoRequest(mixed *packet) {
mixed *msg;
string ret = "";
if( file_name(previous_object()) != INTERMUD_D ) return;
msg = map(filter(users(), (: (environment($1) && !((int)$1->GetInvis())) :)),
(: ({ (string)$1->GetCapName(), query_idle($1),
(string)$1->GetShort() }) :));
INTERMUD_D->eventWrite(({ "who-reply", 5, mud_name(), 0, packet[2],
packet[3], msg }));
foreach(string *entry in msg){
ret += entry[0]+", ";
}
//ret = truncate(ret,2);
}
void eventSendWhoRequest(string mud) {
string who;
who = (string)this_player(1)->GetKeyName();
INTERMUD_D->eventWrite(({ "who-req", 5, mud_name(), who, mud, 0 }));
}