After several days of headache, and tons of coffee (soemthing like that
:), I decided to see if someone on this list could solve my lousy coding
of the mentioned SCAN command.
Basicaly I just added it as a ACMD, so that all players could use it,
just to avoid confusion.
Now I looked at the do_exit procedure, and a little at the room-file
structure, and to me it seems, that this piece of code should work fine...
[Code begins]
ACMD(do_scan)
{
struct char_data *i, *list;
struct room_data *world;
int door;
if(IS_AFFECTED(ch, AFF_BLIND))
{
sprintf(buf, "You're blinded and can't see a damn thing!");
act(buf, FALSE, ch, 0, 0, TO_CHAR);
return;
}
*buf = '\0';
for (door = 0; door < NUM_OF_DIRS; door++)
{
if (EXIT(ch, door))
{
sprintf("%sEXIT(ch, door) = %d\r\n", buf, door);
if(EXIT(ch, door)->to_room != NOWHERE)
{
if(!IS_SET(EXIT(ch, door)->exit_info, EX_CLOSED))
sprintf(buf, "%sGennemloeb, door open = %d\r\n",buf, door);
if(IS_SET(EXIT(ch, door)->exit_info, EX_CLOSED))
sprintf(buf, "%sGennemloeb, door closed = %d\r\n",buf, door);
}
if(list = (world[EXIT(ch, door)->to_room].people))
{
sprintf(buf, "%s Room is empty.\r\n", buf);
}
else
{
sprintf(buf, "%s Room has inhabitents!\r\n.", buf);
for (i = list; i; i = i->next_in_room)
{
if(ch != i)
sprintf(buf, "%s %s\r\n", buf, i->player.name);
}
}
}
}
send_to_char("Scanned exits:\r\n", ch);
if (*buf)
send_to_char(buf, ch);
else
send_to_char(" None.\r\n", ch);
}
[Code Ends!]
Well, as a starter I NEVER get a TRUE on the:
if(EXIT(ch, door)->to_room != NOWHERE)
I don't know why...
Anyways, as I had it biuld a little different, with the same structure
withing that if statement, I seg-faulted all the time...
So, in general I guess it's lousy code... BUT, I can't see why it's not
working...
Anyone got some bright ideas, as to whats wrong in the code ?
Regards
Con.
This archive was generated by hypermail 2b30 : 12/07/00 PST