Quote:
Originally Posted by Shonenx33
you have any error logs or have you added the part in attackarbiter.cpp?
|
sir what source can i get the code of Weapon level with out bug like my weapon level that i add,,sorry for my english xD
no error in my logs sir..
i only add this in AttackArbiter.cpp:
Quote:
#ifdef __WEAPON_LVL
#include "UserMacro.h"
#endif
void CAttackArbiter::OnDamaged( int nDamage )
{
#if __VER >= 9 // __RECOVERY10
m_pDefender->m_nAtkCnt = 1;
#endif // __RECOVERY10
m_pDefender->SetDamagedMotion( m_pAttacker, m_dwAtkFlags );
g_UserMng.AddDamage( m_pDefender, GETID( m_pAttacker ), nDamage, m_dwAtkFlags );
FLOAT fFaktor = 22.0f; // Waffen EXP einstellen Ich habe hier vorhin von 25 auf 15 gestellt
CItemElem* pItemElem;
BYTE nValue = 0;
BOOL bLvlUp = FALSE;
if(m_pDefender->IsPlayer() && !m_pAttacker->IsPlayer())
{
// Wenn Spieler von Monster angegriffen -> Schild leveln.
pItemElem = m_pDefender->GetWeaponItem(PARTS_SHIELD);
nValue = 1;
}
else
if(!m_pDefender->IsPlayer() && m_pAttacker->IsPlayer())
{
// Wenn Monster von Spieler angegriffen -> Waffe leveln.
pItemElem = m_pAttacker->GetWeaponItem();
nValue = 2;
}
if(nValue == 1)
{
// if(m_pDefender->HasBuff(BUFF_ITEM, II_SYS_SYS_SCR_WEAPON_EXP2))
// fFaktor *= 2;
//if(m_pDefender->HasBuff(BUFF_ITEM, II_SYS_SYS_SCR_WEAPON_EXP3))
// fFaktor *= 3;
}
else
if(nValue == 2)
{
//if(m_pAttacker->HasBuff(BUFF_ITEM, II_SYS_SYS_SCR_WEAPON_EXP2))
// fFaktor *= 2;
//if(m_pAttacker->HasBuff(BUFF_ITEM, II_SYS_SYS_SCR_WEAPON_EXP3))
// fFaktor *= 3;
}
nDamage = (int)(nDamage * fFaktor);
if(pItemElem && (nValue == 1 || nValue == 2))
{
if(nValue == 2) // Wenn erste Hand eine Waffe ist
{
// Prüfe ob in der anderen Hand auch eine Waffe ist.
if(m_pAttacker->GetLWeaponItem())
{
BYTE cbHandFlag = GetHandFlag();
int nPart;
for( BYTE cbFlag = 0x01; cbFlag <= 0x02; ++cbFlag )
{
if( cbHandFlag & cbFlag )
{
nPart = (cbFlag & 0x01) ? PARTS_RWEAPON : PARTS_LWEAPON;
}
}
pItemElem = m_pAttacker->GetWeaponItem(nPart);
}
}
if(pItemElem && pItemElem->m_nWeaponLevel < 30 && pItemElem->m_nWeaponExp + nDamage >= (DWORD)(INT_MAX / 100 * pItemElem->m_nWeaponLevel))
{
// Level up
int nRest = pItemElem->m_nWeaponExp + nDamage - (INT_MAX / 100 * pItemElem->m_nWeaponLevel);
pItemElem->m_nWeaponExp = 0;
if(nValue == 2)
{
m_pAttacker->ResetDestParamEquip(pItemElem->GetProp(), pItemElem);
}
else
if(nValue == 1)
{
m_pDefender->ResetDestParamEquip(pItemElem->GetProp(), pItemElem);
}
pItemElem->m_nWeaponLevel++;
if(nValue == 2)
{
m_pAttacker->SetDestParamEquip(pItemElem->GetProp(), pItemElem);
}
else
if(nValue == 1)
{
m_pDefender->SetDestParamEquip(pItemElem->GetProp(), pItemElem);
}
bLvlUp = TRUE;
while(nRest > 0)
{
if(pItemElem->m_nWeaponLevel < 30 && nRest >= (INT_MAX / 100 * pItemElem->m_nWeaponLevel))
{
// Level Up
nRest -= (INT_MAX / 100 * pItemElem->m_nWeaponLevel);
if(nValue == 2)
{
m_pAttacker->ResetDestParamEquip(pItemElem->GetProp(), pItemElem);
}
else
if(nValue == 1)
{
m_pDefender->ResetDestParamEquip(pItemElem->GetProp(), pItemElem);
}
pItemElem->m_nWeaponLevel++;
if(nValue == 2)
{
m_pAttacker->SetDestParamEquip(pItemElem->GetProp(), pItemElem);
}
else
if(nValue == 1)
{
m_pDefender->SetDestParamEquip(pItemElem->GetProp(), pItemElem);
}
}
else
{
pItemElem->m_nWeaponExp += nRest;
if(pItemElem->m_nWeaponExp > (DWORD)(INT_MAX / 100 * pItemElem->m_nWeaponLevel))
pItemElem->m_nWeaponExp = (INT_MAX / 100 * pItemElem->m_nWeaponLevel);
nRest = 0;
}
}
}
else
{
// Exp gesteigert
pItemElem->m_nWeaponExp += nDamage;
if(pItemElem->m_nWeaponExp > (DWORD)(INT_MAX / 100 * pItemElem->m_nWeaponLevel))
pItemElem->m_nWeaponExp = (INT_MAX / 100 * pItemElem->m_nWeaponLevel);
}
CString str;
if(bLvlUp && pItemElem && pItemElem->GetProp())
{
str.Format("Deine Waffe(%s) ist auf Level %d gestiegen", pItemElem->GetProp()->szName, pItemElem->m_nWeaponLevel);
}
if(nValue == 2)
{
m_pAttacker->UpdateItem((BYTE)pItemElem->m_dwObjId, UI_WEAPON_LEVEL, pItemElem->m_nWeaponLevel);
m_pAttacker->UpdateItem((BYTE)pItemElem->m_dwObjId, UI_WEAPON_EXP, pItemElem->m_nWeaponExp);
if(bLvlUp)
{
((CUser*)m_pAttacker)->AddText(str);
g_UserMng.AddCreateSfxObj(m_pAttacker, XI_GEN_LEVEL_UP01 );
}
}
else
if(nValue == 1)
{
m_pDefender->UpdateItem((BYTE)pItemElem->m_dwObjId, UI_WEAPON_LEVEL, pItemElem->m_nWeaponLevel);
m_pDefender->UpdateItem((BYTE)pItemElem->m_dwObjId, UI_WEAPON_EXP, pItemElem->m_nWeaponExp);
if(bLvlUp)
{
((CUser*)m_pDefender)->AddText(str);
g_UserMng.AddCreateSfxObj(m_pDefender, XI_GEN_LEVEL_UP01 );
}
}
}
}
|