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", 0 );
> >
> > 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


Reply via email to