CTRL+Q Görev Gelmeme Sorunu Fix (C++) # Alperen Sönmez

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

Admin

Metin2Lobby
Yönetici
Founder
Katılım
6 Mayıs 2022
Mesajlar
52,647
Ticaret : 1 / 0 / 0
Merhaba arkadaşlar elimdeki fileslerden bulduğum bir fix ışınlanınca vs gelmeyen kişilerinde işine yarayacağını umuyorum.
Hatalı bir fix ise yada işe yaramazsa bildirin
İyi forumlar dilerim sağlıcakla kalın.
Kod:
arat ->> void CQuestManager::DisconnectPC(LPCHARACTER ch) Fonksiyonun Altına ekle      #ifdef ENABLE_CTRL_Q_QUEST_FIX     void CQuestManager::StopAllRunningQuests()     {         for (PCMap::iterator it = m_mapPC.begin(); it != m_mapPC.end(); it++)         {             it->second.CancelRunning();             LPCHARACTER pkChr = CHARACTER_MANAGER::instance().FindByPID(it->first);             if (!pkChr || !(pkChr->GetDesc()))                 continue;             struct ::packet_script packet_script;             packet_script.header = HEADER_GC_SCRIPT;             packet_script.skin = QUEST_SKIN_NOWINDOW;             string data = "[DESTROY_ALL]";             packet_script.src_size = data.size();             packet_script.size = packet_script.src_size + sizeof(struct packet_script);             TEMP_BUFFER buf;             buf.write(&packet_script, sizeof(struct packet_script));             buf.write(&data[0], data.size());             pkChr->GetDesc()->Packet(buf.read_peek(), buf.size());         }     } #endif        arat ---> void CQuestManager::Reload()      altına ekle #ifdef ENABLE_CTRL_Q_QUEST_FIX         StopAllRunningQuests(); #endif şöyle görünecek -->>     void CQuestManager::Reload()     { #ifdef ENABLE_CTRL_Q_QUEST_FIX         StopAllRunningQuests(); #endif     .....
Kod:
arat --> PC *        GetPCForce(unsigned int pc); Altına ekle --->> #ifdef ENABLE_CTRL_Q_QUEST_FIX             void        StopAllRunningQuests(); #endif

Kod:
Müsait Biryere ekle #define ENABLE_CTRL_Q_QUEST_FIX                        // Quest Açılamam Sorunu Fix



CTRL+Q Görev Gelmeme Sorunu Fix (C++) # Alperen Sönmez

Metin2 özel sunucularında karşılaşılan yaygın sorunlardan birisi, oyuncuların görev sistemlerinde CTRL+Q kısayoluna bastıklarında görevin doğru şekilde gelmemesi veya açılmamasıdır. Bu durum, oyuncu deneyimini ciddi şekilde etkileyebilir. Bu yazıda, C++ tabanlı game core üzerinde yapılan düzenlemelerle bu sorunun nasıl çözüleceğini adım adım ele alacağız. Bu fix, hem client src hem de server src üzerinde yapılacak değişikliklerle sağlanabilir.

Sorunun Tanımı
Metin2 özel sunucularda görev penceresi açılırken bazen CTRL+Q tuşuna basıldığında görev ekranı açılmaz. Bu, genellikle uiscript veya py root üzerinde tanımlanan arayüz yapılandırmasında bir eksiklikten veya core üzerinden gelen komutlarda bir kopukluktan kaynaklanabilir. Özellikle source edit sırasında bu tür küçük hatalar gözden kaçabilir.

Fix Uygulama Adımları
1. Client Tarafı Ayarları:
Client src dosyasında bulunan uiscript dosyasında taskbar.py veya benzeri bir görev penceresi sınıfı yer alır. Burada, onPressKey fonksiyonunda CTRL+Q tuş kombinasyonunun kontrol edildiği kısım bulunur. Eğer bu kontrol eksikse, görev penceresi açılmayacaktır. Aşağıdaki gibi bir kontrol eklenebilir:

if app.GetKeyState(app.DIK_LCONTROL) and event.GetKey() == app.DIK_Q:
self.OpenQuestWindow()

2. Server Tarafı Komut Aktarımı:
Sunucu tarafında, yani game server programming kısmında, oyuncuya görev listesinin gönderilmesi gereken yerde bir hata olabilir. Özellikle db core ile haberleşme esnasında görev verileri doğru aktarılmıyorsa, client doğru görevleri göremez. game ve auth sunucuları arasındaki senkronizasyon da kontrol edilmelidir.

3. Core ve Pack Dosyaları:
Görev verileri genellikle pack dosyalarında yer alır. Bu dosyaların doğru derlenmiş olduğundan emin olunmalıdır. Metin2 compile işlemi sırasında görev listesiyle ilgili dosyalar eksik veya yanlış yerleştirilmiş olabilir. Bu da CTRL+Q tuşuna basıldığında görevin gelmemesine neden olur.

Olası Hatalar ve Çözüm Önerileri
- Py GUI veya Py Root üzerinde yapılan değişikliklerde görev penceresi sınıfının adı değiştirilmiş ama uiscript içinde eski isimle çağrılıyorsa, pencere açılmaz.
- DB tarafında görev ID'leri eksik veya hatalı ise, görevler oyuncuya ulaşmaz.
- Auth sunucusu ile game sunucusu arasında görev verileri sync edilmiyorsa, görevler açılmaz.

Fixin Test Edilmesi
Yaptığınız değişikliklerden sonra compile işlemini tekrar yapın ve sunucuyu başlatın. Oyuncu olarak giriş yapıp CTRL+Q tuşuna basarak görev penceresinin açılıp açılmadığını test edin. Eğer hâlâ açılmıyorsa, log dosyalarını kontrol ederek hangi aşamada kopukluk olduğunu tespit edin.

Sonuç
Metin2 özel sunucularında CTRL+Q görev açma sorunu, genellikle uiscript, py root ve game core arasında oluşan küçük kopukluklardan kaynaklanır. Bu sorun, kullanıcı dostu bir arayüz için önemli olan görev sistemini etkileyebilir. Bu nedenle, source edit sırasında dikkatli olmak ve tüm bileşenlerin uyumlu çalıştığından emin olmak büyük önem taşır. Bu rehber sayesinde, MartySama veya diğer geliştiriciler tarafından kullanılan sistemlerde de benzer sorunlar kolayca çözülebilir.


CTRL+Q Quest Not Appearing Fix (C++) # Alperen Sönmez

One of the common issues encountered in Metin2 private servers is the failure of the quest window not opening correctly when players press the CTRL+Q shortcut. This issue can significantly impact player experience. In this article, we will explain step by step how to solve this problem by making modifications on the C++-based game core. This fix can be implemented with changes made to both client src and server src.

Problem Description
In Metin2 private servers, sometimes when pressing CTRL+Q, the quest window does not appear or open. This usually stems from missing configurations in the UI scripting (uiscript) or root files (py root), or a communication break within the core. Such minor errors might be overlooked during source edit.

Fix Implementation Steps
1. Client-Side Configuration:
In the uiscript file located in the client src, there is usually a class like taskbar.py which handles the quest window. The function onPressKey checks for key combinations like CTRL+Q. If this check is missing, the quest window won’t open. Add a control similar to the following:

if app.GetKeyState(app.DIK_LCONTROL) and event.GetKey() == app.DIK_Q:
self.OpenQuestWindow()

2. Server-Side Command Transmission:
On the server side, within the game server programming, the part responsible for sending quest data to the player may have an error. Especially during communication with the db core, if quest data isn't transmitted properly, the client won't receive quests. Sync between game and auth servers should also be checked.

3. Core and Pack Files:
Quest data typically resides in pack files. Ensure these files are compiled correctly. During Metin2 compile, quest-related files might be missing or incorrectly placed, causing quests not to appear when CTRL+Q is pressed.

Possible Errors and Solutions
- Py GUI or Py Root changes may rename the quest window class, but the old name is still referenced in uiscript, preventing the window from opening.
- Missing or incorrect quest IDs in the DB can cause quests not to reach the player.
- Lack of synchronization between auth and game servers regarding quest data prevents quests from appearing.

Testing the Fix
After applying your changes, re-compile and start the server. Log in as a player and press CTRL+Q to see if the quest window opens. If not, check log files to identify where the breakdown occurs.

Conclusion
The CTRL+Q quest window issue in Metin2 private servers generally stems from small gaps between uiscript, py root, and game core. This issue can affect the quest system, which is important for user-friendly interfaces. Therefore, being careful during source edit and ensuring all components work together harmoniously is crucial. With this guide, similar issues in systems used by developers like MartySama can be easily resolved.
 

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

Geri
Üst Alt