Yardım Special Storage Sandık Sayfası Ekleme

Konu sahibi bu konuda soru soruyor. Sorusu ile ilgili bilgisi olanların yanıtlamasını bekliyor.

LethalStrikeR

Yardımsever Üye
Yardımsever Üye
MT Üye
Mesaj
701
Çözümler
41
Beğeni
168
Puan
609
Ticaret Puanı
0
Merhaba aşağıdaki koda chest kısmını da eklemek istiyorum fakat ekleyemedim yardımcı olur musunuz?

C++:
Genişlet Daralt Kopyala
#ifdef ENABLE_SPECIAL_STORAGE
        if (p->bType == ITEM_MATERIAL && p->bSubType == MATERIAL_LEATHER) //upgrade item
        {
            for (int i = 0; i < SPECIAL_INVENTORY_MAX_NUM; ++i)
            {
                LPITEM item = GetUpgradeInventoryItem(i);
                
                if (!item)
                    continue;
                
                if (item->GetVnum() == dwItemVnum && FN_check_item_socket(item))
                {
                    if (IS_SET(p->dwFlags, ITEM_FLAG_MAKECOUNT))
                    {
                        if (bCount < p->alValues[1])
                            bCount = p->alValues[1];
                    }

                    BYTE bCount2 = MIN(ITEM_MAX_COUNT - item->GetCount(), bCount);
                    bCount -= bCount2;

                    item->SetCount(item->GetCount() + bCount2);

                    if (bCount == 0)
                    {
                        if (bMsg)
                            ChatPacket(CHAT_TYPE_INFO, LC_TEXT("ľĆŔĚĹŰ Čąµć: %s"), item->GetName());

                        return item;
                    }
                }
            }
        }
        else if (dwItemVnum == 50300) //book item
        {
        }
        else if (p->bType == ITEM_METIN && p->bSubType == METIN_NORMAL) //stone item
        {
            for (int i = 0; i < SPECIAL_INVENTORY_MAX_NUM; ++i)
            {
                LPITEM item = GetStoneInventoryItem(i);
                
                if (!item)
                    continue;
                
                if (item->GetVnum() == dwItemVnum && FN_check_item_socket(item))
                {
                    if (IS_SET(p->dwFlags, ITEM_FLAG_MAKECOUNT))
                    {
                        if (bCount < p->alValues[1])
                            bCount = p->alValues[1];
                    }

                    BYTE bCount2 = MIN(ITEM_MAX_COUNT - item->GetCount(), bCount);
                    bCount -= bCount2;

                    item->SetCount(item->GetCount() + bCount2);

                    if (bCount == 0)
                    {
                        if (bMsg)
                            ChatPacket(CHAT_TYPE_INFO, LC_TEXT("ľĆŔĚĹŰ Čąµć: %s"), item->GetName());

                        return item;
                    }
                }
            }
        }
        else
        {
#endif
 
Kodda sanki yine eksiklikler var ama buyrun, bookitem fonksiyonunu da düzenledim. ITEM_GACHA'yı kendi sandık type ve subtype'ınıza göre ayarlayın

C:
Genişlet Daralt Kopyala
#ifdef ENABLE_SPECIAL_STORAGE
        if (p->bType == ITEM_MATERIAL && p->bSubType == MATERIAL_LEATHER) //upgrade item
        {
            for (int i = 0; i < SPECIAL_INVENTORY_MAX_NUM; ++i)
            {
                LPITEM item = GetUpgradeInventoryItem(i);
              
                if (!item)
                    continue;
              
                if (item->GetVnum() == dwItemVnum && FN_check_item_socket(item))
                {
                    if (IS_SET(p->dwFlags, ITEM_FLAG_MAKECOUNT))
                    {
                        if (bCount < p->alValues[1])
                            bCount = p->alValues[1];
                    }

                    BYTE bCount2 = MIN(ITEM_MAX_COUNT - item->GetCount(), bCount);
                    bCount -= bCount2;

                    item->SetCount(item->GetCount() + bCount2);

                    if (bCount == 0)
                    {
                        if (bMsg)
                            ChatPacket(CHAT_TYPE_INFO, LC_TEXT("ľĆŔĚĹŰ Čąµć: %s"), item->GetName());

                        return item;
                    }
                }
            }
        }
        else if (dwItemVnum == 50300) //book item
        {
            for (int i = 0; i < SPECIAL_INVENTORY_MAX_NUM; ++i)
            {
                LPITEM item = GetBookInventoryItem(i);
              
                if (!item)
                    continue;
              
                if (item->GetVnum() == dwItemVnum && FN_check_item_socket(item))
                {
                    if (IS_SET(p->dwFlags, ITEM_FLAG_MAKECOUNT))
                    {
                        if (bCount < p->alValues[1])
                            bCount = p->alValues[1];
                    }

                    BYTE bCount2 = MIN(ITEM_MAX_COUNT - item->GetCount(), bCount);
                    bCount -= bCount2;

                    item->SetCount(item->GetCount() + bCount2);

                    if (bCount == 0)
                    {
                        if (bMsg)
                            ChatPacket(CHAT_TYPE_INFO, LC_TEXT("ľĆŔĚĹŰ Čąµć: %s"), item->GetName());

                        return item;
                    }
                }
            }
        }
        else if (p->bType == ITEM_METIN && p->bSubType == METIN_NORMAL) //stone item
        {
            for (int i = 0; i < SPECIAL_INVENTORY_MAX_NUM; ++i)
            {
                LPITEM item = GetStoneInventoryItem(i);
              
                if (!item)
                    continue;
              
                if (item->GetVnum() == dwItemVnum && FN_check_item_socket(item))
                {
                    if (IS_SET(p->dwFlags, ITEM_FLAG_MAKECOUNT))
                    {
                        if (bCount < p->alValues[1])
                            bCount = p->alValues[1];
                    }

                    BYTE bCount2 = MIN(ITEM_MAX_COUNT - item->GetCount(), bCount);
                    bCount -= bCount2;

                    item->SetCount(item->GetCount() + bCount2);

                    if (bCount == 0)
                    {
                        if (bMsg)
                            ChatPacket(CHAT_TYPE_INFO, LC_TEXT("ľĆŔĚĹŰ Čąµć: %s"), item->GetName());

                        return item;
                    }
                }
            }
        }
        else if (p->bType == ITEM_UNIQUE && p->bSubType == ITEM_GACHA) //stone item
        {
            for (int i = 0; i < SPECIAL_INVENTORY_MAX_NUM; ++i)
            {
                LPITEM item = GetChestInventoryItem(i);
              
                if (!item)
                    continue;
              
                if (item->GetVnum() == dwItemVnum && FN_check_item_socket(item))
                {
                    if (IS_SET(p->dwFlags, ITEM_FLAG_MAKECOUNT))
                    {
                        if (bCount < p->alValues[1])
                            bCount = p->alValues[1];
                    }

                    BYTE bCount2 = MIN(ITEM_MAX_COUNT - item->GetCount(), bCount);
                    bCount -= bCount2;

                    item->SetCount(item->GetCount() + bCount2);

                    if (bCount == 0)
                    {
                        if (bMsg)
                            ChatPacket(CHAT_TYPE_INFO, LC_TEXT("ľĆŔĚĹŰ Čąµć: %s"), item->GetName());

                        return item;
                    }
                }
            }
        }
        else
        {
#endif
 
Kodda sanki yine eksiklikler var ama buyrun, bookitem fonksiyonunu da düzenledim. ITEM_GACHA'yı kendi sandık type ve subtype'ınıza göre ayarlayın

C:
Genişlet Daralt Kopyala
#ifdef ENABLE_SPECIAL_STORAGE
        if (p->bType == ITEM_MATERIAL && p->bSubType == MATERIAL_LEATHER) //upgrade item
        {
            for (int i = 0; i < SPECIAL_INVENTORY_MAX_NUM; ++i)
            {
                LPITEM item = GetUpgradeInventoryItem(i);
             
                if (!item)
                    continue;
             
                if (item->GetVnum() == dwItemVnum && FN_check_item_socket(item))
                {
                    if (IS_SET(p->dwFlags, ITEM_FLAG_MAKECOUNT))
                    {
                        if (bCount < p->alValues[1])
                            bCount = p->alValues[1];
                    }

                    BYTE bCount2 = MIN(ITEM_MAX_COUNT - item->GetCount(), bCount);
                    bCount -= bCount2;

                    item->SetCount(item->GetCount() + bCount2);

                    if (bCount == 0)
                    {
                        if (bMsg)
                            ChatPacket(CHAT_TYPE_INFO, LC_TEXT("ľĆŔĚĹŰ Čąµć: %s"), item->GetName());

                        return item;
                    }
                }
            }
        }
        else if (dwItemVnum == 50300) //book item
        {
            for (int i = 0; i < SPECIAL_INVENTORY_MAX_NUM; ++i)
            {
                LPITEM item = GetBookInventoryItem(i);
             
                if (!item)
                    continue;
             
                if (item->GetVnum() == dwItemVnum && FN_check_item_socket(item))
                {
                    if (IS_SET(p->dwFlags, ITEM_FLAG_MAKECOUNT))
                    {
                        if (bCount < p->alValues[1])
                            bCount = p->alValues[1];
                    }

                    BYTE bCount2 = MIN(ITEM_MAX_COUNT - item->GetCount(), bCount);
                    bCount -= bCount2;

                    item->SetCount(item->GetCount() + bCount2);

                    if (bCount == 0)
                    {
                        if (bMsg)
                            ChatPacket(CHAT_TYPE_INFO, LC_TEXT("ľĆŔĚĹŰ Čąµć: %s"), item->GetName());

                        return item;
                    }
                }
            }
        }
        else if (p->bType == ITEM_METIN && p->bSubType == METIN_NORMAL) //stone item
        {
            for (int i = 0; i < SPECIAL_INVENTORY_MAX_NUM; ++i)
            {
                LPITEM item = GetStoneInventoryItem(i);
             
                if (!item)
                    continue;
             
                if (item->GetVnum() == dwItemVnum && FN_check_item_socket(item))
                {
                    if (IS_SET(p->dwFlags, ITEM_FLAG_MAKECOUNT))
                    {
                        if (bCount < p->alValues[1])
                            bCount = p->alValues[1];
                    }

                    BYTE bCount2 = MIN(ITEM_MAX_COUNT - item->GetCount(), bCount);
                    bCount -= bCount2;

                    item->SetCount(item->GetCount() + bCount2);

                    if (bCount == 0)
                    {
                        if (bMsg)
                            ChatPacket(CHAT_TYPE_INFO, LC_TEXT("ľĆŔĚĹŰ Čąµć: %s"), item->GetName());

                        return item;
                    }
                }
            }
        }
        else if (p->bType == ITEM_UNIQUE && p->bSubType == ITEM_GACHA) //stone item
        {
            for (int i = 0; i < SPECIAL_INVENTORY_MAX_NUM; ++i)
            {
                LPITEM item = GetChestInventoryItem(i);
             
                if (!item)
                    continue;
             
                if (item->GetVnum() == dwItemVnum && FN_check_item_socket(item))
                {
                    if (IS_SET(p->dwFlags, ITEM_FLAG_MAKECOUNT))
                    {
                        if (bCount < p->alValues[1])
                            bCount = p->alValues[1];
                    }

                    BYTE bCount2 = MIN(ITEM_MAX_COUNT - item->GetCount(), bCount);
                    bCount -= bCount2;

                    item->SetCount(item->GetCount() + bCount2);

                    if (bCount == 0)
                    {
                        if (bMsg)
                            ChatPacket(CHAT_TYPE_INFO, LC_TEXT("ľĆŔĚĹŰ Čąµć: %s"), item->GetName());

                        return item;
                    }
                }
            }
        }
        else
        {
#endif
Bu ayarlama nasıl olacak ve ne gibi eksiklikler var sizce?
 
C:
Genişlet Daralt Kopyala
else if (p->bType == ITEM_UNIQUE && p->bSubType == ITEM_GACHA) //stone item
        {
            for (int i = 0; i < SPECIAL_INVENTORY_MAX_NUM; ++i)
            {
                LPITEM item = GetChestInventoryItem(i);
              
                if (!item)
                    continue;
              
                if (item->GetVnum() == dwItemVnum && FN_check_item_socket(item))
                {
                    if (IS_SET(p->dwFlags, ITEM_FLAG_MAKECOUNT))
                    {
                        if (bCount < p->alValues[1])
                            bCount = p->alValues[1];
                    }

                    BYTE bCount2 = MIN(ITEM_MAX_COUNT - item->GetCount(), bCount);
                    bCount -= bCount2;

                    item->SetCount(item->GetCount() + bCount2);

                    if (bCount == 0)
                    {
                        if (bMsg)
                            ChatPacket(CHAT_TYPE_INFO, LC_TEXT("ľĆŔĚĹŰ Čąµć: %s"), item->GetName());

                        return item;
                    }
                }
            }
        }

Bu şekilde dediğinizi de anlamadım. Kodlarda bir farklılık yok.
?
 
Üst