[Emre Kırıcı] // [C++] At Skill Bug Fixleme

  • Konbuyu başlatan Konbuyu başlatan Admin
  • Başlangıç tarihi Başlangıç tarihi
  • Cevaplar Cevaplar 0
  • Görüntüleme Görüntüleme 117

Admin

Metin2Lobby
Yönetici
Founder
Katılım
6 Mayıs 2022
Mesajlar
52,647
Ticaret : 1 / 0 / 0
Beceri düzeyi Asker at olarak ve skiller m1 olarak alındığında oluşan bir bug. 40k Srclerin genelinde mevcut..

Kod:
if( !((GetMountVnum() >= 20209 && GetMountVnum() <= 20212)||GetMountVnum() == 20215 || GetMountVnum() == 20218 || GetMountVnum() == 20225))
return false;
Açıklama:
Bu şekilde skiller m1 geldiğinde at skillerinde bug oluşuyor. Fixlemek için ise yukarıda verdiğimi denerseniz sorun ortadan kalkmış olacaktır.
Emre Kırıcı // C++ At Skill Bug Fixleme


Metin2 Lobby olarak sunucu geliştirme konusunda aktif olan geliştiriciler, özellikle PvP sistemleri üzerinde çalışanlar için bug fixleme işlemleri hayati öneme sahiptir. Bu yazıda Emre Kırıcı tarafından önerilen At Skill Bug sorununun C++ seviyesinde nasıl çözüleceği detaylı şekilde ele alınacaktır. Metin2 özel sunucularında skill sistemleri üzerinde çalışan geliştiriciler, özellikle PvP ortamlarda karşılaştıkları bazı beklemsiz davranışları gidermek için bu tür düzeltmelere ihtiyaç duyarlar.

Bug Nedir?
Metin2 sistemlerinde at skill komutu ile karakterlere yetenekler kazandırılır. Ancak bazen bu komutun çalışması sırasında beklenmeyen davranışlar oluşabilir. Örneğin, skill atama işlemi yapıldığında karakterin yeteneği görünmüyor ya da yetenek sistemden sistemlere doğru aktarılmıyor olabilir. Bu durum genellikle game core tarafında meydana gelen bir veri tutarsızlığından kaynaklanır.

Neden Bu Sorun Oluşur?
Sorun genellikle client src ile game server arasında veri senkronizasyonundan kaynaklanır. Skill verisi doğru şekilde DB ile eşleşmiyor veya istemciye gönderilen pakette eksiklik olabilir. Bu da auth ve game sunucuları arasındaki veri akışında kopukluk yaratır.

C++ Tarafında Çözüm
Bu hatayı düzeltmek için öncelikle game/src klasöründe bulunan char_skill.cpp dosyasına odaklanmak gerekir. Bu dosya, karakterin yeteneklerini yöneten temel fonksiyonları içerir. SetSkillLevel fonksiyonu üzerinden yetenek atamaları yapılır. Bu fonksiyonda yapılan kontrolün doğruluğundan emin olmak gerekir.

Adım Adım Düzeltme
1. SetSkillLevel fonksiyonuna gelen verinin kontrolünü yapın. Yetenek ID'si doğru mu?
2. Yetenek seviyesi 0 değilse, yeteneğin client'e gönderilmesini sağlayın.
3. Packet gönderimi sırasında hata olup olmadığını kontrol edin.
4. DB ile senkronizasyonu sağlayın, UPDATE sorgusu eksiksiz gönderilsin.

Python Entegrasyonu
Bazı geliştiriciler py root üzerinden skill atama işlemlerini otomatikleştirmek isteyebilir. Bu durumda Python tarafında yazılan script, C++ tarafındaki veri akışını desteklemelidir. Py GUI arayüzü üzerinden yetenek ataması yapıyorsanız, bu verilerin doğrudan game core ile haberleşmesini sağlamanız gerekir. UIScript ile bu verilerin kullanıcıya gösterilmesi sağlanabilir.

Test Etme ve Onaylama
Değişikliklerinizi yaptıktan sonra, compile işlemini yaparak game server yeniden başlatın. Test karakteri oluşturarak at skill komutunu kullanın ve yeteneğin doğru şekilde aktarıldığını kontrol edin. Hata yoksa, bu değişikliği pack içine ekleyerek sunucularınızda kullanabilirsiniz.

Özel Sunucularda Güvenlik
Metin2Dev sistemlerinde güvenlik önlemleri alınırken, yetenek atama gibi işlemler de dikkate alınmalıdır. Geliştiricilerin MartySama tarzı modül entegrasyonları sırasında, bu tür hataların tekrar etmemesi için düzenli test süreçleri oluşturmaları gerekir.

Sonuç
C++ seviyesinde at skill bug fixleme işlemi, Metin2 özel sunucu geliştiricileri için kritik öneme sahiptir. Bu tür küçük ama etkili düzeltmeler, PvP deneyimini ciddi şekilde artırabilir. Emre Kırıcı tarafından önerilen bu yöntem, hem DB core hem de game core üzerinde çalışacak geliştiricilere rehber niteliğindedir.


Emre Kırıcı // C++ At Skill Bug Fixing


Metin2 Lobby developers who actively work on server development, especially those focusing on PvP systems, find bug fixing operations crucial. In this article, how to fix the At Skill Bug issue at the C++ level, as suggested by Emre Kırıcı, will be detailed. Developers working on skill systems in Metin2 private servers often need such fixes to resolve unexpected behaviors during PvP environments.

What Is The Bug?
In Metin2 systems, skills are assigned to characters using the at skill command. However, sometimes unexpected behaviors may occur during the execution of this command. For instance, after assigning a skill, the character's skill might not appear or may not transfer correctly across systems. This issue generally stems from a data inconsistency in the game core.

Why Does This Problem Occur?
The problem usually originates from a data synchronization issue between the client src and the game server. The skill data may not match correctly with the DB, or the packet sent to the client could be incomplete. This causes disruptions in the data flow between the auth and game servers.

Solution in C++
To fix this error, focus on the char_skill.cpp file located in the game/src folder. This file contains the core functions managing character skills. Skill assignments are performed through the SetSkillLevel function. It’s important to ensure that the checks within this function are correct.

Step-by-Step Fix
1. Verify the input data in the SetSkillLevel function. Is the skill ID correct?
2. If the skill level is not 0, ensure the skill is sent to the client.
3. Check for errors during packet sending.
4. Ensure DB synchronization; make sure the UPDATE query is sent without errors.

Python Integration
Some developers may want to automate skill assignment via py root. In this case, the script written in Python should support the data flow on the C++ side. If you are performing skill assignments through a Py GUI interface, these values must communicate directly with the game core. Displaying these data to the user can be handled via UIScript.

Testing and Validation
After making your changes, perform a compile operation and restart the game server. Create a test character, use the at skill command, and verify that the skill has been properly transferred. If there are no errors, you can add this modification into your pack and use it on your servers.

Security in Private Servers
While implementing security measures in Metin2Dev systems, actions like skill assignment should also be considered. When integrating modules similar to MartySama, developers should establish regular testing procedures to prevent such issues from recurring.

Conclusion
Fixing the at skill bug at the C++ level is critically important for Metin2 private server developers. Such small but effective fixes can significantly enhance the PvP experience. The method proposed by Emre Kırıcı serves as a guide for developers working on both DB core and game core.
 

Şuan Bu Konuyu Görüntüleyen Kullanıcılar (Toplam : 0, Üye : 0, Misafir : 0)

Benzer konular

Geri
Üst Alt