Stupid yahoo mail, not CC'ing it... anyways, the mob
purge command is written exactly like what you stated.
 I've never had a problem with it before this mobprog
was written, which does this:

mob echo Some string
mob asound Some other thing
mob damage $r 50 100 "explosion" DAM_PIERCE /* I've
modified this function, it works like this */
mob purge
mob goto 950 /* a reaper mob here will kill it */

I hope that gives you a better clue, because I'm
lost...

--- brian moore <[EMAIL PROTECTED]> wrote:
> On Thu, Sep 19, 2002 at 01:54:34PM -0700, Matt Foltz
> wrote:
> > A builder on my mud is making an area full of land
> > mines.  When a mob walks across a land mine, it
> > triggers a program to make an asound and purge the
> > mobs in the room.  Problem is that I get these
> errors
> > in the log files:
> > 
> > BUG: Char_from_room: ch not found
> > BUG: Extract_char: ch not found
> > 
> > The first error puts all players into some weird
> > state, where they don't receive any messages that
> > require a descriptor lookup (possibly them
> simulate a
> > non-switched NPC, basically).  The second error
> flat
> > out crashed the mud.  I haven't changed mppurge,
> > char_from_room, or extract_char from how the
> > stock/patch is.  Has anyone seen this before?
> 
> This is a logic bug.  Without seeing your code, it
> is impossible to say
> how to fix it.  I can explain the problem in general
> terms and the
> general solution to it, though:
> 
> In C, you have something like the following:
> 
>     for ( victim = ch->in_room->people; victim ;
> victim = victim->next_in_room )
>     {
>         if (IS_NPC(victim))
>           extract_char(victim, TRUE);
>     }
> 
> The problem is that when you extract that first
> character, the
> next_in_room pointer is now f'd up.  This is bad,
> since it no longer
> points to who the next person was in the room before
> you toasted that
> one.
> 
> The solution?  A temporary variable.
> 
>     for ( victim = ch->in_room->people; victim ;
> victim = v_next )
>     {
>         v_next = victim->next_in_room;
>         if (IS_NPC(victim))
>           extract_char(victim, TRUE);
>     }
> 
> You will see this sort of construct all over ROM. 
> Grep for '_next' for
> examples.
> 
> How you fix your case would, again, depend on the
> code.
> 
> 
> -- 
> ROM mailing list
> [email protected]
> http://www.rom.org/cgi-bin/mailman/listinfo/rom


__________________________________________________
Do you Yahoo!?
New DSL Internet Access from SBC & Yahoo!
http://sbc.yahoo.com

Reply via email to