Merhaba,
Gönderdiğiniz dosya için teşekkürler, sorunun kaynağını tam olarak tespit etmemi sağladı. Problem, farklı kostüm tiplerinin birbirini ezmesine neden olan bir mantık sıralaması hatasından kaynaklanıyor. Bir kostüm türü işlendiğinde, else if yapısı nedeniyle diğerleri atlanıyor.
Bunu düzeltmek için InstanceBase.cpp dosyanızdaki __GetShiningEffect fonksiyonunu aşağıdaki gibi tamamen değiştirmeniz gerekiyor. Bu yeni versiyonda, tüm kostüm tipleri birbirinden bağımsız if blokları ile kontrol ediliyor, böylece hiçbiri bir diğerinin görünümünü bozmuyor.
Lütfen mevcut __GetShiningEffect fonksiyonunuzu silip yerine aşağıdaki kodu yapıştırın ve projenizi yeniden derleyin (build alın):
[CODE title="C++"]// --- BAŞLANGIÇ: BU FONKSİYONUN TAMAMINI KOPYALAYIN ---
void CInstanceBase::__GetShiningEffect(CItemData* pItem)
{
bool removeRefineEffect = true;
CItemData::TItemShiningTable shiningTable = pItem->GetItemShiningTable();
if (pItem->GetType() == CItemData::ITEM_TYPE_WEAPON)
{
__ClearWeaponShiningEffect();
//if (removeRefineEffect)
//{
// __ClearWeaponRefineEffect();
//}
for (int i = 0; i < CItemData::ITEM_SHINING_MAX_COUNT; i++)
{
if (strcmp(shiningTable.szShinings, ""))
{
bool twoSidedWeapon = pItem->GetSubType() == CItemData::WEAPON_DAGGER || (IsMountingHorse() && pItem->GetSubType() == CItemData::WEAPON_FAN);
if (twoSidedWeapon)
{
__AttachWeaponShiningEffect(i, shiningTable.szShinings, "PART_WEAPON_LEFT");
}
if (pItem->GetSubType() == CItemData::WEAPON_BOW)
__AttachWeaponShiningEffect(i, shiningTable.szShinings, "PART_WEAPON_LEFT");
else
__AttachWeaponShiningEffect(i, shiningTable.szShinings, "PART_WEAPON");
}
}
}
#ifdef ENABLE_COSTUME_SYSTEM
else if (pItem->GetType() =#ifdefmData::ITEM_TYPE_COSTUME)
{
// NOT: Buradaki TÜM 'else if' yapıları, her kostüm türünün
// diğerlerinden bağımsız çalışabilmesi için 'if' olarak düzeltildi.
#ifdef ENABLE_WINGS_NEW
if (pItem->GetSubType() == CItemData::COSTUM#ifdef)
{
__ClearWingShiningEffect();
for (int i = 0; i < CItemData::ITEM_SHINING_MAX_COUNT; i++)
if (pItem->GetIndex() == 16064)
{
__AttachAcceShiningEffect(i, shiningTable.szShinings, "Bip01");
}
else
{
__AttachWingShiningEffect(i, shiningTable.szShinings, "Bip01 Spine2");
}
}
#endif
#ifdef ENABLE_ACCE_SYSTEM
if (pItem->GetSubType() == CItemDa#endifST#ifdefCE)
{
for (int i = 0; i < CItemData::ITEM_SHINING_MAX_COUNT; i++)
{
if (pItem->GetIndex() >= 86066 && pItem->GetIndex() <= 86080)
{
__AttachAcceShiningEffect(i, shiningTable.szShinings, "Bip01 Spine2");
}
else
{
__AttachAcceShiningEffect(i, shiningTable.szShinings, "Bip01");
}
}
}
#endif
#ifdef ENABLE_AURA_SYSTEM
if (pItem->GetSubType() == CItemDa#endifST#ifdefRA)
{
__ClearAuraShiningEffect();
for (int i = 0; i < CItemData::ITEM_SHINING_MAX_COUNT; i++)
{
if (strcmp(shiningTable.szShinings, ""))
{
__AttachAuraShiningEffect(i, shiningTable.szShinings, "Bip01 Spine2");
}
}
}
#endif
if (pItem->GetSubType() == CItemData::COSTUME_BODY)
{#endif if (removeRefineEffect)
{
__ClearArmorRefineEffect();
}
for (int i = 0; i < CItemData::ITEM_SHINING_MAX_COUNT; i++)
{
if (strcmp(shiningTable.szShinings, ""))
{
__AttachArmorShiningEffect(i, shiningTable.szShinings);
}
}
}
#ifdef ENABLE_WEAPON_COSTUME_SYSTEM
if (pItem->GetSubType() == CItem#ifdefCOSTUME_WEAPON)
{
__ClearWeaponShiningEffect();
if (removeRefineEffect)
{
__ClearWeaponRefineEffect();
}
for (int i = 0; i < CItemData::ITEM_SHINING_MAX_COUNT; i++)
{
if (strcmp(shiningTable.szShinings, ""))
{
bool twoSidedWeapon = pItem->GetValue(3) == CItemData::WEAPON_DAGGER || (IsMountingHorse() && pItem->GetValue(3) == CItemData::WEAPON_FAN);
if (twoSidedWeapon)
{
__AttachWeaponShiningEffect(i, shiningTable.szShinings, "PART_WEAPON_LEFT");
}
if (pItem->GetValue(3) == CItemData::WEAPON_BOW)
__AttachWeaponShiningEffect(i, shiningTable.szShinings, "PART_WEAPON_LEFT");
else
__AttachWeaponShiningEffect(i, shiningTable.szShinings, "PART_WEAPON");
}
}
}
#endif
}
#endif
else
{
if (removeRefineEffect)
{#endif #endifrArmorRefineEffect();
}
for (int i = 0; i < CItemData::ITEM_SHINING_MAX_COUNT; i++)
{
if (strcmp(shiningTable.szShinings, ""))
{
__AttachArmorShiningEffect(i, shiningTable.szShinings);
}
}
}
}
// --- BİTİŞ: BURAYA KADAR KOPYALAYIN ---[/CODE]