[C++] Şeytan Kulesi küçük hata düzeltmesi

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

Admin

Metin2Lobby
Yönetici
Founder
Katılım
6 Mayıs 2022
Mesajlar
52,647
Ticaret : 1 / 0 / 0
Ufak bir hata ama önemli. Şeytan Kulesinin 5. katında sizden Kibirli Şeytan Kral'ı mağlup etmenizi istiyor. Canavarı kesiyorsunuz ve bir sefere mahsus eşya yükseltme hakkı kazanıyorsunuz. Sorun tam olarak burada başlıyor eşyanızı yükseltmek üzere Demirci'ye sürüklediğinizde size eşyanızı yükseltip yükseltmeyeceğenizi soruyor evete bastığınız ve yeterli paranız yok ise eşya yükseltme hakkınızı kaybediyorsunuz.

Aşağıdaki değişiklikleri yaparsanız bu sorunu önlemiş olursunuz;

Aç: ../game/src && input_main.cpp


63f301072f628292ee0cf10d9bdd0868.png


Ara:

Kod:
if (ch->GetQuestFlag("deviltower_zone.can_refine"))                 {                     ch->DoRefine(item, true);                     ch->SetQuestFlag("deviltower_zone.can_refine", 0);                 }


c09cf5625aabcfab96cd2ffc73a78f9d.png


Değiştir:

Kod:
if (ch->GetQuestFlag("deviltower_zone.can_refine"))                 {                         if (ch->DoRefine(item, true))                         {                                 ch->SetQuestFlag("deviltower_zone.can_refine", 0);                         }                 }


Alıntı: Yiv
C++ Şeytan Kulesi Küçük Hata Düzeltmesi
Metin2 özel sunucu geliştirme süreçlerinde, oyuncuların yoğun olarak ilgi gösterdiği sistemlerden birisi olan Şeytan Kulesi (Devil Tower), hem teknik hem de oyun içi dengeler açısından oldukça önemli bir özelliktir. Bu yazıda, C++ tabanlı bir Metin2 özel sunucusunda çalışan Şeytan Kulesi sisteminde meydana gelen küçük bir hatanın nasıl düzeltilceği ele alınacaktır. Bu düzeltme, oyun dengesi ve oyuncu deneyimi açısından büyük önem taşımaktadır.

Hatanın Tanımı
Şeytan Kulesi sistemi, belirli seviye aralığındaki oyuncuların katıldıkları, adım adım düşmanlarla mücadele ettikleri ve ödül kazandıkları bir sistemdir. Ancak bazı özel sunucularda, özellikle Martysama veya diğer popüler C++ source edit sistemlerinde çalıştırılan versiyonlarda, kulede belirli bir seviyeye ulaşıldığında sistem çökebilir ya da oyuncuların giriş yapması engellenebilir. Bu hata genellikle geçersiz referans veya bozuk veri nedeniyle oluşur.

Kök Neden Analizi
Bu tür hataların kökeninde genellikle game core içinde tanımlanan NPC spawn işlemleri, düşman listesi veya seviye kontrol mekanizmaları yatar. Özellikle db core ile entegre çalışan sistemlerde, veritabanı sorgularında eksiklikler veya veri tutarsızlıkları gibi durumlar hatalara yol açabilir. Örneğin, bazı sunucularda Şeytan Kulesi için tanımlanan mob_proto verileri eksik olabilir. Bu durum, belirli seviyelerde NPC spawn edilemeyeceği için sistemde çökme veya hata mesajı oluşmasına neden olur.

Çözüm Adımları
1. Game Sunucusu Kaynak Kodunu Kontrol Etme:
Öncelikle game/src/char/ dizininde yer alan devil_tower.cpp dosyasını inceleyin. Bu dosya içinde, OnEnterDevilTower fonksiyonunun doğru çalışıp çalışmadığı kontrol edilmelidir. Eğer burada bir NULL pointer kontrolü eksikse, bu hata meydana gelebilir.

2. DB Verilerini Doğrulama:
mob_proto[/COORD] tablosunda Şeytan Kulesi için tanımlı tüm NPC'lerin doğru şekilde yer aldığından emin olun. Eksik veya hatalı ID değerleri, kulede spawn sırasında soruna neden olabilir. Ayrıca quest dosyalarında yer alan devil_tower.lua betiği kontrol edilmelidir. Spawn mantığı bu betikte tanımlıdır.

3. C++ Compile İşlemi:
Değişiklikler yapıldıktan sonra, make clean ve make[/COORD] komutları ile tekrar derleme yapılmalıdır. Derleme sırasında herhangi bir uyarı (warning) varsa, bunların da çözülmesi gerekir.

Test Süreci
Yapılan değişikliklerin test edilmesi için, local bir ortamda Metin2 server src çalıştırılmalı ve Şeytan Kulesi'ne girip birkaç seviye ilerlenmelidir. Bu esnada crash veya disconnect gibi durumlar olup olmadığı gözlemlenmelidir.

Sonuç
Metin2 özel sunucularında PvP sistem ve C++ sistem geliştirme sürecinde, küçük hatalar bile büyük sorunlara yol açabilir. Bu nedenle, client src, auth ve game sunucuları arasında tutarlılık sağlanması çok önemlidir. Şeytan Kulesi gibi sistemlerde yapılan küçük hata düzeltmeleri, oyuncu memnuniyetini ve sunucu stabilitesini doğrudan etkiler. Bu yazı, Metin2 development sürecinde çalışan geliştiricilere rehber niteliği taşımaktadır.


C++ Devil Tower Minor Bug Fix
In the process of developing Metin2 private servers, the Devil Tower system, which attracts significant player interest, is technically and game-balance-wise very important. In this article, we will address how to fix a minor bug that occurs in the Devil Tower system running on a C++-based Metin2 private server. This fix is of great importance for game balance and player experience.

Bug Description
The Devil Tower system is a feature where players within specific level ranges participate, fight enemies step by step, and earn rewards. However, on certain private servers, especially versions running popular C++ source edits like Martysama, the system may crash or prevent players from entering after reaching a certain floor. This error usually occurs due to invalid references or corrupted data.

Root Cause Analysis
Such errors typically stem from NPC spawning processes, enemy lists, or level-check mechanisms defined within the game core. Particularly in systems integrated with the db core, missing or inconsistent database queries can cause errors. For instance, some servers may have incomplete mob_proto data for the Devil Tower, leading to crashes or error messages when NPCs fail to spawn at certain floors.

Fix Steps
1. Check Game Server Source Code:
First, examine the file devil_tower.cpp located under game/src/char/. Check whether the OnEnterDevilTower function works correctly. If there is a missing NULL pointer check here, it may trigger the error.

2. Validate DB Data:
Ensure all NPCs required for the Devil Tower are properly defined in the mob_proto table. Missing or incorrect IDs might cause spawn failures and related issues. Additionally, check the devil_tower.lua quest script, which defines the spawn logic.

3. C++ Compile Process:
After making changes, recompile the server using make clean and make. Resolve any warnings that appear during compilation.

Testing Phase
To test the changes, run a local version of Metin2 server src and enter the Devil Tower, progressing through several floors. Monitor for any crashes or disconnections during gameplay.

Conclusion
In Metin2 private server development, minor bugs can lead to major issues. Therefore, maintaining consistency between client src, auth, and game servers is critical. Small fixes in systems like Devil Tower directly impact player satisfaction and server stability. This article serves as a guide for developers working in Metin2 development.
 

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

Benzer konular

Geri
Üst Alt