[OasisOLC] Bug Reports

From: Jarhad Idanno (Jarhad@webmail.merging.org)
Date: 03/01/03


Sorry, Mythran, it's not a perfect release, but still a good
job nonetheless.

I found a major error in the saving routine for OasisOLC.
The problem was when saving, it does save_XXX(OLC_ZNUM(d)), and
OLC_ZNUM(d) = real_zone_by_thing(number), where number has to be
a vnum, but when saving people type "Xedit save <zone number>".
Since most zone numbers are less than 200, it'll either end up
saving zone 0 or zone 1.  Thus, I've come up with a fix for it
and included a check to save the zone the Imm is in if there is
no zone argument or if the argument is a dot.


Do the following for each of the files:
medit.c, oedit.c, redit.c, sedit.c and zedit.c

Find this:
    if (is_number(buf2))
      number = atoi(buf2);
    else if (GET_OLC_ZONE(ch) > 0) {
      zone_rnum zlok;

      if ((zlok = real_zone(GET_OLC_ZONE(ch))) == NOWHERE)
        number = NOWHERE;
      else
        number = genolc_zone_bottom(zlok);
    }

Replace it with:
    if (!*buf2 || !str_cmp(buf2, "."))
      number = zone_table[world[IN_ROOM(ch)].zone].number;
    else if (is_number(buf2)) {
      number = atoi(buf2);
      if (real_zone(number) == NOWHERE) {
        send_to_char(ch, "That zone doesn't exist!\r\n");
        return;
      }
    }
    else if ((GET_OLC_ZONE(ch) == 0) ||
             (real_zone(number = GET_OLC_ZONE(ch)) == NOWHERE))
      number = NOWHERE;


Also, find "if (save) {"
and change the two occurrences of zone_table[OLC_ZNUM(d)].number to
number, and save_XXX(OLC_ZNUM(d)) to save_XXX(real_zone(number)).

For example, in medit (I cut out the extra asterisks in the comments):
Find this:
  if (save) {
    send_to_char(ch, "Saving all mobiles in zone %d.\r\n",
      zone_table[OLC_ZNUM(d)].number);
    mudlog(CMP, MAX(LVL_BUILDER, GET_INVIS_LEV(ch)), TRUE,
      "OLC: %s saves mobile info for zone %d.",
      GET_NAME(ch), zone_table[OLC_ZNUM(d)].number);

    /**********************************************************/
    /** Save the mobiles.                                    **/
    /**********************************************************/
    save_mobiles(OLC_ZNUM(d));

Replace it with:
  if (save) {
    send_to_char(ch, "Saving all mobiles in zone %d.\r\n", number);
    mudlog(CMP, MAX(LVL_BUILDER, GET_INVIS_LEV(ch)), TRUE,
      "OLC: %s saves mobile info for zone %d.", GET_NAME(ch), number);

    /**********************************************************/
    /** Save the mobiles.                                    **/
    /**********************************************************/
    save_mobiles(real_zone(number));



That's all.
There are a couple of other tweaks I've made to OasisOLC, but those
are mainly to customize it to suit my mud.  They are not bug fixes
and are quite easy to add in, so I'm not going to post them.


Regards,
Jarhad Idanno

_____________________________________________________________
Play at A Merging of Fates MUD and get free E-Mail too! http://www.merging.org

_____________________________________________________________
Select your own custom email address for FREE! Get you@yourchoice.com w/No Ads, 6MB, POP & more! http://www.everyone.net/selectmail?campaign=tag

--
   +---------------------------------------------------------------+
   | FAQ: http://qsilver.queensu.ca/~fletchra/Circle/list-faq.html |
   | Archives: http://post.queensu.ca/listserv/wwwarch/circle.html |
   | Newbie List:  http://groups.yahoo.com/group/circle-newbies/   |
   +---------------------------------------------------------------+



This archive was generated by hypermail 2b30 : 06/26/03 PDT