Quote:
Originally Posted by Avalion
CDPSvr::OnLegendSkillStart
dpsrvr.cpp
|
void CDPSrvr::OnLegendSkillStart( CAr & ar, DPID dpidCache, DPID dpidUser, LPBYTE lpBuf, u_long uBufSize )
{
CUser* pUser = g_UserMng.GetUser( dpidCache, dpidUser );
if( IsValidObj( pUser ) == FALSE )
return;
OBJID objItemId[5];
for( int i=0; i<5; ++i )
ar >> objItemId[i];
if(pUser->IsHero() == FALSE)
return;
for( i = 0; i < MAX_SKILL_JOB; i++ )
{
LPSKILL lpSkill = &(pUser->m_aJobSkill[i]);
if( lpSkill && lpSkill->dwSkill != NULL_ID )
{
ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill );
if( pSkillProp == NULL )
continue;
if( pSkillProp->dwItemKind1 != JTYPE_HERO)
continue;
if( lpSkill->dwLevel > 4 )
{
pUser->AddLegendSkillResult(-1);
return;
}
}
}
CItemElem* pItemElem[5];
// ภฯฤกวฯดยม๖ ฐหป็ (ภฮบฅลไธฎฟกผญ ฐหป็)
for( i=0; i<5; i++ )
{
pItemElem[i] = (CItemElem*)pUser->m_Inventory.GetAtId( objItemId[i] );
if( IsUsableItem( pItemElem[i] ) == FALSE )
return ;
}
if( pItemElem[0]->m_dwItemId != II_GEN_MAT_DIAMOND ||
pItemElem[1]->m_dwItemId != II_GEN_MAT_EMERALD ||
pItemElem[2]->m_dwItemId != II_GEN_MAT_SAPPHIRE ||
pItemElem[3]->m_dwItemId != II_GEN_MAT_RUBY ||
pItemElem[4]->m_dwItemId != II_GEN_MAT_TOPAZ )
return;
// ธ๐ตฮ ภฯฤกวฯธ้ บธผฎ พฦภฬล ป่มฆ
for( i=0; i<5 ; i++ )
{
LogItemInfo aLogItem;
aLogItem.Action = "+";
aLogItem.SendName = pUser->GetName();
aLogItem.RecvName = "LEGENDSKILL_USE";
aLogItem.WorldId = pUser->GetWorld()->GetID();
OnLogItem( aLogItem, pItemElem[i], 1 );
pUser->RemoveItem( (BYTE)( objItemId[i] ), (short)1 );
}
if( xRandom(1000) > 766 )
{
for( i = 0; i < MAX_SKILL_JOB; i++ )
{
LPSKILL lpSkill = &(pUser->m_aJobSkill[i]);
if( lpSkill && lpSkill->dwSkill != NULL_ID )
{
ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill );
if( pSkillProp == NULL )
continue;
if( pSkillProp->dwItemKind1 != JTYPE_HERO)
continue;
lpSkill->dwLevel++;
g_dpDBClient.SendLogSkillPoint( LOG_SKILLPOINT_USE, 1, (CMover*)pUser, &(pUser->m_aJobSkill[i]) );
}
}
g_UserMng.AddCreateSfxObj((CMover *)pUser, XI_SYS_EXCHAN01, pUser->GetPos().x, pUser->GetPos().y, pUser->GetPos().z);
pUser->AddDoUseSkillPoint( &(pUser->m_aJobSkill[0]), pUser->m_nSkillPoint );
#ifdef __S_NEW_SKILL_2
g_dpDBClient.SaveSkill( pUser );
#endif // __S_NEW_SKILL_2
pUser->AddLegendSkillResult(TRUE);
}
else
{
pUser->AddLegendSkillResult(FALSE);
}
}
#endif //__LEGEND // 9ย๗ ภฝยฝรฝบล Neuz, World, Trans
where edit?