Re: [code] Oedit.c

From: Christoffer Andersson (mb@BAMZE.HULE.HARRYDA.SE)
Date: 11/19/97


On Tue, 18 Nov 1997, Drago's wrote:

> I have had a recent discovery of not being able to save objects after a reboot.
> I use OasisOLCv1.5 and have had a real pain in the ass time with this.  I
> know thatyou have to save internally and then oedit save ##, but upon
> rebooting, those objects just aren't there.  I don't want to send the my
> entire oedit.c file to everyone, so I am going to send the
> oedit_save_to_disk() with this (as I am guessing the problem is here).
>
> void oedit_save_to_disk(int zone_num)
> {
>   int counter, counter2, realcounter;
>   FILE *fp;
>   struct obj_data *obj;
>   struct extra_descr_data *ex_desc;
>
>   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);
> }
>   /*
>    * Start running through all objects in this zone.
>    */
>   for (counter = zone_table[zone_num].number * 100;
>        counter <= zone_table[zone_num].top; counter++) {
>     if ((realcounter = real_object(counter)) >= 0) {
>       if ((obj = (obj_proto + realcounter))->action_description) {
>         strcpy(buf1, obj->action_description);
>         strip_string(buf1);
>       } else
>         *buf1 = '\0';
>
>       fprintf(fp,
>               "#%d\n"
>               "%s~\n"
>  "%s~\n"
>               "%s~\n"
>               "%s~\n"
>               "%d %d %d\n"
>               "%d %d %d %d\n"
>               "%d %d %d\n",
>
>               GET_OBJ_VNUM(obj),
>               (obj->name && *obj->name) ? obj->name : "undefined",
>               (obj->short_description && *obj->short_description) ?
>                         obj->short_description : "undefined",
>               (obj->description && *obj->description) ?
>                         obj->description : "undefined",
>               buf1, GET_OBJ_TYPE(obj), GET_OBJ_EXTRA(obj), GET_OBJ_WEAR(obj),
>               GET_OBJ_VAL(obj, 0), GET_OBJ_VAL(obj, 1), GET_OBJ_VAL(obj, 2),
>               GET_OBJ_VAL(obj, 3), GET_OBJ_WEIGHT(obj), GET_OBJ_COST(obj),
>               GET_OBJ_RENT(obj)
>             );
>
>       /*
>        * Do we have extra descriptions?
>        */
>       if (obj->ex_description) {        /* Yes, save them too. */
>         for (ex_desc = obj->ex_description; ex_desc; ex_desc = ex_desc->next) {
>           /*
>            * Sanity check to prevent nasty protection faults.
>            */
>           if (!*ex_desc->keyword || !*ex_desc->description) {
>             mudlog("SYSERR: OLC: oedit_save_to_disk: Corrupt ex_desc!", BRF, LV$
>             continue;
>           }
>           strcpy(buf1, ex_desc->description);
>           strip_string(buf1);
>           fprintf(fp, "E\n"
>               "%s~\n"
>                   "%s~\n", ex_desc->keyword, buf1);
>         }
>       }
>       /*
>        * Do we have affects?
>        */
>       for (counter2 = 0; counter2 < MAX_OBJ_AFFECT; counter2++)
>         if (obj->affected[counter2].modifier)
>           fprintf(fp, "A\n"
>                   "%d %d\n", obj->affected[counter2].location,
>                   obj->affected[counter2].modifier);
>     }
>   }
>
>   /*
>    * Write the final line, close the file.
>    */
>   fprintf(fp, "$~\n");
>   fclose(fp);
>   sprintf(buf2, "%s/%d.obj", OBJ_PREFIX, zone_table[zone_num].number);
>   /*
>    * We're fubar'd if we crash between the two lines below.
>    */
>   remove(buf2);
>   rename(buf, buf2);
>
>   olc_remove_from_save_list(zone_table[zone_num].number, OLC_SAVE_OBJ);
> }
>

If you take a look into the 0.obj file youll see that all the objects you
made is there... If i remeber right, all you have to do is remove that
file and olc should work.

Koff


     +------------------------------------------------------------+
     | 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