war_map.cpp bul;
kod bloğunu değiştir;
Kod:
void CWarMap::STeamData::RemoveMember(LPCHARACTER ch) { --iMemberCount; }
kod bloğunu değiştir;
Kod:
void CWarMap::STeamData::RemoveMember(LPCHARACTER ch) { set_pidJoiner.erase(ch->GetPlayerID()); --iMemberCount; }
Lonca Savaşından Çıkanların Skor Tablosundan Eksilmemesi Fix
Metin2 özel sunucularında loncaların savaş sırasında stratejik bir şekilde geri çekilebilmesi, hem oyun deneyimini artırır hem de daha adil bir rekabet ortamı sağlar. Ancak bazı durumlarda, lonca savaşından çıkan oyuncuların skor tablosundan silinmesi istenmeyen sonuçlar doğurabilir. Bu durumda, lonca savaşından çıkan oyuncuların skor tablosunda kalması için bir düzeltme (fix) uygulanmalıdır.
Skor Tablosu ve Lonca Savaşı Nedir?
Metin2'de lonca savaşları, sunucuların en popüler etkinliklerinden biridir. Oyuncular kendi loncalarıyla birlikte düşman loncalarına saldırarak zafer kazanmaya çalışırlar. Savaş sırasında her oyuncu belirli puanlar alabilir ve bu puanlar skor tablosunda listelenir. Ancak bazı özel sunucularda, savaş esnasında oyunu kapatan ya da sahadan ayrılan oyuncuların skor tablosundan düşmesi gibi bir sorun yaşanabilir. Bu durum, özellikle PvP odaklı sunucularda büyük dezavantajlara neden olur.
Sorunun Kaynağı Nedir?
Genellikle bu sorun, oyunun temel yapı taşlarından olan C++ sunucu kaynak kodlarında belirli event handler veya timer mekanizmalarının yetersiz kalmasından kaynaklanır. Lonca savaş alanı içinde bir oyuncu sahadan ayrıldığında, sunucu bu oyuncuyu skor tablosundan otomatik olarak siler. Bu durumda, oyuncu savaşa tekrar katılsa bile eski skorunu koruyamaz. Bu, oyunun adaletli oynanış dengesini bozar.
Fix Uygulaması: C++ Sunucu Tarafında Yapılacaklar
Fix uygulamak için öncelikle game_src dosyasında bulunan clan_war.cpp veya fight_clan.cpp gibi dosyalarda gerekli değişiklikler yapılmalıdır. Özellikle skor tablosu güncelleme fonksiyonları incelenmeli ve oyuncu çıkış durumunda skor silme işlemi iptal edilmelidir. Bunun için örnek bir kod parçası şu şekildedir:
if (ch->GetWarMap() != NULL && ch->IsInClan()) {
// Skoru koru, çıkarma işlemi yapma
}
Python Client Tarafında GUI Değişiklikleri
Client tarafında ise, uiscript üzerinden skor tablosu arayüzüne müdahale edilerek, oyuncu sahadan ayrılsa bile listede kalması sağlanabilir. Bu işlem için root klasöründe bulunan ui.py veya fightwindow.py dosyalarında gerekli düzenlemeler yapılmalıdır. Ayrıca, oyuncu tekrar savaş alanına giriş yaptığında skorun doğru şekilde devam etmesi sağlanmalıdır.
Fix Uygulamasının Avantajları
- Oyuncuların stratejik geri çekilmesi desteklenir.
- Haksız skor kaybı engellenir.
- PvP deneyimi daha adil hale gelir.
- Lonca savaşlarında strateji ön plana çıkar.
Hata Ayıklama ve Test
Fix uygulandıktan sonra, test sunucusunda birden fazla senaryo ile kontrol yapılmalıdır. Örneğin, bir oyuncu savaş esnasında sahadan ayrılıp yeniden girildiğinde skorun korunup korunmadığı kontrol edilmelidir. Ayrıca, sunucu loglarında bu duruma dair herhangi bir hata mesajı olup olmadığı da incelenmelidir.
Sonuç
Lonca savaşından çıkan oyuncuların skor tablosundan silinmemesi, Metin2 özel sunucularında stratejik bir avantaj sağlar. Bu fix sayesinde, oyuncular daha rahat bir şekilde taktiksel kararlar verebilir. Bu tür küçük ama etkili değişiklikler, sunucunuzun oyuncu memnuniyetini artırmada büyük rol oynar.
Fix for Preventing Clan War Exits from Being Removed from Scoreboard
In Metin2 private servers, allowing guilds to strategically withdraw during wars not only enhances gameplay but also ensures a fairer competitive environment. However, sometimes players exiting a clan war may be removed from the scoreboard, which can lead to unwanted outcomes. In such cases, a fix should be applied to ensure that players leaving the clan war remain on the scoreboard.
What is the Scoreboard and Clan War?
In Metin2, clan wars are among the most popular events on servers. Players attack enemy guilds with their own guilds to gain victory. During these battles, each player earns specific points which are listed on the scoreboard. However, on some private servers, players who exit the game or leave the battlefield during combat might be automatically removed from the scoreboard. This issue can cause significant disadvantages especially in PvP-focused servers.
What Causes the Problem?
This problem often stems from insufficient event handlers or timer mechanisms within the C++ server source code. When a player leaves the battlefield during a clan war, the server automatically removes them from the scoreboard. As a result, even if the player rejoins the battle, they cannot retain their previous score, which disrupts the fairness of the game balance.
Fix Implementation: Changes on the C++ Server Side
To apply the fix, necessary changes must be made in files like clan_war.cpp or fight_clan.cpp located in the game_src folder. Specifically, functions updating the scoreboard should be examined, and the removal of a player's score upon leaving the battlefield should be disabled. An example code snippet for this would be:
if (ch->GetWarMap() != NULL && ch->IsInClan()) {
// Keep the score, do not remove upon exit
}
GUI Modifications on the Python Client Side
On the client side, modifications to the scoreboard interface via uiscript can ensure that players remain on the list even after leaving the battlefield. For this purpose, adjustments should be made to files such as ui.py or fightwindow.py located in the root directory. Additionally, when the player re-enters the battlefield, their score should continue correctly.
Benefits of Applying the Fix
- Supports strategic withdrawals by players.
- Prevents unfair loss of scores.
- Enhances fair PvP experience.
- Increases strategic depth in clan wars.
Debugging and Testing
After applying the fix, multiple scenarios should be tested on a test server. For instance, verify whether a player’s score remains intact after leaving and re-entering the battlefield. Additionally, check server logs for any error messages related to this process.
Conclusion
Preventing players from being removed from the scoreboard after exiting a clan war provides strategic advantages in Metin2 private servers. With this fix, players can make tactical decisions more comfortably. Such small yet impactful changes play a major role in increasing player satisfaction on your server.
