Çözüldü Envanter Slot Sorunu

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

Kaiser

Admin
Admin
Geliştirici
Yardımsever Üye
Mesaj
3.970
Çözümler
384
Beğeni
4.037
Puan
1.849
Ticaret Puanı
0
Kod:
Genişlet Daralt Kopyala
0710 22:11:59691 :: CPythonSafeBox::GetItemData(dwSlotIndex=65535) - Strange slot index

Bu syserr neyden kaynaklanıyor olabilir? Karakter öylece dururken belirsiz zamanlarda bu kayıt düşüyor.

Syserr hatasının geldiği kod bloğu şurası fakat burayla alakalı bir değişiklik yapmadım.

PythonSafebox.cpp:
Genişlet Daralt Kopyala
BOOL CPythonSafeBox::GetItemDataPtr(DWORD dwSlotIndex, TItemData ** ppInstance)
{
    if (dwSlotIndex >= m_ItemInstanceVector.size())
    {
        TraceError("CPythonSafeBox::GetItemData(dwSlotIndex=%d) - Strange slot index", dwSlotIndex);
        return FALSE;
    }

    *ppInstance = &m_ItemInstanceVector[dwSlotIndex];

    return TRUE;
}
 
Çözüm
Sonunda hallettim.
uitooltip.py de def SetInventoryItem fonksiyonu içinde slotIndex değeri -1 değeri dönüyormuş, ilgili satırı düzenleyip sonrasında -1 olan yeri 1 olarak değiştirince sorun çözüldü.

Herkese teşekkür ediyorum.
65535 int sınırı. bir sınır arttırma yaptıysanız bir yerde sınırı arttırmamışsınız . bu yüzdende böyle bir syserr geliyor

unsigned __int162unsigned short, unsigned short int0-65.535
ya da
unsigned short2unsigned short int0-65.535
 
65535 int sınırı. bir sınır arttırma yaptıysanız bir yerde sınırı arttırmamışsınız . bu yüzdende böyle bir syserr geliyor

unsigned __int162unsigned short, unsigned short int0-65.535
ya da
unsigned short2unsigned short int0-65.535
Herhangi bir sınır arttırma işlemi yapmadım. Emin değilim ama yanılmıyorsam evrim sistemi veya render target sisteminden sonra bu hata ortaya çıktı. Çünkü eklediğim son iki sistemler bunlar ve bunlardan önce yoktu.
 
Herhangi bir sınır arttırma işlemi yapmadım. Emin değilim ama yanılmıyorsam evrim sistemi veya render target sisteminden sonra bu hata ortaya çıktı. Çünkü eklediğim son iki sistemler bunlar ve bunlardan önce yoktu.
bilmiyorum ama dediğim gibi 65535 bir sınır bu yüzden bence oraları kontrol et
 
Anladıgım kadarıyla sorun depo ile alakalı gelen değer dword yani int eşit koda baktım biraz ama tam olarak nerden değer geldigini anlıyamadım depo ile alakalı bir güncelleme yaptınız mı yada depo bakar mısınız neler var

bunlardan ayrı olarak bi iletişim adresinizi verebilir misiniz bağzı konularda fikir almak isterim tabi isterseniz skype vs gibi
 
dwSlotIndex overflow atıyor, unsigned short a 65k dan fazla bir veri veya negatif ( - ) değer geliyor..


m_ItemInstanceVector word (unsigned short) idir, bunu dword veya size_t yap


edit : safebox (depo) sorunlu sende, sıkıntıyı veri tiplerinde arama..
 
dwSlotIndex overflow atıyor, unsigned short a 65k dan fazla bir veri veya negatif ( - ) değer geliyor..


m_ItemInstanceVector word (unsigned short) idir, bunu dword veya size_t yap


edit : safebox (depo) sorunlu sende, sıkıntıyı veri tiplerinde arama..
Bende bunu anlamadım işte. Yani buna sebep olan şey ney acaba?
Yani bu files aylardır benim elimde ve böyle bir sorun yoktu, üst yorumda da belirttiğim gibi ya ya evrim sistemi ya da render target ekledikten sonra bu sorun başladı, ama hangisi hatırlamıyorum.

PythonSafebox.h de bu tanım şu şekilde tanımlı;
C++:
Genişlet Daralt Kopyala
protected:
        TItemInstanceVector m_ItemInstanceVector;

TItemInstanceVector tanımı ve syserrin geldiği blok ise .h dosyasının başında şöyle tanımlı:
C++:
Genişlet Daralt Kopyala
typedef std::vector<TItemData> TItemInstanceVector;
BOOL GetItemDataPtr(DWORD dwSlotIndex, TItemData ** ppInstance);

GameType.h de TItemData ya baktım ve o da şöyle:
C++:
Genişlet Daralt Kopyala
typedef struct packet_item
{
    DWORD       vnum;
    BYTE        count;
    DWORD        flags;
    DWORD        anti_flags;
    long        alSockets[ITEM_SOCKET_SLOT_MAX_NUM];
    TPlayerItemAttribute aAttr[ITEM_ATTRIBUTE_SLOT_MAX_NUM];
#ifdef ENABLE_WEAPON_EVOLUTION_SYSTEM
    DWORD        evolution;
#endif
#ifdef ENABLE_SOUL_BIND_SYSTEM
    long        soulbind;
#endif
} TItemData;


Son olarak src de 65535 sayısını arattım ve unsigned short olarak çıkan tek yer alakası yok sanırım ama PRTerrainLib / TextureSet.h dosyasında şurası oldu:

C++:
Genişlet Daralt Kopyala
unsigned short                Begin, End;    // 0 ~ 65535 ÀÇ 16bit heightfield ³ôÀÌ°ª.
 
Bende bunu anlamadım işte. Yani buna sebep olan şey ney acaba?
Yani bu files aylardır benim elimde ve böyle bir sorun yoktu, üst yorumda da belirttiğim gibi ya ya evrim sistemi ya da render target ekledikten sonra bu sorun başladı, ama hangisi hatırlamıyorum.

PythonSafebox.h de bu tanım şu şekilde tanımlı;
C++:
Genişlet Daralt Kopyala
protected:
        TItemInstanceVector m_ItemInstanceVector;

TItemInstanceVector tanımı ve syserrin geldiği blok ise .h dosyasının başında şöyle tanımlı:
C++:
Genişlet Daralt Kopyala
typedef std::vector<TItemData> TItemInstanceVector;
BOOL GetItemDataPtr(DWORD dwSlotIndex, TItemData ** ppInstance);

GameType.h de TItemData ya baktım ve o da şöyle:
C++:
Genişlet Daralt Kopyala
typedef struct packet_item
{
    DWORD       vnum;
    BYTE        count;
    DWORD        flags;
    DWORD        anti_flags;
    long        alSockets[ITEM_SOCKET_SLOT_MAX_NUM];
    TPlayerItemAttribute aAttr[ITEM_ATTRIBUTE_SLOT_MAX_NUM];
#ifdef ENABLE_WEAPON_EVOLUTION_SYSTEM
    DWORD        evolution;
#endif
#ifdef ENABLE_SOUL_BIND_SYSTEM
    long        soulbind;
#endif
} TItemData;


Son olarak src de 65535 sayısını arattım ve unsigned shrot olarak çıkan tek yer alakası yok sanırım ama PRTerrainLib / TextureSet.h dosyasında şurası oldu:

C++:
Genişlet Daralt Kopyala
unsigned short                Begin, End;    // 0 ~ 65535 ÀÇ 16bit heightfield ³ôÀÌ°ª.
evolution ve soulbind tanımlamalarını game ve clientte değiştirsene int felan yap belki ondandır
 
evolution ve soulbind tanımlamalarını game ve clientte değiştirsene int felan yap belki ondandır
Soruna sebep olan şeyi buldum. Debugdan baktım, sorunun depoyla veya sistemlerle alakası yok sanırım.
Envanterdeki kutsama küresinin üstüne her gelmemde bu hata düşüyor ve her üzerine gelmemde hata kendini tekrar ederek artıyor.
 
Konuyu tekrar aktif ediyorum, sorunu tam olarak tespit ettim fakat neyden kaynaklandığını bulamadım.
Sorun itemlerle alakalı değil envanterdeki işaretlemiş olduğum sağdan ikinci slot ile alakalı.

Adsız.jpg


İşaretlediğim yere hangi itemi koyarsam koyayım üzerine gelince bu hatayı veriyor. Belki karakterden kaynaklıdır görünmeyen bir item vardır falan diyerekten yan karakterden denedim ama aynı.

O slotta item yokken üzerine geldiğimde herhangi bir sorun yok, ancak dediğim gibi herhangi bir item koyduğumda bu hatayı veriyor.
 
Sonunda hallettim.
uitooltip.py de def SetInventoryItem fonksiyonu içinde slotIndex değeri -1 değeri dönüyormuş, ilgili satırı düzenleyip sonrasında -1 olan yeri 1 olarak değiştirince sorun çözüldü.

Herkese teşekkür ediyorum.
 
Çözüm
Durum
İçerik kilitlendiği için mesaj gönderimine kapatıldı.
Üst