I had a similar problem with in fight.c and also in some of my spec_procs The problem is simple... the server doesn't handle attacking a dead player very well... This was causing a crash on my system. When I put a check to make sure that the player hasn't died yet... it works like a charm. That is why whenever you see some code that does damage it checks to make sure that the victim is still fighting and is still alive... just a handy dandy little thing that keeps a mud up and running. Ryan *-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- Ryan Kolak | "I do not fear computers, I fear the lack of them" University of Illinois| -Isaac Asimov kolak@uiuc.edu | "A Life without cause is a life without effect." | -Dildono from "Barbarella: Queen of the Universe" <a HREF = "http://crh0502.urh.uiuc.edu/">My Web Server</a> -- Check it Out On Wed, 20 Sep 1995, Rasmus Rxnlev wrote: > Hi again, > > After trying some different things, for one useing gdb to trace where my > circle code crashes I'm eft in an empty space... 8) > > It seems as if my fight.c code is the 'nasty bugged' code. > I implemented multiple attacks, and to make thge situation clearer I've > decided to post my (very short) way of implementing it ... (wich I by the > way beleave is the thing that causes the bug). > > in the perform_violence() routine I've added the following: > > [The original code - CUT:] > > hit(ch, FIGHTING(ch), TYPE_UNDEFINED); > > if (MOB_FLAGGED(ch, MOB_SPEC) && mob_index[GET_MOB_RNUM(ch)].func != NULL) > (mob_index[GET_MOB_RNUM(ch)].func) (ch, ch, 0, ""); > > [UNCUT], this is what I've added... > > [MYADD-START] > > if(GET_SKILL(ch, SKILL_SECOND_ATTACK)) > hit(ch, FIGHTING(ch), TYPE_UNDEFINED); > if(GET_SKILL(ch, SKILL_THIRD_ATTACK)) > hit(ch, FIGHTING(ch), TYPE_UNDEFINED); > > [MYADD-END] > > Now, when I run this on my own Linux mashine (with and without gdb) the > mud seems to run perfectly... > > Now when i transter the source (and only the soure, not pfiles! 8) I > allso compile the source without errors on teh SunOS.. > > Now, if I start a fight on the SunOS mashine I get some combat messages, > and then the mud crashes... > > when using gdb it said it crashed in line 765 of the fight.c code... > this is in the hit() procedure... > > [CUT] > > (line 765:) if (ch->in_room != victim->in_room) { > if (FIGHTING(ch) && FIGHTING(ch) == victim) > stop_fighting(ch); > return; > > [UNCUT] > > This is as far as I could trace the bug... it seems as if the problem > arises when the ch->in_room ot victim->in_room is evaluated... but on > the other hand, if this is the case it should crash on both mashines... > > I'd be happy to send more info, or whatever... > Might allso be, that I need some new glasses because i've missed the > obvious reason... > > Anyways, hope I didnt mess up your lives, or burned down a mailserver to > get anought bandwith to get this message thru to you 8) > > Regards, > Rasmus R./Con. >
This archive was generated by hypermail 2b30 : 12/07/00 PST