Mt2Hizmet 1
Mt2Hizmet
Agora Metin2 1
Agora Metin2
Bvural41 1
Bvural41
kaptanmikro1 1
kaptanmikro1
R 1
Roksam
[DEV]AB 1
[DEV]AB
Sevdamsın 1
Sevdamsın
farkmt2official 1
farkmt2official
emirhanHCL 1
emirhanHCL
Scarlet 1
Scarlet
Hikaye Ekle

Altın Konu Metin2 Toplu Hata Düzenlemeleri

  • Konuyu başlatan Konuyu başlatan Luigina
  • Başlangıç tarihi Başlangıç tarihi
  • Cevaplar Cevaplar 47
  • Görüntüleme Görüntüleme 9K

Türkiye'de ilk Mobil & PC Aynı Anda Metin2 Oyna. Triarchonline kalıcı ve uzun ömürlü yapısı ile 24 Temmuz'da açılıyor. | 1-99 Mobil Metin2 Triarch HEMEN TIKLA!

Öncelikle herkese selamlar,

55Games olarak Metin2 projelerimizi sonlandırmış bulunmaktayız bundan dolayı bu konu altından hem yaşadığınız sorunlara yardımcı olacağım.
Hem de çeşitli hata çözümlerini bu konu altından sizlerle paylaşacağım.
Konuyu sürekli güncel tutmayı düşünüyorum. Tüm düzenlemeleri bir anda paylaşmayacağım konuya olan ilgiye göre devam edeceğim.

Artık benden Metin2 işleri geçti umarım yeni başlayacak veya bazı şeylere heves eden arkadaşlarımıza yardımcı olabilirim.

1. Düzenleme

ThingInstance.cpp üzerindeki bir TraceError komutundan dolayı clientin aniden kapanması ( Crash )

Kod:
void CGraphicThingInstance::RegisterModelThing

// Aratın

    if (!CheckModelThingIndex(iModelThing))
    {
        if (pModelThing)
            TraceError("CGraphicThingInstance::RegisterModelThing(iModelThing=%d, pModelThing=%s)\n", iModelThing, pModelThing->GetFileName());
        return;
    }
  
// Bu şekilde değiştirin.

2. Düzenleme

Client Debug modunda derlenip çalıştırıldığında CANNOT_FIND_PACK_FILE kısmında ses dosyalarının dışında tüm efektlerin ses dosyasını oyunun okumaya çalışmasından dolayı .mss diye syserr.txt / log.txt 'nizin dolması.
Yapılan düzenleme sadece gerçek eksikleri görebilmek için .mss hatalarını gizlemektedir. Ses dosyalarının okuma mantığı değiştirilerek çözüm uygulanabilir fakat bunu paylaşmayacağım. Yöntemi ve olayı burada bildirdim zaten.

EterPackManager.cpp

Kod:
#ifdef _DEBUG
    if (strFileName.find("mss") == std::string::npos)
        TraceError("CANNOT_FIND_PACK_FILE [%s]", strFileName.c_str());
#endif
// Bu şekilde değiştirin.

3. Düzenleme

PythonWindow.cpp üzerinde Button 'daki Up, Down, Over, Disable fonksiyonlarındaki çok nadir durumlarda oluşabilen aniden client kapanmasının çözümü ( Crash )

Kod:
    BOOL CButton::SetUpVisual(const char* c_szFileName)
    {
        CResource* pResource = CResourceManager::Instance().GetResourcePointer(c_szFileName);
        if (!pResource || !pResource->IsType(CGraphicImage::Type()))
            return FALSE;

        m_upVisual.SetImagePointer(static_cast<CGraphicImage*>(pResource));
        if (m_upVisual.IsEmpty())
            return FALSE;

        SetSize(m_upVisual.GetWidth(), m_upVisual.GetHeight());
        SetCurrentVisual(&m_upVisual);

        return TRUE;
    }
    BOOL CButton::SetOverVisual(const char* c_szFileName)
    {
        CResource* pResource = CResourceManager::Instance().GetResourcePointer(c_szFileName);
        if (!pResource || !pResource->IsType(CGraphicImage::Type()))
            return FALSE;

        m_overVisual.SetImagePointer(static_cast<CGraphicImage*>(pResource));
        if (m_overVisual.IsEmpty())
            return FALSE;

        SetSize(m_overVisual.GetWidth(), m_overVisual.GetHeight());

        return TRUE;
    }
    BOOL CButton::SetDownVisual(const char* c_szFileName)
    {
        CResource* pResource = CResourceManager::Instance().GetResourcePointer(c_szFileName);
        if (!pResource || !pResource->IsType(CGraphicImage::Type()))
            return FALSE;

        m_downVisual.SetImagePointer(static_cast<CGraphicImage*>(pResource));
        if (m_downVisual.IsEmpty())
            return FALSE;

        SetSize(m_downVisual.GetWidth(), m_downVisual.GetHeight());

        return TRUE;
    }
    BOOL CButton::SetDisableVisual(const char* c_szFileName)
    {
        CResource* pResource = CResourceManager::Instance().GetResourcePointer(c_szFileName);
        if (!pResource || !pResource->IsType(CGraphicImage::Type()))
            return FALSE;

        m_disableVisual.SetImagePointer(static_cast<CGraphicImage*>(pResource));
        if (m_downVisual.IsEmpty())
            return FALSE;

        SetSize(m_disableVisual.GetWidth(), m_disableVisual.GetHeight());

        return TRUE;
    }
// Bu kısmı direkt bu şekilde değiştirin.

4. Düzenleme

TextureSet.cpp üzerinde pointerin null gelmesinden dolayı oluşan aniden client kapanmasının çözümü ( Crash )

Kod:
bool CTextureSet::SetTexture

// içerisinde

CResource* pResource = CResourceManager::Instance().GetResourcePointer(c_szFileName);

// Altına aşağıdaki kodu ekle.

    if (!pResource)
        return false;

/////////////////////////////////////////////////
bool CTextureSet::AddTexture

// içerisinde

CResource* pResource = CResourceManager::Instance().GetResourcePointer(c_szFileName);

// Altına aşağıdaki kodu ekle.

    if (!pResource)
        return false;

Ekstra

Arena ve toplu kslerde oluşan lag problemi için önerebileceğin bir yöntem var mı ? Haritadan kaynaklı değil örneğin 50 kişi bir bossa girdiğinde
fena şekilde lag giriyor oyuna jotun sisteminde vs.
encodeinsertpacket gibi karakter paketlerinde düzenleme yapmak gerekiyor.

CPythonNetworkStream::GamePhase()

ayrıca bu kısımdaki
MAX_RECV_COUNT 'u 4 'ten 8 'e veya 16 'ya çıkartabilirsin.
Eğer hattan yana sıkıntı yoksa sunucunda şunu yap

const DWORD MAX_RECV_COUNT = xx;
const DWORD SAFE_RECV_BUFSIZE = xxxx;
DWORD dwRecvCount = 0;

sil

if (dwRecvCount++ >= MAX_RECV_COUNT - 1 && GetRecvBufferSize() < SAFE_RECV_BUFSIZE
&& m_strPhase == "Game")
break;

burayı da sil
 
Son düzenleme:

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

Geri
Üst