On Sun, 21 Mar 1999, Anthony Benjamin a.k.a. Phreak404 wrote: >ACMD(do_scan){ > >struct char_data *i; > int is_in, dir, dis, maxdis, found = 0; > > > if (IS_AFFECTED(ch, AFF_BLIND)) { For conformity it should be AFF_FLAGGED but otherwise they're the same. > act("You can't see anything, you're blind!", TRUE, ch, 0, 0, TO_CHAR); send_to_char() for simple strings. > return; > } > is_in = ch->in_room; > > for (dir = 0; dir < NUM_OF_DIRS; dir++) { > char_from_room(ch); > char_to_room(ch, world[is_in].dir_option[dir]->to_room); Urk! #define W_EXIT(room, num) (world[(room)].dir_option[(num)]) #define R_EXIT(room, num) ((room)->dir_option[(num)]) for (dir = 0; dir < NUM_OF_DIRS; dir++) { if (W_EXIT(EXIT(ch, dir)->to_room, dir) { ... etc ... } } > if(EXIT(ch, dir)){ > for (i = world[ch->in_room].people; i; i = i->next_in_room) { > if (!(ch == i) && CAN_SEE(ch, i)) { > switch(dir){ > case 0: > sprintf(buf, "Looking north:\r\n%s is here.\r\n", GET_NAME(i)); > send_to_char(buf,ch); > found++; > break; Urk! if (ch != i && CAN_SEE(ch, i)) { sprintf(buf, "Looking %s:\r\n%s is here.\r\n, dirs[dir], GET_NAME(i)); send_to_char(buf, ch); found++; } [..extra stuff snipped..] > if (found == 0) > act("Nobody anywhere near you.", TRUE, ch, 0, 0, TO_CHAR); > IN_ROOM(ch) = is_in; >} Again, send_to_char(), and don't do the IN_ROOM() stuff if you take my W_EXIT suggestion. Don't see a lockup off-hand. -- George Greer | Shirak's CircleMUD for Windows help greerga@circlemud.org | http://www.connect.ab.ca/~rbmstrk/ +------------------------------------------------------------+ | Ensure that you have read the CircleMUD Mailing List FAQ: | | http://qsilver.queensu.ca/~fletchra/Circle/list-faq.html | +------------------------------------------------------------+
This archive was generated by hypermail 2b30 : 12/15/00 PST