Çözüldü Cannot find item by 0

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
Premium Üye
Grafiker
Geliştirici
Yardımsever Üye
Editör
Mesaj
2.746
Çözümler
286
Beğeni
1.989
Puan
1.349
İtemleri hızlıca çıkar tak yapınca alttaki syseri alıyorum nedeni nedir birde bi kaç sorum olacak
5 Envanter kullanıyorum
Kod:
Cannot find item by 0

exchange.cpp​
C++:
        {
            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++:
            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++:
    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++:
  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​
 
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++:
    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++:
    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:
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.
 
Kendi serverimde de hızlı şekilde giy-çıkar işlemi yaptım aynı syserri verdi.
Kod:
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