Sorunsuz Şaman Party Flag

  • 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
Merhabalar,

Arkadaşlar forumumuzda birçok şaman party flag sistemi paylaşılmış fakat hiçbiri sorunsuz çalışmıyor aslında
Pelin arkadaşımızın paylaştığı olması gerektiği gibi fakat birçok kişi şaman sadece grubtakileri kutsamasını istemez bu yüzden bu konuyu paylaşmak istedim.

Anlatım ;

Char_skill.cpp Açılır Aratılır

Kod:
static const DWORD s_adwSubSkillVnums[*] = {     SKILL_LEADERSHIP,     SKILL_COMBO,     SKILL_MINING,     SKILL_LANGUAGE1,     SKILL_LANGUAGE2,     SKILL_LANGUAGE3,     SKILL_POLYMORPH,     SKILL_HORSE,     SKILL_HORSE_SUMMON,     SKILL_HORSE_WILDATTACK,     SKILL_HORSE_CHARGE,     SKILL_HORSE_ESCAPE,     SKILL_HORSE_WILDATTACK_RANGE,     SKILL_ADD_HP,     SKILL_RESIST_PENETRATE };

Kod Satırının Altına Eklenir

Kod:
struct FPartyPIDCollector {     std::vector <DWORD> vecPIDs;     FPartyPIDCollector()     {     }     void operator () (LPCHARACTER ch)     {         vecPIDs.push_back(ch->GetPlayerID());     } };


Char_skill.cpp Aratılır

Kod:
if (IS_SET(pkSk->dwFlag, SKILL_FLAG_SELFONLY))         pkVictim = this;

Altına Eklenir

Kod:
if (IS_SET(pkSk->dwFlag, SKILL_FLAG_PARTY) && !GetParty() && !pkVictim)         pkVictim = this;

Char_skill.cpp Aratılır

Kod:
if (IS_SET(pkSk->dwFlag, SKILL_FLAG_SELFONLY))         pkVictim = this;

Altına Eklenir

Kod:
if (IS_SET(pkSk->dwFlag, SKILL_FLAG_PARTY) && !GetParty() && !pkVictim)         pkVictim = this;

Char_skill.cpp Aratılır

Kod:
if (IS_SET(pkSk->dwFlag, SKILL_FLAG_SELFONLY))         ComputeSkill(dwVnum, this);         else if (!IS_SET(pkSk->dwFlag, SKILL_FLAG_ATTACK))         ComputeSkill(dwVnum, pkVictim);     else if (dwVnum == SKILL_BYEURAK)         ComputeSkill(dwVnum, pkVictim);     else if (dwVnum == SKILL_MUYEONG || pkSk->IsChargeSkill())         ComputeSkill(dwVnum, pkVictim);     m_dwLastSkillTime = get_dword_time();     return true; }

Değiştirilir

Kod:
if (IS_SET(pkSk->dwFlag, SKILL_FLAG_SELFONLY))         ComputeSkill(dwVnum, this);         else if (IS_SET(pkSk->dwFlag, SKILL_FLAG_PARTY) && !GetParty() && !pkVictim)         ComputeSkill(dwVnum, this);     else if (IS_SET(pkSk->dwFlag, SKILL_FLAG_PARTY) && GetParty())     {         FPartyPIDCollector f;         GetParty()->ForEachOnMapMember(f, GetMapIndex());         for (std::vector <DWORD>::iterator it = f.vecPIDs.begin(); it != f.vecPIDs.end(); it++)         {             LPCHARACTER ch = CHARACTER_MANAGER::instance().FindByPID(*it);             ComputeSkill(dwVnum, ch);          }     }     else if (!IS_SET(pkSk->dwFlag, SKILL_FLAG_ATTACK))         ComputeSkill(dwVnum, pkVictim);     else if (dwVnum == SKILL_BYEURAK)         ComputeSkill(dwVnum, pkVictim);     else if (dwVnum == SKILL_MUYEONG || pkSk->IsChargeSkill())         ComputeSkill(dwVnum, pkVictim);     m_dwLastSkillTime = get_dword_time();     return true; }

Guild.cpp Açılır Aratılır

Kod:
if ((pkSk->dwFlag & SKILL_FLAG_SELFONLY))     {         // ÀÌ¹Ì °É·Á ÀÖÀ¸¹Ç·Î »ç¿ëÇÏÁö ¾ÊÀ½.         if (ch->FindAffect(pkSk->dwVnum))             return;         victim = ch;     }

Altına Eklenir

Kod:
if ((pkSk->dwFlag & SKILL_FLAG_PARTY))     {         if (ch->FindAffect(pkSk->dwVnum))             return;           victim = ch;     }

skill.h Açılır Aratılır

Kod:
SKILL_FLAG_CRUSH_LONG        = (1 << 23),    // »ó´ë¹æÀ» ¸Ö¸® ³¯¸²     SKILL_FLAG_WIND        = (1 << 24),    // ¹Ù¶÷ ¼Ó¼º      SKILL_FLAG_ELEC        = (1 << 25),    // Àü±â ¼Ó¼º     SKILL_FLAG_FIRE        = (1 << 26),

Değiştirilir

Kod:
SKILL_FLAG_CRUSH_LONG        = (1 << 23),    // »ó´ë¹æÀ» ¸Ö¸® ³¯¸²     SKILL_FLAG_PARTY            = (1 << 24),    // Party Flag     SKILL_FLAG_WIND        = (1 << 25),    // ¹Ù¶÷ ¼Ó¼º      SKILL_FLAG_ELEC        = (1 << 26),    // Àü±â ¼Ó¼º     SKILL_FLAG_FIRE        = (1 << 27),

Mysql
Player>Skill_proto Masaüstüne Dump SQL File Yapılır ve Notepad İle Açılır.

Aratılır

Kod:
`setFlag` set('ATTACK','USE_MELEE_DAMAGE','COMPUTE_ATTGRADE'  ,'SELFONLY','USE_MAGIC_DAMAGE','USE_HP_AS_COST','C  OMPUTE_MAGIC_DAMAGE','SPLASH','GIVE_PENALTY','USE_  ARROW_DAMAGE','PENETRATE','IGNORE_TARGET_RATING','  ATTACK_SLOW','ATTACK_STUN','HP_ABSORB','SP_ABSORB'  ,'ATTACK_FIRE_CONT','REMOVE_BAD_AFFECT','REMOVE_GO  OD_AFFECT','CRUSH','ATTACK_POISON','TOGGLE','DISAB  LE_BY_POINT_UP','CRUSH_LONG') DEFAULT NULL,

Değiştirilir

Kod:
`setFlag` set('ATTACK','USE_MELEE_DAMAGE','COMPUTE_ATTGRADE'  ,'SELFONLY','USE_MAGIC_DAMAGE','USE_HP_AS_COST','C  OMPUTE_MAGIC_DAMAGE','SPLASH','GIVE_PENALTY','USE_  ARROW_DAMAGE','PENETRATE','IGNORE_TARGET_RATING','  ATTACK_SLOW','ATTACK_STUN','HP_ABSORB','SP_ABSORB'  ,'ATTACK_FIRE_CONT','REMOVE_BAD_AFFECT','REMOVE_GO  OD_AFFECT','CRUSH','ATTACK_POISON','TOGGLE','DISAB  LE_BY_POINT_UP','CRUSH_LONG','PARTY') DEFAULT NULL,

Kaydedilir ve sql Mysql>player'e Okutulur.

Kanıt


Başka Bir Forumdan Alıntıdır.

Sorunsuz Şaman Party Flag Sistemi Nasıl Kurulur?


Metin2 özel sunucularında PvP ve party sistemleri, oyuncu deneyimini ciddi anlamda etkileyen önemli özelliktir. Özellikle Şaman sınıfının party içindeki rolleri ve yetenekleri, doğru yönetildiğinde takım içi iş birliğini artırır. Ancak bazı durumlarda, şamanların party içinde flag sisteminden dolayı sorun yaşamaması için özel ayarlamalar yapılması gerekir. Bu yazıda, Sorunsuz Şaman Party Flag sisteminin nasıl kurulacağını ve hangi dosya düzenlemelerinin yapılacağını detaylıca ele alacağız.

Party Flag Sistemi Nedir?

Metin2’de party içinde flag sistemleri, belirli sınıfların veya oyuncuların birbirine zarar vermemesi için kullanılır. Bu sistem genellikle PvP sunucularında aktif edilir. Ancak bazen Şaman sınıfı gibi destek veren karakterler, party içinde flag alması nedeniyle istemeden zarar verebilir veya party üyeleri tarafından zarar görebilir. Bu durumu engellemek için özel bir flag sistemi tasarlanabilir.

Neden Sorunsuz Bir Sistem Gereklidir?

Bazı Metin2 özel sunucularında, şaman sınıfı party içindeyken flag alabiliyor. Bu da takım içi dengesizliği artırıyor. Oyuncuların bu konuda şikayetçi olmaması için flag sisteminin doğru şekilde yapılandırılması gerekir. Bu sistem, C++ tabanlı server src üzerinde düzenlenmelidir.

Kurulum İçin Gerekli Dosyalar ve Düzenlemeler

Öncelikle game server kaynak kodlarınıza erişmeniz gerekir. Party sistemi ile ilgili dosyalara göz atmalısınız. Genellikle party.cpp, char_manager.cpp gibi dosyalar üzerinde değişiklik yapmanız gerekebilir. Shaman sınıfının party flag kontrolü bu dosyalar üzerinden yapılır. Bu değişiklikler C++ bilgisi gerektirir. Metin2 development sürecinde bu tür sistemler genellikle source edit yoluyla yapılır.

Python Script Entegrasyonu

Eğer Metin2 özel sunucunuzda Python tabanlı sistemler varsa, py root ve uiscript dosyaları üzerinden de flag sistemini kontrol edebilirsiniz. Ancak bu yöntem daha çok istemci tarafında görsel değişiklikler için uygundur. Sunucu tarafında flag kontrolü için C++ tercih edilmelidir.

Olası Hatalar ve Çözüm Yolları

Compile işlemi sırasında hata alındığında, party fonksiyonlarında tanımlanan flag kontrol mekanizması eksik ya da yanlış tanımlanmış olabilir. Hata mesajlarını dikkatlice okumalı ve db veya auth sunucusuyla olan bağlantıyı kontrol etmelisiniz. Ayrıca martysama forumları gibi topluluklardan yardım alabilirsiniz.

Sonuç

Sorunsuz Şaman Party Flag sistemi, Metin2 özel sunucularında takım içi dengeyi korumak için hayati öneme sahiptir. Doğru şekilde yapılandırıldığında, hem PvP keyfi artar hem de şaman sınıfının rolü daha etkin hale gelir. Bu tür sistemlerin kurulumu ve testi için Metin2dev ve game core bilgisi oldukça önemlidir.


How to Install a Seamless Shaman Party Flag System?


In Metin2 private servers, PvP and party systems are vital features that significantly impact the player experience. Especially the roles and abilities of the Shaman class within a party can enhance team collaboration when properly managed. However, sometimes shamans may encounter issues with the flag system inside parties, which requires special configurations. In this article, we will explain in detail how to install a Seamless Shaman Party Flag system and what file modifications need to be made.

What Is the Party Flag System?

In Metin2, the flag system prevents certain classes or players from damaging each other while in a party. This system is typically enabled on PvP servers. However, sometimes the Shaman class might receive a flag within a party, causing unintended damage or receiving damage from party members. To prevent such situations, a custom flag system can be designed.

Why Is a Seamless System Necessary?

On some Metin2 private servers, the shaman class can receive flags while in a party, increasing imbalance within the team. To avoid player complaints about this issue, the flag system must be configured correctly. This system should be adjusted within the C++-based server src.

Required Files and Modifications for Installation

Firstly, you need access to your Metin2 server source files. You should review files related to the party system. Usually, modifications are needed in files like party.cpp and char_manager.cpp. The flag control for the Shaman class is handled through these files. These changes require C++ knowledge and are often done via source edit during the Metin2 development process.

Python Script Integration

If your Metin2 private server uses Python-based systems, you can also control the flag system via py root and uiscript files. However, this method is more suitable for visual changes on the client side. For server-side flag control, C++ is recommended.

Possible Errors and Solutions

During the compile process, if errors occur, the flag control mechanism defined in the party functions may be missing or incorrectly defined. You should carefully read error messages and check the connection between the db or auth server. Additionally, you can seek help from communities like martysama.

Conclusion

The Seamless Shaman Party Flag system is crucial for maintaining team balance in Metin2 private servers. When configured correctly, it enhances both PvP fun and the active role of the shaman class. Installing and testing such systems requires strong knowledge of Metin2dev and game core.
 

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

Geri
Üst Alt