Rastgele Item Seviye Drop Sistemi [+0 ~ +4]

Aethre

www.pvpers.gg
Katılım
19 Haz 2024
Konular
383
Mesajlar
477
Beğeniler
789
GG Coin
14,220
Ticaret Değeri - 0%
0   0   0
Discord
pvpers.gg

Metin2 Rastgele Item Seviyesi Düşürme Sistemi​


mob_drop_item tablosunda her eşyanın tüm refinement seviyeleri (+0, +1 … +9) için ayrı ayrı kayıt oluşturmak yerine, daha pratik bir yöntem uygulanabilir. Bu düzenleme sayesinde, her eşya dropliste yalnızca bir kez tanımlanır ve eşya oluşturulurken seviye rastgele olarak belirlenir. Bu örnekte seviye aralığı +0 ile +4 arasında rastgele atanmakta.

Kod içerisindeki mantık, düşen eşyanın seviyesi +5’in altındaysa yeni bir seviye oluşturacak şekilde yapılandırılmıştır. Yorum satırları üzerinden sistem, farklı ihtiyaçlara uygun şekilde kolayca özelleştirilebilir.

commonDefines.h:
#define ENABLE_DROP_ITEM_RANDOM_LEVEL        //Öğe düşerken rastgele seviye (+0 – +4) özelliğini etkinleştirir
item.h:
//Bul:
        bool        IsEquipable() const;
//Hemen altına ekle:
#ifdef ENABLE_DROP_ITEM_RANDOM_LEVEL
        bool        IsEquipment() const;
        LPITEM      GetRandomLevelItem();
#endif

Gizlenmiş içeriği görüntüleyebilmek için Giriş Yap ya da Kayıt Ol
Bu işlem, 15 saniyeden az sürer.

char_battle.cpp:
//Tüm değişiklikler "Reward" fonksiyonunda

//Bul:
item = s_vec_item[0];
//Hemen altına ekle:
#ifdef ENABLE_DROP_ITEM_RANDOM_LEVEL
            item = item->GetRandomLevelItem();
#endif

//Bul (2 kez):
item = s_vec_item[iItemIdx--];
//Hemen altına ekle:
#ifdef ENABLE_DROP_ITEM_RANDOM_LEVEL
                    item = item->GetRandomLevelItem();
#endif

Bu şekilde, droplar sırasında +0 ile +4 arasında rastgele bir seviye atanır; +5 ve üzerindeki eşyalar ise olduğu gibi kalır. Yorum satırları, farklı seviye aralıkları ya da koşullar tanımlamak için kolayca düzenlenebilir.



📌 Notlar​

  • Rastgele refinement seviyesi atanması yalnızca +0 ile +4 aralığında çalışacak şekilde yapılandırılmıştır. Farklı bir aralık isteniyorsa, ilgili satırlarda düzenleme yapılması yeterlidir.
  • Aynı itemin farklı + seviyeleri için ayrı ayrı satır eklemeye gerek kalmaz; droplar sadeleşir, tablo yönetimi kolaylaşır.
  • srand ve rand() kullanımı sayesinde her çağrıda zaman temelli bir rastgelelik sağlanır.
  • Kod örneği içinde yer alan yorumlar üzerinden sistem, farklı ihtiyaçlara göre kolayca özelleştirilebilir.
  • Sistemin çalışabilmesi için ENABLE_DROP_ITEM_RANDOM_LEVEL makrosunun tanımlanmış olması gereklidir.
 
Geri
Üst Alt