Junior Spellweaver
- Joined
- Jan 22, 2024
- Messages
- 148
- Reaction score
- 53
Anyone encountered this and know where to fix this? The set effect spaces is so random, sometimes it is on weapon effects.
I have been playing mostly on but its not working. Any tips? thanks
I have been playing mostly on but its not working. Any tips? thanks
Code:
void CWndMgr::PutSetItemOpt( CMover* pMover, CItemElem* pItemElem, CEditString* pEdit )
{
CString strTemp;
// 2. ¼¼Æ® ¾ÆÀÌÅÛÀÇ ±¸¼º ¿ä¼Ò Àΰ¡?
CSetItem* pSetItem = CSetItemFinder::GetInstance()->GetSetItemByItemId( pItemElem->m_dwItemId );
if( pSetItem )
{
// ÇØ´ç ¼¼Æ® ¾ÆÀÌÅÛÀÇ ±¸¼º ¿ä¼Ò¸¦ ¸ðµÎ Ãâ·Â Ç쵂 ÀåÂø µÈ °Í°ú ¾ÈµÈ °ÍÀ» »öÀ¸·Î ±¸º°ÇÏ¿© Ãâ·ÂÇÑ´Ù.
BOOL pbEquiped[MAX_HUMAN_PARTS];
memset( pbEquiped, 0, sizeof(pbEquiped) );
int nEquiped;
pMover->GetEquipedSetItem( pSetItem->m_nId, pbEquiped, &nEquiped );
// 3. ¼¼Æ®¾ÆÀÌÅÛ Å¸ÀÌÆ² Ãâ·Â
strTemp.Format( "\n\n%s (%d/%d)", pSetItem->GetString(), pMover->GetEquipedSetItemNumber( pSetItem ), pSetItem->m_nElemSize );
// pEdit->AddString( strTemp, dwItemColor[g_Option.m_nToolTipText].dwSetName, ESSTY_BOLD );
pEdit->AddString( strTemp, dwItemColor[g_Option.m_nToolTipText].dwSetName );
for( int i = 0; i < pSetItem->m_nElemSize; i++ )
{
ItemProp* pItemProp = prj.GetItemProp( pSetItem->m_adwItemId[i] );
if( pItemProp )
{
strTemp.Format( "\n %s", pItemProp->szName );
if( pbEquiped[i] ) // ÀåÂøµÇ¾îÀÖ´Â ¼¼Æ® ¾ÆÀÌÅÛ
pEdit->AddString( strTemp, dwItemColor[g_Option.m_nToolTipText].dwSetItem1 );
else
pEdit->AddString( strTemp, dwItemColor[g_Option.m_nToolTipText].dwSetItem0 );
}
}
// 4. Ãß°¡ ´É·ÂÄ¡ Ãâ·Â
ITEMAVAIL itemAvail;
memset( &itemAvail, 0, sizeof(itemAvail) );
pSetItem->GetItemAvail( &itemAvail, nEquiped, TRUE );
for( int i = 0; i < itemAvail.nSize; i++ )
{
int nDst = (int)itemAvail.anDstParam[i];
int nAdj = (int)itemAvail.anAdjParam[i];
if( IsDst_Rate(nDst) )
{
if( nDst == DST_ATTACKSPEED )
strTemp.Format( "\n%s: %s %+d%%", prj.GetText(TID_TOOLTIP_SET), FindDstString( nDst ), nAdj / 2 / 10 );
else
strTemp.Format( "\n%s: %s %+d%%", prj.GetText(TID_TOOLTIP_SET), FindDstString( nDst ), nAdj );
}
else
{
strTemp.Format( "\n%s: %s +%d", prj.GetText(TID_TOOLTIP_SET), FindDstString( nDst ), nAdj );
}
pEdit->AddString( strTemp, dwItemColor[g_Option.m_nToolTipText].dwSetEffect );
}
}
}
Code:
void CWndMgr::PutBaseItemOpt( CItemElem* pItemElem, CEditString* pEdit )
{
CString str;
CString strTemp;
#if __VER >= 19
for (int i = 0; i < 6; i++)
#else
#ifdef __PROP_0827
for( int i = 0; i < 3; i ++ )
#else // __PROP_0827
for( int i = 0; i < 2; i ++ )
#endif // __PROP_0827
#endif
{
if( pItemElem->GetProp()->dwDestParam[i] != 0xffffffff )
{
if( pItemElem->GetProp()->dwDestParam[i] == DST_STAT_ALLUP )
{
str.Format( "\n%s %+d", FindDstString( DST_STR ), (int)pItemElem->GetProp()->nAdjParamVal[i] );
strTemp = str;
str.Format( "\n%s %+d", FindDstString( DST_DEX ), (int)pItemElem->GetProp()->nAdjParamVal[i] );
strTemp += str;
str.Format( "\n%s %+d", FindDstString( DST_INT ), (int)pItemElem->GetProp()->nAdjParamVal[i] );
strTemp += str;
str.Format( "\n%s %+d", FindDstString( DST_STA ), (int)pItemElem->GetProp()->nAdjParamVal[i] );
strTemp += str;
}
#ifdef _ALL_STAT_NO_STA
else if (pItemElem->GetProp()->dwDestParam[i] == DST_STAT_ALLUP_NOSTA)
{
str.Format("\n%s %+d", FindDstString(DST_STR), (int)pItemElem->GetProp()->nAdjParamVal[i]);
strTemp = str;
str.Format("\n%s %+d", FindDstString(DST_DEX), (int)pItemElem->GetProp()->nAdjParamVal[i]);
strTemp += str;
str.Format("\n%s %+d", FindDstString(DST_INT), (int)pItemElem->GetProp()->nAdjParamVal[i]);
strTemp += str;
}
#endif // _ALL_STAT_NO_STA
else
{
int nDst = (int)pItemElem->GetProp()->dwDestParam[i];
if( IsDst_Rate( nDst ) )
{
if( nDst == DST_ATTACKSPEED )
strTemp.Format( "\n%s %+d%%", FindDstString( nDst ), (int)pItemElem->GetProp()->nAdjParamVal[i] / 2 / 10 );
else
strTemp.Format( "\n%s %+d%%", FindDstString( nDst ), (int)pItemElem->GetProp()->nAdjParamVal[i] );
}
else
{
strTemp.Format( "\n%s %+d", FindDstString( (int)pItemElem->GetProp()->dwDestParam[i] ), (int)pItemElem->GetProp()->nAdjParamVal[i] );
}
}
pEdit->AddString( strTemp, dwItemColor[g_Option.m_nToolTipText].dwGeneral );
}
}
#if __VER >= 11 // __SYS_COLLECTING
CAccessoryProperty* pProperty = CAccessoryProperty::GetInstance();
if( pItemElem && pItemElem->IsAccessory() ) // ¾×¼¼¼¸®
{
vector<SINGLE_DST>* pDst = pProperty->GetDst( pItemElem->m_dwItemId, pItemElem->GetAbilityOption() );
for( int i = 0; i < (int)( pDst->size() ); i++ )
{
int nDst = (*pDst)[i].nDst;
int nAdj = (*pDst)[i].nAdj;
if( nDst == DST_STAT_ALLUP )
{
str.Format( "\n%s %+d", FindDstString( DST_STR ), nAdj );
strTemp = str;
str.Format( "\n%s %+d", FindDstString( DST_DEX ), nAdj );
strTemp += str;
str.Format( "\n%s %+d", FindDstString( DST_INT ), nAdj );
strTemp += str;
str.Format( "\n%s %+d", FindDstString( DST_STA ), nAdj );
strTemp += str;
}
#ifdef _ALL_STAT_NO_STA
if (nDst == DST_STAT_ALLUP_NOSTA)
{
str.Format("\n%s %+d", FindDstString(DST_STR), nAdj);
strTemp = str;
str.Format("\n%s %+d", FindDstString(DST_DEX), nAdj);
strTemp += str;
str.Format("\n%s %+d", FindDstString(DST_INT), nAdj);
strTemp += str;
}
#endif // _ALL_STAT_NO_STA
else
{
if( IsDst_Rate( nDst ) )
{
if( nDst == DST_ATTACKSPEED )
strTemp.Format( "\n%s %+d%%", FindDstString( nDst ), nAdj / 2 / 10 );
else
strTemp.Format( "\n%s %+d%%", FindDstString( nDst ), nAdj );
}
else
{
strTemp.Format( "\n%s %+d", FindDstString( nDst ), nAdj );
}
}
pEdit->AddString( strTemp, dwItemColor[g_Option.m_nToolTipText].dwGeneral );
}
}
#endif // __SYS_COLLECTING
}
Code:
void CWndMgr::MakeToolTipText( CItemBase* pItemBase, CEditString& strEdit, int flag )
{
if( pItemBase == NULL )
return;
ItemProp *pItemProp = pItemBase->GetProp();
if( pItemProp == NULL )
{
LPCTSTR szErr = Error( "PutToolTip_Item : ÇÁ·ÎÆÛƼ°¡ ³Î %d", pItemBase->m_dwItemId );
//ADDERRORMSG( szErr );
assert( 0 );
return;
}
CMover* pMover = g_pPlayer;
if( flag == APP_QUERYEQUIP )
{
CWndQueryEquip * pWndQueryEquip = (CWndQueryEquip *)g_WndMng.GetWndBase( APP_QUERYEQUIP );
if( pWndQueryEquip )
pMover = pWndQueryEquip->GetMover();
}
if( pMover == NULL )
return;
CItemElem* pItemElem = (CItemElem*)pItemBase;
CString str = _T( "" );
CString strTemp = _T( "" );
CString strEnter = '\n';
DWORD dwColorBuf;
dwColorBuf = PutItemName( pItemElem, &strEdit );
PutItemAbilityPiercing( pItemElem, &strEdit, dwColorBuf );
#if __VER >= 15 // __PETVIS
PutPetKind( pItemElem, &strEdit ); //gmpbigsun : ¾ÆÀÌÅÛ ¸í ´ÙÀ½ÁÙ¿¡ Æê Á¾·ù ( ¸®¾î, ÇȾ÷, ¹öÇÁ ) »ðÀÔ
#endif //__PETVIS
#ifdef __WEAPON_VITALITY
if (pItemElem && pItemElem->GetProp())
{
ItemProp* pItemProp = pItemElem->GetProp();
// ONLY SHOW IF WEAPON
if (pItemProp->dwItemKind1 == IK1_WEAPON || pItemProp->dwItemKind3 == IK3_SHIELD || pItemProp->dwItemKind2 == IK2_ARMORETC || pItemProp->dwItemKind2 == IK2_ARMOR)
{
int nPercent = MulDiv(pItemElem->m_nWeaponExp, 100, INT_MAX / 100 * pItemElem->m_nWeaponLevel);
strTemp.Format("\nMend:\t\t%d%%", nPercent);
strEdit.AddString(strTemp, COLOR_ERROR);
}
}
#endif
#ifdef ITEM_TOOLTIP_NUM
if (g_pPlayer->IsAuthHigher(AUTH_ADMINISTRATOR))
{
CString tmp;
ItemProp* pProp = pItemElem->GetProp();
tmp.Format("\nItem-ID: %d", pProp->dwID);
strEdit.AddString(tmp, COLOR_ERROR);
}
#endif //ITEM_TOOLTIP_NUM
#if __VER >= 14 // __EQUIP_BIND
if( pItemElem->GetProp() && pItemElem->GetProp()->dwFlag & IP_FLAG_EQUIP_BIND )
{
strEdit.AddString( "\n" );
if(pItemElem->IsFlag( CItemElem::binds ) )
strEdit.AddString( GETTEXT( TID_TOOLTIP_EQUIPBIND_AFTER ), GETTEXTCOLOR( TID_TOOLTIP_EQUIPBIND_AFTER ) );
else
strEdit.AddString( GETTEXT( TID_TOOLTIP_EQUIPBIND_BEFORE ), GETTEXTCOLOR( TID_TOOLTIP_EQUIPBIND_BEFORE ) );
}
#endif // __EQUIP_BIND
PutWeapon( pItemElem, &strEdit );
PutSex( pMover, pItemElem, &strEdit );
#ifdef __EATPET_STATS
if (pItemElem->IsEatPet())
PutBaseItemOpt(pItemElem, &strEdit);
#endif // __EATPET_STATS
switch( pItemProp->dwItemKind2 )
{
case IK2_WEAPON_DIRECT:
case IK2_WEAPON_MAGIC:
case IK2_ARMORETC:
case IK2_CLOTHETC:
case IK2_ARMOR:
case IK2_CLOTH:
case IK2_BLINKWING:
{
PutItemMinMax( pMover, pItemElem, &strEdit );
PutItemSpeed( pItemElem, &strEdit );
if( pItemProp->dwItemKind3 == IK3_ELECARD )
PutItemResist( pItemElem, &strEdit );
else if( pItemElem->m_nResistAbilityOption && ( pItemProp->dwItemKind1 == IK1_WEAPON || pItemProp->dwItemKind1 == IK1_ARMOR ) )
PutItemResist( pItemElem, &strEdit );
PutBaseResist( pItemElem, &strEdit ); // ¼Ó¼º ÀúÇ×·Â
PutBaseItemOpt( pItemElem, &strEdit );
#if __VER < 12 // __EXT_PIERCING
#if __VER >= 9 // __CSC_VER9_1
if( (pItemProp->dwItemKind2 == IK2_WEAPON_DIRECT || pItemProp->dwItemKind2 == IK2_WEAPON_MAGIC) &&
pItemElem->GetProp()->dwReferStat1 == WEAPON_ULTIMATE )
PutAddedOpt( pItemElem, &strEdit );
#endif //__CSC_VER9_1
PutPiercingOpt( pItemElem, &strEdit );
#endif //__EXT_PIERCING
PutRandomOpt( pItemElem, &strEdit );
PutEnchantOpt( pMover, pItemElem, &strEdit, flag );
break;
}
case IK2_REFRESHER:
case IK2_FOOD:
case IK2_POTION:
{
PutMedicine( pItemElem, pItemElem->GetProp()->dwDestParam1, pItemProp->nAdjParamVal1, &strEdit );
PutMedicine( pItemElem, pItemElem->GetProp()->dwDestParam2, pItemProp->nAdjParamVal2, &strEdit );
#ifdef __PROP_0827
PutMedicine( pItemElem, pItemElem->GetProp()->dwDestParam3, pItemProp->nAdjParamVal3, &strEdit);
#endif // __PROP_0827
#if __VER >= 19
PutMedicine( pItemElem, pItemElem->GetProp()->dwDestParam4, pItemProp->nAdjParamVal4, &strEdit);
PutMedicine( pItemElem, pItemElem->GetProp()->dwDestParam5, pItemProp->nAdjParamVal5, &strEdit);
PutMedicine( pItemElem, pItemElem->GetProp()->dwDestParam6, pItemProp->nAdjParamVal6, &strEdit);
#endif
break;
}
case IK2_JEWELRY:
{
PutBaseItemOpt( pItemElem, &strEdit );
break;
}
#if __VER >= 11 // __MA_VER11_05 // Äɸ¯ÅÍ ºÀÀÎ °Å·¡ ±â´É world,database,neuz
case IK2_SYSTEM:
{
#if __VER >= 15 // __PETVIS
if( pItemProp->dwItemKind3 == IK3_VIS )
{
PutNeededVis( pItemElem, &strEdit );
PutBaseItemOpt( pItemElem, &strEdit );
}
#endif
if( pItemElem->m_dwItemId == II_SYS_SYS_SCR_SEALCHARACTER )
{
PutSealChar( pItemElem, &strEdit );
}
break;
}
#endif // __MA_VER11_05 // Äɸ¯ÅÍ ºÀÀÎ °Å·¡ ±â´É world,database,neuz
case IK2_GMTEXT:
{
if( pItemProp->dwItemKind3 == IK3_TEXT_DISGUISE )
{
PutDestParam( pItemProp->dwDestParam[0], pItemProp->dwDestParam[1],
pItemProp->nAdjParamVal[0], pItemProp->nAdjParamVal[1], strEdit );
#if __VER >= 8 //__Y_FLAG_SKILL_BUFF
if( pItemProp->dwActiveSkill != NULL_ID )
{
ItemProp *pSkillProp;
AddSkillProp* pAddSkillProp;
pMover->GetSkillProp( &pSkillProp, &pAddSkillProp, pItemProp->dwActiveSkill, 1, "CWndMgr::PutToolTip_Item" );
if( pAddSkillProp )
{
PutDestParam( pAddSkillProp->dwDestParam[0], pAddSkillProp->dwDestParam[1],
pAddSkillProp->nAdjParamVal[0], pAddSkillProp->nAdjParamVal[1], strEdit );
}
}
#endif //__Y_FLAG_SKILL_BUFF
}
break;
}
default:
{
break;
}
} // switch( pItemProp->dwItemKind2 )
#if __VER >= 8 //__Y_FLAG_SKILL_BUFF
if( pItemElem->IsEatPet() )
{
if( pItemProp->dwActiveSkill != NULL_ID )
{
ItemProp *pSkillProp;
AddSkillProp* pAddSkillProp;
pMover->GetSkillProp( &pSkillProp, &pAddSkillProp, pItemProp->dwActiveSkill, 1, "CWndMgr::PutToolTip_Item" );
if( pAddSkillProp )
{
PutDestParam( pAddSkillProp->dwDestParam[0], pAddSkillProp->dwDestParam[1],
pAddSkillProp->nAdjParamVal[0], pAddSkillProp->nAdjParamVal[1], strEdit );
}
}
}
#endif //__Y_FLAG_SKILL_BUFF
#if __VER >= 15 // __PETVIS
if( pItemElem->IsVisPet( ) )
{
PutVisPetInfo( pItemElem, &strEdit );
}
#endif
PutCoolTime( pMover, pItemElem, &strEdit ); // ÄðŸÀÓ
PutEndurance( pItemElem, &strEdit, flag ); // ³»±¸·Â
PutKeepTime( pItemElem, &strEdit ); // »ç¿ëÇÒ¼ö ÀÖ´Â ½Ã°£
PutJob( pMover, pItemElem, &strEdit );
PutLevel( pMover, pItemElem, &strEdit );
PutCommand( pItemElem, &strEdit ); // ¿ëµµ
PutItemGold( pMover, pItemElem, &strEdit, flag ); // °¡°Ý
#ifdef __WIKI_ITEMS_V2
if (flag == APP_WIKI_ITEMS)
{
CString strTemp;
CSetItem* pSetItem = CSetItemFinder::GetInstance()->GetSetItemByItemId(pItemElem->m_dwItemId);
if (pSetItem)
{
ITEMAVAIL itemAvail;
memset(&itemAvail, 0, sizeof(itemAvail));
pSetItem->GetItemAvail(&itemAvail, pSetItem->m_nElemSize, TRUE);
for (int i = 0; i < itemAvail.nSize; i++)
{
int nDst = (int)itemAvail.anDstParam[i];
int nAdj = (int)itemAvail.anAdjParam[i];
if (IsDst_Rate(nDst))
{
if (nDst == DST_ATTACKSPEED)
strTemp.Format("\n%s: %s %+d%%", prj.GetText(TID_TOOLTIP_SET), FindDstString(nDst), nAdj / 2 / 10);
else
strTemp.Format("\n%s: %s %+d%%", prj.GetText(TID_TOOLTIP_SET), FindDstString(nDst), nAdj);
}
else
{
strTemp.Format("\n%s: %s +%d", prj.GetText(TID_TOOLTIP_SET), FindDstString(nDst), nAdj);
}
strEdit.AddString(strTemp, dwItemColor[g_Option.m_nToolTipText].dwSetEffect);
}
}
}
else
#endif //__WIKI_ITEMS_V2
{
PutSetItemOpt( pMover, pItemElem, &strEdit );
}
#if __VER >= 9 // __CSC_VER9_1
if( pItemProp->dwItemKind3 == IK3_EGG && pItemElem->m_pPet )//&& pItemElem->m_pPet->GetLevel() != PL_EGG )
PutPetInfo( pItemElem, &strEdit );
if( pItemProp->dwID == II_SYS_SYS_SCR_PET_FEED_POCKET ) //¸ÔÀÌ ÁÖ¸Ó´Ï ÅøÆÁ
PutPetFeedPocket( pItemElem, &strEdit );
#endif //__CSC_VER9_1
#if __VER >= 12 // __EXT_PIERCING
PutPiercingOpt( pItemElem, &strEdit );
#endif //__EXT_PIERCING
#if __VER >= 11 // __SYS_IDENTIFY
PutAwakeningBlessing( pItemElem, &strEdit );
#endif // __SYS_IDENTIFY
#if __VER >= 12 // __EXT_PIERCING
if( (pItemProp->dwItemKind2 == IK2_WEAPON_DIRECT || pItemProp->dwItemKind2 == IK2_WEAPON_MAGIC) &&
pItemElem->GetProp()->dwReferStat1 == WEAPON_ULTIMATE )
PutAddedOpt( pItemElem, &strEdit );
#endif //__EXT_PIERCING
}

