Question About Weapon Leveling

06/22/2013 03:47 macboyem07#1
My weapon Level Can't Gets Exp and Level..

InGame Screen --> [Only registered and activated users can see links. Click Here To Register...]

I Used This Source --> [Only registered and activated users can see links. Click Here To Register...]

AnyOne Can Help me Plss :handsdown:

Sorry For My Bad English xD

Thanks In Advance Guys
06/22/2013 07:30 ThoughtfulDev#2
you have any error logs or have you added the part in attackarbiter.cpp?
06/22/2013 13:23 macboyem07#3
Quote:
Originally Posted by Shonenx33 View Post
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 );
}
}


}
}
06/22/2013 15:53 Suplado21#4
just atack higher moster ,
06/23/2013 06:17 macboyem07#5
Quote:
Originally Posted by Suplado21 View Post
just atack higher moster ,
I try atk higher monster nothing happen ..no exp gain...

I ask my friend..he said need a database of weapon level...its that true? XD
06/23/2013 06:22 Suplado21#6
Try to re check your DBmanagersave
06/23/2013 07:52 ThoughtfulDev#7
just use one from a relased source.