Yardım Sat Sil Sorun

  • Konuyu açan Konuyu açan MCB
  • Açılış Tarihi Açılış Tarihi
  • Yanıt Yanıt 21
  • Gösterim Gösterim 409
Konu sahibi bu konuda soru soruyor. Sorusu ile ilgili bilgisi olanların yanıtlamasını bekliyor.

MCB

CGames
Premium Üye
Yardımsever Üye
Usta Üye
Mesaj
507
Çözümler
34
Beğeni
361
Puan
930
Ticaret Puanı
1
Aktif her altyapıda kullandığım sat sil sistemimi kurdum fakat bu fileste normal markette item sataren böyle oluyor sebebi nedir ?
hiçbir tarafta syserr yok olsa konu açmazdım syserr gibi isteklerde bulunmayın :d

Linkleri görebilmek için giriş yap veya kayıt ol.
 
Şöyle bir dener misin :
ara:
input_main.cpp - ara:
Genişlet Daralt Kopyala
       case SHOP_SUBHEADER_CG_SELL2:

değiştir :
input_main.cpp - değiştir:
Genişlet Daralt Kopyala
                if (uiBytes < sizeof(BYTE) + sizeof(BYTE))
                    return -1;

                BYTE pos = *(c_pData++);
                BYTE count = *(c_pData);

                sys_log(0, "INPUT: %s SHOP: SELL2", ch->GetName());
                CShopManager::instance().Sell(ch, pos, count);
                return sizeof(BYTE) + sizeof(BYTE);
 
Bu satır yüzünden bazı şeyler çakışıyor burayı ilk haline alınca normal marketten satış yapıyor k envanterindeyken coreye düşüyor. bu haliyle ikiside koreye düşüyor. GetInventoryItemin çektiği fonksyionu da bir altında paylaştım sorunun kaynağını buldum fakat çözüme ulaşamadım.
shop_manager.cpp:
Genişlet Daralt Kopyala
#ifdef ENABLE_SPECIAL_STORAGE
    LPITEM item = ch->GetItem(TItemPos(bType, bCell));
#else
    LPITEM item = ch->GetInventoryItem(bCell);
#endif

char_item.cpp:
Genişlet Daralt Kopyala
LPITEM CHARACTER::GetItem(TItemPos Cell) const
{
    if (!m_PlayerSlots)
        return nullptr;

    if (!IsValidItemPosition(Cell))
        return NULL;

    WORD wCell = Cell.cell;
    BYTE window_type = Cell.window_type;
    switch (window_type)
    {
    case INVENTORY:
    case EQUIPMENT:
        if (wCell >= INVENTORY_AND_EQUIP_SLOT_MAX)
        {
            sys_err("CHARACTER::GetInventoryItem: invalid item cell %d", wCell);
            return NULL;
        }
        return m_PlayerSlots->pItems[wCell];
    case DRAGON_SOUL_INVENTORY:
        if (wCell >= DRAGON_SOUL_INVENTORY_MAX_NUM)
        {
            sys_err("CHARACTER::GetInventoryItem: invalid DS item cell %d", wCell);
            return NULL;
        }
        return m_PlayerSlots->pDSItems[wCell];
#ifdef ENABLE_SPECIAL_STORAGE
    case UPGRADE_INVENTORY:
        if (wCell >= SPECIAL_INVENTORY_MAX_NUM)
        {
            sys_err("CHARACTER::GetInventoryItem: invalid SSU item cell %d", wCell);
            return nullptr;
        }
        return m_PlayerSlots->pSSUItems[wCell];
    case BOOK_INVENTORY:
        if (wCell >= SPECIAL_INVENTORY_MAX_NUM)
        {
            sys_err("CHARACTER::GetInventoryItem: invalid SSB item cell %d", wCell);
            return nullptr;
        }
        return m_PlayerSlots->pSSBItems[wCell];
    case STONE_INVENTORY:
        if (wCell >= SPECIAL_INVENTORY_MAX_NUM)
        {
            sys_err("CHARACTER::GetInventoryItem: invalid SSS item cell %d", wCell);
            return nullptr;
        }
        return m_PlayerSlots->pSSSItems[wCell];
    case CHEST_INVENTORY:
        if (wCell >= SPECIAL_INVENTORY_MAX_NUM)
        {
            sys_err("CHARACTER::GetInventoryItem: invalid SSC item cell %d", wCell);
            return nullptr;
        }
        return m_PlayerSlots->pSSCItems[wCell];
#endif
 
Son düzenleme:
sıkıntı sellpacketnew olmamasıymış yapınca düzeliyor görmediğim bir sorun için teşekkürler müşterilere de revizyon verelim

uispecialstorage.py:
Genişlet Daralt Kopyala
#arat

    def SellItem(self):
        net.SendShopSellPacket(self.sellingSlotNumber, self.questionDialog.count, self.SLOT_WINDOW_TYPE[self.categoryPageIndex]["window"])
        snd.PlaySound("sound/ui/money.wav")
        self.OnCloseQuestionDialog()
        
        
#değiştir

    def SellItem(self):
        net.SendShopSellPacketNew(self.sellingSlotNumber, self.questionDialog.count, self.SLOT_WINDOW_TYPE[self.categoryPageIndex]["window"])
        snd.PlaySound("sound/ui/money.wav")
        self.OnCloseQuestionDialog()
 
Linkleri görebilmek için giriş yap veya kayıt ol.

kur bunu rahatla
bu var zaten dostum mesele bi sorunun üstünü kapatmak değil sorunu çözüme kavuşturmak.
sıkıntı sellpacketnew olmamasıymış yapınca düzeliyor görmediğim bir sorun için teşekkürler müşterilere de revizyon verelim

uispecialstorage.py:
Genişlet Daralt Kopyala
#arat

    def SellItem(self):
        net.SendShopSellPacket(self.sellingSlotNumber, self.questionDialog.count, self.SLOT_WINDOW_TYPE[self.categoryPageIndex]["window"])
        snd.PlaySound("sound/ui/money.wav")
        self.OnCloseQuestionDialog()
      
      
#değiştir

    def SellItem(self):
        net.SendShopSellPacketNew(self.sellingSlotNumber, self.questionDialog.count, self.SLOT_WINDOW_TYPE[self.categoryPageIndex]["window"])
        snd.PlaySound("sound/ui/money.wav")
        self.OnCloseQuestionDialog()
Bende SendShopSellPacketNew fonksiyonları ekli maalesef bir işe yaramıyor (bende) o yüzden source taraflı olduğuna inanıyorum istiyorsan dosyaları paylaşim sende sorun düzeldiyse sen kendininkiyle karşılaştır ?
 
bu var zaten dostum mesele bi sorunun üstünü kapatmak değil sorunu çözüme kavuşturmak.

Bende SendShopSellPacketNew fonksiyonları ekli maalesef bir işe yaramıyor (bende) o yüzden source taraflı olduğuna inanıyorum istiyorsan dosyaları paylaşim sende sorun düzeldiyse sen kendininkiyle karşılaştır ?
ben orayı değiştirince düzeldi bende sorun yok zaten ben niye karşılaştırıyorum :D
 
pack/root içerisinde SendShopSellPacketNew bunu aratıp SendShopSellPacket şeklinde değiştirip denermisin bide
 
Bu satır yüzünden bazı şeyler çakışıyor burayı ilk haline alınca normal marketten satış yapıyor k envanterindeyken coreye düşüyor. bu haliyle ikiside koreye düşüyor. GetInventoryItemin çektiği fonksyionu da bir altında paylaştım sorunun kaynağını buldum fakat çözüme ulaşamadım.
shop_manager.cpp:
Genişlet Daralt Kopyala
#ifdef ENABLE_SPECIAL_STORAGE
    LPITEM item = ch->GetItem(TItemPos(bType, bCell));
#else
    LPITEM item = ch->GetInventoryItem(bCell);
#endif

char_item.cpp:
Genişlet Daralt Kopyala
LPITEM CHARACTER::GetItem(TItemPos Cell) const
{
    if (!m_PlayerSlots)
        return nullptr;

    if (!IsValidItemPosition(Cell))
        return NULL;

    WORD wCell = Cell.cell;
    BYTE window_type = Cell.window_type;
    switch (window_type)
    {
    case INVENTORY:
    case EQUIPMENT:
        if (wCell >= INVENTORY_AND_EQUIP_SLOT_MAX)
        {
            sys_err("CHARACTER::GetInventoryItem: invalid item cell %d", wCell);
            return NULL;
        }
        return m_PlayerSlots->pItems[wCell];
    case DRAGON_SOUL_INVENTORY:
        if (wCell >= DRAGON_SOUL_INVENTORY_MAX_NUM)
        {
            sys_err("CHARACTER::GetInventoryItem: invalid DS item cell %d", wCell);
            return NULL;
        }
        return m_PlayerSlots->pDSItems[wCell];
#ifdef ENABLE_SPECIAL_STORAGE
    case UPGRADE_INVENTORY:
        if (wCell >= SPECIAL_INVENTORY_MAX_NUM)
        {
            sys_err("CHARACTER::GetInventoryItem: invalid SSU item cell %d", wCell);
            return nullptr;
        }
        return m_PlayerSlots->pSSUItems[wCell];
    case BOOK_INVENTORY:
        if (wCell >= SPECIAL_INVENTORY_MAX_NUM)
        {
            sys_err("CHARACTER::GetInventoryItem: invalid SSB item cell %d", wCell);
            return nullptr;
        }
        return m_PlayerSlots->pSSBItems[wCell];
    case STONE_INVENTORY:
        if (wCell >= SPECIAL_INVENTORY_MAX_NUM)
        {
            sys_err("CHARACTER::GetInventoryItem: invalid SSS item cell %d", wCell);
            return nullptr;
        }
        return m_PlayerSlots->pSSSItems[wCell];
    case CHEST_INVENTORY:
        if (wCell >= SPECIAL_INVENTORY_MAX_NUM)
        {
            sys_err("CHARACTER::GetInventoryItem: invalid SSC item cell %d", wCell);
            return nullptr;
        }
        return m_PlayerSlots->pSSCItems[wCell];
#endif
Eğer burayla alakalı olduğunu düşünüyorsan oradaki 16bit değişkeni 32bit olarak dene bakalım bi. K envanteri kaldırınca düzeliyor diyorsun madem.
 
Eğer burayla alakalı olduğunu düşünüyorsan oradaki 16bit değişkeni 32bit olarak dene bakalım bi. K envanteri kaldırınca düzeliyor diyorsun madem.
Maalesef hepsi denendi shop_manager.cpp`de K Envanter dolayısıyla GetItemden çağrı yaptığımızda bu sorun meydana geliyor.

örnek:
LPITEM item = ch->GetUpgradeInventoryItem(bCell); ile çağırdığımızda şuan sadece k envanterde yükseltme bölümünden item satışı yapıyor.

marty 5.8`de k envanter eklemek biraz karışık olduğu için bazı noktalar GetEmptyInventoryEx`den çekiyor bu çağrıdan olan bölümlere ekleme yapmadığım için kafam karışıyor nerede eksik var diye üzerinden geçtim kaç defa çözemedim eski altyapılarımda da güncel kullandığım bir k envanter oralarda bu soruna denk gelmedim hiç
 
Maalesef hepsi denendi shop_manager.cpp`de K Envanter dolayısıyla GetItemden çağrı yaptığımızda bu sorun meydana geliyor.

örnek:
LPITEM item = ch->GetUpgradeInventoryItem(bCell); ile çağırdığımızda şuan sadece k envanterde yükseltme bölümünden item satışı yapıyor.

marty 5.8`de k envanter eklemek biraz karışık olduğu için bazı noktalar GetEmptyInventoryEx`den çekiyor bu çağrıdan olan bölümlere ekleme yapmadığım için kafam karışıyor nerede eksik var diye üzerinden geçtim kaç defa çözemedim eski altyapılarımda da güncel kullandığım bir k envanter oralarda bu soruna denk gelmedim hiç
discorddan ekle yardımcı olmaya çalışayım hocam alj_i
 
Maalesef hepsi denendi shop_manager.cpp`de K Envanter dolayısıyla GetItemden çağrı yaptığımızda bu sorun meydana geliyor.

örnek:
LPITEM item = ch->GetUpgradeInventoryItem(bCell); ile çağırdığımızda şuan sadece k envanterde yükseltme bölümünden item satışı yapıyor.

marty 5.8`de k envanter eklemek biraz karışık olduğu için bazı noktalar GetEmptyInventoryEx`den çekiyor bu çağrıdan olan bölümlere ekleme yapmadığım için kafam karışıyor nerede eksik var diye üzerinden geçtim kaç defa çözemedim eski altyapılarımda da güncel kullandığım bir k envanter oralarda bu soruna denk gelmedim hiç
GetEmptyInventoryEx
Bu işlemi komple iptal etmek lazım
 
Geri
Üst