Neler yeni
XenForo Bannerlar
Modern AdBlock Uyarısı

🎉 SEZON SONU SINIRLI SÜRELİ İNDİRİMLER!
🏷️ Tüm Reklam Paketlerinde %25 İNDİRİM!
Geçerlilik: 01/12/2025 - 31/12/2025
🔍 Detaylar İçin Tıkla

Kod Yere Düşen İtemlere Efekt Verme

Fatih Bulut

Süper Üye
Katılım
6 Kas 2021
Mesajlar
3,491
Tepkime puanı
4,992
Puanları
113
Yaş
31
Konum
Türkiye
Dc
fatihbulut
Herkese Merhaba Arkadaşlar; Bu Sistem Client Src tabanlı bir sistem yere düşen itemlere nesnelere herhangi bir şeyin cinsine(type ve subtype) ya da koduna göre ufak düzenlemeler ile istediğiniz efekti vermeyi sağlar.

1108_210707.jpg
İlk Olarak
UserInterface/PythonItem.h açalım ve aratalım.

Kod:
        typedef struct SGroundItemInstance

Sonra Üstüne Şunu ekleyelim;(İsteğe göre arttırılıp azaltılabilir)

Kod:
        enum EDropItemEffects
        {
            DROP_ITEM_EFFECT_NORMAL,
            DROP_ITEM_EFFECT_RARE,
            DROP_ITEM_EFFECT_EPIC,
            DROP_ITEM_EFFECT_LEGENARY,
            DROP_ITEM_EFFECT_NUM,
        };

Sonra Şu kodu Aratalım ;

Kod:
        DWORD    __Pick(const POINT& c_rkPtMouse);

Yine Üstüne Şu Kodu Ekleyelim ;

Kod:
        void    __RegisterEffect(int iIndex, const char* szFile);
        int        __AttachEffect(DWORD dwVnum, BYTE byType, BYTE bySubType);

Sonra Şu Kodu Arayalım;

Kod:
        DWORD m_dwDropItemEffectID;

Aşağıdaki Gibi Değiştirelim;

Kod:
        DWORD m_dwDropItemEffectID[DROP_ITEM_EFFECT_NUM];

2.adım

UserInterface/PythonItem.cpp açalım


Şu Kodu Aratalım;

Kod:
        // attaching effect
        CEffectManager & rem =CEffectManager::Instance();
        pGroundItemInstance->dwEffectInstanceIndex =
        rem.CreateEffect(m_dwDropItemEffectID, D3DXVECTOR3(x, -y, z), D3DXVECTOR3(0,0,0));

Aşağıdaki Gibi Değiştirelim;

Kod:
        // attaching effect
        DWORD dwEffectIndex = __AttachEffect(dwVirtualNumber, pItemData->GetType(), pItemData->GetSubType());
        if(dwEffectIndex < DROP_ITEM_EFFECT_NUM && dwEffectIndex >= 0)
        {
            dwEffectIndex = m_dwDropItemEffectID[dwEffectIndex];
            if(dwEffectIndex != 0)
            {
                CEffectManager & rem =CEffectManager::Instance();
                pGroundItemInstance->dwEffectInstanceIndex =
                rem.CreateEffect(dwEffectIndex, D3DXVECTOR3(x, -y, z), D3DXVECTOR3(0,0,0));     
            }
        }

Sonra Şu Kodu Aratalım;

Kod:
void CPythonItem::Create()

Şu Şekilde Değiştirelim ; (Efekt(mse) Yollarını ve İsimlerini Kendinize Göre Değiştirebilirsiniz UserInterface/PythonItem.h'nin ilk adımında ekleme yada değişiklik yaptıysanız Buraya da uygulayın)

Kod:
void CPythonItem::Create()
{
    //Default
    __RegisterEffect(DROP_ITEM_EFFECT_NORMAL, "d:/ymir work/effect/etc/dropitem/dropitem.mse");
  
    //Rare
    __RegisterEffect(DROP_ITEM_EFFECT_RARE, "d:/ymir work/effect/etc/dropitem/dropitem_rare.mse");
  
    //Epic
    __RegisterEffect(DROP_ITEM_EFFECT_EPIC, "d:/ymir work/effect/etc/dropitem/dropitem_epic.mse");
  
    //Epic
    __RegisterEffect(DROP_ITEM_EFFECT_LEGENARY, "d:/ymir work/effect/etc/dropitem/dropitem_legendary.mse");
}

Sonra Bu Kodu aratalım;

Kod:
    m_dwPickedItemID = INVALID_ID;

Altına Bu Kodu Ekleyelim;

Kod:
    memset(m_dwDropItemEffectID, 0, sizeof(m_dwDropItemEffectID));

Son Olarak Bu kodu Aratıp;
Kod:
CPythonItem::~CPythonItem()
{
    assert(m_GroundItemInstanceMap.empty());
}

Altına Bu Kodu Ekleyelim; (İtemleri Tipine Subtypene ya da Koduna göre burada düzenleyeceğiz.)

Kod:
void CPythonItem::__RegisterEffect(int iIndex, const char* szFile)
{
    if(iIndex >= DROP_ITEM_EFFECT_NUM || iIndex < 0)
    {
        TraceError("CPythonItem::__RegisterEffect - Invalid index: %d - %s", iIndex, szFile);
        return;
    }
  
    CEffectManager::Instance().RegisterEffect2(szFile, &m_dwDropItemEffectID[iIndex]);
}

int CPythonItem::__AttachEffect(DWORD dwVnum, BYTE byType, BYTE bySubType)
{
    //Örnek
  
    // itemin Vnumuna göre efekt
    switch(dwVnum)
    {
        //İtemin Vnumuna Göre Rare Olarak
        case 101:
        case 2001:
            return DROP_ITEM_EFFECT_RARE;
          
        //İtemin Vnumuna Göre Epic Olarak(Daha Fazla Ekleme Yapılabilir)
        case 3025:
        case 3229:
            return DROP_ITEM_EFFECT_EPIC;
    }
  
    // itemin type/subtype'ine göre ekleme
    switch(byType)
    {
        //Epic Olarak istenin efekt type ayrımı ile (        case CItemData::ITEM_TYPE_WEAPON: Vesaire eklenebilir)
        case CItemData::ITEM_TYPE_ARMOR:
            return DROP_ITEM_EFFECT_EPIC;

        //İtem Type Material olan efektler isteğe bağlı
        case CItemData::ITEM_TYPE_MATERIAL:
        {
            switch(bySubType)
            {
                //Epic İtem ayrımı (Subtype Ayrımı olarak)
                case CItemData::MATERIAL_LEATHER:
                    return DROP_ITEM_EFFECT_EPIC;
                  
                //İtem Typesi kolye Küpe Bilezik felan
                case CItemData::MATERIAL_JEWEL:
                    return DROP_ITEM_EFFECT_LEGENARY;
            }
          
            //ITEM_TYPE_MATERIAL dışında kalanlar isteğe bağlı
            return DROP_ITEM_EFFECT_RARE; //boş
        }
    }
  
    return DROP_ITEM_EFFECT_NORMAL; //boş
}
 

Benzer konular

Forumdan daha fazla yararlanmak için giriş yapın yada üye olun!

Forumdan daha fazla yararlanmak için giriş yapın veya kayıt olun!

Kayıt ol

Forumda bir hesap oluşturmak tamamen ücretsizdir.

Şimdi kayıt ol
Giriş yap

Eğer bir hesabınız var ise lütfen giriş yapın

Giriş yap

Tema düzenleyici

Tema özelletirmeleri

Grafik arka planlar

Granit arka planlar