Çözüldü Cannot find item by 0

  • Konuyu açan Konuyu açan MEKA
  • Açılış Tarihi Açılış Tarihi
  • Yanıt Yanıt 9
  • Gösterim Gösterim 3K
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ı.

MEKA

Discord: mekaprojects
Süper Moderatör
Grafiker
Geliştirici
Yardımsever Üye
Mesaj
3.010
Çözümler
318
Beğeni
2.268
Puan
1.850
Ticaret Puanı
2
İtemleri hızlıca çıkar tak yapınca alttaki syseri alıyorum nedeni nedir birde bi kaç sorum olacak
5 Envanter kullanıyorum
Kod:
Genişlet Daralt Kopyala
Cannot find item by 0

exchange.cpp​
C++:
Genişlet Daralt Kopyala
        {
            int iPos;

            if ((iPos = s_grid1.FindBlank(1, item->GetSize())) >= 0)
            {
                s_grid1.Put(iPos, 1, item->GetSize());
            }
            else if ((iPos = s_grid2.FindBlank(1, item->GetSize())) >= 0)
            {
                s_grid2.Put(iPos, 1, item->GetSize());
            }
            else if ((iPos = s_grid3.FindBlank(1, item->GetSize())) >= 0)
            {
                s_grid3.Put(iPos, 1, item->GetSize());
            }
            else if ((iPos = s_grid4.FindBlank(1, item->GetSize())) >= 0)
            {
                s_grid4.Put(iPos, 1, item->GetSize());
            }
            else if ((iPos = s_grid4.FindBlank(1, item->GetSize())) >= 0)
             {
                s_grid5.Put(iPos, 1, item->GetSize());
             }
            else
                return false;
        }

yukarıdaki satırlar bana hatalı gibi geldi 2 tane grid4 var
2 tane grid4 derken tam olarak incelerseniz fark edeceksinizdir.​
C++:
Genişlet Daralt Kopyala
            else if ((iPos = s_grid4.FindBlank(1, item->GetSize())) >= 0)
            {
                s_grid4.Put(iPos, 1, item->GetSize());
            }
            else if ((iPos = s_grid4.FindBlank(1, item->GetSize())) >= 0)
             {
                s_grid5.Put(iPos, 1, item->GetSize());
             }
C++:
Genişlet Daralt Kopyala
    for (i = 0; i < INVENTORY_PAGE_SIZE*1; ++i)
    {
        if (!(item = victim->GetInventoryItem(i)))
            continue;

        s_grid1.Put(i, 1, item->GetSize());
    }
    for (i = INVENTORY_PAGE_SIZE*1; i < INVENTORY_PAGE_SIZE*2; ++i)
    {
        if (!(item = victim->GetInventoryItem(i)))
            continue;

        s_grid2.Put(i - INVENTORY_PAGE_SIZE*1, 1, item->GetSize());
    }
    for (i = INVENTORY_PAGE_SIZE*2; i < INVENTORY_PAGE_SIZE*3; ++i)
    {
        if (!(item = victim->GetInventoryItem(i)))
            continue;

        s_grid3.Put(i - INVENTORY_PAGE_SIZE*2, 1, item->GetSize());
    }
    for (i = INVENTORY_PAGE_SIZE*3; i < INVENTORY_PAGE_SIZE*4; ++i)
    {
        if (!(item = victim->GetInventoryItem(i)))
            continue;

        s_grid4.Put(i - INVENTORY_PAGE_SIZE*3, 1, item->GetSize());
    }
    for (i = INVENTORY_PAGE_SIZE * 4; i < INVENTORY_PAGE_SIZE * 5; ++i)
    {
        if (!(item = victim->GetInventoryItem(i)))
            continue;

        s_grid4.Put(i - INVENTORY_PAGE_SIZE * 4, 1, item->GetSize());
    }

aynı şekilde buradada 2 tane grid 4 var

Lenght.h​
C++:
Genişlet Daralt Kopyala
  INVENTORY_PAGE_COLUMN    = 5,
    INVENTORY_PAGE_ROW        = 9,
    INVENTORY_PAGE_SIZE        = INVENTORY_PAGE_COLUMN*INVENTORY_PAGE_ROW,
    INVENTORY_PAGE_COUNT    = 5,
    INVENTORY_MAX_NUM        = INVENTORY_PAGE_SIZE*INVENTORY_PAGE_COUNT,

Dediğim yerlerde hata varmı yok mu anlayamadım yardımlarınızı bekliyorum
Bu arada envanter ile ilgili sorunum yok ama kodları incelerken buralar ilgimi çekti sormak istedim​
 
Çözüm
Kendi serverimde de hızlı şekilde giy-çıkar işlemi yaptım aynı syserri verdi.
Kod:
Genişlet Daralt Kopyala
0114 22:00:48036 :: Cannot find item by 0
0114 22:00:49534 :: Cannot find item by 0
0114 22:00:49748 :: Cannot find item by 0
0114 22:00:49975 :: Cannot find item by 0
0114 22:00:51283 :: Cannot find item by 0
0114 22:00:52077 :: Cannot find item by 0
0114 22:00:52536 :: Cannot find item by 0
0114 22:00:52714 :: Cannot find item by 0
0114 22:00:54555 :: Cannot find item by 0

Bu kritik bir sorun değil. Dediğim gibi hızlıca itemi giy çıkar işlemi yaptığınızda server ve client arasındaki iletişimde gecikme meydana geldiği için bu hatayı veriyor.
Vermesinin sebebi de şu. Fare ile itemin üstüne geldiğinizde tooltip penceresi açılır. Çok hızlı giy-çıkar...
zaten o hatayı fark ettiğimde konunuza baktım yinede bi sormak istedim cannot find item by 0 hatası hakkında yardımcı olurmusunuz ?
O hatayı vermesinin sebebi seçilen itemin bulunamadığı söylüyor. Bu hatayı tetikleyen bir çok etken olabilir.
Client/UserInterface/PythonItemModule.cpp dosyasında şu satırda ki kontrol sonucu yazıyor.
C++:
Genişlet Daralt Kopyala
    if (!CItemManager::Instance().SelectItemData(iIndex))
    {
        TraceError("Cannot find item by %d", iIndex);
        CItemManager::Instance().SelectItemData(60001);
    }
5 envanteri ekledikten sonra mı meydana geldi bu hata?
 
O hatayı vermesinin sebebi seçilen itemin bulunamadığı söylüyor. Bu hatayı tetikleyen bir çok etken olabilir.
Client/UserInterface/PythonItemModule.cpp dosyasında şu satırda ki kontrol sonucu yazıyor.
C++:
Genişlet Daralt Kopyala
    if (!CItemManager::Instance().SelectItemData(iIndex))
    {
        TraceError("Cannot find item by %d", iIndex);
        CItemManager::Instance().SelectItemData(60001);
    }
5 envanteri ekledikten sonra mı meydana geldi bu hata?
hayır envanterden dolayı değil nedenini bende bilmiyorum tam olarak itemleri hızlı çıkar tak yapınca veriyor sadece mesela 2 tane aynı zırh var biri takılı biri envanterde envanterdekine ard arda tıklıyosun değiştiriyor zırhları bu syserri veriyor
 
Server - client arasında sürekli bir iletişim vardır. Karakter yürürken, itemlerin yerini değiştirirken vs. Eğer bunu çok hızlı yaparsanız client serverden gelen veri ile karşılaştırma yaparken sorun yaşayacağı için bu tarz hatalar verebilir. İtemi çıkar - tak yaptığınızda eğer olağan dışı bir durum yoksa endişelenmenize gerek yok.
 
Server - client arasında sürekli bir iletişim vardır. Karakter yürürken, itemlerin yerini değiştirirken vs. Eğer bunu çok hızlı yaparsanız client serverden gelen veri ile karşılaştırma yaparken sorun yaşayacağı için bu tarz hatalar verebilir. İtemi çıkar - tak yaptığınızda eğer olağan dışı bir durum yoksa endişelenmenize gerek yok.
herhangi bi sorun yok yavaş çıkarınca itemleri syser vermiyor sadece hızlı çıkarınca öyle bi syserr vermekte
 
Bu eylemi bir kaç serverde de deneyin. Bende kendi geliştirdiğim serverde de deneyeceğim. Bakalım aynı hata olacak mı..
 
Kendi serverimde de hızlı şekilde giy-çıkar işlemi yaptım aynı syserri verdi.
Kod:
Genişlet Daralt Kopyala
0114 22:00:48036 :: Cannot find item by 0
0114 22:00:49534 :: Cannot find item by 0
0114 22:00:49748 :: Cannot find item by 0
0114 22:00:49975 :: Cannot find item by 0
0114 22:00:51283 :: Cannot find item by 0
0114 22:00:52077 :: Cannot find item by 0
0114 22:00:52536 :: Cannot find item by 0
0114 22:00:52714 :: Cannot find item by 0
0114 22:00:54555 :: Cannot find item by 0

Bu kritik bir sorun değil. Dediğim gibi hızlıca itemi giy çıkar işlemi yaptığınızda server ve client arasındaki iletişimde gecikme meydana geldiği için bu hatayı veriyor.
Vermesinin sebebi de şu. Fare ile itemin üstüne geldiğinizde tooltip penceresi açılır. Çok hızlı giy-çıkar işleminde fare eşyanın üzerinde olduğu için sürekli tooltipi de güncellemeye çalışır. O bilgilerin yazılması için de eşyanın seçilmesi gerekiyor. Gecikme olunca da seçemiyor.
 
Çözüm
Kendi serverimde de hızlı şekilde giy-çıkar işlemi yaptım aynı syserri verdi.
Kod:
Genişlet Daralt Kopyala
0114 22:00:48036 :: Cannot find item by 0
0114 22:00:49534 :: Cannot find item by 0
0114 22:00:49748 :: Cannot find item by 0
0114 22:00:49975 :: Cannot find item by 0
0114 22:00:51283 :: Cannot find item by 0
0114 22:00:52077 :: Cannot find item by 0
0114 22:00:52536 :: Cannot find item by 0
0114 22:00:52714 :: Cannot find item by 0
0114 22:00:54555 :: Cannot find item by 0

Bu kritik bir sorun değil. Dediğim gibi hızlıca itemi giy çıkar işlemi yaotığınız da server ve client arasında ki iletişimde gecikme meydana geldiği için bu hatayı veriyor.
Vermesinin sebebi de şu. Fare ile itemin üstüne geldiğinizde tooltip penceresi açılır. Çok hızlı giy-çıkar işleminde fare eşyanın üzerinde olduğu için sürekli tooltipi de güncellemeye çalışır. O bilgilerin yazılması için de eşyanın seçilmesi gerekiyor. Gecikme olunca da seçemiyor.
Anladım teşekkürler kapatılabilir
 
Durum
İçerik kilitlendiği için mesaj gönderimine kapatıldı.
Geri
Üst