hey..chris powell..drop me an email so that i can reply with your fixed olc.c..i accidently deleted your mail.. ObCircle: here's a new skill for thieves and the like..it allows them to eavesdrop on an adjacent room.. 1 - add a struct char_data *listeners to the room_data struct.. 2 - add a struct char_data *next_listener to the char_data struct.. 3 - add a sh_int listening_to to the char_data struct.. 4 - add in do_eavesdrop (prototyping whatever needs it): ACMD(do_eavesdrop) { int dir; one_argument(argument, buf); if (!*buf) { send_to_char("In which direction would you like to eavesdrop?\r\n", ch); return; } if ((dir = search_block(buf, dirs, FALSE)) < 0) { send_to_char("Which directions is that?\r\n", ch); return; } if (!skill_check(ch, SKILL_EAVESDROP)) { send_to_char("You try to eavesdrop on that room, but fail.\r\n", ch); return; } if (EXIT(ch, dir)) { if (IS_SET(EXIT(ch, dir)->exit_info, EX_CLOSED) && EXIT(ch, dir)->keyword) { sprintf(buf, "The %s is closed.\r\n", fname(EXIT(ch, dir)->keyword)); send_to_char(buf, ch); } else { ch->next_listener = world[EXIT(ch, dir)->to_room].listening; world[EXIT(ch, dir)->to_room].listening = ch; ch->listening_to = EXIT(ch, dir)->to_room; send_to_char(OK, ch); } } else send_to_char("There is not a room there...\r\n", ch); } 5 - change do_eavesdrop to use whatever skill checking method you like.. 6 - change send_to_room in comm.c to look like this: void send_to_room(char *messg, int room) { struct char_data *i; if (messg) { for (i = world[room].people; i; i = i->next_in_room) if (i->desc) SEND_TO_Q(messg, i->desc); for (i = world[room].listening; i; i = i->next_listener) if (i->desc) { /* the ------'s are used to differentiate eavesdropped stuff from the stuff that is happening in the same room as the char.. looks like: ------- john dropped a sword ------ */ sprintf(buf, "----------\r\n%s----------\r\n", messg); SEND_TO_Q(buf, i->desc); } } } 6 - add this command_interpreter in interpreter.c just below the removal of the HIDE bit.. if (ch->listening_to) { REMOVE_FROM_LIST(ch, world[ch->listening_to].listening, next_listener); ch->listening_to = NULL; } that should be all.. siv +------------------------------------------------------------+ | Ensure that you have read the CircleMUD Mailing List FAQ: | | http://democracy.queensu.ca/~fletcher/Circle/list-faq.html | +------------------------------------------------------------+
This archive was generated by hypermail 2b30 : 12/15/00 PST