Welcome!

Join our community of MMO enthusiasts and game developers! By registering, you'll gain access to discussions on the latest developments in MMO server files and collaborate with like-minded individuals. Join us today and unlock the potential of MMO server development!

Join Today!

Stuck in siege after mid-air death

Newbie Spellweaver
Joined
May 7, 2017
Messages
34
Reaction score
6
After reading the following thread: http://forum.ragezone.com/f651/guild-siege-stuck-bug-765741/

I realized that they are having the same issues as I am having. What I noticed is that this 'stuck' bug occurs whenever you die mid-air or mid-jump during a siege.

It causes your character to not be able to use any skills/attacks and it untargetable/does not move on other client's screen. Sometimes after a couple minutes of waiting this is automatically fixed but usually you have to relog ingame to fix it (which causes you to lose all your siege lives).

I'd like to fix this bug but I am not super well known in the code, but I know it has to do with the fact that you are in a mid-jump and then death occurs. Any ideas or tips where in the code this could be fixed or anyone have had this problem before and fixed it?

I am on cuvvie's v15 for reference.
 
Inactive
Joined
Jan 20, 2009
Messages
1,014
Reaction score
1,830
WndWorldControlPlayer.cpp
Find
Code:
if( bSpace && pMover->m_pActMover->m_bGround  )

Replace With
Code:
if( bSpace )

Find
Code:
if( m_bLButtonDown == TRUE && m_bRButtonDown == TRUE )

Replace With
Code:
if( m_bLButtonDown == TRUE && m_bRButtonDown == TRUE && pMover->m_pActMover->m_bGround )

ActionMoverDmg.cpp

Find
Code:
	if( !bValid || IsState( OBJSTA_DIE_ALL ) )
		return 0;

	if( IsSit() )
		ResetState( OBJSTA_MOVE_ALL );

	SendActMsg( OBJMSG_STAND );

Replace With
Code:
	if( !bValid || IsState( OBJSTA_DIE_ALL ) )
		return 0;

	if (IsSit())
		ResetState(OBJSTA_MOVE_ALL);

	if (IsActJump() == FALSE)
		SendActMsg(OBJMSG_STAND);

Find
Code:
		dwSfxObj = pAttackerProp->dwSfxObj5;
		if (NULL_ID != dwSfxObj)
			CreateSfx(D3DDEVICE, dwSfxObj, pAttacker->GetPos());
	}

	pMover->m_nDmgCnt = 10;

	pMover->SetDamagedMotion( pAttacker, dwAtkFlags );

Replace With
Code:
		dwSfxObj = pAttackerProp->dwSfxObj5;
		if (NULL_ID != dwSfxObj)
			CreateSfx(D3DDEVICE, dwSfxObj, pAttacker->GetPos());
	}

	pMover->m_nDmgCnt = 10;

	if (IsActJump() == FALSE)
		pMover->SetDamagedMotion(pAttacker, dwAtkFlags);
 
Newbie Spellweaver
Joined
May 7, 2017
Messages
34
Reaction score
6
Thanks for the solution, It worked!

This thread can be locked and marked fixed so other people can see it :).
 
Back
Top