Çözüldü ikarus offline shop k envanter uyarlama

  • Konuyu açan Konuyu açan enes turan
  • Açılış Tarihi Açılış Tarihi
  • Yanıt Yanıt 38
  • Gösterim Gösterim 1K
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ı.

enes turan

Yardımsever Üye
Yardımsever Üye
MT Üye
Mesaj
658
Çözümler
43
Beğeni
397
Puan
909
Ticaret Puanı
0
merhabalar bir çok uyarlamasını yaptım fakat offline shopdan item alınca veya pazarı kapatınca itemler normal envantere geliyor

kullandığım offshop =ikarus gridli
kullandığım k envanter = k envanter



uzun ugraşları sonucu çözüm hem satın alma hemde safeboxtan item aldıktan sonra gerekli itemler k envanterine gider

new_offlineshop_manager.cpp
açılır ve aratılır
Kod:
Genişlet Daralt Kopyala
    bool CShopManager::RecvShopBuyDBPacket(DWORD dwBuyerID, DWORD dwOwnerID, DWORD dwItemID)

void bloğu komple değiştirilir:
Genişlet Daralt Kopyala
    bool CShopManager::RecvShopBuyDBPacket(DWORD dwBuyerID, DWORD dwOwnerID, DWORD dwItemID)
    {
        OFFSHOP_DEBUG("buyer %u , owner %u , itemid %u ", dwBuyerID, dwOwnerID, dwItemID);

        CShop* pkShop = GetShopByOwnerID(dwOwnerID);
        if (!pkShop)
            return false;


        CShopItem* pItem = nullptr;
        if (!pkShop->GetItem(dwItemID, &pItem))
            return false;

        OFFSHOP_DEBUG("checked %s", "successful");

        LPCHARACTER ch = CHARACTER_MANAGER::instance().FindByPID(dwBuyerID);

        if (ch)
        {
            OFFSHOP_DEBUG("buyer is online , name %s , item id %u ", ch->GetName(), dwItemID);

            LPITEM pkItem = pItem->CreateItem();
            if (!pkItem)
            {
                sys_err("cannot create item ( dwItemID %u , dwVnum %u, dwShopOwner %u, dwBuyer %u ) ", dwItemID, pItem->GetInfo()->dwVnum, dwOwnerID, dwBuyerID);
                return false;
            }

            int cell;
            if (pkItem->IsDragonSoul())
                cell = ch->GetEmptyDragonSoulInventory(pkItem);
    #ifdef ENABLE_SPLIT_INVENTORY_SYSTEM
            else if (pkItem->IsSkillBook())
            {
                cell = ch->GetEmptySkillBookInventory(pkItem->GetSize());
            }
            else if (pkItem->IsUpgradeItem())
            {
                cell = ch->GetEmptyUpgradeItemsInventory(pkItem->GetSize());
            }
            else if (pkItem->IsStone())
            {
                cell = ch->GetEmptyStoneInventory(pkItem->GetSize());
            }
            else if (pkItem->IsBox())
            {
                cell = ch->GetEmptyBoxInventory(pkItem->GetSize());
            }
            else if (pkItem->IsEfsun())
            {
                cell = ch->GetEmptyEfsunInventory(pkItem->GetSize());
            }
            else if (pkItem->IsCicek())
            {
                cell = ch->GetEmptyCicekInventory(pkItem->GetSize());
            }
    #endif
            else
                cell = ch->GetEmptyInventory(pkItem->GetSize());

            if (cell != -1)
            {
                if (pkItem->IsDragonSoul())
                    pkItem->AddToCharacter(ch, TItemPos(DRAGON_SOUL_INVENTORY, cell));
    #ifdef ENABLE_SPLIT_INVENTORY_SYSTEM
                else if (pkItem->IsSkillBook())
                    pkItem->AddToCharacter(ch, TItemPos(INVENTORY, cell));
                else if (pkItem->IsUpgradeItem())
                    pkItem->AddToCharacter(ch, TItemPos(INVENTORY, cell));
                else if (pkItem->IsStone())
                    pkItem->AddToCharacter(ch, TItemPos(INVENTORY, cell));
                else if (pkItem->IsBox())
                    pkItem->AddToCharacter(ch, TItemPos(INVENTORY, cell));
                else if (pkItem->IsEfsun())
                    pkItem->AddToCharacter(ch, TItemPos(INVENTORY, cell));
                else if (pkItem->IsCicek())
                    pkItem->AddToCharacter(ch, TItemPos(INVENTORY, cell));
    #endif
                else
                    pkItem->AddToCharacter(ch, TItemPos(INVENTORY, cell));
            }

            DWORD dwItemID = pItem->GetID();
            pkShop->BuyItem(dwItemID);
        }

        else
        {
            OFFSHOP_DEBUG("buyer isn't online , item removed %u (shop %u)", dwItemID, pkShop->GetOwnerPID());

            DWORD dwItemID = pItem->GetID();
            pkShop->BuyItem(dwItemID);
        }


        return true;
    }

tekrar aratılır
Kod:
Genişlet Daralt Kopyala
    bool CShopManager::RecvShopSafeboxGetItemClientPacket(LPCHARACTER ch, DWORD dwItemID)

ve değiştirilir

void bloğu komple değiştirilir:
Genişlet Daralt Kopyala
    bool CShopManager::RecvShopSafeboxGetItemClientPacket(LPCHARACTER ch, DWORD dwItemID)
    {
        if (!ch || !ch->GetShopSafebox())
            return false;

        CShopSafebox* pkSafebox = ch->GetShopSafebox();
        CShopItem* pItem = nullptr;

        if (!pkSafebox->GetItem(dwItemID, &pItem))
            return false;

        LPITEM pkItem = pItem->CreateItem();
        if (!pkItem)
            return false;


        int iEmptyPos = -1;
        if (pkItem->IsDragonSoul())
            iEmptyPos = ch->GetEmptyDragonSoulInventory(pkItem);
    #ifdef ENABLE_SPLIT_INVENTORY_SYSTEM
            else if (pkItem->IsSkillBook())
            {
                iEmptyPos = ch->GetEmptySkillBookInventory(pkItem->GetSize());
            }
            else if (pkItem->IsUpgradeItem())
            {
                iEmptyPos = ch->GetEmptyUpgradeItemsInventory(pkItem->GetSize());
            }
            else if (pkItem->IsStone())
            {
                iEmptyPos = ch->GetEmptyStoneInventory(pkItem->GetSize());
            }
            else if (pkItem->IsBox())
            {
                iEmptyPos = ch->GetEmptyBoxInventory(pkItem->GetSize());
            }
            else if (pkItem->IsEfsun())
            {
                iEmptyPos = ch->GetEmptyEfsunInventory(pkItem->GetSize());
            }
            else if (pkItem->IsCicek())
            {
                iEmptyPos = ch->GetEmptyCicekInventory(pkItem->GetSize());
            }
    #endif
        else
            iEmptyPos = ch->GetEmptyInventory(pkItem->GetSize());

        if (iEmptyPos == -1)
        {
            M2_DESTROY_ITEM(pkItem);
            return false;
        }

        // patch with warp check
        ch->SetOfflineShopUseTime();

        if (pkSafebox->RemoveItem(dwItemID))
        {
            pkSafebox->RefreshToOwner();
            if (pkItem->IsDragonSoul())
                pkItem->AddToCharacter(ch, TItemPos(DRAGON_SOUL_INVENTORY, iEmptyPos));
    #ifdef ENABLE_SPLIT_INVENTORY_SYSTEM
                else if (pkItem->IsSkillBook())
                    pkItem->AddToCharacter(ch, TItemPos(INVENTORY, iEmptyPos));
                else if (pkItem->IsUpgradeItem())
                    pkItem->AddToCharacter(ch, TItemPos(INVENTORY, iEmptyPos));
                else if (pkItem->IsStone())
                    pkItem->AddToCharacter(ch, TItemPos(INVENTORY, iEmptyPos));
                else if (pkItem->IsBox())
                    pkItem->AddToCharacter(ch, TItemPos(INVENTORY, iEmptyPos));
                else if (pkItem->IsEfsun())
                    pkItem->AddToCharacter(ch, TItemPos(INVENTORY, iEmptyPos));
                else if (pkItem->IsCicek())
                    pkItem->AddToCharacter(ch, TItemPos(INVENTORY, iEmptyPos));
    #endif
            else
                pkItem->AddToCharacter(ch, TItemPos(INVENTORY, iEmptyPos));
        }

        SendShopSafeboxGetItemDBPacket(ch->GetPlayerID(), dwItemID);
        return true;
    }
konu kapatılabilir

karşılaştırma yapabilmeniz için dosyayı bırakıyorum yardımlarından ötürü @hasanmacit tekrar teşekkür ederim.
 

Dosya Eklentileri

Son düzenleme:
Kullandığınız K envanter sisteminin exchange bölümünde şöyle bir kod gördüm;

C++:
Genişlet Daralt Kopyala
#ifdef ENABLE_SPLIT_INVENTORY_SYSTEM
        else if (item->IsSkillBook())
        {
            BYTE itemSize = item->GetSize();
            int iPos = s_grid6.FindBlank(1, itemSize);
            if (iPos >= 0) {
                s_grid6.Put(iPos, 1, itemSize);
                continue;
            }
            
            iPos = s_grid7.FindBlank(1, itemSize);
            if (iPos >= 0) {
                s_grid7.Put(iPos, 1, itemSize);
                continue;
            }
            
            iPos = s_grid8.FindBlank(1, itemSize);
            if (iPos >= 0) {
                s_grid8.Put(iPos, 1, itemSize);
                continue;
            }
            
            return false;
        }
        else if (item->IsUpgradeItem())
        {
            BYTE itemSize = item->GetSize();
            int iPos = s_grid9.FindBlank(1, itemSize);
            if (iPos >= 0) {
                s_grid9.Put(iPos, 1, itemSize);
                continue;
            }
            
            iPos = s_grid10.FindBlank(1, itemSize);
            if (iPos >= 0) {
                s_grid10.Put(iPos, 1, itemSize);
                continue;
            }
            
            iPos = s_grid11.FindBlank(1, itemSize);
            if (iPos >= 0) {
                s_grid11.Put(iPos, 1, itemSize);
                continue;
            }
            
            return false;
        }
        else if (item->IsStone())
        {
            BYTE itemSize = item->GetSize();
            int iPos = s_grid12.FindBlank(1, itemSize);
            if (iPos >= 0) {
                s_grid12.Put(iPos, 1, itemSize);
                continue;
            }
            
            iPos = s_grid13.FindBlank(1, itemSize);
            if (iPos >= 0) {
                s_grid13.Put(iPos, 1, itemSize);
                continue;
            }
            
            iPos = s_grid14.FindBlank(1, itemSize);
            if (iPos >= 0) {
                s_grid14.Put(iPos, 1, itemSize);
                continue;
            }
            
            return false;
        }
        else if (item->IsBox())
        {
            BYTE itemSize = item->GetSize();
            int iPos = s_grid15.FindBlank(1, itemSize);
            if (iPos >= 0) {
                s_grid15.Put(iPos, 1, itemSize);
                continue;
            }
            
            iPos = s_grid16.FindBlank(1, itemSize);
            if (iPos >= 0) {
                s_grid16.Put(iPos, 1, itemSize);
                continue;
            }
            
            iPos = s_grid17.FindBlank(1, itemSize);
            if (iPos >= 0) {
                s_grid17.Put(iPos, 1, itemSize);
                continue;
            }
            
            return false;
        }
        else if (item->IsEfsun())
        {
            BYTE itemSize = item->GetSize();
            int iPos = s_grid18.FindBlank(1, itemSize);
            if (iPos >= 0) {
                s_grid18.Put(iPos, 1, itemSize);
                continue;
            }
            
            iPos = s_grid19.FindBlank(1, itemSize);
            if (iPos >= 0) {
                s_grid19.Put(iPos, 1, itemSize);
                continue;
            }
            
            iPos = s_grid20.FindBlank(1, itemSize);
            if (iPos >= 0) {
                s_grid20.Put(iPos, 1, itemSize);
                continue;
            }
            
            return false;
        }
        else if (item->IsCicek())
        {
            BYTE itemSize = item->GetSize();
            int iPos = s_grid21.FindBlank(1, itemSize);
            if (iPos >= 0) {
                s_grid21.Put(iPos, 1, itemSize);
                continue;
            }
            
            iPos = s_grid22.FindBlank(1, itemSize);
            if (iPos >= 0) {
                s_grid22.Put(iPos, 1, itemSize);
                continue;
            }
            
            iPos = s_grid23.FindBlank(1, itemSize);
            if (iPos >= 0) {
                s_grid23.Put(iPos, 1, itemSize);
                continue;
            }
            
            return false;
        }
#endif

Offline shoptan item aldıktan sonra bunu envantere taşıyan fonksiyona buna paralel bir uyarlama yapmanız lazım.
 
Kullandığınız K envanter sisteminin exchange bölümünde şöyle bir kod gördüm;

C++:
Genişlet Daralt Kopyala
#ifdef ENABLE_SPLIT_INVENTORY_SYSTEM
        else if (item->IsSkillBook())
        {
            BYTE itemSize = item->GetSize();
            int iPos = s_grid6.FindBlank(1, itemSize);
            if (iPos >= 0) {
                s_grid6.Put(iPos, 1, itemSize);
                continue;
            }
            
            iPos = s_grid7.FindBlank(1, itemSize);
            if (iPos >= 0) {
                s_grid7.Put(iPos, 1, itemSize);
                continue;
            }
            
            iPos = s_grid8.FindBlank(1, itemSize);
            if (iPos >= 0) {
                s_grid8.Put(iPos, 1, itemSize);
                continue;
            }
            
            return false;
        }
        else if (item->IsUpgradeItem())
        {
            BYTE itemSize = item->GetSize();
            int iPos = s_grid9.FindBlank(1, itemSize);
            if (iPos >= 0) {
                s_grid9.Put(iPos, 1, itemSize);
                continue;
            }
            
            iPos = s_grid10.FindBlank(1, itemSize);
            if (iPos >= 0) {
                s_grid10.Put(iPos, 1, itemSize);
                continue;
            }
            
            iPos = s_grid11.FindBlank(1, itemSize);
            if (iPos >= 0) {
                s_grid11.Put(iPos, 1, itemSize);
                continue;
            }
            
            return false;
        }
        else if (item->IsStone())
        {
            BYTE itemSize = item->GetSize();
            int iPos = s_grid12.FindBlank(1, itemSize);
            if (iPos >= 0) {
                s_grid12.Put(iPos, 1, itemSize);
                continue;
            }
            
            iPos = s_grid13.FindBlank(1, itemSize);
            if (iPos >= 0) {
                s_grid13.Put(iPos, 1, itemSize);
                continue;
            }
            
            iPos = s_grid14.FindBlank(1, itemSize);
            if (iPos >= 0) {
                s_grid14.Put(iPos, 1, itemSize);
                continue;
            }
            
            return false;
        }
        else if (item->IsBox())
        {
            BYTE itemSize = item->GetSize();
            int iPos = s_grid15.FindBlank(1, itemSize);
            if (iPos >= 0) {
                s_grid15.Put(iPos, 1, itemSize);
                continue;
            }
            
            iPos = s_grid16.FindBlank(1, itemSize);
            if (iPos >= 0) {
                s_grid16.Put(iPos, 1, itemSize);
                continue;
            }
            
            iPos = s_grid17.FindBlank(1, itemSize);
            if (iPos >= 0) {
                s_grid17.Put(iPos, 1, itemSize);
                continue;
            }
            
            return false;
        }
        else if (item->IsEfsun())
        {
            BYTE itemSize = item->GetSize();
            int iPos = s_grid18.FindBlank(1, itemSize);
            if (iPos >= 0) {
                s_grid18.Put(iPos, 1, itemSize);
                continue;
            }
            
            iPos = s_grid19.FindBlank(1, itemSize);
            if (iPos >= 0) {
                s_grid19.Put(iPos, 1, itemSize);
                continue;
            }
            
            iPos = s_grid20.FindBlank(1, itemSize);
            if (iPos >= 0) {
                s_grid20.Put(iPos, 1, itemSize);
                continue;
            }
            
            return false;
        }
        else if (item->IsCicek())
        {
            BYTE itemSize = item->GetSize();
            int iPos = s_grid21.FindBlank(1, itemSize);
            if (iPos >= 0) {
                s_grid21.Put(iPos, 1, itemSize);
                continue;
            }
            
            iPos = s_grid22.FindBlank(1, itemSize);
            if (iPos >= 0) {
                s_grid22.Put(iPos, 1, itemSize);
                continue;
            }
            
            iPos = s_grid23.FindBlank(1, itemSize);
            if (iPos >= 0) {
                s_grid23.Put(iPos, 1, itemSize);
                continue;
            }
            
            return false;
        }
#endif

Offline shoptan item aldıktan sonra bunu envantere taşıyan fonksiyona buna paralel bir uyarlama yapmanız lazım.
Envantere taşıyan fonksiyonu bulamadım New_offlineshop.cpp de :/
 
Yada daha kolay bir yol seçebilirsiniz, piyasada warez olan fileslerden offline shop uyarlamalı k envanter kullananlardan birinin kodlarıyla kendi dosyalarınızı karşılaştırın, nasıl entergre edeceğinizi daha çabuk anlarsınız.
 
Gridli ikarus kullanan pek files yok galiba yada ben bulamıyorum örnek varsa link atabilirmisiniz
Yada daha kolay bir yol seçebilirsiniz, piyasada warez olan fileslerden offline shop uyarlamalı k envanter kullananlardan birinin kodlarıyla kendi dosyalarınızı karşılaştırın, nasıl entergre edeceğinizi daha çabuk anlarsınız.
 
@hasanmacit

Kod:
Genişlet Daralt Kopyala
    bool CShopManager::RecvShopBuyDBPacket(DWORD dwBuyerID, DWORD dwOwnerID, DWORD dwItemID)
    {
        OFFSHOP_DEBUG("buyer %u , owner %u , itemid %u ", dwBuyerID, dwOwnerID, dwItemID);

        CShop* pkShop = GetShopByOwnerID(dwOwnerID);
        if (!pkShop)
            return false;


        CShopItem* pItem = nullptr;
        if (!pkShop->GetItem(dwItemID, &pItem))
            return false;

        OFFSHOP_DEBUG("checked %s", "successful");

        LPCHARACTER ch = CHARACTER_MANAGER::instance().FindByPID(dwBuyerID);

        if (ch)
        {
            OFFSHOP_DEBUG("buyer is online , name %s , item id %u ", ch->GetName(), dwItemID);

            LPITEM pkItem = pItem->CreateItem();
            if (!pkItem)
            {
                sys_err("cannot create item ( dwItemID %u , dwVnum %u, dwShopOwner %u, dwBuyer %u ) ", dwItemID, pItem->GetInfo()->dwVnum, dwOwnerID, dwBuyerID);
                return false;
            }

            TItemPos pos;
            if (!ch->CanTakeInventoryItem(pkItem, &pos))
            {
                M2_DESTROY_ITEM(pkItem);

                CShopSafebox* pSafebox = ch->GetShopSafebox() ? ch->GetShopSafebox() : GetShopSafeboxByOwnerID(ch->GetPlayerID());
                if (!pSafebox)
                    return false;

                /*
                if(!pSafebox->AddItem(pItem))
                    return false;
                */

                SendShopSafeboxAddItemDBPacket(ch->GetPlayerID(), *pItem);
                SendChatPacket(ch, CHAT_PACKET_RECV_ITEM_SAFEBOX);
            }



            else
            {
                pkItem->AddToCharacter(ch, pos);
            }

            DWORD dwItemID = pItem->GetID();
            pkShop->BuyItem(dwItemID);
        }

        else
        {
            OFFSHOP_DEBUG("buyer isn't online , item removed %u (shop %u)", dwItemID, pkShop->GetOwnerPID());

            DWORD dwItemID = pItem->GetID();
            pkShop->BuyItem(dwItemID);
        }


        return true;
    }

hocam envantere tasıyan kod bloğu burasımı bakma şansın varmıdır acaba
 
@hasanmacit

Kod:
Genişlet Daralt Kopyala
    bool CShopManager::RecvShopBuyDBPacket(DWORD dwBuyerID, DWORD dwOwnerID, DWORD dwItemID)
    {
        OFFSHOP_DEBUG("buyer %u , owner %u , itemid %u ", dwBuyerID, dwOwnerID, dwItemID);

        CShop* pkShop = GetShopByOwnerID(dwOwnerID);
        if (!pkShop)
            return false;


        CShopItem* pItem = nullptr;
        if (!pkShop->GetItem(dwItemID, &pItem))
            return false;

        OFFSHOP_DEBUG("checked %s", "successful");

        LPCHARACTER ch = CHARACTER_MANAGER::instance().FindByPID(dwBuyerID);

        if (ch)
        {
            OFFSHOP_DEBUG("buyer is online , name %s , item id %u ", ch->GetName(), dwItemID);

            LPITEM pkItem = pItem->CreateItem();
            if (!pkItem)
            {
                sys_err("cannot create item ( dwItemID %u , dwVnum %u, dwShopOwner %u, dwBuyer %u ) ", dwItemID, pItem->GetInfo()->dwVnum, dwOwnerID, dwBuyerID);
                return false;
            }

            TItemPos pos;
            if (!ch->CanTakeInventoryItem(pkItem, &pos))
            {
                M2_DESTROY_ITEM(pkItem);

                CShopSafebox* pSafebox = ch->GetShopSafebox() ? ch->GetShopSafebox() : GetShopSafeboxByOwnerID(ch->GetPlayerID());
                if (!pSafebox)
                    return false;

                /*
                if(!pSafebox->AddItem(pItem))
                    return false;
                */

                SendShopSafeboxAddItemDBPacket(ch->GetPlayerID(), *pItem);
                SendChatPacket(ch, CHAT_PACKET_RECV_ITEM_SAFEBOX);
            }



            else
            {
                pkItem->AddToCharacter(ch, pos);
            }

            DWORD dwItemID = pItem->GetID();
            pkShop->BuyItem(dwItemID);
        }

        else
        {
            OFFSHOP_DEBUG("buyer isn't online , item removed %u (shop %u)", dwItemID, pkShop->GetOwnerPID());

            DWORD dwItemID = pItem->GetID();
            pkShop->BuyItem(dwItemID);
        }


        return true;
    }

hocam envantere tasıyan kod bloğu burasımı bakma şansın varmıdır acaba
else pkitem add to character var ya onu exchange.cppdeki gibi uyarsan sorunun çözülür mobil olduğum için tam anlatamadım ama k envsnter konusunda aynı addtocicek gibi kodlar var onu buraya uyarlaman lazım

Kod:
Genişlet Daralt Kopyala
if (item->IsDragonSoul())
            item->AddToCharacter(victim, TItemPos(DRAGON_SOUL_INVENTORY, empty_pos));
#ifdef ENABLE_SPLIT_INVENTORY_SYSTEM
        else if (item->IsSkillBook())
            item->AddToCharacter(victim, TItemPos(INVENTORY, empty_pos));
        else if (item->IsUpgradeItem())
            item->AddToCharacter(victim, TItemPos(INVENTORY, empty_pos));
        else if (item->IsStone())
            item->AddToCharacter(victim, TItemPos(INVENTORY, empty_pos));
        else if (item->IsBox())
            item->AddToCharacter(victim, TItemPos(INVENTORY, empty_pos));
        else if (item->IsEfsun())
            item->AddToCharacter(victim, TItemPos(INVENTORY, empty_pos));
        else if (item->IsCicek())
            item->AddToCharacter(victim, TItemPos(INVENTORY, empty_pos));
#endif
        else
            item->AddToCharacter(victim, TItemPos(INVENTORY, empty_pos));

şu şekil bir uyarlama yapman lazım yani
 
else pkitem add to character var ya onu exchange.cppdeki gibi uyarsan sorunun çözülür mobil olduğum için tam anlatamadım ama k envsnter konusunda aynı addtocicek gibi kodlar var onu buraya uyarlaman lazım

Kod:
Genişlet Daralt Kopyala
if (item->IsDragonSoul())
            item->AddToCharacter(victim, TItemPos(DRAGON_SOUL_INVENTORY, empty_pos));
#ifdef ENABLE_SPLIT_INVENTORY_SYSTEM
        else if (item->IsSkillBook())
            item->AddToCharacter(victim, TItemPos(INVENTORY, empty_pos));
        else if (item->IsUpgradeItem())
            item->AddToCharacter(victim, TItemPos(INVENTORY, empty_pos));
        else if (item->IsStone())
            item->AddToCharacter(victim, TItemPos(INVENTORY, empty_pos));
        else if (item->IsBox())
            item->AddToCharacter(victim, TItemPos(INVENTORY, empty_pos));
        else if (item->IsEfsun())
            item->AddToCharacter(victim, TItemPos(INVENTORY, empty_pos));
        else if (item->IsCicek())
            item->AddToCharacter(victim, TItemPos(INVENTORY, empty_pos));
#endif
        else
            item->AddToCharacter(victim, TItemPos(INVENTORY, empty_pos));

şu şekil bir uyarlama yapman lazım yani
örnek
Kod:
Genişlet Daralt Kopyala
#ifdef ENABLE_SPLIT_INVENTORY_SYSTEM
                else if (item->IsSkillBook())
                    item->AddToCharacter(INVENTORY, pos);
#endif

böyle birşey ekledim oda yemedi :D
 
örnek
Kod:
Genişlet Daralt Kopyala
#ifdef ENABLE_SPLIT_INVENTORY_SYSTEM
                else if (item->IsSkillBook())
                    item->AddToCharacter(INVENTORY, pos);
#endif

böyle birşey ekledim oda yemedi :D
ben yarın akşama doğru geçerim pcye o zamana kadar kimse çözemezse uyarlamayı yapıp atarım maalesef mobilde elimden bişey gelmiyor
 
C++:
Genişlet Daralt Kopyala
else
            {
                pkItem->AddToCharacter(ch, pos);
                #ifdef ENABLE_SPLIT_INVENTORY_SYSTEM
                if (item->IsSkillBook())
                    item->AddToCharacter(victim, TItemPos(INVENTORY, empty_pos));
                else if (item->IsUpgradeItem())
                    item->AddToCharacter(victim, TItemPos(INVENTORY, empty_pos));
                else if (item->IsStone())
                    item->AddToCharacter(victim, TItemPos(INVENTORY, empty_pos));
                else if (item->IsBox())
                    item->AddToCharacter(victim, TItemPos(INVENTORY, empty_pos));
                else if (item->IsEfsun())
                    item->AddToCharacter(victim, TItemPos(INVENTORY, empty_pos));
                else if (item->IsCicek())
                    item->AddToCharacter(victim, TItemPos(INVENTORY, empty_pos));
#endif
            }

bu şekilde dener misin rica etsem çalışıcak mı bi bakalım
 
C++:
Genişlet Daralt Kopyala
else
            {
                pkItem->AddToCharacter(ch, pos);
                #ifdef ENABLE_SPLIT_INVENTORY_SYSTEM
                if (item->IsSkillBook())
                    item->AddToCharacter(victim, TItemPos(INVENTORY, empty_pos));
                else if (item->IsUpgradeItem())
                    item->AddToCharacter(victim, TItemPos(INVENTORY, empty_pos));
                else if (item->IsStone())
                    item->AddToCharacter(victim, TItemPos(INVENTORY, empty_pos));
                else if (item->IsBox())
                    item->AddToCharacter(victim, TItemPos(INVENTORY, empty_pos));
                else if (item->IsEfsun())
                    item->AddToCharacter(victim, TItemPos(INVENTORY, empty_pos));
                else if (item->IsCicek())
                    item->AddToCharacter(victim, TItemPos(INVENTORY, empty_pos));
#endif
            }

bu şekilde dener misin rica etsem çalışıcak mı bi bakalım
Adsız.webp

böyle bir hata verdi
 
#include "item.h" var mı eğer yoksa ekleyip tekrar dene olmazsa itemleri pkitem yapıp dene
#include "item.h" var pkitem yaptım build aldım sorunsuz oyunu açtım ama kapazarı kapatıp veya itemi kaldırıp safeboxtan aldığımda yine envantere geliyor satın alma yaparkende envantere atıyor birşey değişmedi yani syser de vermedi

bu şekilde hata vermedi:
Genişlet Daralt Kopyala
            {
                pkItem->AddToCharacter(ch, pos);
#ifdef ENABLE_SPLIT_INVENTORY_SYSTEM
                if (pkItem->IsSkillBook())
                    pkItem->AddToCharacter(ch, pos);
                else if (pkItem->IsUpgradeItem())
                    pkItem->AddToCharacter(ch, pos);
                else if (pkItem->IsStone())
                    pkItem->AddToCharacter(ch, pos);
                else if (pkItem->IsBox())
                    pkItem->AddToCharacter(ch, pos);
                else if (pkItem->IsEfsun())
                    pkItem->AddToCharacter(ch, pos);
                else if (pkItem->IsCicek())
                    pkItem->AddToCharacter(ch, pos);
#endif
            }
 
#include "item.h" var pkitem yaptım build aldım sorunsuz oyunu açtım ama kapazarı kapatıp veya itemi kaldırıp safeboxtan aldığımda yine envantere geliyor satın alma yaparkende envantere atıyor birşey değişmedi yani syser de vermedi

bu şekilde hata vermedi:
Genişlet Daralt Kopyala
            {
                pkItem->AddToCharacter(ch, pos);
#ifdef ENABLE_SPLIT_INVENTORY_SYSTEM
                if (pkItem->IsSkillBook())
                    pkItem->AddToCharacter(ch, pos);
                else if (pkItem->IsUpgradeItem())
                    pkItem->AddToCharacter(ch, pos);
                else if (pkItem->IsStone())
                    pkItem->AddToCharacter(ch, pos);
                else if (pkItem->IsBox())
                    pkItem->AddToCharacter(ch, pos);
                else if (pkItem->IsEfsun())
                    pkItem->AddToCharacter(ch, pos);
                else if (pkItem->IsCicek())
                    pkItem->AddToCharacter(ch, pos);
#endif
            }
ch pos olan kısımları split inventory kısmını sadece

TItemPos(INVENTORY, pos) olucak şekilde düzeltir misin
 
Durum
İçerik kilitlendiği için mesaj gönderimine kapatıldı.
Geri
Üst