Grupta iken bayrak değiştirebilme hatası;
questlua_pc.cpp > aratılır;
üstüne eklenir.
At üstünde iken ateş hayaletinin hasar vurmaması;
char_skill.cpp > aratılır
Değiştirilir
Pazara koyulan süreli itemin süresi bitince pazarda kalması;
item.cpp > aratılır
yanına/altına eklenir
item.h > aratılır;
altına eklenir;
aratılır;
altına eklenir;
item_manager.cpp aratılır;
üstüne eklenir.
shop.cpp uygun bir yere eklenir(en alta vb);
shop.h uygun bir yere eklenir
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.
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.
