Hope someone can give me a hand with this. When I goto dig a room, it creates a new room if one does not exist. The room digs correctly, but I get the following syserror and I'm not sure what exactly needs to be fixed. Sep 23 01:59:52 :: GenOLC: add_room: Added room 1292 at index #14. Sep 23 01:59:52 :: SYSERR: add_to_save_list: Invalid zone number passed. (25956 => -1, 0-3) Sep 23 01:59:52 :: SYSERR: GenOLC: save_rooms: Invalid zone number 12 passed! (0-3) Sep 23 01:59:52 :: OLC: Matt dug an exit northwest from room 1291 to room 1292 Heres the dig command I use incase it helps: ACMD(do_dig) { /* Only works if you have Oasis OLC */ extern int add_to_save_list(zone_vnum zone, int type); char buf3[MAX_INPUT_LENGTH]; int iroom = 0, rroom = 0; int dir = 0; int i; struct room_data * temp_room; /* struct room_data *room; */ any_one_arg(any_one_arg(argument, buf2), buf3); /* buf2 is the direction, buf3 is the room */ iroom = atoi(buf3); rroom = real_room(iroom); if (!*buf3) { send_to_char("Format: dig <dir> <room number>\r\n", ch); return; } if (rroom <= 0) { for(i = 0; i < top_of_zone_table; i++) if(zone_table[i].number == (iroom/100)) break; if(i == top_of_zone_table) { send_to_char("The zone does not exist.\r\n", ch); return; } CREATE(temp_room, struct room_data, 1); temp_room->name = str_dup("An unfinished room"); temp_room->description = str_dup("You are in an unfinished room.\r\n"); temp_room->number = iroom; temp_room->zone = iroom/100; rroom = add_room(temp_room); free(temp_room->name); free(temp_room->description); free(temp_room); } /* * Everyone but IMPLs can only edit zones they have been assigned. */ if ((GET_LEVEL(ch) < LVL_IMPL) && (world[rroom].zone != GET_OLC_ZONE(ch) || world[IN_ROOM(ch)].zone != GET_OLC_ZONE(ch))) { send_to_char("You do not have permission to edit this zone.\r\n", ch); return; } /* Main stuff */ if ((dir = search_block(buf2, dirs, FALSE)) == -1) if ((dir = search_block(buf2, abbr_dirs, FALSE)) == -1) { sprintf(buf, "Invalid direction %s.", buf2); send_to_char(buf, ch); return; } if (!world[rroom].dir_option[rev_dir[dir]]) /* If statement to patch up apparent memory leak */ CREATE(world[rroom].dir_option[rev_dir[dir]], struct room_direction_data,1); world[rroom].dir_option[rev_dir[dir]]->general_description = NULL; world[rroom].dir_option[rev_dir[dir]]->keyword = NULL; world[rroom].dir_option[rev_dir[dir]]->to_room = ch->in_room; if (!world[ch->in_room].dir_option[dir]) /* If statement to patch up apparent memory leak */ CREATE(world[ch->in_room].dir_option[dir], struct room_direction_data,1); world[ch->in_room].dir_option[dir]->general_description = NULL; world[ch->in_room].dir_option[dir]->keyword = NULL; world[ch->in_room].dir_option[dir]->to_room = rroom; /* Only works if you have Oasis OLC */ add_to_save_list((iroom/100), SL_WLD); redit_save_to_disk(iroom/100); sprintf(buf, "You make an exit %s to room %d.\r\n", dirs[dir], iroom); send_to_char(buf, ch); sprintf(buf, "OLC: %s dug an exit %s from room %d to room %d", GET_NAME(ch), dirs[dir], world[IN_ROOM(ch)].number, iroom); mudlog(buf, CMP, LVL_IMMORT, TRUE); } -- +---------------------------------------------------------------+ | FAQ: http://qsilver.queensu.ca/~fletchra/Circle/list-faq.html | | Archives: http://post.queensu.ca/listserv/wwwarch/circle.html | +---------------------------------------------------------------+
This archive was generated by hypermail 2b30 : 12/06/01 PST