Mt2Hizmet 1
Mt2Hizmet
mavzermete 1
mavzermete
Vahsi Uzman 1
Vahsi Uzman
kralhakan2009 1
kralhakan2009
farkmt2official 1
farkmt2official
Bvural41 1
Bvural41
Fethi Polat 1
Fethi Polat
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 519

Ayyıldız2 | 2008 TR Yapısı • 1-99 Orta Emek Destan • Oto Avsız • 10 Temmuz 21:00 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