- Katılım
- 19 Şub 2019
- Konular
- 154
- Mesajlar
- 1,903
- Reaksiyon Skoru
- 1,525
- Altın Konu
- 4
- Başarım Puanı
- 226
- TM Yaşı
- 3 Yıl 3 Ay 6 Gün
- Online Süresi
- 111d 10h 10m
- MmoLira
- 2,215
- DevLira
- 129
- Takipçiler
- 43
World of Sentor2 yenilenmiş 55-120 altyapısı ve profesyonel ekibi ile sizlere tekrardan 27 Mayıs 21:00 itibari ile hizmet vermeye başlayacaktır. Kendini tekrarlamayan oyun yapısı ve özlediğiniz eski tip 55-120 görselleri ile World of Sentor2 geri dönüyor... Site Linki
Ö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 )
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
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 )
4. Düzenleme
TextureSet.cpp üzerinde pointerin null gelmesinden dolayı oluşan aniden client kapanmasının çözümü ( Crash )
Ekstra
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: