[PY] Sistem Seçeneklerine Yazı Tipi Eklentisi

Forgiven

Discord; burakhangunduz
Premium Üye
Geliştirici
Yardımsever Üye
Usta Üye
Editör
Mesaj
698
Çözümler
56
Beğeni
744
Puan
949
Ticaret Puanı
0
@H4ZEJ beraber zamanında çok aradık ama ya hepsinin linki bozuktu yada kodlar işlevsiz kalıyordu.
Sistem rohan2 filesinden sökülmüştür.

İlk önce uiscriptten sistem seçeneklerine buton ekliyoruz;
uiscript/systemoptiondialog.py açılır.
Aratılır;
Python:
Genişlet Daralt Kopyala
                {
                    "name" : "tiling_apply",
                    "type" : "button",

                    "x" : 110+100,
                    "y" : 185,

                    "text" : uiScriptLocale.OPTION_TILING_APPLY,

                    "default_image" : ROOT_PATH + "middle_Button_01.sub",
                    "over_image" : ROOT_PATH + "middle_Button_02.sub",
                    "down_image" : ROOT_PATH + "middle_Button_03.sub",
                },

Altına şu şekilde eklenir;
Unutmayın ekledikten sonra koordinatları kendi sistem seçeneklerinize göre ayarlayın.
Python:
Genişlet Daralt Kopyala
                {
                    "name" : "font_type_name",
                    "type" : "text",

                    "x" : 30,
                    "y" : 232,

                    "text" : "Yazı Tipi",
                },
             
                {
                    "name" : "font_type_arial",
                    "type" : "radio_button",

                    "x" : 110,
                    "y" : 232,

                    "text" : "Arial",

                    "default_image" : ROOT_PATH + "Middle_Button_01.sub",
                    "over_image" : ROOT_PATH + "Middle_Button_02.sub",
                    "down_image" : ROOT_PATH + "Middle_Button_03.sub",
                },
             
                {
                    "name" : "font_type_tahoma",
                    "type" : "radio_button",

                    "x" : 110+70,
                    "y" : 232,

                    "text" : "Tahoma",

                    "default_image" : ROOT_PATH + "Middle_Button_01.sub",
                    "over_image" : ROOT_PATH + "Middle_Button_02.sub",
                    "down_image" : ROOT_PATH + "Middle_Button_03.sub",
                },

Uiscript ile işimiz bitti.
Şimdi root/uisystemoption.py açılır.

importların arasına - import os - eklenir.
Ardından;

Kod:
Genişlet Daralt Kopyala
blockMode = 0
Bu kodun altına bu class eklenir;
Python:
Genişlet Daralt Kopyala
class PopupDialog(ui.ScriptWindow):
    def __init__(self, parent):
        print "PopupDialog::PopupDialog()"
        ui.ScriptWindow.__init__(self)

        self.__Load()
        self.__Bind()

    def __del__(self):
        ui.ScriptWindow.__del__(self)
        print "PopupDialog::~PopupDialog()"

    def __Load(self):
        try:
            pyScrLoader = ui.PythonScriptLoader()
            pyScrLoader.LoadScriptFile(self, "UIScript/PopupDialog.py")
        except:
            import exception
            exception.Abort("PopupDialog.__Load")

    def __Bind(self):
        try:
            self.textLine=self.GetChild("message")
            self.okButton=self.GetChild("accept")
        except:
            import exception
            exception.Abort("PopupDialog.__Bind")

        self.okButton.SAFE_SetEvent(self.__OnOK)

    def Open(self, msg):
        self.textLine.SetText(msg)
        self.SetCenterPosition()
        self.Show()
        self.SetTop()

    def __OnOK(self):
        self.Hide()

Ardından bu kod bloğu aratılır.
Python:
Genişlet Daralt Kopyala
        self.SetCenterPosition()
     
        self.titleBar.SetCloseEvent(ui.__mem_func__(self.Close))

Bu şekilde değiştirilir.

Python:
Genişlet Daralt Kopyala
        self.SetCenterPosition()
     
        self.popupDialog = PopupDialog(self)
     
        self.titleBar.SetCloseEvent(ui.__mem_func__(self.Close))

Aratılır;
Python:
Genişlet Daralt Kopyala
        self.tilingModeButtonList = []

Altına eklenir;
Python:
Genişlet Daralt Kopyala
        self.fonttypeButtonList = []

Aratılır;
Python:
Genişlet Daralt Kopyala
            self.tilingApplyButton=GetObject("tiling_apply")

Altına eklenir;
Python:
Genişlet Daralt Kopyala
            self.fonttypeButtonList.append(GetObject("font_type_arial"))
            self.fonttypeButtonList.append(GetObject("font_type_tahoma"))

Aratılır;
Python:
Genişlet Daralt Kopyala
        self.tilingModeButtonList[1].SAFE_SetEvent(self.__OnClickTilingModeGPUButton)

Altına eklenir;
Python:
Genişlet Daralt Kopyala
        self.fonttypeButtonList[0].SAFE_SetEvent(self.__OnClickArialButton)
        self.fonttypeButtonList[1].SAFE_SetEvent(self.__OnClickTahomaButton)

Aratılır;
Python:
Genişlet Daralt Kopyala
        self.__ClickRadioButton(self.cameraModeButtonList, constInfo.GET_CAMERA_MAX_DISTANCE_INDEX())

Altına eklenir;
Python:
Genişlet Daralt Kopyala
        if os.path.exists("gameoption.cfg"):
            fd = open( "gameoption.cfg" , "r")
            fonttype = fd.readline()
            fd.close()
            if fonttype == "0":
                self.__ClickRadioButton(self.fonttypeButtonList, 0)
            elif fonttype == "1":
                self.__ClickRadioButton(self.fonttypeButtonList, 1)
        else:
            self.__ClickRadioButton(self.fonttypeButtonList, 0)

Aratılır;
Python:
Genişlet Daralt Kopyala
    def OnCloseInputDialog(self):
        self.inputDialog.Close()
        self.inputDialog = None
        return True

Bu kod bloğunun üstüne eklenir;
Python:
Genişlet Daralt Kopyala
    def __OnClickArialButton(self):
        if os.path.exists("gameoption.cfg"):
            os.remove("gameoption.cfg")
        f = open( "gameoption.cfg", "w")
        f.write("0")
        f.close()
        self.popupDialog.Open(localeInfo.LANG_RESTART_FOR_CHANGE)
        self.__ClickRadioButton(self.fonttypeButtonList, 0)
     
    def __OnClickTahomaButton(self):
        if os.path.exists("gameoption.cfg"):
            os.remove("gameoption.cfg")
        f = open( "gameoption.cfg", "w")
        f.write("1")
        f.close()
        self.popupDialog.Open(localeInfo.LANG_RESTART_FOR_CHANGE)
        self.__ClickRadioButton(self.fonttypeButtonList, 1)

uisystemoption.py ile işimiz bitti.
gelelim root/prototype.py

importlara - import os - eklenir.


Aratılır;
Python:
Genişlet Daralt Kopyala
def RunApp():
    musicInfo.LoadLastPlayFieldMusic()
 
    app.SetHairColorEnable(constInfo.HAIR_COLOR_ENABLE)
    app.SetArmorSpecularEnable(constInfo.ARMOR_SPECULAR_ENABLE)
    app.SetWeaponSpecularEnable(constInfo.WEAPON_SPECULAR_ENABLE)

    app.SetMouseHandler(mouseModule.mouseController)
    wndMgr.SetMouseHandler(mouseModule.mouseController)
    wndMgr.SetScreenSize(systemSetting.GetWidth(), systemSetting.GetHeight())

Bu kod bloğu tamamen değiştirilir;
Python:
Genişlet Daralt Kopyala
def RunApp():
    musicInfo.LoadLastPlayFieldMusic()
 
    app.SetHairColorEnable(constInfo.HAIR_COLOR_ENABLE)
    app.SetArmorSpecularEnable(constInfo.ARMOR_SPECULAR_ENABLE)
    app.SetWeaponSpecularEnable(constInfo.WEAPON_SPECULAR_ENABLE)

    #Initialize default fonts.
    if os.path.exists("gameoption.cfg"):
        fd = open( "gameoption.cfg" , "r")
        fonttype = fd.readline()
        if fonttype == "0":
            localeInfo.UI_DEF_FONT = "Arial:14"
            localeInfo.UI_DEF_FONT_LARGE = "Arial:16"
        elif fonttype == "1":
            localeInfo.UI_DEF_FONT = "Tahoma:12"
            localeInfo.UI_DEF_FONT_LARGE = "Tahoma:16"
        fd.close()

    app.SetMouseHandler(mouseModule.mouseController)
    wndMgr.SetMouseHandler(mouseModule.mouseController)
    wndMgr.SetScreenSize(systemSetting.GetWidth(), systemSetting.GetHeight())

prototype.py ile işimiz bitti gelelim.
root/uitooltip.py açılır.

importlara eklenir -import os-

Aratılır;
Python:
Genişlet Daralt Kopyala
        self.defFontName = localeInfo.UI_DEF_FONT
        self.ClearToolTip()

Değiştirilir;
Python:
Genişlet Daralt Kopyala
        if os.path.exists("gameoption.cfg"):
            fd = open( "gameoption.cfg" , "r")
            fonttype = fd.readline()
            fd.close()
            if fonttype == "0":
                self.defFontName = "Arial:14"
            elif fonttype == "1":
                self.defFontName = "Tahoma:12"
        else:
            self.defFontName = localeInfo.UI_DEF_FONT
        self.ClearToolTip()

Root ile işimiz bitti.

locale_tr içinden locale_game.txt açın.
ve en sona ekleyin.

Python:
Genişlet Daralt Kopyala
LANG_RESTART_FOR_CHANGE    Değişiklik için oyunu tekrar başlatmalısın.

Son işlem olarak client dosyanızın içine
Linkleri görebilmek için giriş yap veya kayıt ol.
bunu atın.



Güncelleme 1; Arkadaşlar küçük bi sorun vardı şöyle ki; Misal oyunu tahoma yaptıktan sonra karakter ismi,derecesi,npcler ve bazı bölümler değişmiyordu bunun sebebi ui.py'deki ''app.SetDefaultFontName(localeInfo.UI_DEF_FONT)'' bu bölüm default yazı fontunu çektiği için böyle bi problem oluşturuyordu. Yardımından ötürü turkmmo'dan Kaneki'ye teşekkür ediyorum.


ui.py açılır.
İmportlara eklenir ; - import os -

Aratılır.
Python:
Genişlet Daralt Kopyala
app.SetDefaultFontName(localeInfo.UI_DEF_FONT)

Ve değiştirilir;
Python:
Genişlet Daralt Kopyala
if os.path.exists("gameoption.cfg"):
    fd = open( "gameoption.cfg" , "r")
    fonttype = fd.readline()
    if fonttype == "0":
        app.SetDefaultFontName("Arial:14")
    elif fonttype == "1":
        app.SetDefaultFontName("Tahoma:12")
    fd.close()




Kanıt;
x6YTds.png
 
Son düzenleme:
Güncelleme gelmiştir. Ekliyenler lütfen son güncellemeyi yapsınlar.
 
uiSystemOption.py(line:123) __Load_BindObject
ui.py(line:2927) GetChild

OptionDialog.__Load_BindObject - <type 'exceptions.KeyError'>:'font_type_arial' her adımı yaptım ama bu hatayı veriyor localede vs de tanımlı bu kısım
 
Paylaşım için teşekkürler. Daha farklı yazı tipleri için pack kısmına herhangi bir dosya eklemek gerekiyor mu yoksa sadece yazıtipi adını değişince sistem otomatik mi tanıyor.
 
uiSystemOption.py(line:123) __Load_BindObject
ui.py(line:2927) GetChild

OptionDialog.__Load_BindObject - <type 'exceptions.KeyError'>:'font_type_arial' her adımı yaptım ama bu hatayı veriyor localede vs de tanımlı bu kısım
font_type_arial kısmını uiscript bölümüne eklediğine emin misin?


Paylaşım için teşekkürler. Daha farklı yazı tipleri için pack kısmına herhangi bir dosya eklemek gerekiyor mu yoksa sadece yazıtipi adını değişince sistem otomatik mi tanıyor.

Ekstradan bir dosyaya gerek yok ama örnek verirsem senin pcnde özel bir yazı tipi var ise onu yapmanı önermiyorum eğer ki oyun açtığında o adam da mevcut değilse client açılmıcaktır.
 
font_type_arial kısmını uiscript bölümüne eklediğine emin misin?




Ekstradan bir dosyaya gerek yok ama örnek verirsem senin pcnde özel bir yazı tipi var ise onu yapmanı önermiyorum eğer ki oyun açtığında o adam da mevcut değilse client açılmıcaktır.
Bu durumda yazı tipini ihtiyaç halinde oyunculara yükletmek gerekecektir. Teşekkürler bilgilendirme için.
 
Geri
Üst