Kayıtlı
1 Yıl 9 Ay 15 Gün
Katılım
10 Ocak 2025
Konular
76
Mesajlar
166
Tepkime puanı
25
Online süresi
8h 31m
Puan
53
Konum
Türkiye
Web sitesi
www.zyncra.shop
Metin2 skilldesc.txt: Beceri Açıklamaları ve İpucu Formülleri

photo-1558494949-ef010cbdcc31

📌 Konu İçeriği — Hızlı Bakış (📂 Metin2 • ⏱ ~5 dk okuma • 💻 Kod: SQL)
01. skilldesc.txt ne zaman okunur?
02. Satır biçimi: 28 sütun
03. İpucundaki sayılar nasıl hesaplanır?
04. skill_proto ile ilişkisi: ikisi uyuşmazsa ne olur?
05. skilldesc.txt nasıl düzenlenir?
06. Sık hatalar

  1. skilldesc.txt ne zaman okunur?
  2. Satır biçimi: 28 sütun

    1. Nitelik ve silah adları
    1. Varsayılan dosyalarda ipucu ile oyunun farkı

    skilldesc.txt, istemcinin locale paketinde locale/tr/skilldesc.txt yolunda duran beceri açıklama dosyasıdır. Her satırı bir becerinin istemcideki tanımıdır: üç dereceli adı, açıklaması, koşul satırları, nitelikleri, gerektirdiği silah, simgesi, hareketi ve en çok üç etki satırı.

    [01] skilldesc.txt ne zaman okunur?

    İstemci dosyayı karakter seçim ekranına geçerken, item_proto, itemdesc.txt ve mob_proto'dan sonra okur; hemen ardından skilltable.txt gelir. skilltable.txt'deki bir satır ancak aynı numara skilldesc.txt'de varsa kaydedilir.

    Dosya Türkçe için cp1254 (Windows-1254) kod sayfasıyla kaydedilir. Kaynakla gelen dosyada 94 satır vardır; satırlar numara sırasında değildir, sıra önemsizdir.

    [02] Satır biçimi: 28 sütun

    Sütunlar sekmeyle ayrılır ve en çok 28 sütun okunur. İlk 13 sütun her satırda bulunmalıdır: istemci bunları sütun sayısına bakmadan okur, eksik bir satır istemciyi çökertebilir.

    SQL:
    33	ASSASSIN	Bıçak Çevirme	Dönen Bıçak	Danseden Bıçak	Düşmanın çevresinde Bıçakla dönmek.	Sıçrama Saldırısı	Dayanıklı Zehir Saldırısı			ATTACK_SKILL|CAN_CHANGE_DIRECTION|WEAPON_LIMITATION	DAGGER|DOUBLE_SWORD|SWORD	charyun	3	4			Saldırı Gücü %.0f-%.0f	2*minatk + (0.5*minatk + dex*9 + str*7)*k	2*maxatk + (0.5*maxatk + dex*9 + str*7)*k	Zehirlenme Değişimi %.0f%%	1 + 4*k

    Seviye şartında küçük bir tuzak var: skilltable.txt'deki şart yalnız bu sütunda 1'den büyük bir değer yazılıysa onun yerine geçer, çünkü koddaki koşul yeni değere değil eski değere bakar.

    [03] İpucundaki sayılar nasıl hesaplanır?

    İpucu uitooltip.py'de kurulur: derecesine göre ad, "Master", "Grand Master" ya da "Perfect Master" satırı, açıklama, koşul satırları; "Güncel Seviye" başlığının altında etki satırları, "Süre", "Yükleme Süresi" (bekleme) ve "Gereken SP".
    1. Beceri gücü: İstemci k'yı sunucudan almaz. Becerinin seviyesini kendi içine derlenmiş tabloyla yüzdeye çevirir (M1 %50, G1 %82, P %125) ve 100'e böler. Sunucuda SKILL_POWER_BY_LEVEL ya da bir becerinin bMaxLevel çarpanı değiştirilirse ipucu bunu bilmez. Formüllerde k ile SkillPoint aynı değerdir.
    2. İlk etki satırı: skilltable.txt'deki güç formülü alınır. Formülde atk, mwep ya da number geçiyorsa istemci formülü ikiye ayırır: number yerine min ve max, atk yerine minatk ve maxatk, mwep yerine minmwep ve maxmwep yazar. Üç Yönlü Kesme'nin formülüne ayrıca "× 3" eklenir, ipucu üç darbenin toplamını gösterir. Kamuflaj (34) ile lonca becerilerinde (151-157) bu değişiklik yapılmaz, skilldesc.txt'deki formül kalır.
    3. İkinci ve üçüncü satır: skilldesc.txt'deki en az ve en çok formülüyle hesaplanır; sunucunun szPointPoly2 değerini istemci hiç görmez.
    4. Yazım: Sonuç eksiyse artıya çevrilir. Metinde %.0f varsa iki sayı aşağı yuvarlanır, sonra metin C'nin printf biçimiyle doldurulur. Biçimlendirilmiş satır en çok 64 karakterdir, fazlası kesilir.
    5. Süre, bekleme, SP: skilltable.txt'nin süre, bekleme, SP ve saniyelik SP formüllerinden gelir. İpucu bekleme süresini büyü hızı uygulanmadan yazar; istemcinin bekleme kilidi ise büyü hızını hesaba katar.

    [04] skill_proto ile ilişkisi: ikisi uyuşmazsa ne olur?

    skilltable.txt'nin dokuz sütunu skill_proto'nun aynı adlı sütunlarının kopyasıdır: dwVnum, bMaxLevel, bLevelLimit, szPointPoly, szSPCostPoly, szDurationPoly, szDurationSPCostPoly, szCooldownPoly ve dwTargetRange. Sütunların sunucudaki anlamı skill_proto yazısında.

    Dehşet ile Karanlık Koruma'nın ilk satırındaki karışıklık, skilldesc.txt'deki metin ile skill_proto'nun ilk etkisinin farklı şeyleri anlatmasından doğar: metin dosyadan, sayı skilltable.txt'den gelir.

    [05] skilldesc.txt nasıl düzenlenir?
    1. Önce sunucu. Hasar, süre, SP ya da bekleme değişecekse skill_proto'yu değiştir ve /reload p ile yükle. İstemci dosyaları gerçek değeri değiştirmez.
    2. skilltable.txt'yi skill_proto'dan üret. Elle kopyalamak hata kaynağıdır. Aşağıdaki sorguyu skilltable.sql adıyla kaydedip yalnız SELECT yetkisi olan bir kullanıcıyla çalıştır; -p parolayı komut satırına yazmadan sorar. -N başlık satırını kaldırır, -B sütunları sekmeyle ayırır. Son sütun (dwTargetRange) her satırda bir sayı olduğu için dokuz sütun korunur; skilldesc.txt'de karşılığı olmayan satırlar istemcide sessizce atlanır.

      SQL:
      SELECT dwVnum, bMaxLevel, bLevelLimit, szPointPoly, szSPCostPoly, szDurationPoly,
      szDurationSPCostPoly, szCooldownPoly, dwTargetRange
      FROM skill_proto
      ORDER BY dwVnum;

      SQL:
      mysql -N -B -u okuyucu -p player < skilltable.sql > skilltable.txt
    3. Metni ve ikinci satırları skilldesc.txt'de düzelt. Dosyayı cp1254 ve CRLF satır sonuyla, sekmeleri koruyan bir düzenleyiciyle aç; boş sütunları silme, araya sekme ekleme.
    4. Paketle. skilldesc.txt locale paketinde locale/tr, skilltable.txt aynı pakette locale/common altındadır; paket yeniden oluşturulur, ayrıntı pack dosyaları yazısında.
    5. Dene. GM karakterle /setskill <beceri numarası> <seviye> yazıp beceriyi 20 (M1), 30 (G1) ve 40 (P) seviyesine getir, ipucunu her derecede oku. syserr.txt'de Strange Skill Attribute, STRANGE_SKILL_TYPE, Strange Formula ya da Out Of Range satırı varsa düzelt.

    [06] Sık hatalar
    • İlk satırın formülünü skilldesc.txt'de değiştirmek. Türkiye ve Avrupa istemcisinde bu formül kullanılmaz; sayı skilltable.txt'den gelir.
    • Yalnız skill_proto'yu değiştirmek. İpucu, SP denetimi ve bekleme kilidi eski değerle kalır.
    • Formülde istemcinin tanımadığı ad kullanmak. Sunucuda geçerli olan mtk ve wep istemcide ilk satırda bile tanınmaz; büyü silahı için mwep yaz. İkinci ve üçüncü satırlarda atk da tanınmaz, minatk ve maxatk gerekir. MinMWEP ve minmtk silahın büyülü değil normal saldırısını verir.
    • Biçim belirtecini bozmak. Metinde %d kullanmak sayıyı bozar, çünkü değerler ondalıklı sayı olarak gönderilir; aralık için iki %.0f, yüzde işareti için %% yazılır.

    [07] İlgili sayfalar
    • Metin2 Beceri Gücü Tablosu: Seviyeye Göre Güç Yüzdesi ve Anlamı (Wiki)
    • Metin2 Client Dil Dosyaları: locale_game, itemdesc ve skilldesc (Server kurma)
    • Metin2 Pack Dosyaları: EPK ve EIX Nedir? (Server kurma)
    • Metin2 skill_proto Sütunları ve Formüller (Server kurma)

    Sıkça Sorulan Sorular (SSS)
    Soru 1: Metin2 skilldesc.txt: Beceri Açıklamaları ve İpucu Formülleri rehberindeki ayarlar tüm sunucu yapılarında geçerli mi?
    Evet, rehberde paylaşılan temel mekanikler hem emek (zor) hem de orta/vs'lik sunucu kurgularında doğrudan uygulanabilir; sunucu oranlarına göre küçük ince ayarlar yapılabilir.

    Soru 2: En yüksek verim için hangi sıralama takip edilmeli?
    Öncelikle karakter/sistem temel gereksinimlerini tamamlayıp ardından konu içerisindeki adım adım dizilim ve optimizasyon tavsiyelerini sırasıyla uygulamanız en yüksek performansı sağlar.
 
Geri
Üst