- Mesaj
- 4.038
- Çözümler
- 390
- Beğeni
- 4.159
- Puan
- 1.849
- Ticaret Puanı
- 0
Merhabalar, fix bana ait değil ancak şimdilik denenip onaylandı. Ben de dahil bu bug'ın farkında olanlar diğer platformlarda uzun zamandır bunun fixini arıyordu ve @rid nickli bir arkadaş bu fixi ücretsiz olarak yayınlamış. Bu bug yanılmıyorsam bütün fileslerde mevcut, yine de aşağıdaki açıklamalarla beraber test edebilirsiniz.
Kontrollere devam ediyorum, eğer bir sorun yakalarsam konu altından bildiririm. Sizler de fark ettiğiniz sorunları belirtebilirsiniz.
Öncelikle bugdan haberi olmayanlar için kısa bir özet geçeyim; görseli inceleyiniz.
Görseldeki render target sistemine sahip olanlar test edebilir. Karakterin eline +9 bir silah verin ve aynı silahın +0'ı envanterde olsun.
Envanterdeki +0 silahın üzerine gelindiğinde, eldeki +9 silahın specuları(parlaması) sönüyor.
Dipnot: Bu bug'ın render target sistemi ile alakası yoktur.
Eğer render target yoksa; 2 tane client açın ve iki karaktere giriş yapın. İki karakterin de elinde aynı silahın +9'u olsun.
Sonra iki karakterden birine aynı silahın +0ını giydirin. Diğer clientteki +9 silah takılı olan karakterin silahında da specular efekti sönecektir.
Bkz:
Gelelim fixe.
Client src/EterGrnLib/Material.cpp açın ve bulun:
Değiştirin:
Arayın:
İçinde bulun:
Değiştirin:
Client src/EterGrnLib/Material.h açın ve bulun ve silin:
Tekrar arayın:
Altına ekleyin:
Client src/EterGrnLib/ModelInstance.cpp açın ve bulun:
Aşağıdaki gibi ekleme yapın:
Bulun:
Altına ekleyin:
Client src/EterGrnLib/ModelInstance.h açın ve arayın:
Altına ekleyin:
Client src/EterGrnLib/ModelInstanceRender.cpp açın ve arayın:
İçinde bulun:
Altına ekleyin:
Build alın ve test edin.
Kaynak:
Kontrollere devam ediyorum, eğer bir sorun yakalarsam konu altından bildiririm. Sizler de fark ettiğiniz sorunları belirtebilirsiniz.
Öncelikle bugdan haberi olmayanlar için kısa bir özet geçeyim; görseli inceleyiniz.
Envanterdeki +0 silahın üzerine gelindiğinde, eldeki +9 silahın specuları(parlaması) sönüyor.
Dipnot: Bu bug'ın render target sistemi ile alakası yoktur.
Eğer render target yoksa; 2 tane client açın ve iki karaktere giriş yapın. İki karakterin de elinde aynı silahın +9'u olsun.
Sonra iki karakterden birine aynı silahın +0ını giydirin. Diğer clientteki +9 silah takılı olan karakterin silahında da specular efekti sönecektir.
Bkz:
Gelelim fixe.
Client src/EterGrnLib/Material.cpp açın ve bulun:
C++:
float CGrannyMaterial::__GetSpecularPower() const
{
return m_fSpecularPower;
}
Değiştirin:
C++:
float CGrannyMaterial::GetSpecularPower() const
{
return m_fSpecularPower;
}
Arayın:
C++:
void CGrannyMaterial::__ApplySpecularRenderState()
İçinde bulun:
C++:
STATEMANAGER.SetRenderState(D3DRS_TEXTUREFACTOR, D3DXCOLOR(g_fSpecularColor.r, g_fSpecularColor.g, g_fSpecularColor.b, __GetSpecularPower()));
C++:
STATEMANAGER.SetRenderState(D3DRS_TEXTUREFACTOR, D3DXCOLOR(g_fSpecularColor.r, g_fSpecularColor.g, g_fSpecularColor.b, GetSpecularPower()));
Client src/EterGrnLib/Material.h açın ve bulun ve silin:
C++:
float __GetSpecularPower() const;
C++:
LPDIRECT3DTEXTURE8 GetD3DTexture(int iStage) const;
C++:
float GetSpecularPower() const;
Client src/EterGrnLib/ModelInstance.cpp açın ve bulun:
C++:
void CGrannyModelInstance::SetMaterialData(const char* c_szImageName, const SMaterialData& c_rkMaterialData)
{
m_kMtrlPal.SetMaterialData(c_szImageName, c_rkMaterialData);
}
Aşağıdaki gibi ekleme yapın:
C++:
void CGrannyModelInstance::SetMaterialData(const char* c_szImageName, const SMaterialData& c_rkMaterialData)
{
m_kMtrlPal.SetMaterialData(c_szImageName, c_rkMaterialData);
material_data_ = c_rkMaterialData; //bu satırı ekleyin
}
Bulun:
C++:
void CGrannyModelInstance::__Initialize()
....
....
m_pgrnAni = NULL;
Altına ekleyin:
C++:
material_data_ = {};
Client src/EterGrnLib/ModelInstance.h açın ve arayın:
C++:
CGrannyModelInstance** m_ppkSkeletonInst;
Altına ekleyin:
C++:
SMaterialData material_data_;
Client src/EterGrnLib/ModelInstanceRender.cpp açın ve arayın:
C++:
void CGrannyModelInstance::RenderMeshNodeListWithOneTexture(CGrannyMesh::EType e
İçinde bulun:
C++:
CGrannyMaterial& rkMtrl=m_kMtrlPal.GetMaterialRef(pTriGroupNode->mtrlIndex);
Altına ekleyin:
C++:
if (!material_data_.pImage)
{
if (std::fabs(rkMtrl.GetSpecularPower() - material_data_.fSpecularPower) >= std::numeric_limits<float>::epsilon())
rkMtrl.SetSpecularInfo(material_data_.isSpecularEnable, material_data_.fSpecularPower, material_data_.bSphereMapIndex);
}
Build alın ve test edin.
Kaynak:
Linkleri görebilmek için
giriş yap veya kayıt ol.