- Joined
- Aug 29, 2010
- Messages
- 160
- Reaction score
- 3
I found some codes in the snippets in the tutorial section. But my Baruna code doesn't match with the one in the snippets. My baruna source is ripped from Dits Source. I tried modifying it but I end up all weapons cannot be awaken (All weapons do not show "Awakening Available").
Here are the codes from my source which I think is similar from the snippets I found. :
randomoption.cpp
WndManager.cpp
DPSrvr.cpp
Please help me thanks
Here are the codes from my source which I think is similar from the snippets I found. :
randomoption.cpp
int CRandomOptionProperty::GetRandomOptionKind( CItemElem* pItemElem )
{
ItemProp* pProp = pItemElem->GetProp();
switch( pProp->dwParts )
{
case PARTS_UPPER_BODY:
case PARTS_RWEAPON:
case PARTS_SHIELD:
#if __VER >= 12 // __J12_0
// °¢¼º °¡´É ÆÄÃ÷ Ãß°¡
case PARTS_HAND: // ¼Õ
case PARTS_FOOT: // ¹ß
case PARTS_CAP: // ¸Ó¸®
#endif // __J12_0
#ifdef __NEW_ITEM_VARUNA
{
if( pItemElem->GetProp()->IsBaruna() )
return -1;
else
return static_cast<int>( eAwakening );
}
#endif // __NEW_ITEM_VARUNA
case PARTS_CLOTH:
case PARTS_CLOAK:
#if __VER >= 12 // __J12_0
case PARTS_HAT: // °Ñ¿Ê ¸Ó¸®
case PARTS_GLOVE: // °Ñ¿Ê ¼Õ
case PARTS_BOOTS: // °Ñ¿Ê ¹ß
#endif // __J12_0
return static_cast<int>( eBlessing );
#if __VER >= 12 // __PET_0519
default:
{
// C±Þ ÀÌ»óÀÇ ½Ã½ºÅÛ ÆêÀΰ¡?
if( pProp->dwItemKind3 == IK3_EGG && pItemElem->m_pPet && pItemElem->m_pPet->GetLevel() >= PL_C )
return static_cast<int>( eSystemPet );
// ¸ÔÆêÀΰ¡?
else if( pProp->dwItemKind3 == IK3_PET )
return static_cast<int>( eEatPet );
break;
}
#endif // __PET_0519
}
return -1;
}
{
ItemProp* pProp = pItemElem->GetProp();
switch( pProp->dwParts )
{
case PARTS_UPPER_BODY:
case PARTS_RWEAPON:
case PARTS_SHIELD:
#if __VER >= 12 // __J12_0
// °¢¼º °¡´É ÆÄÃ÷ Ãß°¡
case PARTS_HAND: // ¼Õ
case PARTS_FOOT: // ¹ß
case PARTS_CAP: // ¸Ó¸®
#endif // __J12_0
#ifdef __NEW_ITEM_VARUNA
{
if( pItemElem->GetProp()->IsBaruna() )
return -1;
else
return static_cast<int>( eAwakening );
}
#endif // __NEW_ITEM_VARUNA
case PARTS_CLOTH:
case PARTS_CLOAK:
#if __VER >= 12 // __J12_0
case PARTS_HAT: // °Ñ¿Ê ¸Ó¸®
case PARTS_GLOVE: // °Ñ¿Ê ¼Õ
case PARTS_BOOTS: // °Ñ¿Ê ¹ß
#endif // __J12_0
return static_cast<int>( eBlessing );
#if __VER >= 12 // __PET_0519
default:
{
// C±Þ ÀÌ»óÀÇ ½Ã½ºÅÛ ÆêÀΰ¡?
if( pProp->dwItemKind3 == IK3_EGG && pItemElem->m_pPet && pItemElem->m_pPet->GetLevel() >= PL_C )
return static_cast<int>( eSystemPet );
// ¸ÔÆêÀΰ¡?
else if( pProp->dwItemKind3 == IK3_PET )
return static_cast<int>( eEatPet );
break;
}
#endif // __PET_0519
}
return -1;
}
WndManager.cpp
#if __VER >= 9 //__CSC_VER9_1
if( pItemElem->GetProp()->dwReferStat1 == WEAPON_GENERAL )
dwColorbuf = dwItemColor[g_Option.m_nToolTipText].dwName0;
else if( pItemElem->GetProp()->dwReferStat1 == WEAPON_UNIQUE )
dwColorbuf = dwItemColor[g_Option.m_nToolTipText].dwName1;
else if( pItemElem->GetProp()->dwReferStat1 == WEAPON_ULTIMATE )
dwColorbuf = dwItemColor[g_Option.m_nToolTipText].dwName3;
else if( pItemElem->GetProp()->dwReferStat1 == ARMOR_SET )
dwColorbuf = dwItemColor[g_Option.m_nToolTipText].dwName1;
#ifdef __NEW_ITEM_VARUNA
else if( pItemElem->GetProp()->dwReferStat1 >= BARUNA_D && pItemElem->GetProp()->dwReferStat1 <= BARUNA_S )
dwColorbuf = dwItemColor[g_Option.m_nToolTipText].dwName4;
#endif // __NEW_ITEM_VARUNA
#else //__CSC_VER9_1
if( pItemElem->GetProp()->dwItemRare == 200 )
dwColorbuf = dwItemColor[g_Option.m_nToolTipText].dwName1;
else if( pItemElem->GetProp()->dwItemRare == 300 )
dwColorbuf = dwItemColor[g_Option.m_nToolTipText].dwName2;
if( pItemElem->GetProp()->dwReferStat1 == WEAPON_GENERAL )
dwColorbuf = dwItemColor[g_Option.m_nToolTipText].dwName0;
else if( pItemElem->GetProp()->dwReferStat1 == WEAPON_UNIQUE )
dwColorbuf = dwItemColor[g_Option.m_nToolTipText].dwName1;
else if( pItemElem->GetProp()->dwReferStat1 == WEAPON_ULTIMATE )
dwColorbuf = dwItemColor[g_Option.m_nToolTipText].dwName3;
else if( pItemElem->GetProp()->dwReferStat1 == ARMOR_SET )
dwColorbuf = dwItemColor[g_Option.m_nToolTipText].dwName1;
#ifdef __NEW_ITEM_VARUNA
else if( pItemElem->GetProp()->dwReferStat1 >= BARUNA_D && pItemElem->GetProp()->dwReferStat1 <= BARUNA_S )
dwColorbuf = dwItemColor[g_Option.m_nToolTipText].dwName4;
#endif // __NEW_ITEM_VARUNA
#else //__CSC_VER9_1
if( pItemElem->GetProp()->dwItemRare == 200 )
dwColorbuf = dwItemColor[g_Option.m_nToolTipText].dwName1;
else if( pItemElem->GetProp()->dwItemRare == 300 )
dwColorbuf = dwItemColor[g_Option.m_nToolTipText].dwName2;
DPSrvr.cpp
void CDPSrvr::OnDoUseItemTarget( CAr & ar, DPID dpidCache, DPID dpidUser, LPBYTE lpBuf, u_long uBufSize)
{
DWORD dwMaterial, dwTarget;
ar >> dwMaterial >> dwTarget;
CUser* pUser = g_UserMng.GetUser( dpidCache, dpidUser );
if( IsValidObj( pUser ) )
{
CItemElem* pMaterial = (CItemElem*)pUser->GetItemId( dwMaterial );
CItemElem* pTarget = (CItemElem*)pUser->GetItemId( dwTarget );
if( !IsUsableItem( pMaterial ) || !IsUsableItem( pTarget ) )
return;
if( pUser->m_Inventory.IsEquip( dwTarget ) )
{
pUser->AddDefinedText( TID_GAME_EQUIPPUT );
return;
}
BOOL b = FALSE;
switch( pMaterial->m_dwItemId )
{
case II_SYS_SYS_QUE_PETRESURRECTION02_S:
case II_SYS_SYS_QUE_PETRESURRECTION02_A:
case II_SYS_SYS_QUE_PETRESURRECTION02_B:
{
CPet* pPet = pTarget->m_pPet;
if( !pPet || !pTarget->IsFlag( CItemElem::expired ) )
{
pUser->AddDefinedText( TID_GAME_PETRESURRECTION_WRONG_TARGET_01 );
}
else
{
BYTE nLevel = pPet->GetLevel();
if( ( nLevel == PL_B && pMaterial->m_dwItemId != II_SYS_SYS_QUE_PETRESURRECTION02_B )
|| ( nLevel == PL_A && pMaterial->m_dwItemId != II_SYS_SYS_QUE_PETRESURRECTION02_A )
|| ( nLevel == PL_S && pMaterial->m_dwItemId != II_SYS_SYS_QUE_PETRESURRECTION02_S )
|| ( nLevel < PL_B )
)
{
pUser->AddDefinedText( TID_GAME_PETRESURRECTION_WRONG_TARGET_02 );
}
else
{
PutItemLog( pUser, "r", ":
etResurrection", pTarget );
pTarget->ResetFlag( CItemElem::expired );
pUser->UpdateItem( (BYTE)( pTarget->m_dwObjId ), UI_FLAG, MAKELONG( pTarget->m_dwObjIndex, pTarget->m_byFlag ) );
pPet->SetLife( 0 );
pPet->SetEnergy( pPet->GetMaxEnergy() / 2 );
pUser->AddPetState( pTarget->m_dwObjId, pPet->GetLife(), pPet->GetEnergy(), pPet->GetExp() );
pUser->AddDefinedText( TID_GAME_PETRESURRECTION_SUCCESS );
b = TRUE;
}
}
break;
}
case II_SYS_SYS_SCR_AWAKECANCEL:
case II_SYS_SYS_SCR_AWAKECANCEL02:
b = DoUseItemTarget_InitializeRandomOption( pUser, pTarget, CRandomOptionProperty::eAwakening,
TID_GAME_AWAKECANCEL_INFO, TID_GAME_AWAKECANCEL,
"r", "::AwakeCancel" );
break;
case II_SYS_SYS_SCR_AWAKE:
#ifdef __NEW_ITEM_VARUNA
if( pTarget->GetProp()->IsBaruna() )
{
b = DoUseItemTarget_GenRandomOption( pUser, pTarget, CRandomOptionProperty::eAwakening,
0, TID_MMI_ERRORSENCHANT_BARUNA, TID_GAME_AWAKE_OR_BLESSEDNESS01,
"r", "::Awake" );
}else
#endif // __NEW_ITEM_VARUNA
{
b = DoUseItemTarget_GenRandomOption( pUser, pTarget, CRandomOptionProperty::eAwakening,
0, TID_GAME_INVALID_TARGET_ITEM, TID_GAME_AWAKE_OR_BLESSEDNESS01,
"r", "::Awake" );
}
break;
case II_SYS_SYS_SCR_BLESSEDNESS:
case II_SYS_SYS_SCR_BLESSEDNESS02:
b = DoUseItemTarget_GenRandomOption( pUser, pTarget, CRandomOptionProperty::eBlessing,
0, TID_GAME_USE_BLESSEDNESS_INFO, TID_GAME_BLESSEDNESS_INVALID_ITEM,
"r", "::Blessedness" );
break;
#if __VER >= 12 // __PET_0519
case II_SYS_SYS_SCR_EATPETAWAKE: // ¸ÔÆê °¢¼º
b = DoUseItemTarget_GenRandomOption( pUser, pTarget, CRandomOptionProperty::eEatPet,
TID_GAME_PETAWAKE_S00, TID_GAME_PETAWAKE_E00, TID_GAME_PETAWAKE_E00,
"r", "EATPETAWAKE" );
break;
case II_SYS_SYS_SCR_PETAWAKE: // ½Ã½ºÅÛ Æê °¢¼º
b = DoUseItemTarget_GenRandomOption( pUser, pTarget, CRandomOptionProperty::eSystemPet,
TID_GAME_PETAWAKE_S00, TID_GAME_PETAWAKE_E00, TID_GAME_PETAWAKE_E00,
"r", "PETAWAKE" );
break;
case II_SYS_SYS_SCR_PETAWAKECANCEL: // ½Ã½ºÅÛ Æê °¢¼º Ãë¼Ò
b = DoUseItemTarget_InitializeRandomOption( pUser, pTarget, CRandomOptionProperty::eSystemPet,
TID_GAME_PETAWAKECANCEL_S00, TID_GAME_PETAWAKECANCEL_E00,
"r", "PETAWAKECANCEL" );
break;
#endif // __PET_0519
case II_SYS_SYS_SCR_LEVELDOWN01:
case II_SYS_SYS_SCR_LEVELDOWN02:
b = DoUseItemTarget_ItemLevelDown( pUser, pMaterial, pTarget );
break;
default:
break;
}
if( b )
{
pUser->AddPlaySound( SND_INF_UPGRADESUCCESS );
if( pUser->IsMode( TRANSPARENT_MODE ) == 0 )
g_UserMng.AddCreateSfxObj( pUser, XI_INT_SUCCESS, pUser->GetPos().x, pUser->GetPos().y, pUser->GetPos().z );
PutItemLog( pUser, "u", "OnDoUseItemTarget", pMaterial );
pUser->UpdateItem( (BYTE)( pMaterial->m_dwObjId ), UI_NUM, pMaterial->m_nItemNum - 1 );
}
}
}
#endif // __SYS_IDENTIFY
{
DWORD dwMaterial, dwTarget;
ar >> dwMaterial >> dwTarget;
CUser* pUser = g_UserMng.GetUser( dpidCache, dpidUser );
if( IsValidObj( pUser ) )
{
CItemElem* pMaterial = (CItemElem*)pUser->GetItemId( dwMaterial );
CItemElem* pTarget = (CItemElem*)pUser->GetItemId( dwTarget );
if( !IsUsableItem( pMaterial ) || !IsUsableItem( pTarget ) )
return;
if( pUser->m_Inventory.IsEquip( dwTarget ) )
{
pUser->AddDefinedText( TID_GAME_EQUIPPUT );
return;
}
BOOL b = FALSE;
switch( pMaterial->m_dwItemId )
{
case II_SYS_SYS_QUE_PETRESURRECTION02_S:
case II_SYS_SYS_QUE_PETRESURRECTION02_A:
case II_SYS_SYS_QUE_PETRESURRECTION02_B:
{
CPet* pPet = pTarget->m_pPet;
if( !pPet || !pTarget->IsFlag( CItemElem::expired ) )
{
pUser->AddDefinedText( TID_GAME_PETRESURRECTION_WRONG_TARGET_01 );
}
else
{
BYTE nLevel = pPet->GetLevel();
if( ( nLevel == PL_B && pMaterial->m_dwItemId != II_SYS_SYS_QUE_PETRESURRECTION02_B )
|| ( nLevel == PL_A && pMaterial->m_dwItemId != II_SYS_SYS_QUE_PETRESURRECTION02_A )
|| ( nLevel == PL_S && pMaterial->m_dwItemId != II_SYS_SYS_QUE_PETRESURRECTION02_S )
|| ( nLevel < PL_B )
)
{
pUser->AddDefinedText( TID_GAME_PETRESURRECTION_WRONG_TARGET_02 );
}
else
{
PutItemLog( pUser, "r", ":
pTarget->ResetFlag( CItemElem::expired );
pUser->UpdateItem( (BYTE)( pTarget->m_dwObjId ), UI_FLAG, MAKELONG( pTarget->m_dwObjIndex, pTarget->m_byFlag ) );
pPet->SetLife( 0 );
pPet->SetEnergy( pPet->GetMaxEnergy() / 2 );
pUser->AddPetState( pTarget->m_dwObjId, pPet->GetLife(), pPet->GetEnergy(), pPet->GetExp() );
pUser->AddDefinedText( TID_GAME_PETRESURRECTION_SUCCESS );
b = TRUE;
}
}
break;
}
case II_SYS_SYS_SCR_AWAKECANCEL:
case II_SYS_SYS_SCR_AWAKECANCEL02:
b = DoUseItemTarget_InitializeRandomOption( pUser, pTarget, CRandomOptionProperty::eAwakening,
TID_GAME_AWAKECANCEL_INFO, TID_GAME_AWAKECANCEL,
"r", "::AwakeCancel" );
break;
case II_SYS_SYS_SCR_AWAKE:
#ifdef __NEW_ITEM_VARUNA
if( pTarget->GetProp()->IsBaruna() )
{
b = DoUseItemTarget_GenRandomOption( pUser, pTarget, CRandomOptionProperty::eAwakening,
0, TID_MMI_ERRORSENCHANT_BARUNA, TID_GAME_AWAKE_OR_BLESSEDNESS01,
"r", "::Awake" );
}else
#endif // __NEW_ITEM_VARUNA
{
b = DoUseItemTarget_GenRandomOption( pUser, pTarget, CRandomOptionProperty::eAwakening,
0, TID_GAME_INVALID_TARGET_ITEM, TID_GAME_AWAKE_OR_BLESSEDNESS01,
"r", "::Awake" );
}
break;
case II_SYS_SYS_SCR_BLESSEDNESS:
case II_SYS_SYS_SCR_BLESSEDNESS02:
b = DoUseItemTarget_GenRandomOption( pUser, pTarget, CRandomOptionProperty::eBlessing,
0, TID_GAME_USE_BLESSEDNESS_INFO, TID_GAME_BLESSEDNESS_INVALID_ITEM,
"r", "::Blessedness" );
break;
#if __VER >= 12 // __PET_0519
case II_SYS_SYS_SCR_EATPETAWAKE: // ¸ÔÆê °¢¼º
b = DoUseItemTarget_GenRandomOption( pUser, pTarget, CRandomOptionProperty::eEatPet,
TID_GAME_PETAWAKE_S00, TID_GAME_PETAWAKE_E00, TID_GAME_PETAWAKE_E00,
"r", "EATPETAWAKE" );
break;
case II_SYS_SYS_SCR_PETAWAKE: // ½Ã½ºÅÛ Æê °¢¼º
b = DoUseItemTarget_GenRandomOption( pUser, pTarget, CRandomOptionProperty::eSystemPet,
TID_GAME_PETAWAKE_S00, TID_GAME_PETAWAKE_E00, TID_GAME_PETAWAKE_E00,
"r", "PETAWAKE" );
break;
case II_SYS_SYS_SCR_PETAWAKECANCEL: // ½Ã½ºÅÛ Æê °¢¼º Ãë¼Ò
b = DoUseItemTarget_InitializeRandomOption( pUser, pTarget, CRandomOptionProperty::eSystemPet,
TID_GAME_PETAWAKECANCEL_S00, TID_GAME_PETAWAKECANCEL_E00,
"r", "PETAWAKECANCEL" );
break;
#endif // __PET_0519
case II_SYS_SYS_SCR_LEVELDOWN01:
case II_SYS_SYS_SCR_LEVELDOWN02:
b = DoUseItemTarget_ItemLevelDown( pUser, pMaterial, pTarget );
break;
default:
break;
}
if( b )
{
pUser->AddPlaySound( SND_INF_UPGRADESUCCESS );
if( pUser->IsMode( TRANSPARENT_MODE ) == 0 )
g_UserMng.AddCreateSfxObj( pUser, XI_INT_SUCCESS, pUser->GetPos().x, pUser->GetPos().y, pUser->GetPos().z );
PutItemLog( pUser, "u", "OnDoUseItemTarget", pMaterial );
pUser->UpdateItem( (BYTE)( pMaterial->m_dwObjId ), UI_NUM, pMaterial->m_nItemNum - 1 );
}
}
}
#endif // __SYS_IDENTIFY
Please help me thanks

