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.
Metin2 özel sunucularında oyun içi sistem geliştirmeleri yaparken, oyuncuların karakter isimlerini değiştirebilmesi oldukça önemli bir özelliktir. Bu özellikle C++ tabanlı game server yapılarında dikkatle ele alınması gereken bir durumdur. Bu yazıda C++ dilinde yazılmış Metin2 sunucu kaynak kodları üzerinden oyun içi karakter ismi değiştirme sisteminin nasıl geliştirileceği anlatılacaktır.
Ön Hazırlık
Bu işlemi gerçekleştirebilmek için, sunucu tarafında C++ bilginiz olmalı ve Metin2 sunucu yapısını iyi tanımış olmalısınız. Ayrıca auth server ve game server arasındaki iletişimi bilmek önemlidir. Karakter ismi değişikliği genellikle game server üzerinde gerçekleştirilir, ancak bu değişikliğin veritabanında kalıcı olması gerekir.
Karakter İsim Değiştirme Sistemi Nasıl Çalışır?[/BR][/BR]Bu sistemde, oyuncu bir komut veya arayüz üzerinden yeni bir isim önerir. Sunucu bu ismin daha önce kullanılıp kullanılmadığını kontrol eder. Eğer isim uygunsa, veritabanında güncelleme yapılır ve oyuncuya bildirim gönderilir. Bu işlem sırasında güvenlik önlemleri alınmalıdır. Örneğin, isim uzunluğu sınırlanabilir, özel karakterler filtrelenmelidir.
C++ Kodlama Adımları[/BR][/BR]İlk olarak, client'tan gelen isteği karşılayan bir fonksiyon tanımlanır. Bu fonksiyon genellikle input_main.cpp dosyasında yer alır. Gelen mesaj türüne göre HEADER_CG_RENAME_CHARACTER gibi bir sabit ile karşılaştırılır. Bu tür paketler pack.h dosyasında tanımlıdır. Paket okunduktan sonra, yeni isim doğrulama kontrollerine tabi tutulur.
Doğrulama Kontrolleri:[/BR][/BR]- Isim uzunluğu 3-16 karakter arasında olmalı.
- Özel karakterler ve sayılar engellenmeli.
- Yeni isim veritabanında daha önce kullanılmamış olmalı.
- Karakter ismi kara listede yer almamalı.
Veritabanı İşlemleri[/BR][/BR]Isim değişikliği onaylandığında, MySQL üzerinden UPDATE sorgusu çalıştırılır. Bu sorgu genellikle player.player tablosunda name alanını güncellemektedir. Örnek sorgu şu şekildedir:
UPDATE player SET name = 'yeni_isim' WHERE id = karakter_id;[/BR][/BR]Başarılı bir güncellemeden sonra, oyuncuya[/BR][/BR]başarılı mesajı gönderilir ve karakter yeniden giriş yapar.
Client Tarafında Uygulama[/BR][/BR]Client tarafında, oyuncuya isim değiştirme penceresi gösterilir. Bu pencere genellikle UIScript ile oluşturulur. Oyuncu yeni ismini girdikten sonra Python üzerinden game server'a istek gönderilir. Bu işlem
Kod:
[COLOR=red]net.SendRenamePacket(new_name)[/COLOR]
Sonuç[/BR][/BR]Oyun içi karakter ismi değiştirme sistemi, Metin2 özel sunucularında kullanıcı deneyimini artırmak için önemli bir özelliktir. C++ tabanlı sunucu yapılarında bu sistemin güvenli ve doğru çalışması için dikkatli kodlama ve veritabanı işlemleri yapılmalıdır. Bu sayede hem oyuncular memnun kalır hem de sunucu güvenliği sağlanır.
Metin2 private servers, one of the important features during game system development is allowing players to change their character names. This topic especially requires careful handling in C++-based game server structures. In this article, we will explain how to develop an in-game character name changing system using C++ based Metin2 server source codes.
Preparation[/BR][/BR]To carry out this process, you must have knowledge of C++ and be familiar with the Metin2 server structure. Additionally, understanding the communication between auth server and game server is crucial. Character name changes are typically handled on the game server, but the change must persist in the database.
How Does the Character Name Change System Work?[/BR][/BR]In this system, the player suggests a new name via a command or interface. The server checks if this name has been used before. If the name is available, it updates the database and notifies the player. Security measures must be taken during this process. For instance, name length can be limited, and special characters should be filtered out.
C++ Coding Steps[/BR][/BR]First, a function that handles the request from the client is defined. This function usually resides in input_main.cpp. Based on the message type received, it compares against constants like HEADER_CG_RENAME_CHARACTER. Such packets are defined in the pack.h file. After reading the packet, the new name undergoes validation checks.
Validation Checks:[/BR][/BR]- Name length must be between 3-16 characters.
- Special characters and numbers should be blocked.
- The new name must not exist in the database already.
- The character name must not be blacklisted.
Database Operations[/BR][/BR]Once the name change is approved, an UPDATE query is executed via MySQL. This query typically updates the name field in the player.player table. An example query is:
UPDATE player SET name = 'new_name' WHERE id = character_id;[/BR][/BR]After a successful update, the player receives a success message and the character relogs.
Client-Side Implementation[/BR][/BR]On the client side, a window for name changing is shown to the player. This window is usually created with UIScript. Once the player enters a new name, a request is sent to the game server via Python. This action is performed using a function such as
Kod:
[COLOR=red]net.SendRenamePacket(new_name)[/COLOR]
Conclusion[/BR][/BR]The in-game character name change feature is an important aspect of enhancing user experience on Metin2 private servers. In C++-based server structures, careful coding and database operations must be performed to ensure the system functions securely and correctly. This way, both players remain satisfied and server security is maintained.
