Herkese merhabalar
.
Konuya geçmeden önce evet buda önceden açıldı fakat araştırmam
Konu geçecek olursak. Bu mob scale nedir? Siz ejder pet eklediğinizde o koskocaman gelir :suspicious:. Bunu nasıl küçülteceğiz diye sorarsanız da işte bu mob scale ile :thumb:. Şimdi başlıkta saltanat tipi serverler için yazdım ama siz istediğiniz peti genede küçültebilirsiniz
.
Kodlara gelelim.
Client Sourcenizden EterGrnLib/ThingInstance.cpp Açın ve aratın.
kod bloğu tamamen aşağıda ki kodla değiştirilir.
tekrar aratın.
kod bloğunu aşağıda ki ile değiştirin.
Sonra Client dosyalarınız içinden /EterLib/GrpObjectInstance.cpp açın ve aratın
kod bloğunun sonuna aşağıda ki kodu ekleyin
tekrar aratın.
ve kod bloğunu aşağıda ki kodlar ile değiştirin.
tekrar aratın
kod bloğunun altına aşağıda ki kodu ekleyin
tekrar aratın ve aşağıda ki kod bloğunu bulun
altına aşağıda ki kodları ekleyin.
Client Sourcenizden EterLib/GrpObjectInstance.h Açın ve aratın.
altına aşağıda ki kodları ekleyin
tekrar aratın ve kod bloğunu bulun
altına aşağıda ki kodları ekleyin
Client Sourcenizder Client/UserInterface/InstanceBase.cpp açın ve aratın
altına aşağıda ki kodları ekleyin
Dipnot eğer yukarda ki kodda hata alırsanız şu kodu deneyin.
[/CENTER]
Ve bu kadar.
Kanıt:
Teşekkür ederim :rockon:. Sağlıcakla kalın
. Görüşmek dileğiyle :target:.
Metin2 Lobby
Metin2 özel sunucularında oyun deneyimini geliştirmek ve oyuncuların daha dengeli bir savaş ortamı yaşamasını sağlamak için birçok geliştirme yapılır. Bu sistemlerden biri de MobScale olarak bilinen ejderleri küçültme mekaniğidir. Bu sistem özellikle Saltanat tipi sunucularda büyük avantaj sağlar çünkü oyun içi kitle combatları sırasında devasa boyutlardaki ejderler hem görsel açıdan sorun yaratır hem de PvP esnasında performans düşüklüğüne neden olabilir. Bu yazıda C++ Client üzerinden MobScale sisteminin nasıl uygulanacağını ve hangi dosya düzenlemelerinin gerektiğini detaylıca inceleyeceğiz.
MobScale Nedir?
MobScale, Metin2 özel sunucularında kullanılan bir teknik sistemdir. Amacı ejder gibi büyük boyutlu canavarların oyun içindeki boyutlarını ayarlayarak daha küçük ve daha dengeli savaşlar yapılmasını sağlamaktır. Bu sayede hem oyun performansı artar hem de PvP ortamlarında dengesizlikler önlenir.
Neden MobScale Kullanılır?
Metin2 oyununda bazı ejder türleri oyun içi grafiksel olarak oldukça büyüktür. Özellikle Great Dragon, Blue Dragon veya Black Dragon gibi boss mobları, sahada fazla yer kaplayarak PvP esnasında görsel karmaşıklığa yol açabilir. Ayrıca bu büyük boyutlar nedeniyle sunucu tarafında rendering yükü artar. MobScale sistemi bu tür durumları minimize ederek daha stabil bir oyun ortamı sağlar.
C++ Client Tarafında Uygulama Adımları
MobScale sistemini C++ tabanlı bir client üzerinde uygulamak için öncelikle client-side dosyalarda bazı değişiklikler yapmanız gerekir. Genellikle bu işlem gr2 model dosyaları üzerinde boyut ayarı yapılarak gerçekleştirilir. Ancak daha gelişmiş bir uygulama için source code üzerinden dinamik olarak boyut ayarlamak da mümkündür.
1. Entity Sınıfında Boyut Ayarı
Client source kodunda bulunan entity sınıfında SetScale fonksiyonuna benzer bir yöntem ile belirli ID aralıklarındaki ejderlerin boyutları ayarlanabilir. Örneğin:
2. Client Config Dosyası
Bu tür ayarları daha esnek hale getirmek için config dosyasından da yönetilebilir. Örneğin userinterface/uisystem.py veya game.ini gibi dosyalara özel bir ayar eklenebilir:
Dikkat Edilmesi Gerekenler
- Bu tür değişiklikler sunucu-client senkronizasyonuna zarar verebilir. Oyuncular arasında farklı boyutlarda görünüyorsa hata vardır.
- Client-side değişiklikler sadece oynayan kişi tarafından görülür. Sunucu tarafında da desteklenmelidir.
- Bazı client modelleri gr2 formatında olmayabilir; bu durumda farklı çözümler geliştirilmelidir.
Sonuç
MobScale sistemi, Saltanat tipi Metin2 sunucularında oyun deneyimini ciddi anlamda iyileştirebilir. Görsel temizlik, performans artışı ve PvP dengesi açısından oldukça faydalıdır. Ancak doğru uygulanmadığında sunucu-client uyumsuzluklarına neden olabilir. Bu nedenle dikkatli ve test edilmiş sistemlerle entegre edilmelidir.
Metin2 Lobby olarak bizler, bu tarz gelişmiş sistemlerin nasıl çalıştığını ve uygulanacağını paylaşmaya devam ediyoruz.
Metin2 Lobby
In order to enhance the gaming experience on Metin2 private servers and provide players with a more balanced combat environment, many developments are made. One of these systems is the MobScale mechanism, which is known for reducing the size of dragons. This system offers significant advantages especially on Sultan-type servers, because the massive-sized dragons in-game can cause visual problems during mass combat and may also lead to performance drops during PvP. In this article, we will examine in detail how to implement the MobScale system via C++ Client and what file modifications are required.
What is MobScale?
MobScale is a technical system used on Metin2 private servers. Its purpose is to adjust the in-game sizes of large monsters such as dragons to create smaller and more balanced fights. This increases both game performance and prevents imbalances during PvP scenarios.
Why Use MobScale?
In Metin2, some dragon types are graphically very large in-game. Especially boss mobs like Great Dragon, Blue Dragon, or Black Dragon can cause visual clutter during PvP by occupying too much space on screen. Additionally, their large sizes increase rendering load on the server side. The MobScale system minimizes such issues and provides a more stable gaming environment.
Implementation Steps on C++ Client Side
To apply the MobScale system on a C++ based client, you first need to make certain changes in client-side files. Usually, this is done by adjusting the scale in the gr2 model files. However, a more advanced implementation allows dynamic scaling through source code.
1. Scale Setting in Entity Class
In the client source code, within the entity class, you can set the scale for specific mob IDs. For example:
2. Client Config File
To make such adjustments more flexible, you can manage them via a config file. For instance, special settings can be added to files like userinterface/uisystem.py or game.ini:
Important Considerations
- Such changes may cause desynchronization between server and client. If players see different sizes, there is an error.
- Client-side changes are only visible to the player. The server must also support the changes.
- Some client models may not be in gr2 format; in that case, alternative solutions must be developed.
Conclusion
The MobScale system can significantly improve the gameplay experience on Sultan-type Metin2 servers. It offers benefits in terms of visual clarity, performance improvement, and PvP balance. However, if implemented incorrectly, it may cause server-client compatibility issues. Therefore, it should be integrated carefully and with tested systems.
Metin2 Lobby, as always, continues to share how such advanced systems work and how they are implemented.
Konuya geçmeden önce evet buda önceden açıldı fakat araştırmam
Ziyaretçiler için gizlenmiş link,görmek için üye olmalısınız!
Giriş yap veya üye ol.
ve
Ziyaretçiler için gizlenmiş link,görmek için üye olmalısınız!
Giriş yap veya üye ol.
konular biri editlenmiş biri ise de virüs olduğu için kapatılmış bulunmakta. Eğer benim görmediğim bir konu varsa konu linki verilip kapatılabilir.Konu geçecek olursak. Bu mob scale nedir? Siz ejder pet eklediğinizde o koskocaman gelir :suspicious:. Bunu nasıl küçülteceğiz diye sorarsanız da işte bu mob scale ile :thumb:. Şimdi başlıkta saltanat tipi serverler için yazdım ama siz istediğiniz peti genede küçültebilirsiniz
Kodlara gelelim.
Client Sourcenizden EterGrnLib/ThingInstance.cpp Açın ve aratın.
Kod:
void CGraphicThingInstance::DeformNoSkin()
kod bloğu tamamen aşağıda ki kodla değiştirilir.
Kod:
void CGraphicThingInstance::DeformNoSkin() { m_bUpdated = true; for (std::vector<CGrannyLODController*>::size_type i = 0; i != m_LODControllerVector.size(); i++) { CGrannyLODController* pkLOD = m_LODControllerVector[i]; if (pkLOD->isModelInstance()) pkLOD->DeformNoSkin(&m_matAbsoluteTrans); } }
tekrar aratın.
Kod:
void CGraphicThingInstance::OnDeform()
kod bloğunu aşağıda ki ile değiştirin.
Kod:
void CGraphicThingInstance::OnDeform() { m_bUpdated = true; for (std::vector<CGrannyLODController*>::size_type i = 0; i != m_LODControllerVector.size(); i++) { CGrannyLODController* pkLOD = m_LODControllerVector[i]; if (pkLOD->isModelInstance()) pkLOD->Deform(&m_matAbsoluteTrans); } }
Sonra Client dosyalarınız içinden /EterLib/GrpObjectInstance.cpp açın ve aratın
Kod:
m_v3Position.x = m_v3Position.y = m_v3Position.z = 0.0f; m_v3Scale.x = m_v3Scale.y = m_v3Scale.z = 0.0f; //m_fRotation = 0.0f; m_fYaw = m_fPitch = m_fRoll = 0.0f; D3DXMatrixIdentity(&m_worldMatrix);
kod bloğunun sonuna aşağıda ki kodu ekleyin
Kod:
m_vecScalePos.x = m_vecScalePos.y = m_vecScalePos.z = 0.0f; m_vecScaleNew.x = m_vecScaleNew.y = m_vecScaleNew.z = 0.0f; D3DXMatrixIdentity(&m_matAbsoluteTrans); D3DXMatrixIdentity(&m_matScale); D3DXMatrixIdentity(&m_matPositon);
tekrar aratın.
Kod:
void CGraphicObjectInstance::Transform()
ve kod bloğunu aşağıda ki kodlar ile değiştirin.
Kod:
void CGraphicObjectInstance::Transform() { D3DXMATRIX temp; D3DXMatrixMultiply(&temp, &m_matPositon, &m_mRotation); m_worldMatrix = temp; m_worldMatrix._41 += m_v3Position.x; m_worldMatrix._42 += m_v3Position.y; m_worldMatrix._43 += m_v3Position.z; D3DXMatrixMultiply(&temp, &m_matPositon, &m_matScale); D3DXMATRIX temp2; D3DXMatrixMultiply(&temp2, &temp, &m_mRotation); m_matAbsoluteTrans = temp2; m_matAbsoluteTrans._41 = m_vecScalePos.x + m_v3Position.x + m_matAbsoluteTrans._41; m_matAbsoluteTrans._42 = m_vecScalePos.y + m_v3Position.y + m_matAbsoluteTrans._42; m_matAbsoluteTrans._43 = m_vecScalePos.z + m_v3Position.z + m_matAbsoluteTrans._43; }
tekrar aratın
Kod:
void CGraphicObjectInstance::SetScale(float x, float y, float z) { m_v3Scale.x = x; m_v3Scale.y = y; m_v3Scale.z = z; }
kod bloğunun altına aşağıda ki kodu ekleyin
Kod:
void CGraphicObjectInstance::SetScaleNew(float x, float y, float z) { m_vecScaleNew.x = x; m_vecScaleNew.y = y; m_vecScaleNew.z = z; D3DXMatrixScaling(&m_matScale, x, y, z); } void CGraphicObjectInstance::SetScaleNew(const D3DXVECTOR3 & newscale) { m_vecScaleNew = newscale; D3DXMatrixScaling(&m_matScale, m_vecScaleNew.x, m_vecScaleNew.y, m_vecScaleNew.z); } void CGraphicObjectInstance::SetScalePosition(float x, float y, float z) { m_vecScalePos.x = x; m_vecScalePos.y = y; m_vecScalePos.z = z; } void CGraphicObjectInstance::SetScalePosition(const D3DXVECTOR3 & newposition) { m_vecScalePos = newposition; }
tekrar aratın ve aşağıda ki kod bloğunu bulun
Kod:
m_v3Position.x = m_v3Position.y = m_v3Position.z = 0.0f; m_v3Scale.x = m_v3Scale.y = m_v3Scale.z = 0.0f; m_fYaw = m_fPitch = m_fRoll = 0.0f; D3DXMatrixIdentity(&m_worldMatrix); D3DXMatrixIdentity(&m_mRotation);
altına aşağıda ki kodları ekleyin.
Kod:
m_vecScalePos.x = m_vecScalePos.y = m_vecScalePos.z = 0.0f; m_vecScaleNew.x = m_vecScaleNew.y = m_vecScaleNew.z = 0.0f; D3DXMatrixIdentity(&m_matAbsoluteTrans); D3DXMatrixIdentity(&m_matScale); D3DXMatrixIdentity(&m_matPositon);
Client Sourcenizden EterLib/GrpObjectInstance.h Açın ve aratın.
Kod:
void SetRotationQuaternion(const D3DXQUATERNION &q); void SetRotationMatrix(const D3DXMATRIX & m);
altına aşağıda ki kodları ekleyin
Kod:
void SetScaleNew(float x, float y, float z); void SetScaleNew(const D3DXVECTOR3 & newscale); void SetScalePosition(float x, float y, float z); void SetScalePosition(const D3DXVECTOR3 & newposition);
tekrar aratın ve kod bloğunu bulun
Kod:
// Bounding Box D3DXVECTOR4 m_v4TBBox[8]; D3DXVECTOR3 m_v3TBBoxMin, m_v3TBBoxMax; D3DXVECTOR3 m_v3BBoxMin, m_v3BBoxMax; // Portal BYTE m_abyPortalID[PORTAL_ID_MAX_NUM];
altına aşağıda ki kodları ekleyin
Kod:
D3DXVECTOR3 m_vecScalePos; D3DXVECTOR3 m_vecScaleNew; D3DXMATRIX m_matAbsoluteTrans; D3DXMATRIX m_matScale; D3DXMATRIX m_matPositon;
Client Sourcenizder Client/UserInterface/InstanceBase.cpp açın ve aratın
Kod:
SetPKMode(c_rkCreateData.m_byPKMode); SetMoveSpeed(c_rkCreateData.m_dwMovSpd); SetAttackSpeed(c_rkCreateData.m_dwAtkSpd);
altına aşağıda ki kodları ekleyin
Kod:
if (m_dwRace == 34030) //kendi pet kodunuzu yazın { float scale = c_rkCreateData.m_dwLevel * 0.005f + 0.40f; m_GraphicThingInstance.SetScaleNew(scale, scale, scale); } else if (m_dwRace == 34031) //kendi pet kodunuzu yazın { float scale = c_rkCreateData.m_dwLevel * 0.005f + 0.75f; m_GraphicThingInstance.SetScaleNew(scale, scale, scale); } else if (m_dwRace == 34032) //kendi pet kodunuzu yazın { float scale = c_rkCreateData.m_dwLevel * 0.005f + 0.50f; m_GraphicThingInstance.SetScaleNew(scale, scale, scale); } else m_GraphicThingInstance.SetScaleNew(1.0f,1.0f,1.0f); // NOTE : Dress 를 입고 있으면 Alpha 를 넣지 않는다. if (!IsWearingDress()) { // NOTE : 반드시 Affect 셋팅 윗쪽에 있어야 함 m_GraphicThingInstance.SetAlphaValue(0.0f); m_GraphicThingInstance.BlendAlphaValue(1.0f, 0.5f); }
Dipnot eğer yukarda ki kodda hata alırsanız şu kodu deneyin.
Kod:
if(m_dwRace == 34031 ||m_dwRace == 34032 || m_dwRace == 34049 ||m_dwRace == 34053){ float scale = c_rkCreateData.m_dwLevel * 0.005f + 0.75f; m_GraphicThingInstance.SetScaleNew(5, 5, 5); } else m_GraphicThingInstance.SetScaleNew(1.0f,1.0f,1.0f);
Ve bu kadar.
Kanıt:
Teşekkür ederim :rockon:. Sağlıcakla kalın
Metin2 Lobby
Metin2 özel sunucularında oyun deneyimini geliştirmek ve oyuncuların daha dengeli bir savaş ortamı yaşamasını sağlamak için birçok geliştirme yapılır. Bu sistemlerden biri de MobScale olarak bilinen ejderleri küçültme mekaniğidir. Bu sistem özellikle Saltanat tipi sunucularda büyük avantaj sağlar çünkü oyun içi kitle combatları sırasında devasa boyutlardaki ejderler hem görsel açıdan sorun yaratır hem de PvP esnasında performans düşüklüğüne neden olabilir. Bu yazıda C++ Client üzerinden MobScale sisteminin nasıl uygulanacağını ve hangi dosya düzenlemelerinin gerektiğini detaylıca inceleyeceğiz.
MobScale Nedir?
MobScale, Metin2 özel sunucularında kullanılan bir teknik sistemdir. Amacı ejder gibi büyük boyutlu canavarların oyun içindeki boyutlarını ayarlayarak daha küçük ve daha dengeli savaşlar yapılmasını sağlamaktır. Bu sayede hem oyun performansı artar hem de PvP ortamlarında dengesizlikler önlenir.
Neden MobScale Kullanılır?
Metin2 oyununda bazı ejder türleri oyun içi grafiksel olarak oldukça büyüktür. Özellikle Great Dragon, Blue Dragon veya Black Dragon gibi boss mobları, sahada fazla yer kaplayarak PvP esnasında görsel karmaşıklığa yol açabilir. Ayrıca bu büyük boyutlar nedeniyle sunucu tarafında rendering yükü artar. MobScale sistemi bu tür durumları minimize ederek daha stabil bir oyun ortamı sağlar.
C++ Client Tarafında Uygulama Adımları
MobScale sistemini C++ tabanlı bir client üzerinde uygulamak için öncelikle client-side dosyalarda bazı değişiklikler yapmanız gerekir. Genellikle bu işlem gr2 model dosyaları üzerinde boyut ayarı yapılarak gerçekleştirilir. Ancak daha gelişmiş bir uygulama için source code üzerinden dinamik olarak boyut ayarlamak da mümkündür.
1. Entity Sınıfında Boyut Ayarı
Client source kodunda bulunan entity sınıfında SetScale fonksiyonuna benzer bir yöntem ile belirli ID aralıklarındaki ejderlerin boyutları ayarlanabilir. Örneğin:
Kod:
if (dwVnum >= DRAGON_MIN_VNUM && dwVnum <= DRAGON_MAX_VNUM)[BR][/BR]{[BR][/BR] SetScale(0.7f); // Ejderlerin boyutunu %70'e düşür[BR][/BR]}
2. Client Config Dosyası
Bu tür ayarları daha esnek hale getirmek için config dosyasından da yönetilebilir. Örneğin userinterface/uisystem.py veya game.ini gibi dosyalara özel bir ayar eklenebilir:
Kod:
MOB_SCALE_ENABLED = TRUE[BR][/BR]DRAGON_SCALE_FACTOR = 0.7
Dikkat Edilmesi Gerekenler
- Bu tür değişiklikler sunucu-client senkronizasyonuna zarar verebilir. Oyuncular arasında farklı boyutlarda görünüyorsa hata vardır.
- Client-side değişiklikler sadece oynayan kişi tarafından görülür. Sunucu tarafında da desteklenmelidir.
- Bazı client modelleri gr2 formatında olmayabilir; bu durumda farklı çözümler geliştirilmelidir.
Sonuç
MobScale sistemi, Saltanat tipi Metin2 sunucularında oyun deneyimini ciddi anlamda iyileştirebilir. Görsel temizlik, performans artışı ve PvP dengesi açısından oldukça faydalıdır. Ancak doğru uygulanmadığında sunucu-client uyumsuzluklarına neden olabilir. Bu nedenle dikkatli ve test edilmiş sistemlerle entegre edilmelidir.
Metin2 Lobby olarak bizler, bu tarz gelişmiş sistemlerin nasıl çalıştığını ve uygulanacağını paylaşmaya devam ediyoruz.
Metin2 Lobby
In order to enhance the gaming experience on Metin2 private servers and provide players with a more balanced combat environment, many developments are made. One of these systems is the MobScale mechanism, which is known for reducing the size of dragons. This system offers significant advantages especially on Sultan-type servers, because the massive-sized dragons in-game can cause visual problems during mass combat and may also lead to performance drops during PvP. In this article, we will examine in detail how to implement the MobScale system via C++ Client and what file modifications are required.
What is MobScale?
MobScale is a technical system used on Metin2 private servers. Its purpose is to adjust the in-game sizes of large monsters such as dragons to create smaller and more balanced fights. This increases both game performance and prevents imbalances during PvP scenarios.
Why Use MobScale?
In Metin2, some dragon types are graphically very large in-game. Especially boss mobs like Great Dragon, Blue Dragon, or Black Dragon can cause visual clutter during PvP by occupying too much space on screen. Additionally, their large sizes increase rendering load on the server side. The MobScale system minimizes such issues and provides a more stable gaming environment.
Implementation Steps on C++ Client Side
To apply the MobScale system on a C++ based client, you first need to make certain changes in client-side files. Usually, this is done by adjusting the scale in the gr2 model files. However, a more advanced implementation allows dynamic scaling through source code.
1. Scale Setting in Entity Class
In the client source code, within the entity class, you can set the scale for specific mob IDs. For example:
Kod:
if (dwVnum >= DRAGON_MIN_VNUM && dwVnum <= DRAGON_MAX_VNUM)[BR][/BR]{[BR][/BR] SetScale(0.7f); // Reduce dragon size to 70%[BR][/BR]}
2. Client Config File
To make such adjustments more flexible, you can manage them via a config file. For instance, special settings can be added to files like userinterface/uisystem.py or game.ini:
Kod:
MOB_SCALE_ENABLED = TRUE[BR][/BR]DRAGON_SCALE_FACTOR = 0.7
Important Considerations
- Such changes may cause desynchronization between server and client. If players see different sizes, there is an error.
- Client-side changes are only visible to the player. The server must also support the changes.
- Some client models may not be in gr2 format; in that case, alternative solutions must be developed.
Conclusion
The MobScale system can significantly improve the gameplay experience on Sultan-type Metin2 servers. It offers benefits in terms of visual clarity, performance improvement, and PvP balance. However, if implemented incorrectly, it may cause server-client compatibility issues. Therefore, it should be integrated carefully and with tested systems.
Metin2 Lobby, as always, continues to share how such advanced systems work and how they are implemented.
