Set Effect Tooltip

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
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
}
1768798356196 - Set Effect Tooltip - RaGEZONE Forums
1768798376266 - Set Effect Tooltip - RaGEZONE Forums
 
found out that max letters including space on the count is 15 letters. Then it will move /br but if it is less than it will not but if it reach 16 letters it will properly going fix the width size length
 
Upvote 0
Back