Çözüldü Offlineshop ve K Envanteri 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.
Durum
İçerik kilitlendiği için mesaj gönderimine kapatıldı.

Forgiven

Discord; burakhangunduz
Premium Üye
Geliştirici
Yardımsever Üye
Usta Üye
Editör
Mesaj
698
Çözümler
56
Beğeni
744
Puan
949
Ticaret Puanı
0
Burdaki sorun k envanterindeki sandıklarla pazar kuruyorum.
Ama pazarı kapat dediğimde envantere geliyor.
Bu arada k envanterine gelebilcek bütün itemler bu şekilde envantere geliyor.
giphy.webp



K Envanterindeki bkları tek sefer okuyor..
giphy.gif


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

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




####################### Çözümler #############################

Öncelikle çözümleri sağladıkları için @Whistle ve @Trashy 'ye teşekkürlerimi sunuyorum.

Off shoptaki itemlerin k envanterine gelmemesi çözümü;

Bunu bi deneyin hata alırsanız yazarsınız.
ifdef olarak ENABLE_SPLIT_INVENTORY_SYSTEM yazdım sizde farklıysa ona göre değiştirin.
https://www.mmotutkunlari.com/eklentiler/off-7z.3508/

K Envanterdeki bknın tek seferde silinmesi çözümü;

Bkların toplu okunmasını engellemek için şu düzenlemeleri yapabilirsiniz.
char_item.cpp dosyasında case ITEM_SKILLBOOK: blogu içindeki şu kodu aratın.
C++:
Genişlet Daralt Kopyala
                    ITEM_MANAGER::instance().RemoveItem(item);
(Bu koddan birden fazla var bu yüzden case ITEM_SKILLBOOK içerisindeki kodu değiştirdiğinizden emin olun.)

Değiştirin;
C++:
Genişlet Daralt Kopyala
                    item->SetCount(item->GetCount() - 1);

Kanıtlar;

Honeycam_2020-09-14_13-58-23.gif
Honeycam_2020-09-14_14-34-22.gif
 
Son düzenleme:
K envanter sisteminde oyun için item transferi yapılan kodlarda düzenlemeler yapılıyor. Yanlış hatırlamıyorsam tc offshop sisteminde k envanter desteği bulunmuyor. K envanter kodlarınızı offlineshop sistemine uyarlamanız gerekiyor.
 
K envanter sisteminde oyun için item transferi yapılan kodlarda düzenlemeler yapılıyor. Yanlış hatırlamıyorsam tc offshop sisteminde k envanter desteği bulunmuyor. K envanter kodlarınızı offlineshop sistemine uyarlamanız gerekiyor.
Bu konu hakkında bilgim malesef yok. Yardımcı olma şansınız varsa makbule geçer.
 
offlineshop.cpp ile offlineshop_manager.cpp dosyalarınızı konuya dahil edin yardımcı olmaya çalışıyım.
 
Eğer server files düzenleyecekseniz azda olsa kodları bilmeniz gerekiyor. İsterseniz Metin2 Geliştirici Eğitimi Video Serisi buradaki rehberlere bakabilirsiniz. Fakat bu konuyla ilgili çok soru geldiği için nasıl yapılacağını anlatacağım.

Kodları inceledim. Sanırsam aynı sorun item satın alırkende olması lazım. Her ikisi içinde aşağıda söylediklerimi uygulayın.

offlineshop.cpp dosyasında COfflineShop::Buy(LPCHARACTER ch, BYTE bPos) fonksiyonu içinde aratın;
C++:
Genişlet Daralt Kopyala
    int iEmptyPos = ch->GetEmptyInventory(item->GetSize());

Değiştirin;
C++:
Genişlet Daralt Kopyala
    int iEmptyPos;
    if (item->IsDragonSoul())
    {
        iEmptyPos = ch->GetEmptyDragonSoulInventory(item);
    }
#ifdef ENABLE_SPLIT_INVENTORY_SYSTEM
    else if (item->IsSkillBook())
    {
        iEmptyPos = ch->GetEmptySkillBookInventory(item->GetSize());
    }
    else if (item->IsUpgradeItem())
    {
        iEmptyPos = ch->GetEmptyUpgradeItemsInventory(item->GetSize());
    }
    else if (item->IsStone())
    {
        iEmptyPos = ch->GetEmptyStoneInventory(item->GetSize());
    }
    else if (item->IsBox())
    {
        iEmptyPos = ch->GetEmptyBoxInventory(item->GetSize());
    }
    else if (item->IsEfsun())
    {
        iEmptyPos = ch->GetEmptyEfsunInventory(item->GetSize());
    }
    else if (item->IsCicek())
    {
        iEmptyPos = ch->GetEmptyCicekInventory(item->GetSize());
    }
#endif
    else
    {
        iEmptyPos = ch->GetEmptyInventory(item->GetSize());
    }


Aratın;
C++:
Genişlet Daralt Kopyala
    item->AddToCharacter(ch, TItemPos(INVENTORY, iEmptyPos));


Değiştirin;
C++:
Genişlet Daralt Kopyala
        if (item->IsDragonSoul())
            item->AddToCharacter(ch, TItemPos(DRAGON_SOUL_INVENTORY, iEmptyPos));
#ifdef ENABLE_SPLIT_INVENTORY_SYSTEM
        else if (item->IsSkillBook())
            item->AddToCharacter(ch, TItemPos(INVENTORY, iEmptyPos));
        else if (item->IsUpgradeItem())
            item->AddToCharacter(ch, TItemPos(INVENTORY, iEmptyPos));
        else if (item->IsStone())
            item->AddToCharacter(ch, TItemPos(INVENTORY, iEmptyPos));
        else if (item->IsBox())
            item->AddToCharacter(ch, TItemPos(INVENTORY, iEmptyPos));
        else if (item->IsEfsun())
            item->AddToCharacter(ch, TItemPos(INVENTORY, iEmptyPos));
        else if (item->IsCicek())
            item->AddToCharacter(ch, TItemPos(INVENTORY, iEmptyPos));
#endif
         else
            item->AddToCharacter(ch, TItemPos(INVENTORY, iEmptyPos));


offlineshop.cpp COfflineShop::GiveBackMyItems(LPCHARACTER ch) fonksiyonu içinde aratın;
C++:
Genişlet Daralt Kopyala
            int cell;
            cell = ch->GetEmptyInventory(pItem->GetSize());

Değiştirin;
C++:
Genişlet Daralt Kopyala
            int cell;
            if (pItem->IsDragonSoul())
            {
                cell = ch->GetEmptyDragonSoulInventory(pItem);
            }
#ifdef ENABLE_SPLIT_INVENTORY_SYSTEM
            else if (pItem->IsSkillBook())
            {
                cell = ch->GetEmptySkillBookInventory(pItem->GetSize());
            }
            else if (pItem->IsUpgradeItem())
            {
                cell  = ch->GetEmptyUpgradeItemsInventory(pItem->GetSize());
            }
            else if (pItem->IsStone())
            {
                cell = ch->GetEmptyStoneInventory(pItem->GetSize());
            }
            else if (pItem->IsBox())
            {
                cell = ch->GetEmptyBoxInventory(pItem->GetSize());
            }
                else if (pItem->IsEfsun())
            {
                cell = ch->GetEmptyEfsunInventory(pItem->GetSize());
            }
            else if (pItem->IsCicek())
            {
                cell = ch->GetEmptyCicekInventory(pItem->GetSize());
            }
#endif
            else
            {
                cell = ch->GetEmptyInventory(pItem->GetSize());
            }


Aratın;
C++:
Genişlet Daralt Kopyala
            if (cell != -1)
            {
                pItem->AddToCharacter(ch, TItemPos(INVENTORY, cell));
            }

Değiştirin;
C++:
Genişlet Daralt Kopyala
            if (cell != -1)
            {
                if (pItem->IsDragonSoul())
                    pItem->AddToCharacter(ch, TItemPos(DRAGON_SOUL_INVENTORY, cell));
                else if (pItem->IsSkillBook())
                    pItem->AddToCharacter(ch, TItemPos(INVENTORY, cell));
                else if (pItem->IsUpgradeItem())
                    pItem->AddToCharacter(ch, TItemPos(INVENTORY, cell));
                else if (pItem->IsStone())
                    pItem->AddToCharacter(ch, TItemPos(INVENTORY, cell));
                else if (pItem->IsBox())
                    pItem->AddToCharacter(ch, TItemPos(INVENTORY, cell));
                else if (pItem->IsEfsun())
                    pItem->AddToCharacter(ch, TItemPos(INVENTORY, cell));
                else if (pItem->IsCicek())
                    pItem->AddToCharacter(ch, TItemPos(INVENTORY, cell));
                else
                    pItem->AddToCharacter(ch, TItemPos(INVENTORY, cell));
            }


Not: Derleyip kontrol etmedim kodlara bakarak uyarladım. Bu düzenlemeleri yaptıktan sonra kontrol ediniz.
 
Son düzenleme:
Bunu bi deneyin hata alırsanız yazarsınız.
ifdef olarak ENABLE_SPLIT_INVENTORY_SYSTEM yazdım sizde farklıysa ona göre değiştirin.
 

Dosya Eklentileri

Büyük ihtimal build hatası verecektir. Kodların bazı yerlerini düzenledim. Sayfayı yeniledikten sonra tekrardan kontrol edin. :D
 
Eski bir files yaptığınız için dragon soul kodlarını ben eklemedim. bilginiz olsun
 
offlineshop_manager.cpp'de de düzenlenmesi gereken yerler varmış. Neyse ki @Trashy 'nin verdiği dosya ekinde bulunuyor. :)
 

Dosya Eklentileri

  • Honeycam_2020-09-14_13-58-23.gif
    Honeycam_2020-09-14_13-58-23.gif
    1,3 MB · Gösterim: 237
Kodları karşılaştırarak ne tür eklemeler yaptığımızı kontrol edin. Bk hakkında bi fikrim yok şuanda eklemelerinizi kontrol ettiniz mi ?
 
Kodları karşılaştırarak ne tür eklemeler yaptığımızı kontrol edin. Bk hakkında bi fikrim yok şuanda eklemelerinizi kontrol ettiniz mi ?
Uyarlamayı arkadaşım yapmıştı zaten, teşekkür ediyorum.
Bi de şu bk sorununu çözsek temiz olmaz mı? :D
 
Kullandığınız doyaları bu konudaki dosyalar ile bi karşılaştırın.
Linkleri görebilmek için giriş yap veya kayıt ol.

Sizin offlineshop.cpp dosyanızı açtığımdakodlar farklıydı bbenim kullanığım ile şuanda yeni bir k envanteri üzerinde çalıştığım için test edemiyorum bu sorun var mı diye
 
Anladım hocam teşekkür ederim ilgin için.
 
Rica ederim bk problemin hakkında gelişme olursa bu konuda paylaşabilirsin. Bu yüzden konuyu kapatmıyorum.
 
Durum
İçerik kilitlendiği için mesaj gönderimine kapatıldı.
Geri
Üst