Sorry.. missed the code snippet.. thought he was calling 'wch->next_player'
in the for loop itself.

- Valnir

----- Original Message ----- 
From: <[EMAIL PROTECTED]>
To: <[email protected]>
Sent: Tuesday, July 27, 2004 10:18 AM
Subject: Re: tier/remort


> That shouldn't change anything.  If it was blowing up assigning
> wch->next_player to wch_next, then it should blow up assigning it to a
> different variable.
>
> The for statement appears valid:
>
> >> for (wch = player_list; wch != NULL; wch = wch_next)
> >> > >    {
> >> > >      wch_next = wch->next_player; <=== bombs her
>
> The only way it could blow up on this line is if wch itself was null, or
> if wch->next_player was pointing to memory it shouldn't be.  The former
> can be ruled out by the condition of the for loop.  The latter, on the
> other hand, is not checked until the next iteration of the loop, and is
> also the likely candidate based on what Rick has told us he's working on.
>
> It sounds like the problem is the way you are removing the character from
> the list.  If you post that piece of code to the list maybe we can help
> you out.
>
> Just as an idea, the way our remort code works is by calling
> extract_char(), then unlinking the file, then calling load_char_obj().
> Basically that results in a cleaned out CHAR_DATA structure that we
> restore the stats we want to retain into before pushing the character into
> a remort step of creation.
>
> > The player not being valid is probably right.
> >
> > instead of using "wch->next_player" in the for statement, add "CHAR_DATA
> > *next_player;" at the top of your function. Put "wch = next_player"
> > instead
> > of "wch = wch->next_player" in the for statement, and add "next_player =
> > wch->next_player;" as the first line inside the for { }.
> >
> > - Valnir
> >
> > ----- Original Message -----
> > From: "Krayzie K" <[EMAIL PROTECTED]>
> > To: <[email protected]>
> > Sent: Tuesday, July 27, 2004 1:15 AM
> > Subject: RE: tier/remort
> >
> >
> >> I am thinking that wch->next_player; is not valid any more as the
> > character
> >> has been taken out of the player_list when put into the remort process.
> >>
> >> I have had this problem before, actually when trying to re-do my remort
> >> system as well.
> >>
> >> -----Original Message-----
> >> From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] On Behalf Of Rick St
> > Jean
> >> Sent: Monday, July 26, 2004 10:53 PM
> >> To: [email protected]
> >> Subject: Re: tier/remort
> >>
> >> Undefined command: "qt".  Try "help".
> >> (gdb) bt
> >> #0  aggr_update () at update.c:2151
> >> #1  0x080c030f in update_handler () at update.c:2517
> >> #2  0x0807a1f5 in game_loop_unix (control=6) at comm.c:1485
> >> #3  0x08079876 in main (argc=2, argv=0xbffff964) at comm.c:916
> >> #4  0x40086c57 in ?? ()
> >>
> >>
> >> line 2151 is wch_next = wch->next_player;
> >>
> >> At 11:45 PM 7/26/2004, you wrote:
> >> >You say it's crashing on an update? Why does GDB say that it's
crashing
> >> >over?
> >> >
> >> >
> >> >----- Original Message -----
> >> >From: "Rick St Jean" <[EMAIL PROTECTED]>
> >> >To: <[email protected]>
> >> >Sent: Monday, July 26, 2004 9:21 PM
> >> >Subject: tier/remort
> >> >
> >> >
> >> > > I am totally stumped, and I know I am getting in over my head.
> >> > >
> >> > > I am trying to put in new tier code, that resets a player to level
1
> > and
> >> > > allows them
> >> > > to choose a new path.  I was trying to modify some existing tier
and
> >> >remort
> >> > > code.
> >> > > The remort code deletes a player file and all data, which is no
good
> >> since
> >> > > I want
> >> > > to keep all my skills/spells/stats.   It works some of the time as
> > long
> >> as
> >> > > the update
> >> > > doesn't hit while you are in the tier process.  If there is a tick,
> > and
> >> > > update runs,
> >> > > then the code blows up when ever something accesses the
player_list.
> > I
> >> >cannot
> >> > > figure how to pull someone out of the list.  I set d->connected =
> >> > > CON_BEGIN_ASCEND;
> >> > >
> >> > >
> >> > > void ascend_complete(CHAR_DATA * ch)
> >> > > {
> >> > > DESCRIPTOR_DATA *d;
> >> > >
> >> > > if (IS_NPC(ch) || (d = ch->desc) == NULL)
> >> > > return;
> >> > >
> >> > > if (ch->pcdata->confirm_remort)
> >> > > {
> >> > > save_char_obj(ch);
> >> > > stop_fighting(ch, TRUE);
> >> > > reduce_known_skills(ch);
> >> > > ch->pcdata->class_remort[ch->class] = TRUE;
> >> > > ch->pcdata->tier_list[class_table[ch->class].class_type]++;
> >> > >
> >> > > d->character = ch;
> >> > >
> >> > > ch->level = 1;
> >> > > ch->exp = 0;
> >> > > ch->max_hit /= 10;
> >> > > ch->max_mana /= 10;
> >> > > ch->max_move /= 10;
> >> > > ch->max_blood /= 10;
> >> > > ch->hit = UMIN(ch->hit, ch->max_hit);
> >> > > ch->mana = UMIN(ch->mana, ch->max_mana);
> >> > > ch->move = UMIN(ch->move, ch->max_move);
> >> > > ch->blood = UMIN(ch->blood, ch->max_blood);
> >> > > ch->pcdata->perm_hit = ch->max_hit;
> >> > > ch->pcdata->perm_mana = ch->max_mana;
> >> > > ch->pcdata->perm_move = ch->max_move;
> >> > >
> >> > > write_to_buffer( d, "Now beginning the ascention process.\n\r\n\r",
> >  );
> >> > >
> >> > > d->connected = CON_BEGIN_ASCEND;
> >> > > ch->pcdata->confirm_remort = FALSE;
> >> > > return;
> >> > > }
> >> > > }
> >> > >
> >> > > It bombs on the code below when I am in the nanny CON_BEGIN_ASCEND
> >> > >
> >> > >    CREF(wch_next, CHAR_NEXT);
> >> > >    for (wch = player_list; wch != NULL; wch = wch_next)
> >> > >    {
> >> > >      wch_next = wch->next_player; <=== bombs here.
> >> > >      if (wch->in_room == NULL || IS_NPC(wch) || wch->level >=
> >> >LEVEL_IMMORTAL
> >> > > || wch->in_room == NULL || wch->in_room->area->empty)
> >> > >        continue;
> >> > >
> >> > >
> >> > > --
> >> > > ROM mailing list
> >> > > [email protected]
> >> > > http://www.rom.org/cgi-bin/mailman/listinfo/rom
> >> > >
> >>
> >>
> >> --
> >> ROM mailing list
> >> [email protected]
> >> http://www.rom.org/cgi-bin/mailman/listinfo/rom
> >>
> >>
> >> --
> >> ROM mailing list
> >> [email protected]
> >> http://www.rom.org/cgi-bin/mailman/listinfo/rom
> >>
> >
> >
> >
> > --
> > ROM mailing list
> > [email protected]
> > http://www.rom.org/cgi-bin/mailman/listinfo/rom
> >
>
>
> -- 
> ROM mailing list
> [email protected]
> http://www.rom.org/cgi-bin/mailman/listinfo/rom
>



Reply via email to