/* /daemon/services/tell.c
* from the Nightmare IV LPC Library
* handles the IMP tell service
* created by Descartes of Borg 950507
* Modified for Discworld by Turrican 1-11-95
*/
#include "/net/intermud3/intermud_cfg.h"
#ifdef SERVICE_TELL
void eventReceiveTell(mixed *packet) {
object ob;
string who;
if( file_name(previous_object()) != INTERMUD_D ) return;
who = lower_case(packet[5]);
if( !(ob = find_player(who)) || (int)ob->query_invis()
#ifndef PLAYER_TELL
|| !(int)ob->query_creator()
#endif
) {
INTERMUD_D->eventWrite(({ "error", 5, mud_name(), 0, packet[2],
packet[3], "unk-user",
capitalize(packet[5]) + " is nowhere to "
"be found on " + mud_name() + ".",
packet }));
return;
}
else if( query_idle(ob) > 600 )
INTERMUD_D->eventWrite(({ "error", 5, mud_name(), 0, packet[2],
packet[3], "unk-user",
capitalize(packet[5]) + " on " +
mud_name() + " is very idle "
"and may take some time to respond.",
packet }));
ob->event_person_tell(this_object(), packet[6]+"@"+packet[2]+
" tells you: ", packet[7], "common");
/*ob->SetProperty("reply", packet[6] + "@" + packet[2]); */
}
int eventSendTell(string who, string where, string msg) {
string pl, plc;
string mudname;
pl = (string)this_player(1)->query_name();
plc = (string)this_player(1)->query_cap_name();
mudname = (string)INTERMUD_D->GetMudName(where);
if(!mudname)
mudname = (string)INTERMUD_D->GetMudName(implode(explode(where, "_"),
" "));
if(!mudname) {
if(this_player())
tell_object(this_player(),"That mud is unknown to us.\n");
return 0;
}
INTERMUD_D->eventWrite(({ "tell", 5, mud_name(), pl, mudname,
lower_case(who), plc, msg }));
this_player(1)->my_mess("You tell "+capitalize(who)+"@"+mudname+": ",
msg);
return 1;
}
#endif