Metin2 simya sistemi, oyuncuların ejder taşı (Dragon Soul Stone) yerleştirerek karakterlerine ek bonuslar kazandırdığı, sunucunun en çok talep gören uç-içerik mekaniklerinden biridir. Resmî adıyla Dragon Soul olan bu sistem, oyun içinde "simya" arayüzü olarak görünür ve doğru kurulduğunda hem ekonomiyi hem de oyuncu bağlılığını ciddi şekilde besler. Bu rehberde sistemi sunucu kaynağından client tarafına kadar adım adım kuruyor, ejder taşlarını item_proto içinde tanımlıyor ve bonusları dragon_soul_table.txt üzerinden ayarlıyoruz.
Sistem nasıl çalışır?
Simya sistemi üç ayrı katmandan oluşur ve hepsinin uyumlu olması şarttır:
- Sunucu kaynağı (game/db): Dragon Soul desteğini içermelidir. Resmî 2014+ ve çoğu modern (TMP4, Marty, vb.) kaynak bu desteği barındırır. Eski kaynaklarda fonksiyon seti elle eklenmelidir.
- Veri tabanı/proto: Ejder taşları özel bir item tipiyle (
ITEM_DS) tanımlanır ve simya envanterine yerleşir. - Yapılandırma dosyası:
dragon_soul_table.txttaşların kademe (grade), basamak (step), güç (strength) ve hangi bonusları vereceğini belirler.
Oyuncu, simya NPC'sini ya da arayüz kısayolunu (varsayılan olarak ayrı bir Dragon Soul envanteri) açar, taşı slota yerleştirir ve taşın tipi (örneğin Savaş, Büyü, Soluk, Mod ejder taşı) ile karakter sınıfına uygun bonus aktif olur.
Gerekli dosyalar ve ön koşullar
Başlamadan önce şunların yerinde olduğundan emin olun:
- Sunucu tarafında
dragon_soul_table.txt(genellikleshare/locale/<dil>/ya da kaynağın okuduğu data klasöründe). - Client tarafında
dragon_soul.txtve simya arayüz Python betikleri (uiDragonSoul.py,game.pyiçindeki çağrılar). itemtypes.txtiçindeITEM_DStipinin tanımlı olması.- Veri tabanı erişimi:
item_protove clientitem_protodump aracı (örn.txt <-> protodönüştürücü).
Bir dosyayı düzenlemeden önce yedek alın. Ejder taşı sistemini bozmanın en kolay yolu, bonus indeksleriyle item_proto arasında uyumsuzluk yaratmaktır.
Ejder taşını item_proto içinde tanımlama
Ejder taşları normal eşyalardan farklı olarak ITEM_DS tipiyle ve alt tip olarak ejder taşı türüyle tanımlanır. Bir item_proto satırı kavramsal olarak şu alanları taşır:
vnum name type subtype value0 value1 value2 value3 value4 value5
45301 "Savas Ejder Tasi" ITEM_DS DS_SLOT... 0 1 1 0 0 0
Burada kritik olan value alanlarıdır: bunlar taşın kademesini (grade), basamağını (step) ve gücünü (strength) kodlar. Bu değerler dragon_soul_table.txt içindeki tanımlarla birebir eşleşmek zorundadır. Eşleşmezse taş envantere girer ama bonus üretmez ya da sunucuyu çökertir.
İsimlerde Türkçe karakter kullanmaktan kaçının; proto okuyucu çoğu kaynakta UTF-8 dışı kodlama bekler. Yerelleştirilmiş ismi client item_names.txt üzerinden verin.
dragon_soul_table.txt yapısı
Bu dosya simya sisteminin beynidir. Genel olarak bölümlere ayrılır ve her bölüm taşların davranışını tanımlar:
- BASIC: Kaç tür ejder taşı slotu olduğu ve genel sayım.
- GRADE: Her kademenin (normal, kutsanmış, ejder, efsane vb.) olasılık ve isim ağırlıkları.
- STEP: Aynı kademe içindeki basamaklar; daha yüksek basamak daha güçlü bonus aralığı verir.
- STRENGTH / REFINE: Taşı arındırma/güçlendirme (refine) oranları.
- APPLY tabloları: Her tip + kademe + basamak kombinasyonu için verilebilecek bonuslar ve min–max değer aralıkları.
Bonusları tanımlarken oyunun gerçek APPLY_* sabitlerini kullanın. Sık kullanılanlar:
APPLY_MAX_HP +HP
APPLY_ATT_GRADE_BONUS +Saldiri Degeri
APPLY_DEF_GRADE_BONUS +Savunma
APPLY_CRITICAL_PCT +Kritik %
APPLY_PENETRATE_PCT +Delme %
APPLY_ATTBONUS_MONSTER +Canavarlara karsi hasar
Bir bonus satırı, ilgili APPLY tipini ve değer aralığını belirtir; sunucu, taş üretildiğinde bu aralıktan rastgele (ya da ağırlıklı) bir değer seçer. Aralıkları dengeli tutun: tek bir taşla %50 kritik vermek ekonomiyi ve PvP dengesini anında bozar.
Bonusları dengeli tanımlama
Pratik bir denge yaklaşımı:
- Düşük kademe taşlar yalnızca
APPLY_MAX_HP, küçük savunma gibi "güvenli" bonuslar versin. - Yüzde tabanlı güçlü bonuslar (kritik, delme, ortalama hasar) yalnızca üst kademe + üst basamakta açılsın ve dar aralıkta tutulsun.
- Taş tiplerini sınıflara göre ayırın: Savaş taşı yakın dövüş, Büyü taşı sura/şaman büyüsü, Soluk/Mod taşı yardımcı bonuslar gibi.
Her değişiklikten sonra dosyayı kaydedip game sürecini yeniden başlatın; dragon_soul_table.txt çoğu kaynakta yalnızca açılışta okunur, hot-reload yoktur.
Client tarafı ve test
Sunucu hazır olduğunda client'ı eşitleyin:
- Client
dragon_soul.txtdosyasını sunucudakiyle aynı tip/kademe/basamak yapısında tutun. - Yeni
item_protove ikon (icon/item/) dosyalarını client'a paketleyin. - Test için bir GM hesabıyla
/item <vnum>komutuyla taşı verin, simya envanterine yerleştirin ve karakter durum panelinde bonusun yansıdığını doğrulayın.
En sık yapılan hata, client ve sunucu proto'sunun farklı olmasıdır; bu durumda taş "bilinmeyen eşya" görünür ya da yerleştirildiğinde client çöker. İkincisi, dragon_soul_table.txt içindeki bir APPLY tipinin yazım hatası — bunlar sessizce bonusu düşürür, bu yüzden sunucu açılış log'unu mutlaka kontrol edin.
Sık Sorulan Sorular
Eski sunucu kaynağımda Dragon Soul desteği yoksa ne yaparım?
2013 öncesi bazı kaynaklarda Dragon Soul motoru eksiktir. Bu durumda modern bir kaynağa (resmî 40k+, TMP4 veya Marty tabanlı) geçmek, sistemi elle backport etmekten çok daha güvenlidir; backport, item ve karakter motoruna derin dokunuş gerektirir.
Bonus değerleri hiç görünmüyor, sebebi ne olabilir?
Genellikle üç nedenden biri: item_proto'daki value alanları dragon_soul_table.txt ile eşleşmiyor, APPLY sabiti yanlış yazılmış, ya da client proto güncellenmemiş. Sunucu açılış log'undaki "dragon soul" satırlarını okuyarak hangisini çözün.
Taşları nasıl arındırma (refine) yapabilirim?
Arındırma, dragon_soul_table.txt içindeki REFINE/STRENGTH bölümünün oranlarıyla çalışır. Belirli sayıda aynı tip taşı birleştirerek bir üst kademe taş üretirsiniz; oranları buradan düşük tutarak refine malzemelerine ekonomik değer kazandırabilirsiniz.
Simya sistemini sunucunuza sorunsuz entegre etmek mi istiyorsunuz? Dragon Soul kurulumu, dengeli bonus tabloları ve client paketlemesi konusunda destek için benimle iletişime geçin — kaynağınıza uygun, çökmeyen bir simya sistemi birlikte kuralım.