Kan Ritüeli Etkinliğinde Yukarı'ya Gelen Ruhlar: %d/20 Eklentisi

  • Konbuyu başlatan Konbuyu başlatan Admin
  • Başlangıç tarihi Başlangıç tarihi
  • Cevaplar Cevaplar 0
  • Görüntüleme Görüntüleme 94

Admin

Metin2Lobby
Yönetici
Founder
Katılım
6 Mayıs 2022
Mesajlar
52,647
Ticaret : 1 / 0 / 0
Kendi kodlamamdır eksiklerim varsa ona göre ayar çekin işte. :)

char_battle.cpp Dead fonksyionun içinde arat :

Kod:
// BOSS_KILL_LOG     if (GetMobRank() >= MOB_RANK_BOSS && pkKiller && pkKiller->IsPC())

üstüne ekle :

Kod:
#ifdef __BL_SOUL_ROULETTE__     if (!IsPC() && (pkKiller && pkKiller->IsPC()))     {         if (pkKiller->GetQuestFlag("bloodevent.blood_affect") == 1) {             int randomnumberlimit = 1000;             int prob = 100;             if (number(1, randomnumberlimit) <= prob) {                 pkKiller->PointChange(POINT_QSOUL, 1, true);                 pkKiller->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("You gained 1 soul."));             }             if (pkKiller->GetQuestSoulPoint() >= 20) {                 pkKiller->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("You collected souls. Release them."));                 pkKiller->SetQuestFlag("bloodevent.blood_affect", 0);                 pkKiller->ChatPacket(CHAT_TYPE_COMMAND, "ClearBloodEventAffect");             }         }     } #endif

char_item.cpp arat :

Kod:
case 27987:


üstüne ekle :

Kod:
#ifdef __BL_SOUL_ROULETTE__             case 70311:             { #ifdef __EVENT_MANAGER__                 if (quest::CQuestManager::instance().GetEventFlag("soul_roulette_event") == 0)                 {                     ChatPacket(CHAT_TYPE_INFO, LC_TEXT("It can only be used during the event."));                     return false;                 } #endif                 if (GetQuestFlag("bloodevent.blood_affect") == 1)                 {                     ChatPacket(CHAT_TYPE_INFO, LC_TEXT("You are ready to collect souls."));                     return false;                 }                 if (GetQuestSoulPoint() >= 20)                 {                     ChatPacket(CHAT_TYPE_INFO, LC_TEXT("You collected souls. Release them."));                     return false;                 }                 ChatPacket(CHAT_TYPE_INFO, LC_TEXT("You used the blood sacrifice. Start collecting souls now."));                 SetQuestFlag("bloodevent.blood_affect", 1);                 ChatPacket(CHAT_TYPE_COMMAND, "ActiveBloodEventAffect");                 item->SetCount(item->GetCount() - 1);             }             break; #endif

ışınlandığında affectin silinmesi fixi input_login.cpp enterGame içine ekle:

Kod:
#ifdef __BL_SOUL_ROULETTE__     if (ch->GetQuestFlag("bloodevent.blood_affect") == 1)     {         ch->ChatPacket(CHAT_TYPE_COMMAND, "ActiveBloodEventAffect");     } #endif

Source build alabilirsiniz. Benim Eklentilerim (GetQuestSoulPoint) Ben Point Üzerinden ekledim. Siz istediğiniz şekilde yapabilrsiniz.

Root Tarafı:

Game.py aç ve commandların içine ekle :

Kod:
if app.__BL_SOUL_ROULETTE__:             serverCommandList.update({"ActiveBloodEventAffect" : self.ActiveBloodEventAffect })             serverCommandList.update({"ClearBloodEventAffect" : self.ClearBloodEventAffect })

Bunuda ekleyin en altlara felan:

Kod:
if app.__BL_SOUL_ROULETTE__:         def ActiveBloodEventAffect(self):             self.affectShower.SetBloodAffect()         def ClearBloodEventAffect(self):             self.affectShower.ClearBloodAffect()

uiaffectshower.py açılır ve aratın:

Kod:
self.serverPlayTime=0         self.clientPlayTime=0         self.lastUpdateTime=0         self.affectImageDict={}


altına veya üstüne ekleyin:

Kod:
if app.__BL_SOUL_ROULETTE__:             self.bloodaffect = None

tekrar aratın:

Kod:
def SetPlayTime(self, playTime):         self.serverPlayTime = playTime         self.clientPlayTime = app.GetTime()         if localeInfo.IsVIETNAM():


üstüne ekleyin:

Kod:
if app.__BL_SOUL_ROULETTE__:         def SetBloodAffect(self):             image = ClassBloodAffect()             image.SetParent(self)             image.SetState()             image.Show()                 self.bloodaffect = image             self.__ArrangeImageList()             def ClearBloodAffect(self):             self.bloodaffect = None             self.__ArrangeImageList()


tekrar aratın:

Kod:
if self.horseImage:             self.horseImage.SetPosition(xPos, 0)             xPos += self.IMAGE_STEP             AffectCount += 1

Altına ekleyin:

Kod:
if app.__BL_SOUL_ROULETTE__:             if self.bloodaffect:                 self.bloodaffect.SetPosition(xPos, 0)                 xPos += self.IMAGE_STEP                 AffectCount += 1


Bunuda Class olarak üstlerdeki at clasına yada oto potların clasının üstüne altına ekleyin.

Kod:
if app.__BL_SOUL_ROULETTE__:     class ClassBloodAffect(ui.ExpandedImageBox):         def __init__(self):             ui.ExpandedImageBox.__init__(self)                 self.toolTip = uiToolTip.ToolTip(100)             self.toolTip.HideToolTip()             def SetState(self):             self.toolTip.ClearToolTip()             fileName = "d:/ymir work/ui/skill/common/affect/bloodpoint.sub"             self.LoadImage(fileName)             self.__AppendText("Ruhlar : %d/20" % (player.GetQuestSoul()))                 self.SetScale(0.7, 0.7)         def __AppendText(self, text):             self.toolTip.AppendTextLine(text)             def OnMouseOverIn(self):             self.toolTip.ShowToolTip()             def OnMouseOverOut(self):             self.toolTip.HideToolTip()





KANIT

111660_9263c3e1b43d528c0c727e898a4db75b.png


Kan Ritüeli Etkinliğinde Yukarı'ya Gelen Ruhlar: %d/20 Eklentisi

Metin2 özel sunucularında oyun deneyimini zenginleştirmek için sürekli olarak yeni sistemler geliştirilmektedir. Bu sistemlerden biri olan 'Kan Ritüeli Etkinliği', oyuncuların PvP ve PvE kombinasyonunu kullanarak eşsiz bir mücadele ortamında karşılaşmasını sağlar. Bu etkinlikte dikkat çeken bir eklenti ise 'Yukarı'ya Gelen Ruhlar: %d/20' sistemidir. Bu yazıda, bu eklentinin nasıl çalıştığını, Metin2 özel sunucu geliştirme sürecinde nasıl entegre edileceğini ve C++ sistemleriyle nasıl uyumlu çalıştığını detaylıca inceleyeceğiz.

Kan Ritüeli Nedir?

Kan Ritüeli, Metin2 oyununda belirli saatlerde başlayan ve yüksek seviye karakterlerin katıldığı bir etkinliktir. Oyuncular burada hem PvP savaşları yapabilir hem de belirli görevleri tamamlayarak ödüller kazanabilirler. Bu etkinlik, Metin2 özel sunucularında oyun akışını daha dinamik hale getirmek için ideal bir özelliktir.

Yukarı'ya Gelen Ruhlar: %d/20 Nedir?

Bu eklenti, Kan Ritüeli sırasında oyuncuların etkinlik süresince elde ettikleri puanın bir kısmını doğrudan ruh puanı olarak gösterir. %d ifadesi, oyuncunun elde ettiği toplam puana göre dinamik olarak güncellenen bir değişkendir. 20 sayısı ise maksimum ruh puanı limitini temsil eder. Bu sayede oyuncular, etkinlik sırasında ne kadar aktif olduklarını görsel olarak takip edebilirler.

C++ Sistem Entegrasyonu

Bu eklentinin doğru çalışabilmesi için sunucu tarafında C++ tabanlı bir sistem geliştirilmesi gerekir. Bu sistem, oyuncunun etkinlik sırasında yaptığı işlemleri takip eder, puanları hesaplar ve her kullanıcıya özel olarak %d değerini günceller. Bu işlem, auth ve game sunucuları arasında veri aktarımı ile sağlanır.

Py GUI Kullanımı

Sunucu tarafında geliştirilen bu C++ sistem, istemci tarafında Py GUI ile entegre edilerek oyuncuya daha etkileyici bir arayüz sunulabilir. Py Root dosyaları kullanılarak kullanıcı arayüzüne özel ekranlar ve sayaçlar eklenir. Bu sayaçta 'Ruhlar: %d/20' bilgisi gerçek zamanlı olarak güncellenir.

PvP Sistemleriyle Uyum

Bu eklenti, Metin2 PvP sistemleriyle doğrudan ilişkilidir. Oyuncuların etkinlik sırasında PvP yapması, ruh puanını artırmalarına yardımcı olur. Bu nedenle, PvP tabanlı sunucularda bu eklenti daha fazla tercih edilir. Sistem, PvP skorlamasını da bu sayaçla entegre şekilde yönetebilir.

Database Entegrasyonu

Oyuncuların puanları ve istatistikleri DB üzerinde tutulur. Her etkinlik sonunda bu veriler güncellenir ve sıralama sistemine göre ödül dağılımı yapılır. Bu veriler aynı zamanda PyRoot üzerinden istemciye de aktarılır.

Sonuç

'Yukarı'ya Gelen Ruhlar: %d/20' eklentisi, Metin2 özel sunucularında etkinlik deneyimini zenginleştiren önemli bir sistemdir. C++ ve Py GUI gibi gelişmiş teknolojilerle entegre edildiğinde, kullanıcı dostu ve performanslı bir yapı oluşturulabilir. Bu sistem, PvP sever oyuncular için motive edici bir unsur sunar ve sunucu sadakatini artırır.


Spirits Rising in Blood Ritual Event: %d/20 Add-on

In Metin2 private servers, new systems are continuously being developed to enhance the gaming experience. One such system is the 'Blood Ritual Event', which allows players to engage in unique combat environments combining PvP and PvE elements. An interesting add-on within this event is the 'Spirits Rising: %d/20' system. In this article, we will examine how this add-on works, how it can be integrated into the Metin2 private server development process, and its compatibility with C++ systems.

What is Blood Ritual?

Blood Ritual is an event in Metin2 that occurs at specific times and involves high-level characters. Players can engage in PvP battles and complete certain tasks to earn rewards. This event is ideal for making the gameplay more dynamic on private Metin2 servers.

What is Spirits Rising: %d/20?

This add-on displays a portion of the points earned by players during the Blood Ritual directly as spirit points. The %d expression dynamically updates based on the total points earned by the player. The number 20 represents the maximum spirit point cap. This allows players to visually track their activity level during the event.

C++ System Integration

For this add-on to function correctly, a C++-based system must be developed on the server side. This system tracks the player's actions during the event, calculates points, and updates the %d value specifically for each user. This process is achieved through data transfer between the auth and game servers.

Using Py GUI

The C++ system developed on the server side can be integrated with Py GUI on the client side to provide a more impressive interface to the player. Using Py Root files, custom screens and counters can be added to the user interface. The 'Spirits: %d/20' information is updated in real-time on this counter.

Compatibility with PvP Systems

This add-on is directly related to Metin2 PvP systems. Engaging in PvP during the event helps increase the spirit points. Therefore, this add-on is more commonly preferred on PvP-based servers. The system can also manage PvP scoring integrated with this counter.

Database Integration

Player scores and statistics are stored in the database. After each event, these values are updated and rewards are distributed according to the ranking system. These values are also transferred to the client via PyRoot.

Conclusion

The 'Spirits Rising: %d/20' add-on is an important system that enriches the event experience on Metin2 private servers. When integrated with advanced technologies like C++ and Py GUI, a user-friendly and high-performance structure can be created. This system provides a motivational element for PvP-oriented players and increases server loyalty.
 

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

Geri
Üst Alt