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

  • Konuyu açan Konuyu açan al1h4nkvlc2
  • Açılış Tarihi Açılış Tarihi
  • Yanıt Yanıt 4
  • Gösterim Gösterim 881
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

Üye
Üye
Mesaj
252
Çözümler
9
Beğeni
38
Puan
454
Ticaret Puanı
0
Uiinventory.py klasöründe K envanteri sistemi olduğu için
C++:
Genişlet Daralt Kopyala
        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:
Genişlet Daralt Kopyala
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:
Genişlet Daralt Kopyala
            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:
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->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...
bence tab hatası var orda şuan mobilden pek anlayamadım ama tahminim o
 
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_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 ....
 
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_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ı.
Geri
Üst