[C++] Npc'den Alınan İtemler Üst Üste Gelsin

therasmus

Üye
Üye
Mesaj
119
Çözümler
10
Beğeni
67
Puan
729
Ticaret Puanı
0
Merhaba,
Npcden tekli item aldığınızda envantere tek tek gelir. Bu şekilde o itemden varsa üst üste gelecektir.

game src/shop.cpp

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

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

satırı bu şekilde değiştir.
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 aynı şeyleri uyarlayabilirsiniz. iyi kullanımlar.
 
Paylaşım için teşekkürler
 
Geri
Üst