Çözüldü C++ Chest View Drop - Sandık İçinin Boş Görünmesi

  • Konuyu açan Konuyu açan DELIASIL
  • Açılış Tarihi Açılış Tarihi
  • Yanıt Yanıt 14
  • Gösterim Gösterim 77
Bu konu çözüme ulaştırılmıştır. Çözüm için konuya yazılan tüm yorumları okumayı unutmayın. Eğer konudaki yorumlar sorununuzu çözmediyse yeni bir konu açabilirsiniz.
Durum
İçerik kilitlendiği için mesaj gönderimine kapatıldı.

DELIASIL

Premium Üye
Premium Üye
Üye
Mesaj
170
Çözümler
7
Beğeni
39
Puan
89
Ticaret Puanı
0
1762560200532.webp


K Envarter uyumlulugundan kaynaklı oldugunu düşünüyorum 1,2 yol denedim ama banamısın demedi.
daha öncesinde uyarlamasını yapan arkadaşların yardımını bekliyorum teşekkürler.



input_main.cpp:
Genişlet Daralt Kopyala
#ifdef ENABLE_SHOW_CHEST_DROP
void CInputMain::ChestDropInfo(LPCHARACTER ch, const char* c_pData)
{
    TPacketCGChestDropInfo* p = (TPacketCGChestDropInfo*) c_pData;

    if(p->wInventoryCell >= INVENTORY_MAX_NUM)
        return;
    
    LPITEM pkItem = ch->GetInventoryItem(p->wInventoryCell);

    if (!pkItem)
        return;
    
    std::vector<TChestDropInfoTable> vec_ItemList;
    ITEM_MANAGER::instance().GetChestItemList(pkItem->GetVnum(), vec_ItemList);

    TPacketGCChestDropInfo packet;
    packet.bHeader = HEADER_GC_CHEST_DROP_INFO;
    packet.wSize = sizeof(packet) + sizeof(TChestDropInfoTable) * vec_ItemList.size();
    packet.dwChestVnum = pkItem->GetVnum();

    ch->GetDesc()->BufferedPacket(&packet, sizeof(packet));
    ch->GetDesc()->Packet(&vec_ItemList[0], sizeof(TChestDropInfoTable) * vec_ItemList.size());
}
#endif
 
Çözüm
anydesk atsana sinir oldum :D
Kod:
Genişlet Daralt Kopyala
#ifdef ENABLE_SHOW_CHEST_DROP
void CInputMain::ChestDropInfo(LPCHARACTER ch, const char* c_pData)
{
    TPacketCGChestDropInfo* p = (TPacketCGChestDropInfo*) c_pData;

    if(p->wInventoryCell >= INVENTORY_AND_EQUIP_SLOT_MAX)
        return;
  
    LPITEM pkItem = ch->GetBoxInventoryItem(p->wInventoryCell);

    if (!pkItem)
        return;
  
    std::vector<TChestDropInfoTable> vec_ItemList;
    ITEM_MANAGER::instance().GetChestItemList(pkItem->GetVnum(), vec_ItemList);

sadece GetBoxInventoryItem yazmak yeterliymiş hocam düzeldi :D
yeni:
Genişlet Daralt Kopyala
#ifdef ENABLE_SHOW_CHEST_DROP
void CInputMain::ChestDropInfo(LPCHARACTER ch, const char* c_pData)
{
    TPacketCGChestDropInfo* p = (TPacketCGChestDropInfo*) c_pData;

    if(p->wInventoryCell >= INVENTORY_MAX_NUM)
        return;
    
    LPITEM pkItem = ch->GetInventoryItem(p->wInventoryCell);

    if (!pkItem)
        return;
    
    std::vector<TChestDropInfoTable> vec_ItemList;
    ITEM_MANAGER::instance().GetChestItemList(pkItem->GetVnum(), vec_ItemList);

    TPacketGCChestDropInfo packet;
    packet.bHeader = HEADER_GC_CHEST_DROP_INFO;
    packet.wSize = sizeof(packet) + sizeof(TChestDropInfoTable) * vec_ItemList.size();
    packet.dwChestVnum = pkItem->GetVnum();

    ch->GetDesc()->BufferedPacket(&packet, sizeof(packet));
    if (!vec_ItemList.empty()) ch->GetDesc()->Packet(&vec_ItemList[0], sizeof(TChestDropInfoTable) * vec_ItemList.size());
}
#endif
Şu Kod Blogunu Degıstırıp Denermısın
 
yeni:
Genişlet Daralt Kopyala
#ifdef ENABLE_SHOW_CHEST_DROP
void CInputMain::ChestDropInfo(LPCHARACTER ch, const char* c_pData)
{
    TPacketCGChestDropInfo* p = (TPacketCGChestDropInfo*) c_pData;

    if(p->wInventoryCell >= INVENTORY_MAX_NUM)
        return;
   
    LPITEM pkItem = ch->GetInventoryItem(p->wInventoryCell);

    if (!pkItem)
        return;
   
    std::vector<TChestDropInfoTable> vec_ItemList;
    ITEM_MANAGER::instance().GetChestItemList(pkItem->GetVnum(), vec_ItemList);

    TPacketGCChestDropInfo packet;
    packet.bHeader = HEADER_GC_CHEST_DROP_INFO;
    packet.wSize = sizeof(packet) + sizeof(TChestDropInfoTable) * vec_ItemList.size();
    packet.dwChestVnum = pkItem->GetVnum();

    ch->GetDesc()->BufferedPacket(&packet, sizeof(packet));
    if (!vec_ItemList.empty()) ch->GetDesc()->Packet(&vec_ItemList[0], sizeof(TChestDropInfoTable) * vec_ItemList.size());
}
#endif
Şu Kod Blogunu Degıstırıp Denermısın
Denedim şimdi düzelmedi aynı göstermiyor
 
Kod:
Genişlet Daralt Kopyala
#ifdef ENABLE_SHOW_CHEST_DROP
void CInputMain::ChestDropInfo(LPCHARACTER ch, const char* c_pData)
{
    TPacketCGChestDropInfo* p = (TPacketCGChestDropInfo*)c_pData;
    if (!ch)
        return;
    if (p->wInventoryCell >= SPECIAL_INVENTORY_MAX_NUM)
        return;
    LPITEM pkItem = ch->GetChestInventoryItem(p->wInventoryCell);
    if (!pkItem)
        return;
    std::vector<TChestDropInfoTable> vec_ItemList;
    ITEM_MANAGER::instance().GetChestItemList(pkItem->GetVnum(), vec_ItemList);
    if (vec_ItemList.size() == 0)
        return;
    TPacketGCChestDropInfo packet;
    packet.bHeader = HEADER_GC_CHEST_DROP_INFO;
    packet.wSize = sizeof(packet) + sizeof(TChestDropInfoTable) * vec_ItemList.size();
    packet.dwChestVnum = pkItem->GetVnum();
    ch->GetDesc()->BufferedPacket(&packet, sizeof(packet));
    ch->GetDesc()->Packet(&vec_ItemList[0], sizeof(TChestDropInfoTable) * vec_ItemList.size());
}
#endif
 
Kod:
Genişlet Daralt Kopyala
#ifdef ENABLE_SHOW_CHEST_DROP
void CInputMain::ChestDropInfo(LPCHARACTER ch, const char* c_pData)
{
    TPacketCGChestDropInfo* p = (TPacketCGChestDropInfo*)c_pData;
    if (!ch)
        return;
    if (p->wInventoryCell >= SPECIAL_INVENTORY_MAX_NUM)
        return;
    LPITEM pkItem = ch->GetChestInventoryItem(p->wInventoryCell);
    if (!pkItem)
        return;
    std::vector<TChestDropInfoTable> vec_ItemList;
    ITEM_MANAGER::instance().GetChestItemList(pkItem->GetVnum(), vec_ItemList);
    if (vec_ItemList.size() == 0)
        return;
    TPacketGCChestDropInfo packet;
    packet.bHeader = HEADER_GC_CHEST_DROP_INFO;
    packet.wSize = sizeof(packet) + sizeof(TChestDropInfoTable) * vec_ItemList.size();
    packet.dwChestVnum = pkItem->GetVnum();
    ch->GetDesc()->BufferedPacket(&packet, sizeof(packet));
    ch->GetDesc()->Packet(&vec_ItemList[0], sizeof(TChestDropInfoTable) * vec_ItemList.size());
}
#endif
Bendeki k envanter bu değil ama
 
Bendeki k envanter bu değil ama
Kod:
Genişlet Daralt Kopyala
#ifdef ENABLE_SPLIT_INVENTORY_SYSTEM
LPITEM CHARACTER::GetSkillBookInventoryItem(WORD wCell) const
{
    return GetItem(TItemPos(INVENTORY, wCell));
}
LPITEM CHARACTER::GetUpgradeItemsInventoryItem(WORD wCell) const
{
    return GetItem(TItemPos(INVENTORY, wCell));
}
LPITEM CHARACTER::GetStoneInventoryItem(WORD wCell) const
{
    return GetItem(TItemPos(INVENTORY, wCell));
}
LPITEM CHARACTER::GetBoxInventoryItem(WORD wCell) const
{
    return GetItem(TItemPos(INVENTORY, wCell));
}
LPITEM CHARACTER::GetEfsunInventoryItem(WORD wCell) const
{
    return GetItem(TItemPos(INVENTORY, wCell));
}
LPITEM CHARACTER::GetCicekInventoryItem(WORD wCell) const
{
    return GetItem(TItemPos(INVENTORY, wCell));
}
#endif
 
Kod:
Genişlet Daralt Kopyala
#ifdef ENABLE_SHOW_CHEST_DROP
void CInputMain::ChestDropInfo(LPCHARACTER ch, const char* c_pData)
{
    TPacketCGChestDropInfo* p = (TPacketCGChestDropInfo*)c_pData;

    if (!ch)
        return;


    const TItemTable* itemTable = ITEM_MANAGER::instance().GetTable(p->dwChestVnum);

    if (itemTable)
    {
        if (itemTable->bType != ITEM_GIFTBOX /*&& itemTable->bType != ITEM_GACHA*/)
            return;
    }


    std::vector<TChestDropInfoTable> vec_ItemList;
    ITEM_MANAGER::instance().GetChestItemList(p->dwChestVnum, vec_ItemList);

    if (vec_ItemList.size() == 0)
        return;

    TPacketGCChestDropInfo packet;
    packet.bHeader = HEADER_GC_CHEST_DROP_INFO;
    packet.wSize = sizeof(packet) + sizeof(TChestDropInfoTable) * vec_ItemList.size();
    packet.dwChestVnum = p->dwChestVnum;
    packet.pos = p->pos;
    ch->GetDesc()->BufferedPacket(&packet, sizeof(packet));
    ch->GetDesc()->Packet(&vec_ItemList[0], sizeof(TChestDropInfoTable) * vec_ItemList.size());
}
#endif
 
Kod:
Genişlet Daralt Kopyala
#ifdef ENABLE_SHOW_CHEST_DROP
void CInputMain::ChestDropInfo(LPCHARACTER ch, const char* c_pData)
{
    TPacketCGChestDropInfo* p = (TPacketCGChestDropInfo*)c_pData;

    if (!ch)
        return;


    const TItemTable* itemTable = ITEM_MANAGER::instance().GetTable(p->dwChestVnum);

    if (itemTable)
    {
        if (itemTable->bType != ITEM_GIFTBOX /*&& itemTable->bType != ITEM_GACHA*/)
            return;
    }


    std::vector<TChestDropInfoTable> vec_ItemList;
    ITEM_MANAGER::instance().GetChestItemList(p->dwChestVnum, vec_ItemList);

    if (vec_ItemList.size() == 0)
        return;

    TPacketGCChestDropInfo packet;
    packet.bHeader = HEADER_GC_CHEST_DROP_INFO;
    packet.wSize = sizeof(packet) + sizeof(TChestDropInfoTable) * vec_ItemList.size();
    packet.dwChestVnum = p->dwChestVnum;
    packet.pos = p->pos;
    ch->GetDesc()->BufferedPacket(&packet, sizeof(packet));
    ch->GetDesc()->Packet(&vec_ItemList[0], sizeof(TChestDropInfoTable) * vec_ItemList.size());
}
#endif
C++:
Genişlet Daralt Kopyala
input_main.cpp: In member function 'void CInputMain::ChestDropInfo(LPCHARACTER, const char*)':
input_main.cpp:3081:69: error: 'TPacketCGChestDropInfo' {aka 'struct SPacketCGChestDropInfo'} has no member named 'dwChestVnum'
 3081 |  const TItemTable* itemTable = ITEM_MANAGER::instance().GetTable(p->dwChestVnum);
      |                                                                     ^~~~~~~~~~~
input_main.cpp:3091:47: error: 'TPacketCGChestDropInfo' {aka 'struct SPacketCGChestDropInfo'} has no member named 'dwChestVnum'
 3091 |  ITEM_MANAGER::instance().GetChestItemList(p->dwChestVnum, vec_ItemList);
      |                                               ^~~~~~~~~~~
input_main.cpp:3099:26: error: 'TPacketCGChestDropInfo' {aka 'struct SPacketCGChestDropInfo'} has no member named 'dwChestVnum'
 3099 |  packet.dwChestVnum = p->dwChestVnum;
      |                          ^~~~~~~~~~~
input_main.cpp:3100:9: error: 'TPacketGCChestDropInfo' {aka 'struct SPacketGCChestDropInfo'} has no member named 'pos'
 3100 |  packet.pos = p->pos;
      |         ^~~
input_main.cpp:3100:18: error: 'TPacketCGChestDropInfo' {aka 'struct SPacketCGChestDropInfo'} has no member named 'pos'
 3100 |  packet.pos = p->pos;
      |                  ^~~
 
Normalde benim sisteme göre böyle gelmesi gerekiyor

Kod:
Genişlet Daralt Kopyala
#ifdef ENABLE_SHOW_CHEST_DROP
void CInputMain::ChestDropInfo(LPCHARACTER ch, const char* c_pData)
{
    TPacketCGChestDropInfo* p = (TPacketCGChestDropInfo*)c_pData;
    if (!ch)
        return;
    if (p->wInventoryCell >= BOX_INVENTORY_MAX_NUM)
        return;
    LPITEM pkItem = ch->GetBoxInventoryItem(p->wInventoryCell);
    if (!pkItem)
        return;
    std::vector<TChestDropInfoTable> vec_ItemList;
    ITEM_MANAGER::instance().GetChestItemList(pkItem->GetVnum(), vec_ItemList);
    if (vec_ItemList.size() == 0)
        return;
    TPacketGCChestDropInfo packet;
    packet.bHeader = HEADER_GC_CHEST_DROP_INFO;
    packet.wSize = sizeof(packet) + sizeof(TChestDropInfoTable) * vec_ItemList.size();
    packet.dwChestVnum = pkItem->GetVnum();
    ch->GetDesc()->BufferedPacket(&packet, sizeof(packet));
    ch->GetDesc()->Packet(&vec_ItemList[0], sizeof(TChestDropInfoTable) * vec_ItemList.size());
}
#endif
 
Kod:
Genişlet Daralt Kopyala
void CInputMain::ChestDropInfo(LPCHARACTER ch, const char* c_pData)
{
    TPacketCGChestDropInfo* p = (TPacketCGChestDropInfo*) c_pData;

    DWORD ItemVnum = p->ItemVnum;

    if (!ItemVnum)
        return;

    const TItemTable* itemTable = ITEM_MANAGER::instance().GetTable(p->ItemVnum);

    if (itemTable)
    {
        if (itemTable->bType != 23)
            return;
    }

    std::vector<TChestDropInfoTable> vec_ItemList;
    if (ITEM_MANAGER::instance().GetChestItemList(ItemVnum, vec_ItemList) == false)
        return;

    TPacketGCChestDropInfo packet;
    packet.bHeader = HEADER_GC_CHEST_DROP_INFO;
    packet.wSize = sizeof(packet) + sizeof(TChestDropInfoTable) * vec_ItemList.size();
    packet.dwChestVnum = ItemVnum;

    ch->GetDesc()->BufferedPacket(&packet, sizeof(packet));
    ch->GetDesc()->Packet(&vec_ItemList[0], sizeof(TChestDropInfoTable) * vec_ItemList.size());
}
 
Kod:
Genişlet Daralt Kopyala
void CInputMain::ChestDropInfo(LPCHARACTER ch, const char* c_pData)
{
    TPacketCGChestDropInfo* p = (TPacketCGChestDropInfo*) c_pData;

    DWORD ItemVnum = p->ItemVnum;

    if (!ItemVnum)
        return;

    const TItemTable* itemTable = ITEM_MANAGER::instance().GetTable(p->ItemVnum);

    if (itemTable)
    {
        if (itemTable->bType != 23)
            return;
    }

    std::vector<TChestDropInfoTable> vec_ItemList;
    if (ITEM_MANAGER::instance().GetChestItemList(ItemVnum, vec_ItemList) == false)
        return;

    TPacketGCChestDropInfo packet;
    packet.bHeader = HEADER_GC_CHEST_DROP_INFO;
    packet.wSize = sizeof(packet) + sizeof(TChestDropInfoTable) * vec_ItemList.size();
    packet.dwChestVnum = ItemVnum;

    ch->GetDesc()->BufferedPacket(&packet, sizeof(packet));
    ch->GetDesc()->Packet(&vec_ItemList[0], sizeof(TChestDropInfoTable) * vec_ItemList.size());
}
C++:
Genişlet Daralt Kopyala
input_main.cpp:3077:22: error: 'TPacketCGChestDropInfo' {aka 'struct SPacketCGChestDropInfo'} has no member named 'ItemVnum'
 3077 |  DWORD ItemVnum = p->ItemVnum;
      |                      ^~~~~~~~
input_main.cpp:3082:69: error: 'TPacketCGChestDropInfo' {aka 'struct SPacketCGChestDropInfo'} has no member named 'ItemVnum'
 3082 |  const TItemTable* itemTable = ITEM_MANAGER::instance().GetTable(p->ItemVnum);
      |                                                                     ^~~~~~~~
input_main.cpp:3091:72: error: invalid operands of types 'void' and 'int' to binary 'operator=='
 3091 |  if (ITEM_MANAGER::instance().GetChestItemList(ItemVnum, vec_ItemList) == false)
      |      ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ^~
      |                                               |
      |                                               void
buda olmadı hocam
 
anydesk atsana sinir oldum :D
Kod:
Genişlet Daralt Kopyala
#ifdef ENABLE_SHOW_CHEST_DROP
void CInputMain::ChestDropInfo(LPCHARACTER ch, const char* c_pData)
{
    TPacketCGChestDropInfo* p = (TPacketCGChestDropInfo*) c_pData;

    if(p->wInventoryCell >= INVENTORY_AND_EQUIP_SLOT_MAX)
        return;
  
    LPITEM pkItem = ch->GetBoxInventoryItem(p->wInventoryCell);

    if (!pkItem)
        return;
  
    std::vector<TChestDropInfoTable> vec_ItemList;
    ITEM_MANAGER::instance().GetChestItemList(pkItem->GetVnum(), vec_ItemList);

sadece GetBoxInventoryItem yazmak yeterliymiş hocam düzeldi :D
 
Çözüm
Kod:
Genişlet Daralt Kopyala
#ifdef ENABLE_SHOW_CHEST_DROP
void CInputMain::ChestDropInfo(LPCHARACTER ch, const char* c_pData)
{
    TPacketCGChestDropInfo* p = (TPacketCGChestDropInfo*) c_pData;

    if(p->wInventoryCell >= INVENTORY_AND_EQUIP_SLOT_MAX)
        return;
 
    LPITEM pkItem = ch->GetBoxInventoryItem(p->wInventoryCell);

    if (!pkItem)
        return;
 
    std::vector<TChestDropInfoTable> vec_ItemList;
    ITEM_MANAGER::instance().GetChestItemList(pkItem->GetVnum(), vec_ItemList);

sadece GetBoxInventoryItem yazmak yeterliymiş hocam düzeldi :D
tek tık sandık açma yapıyordum hiç dikkat etmedim :D
 
Durum
İçerik kilitlendiği için mesaj gönderimine kapatıldı.
Geri
Üst