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

