Neyi Düzelteceğiz ?
Biliyorsunuz ki +9 parıltılı itemlerle kamuflaj bastığınız zaman görünmez olmanıza rağmen itemlerin parıltısı gözükür veya dolaştığınız zaman yerde ayak izleriniz belli olur bu sayede diğer oyuncular sizi görebilir ve mini haritada da açık bir şekilde gözükürsünüz, Metin2'nin 17.5 resmi güncellemesinde bu sorun çözüldü, işte çözümü.Bu arada paylaşıldıysa kusura bakmayın forumda aradım fakat bulamadım o yüzden paylaşıyorum.
Düzeltme Yapıldıktan Sonra ;
InstanceBase.cpp açın ve arayın ;
Bununla değiştirin ;
Fonksiyonu Arayın ;
Fonksiyonun içinde Bulun ;
Altına Ekleyin ;
InstanceBaseEffect.cpp içinde şunu arayın ;
Bununla değiştirin ;
Just4Metin'den alıntıdır.
Biliyorsunuz ki +9 parıltılı itemlerle kamuflaj bastığınız zaman görünmez olmanıza rağmen itemlerin parıltısı gözükür veya dolaştığınız zaman yerde ayak izleriniz belli olur bu sayede diğer oyuncular sizi görebilir ve mini haritada da açık bir şekilde gözükürsünüz, Metin2'nin 17.5 resmi güncellemesinde bu sorun çözüldü, işte çözümü.Bu arada paylaşıldıysa kusura bakmayın forumda aradım fakat bulamadım o yüzden paylaşıyorum.
Düzeltme Yapıldıktan Sonra ;
InstanceBase.cpp açın ve arayın ;
Kod:
BOOL CInstanceBase::IsInvisibility() { if (IsAffect(AFFECT_INVISIBILITY)) return true; return false; }
Bununla değiştirin ;
Kod:
BOOL CInstanceBase::IsInvisibility() { if (IsAffect(AFFECT_INVISIBILITY) || IsAffect(AFFECT_EUNHYEONG)) return true; return false; }
Fonksiyonu Arayın ;
Kod:
void CInstanceBase::Render() {
Fonksiyonun içinde Bulun ;
Kod:
m_GraphicThingInstance.Render();
Altına Ekleyin ;
Kod:
CPythonCharacterManager & rkChrMgr = CPythonCharacterManager::Instance(); for (auto ptr = rkChrMgr.CharacterInstanceBegin(); ptr != rkChrMgr.CharacterInstanceEnd(); ++ptr) { CInstanceBase * pkInstEach = *ptr; if (pkInstEach) { if (pkInstEach->IsAffect(AFFECT_EUNHYEONG) || pkInstEach->IsAffect(AFFECT_INVISIBILITY)) { if (CPythonPlayer::Instance().IsMainCharacterIndex(pkInstEach->GetVirtualID())) continue; pkInstEach->m_GraphicThingInstance.HideAllAttachingEffect(); } } }
InstanceBaseEffect.cpp içinde şunu arayın ;
Kod:
void CInstanceBase::__SetAffect(UINT eAffect, bool isVisible) { Inside the function search: case AFFECT_INVISIBILITY: if (isVisible) { m_GraphicThingInstance.ClearAttachingEffect(); __EffectContainer_Destroy(); DetachTextTail(); } else { m_GraphicThingInstance.BlendAlphaValue(1.0f, 1.0f); AttachTextTail(); RefreshTextTail(); } return; break; }
Bununla değiştirin ;
Kod:
case AFFECT_INVISIBILITY: if (isVisible) { // m_GraphicThingInstance.ClearAttachingEffect(); // __EffectContainer_Destroy(); // DetachTextTail(); m_GraphicThingInstance.HideAllAttachingEffect(); } else { m_GraphicThingInstance.BlendAlphaValue(1.0f, 1.0f); m_GraphicThingInstance.ShowAllAttachingEffect(); // AttachTextTail(); // RefreshTextTail(); } return; break;
Just4Metin'den alıntıdır.
C++ Ninja Kamuflaj Düzeltmesi Nedir?
Metin2 özel sunucularında PvP oyun deneyimini artırmak için geliştirilen sistemlerden birisi olan Ninja sınıfının Kamuflaj yeteneği, bazı durumlarda hatalı çalışabilmektedir. Bu hata, hem oyun içi dengede hem de oyuncu deneyiminde ciddi bir soruna neden olabilir. Ninja sınıfı, gizlenme mekaniğiyle rakiplerini şaşırtarak avantaj sağlama imkanı sunar. Ancak Kamuflaj sisteminin doğru çalışmaması, bu sınıfın ana yeteneğini işe yaramaz hale getirebilir. Bu yazıda, C++ tabanlı Metin2 sunucularda Ninja Kamuflaj düzeltmesi nasıl yapılır, hangi dosyalar üzerinde değişiklikler yapılmalıdır, detaylı olarak ele alacağız.
Ninja Sınıfının Kamuflaj Yeteneği
Ninja sınıfı, Metin2'de gizlenme ve aniden saldırı yapabilme becerisine sahiptir. Bu sınıfın en önemli özelliklerinden birisi olan Kamuflaj, oyuncunun belirli bir süreliğine görünmez olması ve bu sayede rakip oyuncular tarafından görülmemesi anlamına gelir. Ancak bazı özel sunucularda bu yetenek, özellikle PvP savaşları sırasında eksik veya yanlış çalışabiliyor. Örneğin, kamufle esnasında diğer oyuncular tarafından görülebilir olunması ya da kamufle modunun tamamen devre dışı kalması gibi hatalarla karşılaşılabilir.
Hatanın Kaynağı Nedir?[/BX]
Ninja Kamuflaj sistemi, hem client (istemci) tarafında hem de server (sunucu) tarafında çalışır. Hata genellikle game_src dosyalarındaki fonksiyonlarda bulunur. Özellikle char.cpp ve char.h gibi dosyalarda Kamuflaj ile ilgili işlemler tanımlıdır. Bu dosyalarda bulunan Kamuflaj fonksiyonları, doğru şekilde tetiklenmiyorsa ya da paket iletimi eksikse, Kamuflaj sistemi aktif olmayabilir.
Düzeltme Adımları
1. char.cpp Dosyasında Gerekli Değişiklikler:
Bu dosya içerisinde void CHARACTER::SetAffect(AFFECT_TYPES type, BYTE applyOn, int point, DWORD duration, bool bUpdate) fonksiyonunda Kamuflaj kontrolü yapılmaktadır. Burada AFFECT_INVISIBILITY türünde bir etki uygulanıyorsa, doğru şekilde görünüm güncellemesi yapılmalıdır. Eksik olan kısım genellikle görünüm paketlerinin gönderilmemesidir.
2. Packet Oluşturma ve Gönderme:
Kamuflaj durumu aktif edildiğinde, diğer oyuncuların karakterin görünümünü güncellemesi gerekir. Bu işlem için PeerManager::instance().Send_Usable_Item_Destroy_Self(ch, ch->GetVID()) gibi fonksiyonlar kullanılabilir. Bu sayede kamufle durumu başlatıldığında diğer oyuncular karakteri göremez hale gelir.
3. Client Tarafında Kontroller:
Client tarafında da Kamuflaj efekti doğru şekilde işlenmelidir. Uiscript ve py_root dosyalarında bulunan gizlenme efekt kontrolü, doğru şekilde Kamuflaj durumunu yansıtmalıdır. Eğer client bu durumu doğru algılamıyorsa, görünüm hataları oluşabilir.
C++ ile Geliştirme ve Test
Metin2 özel sunucularında C++ tabanlı geliştirme yaparken, Ninja Kamuflaj sisteminin test edilmesi önemlidir. Geliştirme sürecinde kullanılan derleme araçları (Metin2 Compile) ile yapılan değişikliklerin derlenmesi ve sunucuya yüklenmesi gerekir. Test sırasında farklı karakterlerle PvP yaparak Kamuflaj yeteneğinin doğru çalışıp çalışmadığı gözlemlenmelidir.
Sonuç
Ninja sınıfı, Metin2 PvP oyunlarında stratejik bir öneme sahiptir. Kamuflaj sisteminin doğru çalışması, hem oyun dengesini korur hem de oyuncu memnuniyetini artırır. C++ seviyesinde yapılan bu tür sistemsel düzenlemeler, Metin2 özel sunucularında profesyonel bir oyun deneyimi sunmayı hedefleyen geliştiriciler için oldukça değerlidir. Ninja Kamuflaj düzeltmesi gibi küçük ama etkili değişiklikler, oyunun kalitesini ciddi şekilde artırabilir.
What is C++ Ninja Camouflage Fix?
In Metin2 private servers, the Ninja class's Camouflage ability, designed to enhance the PvP experience, can sometimes malfunction. This error can cause significant issues in both game balance and player experience. The Ninja class offers the ability to surprise enemies by hiding. However, if the Camouflage system doesn't work correctly, it can render this class's main ability useless. In this article, we will examine in detail how to fix Ninja Camouflage in C++-based Metin2 servers, which files need modifications, and more.
The Ninja Class's Camouflage Ability
The Ninja class in Metin2 allows players to hide and launch surprise attacks. One of its key abilities, Camouflage, enables the player to become invisible for a limited time, preventing other players from seeing them. However, on some private servers, this ability may fail during PvP battles. For example, the player might remain visible even while in camouflage mode, or the camouflage function might not activate at all.
Where Does the Error Originate?
The Ninja Camouflage system operates on both the client and server sides. The error typically occurs in functions within the game_src files. Specifically, the files char.cpp and char.h contain functions related to Camouflage. If the Camouflage functions are not triggered correctly or packet transmissions are incomplete, the Camouflage system may not function properly.
Fix Steps
1. Modifications in char.cpp:
In this file, the function void CHARACTER::SetAffect(AFFECT_TYPES type, BYTE applyOn, int point, DWORD duration, bool bUpdate) handles Camouflage checks. When an effect of type AFFECT_INVISIBILITY is applied, visual updates must be handled correctly. Missing parts often involve failure to send appearance packets.
2. Creating and Sending Packets:
When the Camouflage status is activated, other players must update their view of the character. Functions like PeerManager::instance().Send_Usable_Item_Destroy_Self(ch, ch->GetVID()) can be used for this purpose. This ensures that other players cannot see the character once camouflage is activated.
3. Client-Side Checks:
Camouflage effects must also be processed correctly on the client side. Scripts located in uiscript and py_root files must reflect the Camouflage state accurately. If the client does not recognize the state properly, visual errors may occur.
C++ Development and Testing
When developing Metin2 private servers with C++, testing the Ninja Camouflage system is crucial. Changes made must be compiled and uploaded to the server using tools such as Metin2 Compile. During testing, engaging in PvP with different characters helps confirm whether the Camouflage ability works correctly.
Conclusion
The Ninja class holds strategic importance in Metin2 PvP gameplay. Ensuring the Camouflage system works correctly maintains game balance and enhances player satisfaction. System-level fixes like Ninja Camouflage corrections using C++ can significantly improve the gaming experience for developers aiming for professional-grade private servers. Small but impactful fixes like these can greatly enhance the overall quality of the game.
