On Wed, 26 Sep 2001, Ramsey Stone wrote: > ACMD(do_saveall) > { > int zone = 0; > zone = atoi(arg); > oedit_save_to_disk(zone); > [... snip ...] I'm guessing (I don't really know) that your problem is that the xxx_save_to_disk() functions expect a zone real number, rather than the virtual number you've passed. Looking quickly at OasisOLC 2.0, all of these functions seem to just be calls to save_xxx() functions from genolc.c. Thus, I would recommend: ACMD(do_saveall) { char buf[MAX_STRING_LENGTH]; char arg[MAX_INPUT_LENGTH]; zone_rnum rzone; zone_vnum zone; argument = one_argument(argument, arg); /* No arguments: write all zones. */ if (!*arg) { for (rzone = 0; rzone <= top_of_zone_table; rzone++) { save_objects(rzone); save_mobiles(rzone); save_zone(rzone); save_rooms(rzone); save_shops(rzone); } sprintf(buf, "Saved %d zones.\r\n", (int) top_of_zone_table+1); send_to_char(buf, ch); return; } /* Got at least one argument: save each zone mentioned. */ while (*arg) { zone = (zone_vnum) atoi(arg); if ((rzone = real_zone(zone)) == NOWHERE) { sprintf(buf, "#%d: no such zone\r\n", (int) zone); send_to_char(buf, ch); continue; } count++; save_objects(rzone); save_mobiles(rzone); save_zone(rzone); save_rooms(rzone); save_shops(rzone); argument = one_argument(argument, arg); } sprintf(buf, "Saved %d zones.\r\n", count); send_to_char(buf, ch); } I've taken the liberty to modify how the command works, too. Just a few changes. With no arguments, it saves the entire world. With one or more, it saves each of the zones you pass to it. As with always--and, actually, more so, since I'm completely unfamiliar with OasisOLC and GenOLC--this is Mailer Code(tm) and you shouldn't expect too much from it. -dak -- +---------------------------------------------------------------+ | 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