[C++,PY] Gelişmiş Lonca Savaşı İlanı Sistemi

  • 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
Forumda bu sistemin benzeri şekilde 2 tane paylaşım yapılmış iki konuda sorunlu ve çalışmamaktadır gerek yorumlarda gerekte forumda bu sistem ile ilgili konular açılmış ve herhangi bir sonuca ulaşılmamış o yüzden paylaşma gereğinde bulundum. Sorunsuz çalışmaktadır ve paylaşılanlardan farklıdır. Kanıtta görüldüğü gibi max oyuncu, max skor , min level olmak üzere 3 tane opsiyonu bulunmaktadır işi bilen rahatlıkla opsiyonları arttırabilir.




## MAX PLAYER ÇALIŞMAMA SORUNU ÇÖZÜMÜ ##

input_login.cpp içinde bul


Kod:
if (ch->GetMapIndex() >= 10000)     {         if (CWarMapManager::instance().IsWarMap(ch->GetMapIndex()))             ch->SetWarMap(CWarMapManager::instance().Find(ch->GetMapIndex()));         else if (marriage::WeddingManager::instance().IsWeddingMap(ch->GetMapIndex()))             ch->SetWeddingMap(marriage::WeddingManager::instance().Find(ch->GetMapIndex()));         else {             ch->SetDungeon(CDungeonManager::instance().FindByMapIndex(ch->GetMapIndex()));         }     }

değiştir

Kod:
if (ch->GetMapIndex() >= 10000)     {         if (CWarMapManager::instance().IsWarMap(ch->GetMapIndex()))         {             CWarMap * pMap = CWarMapManager::instance().Find(ch->GetMapIndex());             if (pMap)             {                 BYTE bIdx;                 if (ch->GetGuild() && pMap->GetTeamIndex(ch->GetGuild()->GetID(), bIdx))                 {                     // sys_err("[TEST]Current: %d Max: %d", pMap->GetCurrentPlayer(bIdx), pMap->GetMaxPlayer(bIdx));                     if (pMap->GetCurrentPlayer(bIdx) + 1 > quest::CQuestManager::instance().GetEventFlagBR("maxplayer", ch->GetGuild()->GetName())) {                         ch->ChatPacket(CHAT_TYPE_BIG_NOTICE, "oyuncu limiti dolu!");                         ch->GoHome();                         return;                     }                 }             }             ch->SetWarMap(pMap);         }         else if (marriage::WeddingManager::instance().IsWeddingMap(ch->GetMapIndex())) {             ch->SetWeddingMap(marriage::WeddingManager::instance().Find(ch->GetMapIndex()));         }         else {             ch->SetDungeon(CDungeonManager::instance().FindByMapIndex(ch->GetMapIndex()));         }     }

war_map.cpp bul

Kod:
DWORD CWarMap::GetGuildID(BYTE bIdx)

kod bloğu altına ekle

Kod:
int CWarMap::GetCurrentPlayer(BYTE bIdx) {     assert(bIdx < 2);     return m_TeamData[bIdx].iMemberCount; }

war_map.h bul

Kod:
DWORD    GetGuildID(BYTE bIdx);

altına ekle

Kod:
int        GetCurrentPlayer(BYTE bIdx);


## KENDİ SUNUCUMDAN KANIT ##

20729_2e7a2142decb6158fc65e1369e9aed7c.png

Gelişmiş Lonca Savaşı İlanı Sistemi Nedir?
Metin2 özel sunucularında PvP oyun deneyimini zenginleştirmek amacıyla geliştirilen lonca savaşları, oyuncuların stratejik planlamalarla birlikte koordineli hareket etmesini sağlar. Bu doğrultuda, loncalar arası savaşlar öncesi veya sırasında bir ilan sistemi kurmak, hem savaş hazırlıklarını organize etmekte hem de taktiksel avantajlar sağlamaktadır. Bu yazıda, C++ ve Python dilleri kullanılarak geliştirilmiş gelişmiş bir lonca savaş ilanı sistemi detaylandırılmaktadır.

Sistem Genel Yapısı
Bu sistem, hem sunucu tarafında (game server) çalışan C++ tabanlı bir yapıya hem de istemci tarafında (client) Python GUI üzerinden çalışan bir arayüze sahiptir. Ana odak noktası, lonca liderlerinin savaş zamanı, konumu ve diğer önemli detayları kolayca ilan edebilmesidir. Ayrıca, bu ilanlar sunucu veritabanında (DB) saklanarak tüm sunucu üyeleri tarafından erişilebilir hale getirilir.

C++ Tarafında Geliştirilen Fonksiyonlar
Sunucu tarafında, game core üzerine entegre edilen bu sistem, lonca verileriyle entegre çalışır. Lonca lideri bir savaş ilanı yaptığında, ilgili veriler doğrudan db üzerinden kaydedilir. Aynı zamanda, ilan edilen savaş bilgileri broadcast yöntemiyle tüm oyunculara anons edilir. Bu sayede, tüm sunucu üyeleri savaş öncesi hazırlık yapabilir ve strateji geliştirebilir.

Python GUI ile Kullanıcı Dostu Arayüz
İstemci tarafında ise py root dosyaları kullanılarak bir GUI arayüzü hazırlanmıştır. Bu arayüz sayesinde, lonca lideri kolayca savaş ilanı oluşturabilir. Form üzerinde; hedef lonca, savaş zamanı, savaş bölgesi gibi bilgiler girilir. Ardından, UIScript üzerinden sunucuya gönderilir. Bu arayüz aynı zamanda mevcut savaş ilanlarını listeleme ve filtreleme imkanı da sunar.

Avantajlar ve Özellikler
  • Gerçek zamanlı savaş ilanları
  • Tüm loncalar için merkezi ilan panosu
  • Zaman tabanlı ve konum bazlı filtreleme
  • Otomatik anons sistemi
  • Veritabanında kalıcı kayıt
  • Kolay entegrasyon (src edit)

Kurulum ve Entegrasyon
Bu sistem, Metin2 server src dosyalarına entegre edilebilecek şekilde tasarlanmıştır. Kurulum için gerekli pack dosyaları, auth server ve game server yapılandırmalarıyla birlikte sağlanır. Sistem, Martysama gibi popüler geliştirme platformlarıyla uyumlu çalışacak şekilde optimize edilmiştir.

Sonuç
Lonca savaşları, Metin2'nin en keyifli ve rekabetçi yönlerinden biridir. Bu gelişmiş ilan sistemi sayesinde, savaşlar daha organize, stratejik ve adil bir hale gelmektedir. Hem PvP severler hem de lonca liderleri için değerli bir araçtır. Sistemin C++ ve Python tabanlı yapısı, gelişmiş Metin2 development becerilerini gerektirir, ancak kullanıcı dostu arayüzü sayesinde kullanımı oldukça kolaydır.


What is Advanced Guild War Announcement System?
Guild wars are designed to enhance the PvP experience on Metin2 private servers by encouraging strategic planning and coordinated movements between guilds. To this end, setting up an announcement system before or during guild battles helps organize war preparations and provides tactical advantages. In this article, we will detail an advanced guild war announcement system developed using C++ and Python.

System Overview
The system includes both a C++-based structure running on the server side (game server) and a client-side interface operating via Python GUI. The main focus is allowing guild leaders to easily announce battle times, locations, and other important details. Additionally, these announcements are stored in the server database (DB), making them accessible to all members of the server.

Functions Developed in C++
On the server side, integrated into the game core, this system works in harmony with guild data. When a guild leader makes a war announcement, the related data is directly saved to the db. At the same time, the announced war information is broadcasted to all players using the broadcast method. This allows all server members to prepare for the battle and develop strategies.

User-Friendly Interface with Python GUI
On the client side, a GUI interface has been created using py root files. Through this interface, guild leaders can easily create war announcements. The form includes fields such as target guild, battle time, and battle zone. Then, the data is sent to the server through UIScript. This interface also allows listing and filtering existing war announcements.

Benefits and Features
  • Real-time war announcements
  • Centralized war board for all guilds
  • Time-based and location-based filtering
  • Automatic announcement system
  • Permanent records in the database
  • Easy integration (src edit)

Installation and Integration
This system is designed to be integrated into Metin2 server src files. The necessary pack files for installation come with configurations for auth server and game server. The system is optimized to work seamlessly with popular development platforms like Martysama.

Conclusion
Guild wars represent one of the most enjoyable and competitive aspects of Metin2. Thanks to this advanced announcement system, battles become more organized, strategic, and fair. It is a valuable tool for both PvP enthusiasts and guild leaders. The C++ and Python based architecture requires advanced Metin2 development skills, but its user-friendly interface makes it easy to use.
 

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

Benzer konular

Geri
Üst Alt