noisiv 1
noisiv
Manwe Work 1
Manwe Work
Agora Metin2 1
Agora Metin2
Bvural41 1
Bvural41
Mt2Hizmet 1
Mt2Hizmet
SLyFeLLowTR 1
SLyFeLLowTR
DEVLOPER 1
DEVLOPER
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:
ben giymeli silah ve zırh efekti ekledim sonra kemer yanı iki slota bir şey takılmıyordu bende oraya tanımladım COSTUME_WING ve COSTUME_CAPE olarak şimdi silah efektini takıyorum COSTUME_ACCE olan gr2 kanatlarımın görünümü gidiyor shining olarak ekli olanların gitmiyor bunu nasıl çözebilirim


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]
 
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]

malesef yine olmadı sorun başka dosyada mı acaba :(
 

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

Geri
Üst