Metin2 Client Dil Dosyaları: locale_game, itemdesc ve skilldesc
Hazırlayan: Metin2VIP Editörleri Yayın: 13 dk okuma
İçindekiler
- locale klasöründe hangi dosyalar var?
- Dosyalar hangi sırayla yüklenir?
- locale_game.txt nasıl yazılır?
- locale_interface.txt ne işe yarar?
- itemdesc.txt: eşya açıklamaları
- skilldesc.txt ve skilltable.txt: beceri ipuçları
- item_list.txt ve item_scale.txt
- insult.txt ve sohbet süzgeci
- jobdesc, empiredesc, guildbuildinglist ve ui klasörü
- Metinde @ ve dört rakam neden sorun çıkarır?
- Sunucu tarafı: locale_string.txt
- Yeni bir dil nasıl eklenir?
- Sık görülen sorunlar
Metin2 istemcisinin yazıları locale paketinde iki klasörde durur: dile özgü dosyalar locale/tr, bütün dillerin ortak kullandığı dosyalar locale/common altındadır. locale_game.txt oyun içi mesajları, locale_interface.txt pencere ve düğme yazılarını, itemdesc.txt eşya açıklamalarını, skilldesc.txt beceri adlarını ve ipuçlarını tutar. Eşya ve canavar adları bu dosyalarda değil, istemcinin item_proto ve mob_proto kopyalarındadır.
Dosyaların hepsi sekmeyle ayrılmış düz metindir ve Türkçe karakterler için Windows-1254 (cp1254) kod sayfasıyla kaydedilir. Sunucunun gönderdiği sistem mesajları ise istemcide değil, sunucudaki locale_string.txt ile çevrilir. Aşağıdaki anlatım istemcinin Python betiklerine, C++ kaynak koduna ve kaynakla gelen Türkçe dosyalara dayanır; paketin istemcideki yeri Metin2 client klasör yapısı yazısında.
locale klasöründe hangi dosyalar var?
| Dosya | İçerik | Ne zaman okunur |
|---|---|---|
locale/tr/locale_game.txt |
Oyun içi mesajlar, ipucu satırları, efsun ve harita adları | İstemci açılırken |
locale/tr/locale_interface.txt |
Pencere, düğme ve sekme yazıları | İstemci açılırken |
locale/tr/item_proto, mob_proto |
Eşya ve canavar verisi, adlarıyla birlikte | Karakter seçimine geçerken |
locale/tr/itemdesc.txt |
Eşya açıklamaları | Karakter seçimine geçerken |
locale/tr/skilldesc.txt |
Beceri adları, açıklamaları, ipucu satırları | Karakter seçimine geçerken |
locale/tr/insult.txt |
Yasaklı kelimeler | Karakter seçimine geçerken |
locale/tr/guildbuildinglist.txt |
Lonca binaları, fiyatları ve malzemeleri | Yükleme ekranında |
locale/tr/jobdesc_*.txt, empiredesc_*.txt |
Karakter yaratma ve krallık seçimindeki tanıtım yazıları | O ekran açılınca |
locale/tr/ui/ |
Dile göre değişen görseller: giriş penceresi, krallık ve karakter seçimi, harita adı başlıkları | İlgili ekranda |
locale/common/skilltable.txt |
Beceri formülleri | Karakter seçimine geçerken |
locale/common/item_list.txt |
Eşya simgesi ve yere düşen modeli | Karakter seçimine geçerken |
locale/common/item_scale.txt |
Kuşağın sınıfa ve cinsiyete göre boyu ve konumu | Karakter seçimine geçerken |
locale/common/map/*_point.txt |
Büyük haritadaki NPC ve geçit işaretleri | Haritaya girilince |
İstemcinin hangi dil klasörünü açacağını ana klasördeki loca.cfg söyler: ilk satırdaki 1254 tr kod sayfasını ve klasör adını verir, istemci de klasörü locale/tr olarak kurar. Dosya yoksa bu kaynakta derlenmiş varsayılan da Türkçedir. Dosyaların hepsi locale paketinin içinde olduğu için bir değişiklikten sonra paket yeniden oluşturulur; paket biçimi Metin2 pack dosyaları yazısında.
Dosyalar hangi sırayla yüklenir?
locale_game.txt Python betikleri ilk yüklendiğinde, locale_interface.txt logo ekranı açılırken okunur; ikisi de giriş ekranından öncedir. Biri pakette yoksa istemci LoadLocaleError (arayüz dosyası için LoadUIScriptLocaleError) kutusu gösterip kapanır. loca.cfg'ye pakette olmayan bir dil kodu yazılınca istemcinin giriş ekranına bile gelmeden kapanmasının nedeni budur.
Geri kalanlar, giriş başarılı olup karakter seçim ekranına geçilirken bu sırayla okunur:
item_list.txt: okunamazsa devam edilir.item_proto: okunamazsa yükleme durur.itemdesc.txt: okunamazsa devam edilir.mob_proto: okunamazsa yükleme durur.skilldesc.txt: okunamazsa yükleme durur.skilltable.txt: okunamazsa yükleme durur.insult.txt: okunamazsa devam edilir.item_scale.txt: kuşak sistemiyle derlenmiş istemcilerde.
Yükleme durduğunda istemci kapanmaz; sıranın gerisindeki dosyalar okunmadan oyuna girilir ve eksiklik sonradan belirir. Örneğin mob_proto bozuksa beceri bilgileri de yüklenmez, çünkü beceri dosyaları sırada ondan sonradır. itemdesc.txt, insult.txt ve item_scale.txt dışındaki adımlar hata verdiğinde syserr.txt'ye LoadLocaleData ile başlayan bir satır yazılır; bu üçünün hataları yayın derlemesinde günlüğe hiç düşmez. skilldesc.txt ve skilltable.txt için yazılan satırda, koddaki bir yazım hatası yüzünden mob_proto yolu görünür; sorun yine beceri dosyasındadır.
locale_game.txt nasıl yazılır?
Her satır bir anahtar ve bir metindir, aralarında tek bir sekme bulunur. Python betikleri metne localeInfo.ANAHTAR diye ulaşır. Metnin içine oyun sırasında bir değer yerleştirilecekse satıra sekmeyle ayrılmış üçüncü bir sütun eklenir:
MAP_A1 Yongan Bölgesi
CANNOT_WHISPER_NOT_LOGON %s bağlı değil. SA
CANNOT_WHISPER_SELF_REFUSE Fısıldamayı blokladığında birine birşey fısıldayamazsın. SNA
TOOLTIP_APPLY_CRITICAL_PCT Kritik Vuruş Şansı: +%%%d SA
| Üçüncü sütun | Anlamı | Bu dosyada |
|---|---|---|
| (yok) | Düz metin | 2.369 satır |
SA |
Bir değer alır (%s, %d gibi belirteçlerle) |
312 satır |
SNA |
Değer alır ama kullanmaz, metin olduğu gibi döner | 70 satır |
SAA, SAN, SAAA, SAAAA |
Birden çok değer alan metinler; bu dosyada yalnız pet becerisi ipuçlarında | 4 satır |
SA türündeki satırlara değer Python'un % işleciyle yerleştirilir. Metinde düz bir yüzde işareti gerekiyorsa bu yüzden %% yazılır: yukarıdaki kritik satırındaki +%%%d, ekranda +%10 olarak görünür. Çeviride belirteçlerin sayısı, türü ve sırası özgün satırla aynı kalmalıdır; eksik ya da fazla bir belirteç, o metin ilk kullanıldığında Python hatası verir ve hata syserr.txt'ye yazılır.
Efsun adları TOOLTIP_ ile başlayan satırlardadır (TOOLTIP_APPLY_ATTBONUS_HUMAN Yarı insanlara karşı güçlü +%%%d SA), harita adları MAP_ ile başlar. Bir efsunun ya da haritanın oyunda görünen adını değiştirmek için yalnız o satırı değiştirmek yeter.
Dosya okunurken dikkat edilecek üç ayrıntı:
- Satırın son karakteri satır sonu sayılıp atılır. Dosya bir yeni satırla bitmiyorsa son satırın son harfi kesilir.
- Üçüncü sütunda tanınmayan bir tür varsa istemci dosya adını ve satır numarasını (
line(N)) gösteren bir kutu açar ve kapanır. - Satır sonu Windows (CRLF) ya da Unix (LF) biçiminde olabilir; paketten okunurken ikisi de aynı işlenir.
locale_interface.txt ne işe yarar?
Biçim aynıdır ama üçüncü sütun yoktur. Betikler bu metinlere uiScriptLocale.ANAHTAR diye ulaşır; root paketindeki 65 arayüz düzeni dosyası (uiscript) yazılarını buradan alır.
ACCEPT Tamam
PASSWORD_RESTART Şifremi unuttum
Sekmesi eksik bir satır hata vermez, yalnız atlanır; o anahtarı kullanan pencere açılırken ise Python "anahtar yok" hatası (AttributeError) verir. Dil klasöründeki jobdesc_*.txt, empiredesc_*.txt ve ui/ alt klasörlerinin yolları da bu dosyayı okuyan betikte tanımlıdır.
itemdesc.txt: eşya açıklamaları
Her satır vnum<sekme>ad<sekme>açıklama<sekme>özet biçimindedir. Açıklama eşyanın ipucuna, özet onun altına koşul rengiyle yazılır:
25040 Kutsama Kağıdı Geliştirme başarısız olduğunda eşyanın yok olma riski ortadan kalkıp, sadece kalitesi 1 kademe düşer.
50701 Şeftali Çiçeği Geçmişte şeftali çiçeklerinden cilt kremi yapılırdı. Araştırma
İkinci sütundaki ad okunmaz. Kutsama Kağıdı gibi bir eşyanın oyunda görünen adı istemcinin item_proto dosyasından gelir; bu sütun yalnız dosyayı okuyan kişi içindir. Açıklamayı çift tırnak içine almak serbesttir, tırnaklar atılır. item_proto'da bulunmayan bir numaranın satırı sessizce atlanır. Kaynakla gelen dosyada 6.147 satır var.
Eşya adını değiştirmek için sunucudaki item_names.txt düzenlenir ve istemcinin item_proto'su bu dosyadan yeniden üretilir; dosyanın sütunları item_proto yazısında. Canavarlarda iş ikiye bölünür: canavarın başındaki adı istemci kendi mob_proto'sundan alır, NPC'lerin adını ise sunucu gönderir. İkisi aynı mob_names.txt'den üretilmezse bir canavarın adı değişip bir NPC'ninki eski kalabilir; ayrıntı mob_proto yazısında.
skilldesc.txt ve skilltable.txt: beceri ipuçları
skilldesc.txt'nin her satırı bir beceridir ve sekmeyle ayrılmış en çok 28 sütundan oluşur. İlk 13 sütun bulunmalıdır, sonrakiler isteğe bağlıdır; kaynakla gelen dosyada her satır 22 sütundur. Üç Yönlü Kesme satırının sütunları:
| Sütun | Anlamı | Üç Yönlü Kesme |
|---|---|---|
| 1 | Beceri numarası | 1 |
| 2 | Sınıf | WARRIOR |
| 3-5 | Üç ad; ipucu başlığında becerinin derecesine göre biri kullanılır, boşsa birincisi | Üç Yönlü Kesme, Üçlü Kesme, Üçe ayırma |
| 6 | Açıklama | Şimşek hızında düşmanı kesmek. |
| 7-10 | Koşul satırları (ilk üçü okunur) | Önden 3 kez sırama saldırısı, Çoklu Hedefe Saldırı |
| 11 | Nitelikler | ATTACK_SKILL|NEED_TARGET|WEAPON_LIMITATION |
| 12 | Gerekli silah | SWORD|TWO_HANDED |
| 13 | Simge dosyasının adı | samyeon |
| 14-15 | Hareket numarası, derece başına hareket sayısı | 1, 4 |
| 16-17 | Hedef sayısı ve tekrar formülü | boş |
| 18-26 | Üç etki satırı: açıklama, en az formülü, en çok formülü | Toplam saldırı gücü %.0f-%.0f ve iki formül |
| 27-28 | Seviye sınırı, en yüksek seviye | yazılmamış |
Formüllerde SkillPoint ya da k becerinin o anki gücünü, MinATK, STR, lv gibi adlar karakterin değerlerini gösterir. Sonuç eksi çıkarsa ipucunda artı olarak yazılır.
skilltable.txt ise locale/common altındadır ve her satırı tam 9 sütundur: beceri numarası, en yüksek seviye, seviye sınırı, güç formülü, SP formülü, süre formülü, süre boyunca harcanan SP formülü, bekleme formülü ve hedef menzili. Sütun sayısı tutmayan satır atlanır. Bu sütunlar sunucudaki skill_proto tablosunun aynı adlı sütunlarının birebir kopyasıdır:
1 1 0 -( 1.1*atk + (0.5*atk + 1.5 * str)*k) 40+100*k 12 0
47 1 0 -(atk + (1.9*atk + dex*2+ str*2)*k) 30+130*k 12 2500
İpucunun ilk etki satırı (saldırı becerilerinde saldırı gücü aralığı) bu dosyadaki güç formülüyle hesaplanır; skilldesc.txt'den bu satır için yalnız açıklama metni alınır, oradaki formüller kullanılmaz. Formülde atk, mwep ya da number geçiyorsa istemci formülü en az ve en çok değer için ikiye ayırır, geçmiyorsa tek bir değer hesaplar. Üç Yönlü Kesme'de sonuca ayrıca "× 3" eklenir, ipucu üç vuruşun toplamını gösterir. 34 numaralı beceri ile 151-157 arasındaki lonca becerileri bu kuralın dışındadır. İkinci ve üçüncü etki satırları skilldesc.txt'deki formüllerden gelir; SP, bekleme süresi ve menzil skilltable.txt'den okunur.
item_list.txt ve item_scale.txt
item_list.txt her eşya numarasını simgesine ve yere düştüğünde görünen modeline bağlar: vnum<sekme>tür<sekme>simge, isteğe bağlı dördüncü sütunda da model. Tür sütunu okunmaz.
10 WEAPON icon/item/00010.tga d:/ymir work/item/weapon/00010.gr2
Model sütunu boşsa eşya yere torba olarak düşer. Listede hiç olmayan bir eşyanın simgesi icon/item/<beş haneli numara>.tga yolunda aranır; o da yoksa item_proto'daki özgün adı aynı olan önceki bir eşyanın simgesi, sonra numaranın onluk tabanının (+0 sürümünün) simgesi, en son Boş Şişe simgesi kullanılır. Kaynakla gelen dosyada 12.448 satır var.
item_scale.txt kuşak sistemiyle derlenmiş istemcilerde kullanılır. Satır biçimi vnum<sekme>sınıf<sekme>cinsiyet ve ardından üç ölçek, üç konum değeridir. Bir satır, yazılan numarayla birlikte ardından gelen dört numaraya, toplam beş eşyaya uygulanır:
85001 JOB_ASSASSIN M 62 68 62 0 0 0.52
insult.txt ve sohbet süzgeci
insult.txt satır başına bir kelimedir. İstemci listeyi karakter adında ("Bu isim hatalı."), lonca adında, fısıltıda ve sohbette kullanır. Karşılaştırma büyük/küçük harfe bakmaz ve kelimeyi metnin içinde parça olarak da arar; listeye yazılan kısa bir kelime, onu içeren bütün adları engeller.
Sohbette iki davranış var. Bu istemcide süzgeç açıktır (uichat.py içinde ENABLE_INSULT_CHECK = True): oyuncunun yazdığı mesaj gönderilir, başka oyunculardan gelen mesajdaki yasaklı kelimeler * ile kapatılır. Süzgeç kapatılırsa gelen mesajlara dokunulmaz; bunun yerine yasaklı kelime içeren mesaj hiç gönderilmez ve "Bu cümle yanlış kelimeler içeriyor." uyarısı çıkar.
Sunucu bu dosyayı görmez. Kendi listesini common veritabanındaki banword tablosundan alır; sohbeti ve fısıltıyı bu listeyle * ile kapatır, karakter adlarını ve pazar tabelalarını da onunla denetler. İstemcideki liste yalnız oyuncunun ekranında işe yarar; sunucuya ulaşan metni denetleyen banword tablosudur.
jobdesc, empiredesc, guildbuildinglist ve ui klasörü
jobdesc_*.txt: Karakter yaratma ekranında akan sınıf tanıtımı (warrior,assassin,sura,shaman,wolfman). Olay betiği biçimindedir: dosya[DELAY value;0]ile başlar, satır sonları[ENTER]ile yazılır.empiredesc_a.txt,empiredesc_b.txt,empiredesc_c.txt: Krallık seçim ekranındaki tanıtım yazıları, aynı biçimde.guildbuildinglist.txt: Lonca arazisine kurulabilen binalar. Başlık satırlı bir tablodur (VNUM,TYPE,MODEL,NAME,PRICE,MATERIALS,NPC...);NAMEsütunu oyunda görünen addır.ui/:login,empire,select,windowsvemapnameklasörlerinde dile göre değişen görseller ve onları tarif eden.subdosyaları. Haritaya girince ekranda beliren başlıklarmapnamealtındaki.tgadosyalarıdır.common/map/<harita>_point.txt: Büyük haritadaki NPC ve geçit işaretleri,num tür x y "metin"biçiminde. Kaynakla gelen dosyalarda metinler Korece kalmıştır ve Türkçe kod sayfasında okunur çıkmaz; son sütun çevrilerek düzeltilir.
Metinde @ ve dört rakam neden sorun çıkarır?
İstemci çizdiği her metinde @ ile dört rakamı yan yana görürse bunu kod sayfası değiştirici sayar: bu beş karakteri göstermez, metnin geri kalanını o numaralı kod sayfasıyla okur. @0949 Korece, @9999 UTF-8 demektir. Sunucu da çevirisi bulunmayan mesajların başına bu yüzden @0949 ekler.
Sunucu tarafı: locale_string.txt
Oyuncuya giden sistem mesajlarının büyük kısmı istemcide değil sunucuda üretilir ve sunucunun dil dosyasıyla çevrilir. Sunucunun dili common veritabanındaki locale tablosunun LOCALE satırından gelir (turkey); dosya share/locale/turkey/locale_string.txt'dir. Biçim, tırnak içinde özgün metin ve noktalı virgül, alt satırda yine tırnak içinde çeviridir; çiftler arasına boş satır konur:
"그런 명령어는 없습니다";
"Bu düzenleme mevcut değil. ";
Özgün metin, kaynak kodda oyuncuya giden metinlerin yazıldığı Korece hâlidir; dosyada cp949 baytları olarak durur, çeviri ise cp1254'tür. Çekirdek göndereceği metni bu sözlükte arar: bulursa çeviriyi, bulamazsa metnin başına @0949 ekleyip Korece aslını yollar ve syserr'e LOCALE_ERROR: "..." satırı yazar. Oyunda Korece bir mesaj görülüyorsa eksik olan sunucudaki çeviridir, istemcide aranmamalıdır.
Dosyayı düzenlerken dikkat edilecekler:
- Özgün satıra dokunma. Çekirdek özgün metni bayt bayt karşılaştırır. Dosyayı Korece karakterleri dönüştüren bir düzenleyiciyle (örneğin UTF-8'e çevirerek) kaydetmek bütün eşleşmeleri bozar.
- Belirteçleri koru. Çeviri, mesaj oluşturulurken doğrudan biçim metni olarak kullanılır.
%sve%d'lerin sayısı ve sırası özgün metinle aynı kalmalıdır; yanlış türde bir belirteç mesajı bozar, çekirdeği çökertebilir. - Çifti yarım bırakma. Bir çiftin ikinci satırı eksik ya da tırnakları bozuksa çekirdek
locale_init: invalid formatyazar ve dosyanın o noktadan sonrasını hiç okumaz. Tek bir bozuk satır, ondan sonraki yüzlerce mesajın Korece çıkmasına yol açar. - Tırnakla başlamayan satırlar atlanır; aynı özgün metin iki kez yazılırsa ilk çeviri geçerlidir. Metin içinde
\"tırnak,\nyeni satır olarak okunur.
Dosya her oyun çekirdeği açılırken bir kez okunur, auth çekirdeği okumaz; değişiklik için çekirdekler yeniden başlatılır. Kaynak paketindeki game/src klasöründe bu iş için iki küçük Python 2 betiği de var: build_locale_string.py bütün .cpp dosyalarındaki LC_TEXT("...") metinlerini toplayıp satır satır yazar, merge_locale_string.py bu listeyi aynı sırada yazılmış bir çeviri listesiyle birleştirip yukarıdaki biçimde locale_string_out.txt üretir. Kaynağa yeni bir LC_TEXT ekleyen geliştirici çevirisini de bu dosyaya eklemelidir; eklenmezse metin Korece kod sayfasıyla gönderilir ve Türkçe yazılmış olsa bile harfleri bozuk görünür.
translate.lua
Bu kaynakta açık olan ENABLE_TRANSLATE_LUA bayrağıyla sunucu, quest ortamını kurarken locale/turkey/translate.lua dosyasını da yükler. Dosya gameforge.<bölüm>.<anahtar> = "metin" biçiminde bir Lua tablosudur ve cp1254 kaydedilir:
gameforge = {}
gameforge.locale = {}
gameforge.locale.yes = "Evet "
gameforge.locale.no = "Hayır "
gameforge.locale.cancel = "İptal "
Bir quest metni doğrudan yazmak yerine bu tablodan alırsa (say(gameforge.locale.yes) gibi), çeviri quest dosyasına dokunmadan değiştirilebilir. Kaynakla gelen sunucuda quest dosyaları metinlerini doğrudan Türkçe yazıyor; translate.lua'yı esas olarak ortak quest kütüphaneleri (questlib.lua, GFquestlib.lua) evet/hayır seçenekleri ve süre biçimleri için kullanıyor. Dosya yüklenemezse sunucu LOAD_TRANSLATE_ERROR yazar ve oyun çekirdeği açılmaz; Lua sözdizimindeki tek bir hata, bir sonraki başlatmada hiçbir çekirdeğin açılmamasına yol açar. Quest ortamı /reload q ile yeniden kurulduğunda dosya da yeniden okunur. Quest yazımı quest yazma yazısında.
Yeni bir dil nasıl eklenir?
locale/trklasörünü yeni dil koduyla kopyala (locale/engibi) ve içindeki metin dosyalarını çevir.ui/altındaki görselleri o dile göre hazırla; dosya adları aynı kalmalı.- Eşya ve canavar adları için o dilin
item_names.txtvemob_names.txtdosyalarını hazırla, yeni klasördekiitem_protovemob_proto'yu bunlardan üret. Araçlar proto araçları yazısında. locale/commondosyaları dilden bağımsızdır, kopyalanmaz.- Dosyaları dilin kod sayfasıyla kaydet ve
loca.cfg'ye<kod sayfası> <dil kodu>yaz. Bu istemcinin giriş ekranındaki dil düğmeleri1252 en,1252 de,1252 es,1252 pt,1250 huve1250 rosatırlarını yazar; ilgili klasör pakete konunca bu düğmeler de çalışır. - locale paketini yeniden oluştur.
Kod sayfası, metinlerin hangi karakter tablosuyla okunacağını ve hangi yazı tipinin seçileceğini belirler. 1252 Batı Avrupa dillerini, 1250 Orta Avrupa dillerini, 1254 Türkçeyi karşılar.
Sık görülen sorunlar
| Belirti | Olası neden |
|---|---|
Açılışta LoadLocaleError kutusu, istemci kapanıyor |
loca.cfg'deki dilin klasörü ya da locale_game.txt pakette yok. |
Açılışta dosya adı ve line(N) yazan kutu |
locale_game.txt'nin o satırında üçüncü sütun tanınmıyor ya da sekmeler kaymış. |
Türkçe harfler bozuk (ÅŸ, ı gibi) |
Dosya cp1254 yerine UTF-8 kaydedilmiş. |
| Bir yazının devamı kayboluyor | Metinde @ ile dört rakam yan yana geçiyor. |
| Eşya adı değişmiyor | Ad itemdesc.txt'den değil, istemcinin item_proto'sundan okunur. |
| Canavar adı yeni, NPC adı eski (ya da tersi) | Canavar adı istemcinin mob_proto'sundan, NPC adı sunucudan gelir. |
| Beceri ipucu eski değeri gösteriyor | skilltable.txt sunucunun skill_proto'suyla aynı değil. |
Beceri bilgileri gelmiyor, syserr'de RegisterSkillDesc ile mob_proto yolu |
skilldesc.txt okunamadı; satırdaki yol kodun yazım hatasıdır. |
| Masum adlarda "Bu isim hatalı." | insult.txt'de bu adların içinde geçen kısa bir kelime var. |
| Sistem mesajları Korece | Sunucunun locale_string.txt'sinde çeviri yok ya da daha yukarıdaki bozuk bir çift yüzünden okunmadı. |
Oyuncunun kendi bilgisayarından kaynaklanan hatalar için istemci hataları yazısına bakılabilir.
Sık sorulan sorular
- Metin2'de eşya adı hangi dosyadan gelir?
- İstemcide eşya adı item_proto dosyasından okunur; itemdesc.txt'deki ad sütunu kullanılmaz. Adı değiştirmek için sunucudaki item_names.txt düzenlenir ve istemcinin item_proto'su bu dosyadan yeniden üretilir.
- Oyunda neden bazı mesajlar Korece çıkıyor?
- Bu mesajlar sunucudan gelir. Sunucunun locale_string.txt dosyasında karşılığı olmayan metin Korece aslıyla gönderilir. Dosyadaki tek bir bozuk çift de ondan sonraki bütün çevirilerin yüklenmemesine yol açar.
- locale_game.txt'deki SA ne demek?
- Satırın üçüncü sütunu metne sonradan değer yerleştirileceğini söyler. SA bir değer alan metindir, SNA değer alır ama yok sayar; SAA, SAN, SAAA ve SAAAA birden çok değer alan metinler içindir.
- Beceri açıklamasındaki hasar neden sunucudakinden farklı?
- İpucunun ilk satırı istemcinin locale/common/skilltable.txt dosyasındaki formülle hesaplanır. Sunucuda skill_proto değiştirilip bu dosya güncellenmezse açıklama eski değeri gösterir.
İlgili sayfalar
- Metin2 Client Klasör Yapısı: Hangi Dosya Ne İşe Yarar? (Server kurma)
- Metin2 Açılmıyor ve İstemci Hataları: syserr.txt Nasıl Okunur? (Rehber)
- 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 Pack Dosyaları: EPK ve EIX Nedir? (Server kurma)
Kategori: Server Kurma Client (İstemci) locale istemci çeviri locale_game geliştirici
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?