Npc'den Alınan İtemler Üst Üste Gelsin

bygececi

Administrator
⚡ Admin
〽️ Metin2 Developer
🌐 Web Developer
22 Temmuz 2024
56
7
8
Kocaeli
gameturk.net.tr
Değerli Forum üyeleri npcden alınan itemlerin üst üste gelmesini sizlere anlatacağım.


game src/shop.cpp

C++:
int CShop::Buy(LPCHARACTER ch, BYTE pos)

içinde bulmamız gereken

C++:
item->AddToCharacter(ch, TItemPos(INVENTORY, iEmptyPos));

satırı vereceğim kod gibi yapmanız gerekiyor.

C++:
    {
            WORD bCount = item->GetCount();

            if (IS_SET(item->GetFlag(), ITEM_FLAG_STACKABLE))
            {
                for (WORD i = 0; i < INVENTORY_MAX_NUM; ++i)
                {
                    LPITEM item2 = ch->GetInventoryItem(i);

                    if (!item2)
                        continue;

                    if (item2->GetVnum() == item->GetVnum())
                    {
                        int j;

                        for (j = 0; j < ITEM_SOCKET_MAX_NUM; ++j)
                            if (item2->GetSocket(j) != item->GetSocket(j))
                                break;

                        if (j != ITEM_SOCKET_MAX_NUM)
                            continue;

                        WORD bCount2 = MIN(ITEM_MAX_COUNT - item2->GetCount(), bCount);
                        bCount -= bCount2;
                        item2->SetCount(item2->GetCount() + bCount2);

                        if (bCount == 0)
                            break;
                    }
                }

                item->SetCount(bCount);
            }

            if (bCount > 0)
                item->AddToCharacter(ch, TItemPos(INVENTORY, iEmptyPos));
            else
                M2_DESTROY_ITEM(item);
        }

verdiğim satırı aradığınızda 2 sonuç çıkar. if'in içindeki pazarlar içindir else'nin içindeki npcler içindir.
k envanter için de ise şu kısımları uyarlamanız gerek;

C++:
INVENTORY_MAX_NUM
ch->GetInventoryItem(i)
(ch, TItemPos(INVENTORY, iEmptyPos)
 
  • Like
Tepkiler: Amon-Ra