Çözüldü K Envanterinde Sandık İç Görü Sistemini Uyarlama

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ı.

al1h4nkvlc2

Aktif Üye
Mesaj
162
Beğeni
24
Puan
449
Uiinventory.py klasöründe K envanteri sistemi olduğu için
C++:
        def __UseItem(self, slotIndex):
            ItemVNum = player.GetItemIndex(slotIndex)
            item.SelectItem(ItemVNum)

            if item.IsFlag(item.ITEM_FLAG_CONFIRM_WHEN_USE):
                self.questionDialog = uiCommon.QuestionDialog()
                self.questionDialog.SetText(localeInfo.INVENTORY_REALLY_USE_ITEM)
                self.questionDialog.SetAcceptEvent(ui.__mem_func__(self.__UseItemQuestionDialog_OnAccept))
                self.questionDialog.SetCancelEvent(ui.__mem_func__(self.__UseItemQuestionDialog_OnCancel))
                self.questionDialog.Open()
                self.questionDialog.slotIndex = slotIndex
                constInfo.SET_ITEM_QUESTION_DIALOG_STATUS(1)

BU KODDAN 2 ADET MEVCUT 1. Sİ K ENVANTERDEKİ SANDIK BOLUMU 2. NORMAL ENVANTER BÖLÜMÜ SANDIKLAR SADECE K ENVANTERİNDE TOPLANDIGI İCİN ENVANTERE SÜRÜKLE BIRAK YONTEMİYLEDE ALINMIYOR O YUZDEN K ENVANTERININ SANDIK BOLUMUNDE KODU CALISTIRAMIYORUM SYSERR VERİYOR

Sysser:
networkModule.SetSelectCharacterPhase - <type 'exceptions.SyntaxError'>:invalid syntax (uiInventory.py, line 2038)

1013 18:21:02673 :: ============================================================================================================
1013 18:21:02673 :: Abort!!!!

SYSSER VERDİĞİ YER Uiiinventory.py:
            elif app.IsPressed(app.DIK_LALT):
                if item.GetItemType() == item.ITEM_TYPE_GIFTBOX or item.GetItemType() == item.ITEM_TYPE_GACHA:
                    if app.ENABLE_SHOW_CHEST_DROP_SYSTEM:
                        if self.interface:
                            if self.interface.dlgChestDrop:
                                if not self.interface.dlgChestDrop.IsShow():
                                    self.interface.dlgChestDrop.Open(slotIndex)
                                    net.SendChestDropInfo(ItemVNum)
        else:
            self.__SendUseItemPacket(slotIndex)

KODLARİ 2. YERE YANİ ENVANTER BOLUMUNE EKLEDİGİM ZAMAN Bİ HATA VERMİYOR OYUN ACİLİYOR GALİBA SANDİKLAR HİC Bİ SEKİLDE NORMAL ENVANTERE GELMEDİGİ İÇİN SİSTEM CALİSMİYOR(SANDIK İÇERİĞİ BOŞ OLARAK GÖZÜKÜYOR ) BUNU SANDIK ENVANTERİ KISMINDA ÇALIŞTIRMAM LAZIM NASIL UYARLAYABİLİRİM ?
https://www.hizliresim.com/e59j226
https://dosya.co/q0159z8hzt0w/uiinventory.py.html
 
Çözüm
input_main.cpp:
#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->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...

al1h4nkvlc2

Aktif Üye
Mesaj
162
Beğeni
24
Puan
449
input_main.cpp:
#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->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

Galiba çözdüm gibi birşey Dikkat ederseniz yukarıda INVENTORY_AND_EQUIP_SLOT_MAX yazıyor .. bizim envanterimizle işimiz yok kutular k envanterinde sandık kategorisine geleceği için o kısmı BOX_INVENTORY_MAX_NUM yaptım daha sonra altta LPITEM pkItem = ch->GetInventoryItem(p->wInventoryCell); kısmını LPITEM pkItem = ch->GetBoxInventoryItem(p->wInventoryCell); olarak değiştirdim umarım olur sorun çözülürse çözüldü olarak işaretlicem ....
 

al1h4nkvlc2

Aktif Üye
Mesaj
162
Beğeni
24
Puan
449
input_main.cpp:
#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->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

Galiba çözdüm gibi birşey Dikkat ederseniz yukarıda INVENTORY_AND_EQUIP_SLOT_MAX yazıyor .. bizim envanterimizle işimiz yok kutular k envanterinde sandık kategorisine geleceği için o kısmı BOX_INVENTORY_MAX_NUM yaptım daha sonra altta LPITEM pkItem = ch->GetInventoryItem(p->wInventoryCell); kısmını LPITEM pkItem = ch->GetBoxInventoryItem(p->wInventoryCell); olarak değiştirdim umarım olur sorun çözülürse çözüldü olarak işaretlicem ....
Konu Tarfımca çözülmüştür GetInventoryItem kısmını GetBoxInventoryItem yapmanız yeterli diğer yer INVENTORY_AND_EQUIP_SLOT_MAX kalsın
 
Çözüm
Durum
İçerik kilitlendiği için mesaj gönderimine kapatıldı.

Üst