Zırh ve Silahlar için 4 Yeni Bonus Ekleme

  • 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
Tüm silahlara ve zırh alt türlerine otomatik olarak rastgele 4 bonus ekler.
Alıntıdır.

common/CommonDefine.h

Kod:
#define __4_BONUS_DEFAULT__

game/item.cpp

"void CItem::AlterToMagicItem()" içinde bulun:

Kod:
if (number(1, 100) <= iSecondPct)         PutAttribute(aiItemMagicAttributePercentLow);     if (number(1, 100) <= iThirdPct)         PutAttribute(aiItemMagicAttributePercentLow);

Şununla değiştir:

Kod:
#ifdef __4_BONUS_DEFAULT__     if ((GetType() == ITEM_WEAPON) || (GetType() == ITEM_ARMOR))     {         PutAttribute(aiItemMagicAttributePercentHigh);    // Second bonus         PutAttribute(aiItemMagicAttributePercentHigh);    // Third bonus         PutAttribute(aiItemMagicAttributePercentHigh);    // Fourth bonus     }     else     {         if (number(1, 100) <= iSecondPct)             PutAttribute(aiItemMagicAttributePercentLow);         if (number(1, 100) <= iThirdPct)             PutAttribute(aiItemMagicAttributePercentLow);     } #else     if (number(1, 100) <= iSecondPct)         PutAttribute(aiItemMagicAttributePercentLow);     if (number(1, 100) <= iThirdPct)         PutAttribute(aiItemMagicAttributePercentLow); #endif

game/item_manager.cpp

"LPITEM ITEM_MANAGER::CreateItem(DWORD vnum, DWORD count, DWORD id, bool bTryMagic, int iRarePct, bool bSkipSave)"
bulun:

Kod:
if (bTryMagic)         {             if (iRarePct == -1)                 iRarePct = table->bAlterToMagicItemPct;             if (number(1, 100) <= iRarePct)                 item->AlterToMagicItem();         }

Şununla değiştir:

Kod:
if (bTryMagic)         { #ifdef __4_BONUS_DEFAULT__             if ((item->GetType() == ITEM_WEAPON) || (item->GetType() == ITEM_ARMOR))             {                 item->AlterToMagicItem();             }             else             { #endif             if (iRarePct == -1)                 iRarePct = table->bAlterToMagicItemPct;             if (number(1, 100) <= iRarePct)                 item->AlterToMagicItem(); #ifdef __4_BONUS_DEFAULT__             } #endif         }

game/questlua_game.cpp
"Game_drop_item" işlevinin içinde şunu bulun:

Kod:
LPITEM item = ITEM_MANAGER::instance().CreateItem(item_vnum, count);

Şununla değiştir:

Kod:
#ifdef __4_BONUS_DEFAULT__         LPITEM item = ITEM_MANAGER::instance().CreateItem(item_vnum, count, 0, true); #else         LPITEM item = ITEM_MANAGER::instance().CreateItem(item_vnum, count); #endif

"Game_drop_item_with_ownership" işlevinin içinde şunu bulun:

Kod:
item = ITEM_MANAGER::instance().CreateItem((DWORD) lua_tonumber(L, 1));

Şununla değiştir:

Kod:
#ifdef __4_BONUS_DEFAULT__             item = ITEM_MANAGER::instance().CreateItem((DWORD) lua_tonumber(L, 1), 1, 0, true); #else             item = ITEM_MANAGER::instance().CreateItem((DWORD) lua_tonumber(L, 1)); #endif

"Game_drop_item_with_ownership" işlevinin içinde şunu bulun:

Kod:
item = ITEM_MANAGER::instance().CreateItem((DWORD) lua_tonumber(L, 1), (int) lua_tonumber(L, 2));

Şununla değiştir:

Kod:
#ifdef __4_BONUS_DEFAULT__             item = ITEM_MANAGER::instance().CreateItem((DWORD) lua_tonumber(L, 1), (int) lua_tonumber(L, 2), 0, true); #else             item = ITEM_MANAGER::instance().CreateItem((DWORD) lua_tonumber(L, 1), (int) lua_tonumber(L, 2)); #endif

"Game_drop_item_with_ownership_and_dice" fonksiyonunun içinde şunları bulun:

Kod:
item = ITEM_MANAGER::instance().CreateItem((DWORD) lua_tonumber(L, 1), (int) lua_tonumber(L, 2));

Şununla değiştir:

Kod:
#ifdef __4_BONUS_DEFAULT__             item = ITEM_MANAGER::instance().CreateItem((DWORD) lua_tonumber(L, 1), (int) lua_tonumber(L, 2), 0, true); #else             item = ITEM_MANAGER::instance().CreateItem((DWORD) lua_tonumber(L, 1), (int) lua_tonumber(L, 2)); #endif

game/shop.cpp

"int CShop::Buy(LPCHARACTER ch, BYTE pos)" işlevinin içinde şunu bulun:

Kod:
item = ITEM_MANAGER::instance().CreateItem(r_item.vnum, r_item.count);

Şununla değiştir:

Kod:
#ifdef __4_BONUS_DEFAULT__         item = ITEM_MANAGER::instance().CreateItem(r_item.vnum, r_item.count, 0, true); #else         item = ITEM_MANAGER::instance().CreateItem(r_item.vnum, r_item.count); #endif

Zırh ve Silahlar için 4 Yeni Bonus Ekleme

Metin2 özel sunucularında oyun deneyimini artırmak ve oyuncuların karakterlerini özelleştirmelerine olanak tanımak adına zırh ve silahlara bonus özellikler eklemek oldukça yaygın bir yöntemdir.

1. Can Yüzdesi Artışı Bonusu
Oyuncuların karakterlerinin sağlığını korumaları kritik öneme sahiptir. Bu nedenle zırhlara can yüzdesi bonusu eklenmesi, karakterin maksimum HP değerine göre ekstra can kazanımı sağlar. Örneğin bir zırh %3 maksimum can bonusu veriyorsa, 5000 HP'ye sahip bir karakter 150 ekstra can alır. Bu bonus, zırh seviyesine veya set bonusuna göre dinamik olarak ayarlanabilir.

2. Hasar Yüzdesi Artışı
Silahlara eklenen bu bonus, karakterin fiziksel veya büyü hasarını yüzde bazında artırır. Özellikle PVP sistemlerinde büyük rol oynar. Örneğin +%5 saldırı gücü bonusu, karakterin toplam攻击力 değerinin %5 fazlasını hasar olarak uygular. Bu bonuslar genellikle yüksek seviye silahlarda daha yüksek oranlarda verilir.

3. Kritik Vuruş Oranı Bonusu
Kritik vuruşlar, savaş sırasında büyük fark yaratabilir. Silahlara eklenen bu bonus, karakterin saldırılarında kritik çıkma ihtimalini artırır. Bu bonus genellikle +%2 kritik şans gibi değerlerde olur ve karakterin yeteneklerine göre artar.

4. Savunma Karşılığı
Bu bonus, düşman tarafından gelen saldırıya karşı küçük bir hasar geri verme yeteneği sağlar. Özellikle defansif oynayan oyuncular için idealdir. Örneğin +%10 savunma karşılığı, alınan her 100 fiziksel hasar karşısında 10 hasar geri verilir.

Bonus sistemleri C++ sunucu tarafında modifiye edilerek ve DB tablolarına yeni alanlar eklenerek aktif edilebilir. Bu tür değişiklikler için Metin2Lobby üzerinden kaynak kod örneklerine ulaşabilirsiniz. Bu bonuslar sayesinde oyuncular daha dengeli ve stratejik bir oyun deneyimi yaşarlar. Geliştiricilerin dikkat etmesi gereken hususlar arasında, bonusların dengeli dağıtılması ve sunucudaki oyun ekonomisinin bozulmamasıdır. Bu bonuslar doğru şekilde uygulanırsa Metin2 özel sunucularında rekabet ve eğlence seviyesi ciddi anlamda artar.


Adding 4 New Bonuses for Weapons and Armor

In Metin2 private servers, adding bonus features to weapons and armor is a common method to enhance gameplay and allow players to customize their characters.

1. Health Percentage Increase Bonus
Maintaining character health is crucial in-game. Adding a health percentage bonus to armor increases the character's maximum HP by a certain ratio. For example, if an armor provides %3 max health bonus, a character with 5000 HP would gain 150 additional health points. This bonus can be dynamically adjusted based on armor level or set bonuses.

2. Damage Percentage Increase
This bonus added to weapons increases physical or magical damage by a percentage. It plays a significant role especially in PVP systems. For instance, +%5 attack power bonus applies an extra 5% of the total攻击力 as damage. These bonuses are typically higher on high-level weapons.

3. Critical Hit Chance Bonus
Critical hits can make a big difference during combat. This bonus increases the chance of landing critical hits with weapons. Usually, values like +%2 critical chance are applied, scaling with character abilities.

4. Defense Counter
This bonus allows a small amount of damage to be returned when attacked by an enemy. Ideal for defensively playing players. For example, +%10 defense counter returns 10 damage when taking 100 physical damage.

Bonus systems can be activated by modifying server-side C++ code and adding new fields to database tables. You can access source code examples via Metin2Lobby. With these bonuses, players experience a more balanced and strategic gameplay. Developers must ensure that bonuses are distributed evenly without disrupting the game economy. Properly implemented, these bonuses significantly increase competitiveness and fun in Metin2 private servers.
 

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

Benzer konular

Geri
Üst Alt