Çözüldü K Envanteri Great offline shopa uyarlama

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 Deniz

www.SixTails.com.tr
Geliştirici
Usta Üye
Mesaj
362
Çözümler
20
Beğeni
601
Puan
839
Ticaret Puanı
0
Öncelikle merhaba iyi forumlar iyi günler dilerim
Şimdi şöyle bir sorunum var daha önce böyle bir konu paylaşılmış çözüme kavuşmuş KONU LİNKİ
Anlamadığım kısımlar şurası aynı K envanteri bende kullanıyorum ve great offline shop kullanyorum
O Konudaki yorumlarda belirtilen kodları hangi dosyaya hangi kod satırının altına ekliyeceğimi bulamadım
Yardımcı olacak arkadaşlara şimdiden teşekkürlerimi sunarım...
 
Offlineshopdan item alınca ör. basmalık item ise k envantere gelsin diyosun demi.
 
Hangi k envanteri kullanıyorsun
 
K envanter içindeki shop.cpp dosyasındaki anlatımları yeniden uygularsan düzeltmiş olursun.
 
Buy fonksiyonu bu şekilde olmlı.
Shop.cpp CShop::Buy:
int CShop::Buy(LPCHARACTER ch, BYTE pos)
{
    if (IsLocked())
        return SHOP_SUBHEADER_GC_END;
    
    if (pos >= m_itemVector.size())
    {
        sys_log(0, "Shop::Buy : invalid position %d : %s", pos, ch->GetName());
        return SHOP_SUBHEADER_GC_INVALID_POS;
    }

    sys_log(0, "Shop::Buy : name %s pos %d", ch->GetName(), pos);

    GuestMapType::iterator it = m_map_guest.find(ch);

    if (it == m_map_guest.end())
        return SHOP_SUBHEADER_GC_END;

    SHOP_ITEM& r_item = m_itemVector[pos];

    if (r_item.price < 0)
    {
        LogManager::instance().HackLog("SHOP_BUY_GOLD_OVERFLOW", ch);
        return SHOP_SUBHEADER_GC_NOT_ENOUGH_MONEY;
    }

    LPITEM pkSelectedItem = ITEM_MANAGER::instance().Find(r_item.itemid);
    
#ifdef FULL_YANG
    long long dwPrice = r_item.price;
#else
    DWORD dwPrice = r_item.price;
#endif
    DWORD dwTax = 0;


    int iVal = quest::CQuestManager::instance().GetEventFlag ("personal_shop");

    if (0 < iVal)
    {
        if (iVal > 100)
        {
            iVal = 100;
        }

        dwTax = dwPrice * iVal / 100;
        dwPrice = dwPrice - dwTax;
    }
    else
    {
        iVal = 0;
        dwTax = 0;
    }

    if (ch->GetGold() < r_item.price)
    {
        sys_log(1, "Shop::Buy : Not enough money : %s has %d, price %d", ch->GetName(), ch->GetGold(), dwPrice);
        return SHOP_SUBHEADER_GC_NOT_ENOUGH_MONEY;
    }
    LPITEM item;

    if (m_pkPC)
        item = r_item.pkItem;
    else {
        item = ITEM_MANAGER::instance().CreateItem(r_item.vnum, r_item.count);
    }
    if (!item)
        return SHOP_SUBHEADER_GC_SOLD_OUT;

    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());
    }

    if (iEmptyPos < 0)
    {
        if (m_pkPC)
        {
            sys_log(1, "Shop::Buy at PC Shop : Inventory full : %s size %d", ch->GetName(), item->GetSize());
            return SHOP_SUBHEADER_GC_INVENTORY_FULL;
        }
        else
        {
            sys_log(1, "Shop::Buy : Inventory full : %s size %d", ch->GetName(), item->GetSize());
            M2_DESTROY_ITEM(item);
            return SHOP_SUBHEADER_GC_INVENTORY_FULL;
        }
    }
#ifdef FULL_YANG_OWN
    ch->ChangeGold(-dwPrice);
#else
    ch->PointChange(POINT_GOLD, -dwPrice, false);
#endif
    // ±?AO ˝?˝??? : ??±Y Aˇ?o
    if (m_pkPC)
    {
        if (!m_pkPC->IsPrivShop())
            m_pkPC->SyncQuickslot(QUICKSLOT_TYPE_ITEM, item->GetCell(), 255);

        char buf[512];
        DWORD mpid = (m_pkPC->IsPrivShop() ? m_pkPC->GetPrivShopOwner() : m_pkPC->GetPlayerID());
        if (item->GetVnum() >= 80003 && item->GetVnum() <= 80007)
        {
            snprintf(buf, sizeof(buf), "%s FROM: %u TO: %u PRICE: %u", item->GetName(), ch->GetPlayerID(), mpid, dwPrice);
            LogManager::instance().GoldBarLog(ch->GetPlayerID(), item->GetID(), SHOP_BUY, buf);
            LogManager::instance().GoldBarLog(mpid, item->GetID(), SHOP_SELL, buf);
        }
        LPITEM pkNewItem = ITEM_MANAGER::instance().CreateItem(r_item.vnum, r_item.count);

        if (pkNewItem)
        {
            for (int i = 0; i < ITEM_SOCKET_MAX_NUM; i++)
            {
                pkNewItem->SetSocket(i, item->GetSocket(i));
            }
            // 매직 아이템 설정
            item->CopyAttributeTo(pkNewItem);

            if (pkNewItem->IsDragonSoul())
                pkNewItem->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
                pkNewItem->AddToCharacter(ch, TItemPos(INVENTORY, iEmptyPos));
            item->RemoveFromCharacter();
            M2_DESTROY_ITEM(item);
            ITEM_MANAGER::instance().FlushDelayedSave(pkNewItem);
            std::string szBuy("SHOP_BUY");
            std::string szSell("SHOP_SELL");
            if (m_pkPC->IsPrivShop())
            {
                std::string temp("OFFLINE_");
                szBuy = temp + szBuy;
                szSell = temp + szSell;
            }
#ifdef FULL_YANG
            snprintf(buf, sizeof(buf), "%s %u(%s) %lld %u", pkNewItem->GetName(), mpid, m_pkPC->GetName(), dwPrice, pkNewItem->GetCount());
            LogManager::instance().ItemLog(ch, pkNewItem, szBuy.c_str(), buf);
            snprintf(buf, sizeof(buf), "%s %u(%s) %lld %u", pkNewItem->GetName(), ch->GetPlayerID(), ch->GetName(), dwPrice, pkNewItem->GetCount());
            LogManager::instance().ItemLog(m_pkPC, pkNewItem, szSell.c_str(), buf);
#else
            snprintf(buf, sizeof(buf), "%s %u(%s) %u %u", pkNewItem->GetName(), mpid, m_pkPC->GetName(), dwPrice, pkNewItem->GetCount());
            LogManager::instance().ItemLog(ch, pkNewItem, szBuy.c_str(), buf);
            snprintf(buf, sizeof(buf), "%s %u(%s) %u %u", pkNewItem->GetName(), ch->GetPlayerID(), ch->GetName(), dwPrice, pkNewItem->GetCount());
            LogManager::instance().ItemLog(m_pkPC, pkNewItem, szSell.c_str(), buf);
#endif



            r_item.pkItem = NULL;
            BroadcastUpdateItem(pos);
            if (m_pkPC->IsPrivShop()) {
                LPCHARACTER owner = CHARACTER_MANAGER::instance().FindByPID(m_pkPC->GetPrivShopOwner());
                

#ifdef FULL_YANG
                    DBManager::instance().DirectQuery("UPDATE player_shop SET gold=gold + %lld WHERE id=%d", dwPrice, m_pkPC->GetPrivShop());
#else
                    DBManager::instance().DirectQuery("INSERT INTO player_gift SET \
                    owner_id=%d,vnum=1,count='%d',reason=\"%s\",`from`=replace(\"%s #%d\",' ','_'),status='WAIT',date_add=NOW()",
                    m_pkPC->GetPrivShopOwner(), dwPrice, LC_TEXT("SHOP_REASON"), m_pkPC->GetName(), m_pkPC->GetPrivShop());

#endif
                    
            
                DBManager::instance().DirectQuery("DELETE FROM player_shop_items WHERE shop_id=%d and id = %d", m_pkPC->GetPrivShop(), r_item.itemid);
                if (owner)
                {
                    owner->LoadPrivShops();
#ifdef FULL_YANG
                    if (owner->GetGiftPages() > 0)
                        owner->ChatPacket(CHAT_TYPE_COMMAND, "gift_info %d", owner->GetGiftPages());
#else
                    owner->RefreshGift();
#endif
                }
            }
            else{
#ifdef FULL_YANG_OWN
                m_pkPC->ChangeGold(dwPrice);
#else
                m_pkPC->PointChange(POINT_GOLD, dwPrice, false);
#endif
                if (iVal > 0)
                {
                    m_pkPC->ChatPacket (CHAT_TYPE_INFO, LC_TEXT ("판매금액의 %d %% 가 세금으로 나가게됩니다"), iVal);
                }

            }
            item = pkNewItem;
        }
        else {
            return SHOP_SUBHEADER_GC_INVALID_POS;
        }


    }
    else
    {
        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));
        ITEM_MANAGER::instance().FlushDelayedSave(item);
        LogManager::instance().ItemLog(ch, item, "BUY", item->GetName());

        if (item->GetVnum() >= 80003 && item->GetVnum() <= 80007)
        {
            LogManager::instance().GoldBarLog(ch->GetPlayerID(), item->GetID(), PERSONAL_SHOP_BUY, "");
        }

        //DBManager::instance().SendMoneyLog(MONEY_LOG_SHOP, item->GetVnum(), -dwPrice);
    }

    if (item)
        sys_log(0, "SHOP: BUY: name %s %s(x %d):%u price %u", ch->GetName(), item->GetName(), item->GetCount(), item->GetID(), dwPrice);
    ch->Save();
#if defined(SHOP_AUTO_CLOSE) && defined(OFFLINE_SHOP)
    if (m_pkPC && m_pkPC->IsPrivShop())
    {
        if (GetItemCount()<=0)
            m_pkPC->DeleteMyShop();
    }
#endif
    return (SHOP_SUBHEADER_GC_OK);
}
 
Buy fonksiyonu bu şekilde olmlı.
Shop.cpp CShop::Buy:
int CShop::Buy(LPCHARACTER ch, BYTE pos)
{
    if (IsLocked())
        return SHOP_SUBHEADER_GC_END;
   
    if (pos >= m_itemVector.size())
    {
        sys_log(0, "Shop::Buy : invalid position %d : %s", pos, ch->GetName());
        return SHOP_SUBHEADER_GC_INVALID_POS;
    }

    sys_log(0, "Shop::Buy : name %s pos %d", ch->GetName(), pos);

    GuestMapType::iterator it = m_map_guest.find(ch);

    if (it == m_map_guest.end())
        return SHOP_SUBHEADER_GC_END;

    SHOP_ITEM& r_item = m_itemVector[pos];

    if (r_item.price < 0)
    {
        LogManager::instance().HackLog("SHOP_BUY_GOLD_OVERFLOW", ch);
        return SHOP_SUBHEADER_GC_NOT_ENOUGH_MONEY;
    }

    LPITEM pkSelectedItem = ITEM_MANAGER::instance().Find(r_item.itemid);
   
#ifdef FULL_YANG
    long long dwPrice = r_item.price;
#else
    DWORD dwPrice = r_item.price;
#endif
    DWORD dwTax = 0;


    int iVal = quest::CQuestManager::instance().GetEventFlag ("personal_shop");

    if (0 < iVal)
    {
        if (iVal > 100)
        {
            iVal = 100;
        }

        dwTax = dwPrice * iVal / 100;
        dwPrice = dwPrice - dwTax;
    }
    else
    {
        iVal = 0;
        dwTax = 0;
    }

    if (ch->GetGold() < r_item.price)
    {
        sys_log(1, "Shop::Buy : Not enough money : %s has %d, price %d", ch->GetName(), ch->GetGold(), dwPrice);
        return SHOP_SUBHEADER_GC_NOT_ENOUGH_MONEY;
    }
    LPITEM item;

    if (m_pkPC)
        item = r_item.pkItem;
    else {
        item = ITEM_MANAGER::instance().CreateItem(r_item.vnum, r_item.count);
    }
    if (!item)
        return SHOP_SUBHEADER_GC_SOLD_OUT;

    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());
    }

    if (iEmptyPos < 0)
    {
        if (m_pkPC)
        {
            sys_log(1, "Shop::Buy at PC Shop : Inventory full : %s size %d", ch->GetName(), item->GetSize());
            return SHOP_SUBHEADER_GC_INVENTORY_FULL;
        }
        else
        {
            sys_log(1, "Shop::Buy : Inventory full : %s size %d", ch->GetName(), item->GetSize());
            M2_DESTROY_ITEM(item);
            return SHOP_SUBHEADER_GC_INVENTORY_FULL;
        }
    }
#ifdef FULL_YANG_OWN
    ch->ChangeGold(-dwPrice);
#else
    ch->PointChange(POINT_GOLD, -dwPrice, false);
#endif
    // ±?AO ˝?˝??? : ??±Y Aˇ?o
    if (m_pkPC)
    {
        if (!m_pkPC->IsPrivShop())
            m_pkPC->SyncQuickslot(QUICKSLOT_TYPE_ITEM, item->GetCell(), 255);

        char buf[512];
        DWORD mpid = (m_pkPC->IsPrivShop() ? m_pkPC->GetPrivShopOwner() : m_pkPC->GetPlayerID());
        if (item->GetVnum() >= 80003 && item->GetVnum() <= 80007)
        {
            snprintf(buf, sizeof(buf), "%s FROM: %u TO: %u PRICE: %u", item->GetName(), ch->GetPlayerID(), mpid, dwPrice);
            LogManager::instance().GoldBarLog(ch->GetPlayerID(), item->GetID(), SHOP_BUY, buf);
            LogManager::instance().GoldBarLog(mpid, item->GetID(), SHOP_SELL, buf);
        }
        LPITEM pkNewItem = ITEM_MANAGER::instance().CreateItem(r_item.vnum, r_item.count);

        if (pkNewItem)
        {
            for (int i = 0; i < ITEM_SOCKET_MAX_NUM; i++)
            {
                pkNewItem->SetSocket(i, item->GetSocket(i));
            }
            // 매직 아이템 설정
            item->CopyAttributeTo(pkNewItem);

            if (pkNewItem->IsDragonSoul())
                pkNewItem->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
                pkNewItem->AddToCharacter(ch, TItemPos(INVENTORY, iEmptyPos));
            item->RemoveFromCharacter();
            M2_DESTROY_ITEM(item);
            ITEM_MANAGER::instance().FlushDelayedSave(pkNewItem);
            std::string szBuy("SHOP_BUY");
            std::string szSell("SHOP_SELL");
            if (m_pkPC->IsPrivShop())
            {
                std::string temp("OFFLINE_");
                szBuy = temp + szBuy;
                szSell = temp + szSell;
            }
#ifdef FULL_YANG
            snprintf(buf, sizeof(buf), "%s %u(%s) %lld %u", pkNewItem->GetName(), mpid, m_pkPC->GetName(), dwPrice, pkNewItem->GetCount());
            LogManager::instance().ItemLog(ch, pkNewItem, szBuy.c_str(), buf);
            snprintf(buf, sizeof(buf), "%s %u(%s) %lld %u", pkNewItem->GetName(), ch->GetPlayerID(), ch->GetName(), dwPrice, pkNewItem->GetCount());
            LogManager::instance().ItemLog(m_pkPC, pkNewItem, szSell.c_str(), buf);
#else
            snprintf(buf, sizeof(buf), "%s %u(%s) %u %u", pkNewItem->GetName(), mpid, m_pkPC->GetName(), dwPrice, pkNewItem->GetCount());
            LogManager::instance().ItemLog(ch, pkNewItem, szBuy.c_str(), buf);
            snprintf(buf, sizeof(buf), "%s %u(%s) %u %u", pkNewItem->GetName(), ch->GetPlayerID(), ch->GetName(), dwPrice, pkNewItem->GetCount());
            LogManager::instance().ItemLog(m_pkPC, pkNewItem, szSell.c_str(), buf);
#endif



            r_item.pkItem = NULL;
            BroadcastUpdateItem(pos);
            if (m_pkPC->IsPrivShop()) {
                LPCHARACTER owner = CHARACTER_MANAGER::instance().FindByPID(m_pkPC->GetPrivShopOwner());
               

#ifdef FULL_YANG
                    DBManager::instance().DirectQuery("UPDATE player_shop SET gold=gold + %lld WHERE id=%d", dwPrice, m_pkPC->GetPrivShop());
#else
                    DBManager::instance().DirectQuery("INSERT INTO player_gift SET \
                    owner_id=%d,vnum=1,count='%d',reason=\"%s\",`from`=replace(\"%s #%d\",' ','_'),status='WAIT',date_add=NOW()",
                    m_pkPC->GetPrivShopOwner(), dwPrice, LC_TEXT("SHOP_REASON"), m_pkPC->GetName(), m_pkPC->GetPrivShop());

#endif
                   
           
                DBManager::instance().DirectQuery("DELETE FROM player_shop_items WHERE shop_id=%d and id = %d", m_pkPC->GetPrivShop(), r_item.itemid);
                if (owner)
                {
                    owner->LoadPrivShops();
#ifdef FULL_YANG
                    if (owner->GetGiftPages() > 0)
                        owner->ChatPacket(CHAT_TYPE_COMMAND, "gift_info %d", owner->GetGiftPages());
#else
                    owner->RefreshGift();
#endif
                }
            }
            else{
#ifdef FULL_YANG_OWN
                m_pkPC->ChangeGold(dwPrice);
#else
                m_pkPC->PointChange(POINT_GOLD, dwPrice, false);
#endif
                if (iVal > 0)
                {
                    m_pkPC->ChatPacket (CHAT_TYPE_INFO, LC_TEXT ("판매금액의 %d %% 가 세금으로 나가게됩니다"), iVal);
                }

            }
            item = pkNewItem;
        }
        else {
            return SHOP_SUBHEADER_GC_INVALID_POS;
        }


    }
    else
    {
        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));
        ITEM_MANAGER::instance().FlushDelayedSave(item);
        LogManager::instance().ItemLog(ch, item, "BUY", item->GetName());

        if (item->GetVnum() >= 80003 && item->GetVnum() <= 80007)
        {
            LogManager::instance().GoldBarLog(ch->GetPlayerID(), item->GetID(), PERSONAL_SHOP_BUY, "");
        }

        //DBManager::instance().SendMoneyLog(MONEY_LOG_SHOP, item->GetVnum(), -dwPrice);
    }

    if (item)
        sys_log(0, "SHOP: BUY: name %s %s(x %d):%u price %u", ch->GetName(), item->GetName(), item->GetCount(), item->GetID(), dwPrice);
    ch->Save();
#if defined(SHOP_AUTO_CLOSE) && defined(OFFLINE_SHOP)
    if (m_pkPC && m_pkPC->IsPrivShop())
    {
        if (GetItemCount()<=0)
            m_pkPC->DeleteMyShop();
    }
#endif
    return (SHOP_SUBHEADER_GC_OK);
}
Hocam dediğinizi yapınca sürekli error alıyorum alakasız yerlerde veriyor geri çekince errorlar kalkıyor
 
2 - 3 yerde değişiklik var şu defineyi takip ederek kendine göre yap
C++:
#ifdef ENABLE_SPLIT_INVENTORY_SYSTEM
 
Hocam zaten bu konuyu etiketledim ve çözemedim ondan ek bir konu açmak istedim
Konudaki verdiğim dosyayı incelerseniz nereye ne türlü eklendiğini göreceksiniz ve kolay bir şekilde düzenleyebilirsiniz. Yapamazsanız dosyanızı konuya dahil edin müsait bir zamanda yardım ederim.
 
Yaptığın işlemler doğru gözüküyor.
 
Sorunun tam olarak ne olduğunu yazarsan bu konuya bakacak arkadaşlara yardım etmiş olursunuz.
 
Gift uyarlaması yapilinca sorun çözüldü greate uyarlı olmadığı için çoğu offline shopa uyarlı olmadığı için gift uyarlaması sorunu düzeltmiştir
 
Çözüm
Durum
İçerik kilitlendiği için mesaj gönderimine kapatıldı.
Geri
Üst