[C++] Düello Sırasında Şaman Buffları Gitsin

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

Admin

Metin2Lobby
Yönetici
Founder
Katılım
6 Mayıs 2022
Mesajlar
52,647
Ticaret : 1 / 0 / 0
pvp.cpp aç

#include "locale_service.h altına ekle

Kod:
#include "skill.h"


Pvp.cpp içinde ara void CPVPManager::Insert(LPCHARACTER pkChr, LPCHARACTER pkVictim)

Aşağıdaki kodu üstüne ekle

Kod:
const std::vector<WORD> GoodAffects = {     SKILL_HOSIN,     SKILL_REFLECT,     SKILL_GICHEON,     SKILL_KWAESOK,     SKILL_JEUNGRYEOK };


Pvp.cpp içinde ara pkChr->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("%s님과의 대결 시작!"), pkVictim->GetName());
Hemen altına ekle

Kod:
for (auto it : GoodAffects)             {                 if (pkChr->GetJob() != JOB_SHAMAN) {                     const CAffect * pkAff = pkChr->FindAffect(it);                     if (pkAff)                         pkChr->RemoveAffect(const_cast<CAffect *>(pkAff));                 }                                  if (pkVictim->GetJob() != JOB_SHAMAN) {                     const CAffect * pkAffVictim = pkVictim->FindAffect(it);                     if (pkAffVictim)                         pkVictim->RemoveAffect(const_cast<CAffect *>(pkAffVictim));                 }             }                          if (pkChr->GetJob() != JOB_SHAMAN)                 pkChr->ComputePoints();                          if (pkVictim->GetJob() != JOB_SHAMAN)                 pkVictim->ComputePoints();

Metin2 Özel Sunucularda C++ ile Şaman Bufflarının PvP Düello Esnasında Kaldırılması

Metin2 özel sunucu geliştirme sürecinde, oyuncuların PvP deneyimini daha adil ve dengeli hale getirmek için birçok mekanizma tasarlanır. Bu mekanizmalardan birisi de duello sistemidir. Özellikle PvP odaklı sunucularda, oyuncuların güçlerini dengelemek ve hileli avantajları ortadan kaldırmak önemlidir. Bu bağlamda, şaman sınıflarının verdiği buff efektlerinin, bir düello sırasında otomatik olarak kaldırılması gibi bir yapı oldukça faydalıdır. Bu yazıda, C++ dilinde yazılmış Metin2 sunucu kaynak kodlarında bu sistemin nasıl uygulanacağını adım adım inceleyeceğiz.

Neden Şaman Bufflarını Kaldırmalıyız?

Metin2’de şaman sınıfı, takım arkadaşlarına buff sağlayarak onların攻击力, savunma veya diğer özelliklerini artıran önemli bir rol üstlenir. Ancak PvP içeriğinde bu bufflar bazen dengesizlik yaratabilir. Örneğin, bir savaşçı veya ninja, şaman tarafından verilen güçlü bir saldırı buff’ı ile çok daha fazla hasar verebilir. Bu durum, özellikle duello gibi bireysel mücadelelerde adaletsizlik yaratır. Bu nedenle, duello başlatıldığında şaman buff efektlerinin otomatik olarak kaldırılması, oyun içi dengeyi korumanın önemli bir yoludur.

C++ ile Uygulama Adımları

1. Buff sistemini kontrol eden fonksiyonu tanımlamak gerekir. Metin2 sunucu kaynak kodlarında, oyuncuya ait buff listesi genellikle CHARACTER sınıfında tutulur. Burada, buff türlerini kontrol edip, şamana özgü olanları temizlemek için bir fonksiyon yazabiliriz.

2. Duello sistemi başlatılırken, buff temizleme fonksiyonunu çağırmak gerekir. Örneğin, StartDuel() fonksiyonu içinde şu şekilde bir işlem yapılabilir:

RemoveShamanBuffs(pPlayer1);
RemoveShamanBuffs(pPlayer2);

3. RemoveShamanBuffs() fonksiyonu, oyuncunun üzerindeki buff’ları tarar ve şaman kökenli olanları kaldırır. Bu işlem, buff ID listelerine göre yapılır. Her buff’un benzersiz bir ID numarası vardır ve bu ID’ler üzerinden filtreleme yapılır.

Önemli Not: Bu tür değişiklikler, hem game core hem de client tarafında senkron çalışmalıdır. Aksi takdirde, sunucuda kaldırılan buff, istemcide hâlâ görünmeye devam edebilir.

Sonuç

Metin2 özel sunucularında, PvP deneyimini daha adil ve eğlenceli hale getirmek için duello esnasında şaman buff’larının kaldırılması, oldukça yaygın bir geliştirme pratiğidir. C++ tabanlı sunucu geliştirme bilgisiyle, bu tür küçük ama etkili sistemler kolayca entegre edilebilir. Bu sayede hem oyuncu memnuniyeti artar hem de sunucu kalitesi yükselir. Daha fazla Metin2 geliştirici rehberi için Metin2Lobby sitesini takip etmeye devam edin.


Removing Shaman Buffs During Duels in Metin2 Private Servers with C++

In the process of developing Metin2 private servers, many mechanisms are designed to make the player versus player (PvP) experience more fair and balanced. One such mechanism is the duel system. In particular, for PvP-focused servers, balancing players' strengths and eliminating unfair advantages is crucial. In this context, automatically removing buff effects provided by shamans during duels can be highly beneficial. In this article, we will examine step by step how to implement this system within Metin2 server source code written in C++.

Why Should Shaman Buffs Be Removed?

In Metin2, the shaman class plays a vital role by providing buff effects that enhance teammates' attack power, defense, or other attributes. However, in PvP content, these buffs can sometimes cause imbalance. For instance, a warrior or ninja with a powerful attack buff from a shaman can deal significantly higher damage. This situation can create unfairness in individual combat scenarios like duels. Therefore, automatically removing shaman buffs upon initiating a duel is an important method to maintain in-game balance.

Implementation Steps in C++

1. Define a function to control the buff system. In Metin2 server source code, the list of buffs belonging to a player is typically stored in the CHARACTER class. Here, you can write a function to clean shaman-specific buffs by checking the types of buffs applied to the character.

2. When the duel system starts, call the buff removal function. For example, inside the StartDuel() function, you can perform actions like:

RemoveShamanBuffs(pPlayer1);
RemoveShamanBuffs(pPlayer2);

3. The RemoveShamanBuffs() function scans the buffs on the player and removes those originating from the shaman. This operation is performed based on buff IDs. Each buff has a unique ID number, and filtering is done according to these IDs.

Important Note: Such modifications must work synchronously on both the server side (game core) and the client side. Otherwise, a buff removed on the server might still appear on the client side.

Conclusion

In Metin2 private servers, removing shaman buffs during duels to make the PvP experience more fair and enjoyable is a common practice among developers. With knowledge of C++-based server development, such small yet impactful systems can be easily integrated. This approach increases both player satisfaction and server quality. For more Metin2 development guides, continue following the Metin2Lobby website.
 

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

Benzer konular

Geri
Üst Alt