[CODE] Deleting a room

From: Andrew (object@alphalink.com.au)
Date: 01/05/99

I have written up a bit of code that is supposed to delete a room. It works
ok sometimes,
but other times it doesn't work at all. Sometimes it just does nothing, and
sometimes it
crashes the game. Here's the code - I know, it's awful...

BTW, num_of_rooms is an external integer which is the number of rooms at

void DeleteRoom( int room, struct char_data *ch)
        int i, y;

        temp = NULL;

        if (is_room(room) == FALSE) {
                sprintf(buf, "Room #%d doesn't exist.\r\n", room);
                send_to_char(buf, ch);


        CREATE(temp, struct room_data, num_of_rooms);

        for(i = 0, y = 0; i < num_of_rooms; i++, y++)
                if (world[i].number != room)
                        temp[y] = world[i];

        CREATE(world, struct room_data, num_of_rooms);

        for(i = 0; i < num_of_rooms; i++)
                world[i] = temp[i];

        sprintf(buf, "Room #%d deleted.\r\n", room);
        send_to_char(buf, ch);

int is_room( int room_num )
        int i, found = FALSE;
        for(i = 0; i < num_of_rooms; i++)
                if (world[i].number == room_num)
                        found = TRUE;

        return found;

Any help would be appreciated,


Andrew Ritchie,

     | 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