Herkese Merhaba[/FONT]
"Herhangi Bir Yere Işınlandığınız An Klavyenizdeki Tuşlar Çalışmayacaktır."
1: Eğer Server Tarafından Gelen Paket(Warp), Değişkeni True Yapana Kadar Siz Herhangi Bir Tuşa Basarsanız Çalışır. Yani Çok Hızlı Olmanız Gerekiyor.
2: Aslında Bu Konuyu Sadece Örnek İçin Yaptım. Siz Bu Kodu Dilediğiniz Sistemlere Göre Uyarlayabilirsiniz.
"Herhangi Bir Yere Işınlandığınız An Klavyenizdeki Tuşlar Çalışmayacaktır."
1: Eğer Server Tarafından Gelen Paket(Warp), Değişkeni True Yapana Kadar Siz Herhangi Bir Tuşa Basarsanız Çalışır. Yani Çok Hızlı Olmanız Gerekiyor.
2: Aslında Bu Konuyu Sadece Örnek İçin Yaptım. Siz Bu Kodu Dilediğiniz Sistemlere Göre Uyarlayabilirsiniz.
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 Oyun Sunucusu Geliştirme Sürecinde C++ ile Işınlanma Anında Klavye Girişini Devre Dışı Bırakma
Metin2 özel sunucuları geliştirmek isteyenler için önemli bir konu olan klavye girdilerinin kontrolü, özellikle oyuncu ışınlandığında beklenmedik durumların önüne geçmek adına kritik öneme sahiptir. Bu yazıda, C++ dilinde yazılmış bir Metin2 sunucu kaynağı üzerinde ışınlandığınızda klavye girişini nasıl devre dışı bırakabileceğinizi detaylıca ele alacağız.
Klavye Girişi Neden Önemlidir?
Metin2 oyununda oyuncular, klavye aracılığıyla hareket, yetenek kullanımı gibi eylemleri gerçekleştirir. Ancak bir ışınlanma işlemi sırasında veya sonrasında, kullanıcı yanlışlıkla tuşa basarsa istenmeyen davranışlar meydana gelebilir. Örneğin ışınlanma sırasında bir bekleme süresi varsa, bu süre zarfında oyuncunun klavye ile hareket etmesi engellenmelidir.
C++ Kaynak Kodlarında Klavye Girişi Kontrolü
Metin2 sunucu kaynak kodları genellikle C++ dili ile yazılmaktadır. Klavye girişini kontrol edebilmek için, istemci tarafında (client side) klavye olaylarını dinleyen fonksiyonları manipüle etmemiz gerekir. Özellikle uiscript ve py root dosyaları üzerinden klavye etkileşimlerini yönetebiliriz.
Işınlanma Sırasında Klavye Girişi Engelleme
Öncelikle ışınlanma işlemini tetikleyen fonksiyonu belirlemeliyiz. Genellikle bu işlem game server tarafından gönderilir ve istemcide belirli bir animasyon ya da bekleme süresiyle eşleştirilir. Bu süreçte klavye girdilerini devre dışı bırakmak için aşağıdaki adımları izleyebiliriz:
- Klavye girdisi alındığında çalışan fonksiyonun içine, ışınlanma modundayken girdi kabul etmeme koşulu ekleyin.
- Işınlanma başladıktan sonra bir bayrak (flag) ayarlayın ve bu bayrağa göre klavye girdilerini geçici olarak reddedin.
Python GUI ile Entegrasyon
Metin2 geliştirme sürecinde Python GUI araçları da kullanılmaktadır. Py GUI üzerinden bir pencere açıldığında, klavye girdileri farklı bir şekilde yönlendirilebilir. Eğer ışınlanma sırasında bir UI gösteriliyorsa, bu arayüzün klavye olaylarını kendi üzerinde tutması sağlanmalıdır. Bu sayede kullanıcı ışınlanma esnasında başka bir komut gönderemez.
Sunucu Tarafında Bekleme Süresi Uygulamak
Game server tarafında, ışınlanma komutundan sonra belirli bir süre boyunca oyuncuya başka bir komut işlemi yapılamamasını sağlamak için bir zamanlayıcı (timer) kullanılabilir. Bu sayede, hem sunucu hem de istemci tarafında senkron bir koruma sağlanmış olur.
Geliştirme Araçları ve Kaynaklar
Metin2 özel sunucularında geliştirme yaparken martysama forumları, Metin2Dev gibi platformlar oldukça faydalıdır. Ayrıca source edit işlemleri sırasında db core ve game core dosyalarında değişiklikler yaparken dikkatli olunmalıdır.
Sonuç
Metin2 özel sunucularında ışınlanma sırasında klavye girişini devre dışı bırakmak, kullanıcı deneyimini artırmak ve hatalı eylemleri önlemek açısından önemlidir. C++ tabanlı kaynak kodlar üzerinde gerekli kontrolleri yaparak daha stabil ve güvenli bir oyun ortamı sağlayabilirsiniz.
Disabling Keyboard Input When Warping in Metin2 Private Server Development with C++
An important topic for those developing Metin2 private servers is controlling keyboard inputs, especially to prevent unexpected behaviors right after a warp occurs. In this article, we will detail how to disable keyboard input upon warping in a Metin2 server source written in C++.
Why Is Keyboard Input Important?
In Metin2, players use the keyboard to move, use skills, and perform other actions. However, during or immediately after a warp event, if the player accidentally presses a key, unwanted behavior may occur. For instance, if there is a delay period after warping, the player should not be allowed to move via keyboard during that time.
Keyboard Input Control in C++ Source Code
Metin2 server source codes are generally written in C++. To control keyboard input, we need to manipulate functions on the client side that listen to keyboard events. Particularly through uiscript and py root files, we can manage keyboard interactions.
Disabling Keyboard Input During Warp
Firstly, we must identify the function triggering the warp action. Usually, this action is sent by the game server and matched with an animation or delay on the client side. To disable keyboard input during this process, follow these steps:
- Add a condition inside the keyboard input handling function to reject input if the player is in warp mode.
- Set a flag when warp starts and reject keyboard input based on this flag.
Integration with Python GUI
Python GUI tools are also used during Metin2 development. When a window is opened via Py GUI, keyboard events can be redirected differently. If a UI is displayed during warp, ensure that keyboard events are handled within that interface only, so the user cannot send other commands during warp.
Implementing a Delay on the Server Side
On the game server side, a timer can be used to prevent the player from executing another command for a certain duration after the warp command. This ensures synchronized protection both on the client and server side.
Development Tools and Resources
When developing Metin2 private servers, forums like martysama and platforms such as Metin2Dev are very helpful. Additionally, while editing source files, care must be taken when modifying db core and game core components.
Conclusion
Disabling keyboard input during warp in Metin2 private servers is essential for improving user experience and preventing unintended actions. By implementing proper controls within the C++ based source code, you can provide a more stable and secure gaming environment.
