İçeriğe geç

Metin2 Drop Dosyaları: mob_drop_item ve special_item_group Biçimi

Hazırlayan: Metin2VIP Editörleri Yayın: 11 dk okuma

Kısaca: Metin2'de canavar düşüşleri ve kutu içerikleri sunucunun locale klasöründeki beş metin dosyasında tanımlanır: common_drop_item.txt, etc_drop_item.txt, mob_drop_item.txt, drop_item_group.txt ve special_item_group.txt. Ortak liste, drop grupları ve tekil düşüşte değerin dörtte biri eşit seviyedeki yüzde şanstır; kill grubunda şans 1/kill_drop, limit grubunda yazılan değer doğrudan yüzdedir. Dosyalar her oyun çekirdeği açılırken bir kez okunur ve hatalı bir satır çekirdeği durdurur.
İçindekiler
  1. Hangi dosya ne işe yarar?
  2. Eşya adı nasıl yazılır?
  3. Değerler nasıl yüzdeye çevrilir?
  4. common_drop_item.txt biçimi
  5. etc_drop_item.txt biçimi
  6. mob_drop_item.txt biçimi
  7. drop_item_group.txt biçimi
  8. special_item_group.txt biçimi
    1. Vnum'u 30000'den küçük gruplar: takı grupları
  9. ori_to_new_table.txt
  10. Sık yapılan hatalar

Canavar düşüşleri ve kutu içerikleri, sunucunun share/locale/turkey klasöründeki beş metin dosyasında tanımlanır: common_drop_item.txt, etc_drop_item.txt, mob_drop_item.txt, drop_item_group.txt ve special_item_group.txt. İlk dördü canavar öldüğünde neyin hangi şansla düşeceğini, sonuncusu kutu, sandık ve takı gruplarının içeriğini belirler. Dosyaları her oyun çekirdeği açılırken bir kez okur; hatalı bir satır o çekirdeğin açılmasını durdurur.

Biçimler ve hesap kuralları oyun çekirdeğinin kodundan çıkarıldı; resmî yapıdan türeyen sunucuların çok büyük çoğunluğunda aynıdır. Dosyalara yazılan eşya ve değerler ise tamamen sunucu ayarıdır. Oyuncu tarafındaki sonuçlar, seviye farkı tabloları ve bonuslar drop sistemi yazısında anlatılıyor; burada dosyaların kendisi var.

Hangi dosya ne işe yarar?

Dosya Ne tanımlar Biçim
common_drop_item.txt Rütbeye ve öldürenin seviyesine göre bütün canavarlara ortak liste Sekmeli tablo, satırda 4 blok
etc_drop_item.txt mob_proto'daki DROP_ITEM eşyasının şansı Korece_ad<TAB>değer
mob_drop_item.txt Canavara özel kill, drop, limit ve thiefgloves grupları Group blokları
drop_item_group.txt Canavara özel drop grubu (eski biçim) Group blokları
special_item_group.txt Hediye kutusu, sandık, quest ve takı grupları Group blokları

Çekirdek dosyaları şu sırayla okur: common, etc, drop_item_group, special_item_group, ori_to_new_table, mob_drop_item. Dosyalardan biri yoksa ya da bir satırı okunamıyorsa günlüğe cannot load ... yazılır ve çekirdek kapanır. Boş dosya sorun değildir, ama special_item_group.txt boşsa hediye kutuları "Hiç bir şey kazanamadın." der, anahtarlı sandıklar yanlış anahtar uyarısı verir, gruba dayanan takılar da etkisiz kalır.

Dosyaları çalışırken yeniden okutan bir komut yoktur; /reload p yalnız proto tablolarını yeniler. Değişiklikten sonra oyun çekirdeklerini yeniden başlatmak gerekir.

Eşya adı nasıl yazılır?

Eşya alanına Korece orijinal ad ya da vnum yazılabilir. Oyun yazılanı önce item_proto'nun Name sütunundaki Korece adlarda arar ve eşleşme için adın başlangıcı yeterlidir: numara sırasında adı bu harflerle başlayan ilk eşya seçilir, büyük/küçük harf fark etmez. Örneğin 장검 yazmak, adı böyle başlayan ilk eşya olan 20 numaralı Uzun Kılıç+0'ı verir; 장검+3 ise Uzun Kılıç+3'tür. Ad bulunamazsa yazılan sayı vnum olarak okunur. etc_drop_item.txt'de sayı yedeği yoktur, orada yalnız Korece ad geçerlidir.

Bu sıra sayılar için bir tuzak kurar. Sayı da önce ad başlangıcı olarak denenir; yazılan rakamlarla başlayan bir Korece ad varsa eşya o olur. Varsayılan item_proto'da rakamla başlayan dört ad vardır: "24k 금반지", "18k 금반지", "14k 금반지" ve "67번캐시패키지".

Yazılan sayı Beklenen Gerçekte verilen
1 Yang 18 Ayar Altın Yüzük (50029)
2 2 numaralı eşya 24 Ayar Altın Yüzük (50028)
14 Kılıç+4 14 Ayar Altın Yüzük (50030)
18 Kılıç+8 18 Ayar Altın Yüzük (50029)
24 Uzun Kılıç+4 24 Ayar Altın Yüzük (50028)
6, 67 6 ve Gümüş Kılıç+7 Bonus artırma kutusu (83048)

Diğer bütün sayılar doğru vnum'a gider. Kendi item_proto'nda bu listeyi çıkarmak için Name sütununda rakamla başlayan adları aramak yeter.

Korece adlar dosyada cp949 (EUC-KR) baytlarıyla durmalıdır; UTF-8 kaydedilmiş bir ad item_proto'daki adla bayt bayt eşleşmez ve "eşya yok" hatasıyla çekirdeği durdurur. Group biçimli dosyaların okuyucusu 0x80 üstündeki her baytı bir sonraki baytla birlikte okur. Korece karakterler bu yüzden doğru okunur, ama cp1254 Türkçe harfler (ş, ı, ğ) kendinden sonraki karakteri yutabilir; arkadan gelen sekme ya da satır sonu kaybolup alanlar ve satırlar birleşebilir. Grup adlarını ve açıklamaları ASCII tut.

Group dosyalarında alanlar boşluk ya da sekmeyle ayrılır. Boşluk içeren bir Korece ad tırnak içinde yazılır: "24k 금반지". İlk dolu karakteri # olan satır yorumdur. Bulunamayan eşya, günlüğe No such an item ya da there is no item yazdırır ve çekirdek kapanır.

Değerler nasıl yüzdeye çevrilir?

Dosya ya da grup türü Değerin anlamı Eşit seviyede, bonussuz şans
common_drop_item Ondalıklı değer Değer ÷ 4 yüzde; 400 = %100
mob_drop_item drop, drop_item_group Ondalıklı değer Değer ÷ 4 yüzde
mob_drop_item thiefgloves Ondalıklı değer Değer ÷ 4 yüzde, yalnız öldürende premium ya da eldiven grubu varsa
etc_drop_item Ondalıklı değer Değer ÷ 4 yüzde
mob_drop_item kill kill_drop: kaç öldürmede bir; satırdaki sayı ağırlık 1/kill_drop, tutarsa ağırlıkla tek eşya
mob_drop_item limit Doğrudan yüzde Yazılan değer, seviye ve bonus etkilemez

Limit dışındaki bütün türlerde şans, canavarı en çok vuran oyuncu ile canavar arasındaki seviye farkına göre büyür ya da küçülür. Krallık eşya bonusu, Hırsızın eldivenleri, premium eşya süresi ve mob_item etkinlik oranı da bu türleri etkiler. Etkinlik oranlarının ayarı oranlar ayarı yazısında. Bir canavar öldüğünde listeler birbirinden bağımsız denenir; aynı öldürmede ortak listeden, drop grubundan ve kill grubundan birer eşya düşebilir.

Çok küçük değerlerde tam sayı kırpması vardır. Değer 10.000 ile çarpılıp tam sayıya çevrilir, sonra seviye çarpanıyla yeniden kırpılır; 0,0002 gibi bir değer büyük seviye cezası altında sıfıra iner ve hiç düşmez.

common_drop_item.txt biçimi

Dosyanın ilk satırı PAWN, S_PAWN, KNIGHT, S_KNIGHT başlıklarıdır ve zararsızdır. Sonraki her satırda yan yana dört blok bulunur, sırasıyla bu dört rütbe için. Her blok sekmeyle ayrılmış altı alandır:

Alan Anlamı
1 Etiket, okunmaz (varsayılan dosyada eşya grubunun adı)
2 En düşük seviye
3 En yüksek seviye
4 Değer
5 Eşya, Korece ad ya da vnum
6 Okunmaz (varsayılan dosyada "kaç öldürmede bir" bilgisi)

Varsayılan dosyadan bir satırın PAWN bloğu 1 15 0.2 20 2000 şeklindedir: 1-15 seviye arasındaki oyuncu bir PAWN canavar kestiğinde 20 numaralı Uzun Kılıç+0 %0,05 şansla düşer. Aynı satırın S_PAWN, KNIGHT ve S_KNIGHT bloklarında değer 0,26, 0,3 ve 0,8'dir. Bu dosyada eşyalar vnum ile yazılmıştır; bazı dosya sürümlerinde aynı alan 장검+0 gibi Korece adla yazılır.

Seviye aralığı öldüren oyuncunun seviyesine bakar, canavarınkine değil. Düşen adet her zaman 1'dir. En düşük seviyesi 0 olan blok atlanır, ama eşya adı yine çözülmeye çalışılır; boş ad zararsızdır. Boş bırakılan bir blok da altı alanıyla, yani altı sekmeyle yazılmalıdır: eksik sekme aynı satırdaki sonraki blokları kaydırır, kayan bloklar anlamsız bir seviye aralığıyla okunur ve o eşyalar hiç düşmez. İncelenen dosyanın son kısmındaki bazı satırlarda bu kayma vardır. BOSS ve KING rütbesindeki canavarlar, metin taşları dahil, bu listeden hiçbir şey düşürmez. Bir satır en çok 1.023 karakter olabilir.

etc_drop_item.txt biçimi

Her satır Korece_ad<TAB>değer biçimindedir; satır son sekmeden bölünür ve değeri 0 olan satır atlanır. Bu dosya tek başına bir şey düşürmez: canavarın mob_proto'daki DROP_ITEM sütununda yazan eşya, burada yazan şansla düşer. Örneğin Kurt için DROP_ITEM 30028'dir ve dosyada 늑대발톱 3.0 satırı vardır; Kurt Pençesi eşit seviyede %0,75 şansla düşer. Sütunun canavar tarafı mob_proto yazısında.

mob_drop_item.txt biçimi

Dosya Group bloklarından oluşur. Her blokta canavar numarası, tür ve numaralı eşya satırları bulunur. Varsayılan dosyada 575 grup ve yaklaşık 4.500 eşya satırı vardır; bir canavarın gruplarının içeriği sitedeki canavar sayfasında listelenir. Aşağıdaki gruplar biçimi göstermek için yazılmış örneklerdir:

Group	Kurt_Kill
{
	Mob	102
	Type	kill
	kill_drop	100
	1	30028	1	50	0
	2	27001	5	50	0
}

Group	Kurt_Drop
{
	Mob	102
	Type	drop
	1	27002	1	40
}

Group	Kurt_Limit
{
	Mob	102
	Type	limit
	level_limit	30
	1	27004	1	0.5
}
Tür Satır Ek anahtar
kill sıra eşya adet ağırlık efsun_şansı kill_drop zorunlu
drop sıra eşya adet değer
limit sıra eşya adet değer level_limit zorunlu
thiefgloves sıra eşya adet değer

Örnekteki kill grubu, eşit seviyede ortalama 100 Kurt'ta bir ödül verir; ödül eşit ağırlıkla ya bir Kurt Pençesi ya da beş Kırmızı İksir (K)'dir. drop grubu eşit seviyede her öldürmede %10 şansla bir Kırmızı İksir (O) düşürür. limit grubu yalnız seviyesi 30 ya da üstü olan oyuncuya %0,5 şansla Mavi İksir (K) verir. thiefgloves grubu drop gibi çalışır ama yalnız öldürende premium eşya süresi ya da eşya düşürme grubundan bir takı varsa denenir.

Kurallar katıdır:

  • Anahtar adları (Mob, Type, kill_drop) büyük/küçük harf duyarsızdır, ama Type değeri duyarlıdır: kill, drop, limit ve thiefgloves küçük harfle yazılmalıdır. Kill yazılırsa çekirdek "invalid type" deyip kapanır.
  • Grup adı boşluk içeremez; boşluklu ad çekirdeği hemen durdurur.
  • Satırlar 1'den başlayıp kesintisiz numaralanır, ilk boşlukta liste biter. Bir grupta en çok 255 satır olur.
  • Satırdaki alanların hepsi yazılmalıdır. kill satırında beşinci alan (efsun şansı) da zorunludur; eksik alan çekirdeği açılırken düşürür.
  • kill satırında adet 1'den, ağırlık 0'dan büyük olmalıdır. kill_drop 0 olan grup atlanır.
  • Aynı canavar için birden fazla drop grubu birleşir; ikinci kill, limit ya da thiefgloves grubu ise hiçbir uyarı vermeden yok sayılır.

kill satırındaki son sayı, düşen eşyanın efsunlu gelme yüzdesidir (0-100) ve item_proto'daki AlterToMagicItemPercent'in yerine geçer. 0 yazılırsa o gruptan çıkan silah ya da zırh hiç efsunlu düşmez. Diğer türlerde eşya kendi yüzdesini kullanır; sütunun anlamı item_proto yazısında.

drop_item_group.txt biçimi

Bu dosya mob_drop_item'daki drop türünün eski biçimidir ve aynı canavarın drop gruplarıyla birleşir:

Group	Kurt_Eski
{
	Vnum	1
	Mob	102
	1	27002	40	1
}

Sütun sırası farklıdır: eşya, değer, sonra isteğe bağlı adet (yazılmazsa 1). mob_drop_item'daki drop satırında ise sıra eşya, adet, değerdir; iki dosya arasında satır taşırken bu sıra karıştırılmamalıdır. Vnum satırı zorunludur ama düşüş hesabında kullanılmaz.

special_item_group.txt biçimi

Bu dosya canavarla değil eşyalarla ilgilidir. Grubun Vnum'u, açılacak kutunun ya da sandığın numarasıdır:

Group	Ayisigi_Sandigi
{
	Vnum	50011
	1	27001	10	50
	2	27004	10	30
	3	exp	5000	20
}

Satır sıra eşya adet olasılık [efsun_şansı] biçimindedir. Bu kurgu örnekte Ayışığı Define Sandığı açılınca %50 olasılıkla on Kırmızı İksir (K), %30 olasılıkla on Mavi İksir (K), %20 olasılıkla 5.000 tecrübe puanı çıkar; varsayılan dosyadaki gerçek 50011 grubu yirmi satırlıktır ve içeriği sandığın sayfasında listelenir. Hediye kutusu (ITEM_GIFTBOX) kendi numarasındaki grubu açar; anahtarlı sandıkta anahtar ile sandığın Value0'ı eşleşir ve ödül sandığın numarasındaki gruptan gelir. Oyuncu tarafı sandıklar yazısında. Quest betiklerinden aynı gruplar pc.give_item_from_special_item_group(grup) ile verilebilir.

Type Davranış
(yazılmaz) Satırlardan yalnız biri seçilir; olasılık sütunu ağırlıktır
pct Her satır ayrı zar atar; olasılık yüzdedir, 100 ve üstü her zaman çıkar
quest Gruptaki ITEM_QUEST eşyaları kullanılınca quest'i kendi numarasıyla değil grubun numarasıyla, sig_use olayıyla tetikler; tek bir when <grup>.sig_use bütün grubu yakalar
special Gruptaki UNIQUE eşya takılınca, adet sütununda yazan attr grubunun efsunları eklenir
attr Satırlar sıra efsun değer biçimindedir; isteğe bağlı effect "dosya" satırı takınca oynatılan efekttir

attr türünde efsun, APPLY_ öneki olmadan oyunun kısa adıyla (STR, MAX_HP, ATTACK_SPEED, MOVE_SPEED gibi) ya da numarasıyla yazılır. Kısa adlar item_proto'daki adlarla her zaman aynı değildir (ATT_SPEED yerine ATTACK_SPEED), bu yüzden numara yazmak daha güvenlidir.

Eşya alanında özel sözcükler de kullanılır:

Sözcük Adet sütunu Etkisi
exp Tecrübe puanı Tecrübe verir
mob Canavar numarası Oyuncunun 5 metre çevresinde saldırgan bir canavar doğar
group group.txt grup numarası Çevrede bir canavar grubu doğar
slow Hız düşüşü 300 saniye boyunca hareket hızı bu kadar düşer
drain_hp Yüzde En büyük canın bu yüzdesi kadar can gider, en az 1 can kalır
poison, bleeding Okunmaz Zehirler ya da kanatır (kanama Lycan açık yapılarda)

group sözcüğündeki grup numaraları regen dosyaları yazısında anlatılan group.txt'den gelir. Yang, vnum'u 1 olan eşya olarak verilir; yukarıdaki sayı tuzağına bu satırda özellikle dikkat et.

Birkaç sınır daha vardır. Eşya adedi bir bayta sığmalıdır: 255'ten büyük bir sayı taşar ve küçük bir sayıya döner, yığılabilir eşyada adet ayrıca CONFIG'deki yığın sınırına (varsayılan 200) iner. Yang ve tecrübede bu sınırlar yoktur. Olasılığı 0 olan satır gruba hiç eklenmez. Beşinci sütun (efsun şansı) okunur ama bu yapıda kullanılmaz; kutudan çıkan eşya kendi AlterToMagicItemPercent değeriyle efsunlanır. Bir grupta en çok 999 satır yazılmalıdır; daha büyük sıra numaraları okunurken kısalıp önceki satırlarla çakışır.

IMPLEMENTOR yetkili bir GM'nin /special_item komutu bu dosyayı okuyup eşya adlarını numaraya çevirir ve sonucu çekirdeğin klasörüne special_item_group_vnum.txt adıyla yazar. Korece adlarla uğraşmak istemeyenler için kullanışlıdır, ama çıktıyı asıl dosyanın yerine koymadan önce sayı tuzağındaki numaraları kontrol et.

Vnum'u 30000'den küçük gruplar: takı grupları

Vnum'u 30000'den küçük her grup, içindeki eşyaları bir takı grubuna da üye yapar. Aynı gruptaki iki takı birlikte giyilemez ve oyun bazı grup numaralarını sabit olarak arar:

Grup Oyundaki etkisi
10000 Tecrübe yüzüğü
10002 Eşya düşme şansını iki katına çıkarır, thiefgloves gruplarını açar
10009 Balıkçılıkta daha iyi balık olasılığı ve gelen balığı önceden gösterme
10011 Yang'ı otomatik toplar (bu kaynakta Yang zaten herkese otomatik verildiği için etkisiz)
10021 Büyük depo
10024 Yang düşme şansı
10025 Dil yüzüğü: başka krallığın yazışması çevrilmeden okunur
10030 Özel binek takısı

Bu gruplar boşsa, etkisi grup üyeliğine bağlı takılar (tecrübe yüzüğü, Yang şansı takıları gibi) oyunda hiçbir şey yapmaz. 70043 numaralı Hırsızın eldivenleri gibi oyunun doğrudan numarasıyla tanıdığı birkaç eşya bunun dışındadır. Varsayılan dosyada tablodaki grupların hepsi tanımlıdır; 70043 de 10002 grubunda olduğu için takılı eldivene numarasıyla gelen etkinin üstüne grup çarpanı da eklenir.

ori_to_new_table.txt

Bu dosya bir düşüş listesi değildir ama aynı sırada okunur. Her satırda eski yeni biçiminde iki sayı bulunur; listedeki yeni numarayla yaratılan eşya, oyunda ve istemcide eski numarasıyla görünür. Dosya yoksa günlüğe yalnız bir not düşer, çekirdek açılmaya devam eder.

Sık yapılan hatalar

  • Yang için 1, Kılıç+4 için 14 yazmak: bu item_proto'da ikisi de yüzüğe gider.
  • Type değerini Kill ya da DROP diye yazmak.
  • Grup adında boşluk ya da Türkçe karakter kullanmak.
  • kill satırında son sütunu atlamak ya da bir satırı eksik alanla bırakmak.
  • Aynı canavara ikinci bir kill grubu yazıp iki grubun birden çalışmasını beklemek.
  • Dosyayı UTF-8 kaydetmek.
  • drop_item_group'ta adet ile değerin yerini karıştırmak.
  • Dosyayı değiştirip oyun çekirdeklerini yeniden başlatmamak.

Sık sorulan sorular

special_item_group'ta Yang için 1 yazdım, kutudan yüzük çıkıyor. Neden?
Oyun eşya alanındaki yazıyı önce Korece eşya adlarının başlangıcı olarak arar. Bu item_proto'da '18k 금반지' adlı yüzük 1 ile başladığı için 1 yazısı Yang yerine 18 Ayar Altın Yüzük'e çözülür. Yang için vnum 1'in Korece adını, '돈꾸러미' yazısını cp949 kodlamasıyla kullan.
mob_drop_item'da drop ile kill türünün farkı nedir?
drop türünde her satır kendi zarını atar, aynı öldürmede birden fazla eşya düşebilir. kill türünde önce grubun tamamı için kill_drop öldürmede bir şans tutmalıdır, tutarsa satırlardan yalnız biri ağırlığına göre seçilir.
Drop dosyasını değiştirdim, /reload p yeterli mi?
Yetmez. Drop ve kutu dosyaları her oyun çekirdeği açılırken bir kez okunur, /reload p yalnız proto tablolarını yeniler. Değişiklikten sonra oyun çekirdeklerini yeniden başlatmak gerekir.
Kutudan çıkan eşyanın efsunlu gelme şansını nereden ayarlarım?
special_item_group'taki dördüncü sütun bu yapıda kullanılmaz; kutudan çıkan eşya item_proto'daki AlterToMagicItemPercent değerine göre efsunlanır. mob_drop_item'daki kill gruplarında ise dördüncü sütun bu yüzdenin yerine geçer.

İlgili sayfalar

Kategori: Server Kurma Proto ve Veri Dosyaları sunucu dosyaları drop mob_drop_item special_item_group proto

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?

Bu sayfa işine yaradı mı?

Giriş yap, oy ver ya da sayfayı kaydet. Okumak için üyelik gerekmez. WhatsApp X'te paylaş
Yanlış ya da eksik bir bilgi mi gördün? Bildir
Neyin yanlış olduğunu, doğrusunun ne olduğunu ve bunu nereden bildiğini yaz. Mesajın editörlere gider; yazı, kontrol edildikten sonra düzeltilir.
Yalnız editör görür.

Tartışma

Kurallar

Henüz yorum yok. Bu konuda bir deneyimin ya da sorun varsa ilk yorumu sen yaz.

Giriş yap ya da kayıt ol, sonra yorum yaz. Metin2VIP üyeliği hiçbir oyun sunucusunun hesabı değildir.