[13] [Client Locale String] Official sistemler serisi

Kaptan Yosun

Moderatör
Moderatör
Geliştirici
Yardımsever Üye
Mesaj
924
Çözümler
31
Beğeni
855
Puan
939
Ticaret Puanı
0
Bu seride doğrudan Metin2'den tersine mühendislik(reverse engineering) ile sökülmüş veya Metin2'ye sağdık kalınarak yazılmış sistemleri paylaşacağım.
Sistemler 2014 yılında sızdırılan kraizy.tgz arşivindeki mainline için yazılmıştır. Siz başka server dosyaları kullanıyorsanız aradığınız bazı kodları bulamayabilir veya birtakım hatalarla karşılaşabilirsiniz.

Sistem sahibi metin2.dev'den
Linkleri görebilmek için giriş yap veya kayıt ol.
'dir.
Sistemi aldığım asıl konu:
Linkleri görebilmek için giriş yap veya kayıt ol.



13- Client Locale String:
Aslında sunucudaki locale_string.txt, translate.lua ve oxquiz.lua dosyalarından okunan yazıların, Clientin locale packindeki locale_string.txt, locale_quest.txt ve locale_quiz.txt dosyalarından okunmasını sağlayan sistem. Bu sistem sayesinde aslında server tarafında sadece bir dilde okunabilen yazı, Client hangi dilde çalıştırılmışsa o dilde gözükür. Bir nevi çoklu dil(multilanguage) sistemidir.

Bu sistemin doğru çalışması için Clientinizin bu external kütüphaneye sahip olması gerekir:
  1. Linkleri görebilmek için giriş yap veya kayıt ol.

Sistem önizlemesi:


picture.webp


Linkleri görebilmek için giriş yap veya kayıt ol.


Örnek Kullanımlar

Server:
Orijinal:
Genişlet Daralt Kopyala
if (test_server && GetOwner())
{
    GetOwner()->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("%s에서 소켓 빠질때까지 남은 시간 %d"), GetName(), time);
}
Yeni sistem:
Genişlet Daralt Kopyala
if (test_server && GetOwner())
{
    GetOwner()->ChatPacket (CHAT_TYPE_INFO, "[LS;469;%s;%d]", GetName(), time);
}

Quest:
Orijinal locale.lua:
Genişlet Daralt Kopyala
locale.yes = gameforge.locale.yes
locale.no = gameforge.locale.no
locale.cancel = gameforge.locale.cancel
locale.gold = gameforge.locale.gold
locale.need_item_prefix = gameforge.locale.need_item_prefix
locale.need_item_postfix = gameforge.locale.need_item_postfix
locale.map_name = {
    [61] = gameforge.locale.map_name_1,
    [62] = gameforge.locale.map_name_2,
    [63] = gameforge.locale.map_name_3,
    [64] = gameforge.locale.map_name_4,
}
Yeni sistem locale.lua:
Genişlet Daralt Kopyala
locale.yes = "[LC;4473]"
locale.no = "[LC;3418]"
locale.cancel = "[LC;2426]"
locale.gold = "[LC;2585]"
locale.need_item_prefix = "[LC;3410]"
locale.need_item_postfix = "[LC;3409]"
locale.map_name = {
    [61] = "[LC;2691]",
    [62] = "[LC;2692]",
    [63] = "[LC;2693]",
    [64] = "[LC;2694]",
}
 
Üst