Reboot gerektirmez
İsmi değiştiğinizde 1 sn içerisinde hesaptan çıkış yapar
Değiştirilen isimleri mysql/log/log_change_name Kısmından görebilirsiniz
Eksikler varsa belirtin beraber çözelim
İsmi değiştiğinizde 1 sn içerisinde hesaptan çıkış yapar
Değiştirilen isimleri mysql/log/log_change_name Kısmından görebilirsiniz
Eksikler varsa belirtin beraber çözelim
Ziyaretçiler için gizlenmiş link,görmek için üye olmalısınız!
Giriş yap veya üye ol.
Ziyaretçiler için gizlenmiş link,görmek için üye olmalısınız!
Giriş yap veya üye ol.
[C++] İsim Değiştirme Sistemi Reboot Gerektirmeden
Metin2 özel sunucularında kullanıcıların karakter isimlerini reboot (yeniden başlatma) gerektirmeden değiştirebilmesi oldukça önemli bir özelliktir. Özellikle aktif PvP sunucularda, oyuncuların farklı stratejilerle savaşırken kimliklerini gizlemesi veya marka oluşturması açısından bu tür sistemler büyük kolaylık sağlar. Bu yazıda, C++ tabanlı bir isim değiştirme sisteminin nasıl uygulanacağını ve sunucu tarafında nasıl reboot olmadan çalıştığını ele alacağız.
İsim Değiştirme Sisteminin Önemi
Metin2'de genellikle isim değiştirme işlemi sunucu rebootu ile yapılır. Çünkü karakter ismi doğrudan oyuncu veritabanında tutulur ve bu değişiklikler sadece sunucu yeniden başlatıldığında tüm oyuncular tarafından görülür. Ancak bu yöntem hem zaman kaybına neden olur hem de sunucu üzerinde aktif olan oyuncuları etkiler. Bu nedenle reboot gerektirmeyen bir isim değiştirme sistemi geliştirilmesi, kullanıcı deneyimini ciddi anlamda artırır.
Sistem Mimarisi
Bu sistemin temel mantığı, karakter ismini hem veritabanında hem de sunucu belleğinde (memory) güncellemektir. Oyuncu isim değiştirme komutunu çalıştırdığında, sunucu önce veritabanına yeni ismi yazar, ardından karakterin geçici bellekteki isim değerini günceller. Böylece sunucu reboot edilmeden yeni isim diğer oyuncular tarafından görülebilir hale gelir.
C++ Tarafında Uygulama Adımları
Öncelikle, isim değiştirme komutunu işleyen fonksiyonu tanımlamalıyız. Bu fonksiyon, oyuncunun mevcut ismini kontrol eder, yeni ismin kurallara uyup uymadığını doğrular ve gerekirse veritabanına ve oyuncu nesnesine yeni ismi yazar.
- Sunucu tarafında bir komut işleyici (command handler) oluşturulur.
- Kullanıcıdan alınan yeni isim, karakter uzunluğu ve yasaklı kelimeler gibi kontroller yapılır.
- Doğrulama başarılıysa, veritabanında UPDATE sorgusu çalıştırılır.
- Ardından, oyuncu nesnesinin name değeri bellekte güncellenir.
- Oyuncuya başarı mesajı gönderilir ve diğer oyunculara isim değişikliği duyurusu yapılır.
Veritabanı Güvenliği ve Performans
Veritabanı işlemlerinde SQL injection gibi güvenlik açıklarına dikkat etmek önemlidir. Parametreli sorgular kullanarak kullanıcıdan gelen verileri doğrudan SQL'e dahil etmemeliyiz. Ayrıca, çok sayıda kullanıcı aynı anda isim değiştirme talebinde bulunursa performans sorunları yaşanabilir. Bu yüzden, isim değiştirme işlemi için cooldown (bekleme süresi) gibi mekanizmalar eklemek iyi bir fikirdir.
Python Entegrasyonu (Opsiyonel)
Python betikleriyle GUI arayüzlerinden isim değiştirme istemek de mümkündür. Örneğin, admin paneli üzerinden belirli bir karakterin ismini manuel olarak değiştirebilirsiniz. Bu tür sistemlerde Python ile DB bağlantısı kurup, C++ tarafında gerekli güncellemeyi tetikleyebilirsiniz. Ancak bu işlem doğrudan sunucu belleğini etkilemeyeceği için reboot gerekir. Eğer reboot istenmiyorsa, Python tarafı sadece DB'yi güncellerken C++ sunucu belleğini de güncelleyen bir API çağrısı yapmalıdır.
Sonuç
Reboot gerektirmeyen isim değiştirme sistemi, Metin2 özel sunucularında profesyonel bir deneyim sunar. C++ tabanlı sunucu tarafında doğru yapılandırıldığında, kullanıcılar hızlıca isimlerini değiştirebilir ve sunucu yönetimi daha esnek hale gelir. Bu sistem, PvP sunucularında strateji odaklı oyun tarzlarını desteklerken, aynı zamanda kullanıcı sadakatini artırır.
[C++] Name Change System Without Reboot
In Metin2 private servers, allowing players to change their character names without requiring a reboot is an important feature. Especially in active PvP servers, players may want to hide their identity or create different personas for various strategies. In this article, we will explain how to implement a name-changing system based on C++ that works without server reboot.
Importance of the Name Change System
In Metin2, name changes are typically done via server reboot because the character's name is stored directly in the player database, and these changes only become visible after a restart. However, this method causes downtime and affects online players. Therefore, implementing a name change system that does not require a reboot significantly improves user experience.
System Architecture
The core logic of this system involves updating the character name both in the database and in the server memory. When a player triggers the name change command, the server first writes the new name to the database, then updates the temporary in-memory name value of the character. This way, the new name becomes visible to other players without restarting the server.
Implementation Steps in C++
Firstly, we need to define a function to handle the name change command. This function checks the current name of the player, validates whether the new name complies with rules, and if valid, writes the new name to both the database and the player object in memory.
- Create a command handler on the server side.
- Validate the new name received from the user for length and forbidden words.
- If validation passes, execute an UPDATE query in the database.
- Then update the 'name' value of the player object in memory.
- Send a success message to the player and announce the name change to others.
Database Security and Performance
It's crucial to avoid security vulnerabilities like SQL injection during database operations. Use parameterized queries to prevent direct insertion of user input into SQL commands. Additionally, performance issues can arise if many users attempt to change their names simultaneously. Adding mechanisms like cooldowns between name changes can be beneficial.
Python Integration (Optional)
It is also possible to trigger name changes from Python scripts or GUI interfaces, such as through an admin panel. However, since this kind of operation won't affect the server memory directly, a reboot might still be required unless the Python script calls an API that updates the in-memory value on the C++ side as well.
Conclusion
A reboot-free name change system provides a professional experience in Metin2 private servers. When correctly configured on the C++ server side, users can quickly change their names, making server management more flexible. This system supports strategic gameplay styles in PvP servers while increasing player loyalty.
