InfernoShade 1
InfernoShade
farkmt2official 1
farkmt2official
romegames 1
romegames
bikral 1
bikral
PrimeAC 1
PrimeAC
shrpnl 1
shrpnl
Agora Metin2 1
Agora Metin2
xranzei 1
xranzei
Bvural41 1
Bvural41
noisiv 1
noisiv
Manwe Work 1
Manwe Work
Karan2offical 1
Karan2offical
Hikaye Ekle

Altın Konu [C++] CLİENT CRASH FİX !

  • Konuyu başlatan Konuyu başlatan [DEV]AB
  • Başlangıç tarihi Başlangıç tarihi
  • Cevaplar Cevaplar 96
  • Görüntüleme Görüntüleme 44K
5.00 yıldız(lar) 3 Değerlendirme Değerlendirenler

[DEV]AB

Level 9
Telefon Numarası Onaylanmış Üye
TM Üye
Katılım
15 Nis 2016
Konular
115
Mesajlar
4,815
Çözüm
58
Online süresi
8mo 4d
Reaksiyon Skoru
1,107
Altın Konu
3
Başarım Puanı
279
MmoLira
6,261
DevLira
66
Ticaret - 100%
8   0   0

HERAKLES Otomatik Avlı kalıcı sunucu. 19 Haziran'da açılıyor. Atius & Wizard güvencesiyle hemen kayıt ol, ön kayıt ödülleri aktif. HEMEN TIKLA!

Merhabalar, lafı çok dolandırmayacağım çoğu oyuncuyu çileden çıkaran hatta oyunu bırakmasına yol açan o sorun loading sırasında clientin crash yemesi sorununun fixini paylaşıyorum...

Sorunun kaynağı: Oyunun bozuk kodlamasından dolayı .tga uzantılı resim dosyalarını .dds formatındaymış gibi algılayıp yüklemeye çalışması.

1. YOL:

EterLib/GrpImageTexture.cpp açılır ve şu kod bloğu bulunur;

Kod:
bool CGraphicImageTexture::CreateFromMemoryFile(UINT bufSize, const void * c_pvBuf, D3DFORMAT d3dFmt, DWORD dwFilter)

Biraz altında bulunur;

Kod:
    if (image.LoadHeaderFromMemory((const BYTE *) c_pvBuf))    // DDS인가 확인
    {
        return (CreateDDSTexture(image, (const BYTE *) c_pvBuf));
    }

Değiştirilir;

Kod:
    if (!strstr(m_stFileName.c_str(), ".tga") && image.LoadHeaderFromMemory((const BYTE *) c_pvBuf))
    {
        return (CreateDDSTexture(image, (const BYTE *) c_pvBuf));
    }

2. YOL: (UZUN YOL) (TAVSİYE EDİLEN)

EterImageLib/DXTCImage.cpp açılır ve şu kod bulunur;

Kod:
bool CDXTCImage::LoadHeaderFromMemory(const BYTE * c_pbMap)

Değiştirilir;

Kod:
bool CDXTCImage::LoadHeaderFromMemory(const BYTE * c_pbMap, int iSize)

Altında bulunur;

Kod:
DWORD dwMagic;

Altına eklenir;

Kod:
if (iSize < sizeof(DWORD))
        return false;


Altına bulunur;

Kod:
dwMagic = *(DWORD *) c_pbMap;
    c_pbMap += sizeof(DWORD);

Altına eklenilir;

Kod:
iSize -= sizeof(DWORD);

Altında bulunur;

Kod:
DDSURFACEDESC2 ddsd; // read from dds file

Altına eklenir;

Kod:
if (iSize < sizeof(DDSURFACEDESC2))
        return false;

Altında bulunur;

Kod:
memcpy(&ddsd, c_pbMap, sizeof(DDSURFACEDESC2));
    c_pbMap += sizeof(DDSURFACEDESC2);

Altına eklenilir;

Kod:
iSize -= sizeof(DDSURFACEDESC2);

Bulunur;

Kod:
return LoadFromMemory((const BYTE*) pvMap);

Değiştirilir;

Kod:
return LoadFromMemory((const BYTE*) pvMap, mappedFile.Size());

Bulunur;

Kod:
bool CDXTCImage::LoadFromMemory(const BYTE * c_pbMap)

Değiştirilir;

Kod:
bool CDXTCImage::LoadFromMemory(const BYTE * c_pbMap, int iSize)

Bulunur;

Kod:
if (!LoadHeaderFromMemory(c_pbMap))

Değiştirilir;

Kod:
if (!LoadHeaderFromMemory(c_pbMap, iSize))

EterImageLib/DXTCImage.h açılır ve şu kod bulunur;

Kod:
        bool LoadFromMemory(const BYTE * c_pbMap);
        bool LoadHeaderFromMemory(const BYTE * c_pbMap);

Değiştirilir;

Kod:
        bool LoadFromMemory(const BYTE * c_pbMap, int iSize);
        bool LoadHeaderFromMemory(const BYTE * c_pbMap, int iSize);

EterLib/GrpImageTexture.cpp açılır ve bulunur;

Kod:
if (image.LoadHeaderFromMemory((const BYTE *) c_pvBuf))

Değiştirilir;

Kod:
if (image.LoadHeaderFromMemory((const BYTE *) c_pvBuf, bufSize))
 
Son düzenleme:

En Çok Reaksiyon Alan Mesajlar

Evet zaten sorunu onlar yaşıyor :D
Bnmde Bizamanlar clientim şöleydi ve oldukcada düzenliydim ama bu hata illaki bi şekilde "buffer" yetmediği için karşına çıkıyodu.

Dip not olarak: bu düzenleme yapılsa dahip clienti anormal bi şekilde büyük olan bi oyun yetersiz özelliklere sahip bi pc de açılmaya kalkılırsa yinede oyunda ışınlanırken veyahut durduk yere bu hata karşısına çıkar o arkadaşın örnek kişi bizzat bnm.

Öğeyi görmek için üye olmalısınız.
Paylaşım için teşekkürler reis <3
 
Clienti Suriye gibi olanları biraz rahatlatır :D
 
Evet zaten sorunu onlar yaşıyor :D
Bnmde Bizamanlar clientim şöleydi ve oldukcada düzenliydim ama bu hata illaki bi şekilde "buffer" yetmediği için karşına çıkıyodu.

Dip not olarak: bu düzenleme yapılsa dahip clienti anormal bi şekilde büyük olan bi oyun yetersiz özelliklere sahip bi pc de açılmaya kalkılırsa yinede oyunda ışınlanırken veyahut durduk yere bu hata karşısına çıkar o arkadaşın örnek kişi bizzat bnm.

adud0on.jpg
 

Şu an konuyu görüntüleyenler (Toplam : 0, Üye: 0, Misafir: 0)

Geri
Üst