Çözüldü Animasyonlu İtem Socket Sorunu

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.

MEKA

Discord: mekaprojects
Site yetkilisi
Süper Moderatör
Premium Üye
Grafiker
Geliştirici
Yardımsever Üye
Mesaj
2.788
Çözümler
287
Beğeni
2.033
Puan
1.850
Ticaret Puanı
2
Animasyonlu silah sisteminde socketten çektiği için efektleri problem çıkartıyor 2 taşlı silah 3 taş vs oluyor bunu sorun çıkartmıyacak bi yerden çektirtmek mümkünmüdür acaba
C++:
DWORD refine = max(pItem->GetRefine() + pItem->GetSocketCount(),CItemData::ITEM_SOCKET_MAX_NUM) - CItemData::ITEM_SOCKET_MAX_NUM;
    switch (pItem->GetType())
    {
    case CItemData::ITEM_TYPE_WEAPON:
        __ClearWeaponRefineEffect();
        if (pItem->GetSocketCount() == 4)
 
En son bir moderatör tarafından düzenlenmiş:
Çözüm
Bunun yerine;
C++:
            switch (pItem->GetSubType())
            {
            case CItemData::WEAPON_DAGGER:
                trashy = EFFECT_REFINED + EFFECT_PUMNALE;
                trashy_silah = EFFECT_REFINED + EFFECT_PUMNALE_STANGA;
                break;
            case CItemData::WEAPON_FAN:
                trashy = EFFECT_REFINED + EFFECT_EVANTAI;
                break;
            case CItemData::WEAPON_BELL:
                trashy = EFFECT_REFINED + EFFECT_CLOPOT;
                break;
            case CItemData::WEAPON_BOW:
                trashy = EFFECT_REFINED + EFFECT_ARC;
                break;
            default:
                if (pItem->GetIndex() == 400)
                    trashy = EFFECT_REFINED +...
Value'den çektirilebilir ama süreli eşyalarda da socket limiti 0 olmasına rağmen timer bilgileri socketlere kayıt edilebiliyor. Sistem kaynaklı başka sorunlar olabilir. Bu konunun ana teması bozulmaması için isterseniz bunla ilgili ayrı bir konu açabilirsiniz.
 
Value'den çektirilebilir ama süreli eşyalarda da socket limiti 0 olmasına rağmen timer bilgileri socketlere kayıt edilebiliyor. Sistem kaynaklı başka sorunlar olabilir. Bu konunun ana teması bozulmaması için isterseniz bunla ilgili ayrı bir konu açabilirsiniz.

Toplu şekilde sandıkları açmayı vs engelleyebilirsiniz yada yerde kalan itemlerin kalma süresini de kısaltabilirsiniz.
ne yapmamı önerirsiniz şuanda value bir problem çıkartmaz diyorsanız kodların değiştirilmiş halini atabilirmisiniz
 
Problem çıkartmaz demedim. :)
Value'den çektirilebilir ama süreli eşyalarda da socket limiti 0 olmasına rağmen timer bilgileri socketlere kayıt edilebiliyor. Sistem kaynaklı başka sorunlar olabilir.
Socket yerine valueye kayıt ettirebilirsiniz dedim ama bu sorunu çözer mi bilmiyorum. Hatta süreli itemleri örnek göstererek socketlerle kaynaklı olmayabileceği ile ilgili fikir yürüttüm. Fakat taş eklenebilen itemler ile çakışma durumu olabilir. Belki de official item kilit sisteminde ki gibi animasyon bilgilerinin tutulacağı sütünu ayırmak mantıklı olabilir.
Yalnız ben bu sistemi daha önce indirmedim bu yüzden yazdıklarım çözüme yönelik sadece fikir. İsterseniz sistemi indirdiğiniz yeri de belirtin boş vaktimde bi inceliyim. :)
 
Problem çıkartmaz demedim. :)

Socket yerine valueye kayıt ettirebilirsiniz dedim ama bu sorunu çözer mi bilmiyorum. Hatta süreli itemleri örnek göstererek socketlerle kaynaklı olmayabileceği ile ilgili fikir yürüttüm. Fakat taş eklenebilen itemler ile çakışma durumu olabilir. Belki de official item kilit sisteminde ki gibi animasyon bilgilerinin tutulacağı sütünu ayırmak mantıklı olabilir.
Yalnız ben bu sistemi daha önce indirmedim bu yüzden yazdıklarım çözüme yönelik sadece fikir. İsterseniz sistemi indirdiğiniz yeri de belirtin boş vaktimde bi inceliyim. :)
Linkleri görebilmek için giriş yap veya kayıt ol.
sistem bu ben yanlış anlattım sanırım sistemi socketten çekilecek şekilde ayarlamışlar serverim 3 taş 4.socketide bu sistem kullanıyor yani iteme efekti vermek için socketi 4e çekiyoruz 4 yaptığımız zamanda dolunay örneğin normalde 2 taş socketi 4 ypaınca 3 taş oluyor ve efekti geliyor sadece yapmak istediğim socketten değilde başka bi yerden çektirtmek konuyu incelerseniz anlıyacaksınız tam olarak ne demek istediğimi
 
Bu sistemin kodlarında server kısmı yok? Socket ne alaka onu anlamadım ben. :)
C++:
if (pItem->GetSocketCount() == 4)
şunu kaldırıp. Protolardan da eşyaların socketini eski haline getirip tekrar dener misiniz?

İlgili konuda animasyonlu silahları ayrı bir item olarak eklemişler.
anagonda1 demiş ki:
Konu içerisinde hazır herşey sadece gereken bölümleri ekleyin item proto açıklamasında konuya dikkatli yapın yeni bir silah olarak ekleniyor 7 adet silah vardır konu içerisinde resimde göründüğü üzere

Yorumlarda konu sahibi böyle yazmış. Bu yüzden dolunay gibi silahlara uyarlanmıyor galiba. Siz gene de dediğim satırı silip deneyin. Büyük ihtimalle tüm itemlere animasyon uygulanacak.
 
Bu sistemin kodlarında server kısmı yok? Socket ne alaka onu anlamadım ben. :)
C++:
if (pItem->GetSocketCount() == 4)
şunu kaldırıp. Protolardan da eşyaların socketini eski haline getirip tekrar dener misiniz?

İlgili konuda animasyonlu silahları ayrı bir item olarak eklemişler.


Yorumlarda konu sahibi böyle yazmış. Bu yüzden dolunay gibi silahlara uyarlanmıyor galiba. Siz gene de dediğim satırı silip deneyin. Büyük ihtimalle tüm itemlere animasyon uygulanacak.
o verdiğim konuyu kullanarak
Linkleri görebilmek için giriş yap veya kayıt ol.
burdaki animasyonlu silahları ekliyorum
 
Hee bu sistem ile o yapılamaz ama. :( Bende araştırırken orada ki animasyonlu itemleri gördüm baya güzelmiş.

Şey yapabilirsiniz ama o satırda item türleri belirtilmiş. Onun yerine item vnumu ile hangi iteme hangi efektin ekleneceğini belirtebilirsiniz.
 
Hee bu sistem ile o yapılamaz ama. :( Bende araştırırken orada ki animasyonlu itemleri gördüm baya güzelmiş.

Şey yapabilirsiniz ama o satırda item türleri belirtilmiş. Onun yerine item vnumu ile hangi iteme hangi efektin ekleneceğini belirtebilirsiniz.
nasıl yapacağımı bilmiyorum yardımcı olurmusun örnek 1 tane gösterirsen ben onu çoğaltarak eklerim
EK : dediğiniz kodu sildim tam olarak istediğim oldu şuanda bu alt kodda düzenlemem gereken bir yer varmı yoksa böyle kalsın mı
C++:
DWORD refine = max(pItem->GetRefine() + pItem->GetSocketCount(),CItemData::ITEM_SOCKET_MAX_NUM) - CItemData::ITEM_SOCKET_MAX_NUM;
 
Evet var. İtem efektlerinin bulunduğu konuda efektler bazı itemler için yapılmış eğer bu sistem üzerinden eklemek istiyorsanız şöyle mantık kurabilirsiniz;
C++:
        {
            if (pItem->GetIndex() >= 180 && pItem->GetIndex() <= 189) //dolunay kılıcı için
                efect_anagonda1 = EFFECT_REFINED + BURAYA_DOLUNAY_ICIN_EKLENECEK_EFFECT_ADI
            if (pItem->GetIndex() >= 1170 && pItem->GetIndex() <= 1179) //siyah yaprak hancer icin
            {
                efekt_anagonda1 = EFFECT_REFINED + BURAYA_SYH_ICIN_EKLENECEK_EFFECT_ADI;
                efekt_anagonda1_silah = EFFECT_REFINED + BURAYA_SYH_ICIN_EKLENECEK_EFFECT_ADI_2;
            }
        }
   
        if (efekt_anagonda1)
            efekt_anagonda1 = __AttachEffect(efekt_anagonda1);
        if (efekt_anagonda1_silah)
            efekt_anagonda1_silah = __AttachEffect(efekt_anagonda1_silah);

İki elde de silah varsa iki tanesine efekti ekliyoruz.

Sadece +9'da gözükmesi için if koşulunu şöyle yapabilirsiniz;
C++:
if (pItem->GetIndex() == 189)
 
C++:
UINT CInstanceBase::__GetRefinedEffect(CItemData* pItem)
{
    DWORD refine = max(pItem->GetRefine() + pItem->GetSocketCount(),CItemData::ITEM_SOCKET_MAX_NUM) - CItemData::ITEM_SOCKET_MAX_NUM;
    switch (pItem->GetType())
    {
    case CItemData::ITEM_TYPE_WEAPON:
        __ClearWeaponRefineEffect();
        {
            switch (pItem->GetSubType())
            {
            case CItemData::WEAPON_DAGGER:
                trashy = EFFECT_REFINED + EFFECT_PUMNALE;
                trashy_silah = EFFECT_REFINED + EFFECT_PUMNALE_STANGA;
                break;
            case CItemData::WEAPON_FAN:
                trashy = EFFECT_REFINED + EFFECT_EVANTAI;
                break;
            case CItemData::WEAPON_BELL:
                trashy = EFFECT_REFINED + EFFECT_CLOPOT;
                break;
            case CItemData::WEAPON_BOW:
                trashy = EFFECT_REFINED + EFFECT_ARC;
                break;
            default:
                if (pItem->GetIndex() == 400)
                    trashy = EFFECT_REFINED + EFFECT_ZEHIR;
                if (pItem->GetIndex() == 401)
                    trashy = EFFECT_REFINED + EFFECT_DOLUNAY;
            }
            if (trashy)
                trashy = __AttachEffect(trashy);
            if (trashy_silah)
                trashy_silah = __AttachEffect(trashy_silah);
        }
şuanda böyle kullanıyorum tam olarak neresini düzenlemem gerekiyor anlamadım size zahmet düzenleyip atarmısınız sadece dword kısmına takıldım biraz socket kodunu sildik fakat orada hala socket kodları mevcut orada ne gibi düzenleme yapacağız?
 
Bunun yerine;
C++:
            switch (pItem->GetSubType())
            {
            case CItemData::WEAPON_DAGGER:
                trashy = EFFECT_REFINED + EFFECT_PUMNALE;
                trashy_silah = EFFECT_REFINED + EFFECT_PUMNALE_STANGA;
                break;
            case CItemData::WEAPON_FAN:
                trashy = EFFECT_REFINED + EFFECT_EVANTAI;
                break;
            case CItemData::WEAPON_BELL:
                trashy = EFFECT_REFINED + EFFECT_CLOPOT;
                break;
            case CItemData::WEAPON_BOW:
                trashy = EFFECT_REFINED + EFFECT_ARC;
                break;
            default:
                if (pItem->GetIndex() == 400)
                    trashy = EFFECT_REFINED + EFFECT_ZEHIR;
                if (pItem->GetIndex() == 401)
                    trashy = EFFECT_REFINED + EFFECT_DOLUNAY;
            }


Şunu ekleyin ve kodu kendinize göre düzenleyin;
C++:
        {
            if (pItem->GetIndex() >= 180 && pItem->GetIndex() <= 189) //dolunay kılıcı için
                efect_anagonda1 = EFFECT_REFINED + BURAYA_DOLUNAY_ICIN_EKLENECEK_EFFECT_ADI
            if (pItem->GetIndex() >= 1170 && pItem->GetIndex() <= 1179) //siyah yaprak hancer icin
            {
                efekt_anagonda1 = EFFECT_REFINED + BURAYA_SYH_ICIN_EKLENECEK_EFFECT_ADI;
                efekt_anagonda1_silah = EFFECT_REFINED + BURAYA_SYH_ICIN_EKLENECEK_EFFECT_ADI_2;
            }
        }
   
        if (efekt_anagonda1)
            efekt_anagonda1 = __AttachEffect(efekt_anagonda1);
        if (efekt_anagonda1_silah)
            efekt_anagonda1_silah = __AttachEffect(efekt_anagonda1_silah);
 
Çözüm
Bunun yerine;
C++:
            switch (pItem->GetSubType())
            {
            case CItemData::WEAPON_DAGGER:
                trashy = EFFECT_REFINED + EFFECT_PUMNALE;
                trashy_silah = EFFECT_REFINED + EFFECT_PUMNALE_STANGA;
                break;
            case CItemData::WEAPON_FAN:
                trashy = EFFECT_REFINED + EFFECT_EVANTAI;
                break;
            case CItemData::WEAPON_BELL:
                trashy = EFFECT_REFINED + EFFECT_CLOPOT;
                break;
            case CItemData::WEAPON_BOW:
                trashy = EFFECT_REFINED + EFFECT_ARC;
                break;
            default:
                if (pItem->GetIndex() == 400)
                    trashy = EFFECT_REFINED + EFFECT_ZEHIR;
                if (pItem->GetIndex() == 401)
                    trashy = EFFECT_REFINED + EFFECT_DOLUNAY;
            }


Şunu ekleyin ve kodu kendinize göre düzenleyin;
C++:
        {
            if (pItem->GetIndex() >= 180 && pItem->GetIndex() <= 189) //dolunay kılıcı için
                efect_anagonda1 = EFFECT_REFINED + BURAYA_DOLUNAY_ICIN_EKLENECEK_EFFECT_ADI
            if (pItem->GetIndex() >= 1170 && pItem->GetIndex() <= 1179) //siyah yaprak hancer icin
            {
                efekt_anagonda1 = EFFECT_REFINED + BURAYA_SYH_ICIN_EKLENECEK_EFFECT_ADI;
                efekt_anagonda1_silah = EFFECT_REFINED + BURAYA_SYH_ICIN_EKLENECEK_EFFECT_ADI_2;
            }
        }
  
        if (efekt_anagonda1)
            efekt_anagonda1 = __AttachEffect(efekt_anagonda1);
        if (efekt_anagonda1_silah)
            efekt_anagonda1_silah = __AttachEffect(efekt_anagonda1_silah);
Teşekkürler kapatılabilir.
 
Oyundan ekran görüntüsü atabilir misiniz? Merak ettim nasıl gözüküyor. :)
NLMDvN.png

Pc başında değilim fakat şu görsel ile tamamen aynı
 

Dosya Eklentileri

  • metin2 animasyonlu item.jpg
    metin2 animasyonlu item.jpg
    234 KB · Gösterim: 134
Baya güzel gözüküyor. Animasyon hareket etmesine rağmen silah olduğu gibi kalıyor galiba. :( Silah görüntüsünü komple kaldırıp sadece animasyonlu şekilde olursa daha iyi olabilir diye düşünüyorum. Modelleme konusunda cahil olduğum için bi fikrim yok ama :D

Resim paylaştığınız için teşekkürler. Sorun çözüldüğüne göre konuyu kilitliyorum.
 
Baya güzel gözüküyor. Animasyon hareket etmesine rağmen silah olduğu gibi kalıyor galiba. :( Silah görüntüsünü komple kaldırıp sadece animasyonlu şekilde olursa daha iyi olabilir diye düşünüyorum. Modelleme konusunda cahil olduğum için bi fikrim yok ama :D

Resim paylaştığınız için teşekkürler. Sorun çözüldüğüne göre konuyu kilitliyorum.
Eklerken gr2sini siliyorsunuz itemlistten ozaman sadece animasyon haraket ediyor silah gözükmüyor zaten öyle yapılması gerekiyor deneyin isterseniz :D
 
Şimdi bi soru daha. :) İtem düştüğünde yerde modeli gözüküyor. Yerde de düzgün gözüküyor mu?
 
Şimdi bi soru daha. :) İtem düştüğünde yerde modeli gözüküyor. Yerde de düzgün gözüküyor mu?
benim aklımda farklı bir düşünce olduğu için yerde böyle gözükmesinin bir önemi yok ama buyrun yinede böyle gözüküyor gr2si olmadığı için normal yani :D
dusen item.png
 
En son bir moderatör tarafından düzenlenmiş:
Teşekkürler. :) Yerde direk item olarak veya çuval olarak gözükmesi pek önemli değil ama oyuncuları yanıltabilir.
 
Geri
Üst