Alternativer Switch-Fix

03/10/2013 19:34 Mognakor#1
In der Mover.cpp in der Funktion void CMover::ProcessRecovery()

ersetzen wir das
Code:
if( IsAttackMode() == FALSE )	// IsActAttackÀº °ø°Ýµ¿ÀÛÀÏ ¶§¸¸, IsAttackMode´Â ÀüÅõÁß
{
	// ¾îÅûóŰ¡ ¾Æ´Ò¶§¸¸ ÀÏÁ¤½Ã°£¸¶´Ù ÇÇÂù´Ù.
	if( dwCurTick > m_dwTickRecoveryStand )	
	{
		m_dwTickRecoveryStand = dwCurTick + NEXT_TICK_RECOVERYSTAND;
#if __VER >= 10 // __LEGEND	//	10Â÷ Àü½Â½Ã½ºÅÛ	Neuz, World, Trans
		if( ! (GetAdjParam( DST_CHRSTATE ) & CHS_SETSTONE) )
#endif	//__LEGEND	//	10Â÷ Àü½Â½Ã½ºÅÛ	Neuz, World, Trans
		{
			IncHitPoint( GetHPRecovery() );
			IncManaPoint( GetMPRecovery() );
			IncFatiguePoint( GetFPRecovery() );
		}
	}
} 
else
{
	// ¾îÅà »óÅÂÀÏ ¶§´Â °è¼Ó ½Ã°£À» ¸®¼ÂÇÑ´Ù.
	m_dwTickRecoveryStand = dwCurTick + NEXT_TICK_RECOVERYSTAND;	
}
durch das

Code:
if( dwCurTick > m_dwTickRecoveryStand )	
{
	m_dwTickRecoveryStand = dwCurTick + NEXT_TICK_RECOVERYSTAND;
#if __VER >= 10 // __LEGEND	//	10Â÷ Àü½Â½Ã½ºÅÛ	Neuz, World, Trans
	if( ! (GetAdjParam( DST_CHRSTATE ) & CHS_SETSTONE) )
#endif	//__LEGEND	//	10Â÷ Àü½Â½Ã½ºÅÛ	Neuz, World, Trans
	{
		IncHitPoint( GetHPRecovery() );
		IncManaPoint( GetMPRecovery() );
		IncFatiguePoint( GetFPRecovery() );
	}
}

Dieser switch-Fix unterscheidet sich etwas von den herkömmlichen, anstatt selbst zusätzliche Abfragen einzubauen, ermöglichen wir die Regeneration auch während des Kampfes und überlassen es dieser Hp,Mp und Fp auf ihre Maximalwerte zurückzusetzen. Das switchen wird hierbei nicht zu 100% gefixxt jedoch wird das Zeitfenster auf beliebige Größe reduziert.

Das einstellen des Zeitfenster geschieht in der Mover.h

Code:
const DWORD NEXT_TICK_DUEL          = SEC(1);
const DWORD NEXT_TICK_ENDDUEL       = MIN(3);
const DWORD NEXT_TICK_RECOVERY      = SEC(2);
const DWORD NEXT_TICK_RECOVERYSTAND = SEC(3);
Ersetzt den Wert in der letzten Zeile durch ein Zeitfenster das ihr für klein genug haltet, zu beachten ist jedoch dass die Regeneration von Hp,Mp,Fp dadurch schneller wird. Bei den Bahnen in denen sich Flyff derzeit bewegt sollte man die Zeit aber auf 1 Sekunde heruntersetzen können ohne das sich dadurch Probleme ergeben.
03/10/2013 22:42 xI3ubbLex3#2
Quote:
Originally Posted by Mognakor View Post
In der Mover.cpp in der Funktion void CMover::ProcessRecovery()

ersetzen wir das
Code:
if( IsAttackMode() == FALSE )	// IsActAttackÀº °ø°Ýµ¿ÀÛÀÏ ¶§¸¸, IsAttackMode´Â ÀüÅõÁß
{
	// ¾îÅûóŰ¡ ¾Æ´Ò¶§¸¸ ÀÏÁ¤½Ã°£¸¶´Ù ÇÇÂù´Ù.
	if( dwCurTick > m_dwTickRecoveryStand )	
	{
		m_dwTickRecoveryStand = dwCurTick + NEXT_TICK_RECOVERYSTAND;
#if __VER >= 10 // __LEGEND	//	10Â÷ Àü½Â½Ã½ºÅÛ	Neuz, World, Trans
		if( ! (GetAdjParam( DST_CHRSTATE ) & CHS_SETSTONE) )
#endif	//__LEGEND	//	10Â÷ Àü½Â½Ã½ºÅÛ	Neuz, World, Trans
		{
			IncHitPoint( GetHPRecovery() );
			IncManaPoint( GetMPRecovery() );
			IncFatiguePoint( GetFPRecovery() );
		}
	}
} 
else
{
	// ¾îÅà »óÅÂÀÏ ¶§´Â °è¼Ó ½Ã°£À» ¸®¼ÂÇÑ´Ù.
	m_dwTickRecoveryStand = dwCurTick + NEXT_TICK_RECOVERYSTAND;	
}
durch das

Code:
if( dwCurTick > m_dwTickRecoveryStand )	
{
	m_dwTickRecoveryStand = dwCurTick + NEXT_TICK_RECOVERYSTAND;
#if __VER >= 10 // __LEGEND	//	10Â÷ Àü½Â½Ã½ºÅÛ	Neuz, World, Trans
	if( ! (GetAdjParam( DST_CHRSTATE ) & CHS_SETSTONE) )
#endif	//__LEGEND	//	10Â÷ Àü½Â½Ã½ºÅÛ	Neuz, World, Trans
	{
		IncHitPoint( GetHPRecovery() );
		IncManaPoint( GetMPRecovery() );
		IncFatiguePoint( GetFPRecovery() );
	}
}

Dieser switch-Fix unterscheidet sich etwas von den herkömmlichen, anstatt selbst zusätzliche Abfragen einzubauen, ermöglichen wir die Regeneration auch während des Kampfes und überlassen es dieser Hp,Mp und Fp auf ihre Maximalwerte zurückzusetzen. Das switchen wird hierbei nicht zu 100% gefixxt jedoch wird das Zeitfenster auf beliebige Größe reduziert.

Das einstellen des Zeitfenster geschieht in der Mover.h

Code:
const DWORD NEXT_TICK_DUEL          = SEC(1);
const DWORD NEXT_TICK_ENDDUEL       = MIN(3);
const DWORD NEXT_TICK_RECOVERY      = SEC(2);
const DWORD NEXT_TICK_RECOVERYSTAND = SEC(3);
Ersetzt den Faktor durch ein Zeitfenster das ihr für klein genug haltet, zu beachten ist jedoch dass die Regeneration von Hp,Mp,Fp dadurch schneller wird. Bei den Bahnen in denen sich Flyff derzeit bewegt sollte man die Zeit aber auf 1 Sekunde heruntersetzen können ohne das sich dadurch Probleme ergeben.
Ser's

Ich versteh den letzten Teil nicht so ganz...

Code:
const DWORD NEXT_TICK_DUEL          = SEC(1);
const DWORD NEXT_TICK_ENDDUEL       = MIN(3);
const DWORD NEXT_TICK_RECOVERY      = SEC(2);
const DWORD NEXT_TICK_RECOVERYSTAND = SEC(3);
Welches müsste ich dann bearbeiten? :/ ?

sorry das ich es nicht kappieren möchte...

mfg. Kevin
03/10/2013 23:38 Sedrika#3
Code:
const DWORD NEXT_TICK_RECOVERYSTAND = SEC(3);
Den hier.
03/10/2013 23:45 Mognakor#4
Wie Sedrika es schon geschrieben hat.

Im Sitzen regeneriert man schneller, dafür ist der Wert zuständig.
Code:
const DWORD NEXT_TICK_RECOVERY      = SEC(2);
Da man im Sitzen allerdings nicht Asaalt etc. ist der für uns interessante Wert der hier:
Code:
const DWORD NEXT_TICK_RECOVERYSTAND = SEC(3);
Wenn man will dass man im Sitzen weiter schneller regeneriert als im Stehen sollte man beide Werte ändern.
03/12/2013 20:42 lanzelord996#5
Die HP Regeneration während des Kampfes finde ich jetzt nicht so sinnfrei, ansonsten nützlich jetzt zu wissen wo die Intervalle von den Regenerationen sind :P
03/13/2013 01:27 Crowley™#6
Der ist zwar schon releast aber trotzdem danke :)

MfG. Crowley
03/13/2013 10:57 Mognakor#7
Hmm, hab den anderen Release wohl übersehen