Bu dosyayı yazan veya düzenleyen kişi, COSTUME_WING bloğunun içini adeta bir çorbaya çevirmiş. Sorun sadece yanlış fonksiyonu çağırmak değil, o bloğun tamamı mantıksal olarak hatalı
__ClearWingShiningEffect() kanatları siliyor.Kodun bir bölümü, COSTUME_WING (silah efekti) slotu için __AttachAcceShiningEffect fonksiyonunu, yani kuşak efektini eklemeye çalışıyor. Bu, başka bir çapraz ateş ve gelecekte kuşaklarla ilgili bir soruna kesinlikle yol açar.
Diğer tüm bloklarda olan if (strcmp(shiningTable.szShinings, "")) kontrolü burada yok. Bu, tanımlanmamış bir efekt eklemeye çalışarak oyunu çökertebilir veya performans sorunları yaratabilirsin
Bu sorunu çözmek için sadece yara bandı yapıştırmak yetmez. Bu çorba gibi olmuş bloğu tamamen atıp, yerine doğru çalışan, temiz bir kod yazmalıyız.
InstanceBase.cpp dosyasındaki __GetShiningEffect fonksiyonunu bul. İçindeki if (pItem->GetSubType() == CItemData::COSTUME_WING) ile başlayan bloğun tamamını sil ve yerine aşağıdaki doğru kodu yapıştır.
[CODE title="C++"]// --- DOĞRU VE TEMİZ KOD ---
#ifdef ENABLE_WINGS_NEW
// Bu blok, kullanıcı tarafından SİLAH EFEKTİ #ifdef kullanıldığı için
// kanatlarla ilgili hiçbir işlem yapmamalıdır.
if (pItem->GetSubType() == CItemData::COSTUME_WING)
{
// Kanatları değil, SADECE SİLAH efektlerini temizle.
__ClearWeaponShiningEffect();
for (int i = 0; i < CItemData::ITEM_SHINING_MAX_COUNT; i++)
{
// Efektin tanımlı olup olmadığını kontrol et.
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");
}
}
}
#endif[/CODE]
Bu kod ile sadece kanatların kaybolmasını engellemekle kalmıyor, aynı zamanda gelecekt#endifk efektleriyle yaşanacak bir sorunu da önlemiş oluyor tam bir temizlik diyelim.