Turkmmo Yönetiminde Terfi Alan Arkadaşlarımı Tebrik Ederim. Bu Güzel Fix Onlar İçin Gelsin. <3
Öncelikle bu düzeltmeyi eklemeden önce sorunun sizde var olup olmadığını kontrol ediniz. Ben kendi dosyalarımda denedim bende vardı ve bende düzeltmeyi ekledim.
Tanımlamalar tarafımca yapılmıştır.
Client Source/EterGrnLib\Material.cpp Açınız ve Aratınız:
Değiştirin:
Tekrar Aratınız:
Değiştirin:
Client Source\Client\EterGrnLib\Material.h Açınız ve Aratınız:
Altına Ekleyiniz:
Tekrar Aratınız:
Değiştiriniz:
Client Source\Client\EterGrnLib\ModelInstance.cpp Açınız ve Aratınız:
Altına Ekleyiniz:
Tekrar Aratınız:
Altına Ekleyiniz:
Client Source\Client\EterGrnLib\ModelInstance.h Açınız ve Aratınız:
Altına Ekleyiniz:
Client Source\Client\EterGrnLib\ModelInstanceRender.cpp Açınız ve Aratınız:
Altına Ekleyiniz:
Client Source\Client\UserInterface\Locale_inc.h Açınız ve Ekleyiniz:
Sorun Hakkında Video:
Bu Düzenleme TAUMP Adlı Kişiye Aittir.
Öncelikle bu düzeltmeyi eklemeden önce sorunun sizde var olup olmadığını kontrol ediniz. Ben kendi dosyalarımda denedim bende vardı ve bende düzeltmeyi ekledim.
Tanımlamalar tarafımca yapılmıştır.
Client Source/EterGrnLib\Material.cpp Açınız ve Aratınız:
Kod:
float CGrannyMaterial::__GetSpecularPower() const
Değiştirin:
Kod:
#if defined(ENABLE_SPECULAR_FIX) float CGrannyMaterial::GetSpecularPower() const { return m_fSpecularPower; } #else float CGrannyMaterial::__GetSpecularPower() const { return m_fSpecularPower; } #endif
Tekrar Aratınız:
Kod:
STATEMANAGER.SetRenderState(D3DRS_TEXTUREFACTOR, D3DXCOLOR(g_fSpecularColor.r, g_fSpecularColor.g, g_fSpecularColor.b, __GetSpecularPower()));
Değiştirin:
Kod:
#if defined(ENABLE_SPECULAR_FIX) STATEMANAGER.SetRenderState(D3DRS_TEXTUREFACTOR, D3DXCOLOR(g_fSpecularColor.r, g_fSpecularColor.g, g_fSpecularColor.b, GetSpecularPower())); #else STATEMANAGER.SetRenderState(D3DRS_TEXTUREFACTOR, D3DXCOLOR(g_fSpecularColor.r, g_fSpecularColor.g, g_fSpecularColor.b, __GetSpecularPower())); #endif
Client Source\Client\EterGrnLib\Material.h Açınız ve Aratınız:
Kod:
LPDIRECT3DTEXTURE8 GetD3DTexture(int iStage) const;
Altına Ekleyiniz:
Kod:
#if defined(ENABLE_SPECULAR_FIX) float GetSpecularPower() const; bool IsSpecularEnabled() const { return m_bSpecularEnable; } BYTE GetSphereMapIndex() const { return m_bSphereMapIndex; } #endif
Tekrar Aratınız:
Kod:
float __GetSpecularPower() const;
Değiştiriniz:
Kod:
#if !defined(ENABLE_SPECULAR_FIX) float __GetSpecularPower() const; //Warning/Uyarı : if !defined - EN: Won't be deleted TR: Silinmeyecek #endif
Client Source\Client\EterGrnLib\ModelInstance.cpp Açınız ve Aratınız:
Kod:
void CGrannyModelInstance::SetMaterialData(const char* c_szImageName, const SMaterialData& c_rkMaterialData) { m_kMtrlPal.SetMaterialData(c_szImageName, c_rkMaterialData);
Altına Ekleyiniz:
Kod:
#if defined(ENABLE_SPECULAR_FIX) material_data_ = c_rkMaterialData; #endif
Tekrar Aratınız:
Kod:
void CGrannyModelInstance::__Initialize() { if (m_pModel) { m_pModel->Release(); } m_pModel = NULL; mc_pParentInstance = NULL; m_iParentBoneIndex = 0; m_pgrnModelInstance = NULL; m_pgrnWorldPoseReal = NULL; m_ppkSkeletonInst = NULL; m_meshMatrices = NULL; m_pgrnCtrl = NULL; m_pgrnAni = NULL;
Altına Ekleyiniz:
Kod:
#if defined(ENABLE_SPECULAR_FIX) material_data_ = {}; #endif
Client Source\Client\EterGrnLib\ModelInstance.h Açınız ve Aratınız:
Kod:
CGrannyModelInstance** m_ppkSkeletonInst;
Altına Ekleyiniz:
Kod:
#if defined(ENABLE_SPECULAR_FIX) SMaterialData material_data_; #endif
Client Source\Client\EterGrnLib\ModelInstanceRender.cpp Açınız ve Aratınız:
Kod:
STATEMANAGER.SetIndices(lpd3dIdxBuf, vtxMeshBasePos); STATEMANAGER.SetTransform(D3DTS_WORLD, &m_meshMatrices[pMeshNode->iMesh]); const CGrannyMesh::TTriGroupNode* pTriGroupNode = pMesh->GetTriGroupNodeList(eMtrlType); int vtxCount = pMesh->GetVertexCount(); while (pTriGroupNode) { ms_faceCount += pTriGroupNode->triCount; CGrannyMaterial& rkMtrl=m_kMtrlPal.GetMaterialRef(pTriGroupNode->mtrlIndex);
Altına Ekleyiniz:
Kod:
#if defined(ENABLE_SPECULAR_FIX) 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); } #endif
Client Source\Client\UserInterface\Locale_inc.h Açınız ve Ekleyiniz:
Kod:
/*Fixed Client*/ #define ENABLE_SPECULAR_FIX //
Sorun Hakkında Video:
Bu Düzenleme TAUMP Adlı Kişiye Aittir.
Metin2 özel sunucu geliştirmelerinde C++ ile yazılmış sistemler arasında görsellik ve performansı artıran önemli düzeltmelerden birisi de Specular Fix'tir. Bu makalede C++ tabanlı Metin2 özel sunucularda specular efektlerinin nasıl düzeltileceği, neden önemli olduğu ve nasıl entegre edileceği hakkında detaylı bilgi vereceğiz.
Specular Fix Nedir?
Specular, 3 boyutlu grafiklerde ışığın yüzeylere yansımasını simüle eden bir efekt türüdür. Özellikle silahlar, zırhlar ve bazı objeler üzerinde parıltılar oluşmasını sağlar. Ancak Metin2 özel sunucularda kullanılan orijinal kaynak kodlarda bu efekt bazen eksik veya hatalı çalışabilir. Bu durumda specular fix olarak adlandırılan düzeltmeler devreye girer.
Neden Specular Fix Gerekir?
Metin2 özel sunucularında görsel kaliteyi artırmak isteyen geliştiriciler, oyuncuların deneyimini daha da iyi hale getirmek için bu tür detaylara dikkat etmelidir. Eksik çalışan specular efektleri, karakterlerin ekipmanlarının parlaklığını etkileyebilir. Bu da oyuncuların ekipman kalitelerini anlamasını zorlaştırabilir veya görsel olarak estetik olmayan bir duruma neden olabilir.
C++ Kaynak Kodda Specular Fix Uygulaması
C++ tabanlı Metin2 sunucu kaynak kodlarında specular düzeltmesi yapmak için genellikle game core dosyalarında değişiklik yapılması gerekir. Özellikle ItemInstance.cpp, EffectManager.cpp, GraphicThingInstance.cpp gibi dosyalarda specular rendering ile ilgili fonksiyonlar yeniden tanımlanır veya mevcut hatalar düzeltilir.
Fix Uygulama Adımları:
- Orijinal kaynak koddan specular rendering işlemini sağlayan fonksiyonlar incelenir.
- Hatalar tespit edilir ve düzeltmeler yapılır.
- Shader dosyaları (örneğin specular.fx) güncellenir.
- Client tarafında uiscript ve root dizininde gerekli ayarlamalar yapılır.
Python GUI ve Py Root Entegrasyonu
Metin2 özel sunucularında Python GUI kullanarak kullanıcı arayüzü geliştiricileri de specular efektlerinin doğru şekilde görüntülenmesini desteklemelidir. Py Root ve Pack sistemlerinde bu efektlerin doğru aktarılması için py dosyalarında da gerekli güncellemeler yapılmalıdır. Özellikle itemwnd.py gibi dosyalar specular efektlerinin arayüzde doğru yansıması için önemlidir.
Compile ve Test Süreci
Specular fix uygulandıktan sonra kaynak kodun tekrar derlenmesi (compile) gerekir. Derleme işlemi sırasında herhangi bir hata alınmaması için tüm dosya bağlantıları ve bağımlılıklar kontrol edilmelidir. Ardından test sunucusunda bu değişikliklerin doğru çalışıp çalışmadığı kontrol edilmelidir.
Martysama ve Topluluk Katkıları
Metin2 geliştirme topluluğunda özellikle martysama gibi isimler, kaynak kodların geliştirilmesinde ve bu tür düzeltmelerin paylaşılmasında önemli rol oynar. Geliştiriciler, forumlar üzerinden paylaşılan C++ sistemleri ve scriptlerden faydalanabilirler.
Sonuç
Specular fix, Metin2 özel sunucularında görsel kaliteyi ciddi şekilde artırabilecek küçük ama etkili bir düzeltmedir. C++ tabanlı geliştirme yapan herkesin bu konuya dikkat etmesi, hem sunucu kalitesini hem de oyuncu memnuniyetini artıracaktır. Bu fix ile sunucularınızda daha parlak, daha estetik bir görsellik elde edebilirsiniz.
Metin2 private server developments, one of the important visual and performance-enhancing fixes among C++-based systems is the Specular Fix. In this article, we will provide detailed information about how to fix specular effects in C++-based Metin2 private servers, why it is important, and how to integrate it.
What is Specular Fix?
Specular is a type of effect that simulates light reflection on surfaces in 3D graphics. It creates highlights on weapons, armors, and certain objects. However, in original source codes used in Metin2 private servers, this effect may sometimes work incorrectly or be missing. This is where fixes called specular fix come into play.
Why is Specular Fix Needed?
Developers aiming to improve visual quality in Metin2 private servers should pay attention to such details to enhance player experience. Incorrectly working specular effects can affect the shininess of character equipment, making it harder for players to recognize item quality or resulting in visually unappealing scenes.
Applying Specular Fix in C++ Source Code
To apply specular fixes in C++-based Metin2 server source codes, modifications are generally required in game core files. Specifically, functions related to specular rendering in files like ItemInstance.cpp, EffectManager.cpp, GraphicThingInstance.cpp are redefined or existing errors corrected.
Steps to Apply the Fix:
- Examine the functions responsible for specular rendering from the original source code.
- Identify errors and correct them.
- Update shader files (e.g., specular.fx).
- Perform necessary adjustments in client-side uiscript and root directories.
Python GUI and Py Root Integration
In Metin2 private servers, developers using Python GUI to create user interfaces must also support proper display of specular effects. Necessary updates must be made in py files to ensure correct transfer of these effects in Py Root and Pack systems. Files like itemwnd.py are especially important for correctly reflecting specular effects in the interface.
Compilation and Testing Process
After applying the Specular fix, the source code must be recompiled. To avoid any errors during compilation, all file connections and dependencies should be checked. Afterwards, whether these changes work correctly should be tested on a test server.
Martysama and Community Contributions
Within the Metin2 development community, names like martysama play a significant role in developing source codes and sharing fixes like these. Developers can benefit from C++ systems and scripts shared via forums.
Conclusion
Specular fix is a small but effective fix that can significantly improve visual quality in Metin2 private servers. Anyone doing C++-based development should pay attention to this topic, as it increases both server quality and player satisfaction. With this fix, you can achieve brighter, more aesthetic visuals on your servers.
