Re: [OLC] OasisOLC with Patch level 11 problem

From: Rasmus Ronlev (raro94ab@STUDENT.ECON.CBS.DK)
Date: 12/04/97


On Thu, 4 Dec 1997, Jonathan VanKim wrote:

> This might be a question that's been answered but here goes...

Actually.... hehe... For the very observant person, I posted a fix to your
problem not more than a day or two ago... At least your symptoms sound to
me, to be of the exact type, that I had *g*

> I have patched in OasisOLC version 1.6a into circle 3.0 patch 11 (stock).
> I'm even using stock zones.  But I don't like stock zones so I go into
> ../world/ and take out all the zones I don't like.  But when I go into the
> mud to use OLC, specifically medit, I crash the mud when I create a new
> mob.  Rigth when it says, "Do you want to save this mobile into memory?"
> and I say yes... the mud crashes, gives me a Bus Error- core dump.  When I
> put back in all the stock zones and create a new mob.  It works perfectly
> fine.  Anyone have any ideas?

Can you say 'assign_the_shopkeepers() in shop.c' ? ;*)

My guess is, that this is the problem you're experiencing, since I also
just installed Oasis v1.6(a), and got the problem with crashes when
creating new mobiles.

It turned out, that if you have a shop in your lib/world/shp/ directory,
that you load that uses a mobile vnumber that is unexistent (a vnum of one
of the mobiles from a .mob file you deleted), you'll corrupt some memory.
If you want to know why, scroll back a few days in your Circle mail. If
you don't just replace the assign_the_shopkeepers procedure with the one
below (find it in shop.c :=) :

NOTE: This is a modified mailerversion of my own fixed procedure, but
since I've added some non-stock stuff, the syntax used in this one might
not be entirely correct, I beleave my earlier posted version was ,-)

void assign_the_shopkeepers(void)
{
 int index;
 extern int top_of_mobt;

 cmd_say = find_command("say");
 cmd_tell = find_command("tell");
 cmd_emote = find_command("emote");
 cmd_slap = find_command("slap");
 cmd_puke = find_command("puke");
 for (index = 0; index < top_shop; index++) {
  if ((SHOP_KEEPER(index) > -1) && (SHOP_KEEPER(index) <= top_of_mobt)) {
   if (mob_index[SHOP_KEEPER(index)].func)
    SHOP_FUNC(index) = mob_index[SHOP_KEEPER(index)].func;
   mob_index[SHOP_KEEPER(index)].func = shop_keeper;
   }
  }
 }
}

Regards,
Rand

.d
--
        Rasmus Ronlev DOEK'94           http://www.econ.cbs.dk/~raro94ab
             IT-Advisor               mailto:raro94ab@student.econ.cbs.dk

              B.Sc. Computer Science and Business Administration
          Stud. M.Sc. Computer Science and Business Administration


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