Çözüldü Costume Weapon Sistemi

  • Konuyu açan Konuyu açan Happy Way
  • Açılış Tarihi Açılış Tarihi
  • Yanıt Yanıt 30
  • Gösterim Gösterim 212
Bu konu çözüme ulaştırılmıştır. Çözüm için konuya yazılan tüm yorumları okumayı unutmayın. Eğer konudaki yorumlar sorununuzu çözmediyse yeni bir konu açabilirsiniz.
Durum
İçerik kilitlendiği için mesaj gönderimine kapatıldı.

Happy Way

Üye
Üye
Mesaj
120
Çözümler
13
Beğeni
38
Puan
749
Ticaret Puanı
0
Costume weapon sistemini ekledim daha sonra test ederken kostüm silahı giyiliyor gözüküyor problem yok fakat
şöyle bir bug var. Bakmak istediğiniz dosya olursa belirtin konuya dahil ederim.
Karakter atınca silah elde gözükmüyor normal olması gerektiği gibi oluyor.
Normal çıkartınca elde kalıyor silah.
Krakterin elindeki silah çıkmasına rağmen krakterin elinde gözüküyor örnek resim ;
Linkleri görebilmek için giriş yap veya kayıt ol.

Linkleri görebilmek için giriş yap veya kayıt ol.

(İP ALL ) komutundan sonrada bu şekilde: @MT2Dev
Linkleri görebilmek için giriş yap veya kayıt ol.


Linkleri görebilmek için giriş yap veya kayıt ol.
Kostüm Silahını giymeye çalışıncada giymiyor. Çünkü silah yok sadece görsel olarak var.
Tek problem Burası.
Linkleri görebilmek için giriş yap veya kayıt ol.

SYSSR VS Vermiyor (DB-CH1-CH99-AUTH CLİENT SYSSR TEMİZ.) MARTY 5.8 Filesinden geçirdim mainline alt yapıya.


ItemData.h:
Genişlet Daralt Kopyala
        enum ECostumeSubTypes
        {
            COSTUME_BODY,                //0
            COSTUME_HAIR,                //1
#ifdef ENABLE_WEAPON_COSTUME_SYSTEM
            COSTUME_WEAPON    = 4,        //2
#endif
            COSTUME_NUM_TYPES,
        };

        enum EWearPositions
        {
            WEAR_BODY,        // 0
            WEAR_HEAD,        // 1
            WEAR_FOOTS,        // 2
            WEAR_WRIST,        // 3
            WEAR_WEAPON,    // 4
            WEAR_NECK,        // 5
            WEAR_EAR,        // 6
            WEAR_UNIQUE1,    // 7
            WEAR_UNIQUE2,    // 8
            WEAR_ARROW,        // 9
            WEAR_SHIELD,    // 10
            WEAR_ABILITY1,        // 11
            WEAR_ABILITY2,        // 12
            WEAR_ABILITY3,        // 13
            WEAR_ABILITY4,        // 14
            WEAR_ABILITY5,        // 15
            WEAR_ABILITY6,        // 16
            WEAR_ABILITY7,        // 17
            WEAR_ABILITY8,        // 18
            WEAR_COSTUME_BODY,    // 19
            WEAR_COSTUME_HAIR,    // 20
#ifdef ENABLE_WEAPON_COSTUME_SYSTEM
            WEAR_COSTUME_WEAPON,// 21
#endif
            WEAR_BELT,            // 22
            WEAR_RING1,            // 23
            WEAR_RING2,            // 24
            WEAR_MAX_NUM = 32    //
        };
item_lenght.h:
Genişlet Daralt Kopyala
enum ECostumeSubTypes
{
    COSTUME_BODY = ARMOR_BODY,            //0
    COSTUME_HAIR = ARMOR_HEAD,            //1
#ifdef ENABLE_WEAPON_COSTUME_SYSTEM
    COSTUME_WEAPON    = 4,                //2
#endif
    COSTUME_NUM_TYPES,
};
lenght.h:
Genişlet Daralt Kopyala
enum EWearPositions
{
    WEAR_BODY,            // 0
    WEAR_HEAD,            // 1
    WEAR_FOOTS,            // 2
    WEAR_WRIST,            // 3
    WEAR_WEAPON,        // 4
    WEAR_NECK,            // 5
    WEAR_EAR,            // 6
    WEAR_UNIQUE1,        // 7
    WEAR_UNIQUE2,        // 8
    WEAR_ARROW,            // 9
    WEAR_SHIELD,        // 10
    WEAR_ABILITY1,        // 11
    WEAR_ABILITY2,        // 12
    WEAR_ABILITY3,        // 13
    WEAR_ABILITY4,        // 14
    WEAR_ABILITY5,        // 15
    WEAR_ABILITY6,        // 16
    WEAR_ABILITY7,        // 17
    WEAR_ABILITY8,        // 18
    WEAR_COSTUME_BODY,    // 19
    WEAR_COSTUME_HAIR,    // 20
#ifdef ENABLE_WEAPON_COSTUME_SYSTEM
    WEAR_COSTUME_WEAPON,// 21
#endif
    WEAR_BELT,            // 22
    WEAR_RING1,            // 23
    WEAR_RING2,            // 24
    WEAR_MAX = 32    //
};
İtemCSVReader.cpp:
Genişlet Daralt Kopyala
    static string arSub27[] =
    {
        "COSTUME_BODY",
        "COSTUME_HAIR",
        "COSTUME_MOUNT",
        "COSTUME_ACCE",
        "COSTUME_WEAPON",
        "COSTUME_AURA",
    };
Char_item.cpp Unequip:
Genişlet Daralt Kopyala
bool CHARACTER::UnequipItem (LPITEM item)
{
#ifdef ENABLE_WEAPON_COSTUME_SYSTEM
    int iWearCell = item->FindEquipCell(this);
    if (iWearCell == WEAR_WEAPON)
    {
        LPITEM costumeWeapon = GetWear(WEAR_COSTUME_WEAPON);
        if (costumeWeapon && !UnequipItem(costumeWeapon))
        {
            ChatPacket(CHAT_TYPE_INFO, LC_TEXT("You cannot unequip the costume weapon. Not enough space."));
            return false;
        }
    }
#endif
    int pos;

    if (false == CanUnequipNow (item))
    {
        return false;
    }

    if (item->IsDragonSoul())
    {
        pos = GetEmptyDragonSoulInventory (item);
    }
    else
    {
        pos = GetEmptyInventory (item->GetSize());
    }

    // HARD CODING
    if (item->GetVnum() == UNIQUE_ITEM_HIDE_ALIGNMENT_TITLE)
    {
        ShowAlignment (true);
    }

    item->RemoveFromCharacter();
    if (item->IsDragonSoul())
    {
        item->AddToCharacter (this, TItemPos (DRAGON_SOUL_INVENTORY, pos));
    }
    else
    {
        item->AddToCharacter (this, TItemPos (INVENTORY, pos));
    }

    CheckMaximumPoints();

    return true;
}
item_proto.sql:
Genişlet Daralt Kopyala
40101    ÇÒ·ÎÀ© ´Üµµ(¹«)    ITEM_COSTUME    COSTUME_WEAPON    2    ANTI_MUDANG | ANTI_DROP | ANTI_GIVE | ANTI_PKDROP | ANTI_STACK | ANTI_MYSHOP | ANTI_WOLFMAN    NONE    NONE    NONE    0    0    0    0    0    REAL_TIME    86400    LIMIT_NONE    0    APPLY_NONE    0    APPLY_NONE    0    APPLY_NONE    0    0    0    0    0    0    0    30    0    0
40102    ÇÒ·ÎÀ© ´ë°Å(¹«)    ITEM_COSTUME    COSTUME_WEAPON    1    ANTI_MUSA | ANTI_SURA | ANTI_MUDANG | ANTI_DROP | ANTI_GIVE | ANTI_PKDROP | ANTI_STACK | ANTI_MYSHOP | ANTI_WOLFMAN    NONE    NONE    NONE    0    0    0    0    0    REAL_TIME    86400    LIMIT_NONE    0    APPLY_NONE    0    APPLY_NONE    0    APPLY_NONE    0    0    0    0    1    0    0    30    0    0
40103    ÇÒ·ÎÀ© È°(¹«)    ITEM_COSTUME    COSTUME_WEAPON    2    ANTI_MUSA | ANTI_SURA | ANTI_MUDANG | ANTI_DROP | ANTI_GIVE | ANTI_PKDROP | ANTI_STACK | ANTI_MYSHOP | ANTI_WOLFMAN    NONE    NONE    NONE    0    0    0    0    0    REAL_TIME    86400    LIMIT_NONE    0    APPLY_NONE    0    APPLY_NONE    0    APPLY_NONE    0    0    0    0    2    0    0    30    0    0
40104    ÇÒ·ÎÀ© ¾ç¼Õ°Ë(¹«)    ITEM_COSTUME    COSTUME_WEAPON    3    ANTI_ASSASSIN | ANTI_SURA | ANTI_MUDANG | ANTI_DROP | ANTI_GIVE | ANTI_PKDROP | ANTI_STACK | ANTI_MYSHOP | ANTI_WOLFMAN    NONE    NONE    NONE    0    0    0    0    0    REAL_TIME    86400    LIMIT_NONE    0    APPLY_NONE    0    APPLY_NONE    0    APPLY_NONE    0    0    0    0    3    0    0    30    0    0
40105    ÇÒ·ÎÀ© ¹æ¿ï(¹«)    ITEM_COSTUME    COSTUME_WEAPON    1    ANTI_MUSA | ANTI_ASSASSIN | ANTI_SURA | ANTI_DROP | ANTI_GIVE | ANTI_PKDROP | ANTI_STACK | ANTI_MYSHOP | ANTI_WOLFMAN    NONE    NONE    NONE    0    0    0    0    0    REAL_TIME    86400    LIMIT_NONE    0    APPLY_NONE    0    APPLY_NONE    0    APPLY_NONE    0    0    0    0    4    0    0    30    0    0
40106    ÇÒ·ÎÀ© ºÎä(¹«)    ITEM_COSTUME    COSTUME_WEAPON    1    ANTI_MUSA | ANTI_ASSASSIN | ANTI_SURA | ANTI_DROP | ANTI_GIVE | ANTI_PKDROP | ANTI_STACK | ANTI_MYSHOP | ANTI_WOLFMAN    NONE    NONE    NONE    0    0    0    0    0    REAL_TIME    86400    LIMIT_NONE    0    APPLY_NONE    0    APPLY_NONE    0    APPLY_NONE    0    0    0    0    5    0    0    30    0    0
40107    ÇÒ·ÎÀ© Å©·Î¿ì(¹«)    ITEM_COSTUME    COSTUME_WEAPON    1    ANTI_MUSA | ANTI_ASSASSIN | ANTI_SURA | ANTI_MUDANG | ANTI_DROP | ANTI_GIVE | ANTI_PKDROP | ANTI_STACK | ANTI_MYSHOP    NONE    NONE    NONE    0    0    0    0    0    REAL_TIME    86400    LIMIT_NONE    0    APPLY_NONE    0    APPLY_NONE    0    APPLY_NONE    0    0    0    0    8    0    0    30    0    0
40108    ÇÒ·ÎÀ© ÇѼհË(À¯)    ITEM_COSTUME    COSTUME_WEAPON    2    ANTI_MUDANG | ANTI_STACK | ANTI_WOLFMAN    NONE    NONE    NONE    0    0    0    0    100    REAL_TIME    2592000    LIMIT_NONE    0    APPLY_NONE    0    APPLY_NONE    0    APPLY_NONE    0    0    0    0    0    0    0    100    0    0
40109    ÇÒ·ÎÀ© ´Üµµ(À¯)    ITEM_COSTUME    COSTUME_WEAPON    1    ANTI_MUSA | ANTI_SURA | ANTI_MUDANG | ANTI_PKDROP | ANTI_STACK | ANTI_WOLFMAN    NONE    NONE    NONE    0    0    0    0    100    REAL_TIME    2592000    LIMIT_NONE    0    APPLY_NONE    0    APPLY_NONE    0    APPLY_NONE    0    0    0    0    1    0    0    100    0    0
40110    ÇÒ·ÎÀ© È°(À¯)    ITEM_COSTUME    COSTUME_WEAPON    2    ANTI_MUSA | ANTI_SURA | ANTI_MUDANG | ANTI_PKDROP | ANTI_STACK | ANTI_WOLFMAN    NONE    NONE    NONE    0    0    0    0    100    REAL_TIME    2592000    LIMIT_NONE    0    APPLY_NONE    0    APPLY_NONE    0    APPLY_NONE    0    0    0    0    2    0    0    100    0    0
40111    ÇÒ·ÎÀ© ¾ç¼Õ°Ë(À¯)    ITEM_COSTUME    COSTUME_WEAPON    3    ANTI_ASSASSIN | ANTI_SURA | ANTI_MUDANG | ANTI_PKDROP | ANTI_STACK | ANTI_WOLFMAN    NONE    NONE    NONE    0    0    0    0    100    REAL_TIME    2592000    LIMIT_NONE    0    APPLY_NONE    0    APPLY_NONE    0    APPLY_NONE    0    0    0    0    3    0    0    100    0    0
40112    ÇÒ·ÎÀ© ¹æ¿ï(À¯)    ITEM_COSTUME    COSTUME_WEAPON    1    ANTI_MUSA | ANTI_ASSASSIN | ANTI_SURA | ANTI_PKDROP | ANTI_STACK | ANTI_WOLFMAN    NONE    NONE    NONE    0    0    0    0    100    REAL_TIME    2592000    LIMIT_NONE    0    APPLY_NONE    0    APPLY_NONE    0    APPLY_NONE    0    0    0    0    4    0    0    100    0    0
40113    ÇÒ·ÎÀ© ºÎä(À¯)    ITEM_COSTUME    COSTUME_WEAPON    1    ANTI_MUSA | ANTI_ASSASSIN | ANTI_SURA | ANTI_PKDROP | ANTI_STACK | ANTI_WOLFMAN    NONE    NONE    NONE    0    0    0    0    100    REAL_TIME    2592000    LIMIT_NONE    0    APPLY_NONE    0    APPLY_NONE    0    APPLY_NONE    0    0    0    0    5    0    0    100    0    0
40114    ÇÒ·ÎÀ© Å©·Î¿ì(À¯)    ITEM_COSTUME    COSTUME_WEAPON    1    ANTI_MUSA | ANTI_ASSASSIN | ANTI_SURA | ANTI_MUDANG | ANTI_PKDROP | ANTI_STACK    NONE    NONE    NONE    0    0    0    0    100    REAL_TIME    2592000    LIMIT_NONE    0    APPLY_NONE    0    APPLY_NONE    0    APPLY_NONE    0    0    0    0    8    0    0    100    0    0
 
Son düzenleme:
Costume weapon sistemini ekledim daha sonra test ederken kostüm silahı giyiliyor gözüküyor problem yok fakat
şöyle bir bug var
Krakterin elindeki silah çıkmasına rağmen krakterin elinde gözüküyor örnek resim ;
Linkleri görebilmek için giriş yap veya kayıt ol.

SYSSR VS Vermiyor (DB-CH1-CH99-AUTH CLİENT SYSSR TEMİZ.) MARTY 5.8 Filesinden geçirdim mainline alt yapıya.
bunun engelini mi çekmedin acaba? elinde silah kostüm varken silah çıkarılamaz engeli olması lazım. unequipitem fonksiyonunu kontrol et
 
bunun engelini mi çekmedin acaba? elinde silah kostüm varken silah çıkarılamaz engeli olması lazım. unequipitem fonksiyonunu kontrol et
C++:
Genişlet Daralt Kopyala
bool CHARACTER::UnequipItem(LPITEM item)
{
#ifdef ENABLE_WEAPON_COSTUME_SYSTEM
    int iWearCell = item->FindEquipCell(this);
    if (iWearCell == WEAR_WEAPON)
    {
        LPITEM costumeWeapon = GetWear(WEAR_COSTUME_WEAPON);
        if (costumeWeapon && !UnequipItem(costumeWeapon))
        {
            ChatPacket(CHAT_TYPE_INFO, LC_TEXT("You cannot unequip the costume weapon. Not enough space."));
            return false;
        }
    }
#endif

    if (false == CanUnequipNow(item))
        return false;

    int pos = GetEmptyInventoryEx(item);

    // HARD CODING
    if (item->GetVnum() == UNIQUE_ITEM_HIDE_ALIGNMENT_TITLE)
        ShowAlignment(true);

    item->RemoveFromCharacter();
    item->AddToCharacter(this, TItemPos(item->GetWindowInventoryEx(), pos));

    CheckMaximumPoints();

    return true;
}
 
Kostüm giymeden sadece silahı giyip çıkardığım zamanda kalıyor görüntü bu şekilde vurmaya başlayıncada oyundan atıyor.
 
Kodlarda bir probem yok tekrardan eklendi gene aynısını yapıyor sadece ENABLE_COSTUME_WEAPON Definesini söktüm başka bir eklenti varmı acaba ? martyv5.8
Aslında sistem güzel çalışıyor tek problem o silahın çıkınca elde gözükmesi.
 
Kodlarda bir probem yok tekrardan eklendi gene aynısını yapıyor sadece ENABLE_COSTUME_WEAPON Definesini söktüm başka bir eklenti varmı acaba ? martyv5.8
Aslında sistem güzel çalışıyor tek problem o silahın çıkınca elde gözükmesi.
dostum problem olduğunu şunun için söylüyorum. bende kendi oluşturduğum altyapıya aynı filesten söktüm. bende böyle bir sorun yok. o yüzden kontrol et dedim. ama sen doğruluğundan eminsen oyundan atıyor demiştin onun syserrini gönder.
 
dostum problem olduğunu şunun için söylüyorum. bende kendi oluşturduğum altyapıya aynı filesten söktüm. bende böyle bir sorun yok. o yüzden kontrol et dedim. ama sen doğruluğundan eminsen oyundan atıyor demiştin onun syserrini gönder.
tek sysser bu
SYSERR: Aug 2 18:45:37 :: locale_find: LOCALE_ERROR: "You cannot equip the costume weapon. Wrong equipped weapon."; o da olmadığından veriyor yani
 
dostum problem olduğunu şunun için söylüyorum. bende kendi oluşturduğum altyapıya aynı filesten söktüm. bende böyle bir sorun yok. o yüzden kontrol et dedim. ama sen doğruluğundan eminsen oyundan atıyor demiştin onun syserrini gönder.
Problem tam olarak şu şekilde işliyor:
Karakter elinde KILIÇ +9 itemini bulunduruyor daha sonra kılıç kostümlerinden birini giyiyor problem yaşanmıyor.
Karakter elinde KILIÇ +9 itemini kostüm çıkarmadan direk çıkartıyor ve KILIÇ +9 karakterin elinde duruyor ama görsel sadece (c)üzerinden değerler çıkarınca düşüyor problem yok yani.
kostüm takılıyken silahı çıkarttığında kostüm silahı da çıkıyor bu arada.
Karakterde silah takılıyken bir problem yaşanmıyor.
Çıkarttığında elinde gözüken KILIÇ +9 itemiyle slotlara vurmaya devam ederse bir süre sonra dc atıyor.
Karakter attığında karakterin elinde silah olmuyor çünkü çıkartmıştık.
 
InstanceBase.cpp dosyasına eklediklerini kaldırıp şu verdiklerimi ekle birde öyle dene bakalım

defineleri kendinki ile değiştirmeyi unutma

C++:
Genişlet Daralt Kopyala
// arat
DWORD CInstanceBase::GetWeaponType()
   
// kod bloğunu değiştir
   
DWORD CInstanceBase::GetWeaponType()
{
    DWORD dwWeapon = GetPart(CRaceData::PART_WEAPON);
    CItemData * pItemData;
    if (!CItemManager::Instance().GetItemDataPointer(dwWeapon, &pItemData))
        return CItemData::WEAPON_NONE;
   
#ifdef ENABLE_COSTUME_WEAPON_SYSTEM
    if (pItemData->GetType() == CItemData::ITEM_TYPE_COSTUME)
        return pItemData->GetValue(3);
#endif
    return pItemData->GetWeaponType();
}

//arat
bool CInstanceBase::SetWeapon (DWORD eWeapon)

//komple değiştir
   
bool CInstanceBase::SetWeapon (DWORD eWeapon)
{
    if (IsPoly())
    {
        return false;
    }

    if (__IsShapeAnimalWear())
    {
        return false;
    }

    if (__IsChangableWeapon (eWeapon) == false)
    {
        eWeapon = 0;
    }

    m_GraphicThingInstance.AttachWeapon (eWeapon);
    m_awPart[CRaceData::PART_WEAPON] = eWeapon;

    //Weapon Effect
    CItemData* pItemData;
    if (CItemManager::Instance().GetItemDataPointer(eWeapon, &pItemData))
    {
#ifdef ENABLE_COSTUME_WEAPON_SYSTEM
        if (pItemData->GetType() == CItemData::ITEM_TYPE_COSTUME)
            __ClearWeaponRefineEffect();
#endif
       
        __GetRefinedEffect(pItemData);
    }
    else
    {
        __ClearWeaponRefineEffect();
    }

    return true;
}

// arat
    else if (m_kHorse.IsMounting())

//üstüne ekle
       
#ifdef ENABLE_COSTUME_WEAPON_SYSTEM
    else if (byItemType == CItemData::ITEM_TYPE_COSTUME)
    {
        switch (pItemData->GetValue(3))
        {
            case CItemData::WEAPON_SWORD:
                if (m_kHorse.IsMounting())
                    SetMotionMode(CRaceMotionData::MODE_HORSE_ONEHAND_SWORD);
                else
                    SetMotionMode(CRaceMotionData::MODE_ONEHAND_SWORD);
                break;
            case CItemData::WEAPON_DAGGER:
                if (m_kHorse.IsMounting())
                    SetMotionMode(CRaceMotionData::MODE_HORSE_DUALHAND_SWORD);
                else
                    SetMotionMode(CRaceMotionData::MODE_DUALHAND_SWORD);
                break;
            case CItemData::WEAPON_BOW:
                if (m_kHorse.IsMounting())
                    SetMotionMode(CRaceMotionData::MODE_HORSE_BOW);
                else
                    SetMotionMode(CRaceMotionData::MODE_BOW);
                break;
            case CItemData::WEAPON_TWO_HANDED:
                if (m_kHorse.IsMounting())
                    SetMotionMode(CRaceMotionData::MODE_HORSE_TWOHAND_SWORD);
                else
                    SetMotionMode(CRaceMotionData::MODE_TWOHAND_SWORD);
                break;
            case CItemData::WEAPON_BELL:
                if (m_kHorse.IsMounting())
                    SetMotionMode(CRaceMotionData::MODE_HORSE_BELL);
                else
                    SetMotionMode(CRaceMotionData::MODE_BELL);
                break;
            case CItemData::WEAPON_FAN:
                if (m_kHorse.IsMounting())
                    SetMotionMode(CRaceMotionData::MODE_HORSE_FAN);
                else
                    SetMotionMode(CRaceMotionData::MODE_FAN);
                break;
            default:
                    if (m_kHorse.IsMounting())
                        SetMotionMode(CRaceMotionData::MODE_HORSE);
                    else
                        SetMotionMode(CRaceMotionData::MODE_GENERAL);
                break;
        }
    }
#endif

karşılaştırma yapman içinde dosyayı bırakıyorum.
 

Dosya Eklentileri

InstanceBase.cpp dosyasına eklediklerini kaldırıp şu verdiklerimi ekle birde öyle dene bakalım

defineleri kendinki ile değiştirmeyi unutma

C++:
Genişlet Daralt Kopyala
// arat
DWORD CInstanceBase::GetWeaponType()
  
// kod bloğunu değiştir
  
DWORD CInstanceBase::GetWeaponType()
{
    DWORD dwWeapon = GetPart(CRaceData::PART_WEAPON);
    CItemData * pItemData;
    if (!CItemManager::Instance().GetItemDataPointer(dwWeapon, &pItemData))
        return CItemData::WEAPON_NONE;
  
#ifdef ENABLE_COSTUME_WEAPON_SYSTEM
    if (pItemData->GetType() == CItemData::ITEM_TYPE_COSTUME)
        return pItemData->GetValue(3);
#endif
    return pItemData->GetWeaponType();
}

//arat
bool CInstanceBase::SetWeapon (DWORD eWeapon)

//komple değiştir
  
bool CInstanceBase::SetWeapon (DWORD eWeapon)
{
    if (IsPoly())
    {
        return false;
    }

    if (__IsShapeAnimalWear())
    {
        return false;
    }

    if (__IsChangableWeapon (eWeapon) == false)
    {
        eWeapon = 0;
    }

    m_GraphicThingInstance.AttachWeapon (eWeapon);
    m_awPart[CRaceData::PART_WEAPON] = eWeapon;

    //Weapon Effect
    CItemData* pItemData;
    if (CItemManager::Instance().GetItemDataPointer(eWeapon, &pItemData))
    {
#ifdef ENABLE_COSTUME_WEAPON_SYSTEM
        if (pItemData->GetType() == CItemData::ITEM_TYPE_COSTUME)
            __ClearWeaponRefineEffect();
#endif
      
        __GetRefinedEffect(pItemData);
    }
    else
    {
        __ClearWeaponRefineEffect();
    }

    return true;
}

// arat
    else if (m_kHorse.IsMounting())

//üstüne ekle
      
#ifdef ENABLE_COSTUME_WEAPON_SYSTEM
    else if (byItemType == CItemData::ITEM_TYPE_COSTUME)
    {
        switch (pItemData->GetValue(3))
        {
            case CItemData::WEAPON_SWORD:
                if (m_kHorse.IsMounting())
                    SetMotionMode(CRaceMotionData::MODE_HORSE_ONEHAND_SWORD);
                else
                    SetMotionMode(CRaceMotionData::MODE_ONEHAND_SWORD);
                break;
            case CItemData::WEAPON_DAGGER:
                if (m_kHorse.IsMounting())
                    SetMotionMode(CRaceMotionData::MODE_HORSE_DUALHAND_SWORD);
                else
                    SetMotionMode(CRaceMotionData::MODE_DUALHAND_SWORD);
                break;
            case CItemData::WEAPON_BOW:
                if (m_kHorse.IsMounting())
                    SetMotionMode(CRaceMotionData::MODE_HORSE_BOW);
                else
                    SetMotionMode(CRaceMotionData::MODE_BOW);
                break;
            case CItemData::WEAPON_TWO_HANDED:
                if (m_kHorse.IsMounting())
                    SetMotionMode(CRaceMotionData::MODE_HORSE_TWOHAND_SWORD);
                else
                    SetMotionMode(CRaceMotionData::MODE_TWOHAND_SWORD);
                break;
            case CItemData::WEAPON_BELL:
                if (m_kHorse.IsMounting())
                    SetMotionMode(CRaceMotionData::MODE_HORSE_BELL);
                else
                    SetMotionMode(CRaceMotionData::MODE_BELL);
                break;
            case CItemData::WEAPON_FAN:
                if (m_kHorse.IsMounting())
                    SetMotionMode(CRaceMotionData::MODE_HORSE_FAN);
                else
                    SetMotionMode(CRaceMotionData::MODE_FAN);
                break;
            default:
                    if (m_kHorse.IsMounting())
                        SetMotionMode(CRaceMotionData::MODE_HORSE);
                    else
                        SetMotionMode(CRaceMotionData::MODE_GENERAL);
                break;
        }
    }
#endif

karşılaştırma yapman içinde dosyayı bırakıyorum.
Durum aynı değişen birşey olmadı
 
InstanceBase.cpp dosyasına eklediklerini kaldırıp şu verdiklerimi ekle birde öyle dene bakalım

defineleri kendinki ile değiştirmeyi unutma

C++:
Genişlet Daralt Kopyala
// arat
DWORD CInstanceBase::GetWeaponType()
  
// kod bloğunu değiştir
  
DWORD CInstanceBase::GetWeaponType()
{
    DWORD dwWeapon = GetPart(CRaceData::PART_WEAPON);
    CItemData * pItemData;
    if (!CItemManager::Instance().GetItemDataPointer(dwWeapon, &pItemData))
        return CItemData::WEAPON_NONE;
  
#ifdef ENABLE_COSTUME_WEAPON_SYSTEM
    if (pItemData->GetType() == CItemData::ITEM_TYPE_COSTUME)
        return pItemData->GetValue(3);
#endif
    return pItemData->GetWeaponType();
}

//arat
bool CInstanceBase::SetWeapon (DWORD eWeapon)

//komple değiştir
  
bool CInstanceBase::SetWeapon (DWORD eWeapon)
{
    if (IsPoly())
    {
        return false;
    }

    if (__IsShapeAnimalWear())
    {
        return false;
    }

    if (__IsChangableWeapon (eWeapon) == false)
    {
        eWeapon = 0;
    }

    m_GraphicThingInstance.AttachWeapon (eWeapon);
    m_awPart[CRaceData::PART_WEAPON] = eWeapon;

    //Weapon Effect
    CItemData* pItemData;
    if (CItemManager::Instance().GetItemDataPointer(eWeapon, &pItemData))
    {
#ifdef ENABLE_COSTUME_WEAPON_SYSTEM
        if (pItemData->GetType() == CItemData::ITEM_TYPE_COSTUME)
            __ClearWeaponRefineEffect();
#endif
      
        __GetRefinedEffect(pItemData);
    }
    else
    {
        __ClearWeaponRefineEffect();
    }

    return true;
}

// arat
    else if (m_kHorse.IsMounting())

//üstüne ekle
      
#ifdef ENABLE_COSTUME_WEAPON_SYSTEM
    else if (byItemType == CItemData::ITEM_TYPE_COSTUME)
    {
        switch (pItemData->GetValue(3))
        {
            case CItemData::WEAPON_SWORD:
                if (m_kHorse.IsMounting())
                    SetMotionMode(CRaceMotionData::MODE_HORSE_ONEHAND_SWORD);
                else
                    SetMotionMode(CRaceMotionData::MODE_ONEHAND_SWORD);
                break;
            case CItemData::WEAPON_DAGGER:
                if (m_kHorse.IsMounting())
                    SetMotionMode(CRaceMotionData::MODE_HORSE_DUALHAND_SWORD);
                else
                    SetMotionMode(CRaceMotionData::MODE_DUALHAND_SWORD);
                break;
            case CItemData::WEAPON_BOW:
                if (m_kHorse.IsMounting())
                    SetMotionMode(CRaceMotionData::MODE_HORSE_BOW);
                else
                    SetMotionMode(CRaceMotionData::MODE_BOW);
                break;
            case CItemData::WEAPON_TWO_HANDED:
                if (m_kHorse.IsMounting())
                    SetMotionMode(CRaceMotionData::MODE_HORSE_TWOHAND_SWORD);
                else
                    SetMotionMode(CRaceMotionData::MODE_TWOHAND_SWORD);
                break;
            case CItemData::WEAPON_BELL:
                if (m_kHorse.IsMounting())
                    SetMotionMode(CRaceMotionData::MODE_HORSE_BELL);
                else
                    SetMotionMode(CRaceMotionData::MODE_BELL);
                break;
            case CItemData::WEAPON_FAN:
                if (m_kHorse.IsMounting())
                    SetMotionMode(CRaceMotionData::MODE_HORSE_FAN);
                else
                    SetMotionMode(CRaceMotionData::MODE_FAN);
                break;
            default:
                    if (m_kHorse.IsMounting())
                        SetMotionMode(CRaceMotionData::MODE_HORSE);
                    else
                        SetMotionMode(CRaceMotionData::MODE_GENERAL);
                break;
        }
    }
#endif

karşılaştırma yapman içinde dosyayı bırakıyorum.
Karşılaştırma ile de baktım 1-1 aynı
 
Eklediğiniz sistemde eğer karakter silah kostümü takıyorsa, giydiği silahı çıkartma engeli mevcut mu ? Yani silah kostümü takılıyken mevcut silahı çıkartmaya çalıştığınızda "bunun içine önce kostümü çıkartın" tarzında bir kontrol var mı ? Eğer yoksa önce bunu ekleyerek denemek mantıklı olabilir, gerçi eğer yoksa bile yine de bu kontrolü eklemenizi öneririm, sorundan bağımsız. Sorunun kaynağı eksik geçirilmiş bir bölümde olabilir Hasan'da aynı sistemi kullandığını, aynı yerden söktüğünü söylemiş çünkü, bu da bir ihtimal.
 
Eklediğiniz sistemde eğer karakter silah kostümü takıyorsa, giydiği silahı çıkartma engeli mevcut mu ? Yani silah kostümü takılıyken mevcut silahı çıkartmaya çalıştığınızda "bunun içine önce kostümü çıkartın" tarzında bir kontrol var mı ? Eğer yoksa önce bunu ekleyerek denemek mantıklı olabilir, gerçi eğer yoksa bile yine de bu kontrolü eklemenizi öneririm, sorundan bağımsız. Sorunun kaynağı eksik geçirilmiş bir bölümde olabilir Hasan'da aynı sistemi kullandığını, aynı yerden söktüğünü söylemiş çünkü, bu da bir ihtimal.
Söylediğiniz fix mevcut değil şu şekilde devam ediyor çektiğim haliyle kostüm silahı takılıyken normal silah çıkartıldığında 2 silahta çıkıyor aynı anda problem burda değil.

Problem bu sistemi ekledikten sonra normal bir şekilde bir silah takıp çıkarttığım zaman elimde görsel bir şekilde kalıyor acaba yapılan bir fix bununla çakışıyor olabilir mi diye düşünüyorum.
 
Durum
İçerik kilitlendiği için mesaj gönderimine kapatıldı.
Üst