Metin2 item_proto Rehberi: Sütunlar, Türler ve Bayraklar
Hazırlayan: Metin2VIP Editörleri Yayın: 13 dk okuma
İçindekiler
- item_proto nerede durur, kim okur?
- Sütunlar tek tek
- Hangi hata db'yi durdurur, hangisi sessiz kalır?
- Type ve SubType listeleri
- AntiFlags: kim kullanamaz, ne yapılamaz?
- Flags: hangi bayrak gerçekten ne yapar?
- WearFlags ve ImmuneFlags
- Fiyat, yükseltme ve yaratılma sütunları
- Limit ve efsun sütunları
- Value sütunları türe göre ne anlama gelir?
- Örnek satır: Kılıç+0
- Sık yapılan hatalar
item_proto, sunucudaki her eşyanın tek satırlık tanımıdır. Türü, alt türü, envanterde kapladığı yer, fiyatları, kim tarafından kullanılabileceği, seviye şartı, sabit efsunları ve türe göre anlamı değişen altı Value değeri bu satırda durur. Bu yapıdaki item_proto.txt 35 sütundur; db çekirdeği okur, istemcinin ise paketlenmiş ayrı bir kopyası vardır.
Aşağıdaki davranışlar oyun çekirdeğinin kendi kodundan çıkarıldı; resmî yapıdan türeyen sunucuların çok büyük çoğunluğunda aynı işler. Sütunlara yazılan sayılar ise tamamen sunucu ayarıdır.
item_proto nerede durur, kim okur?
Sunucuda iki dosya vardır: share/conf/item_proto.txt ve share/conf/item_names.txt. Bunları oyun çekirdekleri değil db çekirdeği kendi çalışma klasöründen okur; çoğu kurulumda db klasöründeki dosyalar share/conf altındakilere bağlıdır. Oyun çekirdekleri tabloyu açılışta db'den hazır alır.
item_names.txt iki sütunludur: Vnum ve LocaleName, ilk satır başlıktır. Bir eşyanın burada Türkçe adı varsa oyunda o görünür, yoksa item_proto'daki Korece ad kullanılır. Name sütunundaki Korece ad ise silinmemelidir; drop dosyaları eşyayı önce bu adla arar.
Dosya sekmeyle ayrılmıştır ve ilk satırı atlanır. Satırın başındaki ve sonundaki boşluklar kırpılır, # ile başlayan satır yorum sayılır, tırnak içindeki metin tek hücre olarak okunur ve bir satır en çok 2048 karakter olabilir.
İstemci kendi kopyasını locale/tr/item_proto dosyasından okur. Bu dosya sıkıştırılmış ve şifrelenmiştir; txt'den nasıl üretildiği, protoların veritabanından okutulması ve MySQL'e yansıtılması proto araçları yazısında anlatılıyor.
Sütunlar tek tek
| # | Sütun | Anlamı | Not |
|---|---|---|---|
| 0 | Vnum | Eşya numarası | başlangıç~bitiş aralığı yazılabilir |
| 1 | Name | Korece orijinal ad | Drop ve kutu dosyaları bu adı arar |
| 2 | Type | Tür | Tanınmazsa db açılmaz |
| 3 | SubType | Alt tür | Listesi olmayan türlerde her zaman 0 |
| 4 | Size | Envanterde kapladığı dikey kare | 1 ile 3 arasına kırpılır |
| 5 | AntiFlags | Kullanım ve el değiştirme kısıtları | Birden çok ad dikey çizgiyle ayrılır |
| 6 | Flags | Eşya özellikleri | Birden çok ad dikey çizgiyle ayrılır |
| 7 | WearFlags | Giyilme yeri | Birden çok ad dikey çizgiyle ayrılır |
| 8 | ImmuneFlags | Giyene bağışıklık | Bitleri kayık, aşağıya bak |
| 9 | Gold | NPC marketinden alış fiyatı | Adetle çarpılır |
| 10 | ShopBuyPrice | NPC'ye satış değeri | Beşe bölünür, %3 vergi |
| 11 | RefinedVnum | Artı basınca dönüştüğü eşya | 0 ise yükseltilemez |
| 12 | RefineSet | refine_proto satırı | Yang, şans ve malzeme |
| 13 | AlterToMagicItemPercent | Yaratılırken efsunlu gelme şansı | Yüzde |
| 14-17 | LimitType0, LimitValue0, LimitType1, LimitValue1 | İki şart ya da süre | Seviye, statü, süre |
| 18-25 | ApplyType0..3, ApplyValue0..3 | Dört sabit efsun | Giyilince eklenir |
| 26-31 | Value0..Value5 | Türe göre değişen değerler | Aşağıda tablo |
| 32 | Specular | Modelin parlaklığı | Sunucu okumaz, yalnız istemci |
| 33 | GainSocketPercent | Açık taş yuvası sayısı | Yüzde değil, en çok 3 |
| 34 | AddonType | Rastgele beceri hasarı ve ortalama zarar | 0 değilse uygulanır |
Başlık satırı şöyledir:
Vnum Name Type SubType Size AntiFlags Flags WearFlags ImmuneFlags Gold ShopBuyPrice RefinedVnum RefineSet AlterToMagicItemPercent LimitType0 LimitValue0 LimitType1 LimitValue1 ApplyType0 ApplyValue0 ApplyType1 ApplyValue1 ApplyType2 ApplyValue2 ApplyType3 ApplyValue3 Value0 Value1 Value2 Value3 Value4 Value5 Specular GainSocketPercent AddonType
Orijinal Metin2 yapısında eşyanın üç sabit efsunu vardı ve dosya 33 sütundu. Dördüncü efsun yuvası sonradan eklenmiş bir genişlemedir; bu yüzden eski bir araçla açılmış 33 sütunlu bir dosyayı bu yapının db'si okuyamaz.
Vnum sütununa 110000~110099 gibi bir aralık yazılabilir; bu dosya setinde 180 satır böyledir ve hepsi simya taşlarıdır. Oyun, tablosunda tam karşılığı olmayan bir numarayı aralıklarda arar, ancak aralığın son değerini kapsama almaz: 110000~110099 satırı 110000 ile 110098 arasını karşılar.
Hangi hata db'yi durdurur, hangisi sessiz kalır?
Okuyucu tutarlı davranmaz ve bu durum hataları gizler. Type sütununa, listesi olan türlerde SubType'a, LimitType ya da ApplyType sütunlarına tanınmayan bir ad yazılırsa db günlüğe ItemProto Reading Failed : Invalid value satırını sütun numarası ve değerle birlikte yazar ve hemen kapanır. Bu hata en azından nerede olduğunu söyler.
Bayrak sütunlarında ise tanınmayan ad hiçbir iz bırakmadan atlanır. NONE yazmak da aslında tanınmayan bir ad yazmaktır ve 0 sonucunu verir. Bu dosya setinde ANTI_ACCE, ANTI_MAIL, ANTI_QUICKSLOT gibi yeni sürüm bayrakları ve 1.206 satırda WEAR_PENDANT yazıyor; db bunların hiçbirini tanımadığı için sessizce atlar. Bu yüzden tılsım eşyalarının giyilme bayrağı 0 kalır ve bu sunucuda giyilemezler.
Boş hücre de tehlikelidir. Ortadaki boş bir sayı hücresi 0 olarak değil belirsiz bir değer olarak okunur. Satırın sonundaki boş hücreler kırpma sırasında silinir, satır kısalır ve db açılırken kapanır. Her hücreye bir değer yazmak bu iki sorunu birden önler.
Type ve SubType listeleri
Tür adları dosyaya tam yazılmalıdır; aşağıdaki numaralar oyunun ve istemcinin kullandığı değerlerdir.
| No | Tür | Kullanımı |
|---|---|---|
| 0 | ITEM_NONE | Türsüz eşya |
| 1 | ITEM_WEAPON | Silah ve ok |
| 2 | ITEM_ARMOR | Zırh, kask, kalkan, takılar |
| 3 | ITEM_USE | Kullanılan eşyalar (iksir, kağıt, efsun nesnesi) |
| 4 | ITEM_AUTOUSE | Otomatik kullanılan eşya |
| 5 | ITEM_MATERIAL | Yükseltme malzemesi |
| 6 | ITEM_SPECIAL | Harita, anahtar, belge |
| 7 | ITEM_TOOL | Araç |
| 8 | ITEM_LOTTERY | Piyango |
| 9 | ITEM_ELK | Yang |
| 10 | ITEM_METIN | Zihin taşı |
| 11 | ITEM_CONTAINER | Kap |
| 12 | ITEM_FISH | Balık |
| 13 | ITEM_ROD | Olta |
| 14 | ITEM_RESOURCE | Kaynak (kılçık, inci, cevher) |
| 15 | ITEM_CAMPFIRE | Kamp ateşi |
| 16 | ITEM_UNIQUE | Özel eşya yuvasına takılanlar |
| 17 | ITEM_SKILLBOOK | Beceri kitabı |
| 18 | ITEM_QUEST | Görev eşyası |
| 19 | ITEM_POLYMORPH | Dönüşüm küresi |
| 20 | ITEM_TREASURE_BOX | Anahtarla açılan sandık |
| 21 | ITEM_TREASURE_KEY | Sandık anahtarı |
| 22 | ITEM_SKILLFORGET | Beceri unutturma |
| 23 | ITEM_GIFTBOX | Hediye kutusu |
| 24 | ITEM_PICK | Kazma |
| 25 | ITEM_HAIR | Saç |
| 26 | ITEM_TOTEM | Totem |
| 27 | ITEM_BLEND | Karışım iksiri |
| 28 | ITEM_COSTUME | Kostüm |
| 29 | ITEM_DS | Simya taşı |
| 30 | ITEM_SPECIAL_DS | Özel simya taşı |
| 31 | ITEM_EXTRACT | Simya özütü |
| 32 | ITEM_SECONDARY_COIN | İkinci para birimi |
| 33 | ITEM_RING | Yüzük |
| 34 | ITEM_BELT | Kemer |
| 35-38 | ITEM_PET, ITEM_MEDIUM, ITEM_GACHA, ITEM_SOUL | Yeni sürüm türleri |
Alt tür listesi yalnız şu türlerde vardır:
- WEAPON: WEAPON_SWORD, WEAPON_DAGGER, WEAPON_BOW, WEAPON_TWO_HANDED, WEAPON_BELL, WEAPON_FAN, WEAPON_ARROW, WEAPON_MOUNT_SPEAR, WEAPON_CLAW, WEAPON_QUIVER, WEAPON_BOUQUET.
- ARMOR: ARMOR_BODY, ARMOR_HEAD, ARMOR_SHIELD, ARMOR_WRIST, ARMOR_FOOTS, ARMOR_NECK, ARMOR_EAR, ARMOR_PENDANT.
- AUTOUSE: AUTOUSE_POTION, AUTOUSE_ABILITY_UP, AUTOUSE_BOMB, AUTOUSE_GOLD, AUTOUSE_MONEYBAG, AUTOUSE_TREASURE_BOX.
- MATERIAL: MATERIAL_LEATHER, MATERIAL_BLOOD, MATERIAL_ROOT, MATERIAL_NEEDLE, MATERIAL_JEWEL, MATERIAL_DS_REFINE_NORMAL, MATERIAL_DS_REFINE_BLESSED, MATERIAL_DS_REFINE_HOLLY, MATERIAL_DS_CHANGE_ATTR.
- SPECIAL: SPECIAL_MAP, SPECIAL_KEY, SPECIAL_DOC, SPECIAL_SPIRIT. LOTTERY: LOTTERY_TICKET, LOTTERY_INSTANT. METIN: METIN_NORMAL, METIN_GOLD. FISH: FISH_ALIVE, FISH_DEAD.
- RESOURCE: RESOURCE_FISHBONE, RESOURCE_WATERSTONEPIECE, RESOURCE_WATERSTONE, RESOURCE_BLOOD_PEARL, RESOURCE_BLUE_PEARL, RESOURCE_WHITE_PEARL, RESOURCE_BUCKET, RESOURCE_CRYSTAL, RESOURCE_GEM, RESOURCE_STONE, RESOURCE_METIN, RESOURCE_ORE, RESOURCE_AURA.
- UNIQUE: UNIQUE_NONE, UNIQUE_BOOK, UNIQUE_SPECIAL_RIDE, UNIQUE_SPECIAL_MOUNT_RIDE, USE_SPECIAL.
- COSTUME: COSTUME_BODY, COSTUME_HAIR, COSTUME_MOUNT, COSTUME_ACCE, COSTUME_WEAPON, COSTUME_AURA. DS ve SPECIAL_DS: DS_SLOT1..DS_SLOT6. EXTRACT: EXTRACT_DRAGON_SOUL, EXTRACT_DRAGON_HEART.
USE türünün 39 alt türü sırasıyla şunlardır:
USE_POTION, USE_TALISMAN, USE_TUNING, USE_MOVE, USE_TREASURE_BOX, USE_MONEYBAG, USE_BAIT,
USE_ABILITY_UP, USE_AFFECT, USE_CREATE_STONE, USE_SPECIAL, USE_POTION_NODELAY, USE_CLEAR,
USE_INVISIBILITY, USE_DETACHMENT, USE_BUCKET, USE_POTION_CONTINUE, USE_CLEAN_SOCKET,
USE_CHANGE_ATTRIBUTE, USE_ADD_ATTRIBUTE, USE_ADD_ACCESSORY_SOCKET, USE_PUT_INTO_ACCESSORY_SOCKET,
USE_ADD_ATTRIBUTE2, USE_RECIPE, USE_CHANGE_ATTRIBUTE2, USE_BIND, USE_UNBIND, USE_TIME_CHARGE_PER,
USE_TIME_CHARGE_FIX, USE_PUT_INTO_BELT_SOCKET, USE_PUT_INTO_RING_SOCKET, USE_CHANGE_COSTUME_ATTR,
USE_RESET_COSTUME_ATTR, USE_SELECT_ATTRIBUTE, USE_EMOTION_PACK, USE_BRAVERY_CAPE,
USE_ELEMENT_UPGRADE, USE_ELEMENT_DOWNGRADE, USE_ELEMENT_CHANGE
Listesi olmayan türlerde SubType sütununa ne yazılırsa yazılsın 0 okunur. Bu dosya setindeki QUEST_WARP, PET_PAY, USE_GACHA, SOUL_RED gibi değerler sunucuda karşılıksızdır. Listede adı olduğu hâlde oyun kodunda işleyicisi olmayan alt türler de vardır: USE_BIND, USE_UNBIND, USE_SELECT_ATTRIBUTE, USE_EMOTION_PACK, USE_BRAVERY_CAPE ve ELEMENT türleri kullanılınca hiçbir şey yapmaz. WEAPON_QUIVER takılabilir ama atış yalnız WEAPON_ARROW kabul ettiği için ok çantası işe yaramaz.
AntiFlags: kim kullanamaz, ne yapılamaz?
| Bayrak | Oyundaki etkisi |
|---|---|
| ANTI_FEMALE, ANTI_MALE | Kadın ya da erkek karakter kullanamaz |
| ANTI_MUSA, ANTI_ASSASSIN, ANTI_SURA, ANTI_MUDANG, ANTI_WOLFMAN | Savaşçı, ninja, sura, şaman ya da Lycan kullanamaz |
| ANTI_DROP | Yere atılamaz |
| ANTI_SELL | NPC'ye satılamaz |
| ANTI_GIVE | Ticarete konamaz; ayrıca yere atılamaz, pazara konamaz, PK ölümünde düşmez |
| ANTI_PKDROP | PK ölümünde düşmez |
| ANTI_STACK | Aynı eşyalarla birleşmez |
| ANTI_MYSHOP | Kişisel pazara konamaz |
| ANTI_SAFEBOX | Depoya konamaz |
| ANTI_GET, ANTI_EMPIRE_A/B/C, ANTI_SAVE | Tanınır ama oyunda hiçbir yerde denetlenmez |
Sınıf bayrakları ters mantıkla çalışır: bayrak "bu sınıf kullanamaz" demektir. Yalnız savaşçının kullanacağı bir kılıçta ANTI_ASSASSIN, ANTI_SURA, ANTI_MUDANG ve ANTI_WOLFMAN birlikte yazılır. Oyuncuya görünen karşılıkları eşya türleri yazısındadır.
Flags: hangi bayrak gerçekten ne yapar?
| Bayrak | Bit | Etkisi |
|---|---|---|
| ITEM_TUNABLE | 0 | Yalnız taş çıkarma kağıdının hedef kontrolünde aranır; demirci bu bayrağa bakmaz |
| ITEM_SAVE | 1 | Etkisiz |
| ITEM_STACKABLE | 2 | Üst üste biner; yığın sınırı CONFIG'deki item_count_limit, varsayılan 200 |
| COUNT_PER_1GOLD | 3 | NPC marketinde fiyat adet ÷ Gold olur |
| ITEM_SLOW_QUERY | 4 | Sahibi olan eşya düzenli kaydedilmez, oyuncu çıkarken kaydedilir |
| ITEM_RARE, ITEM_UNIQUE | 5, 6 | Etkisiz |
| ITEM_MAKECOUNT | 7 | Bir adet istenince Value1 kadar yaratılır |
| ITEM_IRREMOVABLE | 8 | Giyildikten sonra çıkarılamaz |
| CONFIRM_WHEN_USE | 9 | İstemci kullanmadan önce onay sorar |
| QUEST_USE, QUEST_USE_MULTIPLE | 10, 11 | Numara quest sistemine kaydedilir; UNIQUE binek takısında giyilince quest çalışır |
| QUEST_GIVE | 12 | Etkisiz |
| LOG | 13 | Kullanım log veritabanına yazılır |
| ITEM_APPLICABLE | 14 | İstemci eşyanın başka bir eşyanın üstüne sürüklenip kullanılmasına izin verir |
İki ayrıntı sık sorun çıkarır. Birincisi, artı basmak için ITEM_TUNABLE gerekmez; demirci yalnız RefinedVnum ve RefineSet'e bakar. İkincisi, QUEST_USE bayrağı ITEM_QUEST türündeki bir eşyaya konursa, kullanım quest'e gönderilmez; sıradan görev eşyalarında bu bayrak boş bırakılır.
WearFlags ve ImmuneFlags
WearFlags adları WEAR_BODY, WEAR_HEAD, WEAR_FOOTS, WEAR_WRIST, WEAR_WEAPON, WEAR_NECK, WEAR_EAR, WEAR_SHIELD, WEAR_UNIQUE ve WEAR_ARROW'dur. Birden fazla bayrak yazılırsa oyun şu öncelikle ilk eşleşen yuvayı seçer: gövde, baş, ayak, bilek, silah, kalkan, boyun, kulak, ok, özel eşya. WEAR_UNIQUE iki özel eşya yuvasından boş olanı alır. Kostüm, simya taşı ve kemer bu sütuna bakmaz, yerlerini tür ve alt türden alır. Bunların dışında WearFlags'i 0 olan bir eşya giyilemez.
ImmuneFlags'te dikkat gereken bir kayma vardır. db bu sütunu PARA, CURSE, STUN, SLEEP, SLOW, POISON, TERROR sırasıyla bite çevirir, oyun ise bağışıklık bitlerini STUN, SLOW, FALL, CURSE, POISON, TERROR, REFLECT sırasıyla okur. Giyilen eşyanın değeri hiç çevrilmeden karaktere eklendiği için sonuç şöyledir:
| Dosyaya yazılan | Oyunda verdiği bağışıklık |
|---|---|
| PARA | Sersemleme |
| CURSE | Yavaşlama |
| STUN | Yere düşme |
| SLEEP | Lanet (oyunda denetlenmez) |
| SLOW | Zehir (denetimi kapalı) |
| POISON | Korku (yalnız canavarlarda denetlenir) |
| TERROR | Yansıtma, yansıyan hasarı üçte birine indirir |
Varsayılan veride 9.981 eşyanın hepsinde bu sütun NONE'dur. Sersemleme, yavaşlama ve düşme bağışıklığı efsunla (APPLY_IMMUNE_STUN, APPLY_IMMUNE_SLOW, APPLY_IMMUNE_FALL) verilir ve kayma onları etkilemez. Eşyaya bağışıklık vermek istiyorsan bu sütun yerine efsun yuvasını kullan.
Fiyat, yükseltme ve yaratılma sütunları
Gold, NPC marketinden alış fiyatıdır ve satılan adetle çarpılır. Gold'u 0 olan bir eşya normal NPC marketinde bedava verilir; varsayılan veride Kılıç+0 bunlardandır. ShopBuyPrice, NPC'ye satarken kullanılır: adetle çarpılır, beşe bölünür ve çıkan tutardan %3 vergi düşülür. Satış penceresi vergiden önceki tutarı gösterir. Marketlerin kendisi NPC marketi ekleme yazısında.
RefinedVnum, artı basılınca eşyanın dönüşeceği numaradır; 0 ise demirci "daha fazla geliştirilemez" der. RefineSet, refine_proto tablosundaki satırı gösterir ve Yang, şans ile malzemeyi oradan alır. Köydeki Demirci (20016) RefineSet'i 500'ün altında olan eşyaları, Seon-Pyeong (20091) 500 ve üstünü yükseltir. Ayrıntılar yükseltme sistemi yazısında.
Üç sütun yalnız eşya ilk yaratılırken okunur. AlterToMagicItemPercent, düşen ya da kutudan çıkan eşyanın efsunlu gelme yüzdesidir; mob_drop_item'daki kill gruplarında bu yüzdenin yerine gruptaki sayı kullanılır. GainSocketPercent adının aksine yüzde değil, doğrudan açık taş yuvası sayısıdır ve en çok 3 olur; taş takma yazısındaki yuva dağılımı bu sütundan gelir. AddonType 0 değilse, değeri ne olursa olsun eşyaya rastgele bir beceri hasarı ve ortalama zarar çifti eklenir; resmî veride bu sütunda −1 yazar. Bu çiftin dağılımı ortalama zarar ve beceri hasarı yazısında.
Limit ve efsun sütunları
| No | LimitType | LimitValue |
|---|---|---|
| 0 | LIMIT_NONE | Kullanılmaz |
| 1 | LEVEL | Gereken seviye |
| 2-5 | STR, DEX, INT, CON | Gereken statü |
| 6 | REAL_TIME | Saniye; eşya yaratıldığı anda süre başlar, 0 yazılırsa 7 gün |
| 7 | REAL_TIME_FIRST_USE | Saniye; süre ilk kullanımda başlar |
| 8 | TIMER_BASED_ON_WEAR | Saniye; yalnız giyiliyken azalır, 0 yazılırsa 10 saat |
Bazı kaynaklarda 6. sırada PC_BANG türü bulunur ve sonraki türler bir sıra kayar. Bu yapıda PC_BANG kaldırılmıştır; başka bir kaynaktan alınmış araç ya da istemciyle karıştırılırsa süreli eşyalar yanlış görünür. Sürelerin oyuncu tarafı süreli eşyalar yazısında.
ApplyType sütunlarına APPLY_ önekli adlar yazılır: APPLY_MAX_HP, APPLY_ATT_SPEED, APPLY_ATTBONUS_HUMAN gibi. Bu yapı 107 adı tanır, APPLY_NONE'dan APPLY_MOUNT'a kadar; tam liste efsun listesi sayfasında. Dört yuvanın hepsi eşya giyildiğinde karaktere eklenir. Varsayılan veride dördüncü yuvayı yalnız dört binek kostümü kullanır.
Value sütunları türe göre ne anlama gelir?
| Tür ya da alt tür | Value0 | Value1 | Value2 | Value3 | Value4 | Value5 |
|---|---|---|---|---|---|---|
| WEAPON | Büyü saldırısı alt | Büyü saldırısı üst | Saldırı alt | Saldırı üst | Artı bonusu | |
| WEAPON_ARROW | Her oka ek hasar | |||||
| ARMOR | Savunma | Gövde zırhında model numarası (istemci) | Artı bonusu | |||
| USE_POTION | HP | SP | ||||
| USE_POTION_NODELAY | HP | SP | En büyük canın yüzdesi | En büyük SP'nin yüzdesi | ||
| USE_ABILITY_UP | APPLY numarası | Süre (sn) | Miktar | |||
| USE_AFFECT | Etki numarası | APPLY numarası | Miktar | Süre (sn) | ||
| USE_TALISMAN | 1 köye dönüş, 2 hatıra | |||||
| USE_RECIPE | Sonuç eşya | 1. malzeme | 1. adet | 2. malzeme | 2. adet | Başarı yüzdesi |
| METIN | Gereken yuva (1 gümüş, 2 altın) | Taş ailesi | ||||
| SKILLBOOK | Beceri numarası | |||||
| UNIQUE | Süre | Süre biçimi | ||||
| TREASURE_BOX, TREASURE_KEY | Kilit numarası | |||||
| BELT | Kemer derecesi |
Düz vuruşta silahın temel hasarı Value3 ile Value4 arasından rastgele seçilip iki katına çıkarılır; Value5'in iki katı saldırı oranı uygulandıktan sonra eklenir. Beceri formüllerinde silah değeri Value3-Value4 arasından, büyü değeri Value1-Value2 arasından seçilir ve ikisine de Value5 eklenir. Value0 silahta kullanılmaz; saldırı hızı ApplyType sütunundaki APPLY_ATT_SPEED'den gelir. Zırhta sunucu savunmayı Value1 + 2 × Value5 olarak yalnız gövde, kask, ayakkabı ve kalkanda ekler; bilezik, kolye ve küpeye yazılan savunma istemcide görünür ama işlemez.
USE_ABILITY_UP yalnız dokuz efsun numarasıyla çalışır: 3 CON, 4 INT, 5 STR, 6 DEX, 7 ATT_SPEED, 8 MOV_SPEED, 9 CAST_SPEED, 53 ATT_GRADE_BONUS ve 54 DEF_GRADE_BONUS. Başka bir numara yazılırsa iksir kullanılır ama etki vermez. USE_AFFECT'te aynı etki ve puan zaten varsa yenisi eklenmez.
METIN'de aynı Value5'i taşıyan iki taş aynı eşyaya takılamaz; taşın hangi eşyaya gireceğini WearFlags (WEAR_WEAPON ya da WEAR_BODY), bonusunu Apply sütunları belirler. Altın yuva isteyen taşta hem METIN_GOLD alt türü hem Value2 = 2 yazılmalıdır, çünkü istemci gereği alt türden okur. UNIQUE'te Value2 0 ise Value0 dakika cinsinden, yalnız giyiliyken azalan süredir; 1 ise gerçek saniyedir. Anahtar ile sandığın Value0'ı eşit olmalıdır, ödül sandığın kendi numarasıyla special_item_group'tan gelir.
MAKECOUNT bayrağı taşıyan her türde Value1 yaratılan yığın adedidir. Tabloda olmayan türlerin çoğunda, örneğin saç, balık ve dönüşüm küresinde, Value değerlerini oyun çekirdeği okumaz; QUEST türünde değerleri quest betikleri item.get_value() ile okuyabilir.
Örnek satır: Kılıç+0
| Sütun | Değer | Açıklama |
|---|---|---|
| Vnum, Name | 10, 도+0 | Türkçe adı item_names.txt'de "Kılıç+0" |
| Type, SubType, Size | ITEM_WEAPON, WEAPON_SWORD, 2 | Tek el kılıç, envanterde 2 kare |
| AntiFlags | ANTI_MUDANG | ANTI_WOLFMAN | Şaman ve Lycan kullanamaz |
| Flags, WearFlags | ITEM_TUNABLE, WEAR_WEAPON | Silah yuvasına takılır |
| Gold, ShopBuyPrice | 0, 0 | Markette bedava, satış değeri yok |
| RefinedVnum, RefineSet | 11, 1 | +1 olunca 11 numaralı eşyaya dönüşür |
| AlterToMagicItemPercent | 15 | %15 ihtimalle efsunlu düşer |
| LimitType0, LimitValue0 | LEVEL, 0 | Seviye şartı yok |
| ApplyType0, ApplyValue0 | APPLY_ATT_SPEED, 22 | Sabit saldırı hızı |
| Value0..5 | 0, 15, 19, 13, 15, 0 | Büyü saldırısı 15-19, saldırı 13-15, artı bonusu 0 |
| GainSocketPercent, AddonType | 1, 0 | Tek taş yuvası, ek efsun yok |
Kılıç+1'in satırı neredeyse aynıdır; Value5 7 olur, RefinedVnum 12'yi, RefineSet 2'yi gösterir, Gold ve ShopBuyPrice 100'e çıkar. +0'dan +9'a bütün satırlar bu zinciri izler.
Sık yapılan hatalar
- Yeni eşyayı yalnız sunucuya eklemek: istemci adını, simgesini ve ipucunu kendi item_proto kopyasından okur; dosyanın yeniden paketlenmesi gerekir.
- Bir hücreyi boş bırakmak ya da satırı eksik sütunla yazmak.
- Bayrak adını yanlış yazıp hata beklemek: db sessiz kalır, bayrak hiç eklenmez.
- Başka bir sürümden alınmış satırları kontrol etmeden eklemek: WEAR_PENDANT, ANTI_ACCE gibi adlar bu yapıda karşılıksızdır.
- GainSocketPercent'e 50 gibi bir yüzde yazmak: değer yuva sayısıdır, 3'te kesilir.
- Mevcut bir numarayı yeni eşyaya vermek ya da dosyayı numara sırası dışında bırakmak.
- Korece Name sütununu silmek ya da Türkçe adla değiştirmek: drop ve kutu dosyaları bu adı arar.
Canavar tarafındaki karşılığı mob_proto yazısında anlatılıyor.
Sık sorulan sorular
- item_proto'ya bayrak yazdım ama oyunda bir şey değişmedi, neden?
- db yalnız tanıdığı bayrak adlarını bite çevirir; listede olmayan ad hata vermeden atlanır. Tanınan bayrakların bir kısmı da oyunda hiç denetlenmez: ANTI_GET, ANTI_EMPIRE_A/B/C, ANTI_SAVE, ITEM_SAVE, ITEM_RARE, ITEM_UNIQUE ve QUEST_GIVE bu yapıda etkisizdir.
- GainSocketPercent taş yuvası açılma yüzdesi mi?
- Hayır. Adı yüzde gibi görünse de oyun bu değeri doğrudan açık yuva sayısı olarak kullanır. 2 yazılan bir silah her zaman 2 yuvalı oluşur; en çok 3 yuva açılır.
- Eşyanın NPC fiyatları hangi sütunlardan gelir?
- Gold, NPC marketinden alış fiyatıdır ve adetle çarpılır. NPC'ye satarken ShopBuyPrice adetle çarpılıp beşe bölünür, çıkan tutardan %3 vergi düşülür.
- Boş bıraktığım hücre 0 sayılır mı?
- Sayılmaz. Ortadaki boş bir sayı hücresi belirsiz bir değer alır; satır sonundaki boş hücreler ise satırı kısaltır ve db açılırken kapanır. Her hücreye bir değer, gerekiyorsa 0 yazılmalıdır.
İlgili sayfalar
- Metin2 Drop Dosyaları: mob_drop_item ve special_item_group Biçimi (Server kurma)
- Metin2 Eşya Türleri: Silah, Zırh, Takı ve Kullanım Kısıtları (Wiki)
- Metin2 mob_proto Rehberi: Sütunlar, Rütbeler ve AI Bayrakları (Server kurma)
- Metin2 NPC Marketi Nasıl Eklenir? shop ve shop_item Tabloları (Server kurma)
- Metin2 Ortalama Zarar ve Beceri Hasarı Nedir? Eksi Değerler ve Hangisi Seçilmeli (Wiki)
Kategori: Server Kurma Proto ve Veri Dosyaları sunucu dosyaları proto eşya item_proto bayraklar
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?