Silah Bonuslarına Karşı Güçlü [lua]

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

Admin

Metin2Lobby
Yönetici
Founder
Katılım
6 Mayıs 2022
Mesajlar
52,647
Ticaret : 1 / 0 / 0
Sunucu Tarafı

service.n dosyasını açın ve ekleyin:

Kod:
#define ENABLE_BONUS_STRONG_AGAINST_WEAPON

length.h aç ve bul:

Kod:
APPLY_ANTI_PENETRATE_PCT, (or last of urs bonuses)

ekle:

Kod:
#ifdef ENABLE_BONUS_STRONG_AGAINST_WEAPON     APPLY_ATTBONUS_SWORD,            // 92     APPLY_ATTBONUS_TWOHANDED,        // 93     APPLY_ATTBONUS_DAGGER,            // 94     APPLY_ATTBONUS_BELL,            // 95     APPLY_ATTBONUS_FAN,                // 96     APPLY_ATTBONUS_BOW,                // 97 #endif

ProtoReader.cpp dosyasını aç ve arat:

"APPLY_ANTI_PENETRATE_PCT", (or last of urs bonuses)

ekle:

Kod:
#ifdef ENABLE_BONUS_STRONG_AGAINST_WEAPON         , "APPLY_ATTBONUS_SWORD"         "APPLY_ATTBONUS_TWOHANDED",         "APPLY_ATTBONUS_DAGGER",         "APPLY_ATTBONUS_BELL",         "APPLY_ATTBONUS_FAN",         "APPLY_ATTBONUS_BOW" #endif

Battle.cpp ve inf int CalcAttBonus'u bul:

Kod:
if (pkAttacker->IsNPC() && pkVictim->IsPC())     {         iAtk = (iAtk * CHARACTER_MANAGER::instance().GetMobDamageRate(pkAttacker)) / 100;     }

ekle:

Kod:
#ifdef ENABLE_BONUS_STRONG_AGAINST_WEAPON     if (pkVictim->IsPC())     {         LPITEM pkWeapon = pkVictim->GetWear(WEAR_WEAPON);         if (pkWeapon)         {             switch (pkWeapon->GetSubType())             {                 case WEAPON_SWORD:                     iAtk += (iAtk * pkAttacker->GetPoint(POINT_ATTBONUS_SWORD)) / 100;                     break;                 case WEAPON_TWO_HANDED:                     iAtk += (iAtk * pkAttacker->GetPoint(POINT_ATTBONUS_TWOHANDED)) / 100;                     break;                 case WEAPON_DAGGER:                     iAtk += (iAtk * pkAttacker->GetPoint(POINT_ATTBONUS_DAGGER)) / 100;                     break;                 case WEAPON_BELL:                     iAtk += (iAtk * pkAttacker->GetPoint(POINT_ATTBONUS_BELL)) / 100;                     break;                 case WEAPON_FAN:                     iAtk += (iAtk * pkAttacker->GetPoint(POINT_ATTBONUS_FAN)) / 100;                     break;                 case WEAPON_BOW:                     iAtk += (iAtk * pkAttacker->GetPoint(POINT_ATTBONUS_BOW)) / 100;                     break;             }         }     } #endif

char.cpp içinde bul:

case POINT_ATTBONUS_DEVIL: // 47

ekle:

Kod:
#ifdef ENABLE_BONUS_STRONG_AGAINST_WEAPON     case POINT_ATTBONUS_SWORD:     case POINT_ATTBONUS_TWOHANDED:     case POINT_ATTBONUS_DAGGER:     case POINT_ATTBONUS_BELL:     case POINT_ATTBONUS_FAN:     case POINT_ATTBONUS_BOW: #endif

bul: (CHARACTER :: ApplyPoint içinde)

ekle:

Kod:
#ifdef ENABLE_BONUS_STRONG_AGAINST_WEAPON     case APPLY_ATTBONUS_SWORD:     case APPLY_ATTBONUS_TWOHANDED:     case APPLY_ATTBONUS_DAGGER:     case APPLY_ATTBONUS_BELL:     case APPLY_ATTBONUS_FAN:     case APPLY_ATTBONUS_BOW: #endif

char.h içerisinde bul:

POINT_RESIST_PENETRATE = 137,

ekle:

Kod:
#ifdef ENABLE_BONUS_STRONG_AGAINST_WEAPON     POINT_ATTBONUS_SWORD = 138,     POINT_ATTBONUS_TWOHANDED = 139,     POINT_ATTBONUS_DAGGER = 140,     POINT_ATTBONUS_BELL = 141,     POINT_ATTBONUS_FAN = 142,     POINT_ATTBONUS_BOW = 143, #endif

cmd_general.cpp dosyasında bul:

case POINT_RESIST_SHAMAN: return LC_TEXT("ą«´ç°ř°Ýżˇ %d%% ŔúÇ×");

ekle:

Kod:
#ifdef ENABLE_BONUS_STRONG_AGAINST_WEAPON     case POINT_ATTBONUS_SWORD:    return LC_TEXT("Sword resistance: %d%%");     case POINT_ATTBONUS_TWOHANDED:    return LC_TEXT("Two Hand resistance: %d%%");     case POINT_ATTBONUS_DAGGER:    return LC_TEXT("Dagger resistance: %d%%");     case POINT_ATTBONUS_BELL:    return LC_TEXT("Bell resistance: %d%%");     case POINT_ATTBONUS_FAN:    return LC_TEXT("Fan resistance: %d%%");     case POINT_ATTBONUS_BOW:    return LC_TEXT("Bow resistance: %d%%"); #endif

constants.cpp dosyasında bul:

{ POINT_RESIST_PENETRATE, }, // APPLY_ANTI_PENETRATE_PCT, 91

ekle:

Kod:
#ifdef ENABLE_BONUS_STRONG_AGAINST_WEAPON     { POINT_ATTBONUS_SWORD,        },     { POINT_ATTBONUS_TWOHANDED,        },     { POINT_ATTBONUS_DAGGER,        },     { POINT_ATTBONUS_BELL,        },     { POINT_ATTBONUS_FAN,        },     { POINT_ATTBONUS_BOW,        }, #endif

bul:

{ "MELEE_MAGIC_ATTBONUS_PER", APPLY_MELEE_MAGIC_ATTBONUS_PER },

ekle:

Kod:
#ifdef ENABLE_BONUS_STRONG_AGAINST_WEAPON     { "ATT_BONUS_TO_SWORD",    APPLY_ATTBONUS_SWORD    },     { "ATT_BONUS_TO_TWOHAND",    APPLY_ATTBONUS_TWOHANDED    },     { "ATT_BONUS_TO_DAGGER",    APPLY_ATTBONUS_DAGGER    },     { "ATT_BONUS_TO_BELL",    APPLY_ATTBONUS_BELL    },     { "ATT_BONUS_TO_FAN",    APPLY_ATTBONUS_FAN    },     { "ATT_BONUS_TO_BOW",    APPLY_ATTBONUS_BOW    }, #endif

Client ve Source tarafı

Locale_inc.h dosyasını aç ve istediğiniz yere ekleyin:

#define ENABLE_BONUS_STRONG_AGAINST_WEAPON

packet.h dosyasını aç ve aşağıdakini bulun:

POINT_RESIST_PENETRATE = 137,

ekle:

Kod:
#ifdef ENABLE_BONUS_STRONG_AGAINST_WEAPON         POINT_ATTBONUS_SWORD = 138,         POINT_ATTBONUS_TWOHANDED = 139,         POINT_ATTBONUS_DAGGER = 140,         POINT_ATTBONUS_BELL = 141,         POINT_ATTBONUS_FAN = 142,         POINT_ATTBONUS_BOW = 143, #endif

itemdata.h dosyasını aç ve aşağıdakini bulun:

APPLY_ANTI_PENETRATE_PCT, //91

ekle:

Kod:
#ifdef ENABLE_BONUS_STRONG_AGAINST_WEAPON             APPLY_ATTBONUS_SWORD,            // 92             APPLY_ATTBONUS_TWOHANDED,        // 93             APPLY_ATTBONUS_DAGGER,            // 94             APPLY_ATTBONUS_BELL,            // 95             APPLY_ATTBONUS_FAN,                // 96             APPLY_ATTBONUS_BOW,                // 97 #endif

PythonItemModule.cpp dosyasını aç ve alttakini bul:

PyModule_AddIntConstant(poModule, "APPLY_ANTI_PENETRATE_PCT", CItemData::APPLY_ANTI_PENETRATE_PCT);

ekle:

Kod:
#ifdef ENABLE_BONUS_STRONG_AGAINST_WEAPON     PyModule_AddIntConstant(poModule, "APPLY_ATTBONUS_SWORD", CItemData::APPLY_ATTBONUS_SWORD);     PyModule_AddIntConstant(poModule, "APPLY_ATTBONUS_TWOHANDED", CItemData::APPLY_ATTBONUS_TWOHANDED);     PyModule_AddIntConstant(poModule, "APPLY_ATTBONUS_DAGGER", CItemData::APPLY_ATTBONUS_DAGGER);     PyModule_AddIntConstant(poModule, "APPLY_ATTBONUS_BELL", CItemData::APPLY_ATTBONUS_BELL);     PyModule_AddIntConstant(poModule, "APPLY_ATTBONUS_FAN", CItemData::APPLY_ATTBONUS_FAN);     PyModule_AddIntConstant(poModule, "APPLY_ATTBONUS_BOW", CItemData::APPLY_ATTBONUS_BOW); #endif

Dump Proto source:

ItemCSVReader.cpp dosyasını aç ve içinde bulun (arApplyType[*] dizesinde):

"APPLY_ANTI_PENETRATE_PCT",

sonra ekle:

Kod:
"APPLY_ATTBONUS_SWORD","APPLY_ATTBONUS_TWOHANDED","APPLY_ATTBONUS_DAGGER","APPLY_ATTBONUS_BELL","APPLY_ATTBONUS_FAN","APPLY_ATTBONUS_BOW",

Client root/locale bölümü:

uiToolTip.py dosyasını aç ve bul:

item.APPLY_ANTI_PENETRATE_PCT : locale.TOOLTIP_ANTI_PENETRATE_PCT,

ekle:

Kod:
item.APPLY_ATTBONUS_SWORD : locale.TOOLTIP_ATTBONUS_SWORD,         item.APPLY_ATTBONUS_TWOHANDED : locale.TOOLTIP_ATTBONUS_TWOHANDED,         item.APPLY_ATTBONUS_DAGGER : locale.TOOLTIP_ATTBONUS_DAGGER,         item.APPLY_ATTBONUS_BELL : locale.TOOLTIP_ATTBONUS_BELL,         item.APPLY_ATTBONUS_FAN : locale.TOOLTIP_ATTBONUS_FAN,         item.APPLY_ATTBONUS_BOW : locale.TOOLTIP_ATTBONUS_BOW,

locale_game.txt klasörünü locale klasörünün içerisinde bulun ve açın, sonuna ekleyin:

Kod:
TOOLTIP_ATTBONUS_SWORD    Strong Against Sword +%d%%    SA TOOLTIP_ATTBONUS_TWOHANDED    Strong Against Two-Handed Weapon +%d%%    SA TOOLTIP_ATTBONUS_DAGGER    Strong Against Dagger +%d%%    SA TOOLTIP_ATTBONUS_BELL    Strong Against Bell +%d%%    SA TOOLTIP_ATTBONUS_FAN    Strong Against Fan +%d%%    SA TOOLTIP_ATTBONUS_BOW    Strong Against Bow +%d%%    SA

Yeni bonusları kullanmak için lütfen item_proto.txt dosyasını düzenleyin:

APPLY_ATTBONUS_SWORD
APPLY_ATTBONUS_TWOHANDED
APPLY_ATTBONUS_DAGGER
APPLY_ATTBONUS_BELL
APPLY_ATTBONUS_FAN
APPLY_ATTBONUS_BOW
Silah Bonuslarına Karşı Güçlü [lua]

Metin2 özel sunucularında oyun deneyimini zenginleştirmek ve oyuncuların stratejik seçimler yapmasını sağlamak adına silah bonusları önemli bir rol oynar. Ancak bazı durumlarda bu bonuslar fazla güçlü hale gelip oyun dengesini bozabilir. Bu nedenle silah bonuslarına karşı güçlü [lua] sistemleri tasarlamak ve uygulamak, Metin2 geliştiricileri için kritik öneme sahiptir. Bu yazıda, Metin2 özel sunucu geliştirme sürecinde silah bonuslarına karşı alınabilecek önlemleri ve nasıl güçlü bir [lua] sistemi kurabileceğinizi detaylıca ele alacağız.

Silah Bonus Sistemleri Nedir?
Metin2 oyununda silahlar üzerinde rastgele ya da belirli bonuslar bulunabilir. Bu bonuslar,攻击力 (atak gücü), 생명력 kazanımı, savunma artışı gibi çeşitli özellikler sağlayabilir. Oyuncular genellikle bu bonuslar sayesinde karakterlerini güçlendirir ve PvP mücadelelerinde avantaj elde ederler. Ancak bazı bonuslar fazla güçlü olduğunda oyun içi adaleti bozabilir. Bu durumda, silah bonuslarına karşı güçlü [lua] sistemler geliştirmek gerekir.

Neden Karşı Önlemler Alınmalı?
Oyun içi bonuslar, oyuncuların motivasyonunu artırırken aynı zamanda bazı bonusların aşırı güçlü olması, oyun içi ekonomiyi ve rekabeti olumsuz etkileyebilir. Özellikle PvP odaklı sunucularda bu bonuslar, eşitlikten uzak bir deneyim yaratabilir. Bu nedenle geliştiricilerin, silah bonuslarına karşı güçlü [lua] mekanizmalar geliştirmesi büyük önem taşır. Bu mekanizmalar sayesinde bonusların sınırları çizilebilir, kontrol edilebilir ve adil bir oyun ortamı sağlanabilir.

Lua ile Bonus Kontrolü Nasıl Sağlanır?
Metin2 sunucularında [lua] script dili, oyun mantığını kontrol etmede çok güçlüdür. Geliştiriciler, [lua] dosyaları aracılığıyla silah bonuslarının nasıl çalışacağını, hangi bonusların ne zaman uygulanacağını ve bu bonuslara karşı nasıl bir koruma mekanizması kurulacağını belirleyebilir. Örneğin, bir silaha çok yüksek攻击力 bonusu geldiğinde, bu bonusun etkisi azaltılabilir veya tamamen iptal edilebilir. Bu sayede, oyuncuların bonus sisteminden kötüye kullanım yapması engellenir.

Bonus Sınırlarını Belirlemek
Silah bonuslarına karşı güçlü bir sistem kurmak için öncelikle bonusların sınırlarını belirlemek gerekir. Bu sınırlar,攻击力, 방어력, 생명력 gibi temel değerler için ayrı ayrı tanımlanabilir. Lua scriptleri ile bu sınırlar kod seviyesinde kontrol edilerek, belirlenen değerleri geçen bonuslar otomatik olarak engellenebilir. Bu yöntem, hem sunucu güvenliğini artırır hem de oyun içi dengeyi korur.

Bonus Sistemine Alternatifler
Bonusları sınırlamak yerine alternatif sistemler oluşturmak da iyi bir strateji olabilir. Örneğin, bonuslar yerine farklı güçlendirme mekanizmaları kullanılabilir. Bu mekanizmalar, oyuncuların farklı stratejiler geliştirmelerine olanak tanıyabilir. Lua üzerinden bu sistemler kolayca entegre edilebilir ve esnek bir yapı oluşturulabilir.

Sonuç
Metin2 özel sunucularında silah bonuslarına karşı güçlü [lua] sistemler oluşturmak, hem oyun içi dengeyi korumak hem de oyuncuların adil bir şekilde rekabet etmesini sağlamak açısından hayati öneme sahiptir. Lua scriptleri sayesinde geliştiriciler, bonus sistemlerini kontrol altında tutabilir ve istenmeyen durumları önleyebilir. Bu sayede daha keyifli ve dengeli bir Metin2 deneyimi sunulabilir.


Strong Against Weapon Bonuses [lua]

In Metin2 private servers, weapon bonuses play a significant role in enhancing the gaming experience and enabling players to make strategic choices. However, in some cases, these bonuses can become too powerful and disrupt game balance. Therefore, developing and implementing strong against weapon bonuses [lua] systems is critical for Metin2 developers. In this article, we will discuss in detail the measures that can be taken against weapon bonuses during Metin2 private server development and how you can set up a robust [lua] system.

What Are Weapon Bonuses?
In Metin2, weapons may feature random or specific bonuses. These bonuses can provide various attributes such as攻击力 (attack power), health gain, defense increase, etc. Players typically strengthen their characters with these bonuses and gain advantages in PvP battles. However, when some bonuses become overly powerful, they can disrupt fairness within the game. Thus, creating strong against weapon bonuses [lua] systems becomes essential.

Why Should Countermeasures Be Taken?
While in-game bonuses boost player motivation, overly strong bonuses can negatively impact the game economy and competitiveness. Especially in PvP-focused servers, these bonuses can create imbalanced experiences. For this reason, developers must implement strong against weapon bonuses [lua] mechanisms. With these mechanisms, bonus limits can be defined, controlled, and a fair gameplay environment maintained.

How Can Lua Be Used to Control Bonuses?
In Metin2 servers, the [lua] scripting language is very powerful in controlling game logic. Developers can use [lua] files to define how weapon bonuses work, when certain bonuses are applied, and how protective mechanisms against those bonuses can be implemented. For instance, if a weapon receives an extremely high攻击力 bonus, its effect can be reduced or entirely canceled. This prevents players from exploiting the bonus system.

Defining Bonus Limits
To build a strong system against weapon bonuses, it’s crucial to first define the limits of these bonuses. These limits can be individually defined for core stats like攻击力, 방어력, and 생명력. Using Lua scripts, these limits can be checked at the code level, automatically blocking any bonuses that exceed the predefined values. This method increases server security and maintains in-game balance.

Alternatives to Bonus Systems
Instead of limiting bonuses, creating alternative enhancement systems can also be a good strategy. For example, different power-up mechanisms can be used instead of traditional bonuses, allowing players to develop diverse strategies. Such systems can easily be integrated via Lua, offering a flexible structure.

Conclusion
Developing strong against weapon bonuses [lua] systems in Metin2 private servers is vital for maintaining in-game balance and ensuring fair competition among players. Through Lua scripts, developers can keep bonus systems under control and prevent unwanted situations. This leads to a more enjoyable and balanced Metin2 experience.
 

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

Geri
Üst Alt