Metin2 Drop Dosyaları: mob_drop_item ve special_item_group Biçimi
Hazırlayan: Metin2VIP Editörleri Yayın: 11 dk okuma
İçindekiler
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,limitvethiefglovesküçük harfle yazılmalıdır.Killyazı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
Killya daDROPdiye 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
- Metin2 Drop Sistemi: Eşya Düşme Şansı Neye Bağlı? (Wiki)
- Metin2 item_proto Rehberi: Sütunlar, Türler ve Bayraklar (Server kurma)
- Metin2 mob_proto Rehberi: Sütunlar, Rütbeler ve AI Bayrakları (Server kurma)
- Metin2 EXP, Drop ve Yang Oranı Nasıl Ayarlanır? (Server kurma)
- Metin2 Regen Dosyaları: Canavar ve NPC Nasıl Yerleştirilir? (Server kurma)
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?