Metin2 EXP, Drop ve Yang Oranı Nasıl Ayarlanır?
Hazırlayan: Metin2VIP Editörleri Yayın: 9 dk okuma
İçindekiler
- Hangi yöntem kalıcı, hangisi geçici?
- Genel oranlar: /eventflag mob_exp, mob_item, mob_gold
- EXP oranı nasıl hesaplanır?
- Drop oranı: mob_item ve krallık bonusu
- Yang oranı: mob_gold ve mob_gold_pct
- Krallık bonusu: süreli etkinlik için
- Kalıcı ayar: mob_proto, drop dosyaları ve EXP tablosu
- Derleme çarpanları: GetExpMultipler ve GetGoldMultipler
- DISTRIBUTION_TEST_SERVER oran ayarı değildir
- Akılda kalsın
Metin2'de CONFIG dosyasında EXP_RATE ya da DROP_RATE gibi bir satır yoktur; böyle bir satır yazılırsa çekirdek onu sessizce yok sayar. Sunucu genelindeki oranlar oyun içinden ayarlanan dört bayrakla değişir: mob_exp (EXP), mob_item (eşya düşme şansı), mob_gold (Yang miktarı) ve mob_gold_pct (Yang düşme şansı). 100 normal, 200 iki kat demektir ve değer değiştirilene kadar kalır. Süreli etkinlikler için krallık bonusu, kalıcı ince ayar için mob_proto, drop dosyaları ve EXP tablosu kullanılır.
Hesapların kendisi oyunun çekirdeğindedir; oranlar ve canavar değerleri ise sunucu ayarıdır. Aşağıdaki formüller incelenen kaynak koda göre yazıldı. Bu kaynakta EXP bonuslarını toplayan yeni bir hesap açık; orijinal hesaptan farkı ilgili bölümde ayrıca anlatılıyor.
Hangi yöntem kalıcı, hangisi geçici?
| Yöntem | Neyi değiştirir | Ne kadar sürer | Nasıl uygulanır |
|---|---|---|---|
| mob_exp, mob_item, mob_gold, mob_gold_pct | Bütün sunucunun oranı | Değiştirilene kadar; yeniden başlatmada geri gelir | /eventflag ya da quest; bütün çekirdeklerde anında |
| Aynı bayrakların _buyer sürümleri | Premium süreli oyuncuların oranı | Aynı | Aynı |
| Krallık ve lonca bonusu | Krallığın ya da loncanın EXP, eşya ve Yang şansı | Komutla verilirse en çok 7 gün | /priv_empire ya da quest |
| mob_proto'daki EXP, GOLD_MIN, GOLD_MAX | Tek tek canavarların değeri | Kalıcı | Dosya ya da tablo; db'yi yeniden başlatma |
| Drop dosyaları | Tek tek eşyaların düşme şansı | Kalıcı | Dosya; çekirdekleri yeniden başlatma |
| exp_table | Seviye başına gereken EXP | Kalıcı | common veritabanı; çekirdekleri yeniden başlatma |
| Derleme çarpanları | Bütün sunucunun EXP ve Yang miktarı | Kalıcı | Kaynak kodu yeniden derleme |
Genel oranlar: /eventflag mob_exp, mob_item, mob_gold
Genel oranlar "event flag" denen sunucu bayraklarıdır. Oyunda en az HIGH_WIZARD yetkili bir GM şu komutları yazar:
/eventflag mob_exp 200
/eventflag mob_item 150
/eventflag mob_gold 200
/eventflag mob_gold_pct 200
/geteventflag
| Bayrak | Neyi çarpar |
|---|---|
| mob_exp | Canavardan alınan EXP |
| mob_item | Canavarların eşya düşme şansı |
| mob_gold | Düşen Yang miktarı |
| mob_gold_pct | Yang düşme şansı |
| mob_dam | Canavarların oyunculara verdiği hasar |
| user_dam | Oyuncuların verdiği bütün hasar, oyunculara karşı da |
Komut, mob_ ile başlayan bayrakları 0 ile 1.000 arasına kırpar; yani GM komutuyla en çok 10 kat verilebilir. user_dam kırpılmaz. Aynı bayraklar quest içinden game.set_event_flag("mob_exp", 200) ile de yazılabilir; bu yolda kırpma yoktur. /geteventflag tanımlı bütün bayrakları listeler.
Bayrak db'ye gider, bütün çekirdeklere anında dağıtılır ve player veritabanındaki quest tablosuna dwPID = 0 satırı olarak kaydedilir. db her açılışta bu satırları okuyup çekirdeklere yeniden gönderir. Bu yüzden genel oran kendiliğinden bitmez, sunucu kapanıp açılsa da kalır. Sunucu kapalıyken aynı ayar doğrudan veritabanına da yazılabilir:
REPLACE INTO player.quest (dwPID, szName, szState, lValue) VALUES (0, 'mob_exp', '', 200);
Premium oyuncular için _buyer bayrakları
Her oran bayrağının bir premium karşılığı vardır: mob_exp_buyer, mob_item_buyer, mob_gold_buyer ve mob_gold_pct_buyer. Premium süresi olan oyuncuya normal oran yerine bu ikinci oran uygulanır; ikisi toplanmaz. EXP'de premium EXP süresi, eşyada premium eşya süresi, Yang'da premium Yang süresi belirleyicidir.
Bunun bir tuzağı var: yalnız mob_exp 200 yapılırsa premium oyuncular etkinlikten yararlanmaz. Premium EXP'li oyuncu kendi %50 bonusunu alır, ama oranı 100'de kaldığı için normal oyuncunun gerisine düşer.
EXP oranı nasıl hesaplanır?
İncelenen kaynakta EXP'nin yeni hesabı açık. Canavarın EXP'si önce seviye farkına göre düzeltilir. Sonra 100'den başlayan bir orana bütün bonuslar eklenir: krallık bonusu, Tecrübe yüzüğü, premium, evlilik, binek ve iksirler. Bu toplam mob_exp ile çarpılır, sonuç 100'ün altına düşürülmez ve EXP bu oranla büyütülür. En son, tek bir canavardan alınabilecek EXP, karakterin bulunduğu seviyede gereken toplam EXP'nin %10'u ile sınırlanır.
%10 sınırı en çok ilk seviyelerde hissedilir. 1. seviyedeki oyuncu Yabani Köpek'ten normalde 15 EXP alır; mob_exp 500 yapılsa bile 75 değil, 300'ün %10'u olan 30 EXP alır. Düşük seviyelerde yüksek oranların bir kısmı bu yüzden boşa gider; orta ve yüksek seviyelerde sınır, çok yüksek EXP'li patronlar dışında nadiren devreye girer. Sınırın ve seviye farkının ayrıntısı EXP sistemi yazısında.
mob_exp 100'ün altına çekilirse ne olur?
Yeni hesapta oran 100'ün altına inemez. mob_exp 50 bonuslarla birlikte bütün oranı yarıya indirir, ama sonuç 100'den küçükse 100'e yükseltilir: bonussuz oyuncu yine canavarın temel EXP'sini alır, bonuslu oyuncunun bonusu ise küçülür ya da tamamen kaybolur. mob_exp 0'da oran her zaman 100'e çekilir; canavarlar EXP vermeye devam eder ama hiçbir bonus işlemez. EXP'yi temel değerin altına indirmek için mob_proto'daki EXP değerleri ya da EXP tablosu değiştirilir.
Orijinal Metin2 hesabında durum farklıdır: bonuslar toplanmaz, sırayla çarpılır ve mob_exp son bir çarpan olarak uygulanır. Orada mob_exp 50 EXP'yi yarıya indirir, 0 ise canavarları EXP vermez hâle getirir. Sunucunun hangi hesabı kullandığı derlemesine bağlıdır.
Drop oranı: mob_item ve krallık bonusu
Eşya düşme şansında genel oran ve krallık bonusu hesabın farklı yerlerine girer. mob_item, seviye farkıyla düzeltilmiş şansı doğrudan çarpar; premium eşya süresi ya da special_item_group'ta "çift eşya" grubuna (10002) konan takılar bunu ayrıca ikiye katlar, ikisi birden olsa da bu çarpan bir kez uygulanır. Krallık eşya bonusu ise takılı Hırsızın eldivenleri numarasıyla gelen etkiyle aynı yerde toplanır: %50 bonus ve eldiven birlikte şansı 3 katına değil, 2,5 katına çıkarır. Varsayılan special_item_group'ta 70043 de çift eşya grubunda olduğu için takılı eldivene grup çarpanı da eklenir.
Bu kural common_drop_item, drop_item_group, mob_drop_item'daki drop ve kill grupları, etc_drop_item ve metinlerin ruh taşı düşüşü gibi canavar düşüşlerinin hemen hepsinde geçerlidir. Tek istisna mob_drop_item'daki limit türü gruplardır: onların şansı sabit bir aralıkla hesaplanır ve genel oran, krallık bonusu, eldiven ya da premium hiçbirini değiştirmez. Dosyalardaki değerin yüzdeye nasıl döndüğü drop sistemi yazısında.
Yang oranı: mob_gold ve mob_gold_pct
Yang'da iki ayrı bayrak vardır: mob_gold_pct Yang düşme şansını, mob_gold düşen miktarı çarpar.
Şans, mob_proto'daki RANK sütununa göre başlar: 1. ve 2. seviye canavarlarda (RANK 0 ve 1) %20, 3. seviyede %25, 4. seviyede %30, patronda %50, 5. seviyede, yani bütün metin taşlarında %100. Bu temel şansa krallık Yang bonusu eklenir, sonuç mob_gold_pct ile çarpılır, premium Yang süresi varsa ikiye katlanır, en çok %100'e kırpılır ve en son seviye farkıyla düzeltilir. Miktar, canavarın GOLD_MIN ile GOLD_MAX değerleri arasından rastgele seçilir ve mob_gold ile çarpılır. Krallık Yang bonusu miktarı değiştirmez, yalnız şansı artırır.
Metin taşlarının temel Yang şansı zaten %100 olduğu için mob_gold_pct onlarda bir şey değiştirmez; mob_gold ise miktarı yine çarpar. Rütbe tablosunun ve İki kat Yang efsununun ayrıntısı Yang düşme yazısında.
Krallık bonusu: süreli etkinlik için
Krallık bonusu genel orandan farklı olarak süreyle verilir ve süre dolunca kendiliğinden biter:
/priv_empire 0 4 50 24
Bu komut bütün krallıklara (0) 24 saat boyunca %50 EXP bonusu (tür 4) verir. Krallık numarası 1 Shinsoo, 2 Chunjo, 3 Jinno; tür 1 eşya, 2 Yang şansı, 3 Yang yağmuru, 4 EXP'dir. Değer %200'de, süre 7 günde kesilir. Yang yağmuru türü incelenen kaynakta kapalı derlenmiş bir özelliğe bağlıdır ve etkisizdir. Quest içinden aynı iş __give_empire_priv(krallık, tür, değer, saniye) ile yapılır.
Aynı türdeki krallık, lonca ve karakter bonuslarından yalnız en yükseği uygulanır, toplanmazlar; genel oran bunun üstüne çarpılır. Bonusların oyuncu tarafı, duyuruları ve falcının verdiği bonus etkinlik bonusları yazısında.
Orijinal kodda krallık bonusu yalnız db'nin belleğinde durur ve db yeniden başlarsa kaybolur. İncelenen kaynakta eklenmiş bir özellik, verilen bonusları common veritabanındaki priv_settings tablosuna yazar; db açılırken süresi geçmiş satırları siler, kalanları kalan süreleriyle geri yükler. Paketin SQL dosyasındaki dört örnek satır (bütün krallıklara %200) 2020 başında bitmiş göründüğü için ilk açılışta silinir. Bu tabloya sunucu kapalıyken bitiş tarihi uzak bir satır yazılırsa bonus o tarihe kadar her açılışta geri gelir; değer yine %200'de kesilir:
REPLACE INTO common.priv_settings (priv_type, id, type, value, duration)
VALUES ('EMPIRE', 0, 4, 50, '2030-01-01 00:00:00');
Kalıcı ayar: mob_proto, drop dosyaları ve EXP tablosu
mob_proto: canavar başına EXP ve Yang
Her canavarın verdiği EXP ve Yang aralığı mob_proto'daki EXP, GOLD_MIN ve GOLD_MAX sütunlarındadır. Örnek paketteki conf.txt'de PROTO_FROM_DB = 0 olduğu için db bu değerleri db klasöründeki mob_proto.txt dosyasından okur. PROTO_FROM_DB = 1 olan sunucularda player veritabanındaki mob_proto tablosu esas alınır ve toplu değişiklik SQL ile yapılabilir:
UPDATE player.mob_proto SET exp = exp * 2 WHERE type = 0;
type = 0 yalnız canavarları seçer; NPC'lerin türü 1, metin taşlarınınki 2'dir. Değişiklik db açılırken okunur. Oyunda IMPLEMENTOR yetkisiyle yazılan /reload p tabloları sunucuyu kapatmadan yeniler: o anda haritada bulunan canavarlar eski değerleriyle kalır, yeni doğanlar yeni değeri alır. Aynı komut eşya tablosunu da yeniden yüklediği için item_proto'ya satır eklendiyse ya da silindiyse çalışan sunucuda kullanmak risklidir; bu durumda sunucuyu yeniden başlat. Argümansız yazılan /reload da tabloları yeniler. Sütunların tamamı mob_proto yazısında.
Hedef bilgi penceresi gibi ek sistemleri olan istemciler canavarın EXP'sini kendi mob_proto kopyasından gösterir. Sunucudaki değerleri değiştirdiysen istemcideki kopyayı da güncellemek, ekranda görünen değeri gerçekle eşitler.
Drop dosyaları
Eşya başına şans locale/turkey klasöründeki common_drop_item.txt, mob_drop_item.txt, drop_item_group.txt ve etc_drop_item.txt dosyalarındadır. Bir değeri iki katına çıkarmak o eşyanın şansını da iki katına çıkarır. Dosyalar oyun çekirdekleri açılırken okunur ve bunları yeniden yükleyen bir komut yoktur; değişiklik çekirdekler yeniden başlatılınca geçerli olur. Dosya biçimleri drop dosyaları yazısında.
EXP tablosu
Seviye başına gereken EXP bu kaynakta common veritabanındaki exp_table tablosundan, her oyun çekirdeği açılırken okunur; tablo okunamazsa koddaki yerleşik tablo kullanılır. Tabloyu küçültmek seviye atlamayı hızlandırır, ama tek canavardan alınabilecek EXP sınırı da aynı tablodan hesaplandığı için sınır da aynı oranda küçülür. Varsayılan değerler EXP tablosu sayfasında.
Derleme çarpanları: GetExpMultipler ve GetGoldMultipler
İncelenen kaynakta ortak tanımlar dosyasına (service.h) sonradan eklenmiş iki çarpan var:
#define GetGoldMultipler() (1)
#define GetExpMultipler() (1)
Değer değiştirilip game çekirdeği yeniden derlenirse EXP çarpanı yeni EXP hesabının en sonunda, %10 sınırından sonra uygulanır; 2 yazıldığında tek canavardan seviyenin %20'sine kadar EXP alınabilir. Yang çarpanı düşen miktarı çarpar. Bu çarpanlar orijinal kodda yoktur ve yalnız yeniden derlemeyle değişir; çoğu sunucu için bayraklar yeterlidir.
DISTRIBUTION_TEST_SERVER oran ayarı değildir
CONFIG'teki DISTRIBUTION_TEST_SERVER: 1 satırı EXP'yi ve eşya düşme şansını üç katına çıkarır, ama beceri kitabı bekleme süresini de üçte birine indirir; Yang'a etkisi yoktur. Test sunucusu için düşünülmüş bir bayraktır, oran ayarı olarak kullanılmamalıdır. SPEED_SERVER satırının da bu kaynakta EXP'ye bir etkisi yoktur. Bütün CONFIG satırları CONFIG ayarları yazısında.
Akılda kalsın
- CONFIG'te oran satırı yoktur; genel oran /eventflag ile verilir ve 100 normaldir.
- Oran bayrakları kendiliğinden bitmez; etkinlik sonunda 100'e döndür.
- Premium oyuncular için _buyer bayraklarını da ayarla.
- Tek canavardan alınan EXP seviyenin %10'unu geçemez; düşük seviyede yüksek oran boşa gider.
- Yeni EXP hesabında 100'ün altındaki mob_exp, EXP'yi canavarın temel değerinin altına indiremez.
- Krallık bonusu en çok %200 ve 7 gündür; aynı türden bonuslar toplanmaz.
- Drop dosyaları ve EXP tablosu için çekirdekleri yeniden başlatmak gerekir.
Sık sorulan sorular
- Metin2'de EXP oranı nasıl 2 katına çıkarılır?
- Oyunda en az HIGH_WIZARD yetkili bir GM olarak /eventflag mob_exp 200 yazılır; premium süreli oyuncular için /eventflag mob_exp_buyer 200 de yazılmalıdır. Değer veritabanına kaydedilir ve sunucu yeniden başlasa da kalır; etkinlik bitince 100'e döndürülür.
- /eventflag mob_exp 0 oranı sıfırlar mı?
- Hayır, normal değer 100'dür. 0 yazmak oranı gerçekten sıfıra indirir: orijinal hesapta canavarlar hiç EXP vermez, bu kaynaktaki yeni hesapta bütün EXP bonusları silinir. Eski hâle dönmek için 100 yazılır.
- Krallık bonusu ile mob_exp birlikte nasıl çalışır?
- Krallık bonusu öteki EXP bonuslarıyla birlikte hesaplanır, mob_exp sonuca çarpan olarak uygulanır. %50 krallık bonusu ve mob_exp 200 birlikte bonussuz bir oyuncuya 3 kat EXP verir; tek canavardan alınan EXP'nin seviyenin %10'u sınırı yine geçerlidir.
- Drop dosyasını değiştirdim ama oyunda değişmedi, neden?
- Drop dosyaları oyun çekirdekleri açılırken okunur ve bunları yeniden yükleyen bir komut yoktur. Değişikliğin geçerli olması için çekirdekleri yeniden başlatmak gerekir.
İlgili sayfalar
- Metin2 CONFIG Ayarları: Game Çekirdeği Seçenekleri ve Anlamları (Server kurma)
- Metin2 Drop Dosyaları: mob_drop_item ve special_item_group Biçimi (Server kurma)
- Metin2 Drop Sistemi: Eşya Düşme Şansı Neye Bağlı? (Wiki)
- Metin2 EXP, Drop ve Yang Etkinlikleri: Krallık Bonusları Nasıl Çalışır? (Wiki)
- Metin2 EXP Sistemi: Tecrübe Nasıl Hesaplanır? (Wiki)
Kategori: Server Kurma Yapılandırma yapılandırma yang eventflag exp oranı drop oranı
Bu sayfadaki bilgiler Metin2'nin sunucu yazılımındaki hesaplamalara ve standart oyun dosyalarına dayanır. Oyun dosyalarını değiştiren sunucularda değerler farklı olabilir. İçerikleri nasıl hazırlıyoruz?