#include <daemons.h> #include "socket.h" #include "/adm/net/inet.h" object pl; string who, message; string mudd; int count; void dest_me(); void create() { seteuid(getuid()); } /* create() */ /* Whats all this then? */ int do_tell(string str) { string name, host, mess; object ob; if (sscanf(str, "%s@%s %s", name, host, mess) == 3) { lower_case(name); if (name == "") name = "EVERYONE"; ob = clone_object(file_name(this_object())); ob->tell_away(name, host, mess, this_player()); return 1; } return 0; } /* do_finger() */ void tell_away(string name, string host, string mess, object me) { who = name; pl = me; mudd = host; message = mess; INETD->open_to_service("tell", INETD_TYPE, host); call_out("dest_me", 5*60*60); } /* finger_away() */ void read_callback(int fd, string mess) { string str, person, mud, who, message; if (sscanf(mess, "%s@%s tells %s: %s\n", person, mud, who, message) != 4) { sscanf(message, "%s\n", message); previous_object()->write_fd(fd, "Tell_Server@"+"tabor"+" tells "+ "whoever-the-heck-this-is: You have "+ "an incorrect message format.\n"); } else if (!find_player(who)) { previous_object() -> write_fd(fd, "Tell_Server@tabor tells " + person+": Either "+who+" isn't logged on "+ "or you are a right womble.\n"); } else { if (person == "TS") person = "Tell_Server"; tell_object(find_player(who), wrap(FIGURE_D->figure_width( find_player(who) ), capitalize(person) + "@" + all_caps(mud) + " tells you, '", message, "'")); } pl->tell_callback(2, mess); } /* read_callback() */ void connected(int fd) { if (pl->getenv("space")) tell_object(pl, "\n"); if ((int) pl->query_player_data("echospeak")) tell_object(pl, wrap(FIGURE_D->figure_width(pl), "You tell " + capitalize(who) + "@" + all_caps(mudd) + ", '", message, "'")); else tell_object(pl, "Tell Sent.\n"); previous_object()->write_fd(fd, pl->query_name()+"@"+"tabor"+ " tells "+who+": "+message+"\n"); } /* write_callback() */ void close_callback() { pl->tell_callback(0); dest_me(); } /* close_callback() */ void failed(string reason) { pl->tell_callback(1, reason); tell_object(pl, "We failed for "+reason+" reason.\n"); dest_me(); } /* failed() */ void dest_me() { destruct(this_object()); } /* dest_me() */