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

  • Konuyu açan Konuyu açan therasmus
  • Açılış Tarihi Açılış Tarihi
  • Yanıt Yanıt 3
  • Gösterim Gösterim 2K

therasmus

Üye
Üye
Mesaj
121
Çözümler
10
Beğeni
71
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++:
Genişlet Daralt Kopyala
int CShop::Buy(LPCHARACTER ch, BYTE pos)
içinde

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

satırı bu şekilde değiştir.
C++:
Genişlet Daralt Kopyala
        {
            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
 
Sistemi ekleyebilen var mı ben ekledim çalışmadı hatada verimiyor ama işlem de yapmıyor
 
Uyarı: Bu konu açıldığından bu yana baya zaman geçmiş.
Muhtemelen daha fazla tartışma gerekli değildir ki bu durumda yeni bir konu başlatmayı öneririz. Eğer yine de cevabınızın gerekli olduğunu düşünüyorsanız buna rağmen cevap verebilirsiniz.
Geri
Üst