Back to the Vavoom Forum Archives


Forum

[Fixed] [SVN 18.08.2007] Hexen crashes when frozen Player br

Sat, 25 Aug 2007 17:51:27

Crimson Wizard

- (svprogs.Actor.PlayerIsMorphed)
- RunFunction
- (svprogs.Actor.PlayerIsMorphed 8)
- RunFunction
- (linespec.Weapon.A_Lower 8)
- VObject::ExecuteFunction
- (linespec.Weapon.A_Lower)
- VBasePlayer::SetViewState
- RunFunction
- (engine.BasePlayer.AdvanceViewStates 0)
- RunFunction
- (linespec.PlayerEx.MovePsprites 2)
- RunFunction
- (svprogs.Player.DeathPlayerTick 2)
- RunFunction
- (svprogs.Player.PlayerTick 130)
- VObject::ExecuteFunction
- (svprogs.Player.PlayerTick)
- SV_RunClients
- SV_Ticker
- ServerFrame
- Host_Frame
Sat, 25 Aug 2007 18:05:34

Firebrand

Seems the problem is in PlayerIsMorphed function or in A_Lower, I was having problems with A_Lower before, but the code seems to be fine when I last checked it <!-- s:? --><img src="{SMILIES_PATH}/icon_confused.gif" alt=":?" title="Confused" /><!-- s:? --> .
Thu, 13 Sep 2007 08:53:45

Crimson Wizard

I found out that this happens randomly when player dies in other ways too. I am still not sure what are obligatory condtions for this crash.
Thu, 13 Sep 2007 17:48:20

Firebrand

I fixed the problem with PlayerIsMorphed, but this doesn't solves the crashing problem thought.
Mon, 15 Oct 2007 15:14:28

Crimson Wizard

This problem still persist. Crash happen sometimes when player is being killed (in any way) I found out that this is beacuse Owner.Player reference is not set to an object in Weapon::A_Lower.
Mon, 15 Oct 2007 19:35:11

Firebrand

It only happens only in Hexen AFAIK. Maybe there's specific code there that causes this?
Sat, 10 Nov 2007 16:02:02

Firebrand

Well, I've been researching and debugging after a good while, and managed to determine that the crash happens both in Hexen and Heretic, when the player dies with extreme death animation, the player calls a method called A_Skullpop, which spawns a bloody skull object, to which the player object is transfered, it seems it's missing the inventory and it doesn't has any weapons, this could be causing the error, since the player is in it's death tick and calls the functions to lower a weapons he doesn't has. This is all I can do, since there's no way to transfer inventory from one entity to the other <!-- s:) --><img src="{SMILIES_PATH}/icon_smile.gif" alt=":)" title="Smile" /><!-- s:) -->.
Sat, 10 Nov 2007 20:08:05

spiderman

[quote="Firebrand":2sbhywg8]...the player calls a method called A_Skullpop, which spawns a bloody skull object, to which the player object is transfered... Interesting! I wonder why it is necessary to transfer the player to the skull? What happens if that part (the object transfer) is just commented out?
Sun, 11 Nov 2007 14:33:51

Crimson Wizard

[quote="Firebrand":2jtxyjo8]it seems it's missing the inventory and it doesn't has any weapons, this could be causing the error, since the player is in it's death tick and calls the functions to lower a weapons he doesn't has. This is all I can do, since there's no way to transfer inventory from one entity to the other <!-- s:) --><img src="{SMILIES_PATH}/icon_smile.gif" alt=":)" title="Smile" /><!-- s:) -->. Maybe there could be some extra condition to check if the Inventory exists?
Sun, 11 Nov 2007 19:14:54

Firebrand

Yes, your guess is right <!-- s:) --><img src="{SMILIES_PATH}/icon_smile.gif" alt=":)" title="Smile" /><!-- s:) -->, but there's already a ObtainInventory(other) method in the engine, which copies the inventory of other actor to the one that calls it and deletes the copy from the original actor (and of course, helps solve this problem) <!-- s:) --><img src="{SMILIES_PATH}/icon_smile.gif" alt=":)" title="Smile" /><!-- s:) -->. I've sent the patch with the fixed code to Janis, so this should be closed anytime soon <!-- s;) --><img src="{SMILIES_PATH}/icon_wink.gif" alt=";)" title="Wink" /><!-- s;) -->.
Mon, 12 Nov 2007 10:45:48

Crimson Wizard

[quote="Firebrand":2156a1zn]Yes, your guess is right <!-- s:) --><img src="{SMILIES_PATH}/icon_smile.gif" alt=":)" title="Smile" /><!-- s:) -->, but there's already a ObtainInventory(other) method in the engine, which copies the inventory of other actor to the one that calls it and deletes the copy from the original actor (and of course, helps solve this problem) <!-- s:) --><img src="{SMILIES_PATH}/icon_smile.gif" alt=":)" title="Smile" /><!-- s:) -->. Good thing it fixed the issue, but it sounds quite unlogical to give the inventory to a separated player's head <!-- s:roll: --><img src="{SMILIES_PATH}/icon_rolleyes.gif" alt=":roll:" title="Rolling Eyes" /><!-- s:roll: -->
Sun, 02 Dec 2007 19:41:27

Janis Legzdinsh

Fixed.

Back to the Vavoom Forum Archives