[C++ & Python] Işınlanma Sırasında Arayüzü Temizle

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

Admin

Metin2Lobby
Yönetici
Founder
Katılım
6 Mayıs 2022
Mesajlar
52,647
Ticaret : 1 / 0 / 0
Işınlandığınızda Pencerelerin Açık Kalmasına Sinir Oluyorsanız Buyrun;

ClientSource/UserInterFace/

PythonNetworkStreamPhaseGame.cpp Aç ve Arat:


Kod:
bool CPythonNetworkStream::RecvWarpPacket() {     TPacketGCWarp kWarpPacket;     if (!Recv(sizeof(kWarpPacket), &kWarpPacket))         return false;

Altına Ekle:

Kod:
PyCallClassMemberFunc(m_apoPhaseWnd[PHASE_WINDOW_GAME], "HideWindowWarp", Py_BuildValue("()"));


Derle

Root/Game.py Aç ve Ekle:


Kod:
def HideWindowWarp(self):         if self.interface:             self.interface.HideWindow_Warp()

Root/InterFaceModule.py Aç ve Ekle:

Kod:
def HideWindow_Warp(self):         self.__HideWindows()

Önemli Not:

def __HideWindows(self):

Diğer Pencerelerinizi de Ekleyebilirsiniz.

Kanıt:

Öncesi:



Sonrası:


Metin2 Özel Sunucu Geliştirme Sürecinde C++ ve Python Kullanımı

Metin2 özel sunucularında geliştirme yaparken hem C++ hem de Python dilleri oldukça yaygın olarak kullanılır. Özellikle arayüz (UI) yönetimi ve oyun içi sistemlerin çalışması için Python tabanlı GUI yapıları tercih edilirken, performans gerektiren sistemlerde C++ tercih edilir. Bu bağlamda, oyuncuların ışınlandığı anda arayüzün temizlenmesi gibi özel durumlar oldukça önemlidir.

IŞINLANMA ESNASINDA ARAYÜZÜN TEMİZLENMESİNİN ÖNEMİ

Metin2 özel sunucularda ışınlanma işlemleri sırasında bazı arayüz elemanlarının kalıcı kalması, kullanıcı deneyimini olumsuz etkileyebilir. Özellikle PvP sistemlerinde bu durum daha kritik hale gelir çünkü bazı menüler, efektler veya ekran öğeleri ışınlanma sonrası hâlâ ekranda kalabilir ve oyuncunun yeni konuma adapte olmasını zorlaştırabilir. Bu nedenle ışınlanma sırasında UI temizliği önemli bir sistemdir.

Python Tarafında UI Temizleme Uygulaması

Python tarafında UI temizliği genellikle UIScript veya PyRoot dosyaları üzerinden yapılır. Oyuncu ışınlandığında belirli UI pencerelerinin kapatılması için özel fonksiyonlar yazılır. Örneğin, bir item kullanımı sırasında açılan özel menü penceresi, ışınlanma sırasında kapanmalıdır. Bunun için ışınlanma event'ine özel bir handler tanımlanabilir.

C++ Tarafında Event Yönetimi

C++ tarafında, ışınlanma event’i yakalandığında Python tarafına sinyal gönderilerek UI temizleme işlemi başlatılabilir. Bu işlem genellikle Game Server SRC üzerinde yapılır. Işınlanma komutu tetiklendiğinde, önce UI temizliği için Python’a mesaj gönderilir, daha sonra ışınlanma gerçekleştirilir. Bu sayede kullanıcıya sorunsuz bir geçiş sağlanır.

Hatalar ve Çözüm Yolları[/BR]

Işınlanma sırasında UI temizliği eksik yapılırsa, oyuncu bazı arayüz öğelerini yeni haritada hâlâ görebilir. Bu durumda kullanıcı deneyimi ciddi anlamda düşer. Bunu önlemek için hem C++ hem de Python tarafında senkron bir yapı kurulmalıdır. Ayrıca, her UI elementi için bir ID tanımlanmalı ve ışınlanma esnasında bu ID’ler kontrol edilerek kapatılmalıdır.

Geliştiriciye Tavsiyeler[/BR]

Metin2 özel sunucu geliştirme sürecinde UI ve backend süreçlerinin uyumlu çalışması gerekir. Özellikle Python GUI ve C++ sistemlerinin birbirleriyle olan haberleşmesi iyi planlanmalıdır. Işınlanma sırasında UI temizleme gibi küçük detaylar bile kullanıcı memnuniyetini doğrudan etkiler. Bu nedenle sistemsel olarak her UI değişikliğinin test edilmesi önerilir.


Using C++ and Python in Metin2 Private Server Development

In Metin2 private server development, both C++ and Python languages are widely used. While Python-based GUI structures are preferred for interface management and in-game systems, C++ is chosen for performance-critical systems. In this context, cleaning the UI during player teleportation is an important aspect that requires attention.

THE IMPORTANCE OF CLEANING THE INTERFACE DURING TELEPORTATION

In Metin2 private servers, leaving certain interface elements active after teleportation can negatively impact user experience. Especially in PvP systems, this situation becomes more critical because some menus, effects, or screen elements may remain visible after teleportation and hinder the player's adaptation to the new location. Therefore, UI cleaning during teleportation is an essential system.

UI Cleaning Implementation in Python

UI cleaning in Python is generally done through UIScript or PyRoot files. During teleportation, specific functions are written to close certain UI windows. For example, a special menu window opened during item usage should be closed during teleportation. To achieve this, a custom handler can be defined for the teleportation event.

Event Management in C++

In C++, once the teleportation event is detected, a signal can be sent to the Python side to trigger the UI cleaning process. This operation is usually performed on the Game Server SRC. When the teleportation command is triggered, a message is sent to Python first to clean the UI, then the teleportation is executed. This ensures a seamless transition for the user.

Errors and Solutions

If UI cleaning is not properly implemented during teleportation, players may still see certain interface elements in the new map. This significantly reduces user experience. To prevent this, synchronized structures must be established between both C++ and Python sides. Additionally, each UI element should have an ID assigned, which will be checked and closed during teleportation.

Recommendations for Developers

In the Metin2 private server development process, the UI and backend systems must work harmoniously. Communication between Python GUI and C++ systems must be well planned. Small details like UI cleaning during teleportation directly affect user satisfaction. Therefore, it is recommended to thoroughly test every UI change systematically.
 

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

Benzer konular

Geri
Üst Alt