Quote:
Originally Posted by BlackGiant
Dann rate ich dir dazu, dass du dir einfach über die Error("..") Funktion in den Damagekalkulationsfunktionen am Anfang, in der Mitte & am Ende mehrfach den Damage ausgeben lässt, um zu erkennen, ab wo der Damage für "1-hit" steht.
Sprich:
Code:
void CAsd::DamageKpWieDieFunktionGenauHeißt()
{
int nDamage;
nDamage += X;
Calc(&nDamage);
Error("L(%d):Damage beträgt derzeit: %i", __LINE__, nDamage);
....
Error(..);
}
Außerdem: Haben die User diesen ONEHIT Status, wie man per GM Befehl bekommen kann?
|
Werd ich mal machen.
Und nein, keiner hat den status, ich habs mit standart chars getestet und mit admin. Die sache ist ja, das mich die mobs auch alle onehit machen.
Edit: So ich hab mal getestet und das kam bei raus:
Wenn ich angreife:
2011/ 7/26 18:07:04 [GetDamageMultiplier] 0 Factor = 0
2011/ 7/26 18:07:04 [GetDamageMultiplier] 1 Factor = 0
2011/ 7/26 18:07:04 [GetDamageMultiplier] 2 Factor = 0
2011/ 7/26 18:07:04 [GetDamageMultiplier] 3 Factor = 0
2011/ 7/26 18:07:04 [GetDamageMultiplier] 4 Factor = 0
2011/ 7/26 18:07:04 [GetDamageMultiplier] 5 Factor = 0
2011/ 7/26 18:07:04 [GetDamageMultiplier] 6 Factor = 0
2011/ 7/26 18:07:04 [GetDamageMultiplier] 7 Factor = 0
2011/ 7/26 18:07:04 [GetDamageMultiplier] 8 Factor = 0
2011/ 7/26 18:07:04 [AttackArbiter] nDamage = 306
2011/ 7/26 18:07:04 [AttackArbiter] 2 nDamage = 612
2011/ 7/26 18:07:04 [AttackArbiter] 3 nDamage = 612
2011/ 7/26 18:07:04 [AttackArbiter] 1 nHP = -464
2011/ 7/26 18:07:04 [AttackArbiter] 1 nDamage = 612
Wenn Mobs mich angreifen:
2011/ 7/26 18:07:54 [GetDamageMultiplier] 0 Factor = 0
2011/ 7/26 18:07:54 [GetDamageMultiplier] 1 Factor = 0
2011/ 7/26 18:07:54 [GetDamageMultiplier] 2 Factor = 0
2011/ 7/26 18:07:54 [GetDamageMultiplier] 3 Factor = 0
2011/ 7/26 18:07:54 [GetDamageMultiplier] 4 Factor = 0
2011/ 7/26 18:07:54 [GetDamageMultiplier] 5 Factor = 0
2011/ 7/26 18:07:54 [GetDamageMultiplier] 6 Factor = 0
2011/ 7/26 18:07:54 [GetDamageMultiplier] 7 Factor = 0
2011/ 7/26 18:07:54 [GetDamageMultiplier] 8 Factor = 0
2011/ 7/26 18:07:54 [AttackArbiter] nDamage = 2663
2011/ 7/26 18:07:54 [AttackArbiter] 2 nDamage = 5326
2011/ 7/26 18:07:54 [AttackArbiter] 3 nDamage = 5326
2011/ 7/26 18:07:54 [AttackArbiter] 1 nHP = 0
2011/ 7/26 18:07:54 [AttackArbiter] 1 nDamage = 8657
nDamage ist der Schaden, der berechnet wurde.
Factor ist das aus der MoverAttack, wo die dmg berechnet wird.
Edit2: Fixxed, fehler lag hier dran:
int nHP = m_pDefender->GetHitPoint() - *pnDamage;
float fHPPercent = (float)nHP / m_pDefender->GetMaxHitPoint();
int fAddHP = m_pDefender->GetChgParam( 100 );
int nAddHP = m_pDefender->GetMaxHitPoint() * 100;
if( nHP <= 0 )
{
if( (m_pDefender->m_dwMode & MATCHLESS2_MODE) || m_pDefender->HasBuff(BUFF_SKILL, SI_FLO_SUP_ABSOLUTE) )
{
if( m_pDefender->HasBuff(BUFF_SKILL, SI_FLO_SUP_ABSOLUTE ) )
{
nHP += nAddHP;
m_pDefender->SetPointParam( DST_HP, nHP );
g_UserMng.AddCreateSfxObj( m_pDefender, XI_GEN_CURE01 );
m_pDefender->RemoveBuff( BUFF_SKILL, SI_FLO_SUP_ABSOLUTE );
}
nHP = 1;
}
}
else
nHP = 0;
*pnDamage = m_pDefender->GetHitPoint() - nHP;
#ifdef __DMG_ERROR
Error("[AttackArbiter] 1 nHP = %d", m_pDefender->GetHitPoint() - nHP);
#endif
return nHP;
Danke euch allen.
#Closerequest