Banzai This is what I noticed... olc_add_to_save_list() is always called like this: (this is stripped straight from the patch which is located on George's page) + olc_add_to_save_list(zone_table[OLC_ZNUM(d)].number, OLC_SAVE_OBJ); Ok, here it seems, that zone VNUM's are added to the save list... But then in oedit_save_to_disk() these are first few lines: + sprintf(buf, "%s/%d.new", OBJ_PREFIX, zone_table[zone_num].number); + if (!(fp = fopen(buf, "w+"))) { + mudlog("SYSERR: OLC: Cannot open objects file!", BRF, LVL_BUILDER, TRUE); + return; + } I've noticed that xxx_save_to_disk() accepts one parameter zone_num in this case which would be zone number that woill be saved... So far so good... I also noticed, that this zone_num parameter has to be zone's real number,, since it gets resolved to the vnum in that sprintf()... ok, no problem here.. Here is the problem... comm.c search for this: + switch (entry->type) { + case OLC_SAVE_ROOM: redit_save_to_disk(entry->zone); break; + case OLC_SAVE_OBJ: oedit_save_to_disk(entry->zone); break; + case OLC_SAVE_MOB: medit_save_to_disk(entry->zone); break; + case OLC_SAVE_ZONE: zedit_save_to_disk(entry->zone); break; this is where that shutdown now was implemented and stuff... Heck, if we added changes to the list in VNUM's and every xxx_save_to_disk tries to convert them again into vnums, foobar will happen... Am I right here? It seems weird to me, that nobody noticed this before... *scratch* David! +------------------------------------------------------------+ | 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/08/00 PST