Metin2 metin taşı sistemi, oyunun en bilinen mekaniklerinden biridir: haritaya yerleşen taşa vurursun, taş düzenli aralıklarla canavar çağırır ve kırıldığında ödül düşürür. Kendi sunucunu yönetiyorsan bu davranışın tamamı server dosyalarında tanımlıdır; yani metin taşının seviyesini, hangi eşyaları düşürdüğünü ve ne sıklıkta yeniden doğduğunu üç farklı dosyadan kontrol edersin. Bu yazıda metin taşı mantığını ve bu üç ayarı nasıl güvenle düzenleyeceğini anlatıyorum.
Metin taşı server tarafında nasıl çalışır?
Metin taşları, görünüşte sabit objeler olsa da içeride birer "canavar" gibi tanımlanır. Üç parça birlikte çalışır:
- mob_proto — taşın kimliğini tutar: vnum, ad, seviye, can (HP) ve tip. Metin taşları burada
STONEtipiyle işaretlenir. - regen dosyaları — taşın hangi haritada, hangi koordinatta ve kaç dakikada bir doğacağını belirler.
- drop tabloları — taş kırıldığında düşen eşyaları yüzde olasılıklarıyla tanımlar.
Bir oyuncu taşa vurmaya başladığında taş, belirli aralıklarla çevresine bağlı canavarları (spawn grubunu) çağırır. Can sıfırlandığında taş kırılır, drop tablosu çalışır ve regen dosyasındaki süre dolduğunda taş aynı noktada yeniden doğar. Mantığı bu döngü oluşturur: tanımla → doğur → kır → ödül → yeniden doğur.
Metin taşı seviyesini ve canını ayarlama
Seviye ve can mob_proto içinde durur. Çoğu sunucu bunu bir SQL tablosu ya da mob_proto.txt üzerinden yönetir. Önemli sütunlar şunlardır:
VNUM— taşın benzersiz kimliği (ör. 8051).LEVEL— metin taşının seviyesi; düşen ödülün ve zorluğun ölçeğini belirler.MAX_HP— taşın canı; ne kadar dayanacağını belirler.TYPE— buradaSTONEolmalı ki istemci onu metin taşı gibi göstersin.
Diyelim ki orta seviye bir taşı biraz daha dayanıklı yapmak istiyorsun. mob_proto.txt kullanan bir kurulumda ilgili satırda LEVEL ve MAX_HP değerlerini düzenlersin:
# VNUM NAME TYPE LEVEL MAX_HP ...
8051 Metin_Tasi_A STONE 40 250000 ...
SQL ile yönetiyorsan aynı işlemi tek sorguyla yaparsın:
UPDATE mob_proto
SET level = 40, max_hp = 250000
WHERE vnum = 8051;
Önemli: mob_proto'yu değiştirdikten sonra çoğu server dosyasında düzenlenen tabloyu mob_proto ikili dosyasına çevirip game çekirdeğini yeniden başlatman gerekir. Cache devrede olduğu için sıcak değişiklikler her zaman anında yansımaz.
Metin taşı spawn ve yeniden doğma süresini düzenleme
Taşın haritadaki yeri ve yeniden doğma süresi, ilgili haritanın klasöründeki regen dosyalarında tutulur (genellikle regen.txt ya da metin taşına ayrılmış ek bir regen dosyası). Her satır bir doğum noktasını tanımlar. Tipik bir metin taşı satırı şöyle görünür:
s 441600 873200 0 0 0 30m 100 1 8051
Sütunların anlamı, soldan sağa şu sırayı izler:
- tip —
smetin taşı doğumunu işaret eder. - x / y — haritadaki koordinat (oyun içi konum).
- x_dir / y_dir / z — doğum alanının yayılma yarıçapı ve yön;
0sabit nokta demektir. - süre — yeniden doğma aralığı;
30m= 30 dakika,1h= 1 saat,10s= 10 saniye yazabilirsin. - yüzde — doğma olasılığı (100 = her seferinde).
- adet — aynı anda kaç taş doğacağı.
- vnum — hangi taşın doğacağı;
mob_proto'daki kimlikle eşleşmeli.
Spawn süresini kısaltmak için tek yapman gereken süre sütununu düşürmektir. Örneğin yoğun bir etkinlik haritasında taşların daha hızlı dönmesini istiyorsan:
s 441600 873200 0 0 0 5m 100 2 8051
Bu satır aynı noktada her 5 dakikada bir iki taş doğurur. Dosyayı kaydettikten sonra ilgili harita sürecini yeniden başlatman gerekir; regen dosyaları sadece harita ayağa kalkarken okunur.
Metin taşı drop ayarlarını yapma
Taş kırıldığında düşen eşyalar, drop tablolarında tanımlanır. En yaygın yöntem, taşın vnum'una bağlı bir grup oluşturup içine eşya ve olasılıklarını yazmaktır. Mantık şu şekildedir:
- Her eşya için bir olasılık verirsin (genellikle on binde bir ya da yüzde bazında, kullandığın dosya formatına göre).
- Taşın seviyesi yükseldikçe daha değerli eşyaları daha düşük olasılıkla eklersin; denge buradan gelir.
- Aynı taşa hem garanti (her seferinde düşen) hem de nadir ödüller tanımlayabilirsin.
Bir drop grubunun kavramsal görünümü şuna benzer:
Group MetinTasi_A_Drop
{
Mob 8051
Type kill
1 71001 1 30 # iksir, %30
2 25040 1 5 # ruh taşı, %5
3 19 1 1 # yang (para), %1
}
Burada her satır sıra eşya_vnum adet olasılık mantığını izler. Olasılığı dengelerken aç gözlü davranma: çok yüksek drop oranı ekonomiyi anında bozar. Yeni bir taş eklerken küçük olasılıklarla başla, sunucuda test et, sonra kademeli artır.
Sık yapılan hatalar ve test
Metin taşı ayarlarında en sık karşılaşılan sorunlar genellikle basit nedenlerden kaynaklanır:
- Taş hiç doğmuyor: regen satırındaki vnum,
mob_proto'daki kimlikle eşleşmiyordur ya da harita süreci yeniden başlatılmamıştır. - Taş doğuyor ama drop yok: drop grubu doğru vnum'a bağlı değildir veya çevrim içi dosya yüklenmemiştir.
- Süre değişti ama etki etmiyor: regen dosyaları yalnızca başlangıçta okunur; süreci yeniden başlatmadan değişiklik yansımaz.
Test ederken her zaman tek bir değişkeni değiştir ve sonucu doğrula. Bir GM hesabıyla taşı bizzat kır, drop'u gör, ardından spawn süresini saatle ölç. Bu disiplin, canlı sunucuda sürpriz dengesizlikleri önler.
Sık Sorulan Sorular
Metin taşı seviyesini artırınca drop otomatik iyileşir mi?
Hayır. Seviye yalnızca mob_proto'daki bir sayıdır; drop, ayrı bir tabloda tanımlıdır. Seviyeyi yükseltirsen taş daha güçlü görünür ama düşen eşyalar değişmez. Daha iyi ödül istiyorsan drop grubunu ayrıca düzenlemelisin.
Spawn süresini değiştirdim ama hiçbir şey olmadı, neden?
Regen dosyaları sadece harita süreci ayağa kalkarken okunur. Dosyayı kaydettikten sonra ilgili haritayı (ya da gerekiyorsa tüm game çekirdeğini) yeniden başlatmalısın. Ayrıca süre sütunundaki m, h, s harflerini doğru yazdığından emin ol.
Tüm haritalarda metin taşı süresini topluca değiştirebilir miyim?
Doğrudan tek bir ayarla değil; her haritanın kendi regen dosyası vardır. Pratikte küçük bir script ile tüm regen dosyalarındaki s satırlarının süre sütununu toplu olarak güncelleyebilirsin, ama değişiklikten önce mutlaka yedek al.
Kendi Metin2 sunucunda metin taşı sistemini baştan kurmak ya da dengelemek mi istiyorsun? Seviye, drop ve spawn ayarlarını sunucunun ekonomisine uygun şekilde düzenleyip test edebilirim — benimle iletişime geç ve projeni birlikte planlayalım.