../Game/src/desc.cpp aç arat;
Kod bloğunu değiştir ;
C++ ile Metin2 Oyununda Bağlı Olan Hesaba Giriş Yapıldığında Oyuncu Atma Sistemini Engelleme
Metin2 özel sunucularında geliştirme yaparken, bazı güvenlik ve kullanıcı deneyimi konularında hassas davranmak gerekir. Bu bağlamda, oyuna giriş yapan bir hesabın sistem tarafından otomatik olarak atılması gibi durumlar, özellikle birden fazla cihazdan aynı hesaba erişim yapıldığında oluşabilir. Bu yazıda, C++ tabanlı bir sistemle, bağlı olan hesaba tekrar giriş yapıldığında oyuncuyu atma işlemini iptal etmeyi ele alacağız.
Bağlı Hesap Sistemi Nedir?
Metin2 sunucularında, bir oyuncu oturumu başlatıldığında, hesap kimliği (pid veya account_id) sistemde aktif olarak tutulur. Eğer aynı kimlikle başka bir bağlantı girişimi gelirse, sistem genellikle eski bağlantıyı keser ve yeni girişe izin verir. Bu davranış, çoğaltma (multiplaying) engellemek için tasarlanmış olsa da, bazen kullanıcılar için istenmeyen sonuçlar doğurabilir. Örneğin, oyuncu internet bağlantısını kısa sürede kaybedip yeniden bağlandığında, sistem onu 'çift giriş' olarak algılayabilir ve mevcut oturumunu kapatabilir.
Neden Oyuncu Atma İşlemini Engellemeliyiz?
Oyuncuların istenmeyen atılmalarını engellemek, hem kullanıcı memnuniyetini artırır hem de sunucunun güvenilirliğini korur. Özellikle Metin2 gibi PVP odaklı oyunlarda, oyuncuların anlık olarak bağlantı kopması ve yeniden bağlanması kaçınılmazdır. Bu nedenle, C++ seviyesinde bu tür kontrolleri optimize etmek büyük önem taşır.
C++ Kodlama ile Uygulama
Öncelikle, authserver (kimlik doğrulama sunucusu) üzerinde bir kontrol noktası oluşturmak gerekir. Bu noktada, giriş yapan kullanıcı kimliği kontrol edilir. Eğer kullanıcı zaten aktifse, yeni oturumun açılmasına izin verilmez ama eski oturum da kapatılmaz. Bunun için auth_server.cpp dosyasında şu değişiklik yapılabilir:
Kritik Not: Bu işlem sırasında, doğru kimlik doğrulaması ve IP kontrolleri yapılmalıdır. Aksi takdirde, güvenlik açıkları oluşabilir.
Sunucu Tarafında Oturum Yönetimi
Authsunucu tarafında oturum kontrolü sağlandıktan sonra, gameserver tarafında da benzer kontroller yapılabilir. Bu sayede, kullanıcıya ait tüm sistemsel oturumlar daha güvenli bir şekilde yönetilir. Örneğin, oyuncu oyun içindense ve tekrar giriş yapmaya çalışırsa, sunucu ona mevcut karakteriyle devam etme seçeneği sunabilir.
Ekstra Güvenlik Önlemleri
Sistemde kullanıcıların IP adresleri de kaydedilerek, farklı IP’lerden giriş yapılan durumlarda uyarı mesajları veya ek doğrulama adımları eklenebilir. Bu sayede, hesap güvenliği artırılırken kullanıcı deneyimi de korunur.
Sonuç
C++ seviyesinde geliştirilen bu tür sistemler, Metin2 özel sunucularında kullanıcı dostu ve güvenli bir ortam oluşturur. Oyuncuların giriş işlemlerinde yaşanan sorunları en aza indirmek, hem teknik hem de ticari açıdan avantaj sağlar.
Preventing Player Disconnection When Logging Into a Connected Account in C++ for Metin2
When developing custom Metin2 servers, it's important to handle certain security and user experience aspects with care. In this context, automatic disconnection of players upon login attempts may occur if multiple devices try to access the same account. This article explains how to prevent disconnection of an already logged-in player when another login attempt occurs, using a C++ based system.
What is a Connected Account System?
In Metin2 servers, once a player session starts, the account ID is held active in the system. If another connection attempt occurs with the same ID, the system usually terminates the previous session and allows the new one. Although this behavior is intended to prevent multi-playing, it can sometimes cause unwanted disconnections, such as when a player briefly loses connection and reconnects quickly.
Why Should We Prevent Disconnection?
Preventing unwanted disconnections improves user satisfaction and maintains server reliability. Especially in PVP-oriented games like Metin2, temporary connection losses are inevitable. Therefore, optimizing such controls at the C++ level is crucial.
Implementation via C++ Code
Firstly, a control point must be established on the authserver. Here, the incoming account ID is checked. If the account is already active, a new session should not be created without terminating the existing one. For example, in auth_server.cpp:
Important Note: Proper authentication and IP checks must be performed during this process, otherwise security vulnerabilities may arise.
Session Management on Game Server
After implementing checks on the auth server, similar validations can also be done on the game server side. This ensures all sessions related to a user are managed more securely. For example, if the player is currently in-game and tries to log in again, the server could offer them to continue with their existing character.
Additional Security Measures
IP addresses of users can also be stored, allowing warning messages or additional verification steps when login attempts come from different IPs. This enhances account security while maintaining user experience.
Conclusion
Such C++ based systems create a user-friendly and secure environment in Metin2 private servers. Minimizing login-related issues for players offers both technical and commercial advantages.
Kod:
void DESC::DisconnectOfSameLogin()
Kod bloğunu değiştir ;
Kod:
void DESC::DisconnectOfSameLogin() { if (GetCharacter()) { GetCharacter()->ChatPacket(CHAT_TYPE_INFO, "Biri hesabınıza giriş yaptı..."); return true; } else { SetPhase(PHASE_CLOSE); } }
C++ ile Metin2 Oyununda Bağlı Olan Hesaba Giriş Yapıldığında Oyuncu Atma Sistemini Engelleme
Metin2 özel sunucularında geliştirme yaparken, bazı güvenlik ve kullanıcı deneyimi konularında hassas davranmak gerekir. Bu bağlamda, oyuna giriş yapan bir hesabın sistem tarafından otomatik olarak atılması gibi durumlar, özellikle birden fazla cihazdan aynı hesaba erişim yapıldığında oluşabilir. Bu yazıda, C++ tabanlı bir sistemle, bağlı olan hesaba tekrar giriş yapıldığında oyuncuyu atma işlemini iptal etmeyi ele alacağız.
Bağlı Hesap Sistemi Nedir?
Metin2 sunucularında, bir oyuncu oturumu başlatıldığında, hesap kimliği (pid veya account_id) sistemde aktif olarak tutulur. Eğer aynı kimlikle başka bir bağlantı girişimi gelirse, sistem genellikle eski bağlantıyı keser ve yeni girişe izin verir. Bu davranış, çoğaltma (multiplaying) engellemek için tasarlanmış olsa da, bazen kullanıcılar için istenmeyen sonuçlar doğurabilir. Örneğin, oyuncu internet bağlantısını kısa sürede kaybedip yeniden bağlandığında, sistem onu 'çift giriş' olarak algılayabilir ve mevcut oturumunu kapatabilir.
Neden Oyuncu Atma İşlemini Engellemeliyiz?
Oyuncuların istenmeyen atılmalarını engellemek, hem kullanıcı memnuniyetini artırır hem de sunucunun güvenilirliğini korur. Özellikle Metin2 gibi PVP odaklı oyunlarda, oyuncuların anlık olarak bağlantı kopması ve yeniden bağlanması kaçınılmazdır. Bu nedenle, C++ seviyesinde bu tür kontrolleri optimize etmek büyük önem taşır.
C++ Kodlama ile Uygulama
Öncelikle, authserver (kimlik doğrulama sunucusu) üzerinde bir kontrol noktası oluşturmak gerekir. Bu noktada, giriş yapan kullanıcı kimliği kontrol edilir. Eğer kullanıcı zaten aktifse, yeni oturumun açılmasına izin verilmez ama eski oturum da kapatılmaz. Bunun için auth_server.cpp dosyasında şu değişiklik yapılabilir:
Kod:
[COLOR=#9365b8]// Kullanıcı zaten bağlıysa yeni oturum açma[BR][/BR]if (IsAccountAlreadyOnline(account_id)) {[BR][/BR] // Yeni bağlantıyı reddet veya mevcut oturumu koru[BR][/BR] SendLoginFailure(client_fd, ALREADY_LOGGED_IN);[BR][/BR] return;[BR][/BR]}[/COLOR]
Kritik Not: Bu işlem sırasında, doğru kimlik doğrulaması ve IP kontrolleri yapılmalıdır. Aksi takdirde, güvenlik açıkları oluşabilir.
Sunucu Tarafında Oturum Yönetimi
Authsunucu tarafında oturum kontrolü sağlandıktan sonra, gameserver tarafında da benzer kontroller yapılabilir. Bu sayede, kullanıcıya ait tüm sistemsel oturumlar daha güvenli bir şekilde yönetilir. Örneğin, oyuncu oyun içindense ve tekrar giriş yapmaya çalışırsa, sunucu ona mevcut karakteriyle devam etme seçeneği sunabilir.
Ekstra Güvenlik Önlemleri
Sistemde kullanıcıların IP adresleri de kaydedilerek, farklı IP’lerden giriş yapılan durumlarda uyarı mesajları veya ek doğrulama adımları eklenebilir. Bu sayede, hesap güvenliği artırılırken kullanıcı deneyimi de korunur.
Sonuç
C++ seviyesinde geliştirilen bu tür sistemler, Metin2 özel sunucularında kullanıcı dostu ve güvenli bir ortam oluşturur. Oyuncuların giriş işlemlerinde yaşanan sorunları en aza indirmek, hem teknik hem de ticari açıdan avantaj sağlar.
Preventing Player Disconnection When Logging Into a Connected Account in C++ for Metin2
When developing custom Metin2 servers, it's important to handle certain security and user experience aspects with care. In this context, automatic disconnection of players upon login attempts may occur if multiple devices try to access the same account. This article explains how to prevent disconnection of an already logged-in player when another login attempt occurs, using a C++ based system.
What is a Connected Account System?
In Metin2 servers, once a player session starts, the account ID is held active in the system. If another connection attempt occurs with the same ID, the system usually terminates the previous session and allows the new one. Although this behavior is intended to prevent multi-playing, it can sometimes cause unwanted disconnections, such as when a player briefly loses connection and reconnects quickly.
Why Should We Prevent Disconnection?
Preventing unwanted disconnections improves user satisfaction and maintains server reliability. Especially in PVP-oriented games like Metin2, temporary connection losses are inevitable. Therefore, optimizing such controls at the C++ level is crucial.
Implementation via C++ Code
Firstly, a control point must be established on the authserver. Here, the incoming account ID is checked. If the account is already active, a new session should not be created without terminating the existing one. For example, in auth_server.cpp:
Kod:
[COLOR=#9365b8]// If the account is already online, reject new login[BR][/BR]if (IsAccountAlreadyOnline(account_id)) {[BR][/BR] // Deny new connection or keep current session[BR][/BR] SendLoginFailure(client_fd, ALREADY_LOGGED_IN);[BR][/BR] return;[BR][/BR]}[/COLOR]
Important Note: Proper authentication and IP checks must be performed during this process, otherwise security vulnerabilities may arise.
Session Management on Game Server
After implementing checks on the auth server, similar validations can also be done on the game server side. This ensures all sessions related to a user are managed more securely. For example, if the player is currently in-game and tries to log in again, the server could offer them to continue with their existing character.
Additional Security Measures
IP addresses of users can also be stored, allowing warning messages or additional verification steps when login attempts come from different IPs. This enhances account security while maintaining user experience.
Conclusion
Such C++ based systems create a user-friendly and secure environment in Metin2 private servers. Minimizing login-related issues for players offers both technical and commercial advantages.
