mavzermete 1
mavzermete
Psych0SoociaL 1
Psych0SoociaL
noisiv 1
noisiv
Manwe Work 1
Manwe Work
Agora Metin2 1
Agora Metin2
Bvural41 1
Bvural41
Mt2Hizmet 1
Mt2Hizmet
Hikaye Ekle

Cevaplanmadı giymeli efekt sistemi

  • Konuyu başlatan Konuyu başlatan classone45
  • Başlangıç tarihi Başlangıç tarihi
  • Cevaplar Cevaplar 20
  • Görüntüleme Görüntüleme 503

HERAKLES Otomatik Avlı kalıcı sunucu. 19 Haziran'da açılıyor. Atius & Wizard güvencesiyle hemen kayıt ol, ön kayıt ödülleri aktif. HEMEN TIKLA!

Ben, giyilebilir silah ve zırh efektlerini ekledim. Sonra, kemerin yanındaki iki slota bir şey takılamıyordu; ben de oraya tanımladım:
  • COSTUME_WING → Silah efekti
  • COSTUME_CAPE → Zırh efekti
  • COSTUME_ACCE → Kanat Efekti
Şu an silah efektini takıyorum, ancak COSTUME_ACCE slotundaki GR2 kanatlarımın görünümü gidiyor.
Shining olarak ekli olanların görünümü gitmiyor, ama GR2 olanlar kayboluyor.


Bunu nasıl çözebilirim?
 
Son düzenleme:
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.


malesef yine olmadı sanırım başka yerde sorun yeni slot ekleyip onla denedim bu seferde giyiyorum ama slota gitmiyor onuda çözemedim
 

Şu an konuyu görüntüleyenler (Toplam : 0, Üye: 0, Misafir: 0)

Geri
Üst