Başlıkta'da belirttiğim gibi lonca savaşı esnasında oluşan bir bug fix'idir. Bu düzeltmeden sonra lonca savaşı devam ederken lonca lideri loncayı dağıtamaz, loncayı silemez. Bir teşekkürü çok görmemeniz dileği ile iyi forumlar.
Kod:
#ifdef ENABLE_FIX_DESTROY_GUILD_IF_WAR_IS_ACTIVE int pc_destroy_guild(lua_State * L) { LPCHARACTER ch = CQuestManager::instance().GetCurrentCharacterPtr(); CGuild * g = ch->GetGuild(); if (g) { if(g->UnderAnyWar()) { ch->ChatPacket(CHAT_TYPE_INFO, "Lonca savasi esnasinda loncayi dagitamazsiniz"); return 0; } else g->RequestDisband(ch->GetPlayerID()); } return 0; } int pc_remove_from_guild(lua_State* L) { LPCHARACTER ch = CQuestManager::instance().GetCurrentCharacterPtr(); CGuild * g = ch->GetGuild(); if (g) { if(g->UnderAnyWar()) { ch->ChatPacket(CHAT_TYPE_INFO, "Lonca savasi esnasinda loncayi dagitamazsiniz"); return 0; } else g->RequestRemoveMember(ch->GetPlayerID()); } return 0; } #else int pc_destroy_guild(lua_State * L) { LPCHARACTER ch = CQuestManager::instance().GetCurrentCharacterPtr(); CGuild * g = ch->GetGuild(); if (g) g->RequestDisband(ch->GetPlayerID()); return 0; } int pc_remove_from_guild(lua_State* L) { LPCHARACTER ch = CQuestManager::instance().GetCurrentCharacterPtr(); CGuild * g = ch->GetGuild(); if (g) g->RequestRemoveMember(ch->GetPlayerID()); return 0; } #endif
Kod:
Service.h içinde uygun bir yere ekle #define ENABLE_FIX_DESTROY_GUILD_IF_WAR_IS_ACTIVE
Lonca Savaşı Esnasında Bug Fix [MT2Shop]
Metin2 özel sunucularında loncaların savaşması en heyecan verici olaylardan biridir. Ancak bu savaşlar sırasında bazı buglar ortaya çıkabilir. Bu yazıda lonca savaşı sırasında karşılaşılan bugları nasıl düzelteceğimizi ele alacağız. Özellikle MT2Shop üzerinden sunulan sistemlerde bu konulara dikkat edilmelidir.
Lonca Savaşları Nedir?
Metin2 oyununda lonca savaşları, iki ya da daha fazla loncanın birbirleriyle savaştığı, strateji ve ekip çalışmasının ön planda olduğu önemli olaylardır. Bu savaşlar sırasında sunucuda bazı sistemsel sorunlar yaşanabilir. Örneğin, öldürülen oyuncu tekrar savaş alanına girebilir veya skorlama hatası gibi durumlar oluşabilir.
Sık Karşılaşılan Buglar ve Çözümleri
Lonca savaşları sırasında karşılaşılan en yaygın buglardan biri, ölüm sonrası tekrar savaş alanına giriş. Bu durum, savaşın adil akmasına engel olur. Bu hatayı çözmek için game_src[/CHARSET] üzerinde değişiklik yapılması gerekir. Özellikle quest_functions.cpp dosyasındaki war_of_empires fonksiyonuna özel kontrol eklemek gerekebilir.
Python Script ile Kontrol
Sunucu tarafında Python ile yazılmış sistemler varsa, py_root üzerinden war.py gibi dosyalar üzerinde değişiklik yaparak, öldürülen oyuncuların yeniden savaşa katılmamasını sağlayabilirsiniz. Bu işlem için C++ bilgisi kadar Python bilgisi de gerekebilir. PyGUI ile bu tür kontroller daha kolay hale getirilebilir.
DB Tarafında Gerekli Kontroller
Veritabanı (db) tarafında da bazı kontroller yapılmalıdır. Özellikle player tablosunda bulunan empire ve guild_id gibi alanlara ait veriler, savaş esnasında doğru şekilde kontrol edilmelidir. Yanlış veri güncellemeleri, skor veya oyuncu listesi gibi konularda hatalara neden olabilir.
MT2Shop ile Gelen Sistemler
MT2Shop, Metin2 özel sunucuları için C++ ve Python tabanlı sistemler sunar. Bu sistemlerde lonca savaşları için önceden tanımlanmış yapılar vardır ancak bazı özel durumlarda bu yapıların üzerine custom fix yapılması gerekir. Bu fix’ler genellikle client_src ve game_src üzerinde yapılır.
Compile ve Deploy Süreci
Değişiklik yaptıktan sonra compile işlemi doğru şekilde yapılmalıdır. Derleme işlemi sırasında hata alınmaması için make clean komutunu kullanmanız önerilir. Compile işlemi tamamlandıktan sonra server yeniden başlatılır. Bu süreçte auth ve game servislerinin de uygun şekilde çalıştığından emin olunmalıdır.
Martysama ve Metin2 Development Kaynakları
Metin2 özel sunucu geliştirme sürecinde Martysama gibi platformlar, kaynak kodlar ve forumlar büyük fayda sağlar. Metin2Dev toplulukları da bu konularda destek alabileceğiniz yerlerdir. Game core ve db core gibi sistemlerin anlaşılması için bu platformlara göz atmanız önerilir.
Sonuç
Lonca savaşları sırasında ortaya çıkan buglar, kullanıcı deneyimini ciddi şekilde etkileyebilir. Bu tür hataları gidermek için C++ ve Python bilgisi bir arada kullanılmalıdır. MT2Shop gibi sistemler üzerinden sunulan çözümler başlangıç için yeterli olsa da, özel ihtiyaçlar için kendi script ve source dosyalarınızı geliştirmeniz gerekebilir.
Guild War Bug Fix [MT2Shop]
Guild wars in Metin2 private servers are among the most exciting events. However, some bugs may occur during these wars. In this article, we will address how to fix bugs encountered during guild wars. Especially in systems provided via MT2Shop, attention must be paid to these topics.
What Are Guild Wars?
In Metin2, guild wars are significant events where two or more guilds fight against each other, emphasizing strategy and teamwork. During these wars, certain systemic issues can arise. For example, a killed player might re-enter the battle area, or scoring errors may occur.
Common Bugs and Fixes
One of the most common bugs during guild wars is re-entry into the battle zone after death. This issue prevents fair gameplay. To resolve this, modifications need to be made on game_src. Specifically, adding custom checks within the war_of_empires function in the quest_functions.cpp file may be necessary.
Control with Python Scripts
If there are systems written in Python on the server side, you can prevent killed players from rejoining the battle by modifying files like war.py under py_root. Such modifications require both C++ and Python knowledge. Controls like these can be easier with PyGUI.
Database Side Checks
Some checks must also be performed on the database (db) side. Particularly, fields such as empire and guild_id in the player table should be properly monitored during battles. Incorrect data updates can cause errors in scoring or player lists.
Systems Provided by MT2Shop
MT2Shop provides systems based on C++ and Python for Metin2 private servers. These systems come with predefined structures for guild wars, but custom fixes may sometimes be required. These fixes are generally applied to client_src and game_src.
Compile and Deploy Process
After making changes, the compile process must be done correctly. It is recommended to use the make clean command to avoid errors during compilation. Once compilation is complete, the server is restarted. Ensure that auth and game services are running properly during this process.
Martysama and Metin2 Development Resources
During Metin2 private server development, platforms like Martysama provide valuable resources including source codes and forums. Metin2Dev communities are also places where you can seek support on these topics. Exploring these platforms is recommended for understanding systems like game core and db core.
Conclusion
Bugs arising during guild wars can significantly impact user experience. To fix such errors, both C++ and Python knowledge must be used together. Although solutions provided via systems like MT2Shop may be sufficient initially, you may need to develop your own script and source files for specific needs.
