Yardım K ENVANTER, İTEM DİREK ENVANTERE GİDİYOR

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

hanbaba04

Üye
Üye
Mesaj
14
Çözümler
1
Beğeni
1
Puan
418
Ticaret Puanı
0
İyi günler, K envanter sistemini ekledim fakat itemler K envanteri yerine normal envantere gidiyor. Syser yok, hatayı da bulamıyorum. Yardımcı olursanız sevinirim.
 
En son bir moderatör tarafından düzenlenmiş:
Eğer yerden aldığın ya da kod eli item verdiğin karaktere item envantere gidiyorsa Char_item.cpp de eksik ekleme yapmışsın ondan kaynaklı.
 
Burada neden farklı bir ifdef ile ekledin birde verdiğim dosyayı dene olmazsa bu altta verdiğim bloktaki ifdefin adını düzeltip tekrar dene. Yine olmazsa sorun farklı bir yerden olması gerekiyor çünkü benim dosyalarımla karşılaştırdım aynısı fark yok. Sadece bir yerde eksik vardı onuda tamamladım.

C++:
bool CHARACTER::UnequipItem(LPITEM item)
{
#ifdef ENABLE_WEAPON_COSTUME_SYSTEM
    int iWearCell = item->FindEquipCell(this);
    if (iWearCell == WEAR_WEAPON)
    {
        LPITEM costumeWeapon = GetWear(WEAR_COSTUME_WEAPON);
        if (costumeWeapon && !UnequipItem(costumeWeapon))
        {
            ChatPacket(CHAT_TYPE_INFO, LC_TEXT("You cannot unequip the costume weapon. Not enough space."));
            return false;
        }
    }
#endif

    if (false == CanUnequipNow(item))
        return false;

    int pos;
    if (item->IsDragonSoul())
        pos = GetEmptyDragonSoulInventory(item);
#ifdef ENABLE_SPLIT_INVENTORY_SYSTEM
    else if (item->IsSkillBook())
        pos = GetEmptySkillBookInventory(item->GetSize());
    else if (item->IsUpgradeItem())
        pos = GetEmptyUpgradeItemsInventory(item->GetSize());
    else if (item->IsStone())
        pos = GetEmptyStoneInventory(item->GetSize());
    else if (item->IsBox())
        pos = GetEmptyBoxInventory(item->GetSize());
    else if (item->IsEfsun())
        pos = GetEmptyEfsunInventory(item->GetSize());
    else if (item->IsCicek())
        pos = GetEmptyCicekInventory(item->GetSize());
#endif
    else
        pos = GetEmptyInventory(item->GetSize());

    // HARD CODING
    if (item->GetVnum() == UNIQUE_ITEM_HIDE_ALIGNMENT_TITLE)
        ShowAlignment(true);

    item->RemoveFromCharacter();
    if (item->IsDragonSoul())
    {
        item->AddToCharacter(this, TItemPos(DRAGON_SOUL_INVENTORY, pos));
    }
#ifdef ENABLE_SPLIT_INVENTORY_SYSTEM
    else if (item->IsSkillBook())
        item->AddToCharacter(this, TItemPos(SKILL_BOOK_INVENTORY, pos));
    else if (item->IsUpgradeItem())
        item->AddToCharacter(this, TItemPos(UPGRADE_ITEMS_INVENTORY, pos));
    else if (item->IsStone())
        item->AddToCharacter(this, TItemPos(STONE_INVENTORY, pos));
#ifdef ENABLE_SPLIT_INVENTORY_SYSTEM_BEC
    else if (item->IsBox())
        item->AddToCharacter(this, TItemPos(BOX_INVENTORY, pos));
    else if (item->IsEfsun())
        item->AddToCharacter(this, TItemPos(EFSUN_INVENTORY, pos));
    else if (item->IsCicek())
        item->AddToCharacter(this, TItemPos(CICEK_INVENTORY, pos));
#endif
#endif
    else
        item->AddToCharacter(this, TItemPos(INVENTORY, pos));

    CheckMaximumPoints();

    return true;
}
 

Dosya Eklentileri

  • char_item.zip
    42,7 KB · Gösterim: 2
hocam sistemde farklı olarak ifdef verlimiş bende öyle ekledim ellemedim sizin verdiğiniz dosyayı denedim gene olmadı şimdi ifdefi düzeltip tekrar deneyeceğim
 
bir bölümünü atayım eklenecek olanın hocam;

C++:
    // HARD CODING
    if (item->GetVnum() == UNIQUE_ITEM_HIDE_ALIGNMENT_TITLE)
        ShowAlignment(true);

    if (item->IsDragonSoul())
        item->AddToCharacter(this, TItemPos(DRAGON_SOUL_INVENTORY, pos));

// Ekle - [URL='https://prnt.sc/qaqk97']Screenshot[/URL]
#ifdef ENABLE_SPLIT_INVENTORY_SYSTEM
    else if (item->IsSkillBook())
        item->AddToCharacter(this, TItemPos(SKILL_BOOK_INVENTORY, pos));
    else if (item->IsUpgradeItem())
        item->AddToCharacter(this, TItemPos(UPGRADE_ITEMS_INVENTORY, pos));
    else if (item->IsStone())
        item->AddToCharacter(this, TItemPos(STONE_INVENTORY, pos));
#ifdef ENABLE_SPLIT_INVENTORY_SYSTEM_BEC
    else if (item->IsBox())
        item->AddToCharacter(this, TItemPos(BOX_INVENTORY, pos));
    else if (item->IsEfsun())
        item->AddToCharacter(this, TItemPos(EFSUN_INVENTORY, pos));
    else if (item->IsCicek())
        item->AddToCharacter(this, TItemPos(CICEK_INVENTORY, pos));
#endif
#endif

// Arat LPITEM CHARACTER::FindSpecifyItem(DWORD vnum) const İçinde
    for (int i = 0; i < INVENTORY_MAX_NUM; ++i)

// Değiştir
#ifdef ENABLE_SPLIT_INVENTORY_SYSTEM
    for (int i = 0; i < INVENTORY_AND_EQUIP_SLOT_MAX; ++i)
#else
    for (int i = 0; i < INVENTORY_MAX_NUM; ++i)
#endif

// Arat LPITEM CHARACTER::FindItemByID(DWORD id) const İçinde
    for (int i = 0; i < INVENTORY_MAX_NUM; ++i)

// Değiştir
#ifdef ENABLE_SPLIT_INVENTORY_SYSTEM
    for (int i = 0; i < INVENTORY_AND_EQUIP_SLOT_MAX; ++i)
#else
    for (int i = 0; i < INVENTORY_MAX_NUM; ++i)
#endif

// Arat
int CHARACTER::CountSpecifyItem(DWORD vnum) const
ne yaptıysam olmadı :(
 
En son bir moderatör tarafından düzenlenmiş:
bir bölümünü atayım eklenecek olanın hocam;
// HARD CODING
if (item->GetVnum() == UNIQUE_ITEM_HIDE_ALIGNMENT_TITLE)
ShowAlignment(true);

if (item->IsDragonSoul())
item->AddToCharacter(this, TItemPos(DRAGON_SOUL_INVENTORY, pos));

// Ekle -
Linkleri görebilmek için giriş yap veya kayıt ol.

#ifdef ENABLE_SPLIT_INVENTORY_SYSTEM
else if (item->IsSkillBook())
item->AddToCharacter(this, TItemPos(SKILL_BOOK_INVENTORY, pos));
else if (item->IsUpgradeItem())
item->AddToCharacter(this, TItemPos(UPGRADE_ITEMS_INVENTORY, pos));
else if (item->IsStone())
item->AddToCharacter(this, TItemPos(STONE_INVENTORY, pos));
#ifdef ENABLE_SPLIT_INVENTORY_SYSTEM_BEC
else if (item->IsBox())
item->AddToCharacter(this, TItemPos(BOX_INVENTORY, pos));
else if (item->IsEfsun())
item->AddToCharacter(this, TItemPos(EFSUN_INVENTORY, pos));
else if (item->IsCicek())
item->AddToCharacter(this, TItemPos(CICEK_INVENTORY, pos));
#endif
#endif

// Arat LPITEM CHARACTER::FindSpecifyItem(DWORD vnum) const İçinde
for (int i = 0; i < INVENTORY_MAX_NUM; ++i)

// Değiştir
#ifdef ENABLE_SPLIT_INVENTORY_SYSTEM
for (int i = 0; i < INVENTORY_AND_EQUIP_SLOT_MAX; ++i)
#else
for (int i = 0; i < INVENTORY_MAX_NUM; ++i)
#endif

// Arat LPITEM CHARACTER::FindItemByID(DWORD id) const İçinde
for (int i = 0; i < INVENTORY_MAX_NUM; ++i)

// Değiştir
#ifdef ENABLE_SPLIT_INVENTORY_SYSTEM
for (int i = 0; i < INVENTORY_AND_EQUIP_SLOT_MAX; ++i)
#else
for (int i = 0; i < INVENTORY_MAX_NUM; ++i)
#endif

// Arat
int CHARACTER::CountSpecifyItem(DWORD vnum) const

ne yaptıysam olmadı :(

Benim dosya ile karşılaştırarak yap.
 

Dosya Eklentileri

  • char_item.7z
    31,5 KB · Gösterim: 1
hocam birşey farkettim /i xxx şeklinde item gönderdiğim an envantere geliyor ama metin veyahut bossdan düşünce k envantere geliyor sorun kalmadı tahminimce
 
hocam birşey farkettim /i xxx şeklinde item gönderdiğim an envantere geliyor ama metin veyahut bossdan düşünce k envantere geliyor sorun kalmadı tahminimce
Sana başta bunu sormuştum ama cevap gelmemişti. :) Sorun cmd. dosyalarında eksiklik var demek. cmd_gm.cpp dosyasını tekrardan kontrol et eksik ya da yanlış yere ekleme yapmışsın. do_item bloğuna ekleyeceksin iki adet sonuç çıkıyor anlatımda arat dediği kısımda do_item bloğuna ekleyeceksin.
 
hocam sorun çözülmüştür ilginiz için teşekkür ederim bi kaç şey kaldı mesela mavi kristal 10 adet var onu ayırdım 6 adet ve 4 adete 4 adeti 6 adete sürüklediğimde birleşmiyor ama tam tersini yaptıgımda birleşiyor
 
çok teşekkür ederim hocam bunlar halloldu fixleri kaldı birdde item yere silinmiyor filese sadece sil seçeneği ekledim k env den yere item sil yapıyorm silmiyor onun çözümünü biliyormusunuz
 
çok teşekkür ederim hocam bunlar halloldu fixleri kaldı birdde item yere silinmiyor filese sadece sil seçeneği ekledim k env den yere item sil yapıyorm silmiyor onun çözümünü biliyormusunuz
Onun için uyarlama yapman gerekiyor. Bilgim yok yaptığın sisteme bağlı.
 
Geri
Üst