Merhabalar arkadaşlar bir tanıdığım sorunu bana iletti internette araştırdığımda aşağıdaki çözümü buldum, her filesta karşılaşılan bir durum olmayabilir.
Öncelikle sorunun net anlaşılması için şu videoya göz atabilirsiniz:
Fix için:
ClientSRC/UserInterface/PythonNetworkStreamPhaseGame.cpp bu dosyanın içindeki şu fonksiyonu bulun:
bool CPythonNetworkStream::RecvChangeSkillGroupPacket()
Bu fonksiyonun içinde şu satırı bulun:
CPythonPlayer::Instance().NEW_ClearSkillData();
Şu şekilde değiştirin:
CPythonPlayer::Instance().NEW_ClearSkillData(true);
dev'deki ondry nickli arkadaşın çözümüdür, saygılar kendisine.
Art Arda Skill Sıfırlayınca Oluşan Minik Problem Fixi
Metin2 özel sunucularında karşılaşılan yaygın sorunlardan birisi, oyuncuların skill sıfırlama işlemi yaptıktan sonra bekleme süresinin doğru şekilde işlenmemesi durumudur. Bu durum, özellikle PvP sistemlerinde ciddi dengesizliklere neden olabilir. Bu yazıda, art arda skill sıfırlama işlemi yapıldığında ortaya çıkabilecek küçük ama etkili bir problemi nasıl düzelteceğimizi ele alacağız.
Problem Nedir?
Oyuncu, bir kez skill sıfırlama işlemi gerçekleştirdikten sonra belirli bir süre beklemek zorundadır. Ancak bazı sistemlerde bu bekleme süresi, sıfırlama yapıldıktan sonra hemen başlamaz veya sıfırlama işlemi tekrarlandığında eski bekleme süresi devam eder. Bu da oyuncuların bekleme süresini atlatmak amacıyla birden fazla sıfırlama yaparak avantaj elde etmesine neden olabilir.
Fix Nasıl Uygulanır?
Bu hatayı düzeltmek için öncelikle ilgili C++ dosyasında bulunan skill sıfırlama fonksiyonuna göz atmalıyız. Genellikle bu işlem game core üzerinde tanımlanmıştır. Burada dikkat edilmesi gereken en önemli husus, sıfırlama yapıldığında mevcut bekleme süresinin sıfırlanmasıdır. Örneğin:
void ResetSkillTree(){
ClearCoolTime();
SetLastResetTime(GetCurrentTime());
}
Yukarıdaki örnekte, ClearCoolTime() fonksiyonu çağrıldığında tüm bekleme süreleri temizlenmeli ve yeni bir başlangıç zamanı atanmalıdır. Eğer bu süreç doğru yönetilmezse, oyuncu sıfırlama sonrası hala bekleme süresiyle karşılaşabilir ya da süreyi atlayabilir.
Sunucu Taraflı Kontroller
Sunucu tarafında bu tip kontroller için DB core üzerinden de loglama yapılabilir. Her sıfırlama işlemi veritabanına yazılır ve aynı gün içinde birden fazla sıfırlama yapılmışsa, bekleme süresi otomatik olarak uzatılabilir. Bu sayede hileli kullanım engellenmiş olur.
Python Tarafında Kontrol
Eğer sıfırlama işlemi bir GUI üzerinden yapılıyorsa, örneğin PyGUI kullanılıyorsa, burada da benzer kontroller yapılmalıdır. Kullanıcıya bekleme süresi gösterilmeli ve bu süre dolmadan tekrar sıfırlama yapılamamalıdır. Ayrıca backend tarafında bu kontrolü yapmak için py root[/COORD] üzerinde bir kontrol sistemi kurulmalıdır.
Sonuç
Art arda skill sıfırlama işlemleri sırasında oluşabilecek minik problemler, uzun vadede büyük dengesizliklere neden olabilir. Bu nedenle hem C++ hem de Python tabanlı sistemlerde bu tür kontrollerin sağlanması, Metin2 özel sunucularının kalitesini artırmak açısından kritik öneme sahiptir. Bu fix ile oyuncular daha adil bir oyun ortamında mücadele edebileceklerdir.
Fix for the Minor Issue Caused by Consecutive Skill Resets
One of the common issues encountered in Metin2 private servers is the incorrect handling of cooldown periods after players reset their skill trees. This issue can cause serious imbalances especially in PvP systems. In this article, we will discuss how to fix a small but impactful problem that occurs when resetting skills multiple times in succession.
What Is the Problem?
After a player resets their skill tree once, they are supposed to wait a certain amount of time before another reset. However, in some systems, the cooldown period either does not start immediately after the reset or continues from where it left off if the reset is repeated. This allows players to exploit the reset process multiple times to bypass the waiting time.
How to Apply the Fix?
To fix this bug, we first need to examine the skill reset function in the relevant C++ file. Usually, this operation is defined within the game core. The most important aspect here is ensuring that the current cooldown is cleared upon each reset. For example:
void ResetSkillTree(){
ClearCoolTime();
SetLastResetTime(GetCurrentTime());
}
In the above example, calling ClearCoolTime() should clear all cooldowns and set a new starting time. If this process is not handled correctly, players may still face remaining cooldown or even bypass it entirely.
Server-Side Checks
Logging via the DB core can also be implemented for such checks on the server side. Each reset action can be logged into the database, and if multiple resets occur on the same day, the cooldown duration can be extended automatically, preventing exploitation.
Control in Python
If the reset is performed through a GUI, such as with PyGUI, similar checks must be applied there too. The user should be shown the cooldown period, and no additional reset should be allowed until the time has elapsed. Additionally, a control system must be established in the py root to enforce these checks on the backend.
Conclusion
Minor issues arising from consecutive skill resets can lead to significant imbalances over time. Therefore, implementing such checks in both C++ and Python-based systems is crucial for improving the quality of Metin2 private servers. With this fix, players will enjoy a fairer gaming environment.
Öncelikle sorunun net anlaşılması için şu videoya göz atabilirsiniz:
Fix için:
ClientSRC/UserInterface/PythonNetworkStreamPhaseGame.cpp bu dosyanın içindeki şu fonksiyonu bulun:
bool CPythonNetworkStream::RecvChangeSkillGroupPacket()
Bu fonksiyonun içinde şu satırı bulun:
CPythonPlayer::Instance().NEW_ClearSkillData();
Şu şekilde değiştirin:
CPythonPlayer::Instance().NEW_ClearSkillData(true);
dev'deki ondry nickli arkadaşın çözümüdür, saygılar kendisine.
Art Arda Skill Sıfırlayınca Oluşan Minik Problem Fixi
Metin2 özel sunucularında karşılaşılan yaygın sorunlardan birisi, oyuncuların skill sıfırlama işlemi yaptıktan sonra bekleme süresinin doğru şekilde işlenmemesi durumudur. Bu durum, özellikle PvP sistemlerinde ciddi dengesizliklere neden olabilir. Bu yazıda, art arda skill sıfırlama işlemi yapıldığında ortaya çıkabilecek küçük ama etkili bir problemi nasıl düzelteceğimizi ele alacağız.
Problem Nedir?
Oyuncu, bir kez skill sıfırlama işlemi gerçekleştirdikten sonra belirli bir süre beklemek zorundadır. Ancak bazı sistemlerde bu bekleme süresi, sıfırlama yapıldıktan sonra hemen başlamaz veya sıfırlama işlemi tekrarlandığında eski bekleme süresi devam eder. Bu da oyuncuların bekleme süresini atlatmak amacıyla birden fazla sıfırlama yaparak avantaj elde etmesine neden olabilir.
Fix Nasıl Uygulanır?
Bu hatayı düzeltmek için öncelikle ilgili C++ dosyasında bulunan skill sıfırlama fonksiyonuna göz atmalıyız. Genellikle bu işlem game core üzerinde tanımlanmıştır. Burada dikkat edilmesi gereken en önemli husus, sıfırlama yapıldığında mevcut bekleme süresinin sıfırlanmasıdır. Örneğin:
void ResetSkillTree(){
ClearCoolTime();
SetLastResetTime(GetCurrentTime());
}
Yukarıdaki örnekte, ClearCoolTime() fonksiyonu çağrıldığında tüm bekleme süreleri temizlenmeli ve yeni bir başlangıç zamanı atanmalıdır. Eğer bu süreç doğru yönetilmezse, oyuncu sıfırlama sonrası hala bekleme süresiyle karşılaşabilir ya da süreyi atlayabilir.
Sunucu Taraflı Kontroller
Sunucu tarafında bu tip kontroller için DB core üzerinden de loglama yapılabilir. Her sıfırlama işlemi veritabanına yazılır ve aynı gün içinde birden fazla sıfırlama yapılmışsa, bekleme süresi otomatik olarak uzatılabilir. Bu sayede hileli kullanım engellenmiş olur.
Python Tarafında Kontrol
Eğer sıfırlama işlemi bir GUI üzerinden yapılıyorsa, örneğin PyGUI kullanılıyorsa, burada da benzer kontroller yapılmalıdır. Kullanıcıya bekleme süresi gösterilmeli ve bu süre dolmadan tekrar sıfırlama yapılamamalıdır. Ayrıca backend tarafında bu kontrolü yapmak için py root[/COORD] üzerinde bir kontrol sistemi kurulmalıdır.
Sonuç
Art arda skill sıfırlama işlemleri sırasında oluşabilecek minik problemler, uzun vadede büyük dengesizliklere neden olabilir. Bu nedenle hem C++ hem de Python tabanlı sistemlerde bu tür kontrollerin sağlanması, Metin2 özel sunucularının kalitesini artırmak açısından kritik öneme sahiptir. Bu fix ile oyuncular daha adil bir oyun ortamında mücadele edebileceklerdir.
Fix for the Minor Issue Caused by Consecutive Skill Resets
One of the common issues encountered in Metin2 private servers is the incorrect handling of cooldown periods after players reset their skill trees. This issue can cause serious imbalances especially in PvP systems. In this article, we will discuss how to fix a small but impactful problem that occurs when resetting skills multiple times in succession.
What Is the Problem?
After a player resets their skill tree once, they are supposed to wait a certain amount of time before another reset. However, in some systems, the cooldown period either does not start immediately after the reset or continues from where it left off if the reset is repeated. This allows players to exploit the reset process multiple times to bypass the waiting time.
How to Apply the Fix?
To fix this bug, we first need to examine the skill reset function in the relevant C++ file. Usually, this operation is defined within the game core. The most important aspect here is ensuring that the current cooldown is cleared upon each reset. For example:
void ResetSkillTree(){
ClearCoolTime();
SetLastResetTime(GetCurrentTime());
}
In the above example, calling ClearCoolTime() should clear all cooldowns and set a new starting time. If this process is not handled correctly, players may still face remaining cooldown or even bypass it entirely.
Server-Side Checks
Logging via the DB core can also be implemented for such checks on the server side. Each reset action can be logged into the database, and if multiple resets occur on the same day, the cooldown duration can be extended automatically, preventing exploitation.
Control in Python
If the reset is performed through a GUI, such as with PyGUI, similar checks must be applied there too. The user should be shown the cooldown period, and no additional reset should be allowed until the time has elapsed. Additionally, a control system must be established in the py root to enforce these checks on the backend.
Conclusion
Minor issues arising from consecutive skill resets can lead to significant imbalances over time. Therefore, implementing such checks in both C++ and Python-based systems is crucial for improving the quality of Metin2 private servers. With this fix, players will enjoy a fairer gaming environment.
