transmuted icon inside tooltip

10/02/2022 13:41 Int16#1
howdy this is a little addition for the __LOOKCHANGE system (using it on ketchup files)
it basically shows the transmuted item inside the tooltip

I know this isn't something big but i do those little snippets to expand my understanding for the flyff source and the coding language in general.
since im not a professional when it comes to coding i would be happy about some criticism or if someone points out some bad practices!

[Only registered and activated users can see links. Click Here To Register...]
[tooltip.h]

[WndManger.cpp]

[WndField.cpp] ( __ITEMLINK tooltip )
10/02/2022 15:22 Nιgнтмαяε#2
Neat idea.
10/03/2022 12:57 liulinkan#3
Warum funktioniert das, was ich hinzugefügt habe, nicht, ohne Symbole anzuzeigen?
10/03/2022 13:30 Int16#4
Quote:
Originally Posted by liulinkan View Post
Warum funktioniert das, was ich hinzugefügt habe, nicht, ohne Symbole anzuzeigen?
I do understand german but this sentence makes no sense at all ..
If something is not working i need some proper explanation on what exactly is working and what is not

one thing for sure is that you need the _LOOKCHANGE beforehand ( or could be named different in your source)

if its indeed named something different you need to also change the define names from the snippet i posted

Code:
#if defined(__LOOKCHANGE_TOOLTIP) && defined(RIGHT HERE)
10/04/2022 04:20 liulinkan#5
Quote:
Originally Posted by Int16 View Post
I do understand german but this sentence makes no sense at all ..
If something is not working i need some proper explanation on what exactly is working and what is not

one thing for sure is that you need the _LOOKCHANGE beforehand ( or could be named different in your source)

if its indeed named something different you need to also change the define names from the snippet i posted

Code:
#if defined(__LOOKCHANGE_TOOLTIP) && defined(RIGHT HERE)
Ich benutze Ketchup K18.3, das auch __LOOKCHANG definiert, funktioniert auch, zeigt nur keine Symbole an
10/04/2022 04:58 Int16#6
In the wndmanager snipped i posted check the first 2 parts if you missed something

If its not the issue ill have a look at it when im home

But does it show the "Skin :" text inside the tooltip?
10/04/2022 15:40 liulinkan#7
g_toolTip.PutToolTip( pItemBase->m_dwItemId, strItem, *pRect, point, 0 );
#if defined(__LOOKCHANGE_TOOLTIP) && defined(__LOOKCHANGE)
CItemElem* itemElement = (CItemElem*)pItemBase;

if(itemElement->IsChangedLook() && pItemBase->GetProp()->bCanLooksChange && itemElement->GetLook() != NULL_ID )
g_toolTip.SetSkinTexture(pItemBase);
#endif //__LOOKCHANGE_TOOLTIP
#ifdef __WEAPON_LEVELING
g_toolTip.m_pItemElem = (CItemElem*)pItemBase;
#endif
if( pItemProp->IsUltimate() )
g_toolTip.SetUltimateToolTip( pItemBase );
#ifdef __NEW_ITEM_VARUNA
if( pItemProp->IsBaruna() )
g_toolTip.SetBarunaToolTip( pItemBase );
#endif // __NEW_ITEM_VARUNA
else // __IMPROVE_SYSTEM_VER15
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;
CString strTemp;
CString strEnter = '\n';
CEditString strEdit; // 傈眉甫 历厘窍绰 String

DWORD dwColorBuf;
dwColorBuf = PutItemName( pItemElem, &strEdit );
PutItemAbilityPiercing( pItemElem, &strEdit, dwColorBuf );
#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 );

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:
#ifdef __UNLIMITED_ARROW
case IK2_BULLET:
#endif // __UNLIMITED_ARROW
#ifdef __UNLIMITED_CHARM
case IK2_CHARM:
#endif // __UNLIMITED_CHARM
{
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 );
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

#ifdef __ANARCHY_SYSTEM
case IK2_BUFF:
case IK2_BUFF2:
//case IK2_KEEP:
PutSkillTime(pItemElem, &strEdit, flag);
PutCooldown(pItemElem, &strEdit, flag);
//PutBaseItemOpt(pItemElem, &strEdit, flag, true);
PutBaseItemOpt(pItemElem, &strEdit);
break;
#endif // __ANARCHY_SYSTEM

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 ); // 啊拜

#if !defined(__LOOKCHANGE_TOOLTIP) && defined(__LOOKCHANGE)
PutLookText(pItemElem, &strEdit);
#endif
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
g_toolTip.PutToolTip( pItemBase->m_dwItemId, strEdit, *pRect, point, 0 );
#if __VER >= 9 // __CSC_VER9_1
if( pItemProp->IsUltimate() )
g_toolTip.SetUltimateToolTip(pItemBase);
#endif //__CSC_VER9_1
#ifdef __NEW_ITEM_VARUNA
if (pItemProp->IsBaruna())
g_toolTip.SetBarunaToolTip(pItemBase);
#endif // __NEW_ITEM_VARUNA
#endif // __IMPROVE_SYSTEM_VER15
}

#if __VER >= 15 // __IMPROVE_SYSTEM_VER15
void CWndMgr::PutToolTipItemAndSubToolTip( CItemBase* pItemBase, CPoint point, CRect* pRect, int nFlag )
{
// 促吝 砒屏 矫胶袍捞 利侩登搁辑 砒屏 免仿 傈俊 砒屏 胶困摹甫 固府 技泼秦辑 困摹甫 炼沥

g_toolTip.SetSubToolTipNumber( TOOL_TIP_SWITCH_MAIN );
#ifdef __WEAPON_LEVELING
g_toolTip.m_pItemElem = (CItemElem*)pItemBase;
#endif
PutToolTipParts( pItemBase, point, pRect, nFlag, TOOL_TIP_SWITCH_MAIN );
ItemProp* pItemProp = pItemBase->GetProp();
switch( pItemProp->dwItemKind2 )
{
case IK2_WEAPON_DIRECT:
case IK2_WEAPON_MAGIC:
case IK2_ARMOR:
case IK2_ARMORETC:
case IK2_CLOTH:
case IK2_CLOTHETC:
case IK2_JEWELRY:
case IK2_RIDING:
case IK2_CLOTHWIG:
{
CItemBase* pEquipItemBase = g_pPlayer->GetEquipItem( pItemProp->dwParts );
if( pEquipItemBase )
{
g_toolTip.SetSubToolTipNumber( TOOL_TIP_SWITCH_SUB1 );
PutToolTipParts( pEquipItemBase, point, pRect, nFlag, TOOL_TIP_SWITCH_SUB1 );
}
if( pItemProp->dwParts == PARTS_RWEAPON )
{
CItemBase* pRWeaponItemBase = g_pPlayer->GetEquipItem( PARTS_RWEAPON );
CItemBase* pLWeaponItemBase = g_pPlayer->GetEquipItem( PARTS_LWEAPON );
if( pRWeaponItemBase && pLWeaponItemBase )
{
g_toolTip.SetSubToolTipNumber( TOOL_TIP_SWITCH_SUB2 );
PutToolTipParts( pLWeaponItemBase, point, pRect, nFlag, TOOL_TIP_SWITCH_SUB2 );
}
else if( pRWeaponItemBase )
{
g_toolTip.SetSubToolTipNumber( TOOL_TIP_SWITCH_SUB1 );
PutToolTipParts( pRWeaponItemBase, point, pRect, nFlag, TOOL_TIP_SWITCH_SUB1 );
}
else if( pLWeaponItemBase )
{
g_toolTip.SetSubToolTipNumber( TOOL_TIP_SWITCH_SUB1 );
PutToolTipParts( pLWeaponItemBase, point, pRect, nFlag, TOOL_TIP_SWITCH_SUB1 );
}
}
else if( pItemProp->dwParts == PARTS_RING1 )
{
CItemBase* pRing1ItemBase = g_pPlayer->GetEquipItem( PARTS_RING1 );
CItemBase* pRing2ItemBase = g_pPlayer->GetEquipItem( PARTS_RING2 );
if( pRing1ItemBase && pRing2ItemBase )
{
g_toolTip.SetSubToolTipNumber( TOOL_TIP_SWITCH_SUB2 );
PutToolTipParts( pRing2ItemBase, point, pRect, nFlag, TOOL_TIP_SWITCH_SUB2 );
}
else if( pRing1ItemBase )
{
g_toolTip.SetSubToolTipNumber( TOOL_TIP_SWITCH_SUB1 );
PutToolTipParts( pRing1ItemBase, point, pRect, nFlag, TOOL_TIP_SWITCH_SUB1 );
}
else if( pRing2ItemBase )
{
g_toolTip.SetSubToolTipNumber( TOOL_TIP_SWITCH_SUB1 );
PutToolTipParts( pRing2ItemBase, point, pRect, nFlag, TOOL_TIP_SWITCH_SUB1 );
}
}
else if( pItemProp->dwParts == PARTS_EARRING1 )
{
CItemBase* pEarring1ItemBase = g_pPlayer->GetEquipItem( PARTS_EARRING1 );
CItemBase* pEarring2ItemBase = g_pPlayer->GetEquipItem( PARTS_EARRING2 );
if( pEarring1ItemBase && pEarring2ItemBase )
{
g_toolTip.SetSubToolTipNumber( TOOL_TIP_SWITCH_SUB2 );
PutToolTipParts( pEarring2ItemBase, point, pRect, nFlag, TOOL_TIP_SWITCH_SUB2 );
}
else if( pEarring1ItemBase )
{
g_toolTip.SetSubToolTipNumber( TOOL_TIP_SWITCH_SUB1 );
PutToolTipParts( pEarring1ItemBase, point, pRect, nFlag, TOOL_TIP_SWITCH_SUB1 );
}
else if( pEarring2ItemBase )
{
g_toolTip.SetSubToolTipNumber( TOOL_TIP_SWITCH_SUB1 );
PutToolTipParts( pEarring2ItemBase, point, pRect, nFlag, TOOL_TIP_SWITCH_SUB1 );
}
}
break;
}
}
}

void CWndMgr::PutToolTipParts( CItemBase* pPartsItemBase, CPoint point, CRect* pRect, const int nFlag, const int nSubToolTipFlag )
{
if( pPartsItemBase == NULL )
return;

ItemProp* pPartsItemProp = pPartsItemBase->GetProp();
CEditString strEquipItem = _T( "" );
if( nSubToolTipFlag != 0 )
PutEquipItemText( &strEquipItem );
MakeToolTipText( pPartsItemBase, strEquipItem, nFlag );
switch( nSubToolTipFlag )
{
case 0:
{
#ifdef __WEAPON_LEVELING
g_toolTip.m_pItemElem = (CItemElem*)pPartsItemBase;
#endif
g_toolTip.PutToolTipEx( pPartsItemBase->m_dwItemId, strEquipItem, *pRect, point, 0, nSubToolTipFlag );
if( pPartsItemProp->IsUltimate() )
g_toolTip.SetUltimateToolTip( pPartsItemBase );
#ifdef __NEW_ITEM_VARUNA
if( pPartsItemProp->IsBaruna() )
g_toolTip.SetBarunaToolTip( pPartsItemBase );
#endif // __NEW_ITEM_VARUNA
break;
}
case 1:
{
#ifdef __WEAPON_LEVELING
g_toolTipSub1.m_pItemElem = (CItemElem*)pPartsItemBase;
#endif
g_toolTipSub1.PutToolTipEx( pPartsItemBase->m_dwItemId, strEquipItem, *pRect, point, 0, nSubToolTipFlag );
if( pPartsItemProp->IsUltimate() )
g_toolTipSub1.SetUltimateToolTip( pPartsItemBase );
#ifdef __NEW_ITEM_VARUNA
if( pPartsItemProp->IsBaruna() )
g_toolTipSub1.SetBarunaToolTip( pPartsItemBase );
#endif // __NEW_ITEM_VARUNA
#if defined(__LOOKCHANGE_TOOLTIP) && defined(__LOOKCHANGE)
CItemElem* itemElement = (CItemElem*)pPartsItemBase;

if(itemElement->IsChangedLook() && pPartsItemBase->GetProp()->bCanLooksChange && itemElement->GetLook() != NULL_ID )
g_toolTipSub1.SetSkinTexture(pPartsItemBase);
#endif //__LOOKCHANGE_TOOLTIP
break;
}
case 2:
{
#ifdef __WEAPON_LEVELING
g_toolTipSub2.m_pItemElem = (CItemElem*)pPartsItemBase;
#endif
g_toolTipSub2.PutToolTipEx( pPartsItemBase->m_dwItemId, strEquipItem, *pRect, point, 0, nSubToolTipFlag );
if( pPartsItemProp->IsUltimate() )
g_toolTipSub2.SetUltimateToolTip( pPartsItemBase );
#ifdef __NEW_ITEM_VARUNA
if( pPartsItemProp->IsBaruna() )
g_toolTipSub2.SetBarunaToolTip( pPartsItemBase );
#endif // __NEW_ITEM_VARUNA

#if defined(__LOOKCHANGE_TOOLTIP) && defined(__LOOKCHANGE)
CItemElem* itemElement = (CItemElem*)pPartsItemBase;

if(itemElement->IsChangedLook() && pPartsItemBase->GetProp()->bCanLooksChange && itemElement->GetLook() != NULL_ID )
g_toolTipSub2.SetSkinTexture(pPartsItemBase);
#endif //__LOOKCHANGE_TOOLTIP
break;
}
}
}

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 defined(__LOOKCHANGE_TOOLTIP) && defined(__LOOKCHANGE)
if( pItemElem->IsChangedLook() && pItemElem->GetProp()->bCanLooksChange && pItemElem->GetLook() != NULL_ID )
{
strEdit.AddString('\n');
strEdit.AddString("Skin : ", 0xff000000);
}
#endif //__LOOKCHANGE_TOOLTIP
#ifdef __FUSION_ELEM
if( pItemElem->IsFusion() )
strEdit.AddString( "\n[]", D3DCOLOR_XRGB( 178, 0, 255 ) );
#endif // __FUSION_ELEM

#if __VER >= 15 // __PETVIS
PutPetKind( pItemElem, &strEdit ); //gmpbigsun : 酒捞袍 疙 促澜临俊 脐 辆幅 ( 府绢, 侨诀, 滚橇 ) 火涝
#endif //__PETVIS
#ifdef __WEAPON_LEVELING
if(pItemElem && pItemElem->GetProp())
{
WeaponLevelingProp* pProp = prj.GetWeaponLevelingProp(pItemElem->GetProp()->dwItemKind3);
if( pProp )
{
strTemp.Format("\n: %d%%", MulDiv(((CItemElem*)pItemBase)->m_nWeaponExp, 100, INT_MAX / 100 * ((CItemElem*)pItemBase)->m_nWeaponLevel));
strEdit.AddString( strTemp, D3DCOLOR_XRGB( 178, 0, 255 ) );
}
}

#endif
#ifdef __VENDING_NPC
if (pItemElem->GetProp()->dwItemKind3 == IK3_VENDING)
{
strEdit.AddString("\n[]");
}
#endif
#ifdef __OFFLINE_VENDOR
if (pItemElem->GetProp()->dwItemKind3 == IK3_VENDING)
{
strEdit.AddString("\n[]");
}
#endif
#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 );

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:
#ifdef __UNLIMITED_ARROW
case IK2_BULLET:
#endif // __UNLIMITED_ARROW
#ifdef __UNLIMITED_CHARM
case IK2_CHARM:
#endif // __UNLIMITED_CHARM
{
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

#ifdef __VENDING_NPC
if (pItemProp->dwItemKind3 == IK3_VENDING)
{
PutSkillTime(pItemElem, &strEdit, flag);
}
#endif
#ifdef __OFFLINE_VENDOR
if (pItemProp->dwItemKind3 == IK3_VENDING)
{
PutSkillTime(pItemElem, &strEdit, flag);
}
#endif
PutCoolTime( pMover, pItemElem, &strEdit ); // 酿鸥烙
PutEndurance( pItemElem, &strEdit, flag ); // 郴备仿
PutKeepTime( pItemElem, &strEdit ); // 荤侩且荐 乐绰 矫埃
PutJob( pMover, pItemElem, &strEdit );
PutLevel( pMover, pItemElem, &strEdit );
#ifdef __ELLDIN_POTION
PutElldinPotionText( pItemElem, &strEdit );
#endif // __ELLDIN_POTION
PutCommand( pItemElem, &strEdit ); // 侩档
PutItemGold( pMover, pItemElem, &strEdit, flag ); // 啊拜
#ifdef __WIKI_ITEMS
if (flag == APP_WIKI_ITEMS)
PutSetItemOptWiki(pMover, pItemElem, &strEdit);
else
#endif
#if !defined(__LOOKCHANGE_TOOLTIP) && defined(__LOOKCHANGE)
PutLookText(pItemElem, &strEdit);
#endif
PutSetItemOpt( pMover, pItemElem, &strEdit );
10/04/2022 20:54 Int16#8
inside
PHP Code:
void CWndMgr::PutToolTipPartsCItemBasepPartsItemBaseCPoint pointCRectpRect, const int nFlag, const int nSubToolTipFlag 
you forgot to add it inside case 0:

PHP Code:
case 0:
{
#ifdef __WEAPON_LEVELING
        
g_toolTip.m_pItemElem = (CItemElem*)pPartsItemBase;
#endif
        
g_toolTip.PutToolTipExpPartsItemBase->m_dwItemIdstrEquipItem, *pRectpoint0nSubToolTipFlag );
        if( 
pPartsItemProp->IsUltimate() )
                
g_toolTip.SetUltimateToolTippPartsItemBase );
#ifdef __NEW_ITEM_VARUNA
        
if( pPartsItemProp->IsBaruna() )
                
g_toolTip.SetBarunaToolTippPartsItemBase );
#endif // __NEW_ITEM_VARUNA
////////////////////////////////////////////////////////////////////////////////
#if defined(__LOOKCHANGE_TOOLTIP) && defined(__LOOKCHANGE)
        
CItemElemitemElement = (CItemElem*)pPartsItemBase;

        if(
itemElement->IsChangedLook() && pPartsItemBase->GetProp()->bCanLooksChange && itemElement->GetLook() != NULL_ID )
            
g_toolTip.SetSkinTexture(pPartsItemBase);
#endif //__LOOKCHANGE_TOOLTIP
////////////////////////////////////////////////////////////////////////////////
break;

10/06/2022 13:44 liulinkan#9
Quote:
Originally Posted by Int16 View Post
inside
PHP Code:
void CWndMgr::PutToolTipPartsCItemBasepPartsItemBaseCPoint pointCRectpRect, const int nFlag, const int nSubToolTipFlag 
you forgot to add it inside case 0:

PHP Code:
case 0:
{
#ifdef __WEAPON_LEVELING
        
g_toolTip.m_pItemElem = (CItemElem*)pPartsItemBase;
#endif
        
g_toolTip.PutToolTipExpPartsItemBase->m_dwItemIdstrEquipItem, *pRectpoint0nSubToolTipFlag );
        if( 
pPartsItemProp->IsUltimate() )
                
g_toolTip.SetUltimateToolTippPartsItemBase );
#ifdef __NEW_ITEM_VARUNA
        
if( pPartsItemProp->IsBaruna() )
                
g_toolTip.SetBarunaToolTippPartsItemBase );
#endif // __NEW_ITEM_VARUNA
////////////////////////////////////////////////////////////////////////////////
#if defined(__LOOKCHANGE_TOOLTIP) && defined(__LOOKCHANGE)
        
CItemElemitemElement = (CItemElem*)pPartsItemBase;

        if(
itemElement->IsChangedLook() && pPartsItemBase->GetProp()->bCanLooksChange && itemElement->GetLook() != NULL_ID )
            
g_toolTip.SetSkinTexture(pPartsItemBase);
#endif //__LOOKCHANGE_TOOLTIP
////////////////////////////////////////////////////////////////////////////////
break;

Vielen Dank
10/06/2022 13:46 Int16#10
Quote:
Originally Posted by liulinkan View Post
Vielen Dank

I also updated the thread with some fixes and added the itemlink tooltip
10/06/2022 14:15 liulinkan#11
Quote:
Originally Posted by Int16 View Post
I also updated the thread with some fixes and added the itemlink tooltip
Ich habe ihn immer noch nicht arbeiten lassen und das Symbol nicht gezeigt ....., in der Forschungsstudie
10/08/2022 00:10 Nιgнтмαяε#12
Quote:
Originally Posted by Int16 View Post
I do understand german but this sentence makes no sense at all ..
If something is not working i need some proper explanation on what exactly is working and what is not

one thing for sure is that you need the _LOOKCHANGE beforehand ( or could be named different in your source)

if its indeed named something different you need to also change the define names from the snippet i posted

Code:
#if defined(__LOOKCHANGE_TOOLTIP) && defined(RIGHT HERE)
That's because he is a Chinese user trying to use a language he is google translating lol.