Server Taraflı Ufak Hata Düzeltmeleri

  • 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
Grupta iken bayrak değiştirebilme hatası;

questlua_pc.cpp > aratılır;

Kod:
lua_pushnumber(L, ch->ChangeEmpire((unsigned char)lua_tonumber(L, 1)));

üstüne eklenir.

Kod:
if(ch->GetParty()){                 ch->ChatPacket(1, "text");                 lua_pushnumber(L, 4);                 return 0;             }



At üstünde iken ateş hayaletinin hasar vurmaması;

char_skill.cpp > aratılır


Kod:
if (false == bCanUseHorseSkill && true == IsRiding())         return BATTLE_NONE;     if (IsPolymorphed())         return BATTLE_NONE;     if (g_bSkillDisable)         return BATTLE_NONE;     CSkillProto* pkSk = CSkillManager::instance().Get(dwVnum);     if (!pkSk)         return BATTLE_NONE;     if (bCanUseHorseSkill && pkSk->dwType != SKILL_TYPE_HORSE)         return BATTLE_NONE;     if (!bCanUseHorseSkill && pkSk->dwType == SKILL_TYPE_HORSE)         return BATTLE_NONE;


Değiştirilir

Kod:
if(dwVnum!=SKILL_MUYEONG){         if (false == bCanUseHorseSkill && true == IsRiding()){return BATTLE_NONE;}     }     if (IsPolymorphed()){return BATTLE_NONE;}     if (g_bSkillDisable){return BATTLE_NONE;}     CSkillProto* pkSk = CSkillManager::instance().Get(dwVnum);     if (!pkSk){return BATTLE_NONE;}     if(dwVnum!=SKILL_MUYEONG){         if (bCanUseHorseSkill && pkSk->dwType != SKILL_TYPE_HORSE){return BATTLE_NONE;}         if (!bCanUseHorseSkill && pkSk->dwType == SKILL_TYPE_HORSE){return BATTLE_NONE;}     }



Pazara koyulan süreli itemin süresi bitince pazarda kalması;


item.cpp > aratılır


Kod:
m_lFlag(0),

yanına/altına eklenir

Kod:
m_iShop(NULL),

item.h > aratılır;


Kod:
long        m_lFlag;

altına eklenir;

Kod:
LPSHOP        m_iShop;


aratılır;

Kod:
DWORD        GetID()            { return m_dwID; }

altına eklenir;

Kod:
LPSHOP        GetShop() { return m_iShop; }         void        SetShop(LPSHOP gelenShop) { m_iShop = gelenShop; }


item_manager.cpp aratılır;

Kod:
M2_DESTROY_ITEM(item);

üstüne eklenir.

Kod:
LPSHOP iShop;     if (iShop = item->GetShop()) {         iShop->PazardanItemKaldir(item);         //sys_err("Pazardan %s itemi kaldirildi.", item->GetName());     }

shop.cpp uygun bir yere eklenir(en alta vb);

Kod:
bool CShop::PazardanItemKaldir(LPITEM iItem){     if (!iItem) { return false; }     for (BYTE i = 0; i < SHOP_HOST_ITEM_MAX_NUM; ++i) {         SHOP_ITEM & item = m_itemVector[i];         if (item.pkItem && item.itemid == iItem->GetID()) {             memset(&item, 0, sizeof(item));             BroadcastUpdateItem(i);             return true;         }     }     return false; }

shop.h uygun bir yere eklenir

Kod:
bool    PazardanItemKaldir(LPITEM iItem);

Server Taraflı Ufak Hata Düzeltmeleri

Metin2 Sunucu Geliştirme sürecinde karşılaşılan küçük hatalar, zamanla büyük sorunlara dönüşebilir. Bu nedenle, server tarafında yapılan küçük hata düzeltmeleri, hem oyun stabilitesi hem de kullanıcı deneyimi açısından son derece kritiktir. Bu makalede, Metin2 özel sunucularında sıkça karşılaşılan ve kolayca çözülebilecek küçük hata örneklerini ele alacağız.

Hata Tanımlama ve Kaynakları

Genellikle C++ kaynak kod tarafında meydana gelen küçük bellek sızıntıları ya da veri tutarsızlıkları, zamanla sunucunun çökmesine neden olabilir. Örneğin, game server programming sırasında bir fonksiyonun yanlış dönen pointer değerleri, sunucuda hata mesajlarına yol açabilir. Bu gibi durumlar, log dosyalarında genellikle 'Segmentation fault' veya 'Access violation' gibi hata mesajları şeklinde belirir.

Ortak Hatalar ve Çözümleri

1. Eksik Null Kontrolleri: Bir obje silindikten sonra kullanılması, yaygın bir hata türüdür. Bu durumda, pointer kontrolü yapılmadan erişim sağlanırsa, sunucu çökebilir. Source edit sırasında, obje silinmeden önce null kontrolü yapılmalı ve kullanımdan sonra silinmelidir.

2. SQL Sorgusu Hataları: DB tarafında çalışan sorgularda eksik veya hatalı parametre kullanımı, veri tutarsızlıklarına yol açabilir. Özellikle auth ve game sunucuları arasında veri aktarımı yapılırken, SQL sorgularının güvenli ve doğru yazılması önemlidir.

3. Python Script Hataları: Py GUI veya uiscript[/BR] dosyalarında, hatalı veri türü kullanımı ya da fonksiyon adı yazım hataları, istemci tarafında hata oluşmasına sebep olabilir. Py root dosyalarında, özellikle Martysama tabanlı sistemlerde, değişkenlerin doğru tanımlanması ve veri akışının kontrol edilmesi gerekir.

Derleme ve Derleme Sonrası Hatalar

Metin2 compile işlemi sırasında bazı uyarılar görmezden gelinebilir; ancak bu uyarılar, zamanla hata olarak ortaya çıkabilir. Özellikle client src tarafında, derleme sırasında çıkan 'warning' mesajları, runtime sırasında hatalara neden olabilir. Bu yüzden, tüm uyarıların çözülmesi, sunucu güvenliği açısından önemlidir.

Kaynak Kod Düzeni ve Geliştirici Yaklaşımı

Sunucu geliştirme sürecinde, kod okunabilirliği ve sürdürülebilirlik de büyük rol oynar. Metin2 development yaparken, core dosyalarında yapılan her değişiklik, game core veya db core ile uyumlu olmalıdır. Kod içinde açıklamaların (comment) bulunması, ileride yapılacak hata ayıklamaları kolaylaştırır.

Sonuç

Server taraflı ufak hata düzeltmeleri, uzun vadede sunucu sağlığı ve oyuncu memnuniyeti açısından büyük öneme sahiptir. Bu tür hatalar, sadece teknik bilgi değil, aynı zamanda dikkatli kodlama ve düzenli test süreçleriyle de çözülebilir. Metin2Lobby olarak, Metin2 özel sunucu geliştiricileri için en güncel kaynak kod ve sistem bilgilerini sizler için derliyoruz.


Small Server-Side Error Fixes

Metin2 server development process, small errors encountered can evolve into major issues over time. Therefore, small error fixes on the server side are critical for both game stability and user experience. In this article, we will address common minor error examples frequently encountered in Metin2 private servers that can be easily resolved.

Error Identification and Sources

Typically, small memory leaks or data inconsistencies occurring in C++ source code can lead to server crashes over time. For example, incorrectly returned pointer values from a function during game server programming may cause error messages on the server. Such situations often appear as 'Segmentation fault' or 'Access violation' error messages in log files.

Common Errors and Solutions

1. Missing Null Checks: Usage of an object after it has been deleted is a common type of error. In such cases, if access is granted without checking the pointer for null, the server might crash. During source editing, a null check should be performed before deletion and the object should be cleared after use.

2. SQL Query Errors: Incorrect or missing parameter usage in queries running on the DB side can lead to data inconsistencies. Especially when transferring data between auth and game servers, it is important that SQL queries are written securely and correctly.

3. Python Script Errors: In Py GUI or uiscript files, incorrect data type usage or function name typos may result in errors on the client side. In py root files, especially in systems based on Martysama, variables must be properly defined and data flow monitored.

Compilation and Post-Compilation Errors

Some warnings may be overlooked during the Metin2 compile process; however, these warnings can later emerge as errors. Particularly on the client src side, 'warning' messages during compilation may cause runtime errors. Therefore, resolving all warnings is important for server security.

Source Code Structure and Developer Approach

During the server development process, code readability and maintainability play a large role. While doing Metin2 development, every change made in core files must be compatible with game core or db core. Including comments in the code facilitates debugging efforts in the future.

Conclusion

Small server-side error fixes are vital for long-term server health and player satisfaction. Such errors can be resolved not only through technical knowledge but also through careful coding and regular testing processes. At Metin2Lobby, we compile the latest source codes and system information for Metin2 private server developers.
 

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

Benzer konular

Geri
Üst Alt