- Mesaj
- 4.548
- Çözümler
- 451
- Beğeni
- 5.442
- Puan
- 5.349
- Ticaret Puanı
- 0
Merhabalar, sisle alakalı "ölü" diyebileceğimiz bazı kodlar yüzünden zaman zaman client çökmeleri vb. sorunlar yaşanıyor ve buna bağlı olarak çeşitli fixler üretiliyor. Buradaki en kritik etken, clientin okduğu fog.tga dosyasının 4x2 gibi bir boyutta hiçbir işe yaramayan bir doku dosyası olmasıdır. Ancak buradaki ufak temizlik işleminden sonra fog'a bağlı olan çökmeler sona ermiş olacaktır.
Başrol oyuncu: fog.tga dosyası.
Pek çok kişi bu dosyanın sisle alakalı olarak bir şekilde çalıştığını düşünüyor fakat kullanılmıyor ve öylece duruyorlar. Client, bu uyumsuz ve bozuk tga dosyasını her açılışta ram içine kopyalıyor ama asla kullanmıyor. Sanırım geliştiriciler sis yapısını bir doku aracılığı ile yapmayı hedeflemişler ve sonra Directx'in bunu zaten otomatik yaptığını fark edince bu kodları öylece bırakmışlar. Özetle; Metin2'deki sis Directx tarafından çizilir ve çalıştırılır, ve bu arta kalan kodlar ise zaman zaman baş ağrıtmaya devam eder.
Meraklısına: BU İŞLEM OYUNDAKİ MEVCUT SİSİ BOZMAZ / ETKİLEMEZ
Aşağıdaki kodlar güvenle kaldırabilirsiniz:
MapOutdoor.h (aşağıdakilerin hepsini bulun ve silin):
MapOutdoor.cpp (hepsini bulun ve silin):
Başrol oyuncu: fog.tga dosyası.
Pek çok kişi bu dosyanın sisle alakalı olarak bir şekilde çalıştığını düşünüyor fakat kullanılmıyor ve öylece duruyorlar. Client, bu uyumsuz ve bozuk tga dosyasını her açılışta ram içine kopyalıyor ama asla kullanmıyor. Sanırım geliştiriciler sis yapısını bir doku aracılığı ile yapmayı hedeflemişler ve sonra Directx'in bunu zaten otomatik yaptığını fark edince bu kodları öylece bırakmışlar. Özetle; Metin2'deki sis Directx tarafından çizilir ve çalıştırılır, ve bu arta kalan kodlar ise zaman zaman baş ağrıtmaya devam eder.
Meraklısına: BU İŞLEM OYUNDAKİ MEVCUT SİSİ BOZMAZ / ETKİLEMEZ
Aşağıdaki kodlar güvenle kaldırabilirsiniz:
MapOutdoor.h (aşağıdakilerin hepsini bulun ve silin):
C++:
//1
void SaveAlphaFogOperation();
void RestoreAlphaFogOperation();
//2
CGraphicImageInstance m_AlphaFogImageInstance;
D3DXMATRIX m_matAlphaFogTexture;
//3
void InitializeFog();
MapOutdoor.cpp (hepsini bulun ve silin):
C++:
void CMapOutdoor::InitializeFog()
{
memset (&m_matAlphaFogTexture, 0, sizeof (D3DXMATRIX));
m_matAlphaFogTexture._31 = -0.001f;
m_matAlphaFogTexture._41 = -7.0f;
m_matAlphaFogTexture._42 = 0.5f;
}
void CMapOutdoor::SaveAlphaFogOperation()
{
STATEMANAGER.SetTextureStageState (1, D3DTSS_COLORARG1, D3DTA_CURRENT);
STATEMANAGER.SetTextureStageState (1, D3DTSS_COLOROP, D3DTOP_SELECTARG1);
STATEMANAGER.SetTextureStageState (1, D3DTSS_ALPHAARG1, D3DTA_CURRENT);
STATEMANAGER.SetTextureStageState (1, D3DTSS_ALPHAARG2, D3DTA_TEXTURE);
STATEMANAGER.SetTextureStageState (1, D3DTSS_ALPHAOP, D3DTOP_MODULATE);
STATEMANAGER.SetTextureStageState (1, D3DTSS_TEXTURETRANSFORMFLAGS, D3DTTFF_COUNT2);
STATEMANAGER.SetTextureStageState (1, D3DTSS_TEXCOORDINDEX, D3DTSS_TCI_CAMERASPACEPOSITION);
STATEMANAGER.SetSamplerState (1, D3DSAMP_ADDRESSU, D3DTADDRESS_CLAMP);
STATEMANAGER.SetSamplerState (1, D3DSAMP_ADDRESSV, D3DTADDRESS_CLAMP);
STATEMANAGER.SetTransform (D3DTS_TEXTURE1, &m_matAlphaFogTexture);
STATEMANAGER.SaveRenderState (D3DRS_ALPHABLENDENABLE, TRUE);
STATEMANAGER.SetTexture (1, m_AlphaFogImageInstance.GetTexturePointer()->GetD3DTexture());
}
void CMapOutdoor::RestoreAlphaFogOperation()
{
STATEMANAGER.SetTextureStageState (1, D3DTSS_TEXTURETRANSFORMFLAGS, D3DTTFF_DISABLE);
STATEMANAGER.SetTextureStageState (1, D3DTSS_TEXCOORDINDEX, 1);
STATEMANAGER.RestoreRenderState (D3DRS_ALPHABLENDENABLE);
}
C++:
bool CMapOutdoor::Destroy()
{
[...]
m_AlphaFogImageInstance.Destroy(); // Sil
[...]
return true;
}
C++:
CMapOutdoor::CMapOutdoor()
{
// Bu iki satırı bulup silin.
[...]
CGraphicImage * pAlphaFogImage = (CGraphicImage*) CResourceManager::Instance().GetResourcePointer ("D:/ymir work/special/fog.tga");
[...]
m_AlphaFogImageInstance.SetImagePointer (pAlphaFogImage);
[...]
Initialize();
}
C++:
bool CMapOutdoor::Initialize()
{
[...]
InitializeFog(); // Silin
[...]
return true;
}