Fix camera when minimize client

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

Admin

Metin2Lobby
Yönetici
Founder
Katılım
6 Mayıs 2022
Mesajlar
52,647
Ticaret : 1 / 0 / 0
Alıntıdır
Yapımcısı : Abel

db1258c3801207dc8f1ff5b15d25d1c0.gif



Kod:
#PythonApplicationProcedure.cpp //Search this function: void CPythonApplication::__MinimizeFullScreenWindow(HWND hWnd, DWORD dwWidth, DWORD dwHeight) {     ChangeDisplaySettings(0, 0);     SetWindowPos(hWnd, 0, 0, 0,                  dwWidth,                  dwHeight,                  SWP_SHOWWINDOW);     ShowWindow(hWnd, SW_MINIMIZE); } //Add after: void CPythonApplication::__ResetCameraWhenMinimize() {     CCameraManager& rkCmrMgr=CCameraManager::Instance();     CCamera* pkCmrCur=rkCmrMgr.GetCurrentCamera();     if (pkCmrCur)     {         pkCmrCur->EndDrag();     }          SetCursorNum(NORMAL);     if ( CURSOR_MODE_HARDWARE == GetCursorMode())         SetCursorVisible(TRUE); } //Search:                     if (m_isWindowFullScreenEnable)                     {                         __MinimizeFullScreenWindow(hWnd, m_dwWidth, m_dwHeight);                     } //Replace with:                     if (m_isWindowFullScreenEnable)                     {                         __MinimizeFullScreenWindow(hWnd, m_dwWidth, m_dwHeight);                         __ResetCameraWhenMinimize();                     }                     else                     {                         __ResetCameraWhenMinimize();                     }

Kod:
#PythonApplication.h //Search:         void __MinimizeFullScreenWindow(HWND hWnd, DWORD dwWidth, DWORD dwHeight); //Add after:         void __ResetCameraWhenMinimize();


Türkçeleştirmeye gerek duymadım. Search After add Replace gibi terimleri bilmiyorsanız bırakın metin2 yi :D
Metin2 Client Minimize Edildiğinde Kamera Hatasını Giderme

Metin2 özel sunucularında geliştirme yaparken karşılaşılan yaygın sorunlardan birisi de client minimize edildiğinde kameranın düzgün çalışmayıp karakterin hareket etmesini engellemesidir. Bu durum kullanıcı deneyimini ciddi anlamda etkiler ve oyuncuların oyun dışına çıkmasına neden olabilir. Bu yazıda, Metin2 client üzerinde 'Fix Camera When Minimize Client' konusunu detaylıca ele alacağız.

Kamera Sistemi ve Client Minimize Sorunu Nedir?
Metin2 client, karakter kontrolü ve kamera takibi gibi işlemleri arka planda sürekli olarak yönetir. Ancak bazı durumlarda client penceresi minimize edildiğinde kamera takip sistemi bozulabilir. Bu durumda pencere tekrar açıldığında karakter kontrolü yapılamaz veya kamera istenmeyen bir pozisyonda kalabilir.

Sorunun Neden Kaynağı Olabilir?
Bu sorun genellikle client tarafında çalışan kamera kontrol mekanizmasının, pencere odağı kaybedildiğinde doğru şekilde resetlenmemesiyle oluşur. Özellikle bazı C++ tabanlı client kaynak kodlarında kamera ayarları, pencere durumu değiştiğinde güncellenmezse bu tür hatalar görülebilir.

Kamera Hatasını Çözme Yöntemleri
Kamera hatasını çözmek için client kaynak kodunda bazı düzenlemeler yapılması gerekir. Özellikle Windows API ile pencere durumu izlenmeli ve minimize durumunda kamera reset fonksiyonu çağrılmalıdır.

C++ Client Kodunda Gerekli Değişiklikler
Client kodunda 'WndProc' fonksiyonuna WM_ACTIVATEAPP ya da WM_SIZE event'leri üzerinden pencere durumu kontrol edilmelidir. Örneğin:

Kod:
[COLOR=#9365b8]if (message == WM_ACTIVATEAPP && wParam == FALSE)[BR][/BR]{[BR][/BR]    // Pencere minimize edildiğinde kamera resetlenmeli[BR][/BR]    ResetCamera();[BR][/BR]}[/COLOR]


Python Uygulamalarında Kamera Kontrolü
Eğer client tarafında Python GUI kullanıyorsanız, pencere olaylarını yakalayarak kamera kontrolünü sağlayabilirsiniz. Örneğin PyGame gibi kütüphanelerde pencere odağı kaybı durumunda kamera ayarları sıfırlanabilir.

UIScript ve PY Root Üzerinden Müdahale
Metin2 client tarafında UI elementleri UIScript dosyalarında tanımlanır. PY Root klasöründe bulunan kamera modülüne müdahale ederek, pencere minimize durumuna göre kamera konumunu güncelleyebilirsiniz. Bu işlem sırasında root dizinindeki camera.py dosyasında gerekli event dinleyiciyi kurmanız gerekir.

Martysama ve Diğer Geliştirici Araçları
Metin2 geliştiricileri arasında popüler olan Martysama gibi kaynaklar üzerinden örnek kamera düzeltme kodlarına ulaşabilirsiniz. Bu tür sistemler genellikle client src üzerinde kolay entegrasyon sunar.

Sonuç
Minimize edilen clientte kamera sorunları, kullanıcı deneyimi açısından ciddi bir problem teşkil eder. Bu nedenle client kaynak kodlarında pencere durumuna göre kamera kontrol mekanizmaları eklemek, kullanıcıların oyun içi akışını koruması açısından büyük önem taşır. C++ sistemlerinde pencere event'leri üzerinden, Python GUI uygulamalarında ise odağı izleyen yapılar üzerinden çözümler üretmek mümkündür.


Fixing Camera Issue When Client is Minimized in Metin2

One of the common issues encountered during Metin2 private server development is the camera malfunction that occurs when the client window is minimized, which can prevent character movement. This significantly affects user experience and may cause players to exit the game. In this article, we will examine the topic of 'Fix Camera When Minimize Client' in detail.

What Is the Camera System and Minimize Issue?
The Metin2 client continuously manages operations like character control and camera tracking. However, in certain cases, when the client window is minimized, the camera tracking system may break. When the window is restored, the character might become uncontrollable or the camera may remain stuck in an incorrect position.

Why Does This Problem Occur?
This issue typically arises when the camera control mechanism within the client-side code does not properly reset upon losing focus. Especially in some C++ based client source codes, if camera settings are not updated when the window state changes, such errors may occur.

Methods for Resolving Camera Issues
To resolve the camera issue, certain modifications must be made to the client source code. Window states should be monitored via Windows API, and a camera reset function should be invoked when the window is minimized.

Required Changes in C++ Client Code
In the client code, the 'WndProc' function should handle events such as WM_ACTIVATEAPP or WM_SIZE to monitor window state changes. For example:

Kod:
[COLOR=#9365b8]if (message == WM_ACTIVATEAPP && wParam == FALSE)[BR][/BR]{[BR][/BR]    // Camera should be reset when the window is minimized[BR][/BR]    ResetCamera();[BR][/BR]}[/COLOR]


Camera Control in Python Applications
If you are using Python GUI on the client side, you can capture window events to manage camera control. For instance, in libraries like PyGame, camera settings can be reset when the window loses focus.

Intervention via UIScript and PY Root
In Metin2 clients, UI elements are defined in UIScript files. By modifying the camera module located in the PY Root folder, you can update the camera position according to the window's minimize state. During this process, you need to set up an event listener in the camera.py file located in the root directory.

Martysama and Other Developer Tools
Popular among Metin2 developers, sources like Martysama provide sample camera-fixing codes. Such systems usually offer easy integration into client source codes.

Conclusion
Camera issues in minimized clients pose a significant problem in terms of user experience. Therefore, implementing camera control mechanisms based on window state changes in client source code is crucial for maintaining player engagement. Solutions can be developed using window events in C++ systems or focus-monitoring structures in Python GUI applications.
 

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

Benzer konular

Geri
Üst Alt