__BL_MULTI_LANGUAGE__

This commit is contained in:
metin2clean 2024-06-06 17:11:43 -05:00
parent e652ad335c
commit d5f68e8df2
173 changed files with 14127 additions and 177595 deletions

Binary file not shown.

1
client/loca.cfg Normal file
View File

@ -0,0 +1 @@
1252 es

View File

@ -13,6 +13,9 @@ SAVE_ID 0
DECOMPRESSED_TEXTURE 0
WINDOWED 1
SHOW_SALESTEXT 0
ANONYMOUS_MODE 0
SHOW_COUNTRY_FLAG 1
SHOW_EMPIRE_FLAG 1
USE_DEFAULT_IME 0
SOFTWARE_TILING 2
SHADOW_LEVEL 3

View File

@ -1,5 +1,7 @@
PACK
*
special_patch_maliml
*
special_patch_animation
*
special_patch_common

View File

@ -257,3 +257,29 @@ def RegisterEmotionIcons():
for key, val in ICON_DICT.items():
player.RegisterEmotionIcon(key, val)
if app.__BL_MULTI_LANGUAGE__:
def ReloadEmotionDict():
global EMOTION_DICT
EMOTION_DICT = {
EMOTION_CLAP : {"name": localeInfo.EMOTION_CLAP, "command":"/clap"},
EMOTION_DANCE_1 : {"name": localeInfo.EMOTION_DANCE_1, "command":"/dance1"},
EMOTION_DANCE_2 : {"name": localeInfo.EMOTION_DANCE_2, "command":"/dance2"},
EMOTION_DANCE_3 : {"name": localeInfo.EMOTION_DANCE_3, "command":"/dance3"},
EMOTION_DANCE_4 : {"name": localeInfo.EMOTION_DANCE_4, "command":"/dance4"},
EMOTION_DANCE_5 : {"name": localeInfo.EMOTION_DANCE_5, "command":"/dance5"},
EMOTION_DANCE_6 : {"name": localeInfo.EMOTION_DANCE_6, "command":"/dance6"},
EMOTION_CONGRATULATION : {"name": localeInfo.EMOTION_CONGRATULATION, "command":"/congratulation"},
EMOTION_FORGIVE : {"name": localeInfo.EMOTION_FORGIVE, "command":"/forgive"},
EMOTION_ANGRY : {"name": localeInfo.EMOTION_ANGRY, "command":"/angry"},
EMOTION_ATTRACTIVE : {"name": localeInfo.EMOTION_ATTRACTIVE, "command":"/attractive"},
EMOTION_SAD : {"name": localeInfo.EMOTION_SAD, "command":"/sad"},
EMOTION_SHY : {"name": localeInfo.EMOTION_SHY, "command":"/shy"},
EMOTION_CHEERUP : {"name": localeInfo.EMOTION_CHEERUP, "command":"/cheerup"},
EMOTION_BANTER : {"name": localeInfo.EMOTION_BANTER, "command":"/banter"},
EMOTION_JOY : {"name": localeInfo.EMOTION_JOY, "command":"/joy"},
EMOTION_CHEERS_1 : {"name": localeInfo.EMOTION_CHEERS_1, "command":"/cheer1"},
EMOTION_CHEERS_2 : {"name": localeInfo.EMOTION_CHEERS_2, "command":"/cheer2"},
EMOTION_KISS : {"name": localeInfo.EMOTION_CLAP_KISS, "command":"/kiss"},
EMOTION_FRENCH_KISS : {"name": localeInfo.EMOTION_FRENCH_KISS, "command":"/french_kiss"},
EMOTION_SLAP : {"name": localeInfo.EMOTION_SLAP, "command":"/slap"},
}

View File

@ -842,11 +842,18 @@ class GameWindow(ui.ScriptWindow):
self.interface.BINARY_OpenAtlasWindow()
## Chat
def OnRecvWhisper(self, mode, name, line):
if mode == chat.WHISPER_TYPE_GM:
self.interface.RegisterGameMasterName(name)
chat.AppendWhisper(mode, name, line)
self.interface.RecvWhisper(name)
if app.__BL_MULTI_LANGUAGE_PREMIUM__:
def OnRecvWhisper(self, mode, name, line, empire, country):
if mode == chat.WHISPER_TYPE_GM:
self.interface.RegisterGameMasterName(name)
chat.AppendWhisper(mode, name, line, empire, country)
self.interface.RecvWhisper(name)
else:
def OnRecvWhisper(self, mode, name, line):
if mode == chat.WHISPER_TYPE_GM:
self.interface.RegisterGameMasterName(name)
chat.AppendWhisper(mode, name, line)
self.interface.RecvWhisper(name)
def OnRecvWhisperSystemMessage(self, mode, name, line):
chat.AppendWhisper(chat.WHISPER_TYPE_SYSTEM, name, line)
@ -1213,11 +1220,20 @@ class GameWindow(ui.ScriptWindow):
self.CheckFocus()
else:
hyperlink = ui.GetHyperlink()
if hyperlink:
return
if app.__BL_MULTI_LANGUAGE_PREMIUM__:
country = chat.GetCountry()
empire = chat.GetEmpire()
if hyperlink or country or empire:
return
else:
self.CheckFocus()
player.SetMouseState(player.MBT_LEFT, player.MBS_PRESS);
else:
self.CheckFocus()
player.SetMouseState(player.MBT_LEFT, player.MBS_PRESS);
if hyperlink:
return
else:
self.CheckFocus()
player.SetMouseState(player.MBT_LEFT, player.MBS_PRESS);
return True
@ -1252,15 +1268,32 @@ class GameWindow(ui.ScriptWindow):
else:
hyperlink = ui.GetHyperlink()
if hyperlink:
if app.IsPressed(app.DIK_LALT):
link = chat.GetLinkFromHyperlink(hyperlink)
ime.PasteString(link)
if app.__BL_MULTI_LANGUAGE_PREMIUM__:
country = chat.GetCountry()
empire = chat.GetEmpire()
if hyperlink:
if app.IsPressed(app.DIK_LALT):
link = chat.GetLinkFromHyperlink(hyperlink)
ime.PasteString(link)
else:
self.interface.MakeHyperlinkTooltip(hyperlink)
return
elif country:
self.interface.MakeCountryTooltip(country)
elif empire:
self.interface.MakeEmpireTooltip(empire)
else:
self.interface.MakeHyperlinkTooltip(hyperlink)
return
player.SetMouseState(player.MBT_LEFT, player.MBS_CLICK)
else:
player.SetMouseState(player.MBT_LEFT, player.MBS_CLICK)
if hyperlink:
if app.IsPressed(app.DIK_LALT):
link = chat.GetLinkFromHyperlink(hyperlink)
ime.PasteString(link)
else:
self.interface.MakeHyperlinkTooltip(hyperlink)
return
else:
player.SetMouseState(player.MBT_LEFT, player.MBS_CLICK)
#player.EndMouseWalking()
return True
@ -2204,3 +2237,13 @@ class GameWindow(ui.ScriptWindow):
self.PopupMessage(localeInfo.ACCE_DEL_SERVEITEM)
else:
self.PopupMessage(localeInfo.ACCE_DEL_ABSORDITEM)
if app.__BL_MULTI_LANGUAGE__:
def LanguageChange(self):
if self.interface:
self.interface.LanguageChange()
if app.__BL_MULTI_LANGUAGE_ULTIMATE__:
def LanguageChangeAnonymous(self):
if self.interface:
self.interface.LanguageChangeAnonymous()

View File

@ -57,6 +57,9 @@ if app.ENABLE_MOVE_CHANNEL:
if app.ENABLE_WON_EXCHANGE_WINDOW:
import uiWonExchange
if app.__BL_MULTI_LANGUAGE_PREMIUM__:
import net
IsQBHide = 0
class Interface(object):
CHARACTER_STATUS_TAB = 1
@ -98,6 +101,12 @@ class Interface(object):
if app.ENABLE_WON_EXCHANGE_WINDOW:
self.wndWonExchange = None
event.SetInterfaceWindow(self)
if app.__BL_MULTI_LANGUAGE_PREMIUM__:
self.EMPIRE_NAME = {
net.EMPIRE_A : localeInfo.EMPIRE_A,
net.EMPIRE_B : localeInfo.EMPIRE_B,
net.EMPIRE_C : localeInfo.EMPIRE_C
}
def __del__(self):
systemSetting.DestroyInterfaceHandler()
@ -252,6 +261,9 @@ class Interface(object):
self.hyperlinkItemTooltip = uiToolTip.HyperlinkItemToolTip()
self.hyperlinkItemTooltip.Hide()
if app.__BL_MULTI_LANGUAGE_PREMIUM__:
self.countryTooltip = uiToolTip.CountryToolTip()
self.countryTooltip.Hide()
self.tooltipItem = uiToolTip.ItemToolTip()
self.tooltipItem.Hide()
@ -569,6 +581,9 @@ class Interface(object):
del self.wndAcceCombine
del self.wndAcceAbsorption
if app.__BL_MULTI_LANGUAGE_PREMIUM__:
del self.countryTooltip
self.questButtonList = []
self.whisperButtonList = []
self.whisperDialogDict = {}
@ -1770,3 +1785,31 @@ class Interface(object):
def EmptyFunction(self):
pass
if app.__BL_MULTI_LANGUAGE__:
def LanguageChange(self):
if self.dlgSystem:
self.dlgSystem.LanguageChange()
if app.__BL_MULTI_LANGUAGE_PREMIUM__:
def __MakeFlagTooltip(self, arg):
if not arg:
return
pos_x, pos_y = wndMgr.GetMousePosition()
self.countryTooltip.ClearToolTip()
self.countryTooltip.SetThinBoardSize(11 * len(arg))
self.countryTooltip.SetToolTipPosition(pos_x, pos_y)
self.countryTooltip.AppendTextLine(arg, 0xffffff00)
self.countryTooltip.ShowToolTip()
def MakeCountryTooltip(self, arg):
self.__MakeFlagTooltip(uiScriptLocale.LOCALE_NAME_DICT.get(arg, ""))
def MakeEmpireTooltip(self, arg):
self.__MakeFlagTooltip(self.EMPIRE_NAME.get(arg, ""))
if app.__BL_MULTI_LANGUAGE_ULTIMATE__:
def LanguageChangeAnonymous(self):
if self.dlgSystem:
self.dlgSystem.LanguageChangeAnonymous()

View File

@ -98,6 +98,28 @@ class CreateCharacterWindow(ui.Window):
if USE_WOLFMAN_CHARACTER:
DESCRIPTION_FILE_NAME += (uiScriptLocale.JOBDESC_WOLFMAN_PATH,)
if app.__BL_MULTI_LANGUAGE__:
@staticmethod
def ReloadVariables():
global LOCALE_PATH
LOCALE_PATH = "uiscript/"+uiScriptLocale.CODEPAGE+"_"
CreateCharacterWindow.STAT_DESCRIPTION = {
CreateCharacterWindow.STAT_CON : localeInfo.STAT_TOOLTIP_CON,
CreateCharacterWindow.STAT_INT : localeInfo.STAT_TOOLTIP_INT,
CreateCharacterWindow.STAT_STR : localeInfo.STAT_TOOLTIP_STR,
CreateCharacterWindow.STAT_DEX : localeInfo.STAT_TOOLTIP_DEX,
}
CreateCharacterWindow.DESCRIPTION_FILE_NAME = (
uiScriptLocale.JOBDESC_WARRIOR_PATH,
uiScriptLocale.JOBDESC_ASSASSIN_PATH,
uiScriptLocale.JOBDESC_SURA_PATH,
uiScriptLocale.JOBDESC_SHAMAN_PATH,
)
if USE_WOLFMAN_CHARACTER:
CreateCharacterWindow.DESCRIPTION_FILE_NAME += (uiScriptLocale.JOBDESC_WOLFMAN_PATH,)
class DescriptionBox(ui.Window):
def __init__(self):

View File

@ -17,6 +17,17 @@ class SelectEmpireWindow(ui.ScriptWindow):
net.EMPIRE_B : uiScriptLocale.EMPIREDESC_B,
net.EMPIRE_C : uiScriptLocale.EMPIREDESC_C, }
if app.__BL_MULTI_LANGUAGE__:
@staticmethod
def ReloadVariables():
global LOCALE_PATH
LOCALE_PATH = "uiscript/"+uiScriptLocale.CODEPAGE+"_"
SelectEmpireWindow.EMPIRE_DESCRIPTION_TEXT_FILE_NAME = {
net.EMPIRE_A : uiScriptLocale.EMPIREDESC_A,
net.EMPIRE_B : uiScriptLocale.EMPIREDESC_B,
net.EMPIRE_C : uiScriptLocale.EMPIREDESC_C, }
class EmpireButton(ui.Window):
def __init__(self, owner, arg):
ui.Window.__init__(self)

View File

@ -152,6 +152,18 @@ class LoginWindow(ui.ScriptWindow):
self.timeOutOk = False
# @fixme001 END
if app.__BL_MULTI_LANGUAGE_PREMIUM__:
self.language_list = []
self.flag_button_list = []
self.language_board = None
self.language_popup = None
self.__LoadLocaleListFile()
if app.__BL_MULTI_LANGUAGE_ULTIMATE__:
self.anon_mode_board = None
self.anon_mode_text = None
self.anon_mode_checkbox_bg = None
self.anon_mode_checkbox = None
def __del__(self):
net.ClearPhaseWindow(net.PHASE_WINDOW_LOGIN, self)
net.SetAccountConnectorHandler(0)
@ -280,6 +292,17 @@ class LoginWindow(ui.ScriptWindow):
self.connectingDialog = None
self.loadingImage = None
if app.__BL_MULTI_LANGUAGE_PREMIUM__:
self.language_list = []
self.flag_button_list = []
self.language_board = None
self.language_popup = None
if app.__BL_MULTI_LANGUAGE_ULTIMATE__:
self.anon_mode_board = None
self.anon_mode_text = None
self.anon_mode_checkbox_bg = None
self.anon_mode_checkbox = None
self.serverBoard = None
self.serverList = None
self.channelList = None
@ -727,6 +750,64 @@ class LoginWindow(ui.ScriptWindow):
self.virtualKeyboard = self.GetChild2("VirtualKeyboard")
if app.__BL_MULTI_LANGUAGE_PREMIUM__:
self.language_board = ui.ThinBoard()
self.language_board.SetParent(self)
self.language_board.SetSize(wndMgr.GetScreenWidth(), 35)
self.language_board.SetPosition(0, 20)
self.language_board.Show()
step = wndMgr.GetScreenWidth() / len(self.language_list)
x = 0
for i, lang in enumerate(self.language_list):
img_path = "D:/ymir work/ui/intro/login/server_flag_{}.sub".format(lang["locale"])
btn = ui.Button()
btn.SetParent(self.language_board)
btn.SetPosition(x + 15, 10)
btn.SetUpVisual(img_path)
btn.SetOverVisual(img_path)
btn.SetDownVisual(img_path)
btn.SetToolTipText(lang["name"])
btn.SetEvent(ui.__mem_func__(self.__ClickLanguage), i)
btn.Show()
self.flag_button_list.append(btn)
x += step
if app.__BL_MULTI_LANGUAGE_ULTIMATE__:
self.anon_mode_board = ui.ThinBoard()
self.anon_mode_board.SetParent(self)
self.anon_mode_board.SetSize(160, 35)
self.anon_mode_board.SetPosition(0, 20 + self.language_board.GetHeight())
self.anon_mode_board.Show()
self.anon_mode_text = ui.TextLine()
self.anon_mode_text.SetParent(self.anon_mode_board)
if localeInfo.IsARABIC():
self.anon_mode_text.SetPosition(123, 7)
else:
self.anon_mode_text.SetPosition(15, 10)
self.anon_mode_text.SetFontName(localeInfo.UI_DEF_FONT_LARGE)
self.anon_mode_text.SetText(uiScriptLocale.LANGUAGE_ANONYMOUS_MODE)
self.anon_mode_text.Show()
self.anon_mode_checkbox_bg = ui.ImageBox()
self.anon_mode_checkbox_bg.SetParent(self.anon_mode_board)
if localeInfo.IsARABIC():
self.anon_mode_checkbox_bg.SetPosition(15, 9)
else:
self.anon_mode_checkbox_bg.SetPosition(123, 9)
self.anon_mode_checkbox_bg.LoadImage("d:/ymir work/ui/public/popup_notice_checkbox_bg.sub")
self.anon_mode_checkbox_bg.SetEvent(ui.__mem_func__(self.__EventAnonymous), "mouse_click", "")
self.anon_mode_checkbox_bg.Show()
self.anon_mode_checkbox = ui.ImageBox()
self.anon_mode_checkbox.SetParent(self.anon_mode_checkbox_bg)
self.anon_mode_checkbox.AddFlag("not_pick")
self.anon_mode_checkbox.SetPosition(0, 0)
self.anon_mode_checkbox.LoadImage("d:/ymir work/ui/public/popup_notice_checkbox.sub")
self.RefreshAnonymousMode()
if self.virtualKeyboard:
self.VIRTUAL_KEY_ALPHABET_UPPERS = Suffle(localeInfo.VIRTUAL_KEY_ALPHABET_UPPERS)
self.VIRTUAL_KEY_ALPHABET_LOWERS = "".join([localeInfo.VIRTUAL_KEY_ALPHABET_LOWERS[localeInfo.VIRTUAL_KEY_ALPHABET_UPPERS.index(e)] for e in self.VIRTUAL_KEY_ALPHABET_UPPERS])
@ -876,6 +957,72 @@ class LoginWindow(ui.ScriptWindow):
def __OnClickExitButton(self):
self.stream.SetPhaseWindow(0)
if app.__BL_MULTI_LANGUAGE_PREMIUM__:
def __LoadLocaleListFile(self):
try:
with open("locale_list.txt", "rt") as file:
lines = file.readlines()
except:
import dbg
dbg.LogBox("__LoadLocaleListFile error locale_list.txt")
app.Abort()
lineIndex = 1
for line in lines:
try:
tokens = line[:-1].split(" ")
if len(tokens) == 3:
name = tokens[0]
code_page = tokens[1]
locale = tokens[2]
if locale in uiScriptLocale.LOCALE_NAME_DICT:
name = uiScriptLocale.LOCALE_NAME_DICT[locale]
self.language_list.append({"name" : name, "code_page" : code_page, "locale" : locale})
else:
raise RuntimeError, "Unknown TokenSize"
lineIndex += 1
except:
import dbg
dbg.LogBox("%s: line(%d): %s" % ("locale_list.txt", lineIndex, line), "Error")
raise
def __SaveLoca(self, code_page, locale):
try:
with open("loca.cfg", "wt") as file:
file.write("{} {}".format(code_page, locale))
except:
import dbg
dbg.LogBox("__SaveLoca error")
app.Abort()
def __ClickLanguage(self, index):
if index >= len(self.language_list):
return
lang = self.language_list[index]
self.__SaveLoca(lang["code_page"], lang["locale"])
app.SetReloadLocale(lang["locale"] != app.GetLocaleName())
if not self.language_popup:
self.language_popup = uiCommon.PopupDialog()
self.language_popup.SetText(uiScriptLocale.LANGUAGE_WILL_CHANGE)
self.language_popup.Open()
if app.__BL_MULTI_LANGUAGE_ULTIMATE__:
def __EventAnonymous(self, event_type, arg):
if "mouse_click" == event_type :
systemSetting.SetAnonymousCountryMode(not systemSetting.GetAnonymousCountryMode())
self.RefreshAnonymousMode()
def RefreshAnonymousMode(self):
if systemSetting.GetAnonymousCountryMode():
self.anon_mode_checkbox.Show()
else:
self.anon_mode_checkbox.Hide()
def __SetServerInfo(self, name):
net.SetServerInfo(name.strip())
self.serverInfo.SetText(name)
@ -962,7 +1109,10 @@ class LoginWindow(ui.ScriptWindow):
def PopupDisplayMessage(self, msg):
self.stream.popupWindow.Close()
self.stream.popupWindow.Open(msg)
if app.__BL_MULTI_LANGUAGE__:
self.stream.popupWindow.Open(msg, 0, localeInfo.UI_CANCEL)
else:
self.stream.popupWindow.Open(msg)
def PopupNotifyMessage(self, msg, func=0):
if not func:

View File

@ -63,6 +63,15 @@ class SelectCharacterWindow(ui.Window):
net.EMPIRE_C : localeInfo.EMPIRE_C
}
if app.__BL_MULTI_LANGUAGE__:
@staticmethod
def ReloadVariables():
SelectCharacterWindow.EMPIRE_NAME = {
net.EMPIRE_A : localeInfo.EMPIRE_A,
net.EMPIRE_B : localeInfo.EMPIRE_B,
net.EMPIRE_C : localeInfo.EMPIRE_C
}
class CharacterRenderer(ui.Window):
def OnRender(self):
grp.ClearDepthBuffer()

View File

@ -142,59 +142,290 @@ def SAAAA(text):
return f
## PET_SKILL_INFO FNCS END
def LoadLocaleFile(srcFileName, localeDict):
funcDict = {"SA":SA, "SNA":SNA, "SAA":SAA, "SAN":SAN, "SAAAA":SAAAA}
if app.__BL_MULTI_LANGUAGE__:
def LoadLocaleFile(srcFileName):
localeDict = {}
funcDict = {"SA":SA, "SNA":SNA, "SAA":SAA, "SAN":SAN, "SAAAA":SAAAA}
lineIndex = 1
lineIndex = 1
try:
lines = open(srcFileName, "r").readlines()
except IOError:
import dbg
dbg.LogBox("LoadLocaleError(%(srcFileName)s)" % locals())
app.Abort()
for line in lines:
try:
# @fixme010 BEGIN
if not line:
lineIndex += 1
continue
# @fixme010 END
tokens = line[:-1].split("\t")
if len(tokens) == 2:
localeDict[tokens[0]] = tokens[1]
elif len(tokens) >= 3:
type = tokens[2].strip()
if type:
localeDict[tokens[0]] = funcDict[type](tokens[1])
else:
localeDict[tokens[0]] = tokens[1]
# @fixme010 BEGIN
elif len(tokens) == 1:
localeDict[tokens[0]] = ""
elif len(tokens) == 0:
localeDict[tokens.rstrip()] = ""
# @fixme010 END
else:
raise RuntimeError, "Unknown TokenSize"
lineIndex += 1
except:
lines = open(srcFileName, "r").readlines()
except IOError:
import dbg
dbg.LogBox("%s: line(%d): %s" % (srcFileName, lineIndex, line), "Error")
raise
dbg.LogBox("LoadLocaleError(%s)" % srcFileName)
app.Abort()
for line in lines:
try:
# @fixme010 BEGIN
if not line:
lineIndex += 1
continue
# @fixme010 END
tokens = line[:-1].split("\t")
if len(tokens) == 2:
localeDict[tokens[0]] = tokens[1]
elif len(tokens) >= 3:
type = tokens[2].strip()
if type:
localeDict[tokens[0]] = funcDict[type](tokens[1])
else:
localeDict[tokens[0]] = tokens[1]
# @fixme010 BEGIN
elif len(tokens) == 1:
localeDict[tokens[0]] = ""
elif len(tokens) == 0:
localeDict[tokens.rstrip()] = ""
# @fixme010 END
else:
raise RuntimeError, "Unknown TokenSize"
lineIndex += 1
except:
import dbg
dbg.LogBox("%s: line(%d): %s" % (srcFileName, lineIndex, line), "Error")
raise
globals().update(localeDict)
def ReloadLocaleFile():
global FN_GM_MARK, LOCALE_FILE_NAME, GUILD_BUILDING_LIST_TXT
FN_GM_MARK = "%s/effect/gm.mse" % app.GetLocalePath()
LOCALE_FILE_NAME = "%s/locale_game.txt" % app.GetLocalePath()
GUILD_BUILDING_LIST_TXT = app.GetLocalePath() + "/GuildBuildingList.txt"
global __IS_ENGLISH, __IS_HONGKONG, __IS_NEWCIBN, __IS_EUROPE
global __IS_CANADA, __IS_BRAZIL, __IS_SINGAPORE, __IS_VIETNAM
global __IS_ARABIC, __IS_CIBN10, __IS_WE_KOREA, __IS_TAIWAN, __IS_JAPAN
__IS_ENGLISH = "ENGLISH" == app.GetLocaleServiceName()
__IS_HONGKONG = "HONGKONG" == app.GetLocaleServiceName()
__IS_NEWCIBN = "locale/newcibn" == app.GetLocalePath()
__IS_EUROPE = "EUROPE" == app.GetLocaleServiceName()
__IS_CANADA = "locale/ca" == app.GetLocalePath()
__IS_BRAZIL = "locale/br" == app.GetLocalePath()
__IS_SINGAPORE = "locale/sg" == app.GetLocalePath()
__IS_VIETNAM = "locale/vn" == app.GetLocalePath()
__IS_ARABIC = "locale/ae" == app.GetLocalePath()
__IS_CIBN10 = "locale/cibn10" == app.GetLocalePath()
__IS_WE_KOREA = "locale/we_korea" == app.GetLocalePath()
__IS_TAIWAN = "locale/taiwan" == app.GetLocalePath()
__IS_JAPAN = "locale/japan" == app.GetLocalePath()
LoadLocaleFile(LOCALE_FILE_NAME)
if app.ENABLE_LOCALE_COMMON:
def TryLoadLocaleFile(filename):
if pack.Exist(filename) or os.path.exists(filename):
LoadLocaleFile(filename)
TryLoadLocaleFile("locale/common/locale_game_ex.txt")
TryLoadLocaleFile("%s/locale_game_ex.txt" % app.GetLocalePath())
global OPTION_PVPMODE_MESSAGE_DICT
OPTION_PVPMODE_MESSAGE_DICT = {
0 : PVP_MODE_NORMAL,
1 : PVP_MODE_REVENGE,
2 : PVP_MODE_KILL,
3 : PVP_MODE_PROTECT,
4 : PVP_MODE_GUILD,
}
global GUILDWAR_NORMAL_DESCLIST, GUILDWAR_WARP_DESCLIST, GUILDWAR_CTF_DESCLIST
GUILDWAR_NORMAL_DESCLIST = [GUILD_WAR_USE_NORMAL_MAP, GUILD_WAR_LIMIT_30MIN, GUILD_WAR_WIN_CHECK_SCORE]
GUILDWAR_WARP_DESCLIST = [GUILD_WAR_USE_BATTLE_MAP, GUILD_WAR_WIN_WIPE_OUT_GUILD, GUILD_WAR_REWARD_POTION]
GUILDWAR_CTF_DESCLIST = [GUILD_WAR_USE_BATTLE_MAP, GUILD_WAR_WIN_TAKE_AWAY_FLAG1, GUILD_WAR_WIN_TAKE_AWAY_FLAG2, GUILD_WAR_REWARD_POTION]
global MINIMAP_ZONE_NAME_DICT
MINIMAP_ZONE_NAME_DICT = {
"metin2_map_a1" : MAP_A1,
"map_a2" : MAP_A2,
"metin2_map_a3" : MAP_A3,
"metin2_map_b1" : MAP_B1,
"map_b2" : MAP_B2,
"metin2_map_b3" : MAP_B3,
"metin2_map_c1" : MAP_C1,
"map_c2" : MAP_C2,
"metin2_map_c3" : MAP_C3,
"map_n_snowm_01" : MAP_SNOW,
"metin2_map_n_flame_01" : MAP_FLAME,
"metin2_map_n_desert_01" : MAP_DESERT,
"metin2_map_milgyo" : MAP_TEMPLE,
"metin2_map_spiderdungeon" : MAP_SPIDER,
"metin2_map_deviltower1" : MAP_SKELTOWER,
"metin2_map_guild_01" : MAP_AG,
"metin2_map_guild_02" : MAP_BG,
"metin2_map_guild_03" : MAP_CG,
"metin2_map_trent" : MAP_TREE,
"metin2_map_trent02" : MAP_TREE2,
"season1/metin2_map_WL_01" : MAP_WL,
"season1/metin2_map_nusluck01" : MAP_NUSLUCK,
"Metin2_map_CapeDragonHead" : MAP_CAPE,
"metin2_map_Mt_Thunder" : MAP_THUNDER,
"metin2_map_dawnmistwood" : MAP_DAWN,
"metin2_map_BayBlackSand" : MAP_BAY,
}
global JOBINFO_TITLE
JOBINFO_TITLE = [
[JOB_WARRIOR0, JOB_WARRIOR1, JOB_WARRIOR2,],
[JOB_ASSASSIN0, JOB_ASSASSIN1, JOB_ASSASSIN2,],
[JOB_SURA0, JOB_SURA1, JOB_SURA2,],
[JOB_SHAMAN0, JOB_SHAMAN1, JOB_SHAMAN2,],
]
if app.ENABLE_WOLFMAN_CHARACTER:
JOBINFO_TITLE += [[JOB_WOLFMAN0,JOB_WOLFMAN1,JOB_WOLFMAN2,],]
global WHISPER_ERROR
WHISPER_ERROR = {
1 : CANNOT_WHISPER_NOT_LOGON,
2 : CANNOT_WHISPER_DEST_REFUSE,
3 : CANNOT_WHISPER_SELF_REFUSE,
}
global NOTIFY_MESSAGE
NOTIFY_MESSAGE = {
"CANNOT_EQUIP_SHOP" : CANNOT_EQUIP_IN_SHOP,
"CANNOT_EQUIP_EXCHANGE" : CANNOT_EQUIP_IN_EXCHANGE,
}
global ATTACK_ERROR_TAIL_DICT
ATTACK_ERROR_TAIL_DICT = {
"IN_SAFE" : CANNOT_ATTACK_SELF_IN_SAFE,
"DEST_IN_SAFE" : CANNOT_ATTACK_DEST_IN_SAFE,
}
global SHOT_ERROR_TAIL_DICT
SHOT_ERROR_TAIL_DICT = {
"EMPTY_ARROW" : CANNOT_SHOOT_EMPTY_ARROW,
"IN_SAFE" : CANNOT_SHOOT_SELF_IN_SAFE,
"DEST_IN_SAFE" : CANNOT_SHOOT_DEST_IN_SAFE,
}
global USE_SKILL_ERROR_TAIL_DICT
USE_SKILL_ERROR_TAIL_DICT = {
"IN_SAFE" : CANNOT_SKILL_SELF_IN_SAFE,
"NEED_TARGET" : CANNOT_SKILL_NEED_TARGET,
"NEED_EMPTY_BOTTLE" : CANNOT_SKILL_NEED_EMPTY_BOTTLE,
"NEED_POISON_BOTTLE" : CANNOT_SKILL_NEED_POISON_BOTTLE,
"REMOVE_FISHING_ROD" : CANNOT_SKILL_REMOVE_FISHING_ROD,
"NOT_YET_LEARN" : CANNOT_SKILL_NOT_YET_LEARN,
"NOT_MATCHABLE_WEAPON" : CANNOT_SKILL_NOT_MATCHABLE_WEAPON,
"WAIT_COOLTIME" : CANNOT_SKILL_WAIT_COOLTIME,
"NOT_ENOUGH_HP" : CANNOT_SKILL_NOT_ENOUGH_HP,
"NOT_ENOUGH_SP" : CANNOT_SKILL_NOT_ENOUGH_SP,
"CANNOT_USE_SELF" : CANNOT_SKILL_USE_SELF,
"ONLY_FOR_ALLIANCE" : CANNOT_SKILL_ONLY_FOR_ALLIANCE,
"CANNOT_ATTACK_ENEMY_IN_SAFE_AREA" : CANNOT_SKILL_DEST_IN_SAFE,
"CANNOT_APPROACH" : CANNOT_SKILL_APPROACH,
"CANNOT_ATTACK" : CANNOT_SKILL_ATTACK,
"ONLY_FOR_CORPSE" : CANNOT_SKILL_ONLY_FOR_CORPSE,
"EQUIP_FISHING_ROD" : CANNOT_SKILL_EQUIP_FISHING_ROD,
"NOT_HORSE_SKILL" : CANNOT_SKILL_NOT_HORSE_SKILL,
"HAVE_TO_RIDE" : CANNOT_SKILL_HAVE_TO_RIDE,
}
global LEVEL_LIST
LEVEL_LIST=["", HORSE_LEVEL1, HORSE_LEVEL2, HORSE_LEVEL3]
global HEALTH_LIST
HEALTH_LIST=[
HORSE_HEALTH0,
HORSE_HEALTH1,
HORSE_HEALTH2,
HORSE_HEALTH3,
]
global USE_SKILL_ERROR_CHAT_DICT
USE_SKILL_ERROR_CHAT_DICT = {
"NEED_EMPTY_BOTTLE" : SKILL_NEED_EMPTY_BOTTLE,
"NEED_POISON_BOTTLE" : SKILL_NEED_POISON_BOTTLE,
"ONLY_FOR_GUILD_WAR" : SKILL_ONLY_FOR_GUILD_WAR,
}
global SHOP_ERROR_DICT
SHOP_ERROR_DICT = {
"NOT_ENOUGH_MONEY" : SHOP_NOT_ENOUGH_MONEY,
"SOLDOUT" : SHOP_SOLDOUT,
"INVENTORY_FULL" : SHOP_INVENTORY_FULL,
"INVALID_POS" : SHOP_INVALID_POS,
"NOT_ENOUGH_MONEY_EX" : SHOP_NOT_ENOUGH_MONEY_EX,
}
if app.ENABLE_CHEQUE_SYSTEM:
SHOP_ERROR_DICT["NOT_ENOUGH_CHEQUE"] = SHOP_NOT_ENOUGH_CHEQUE
SHOP_ERROR_DICT["NOT_ENOUGH_MONEY_CHEQUE"] = SHOP_NOT_ENOUGH_MONEY_CHEQUE
global STAT_MINUS_DESCRIPTION
STAT_MINUS_DESCRIPTION = {
"HTH-" : STAT_MINUS_CON,
"INT-" : STAT_MINUS_INT,
"STR-" : STAT_MINUS_STR,
"DEX-" : STAT_MINUS_DEX,
}
global MODE_NAME_LIST, TITLE_NAME_LIST
MODE_NAME_LIST = ( PVP_OPTION_NORMAL, PVP_OPTION_REVENGE, PVP_OPTION_KILL, PVP_OPTION_PROTECT, )
TITLE_NAME_LIST = ( PVP_LEVEL0, PVP_LEVEL1, PVP_LEVEL2, PVP_LEVEL3, PVP_LEVEL4, PVP_LEVEL5, PVP_LEVEL6, PVP_LEVEL7, PVP_LEVEL8, )
else:
def LoadLocaleFile(srcFileName, localeDict):
funcDict = {"SA":SA, "SNA":SNA, "SAA":SAA, "SAN":SAN, "SAAAA":SAAAA}
lineIndex = 1
try:
lines = open(srcFileName, "r").readlines()
except IOError:
import dbg
dbg.LogBox("LoadLocaleError(%(srcFileName)s)" % locals())
app.Abort()
for line in lines:
try:
# @fixme010 BEGIN
if not line:
lineIndex += 1
continue
# @fixme010 END
tokens = line[:-1].split("\t")
if len(tokens) == 2:
localeDict[tokens[0]] = tokens[1]
elif len(tokens) >= 3:
type = tokens[2].strip()
if type:
localeDict[tokens[0]] = funcDict[type](tokens[1])
else:
localeDict[tokens[0]] = tokens[1]
# @fixme010 BEGIN
elif len(tokens) == 1:
localeDict[tokens[0]] = ""
elif len(tokens) == 0:
localeDict[tokens.rstrip()] = ""
# @fixme010 END
else:
raise RuntimeError, "Unknown TokenSize"
lineIndex += 1
except:
import dbg
dbg.LogBox("%s: line(%d): %s" % (srcFileName, lineIndex, line), "Error")
raise
all = ["locale","error"]
FN_GM_MARK = "%s/effect/gm.mse" % app.GetLocalePath()
LOCALE_FILE_NAME = "%s/locale_game.txt" % app.GetLocalePath()
LoadLocaleFile(LOCALE_FILE_NAME, locals())
if app.__BL_MULTI_LANGUAGE__:
LoadLocaleFile(LOCALE_FILE_NAME)
else:
LoadLocaleFile(LOCALE_FILE_NAME, locals())
if app.ENABLE_LOCALE_COMMON:
def TryLoadLocaleFile(filename):
if pack.Exist(filename) or os.path.exists(filename):
LoadLocaleFile(filename, globals())
if app.__BL_MULTI_LANGUAGE__:
LoadLocaleFile(filename)
else:
LoadLocaleFile(filename, globals())
TryLoadLocaleFile("locale/common/locale_game_ex.txt")
TryLoadLocaleFile("%s/locale_game_ex.txt" % app.GetLocalePath())

View File

@ -18,6 +18,24 @@ import uiPhaseCurtain
import localeInfo
if app.__BL_MULTI_LANGUAGE__:
import emotion
import introCreate
import introEmpire
import serverInfo
import textTail
import uiAffectShower
import uiCharacter
import uiChat
import uiDragonSoul
import uiGuild
import uiMapNameShower
import uiParty
import uiSelectMusic
import uiScriptLocale
import uiTarget
import uiToolTip
class PopupDialog(ui.ScriptWindow):
def __init__(self):
@ -201,8 +219,43 @@ class MainStream(ui.NoWindow):
def SetSelectCharacterPhase(self):
try:
localeInfo.LoadLocaleData()
import introSelect
if app.__BL_MULTI_LANGUAGE__:
import introSelect
if app.GetReloadLocale():
app.ReloadLocaConfig()
localeInfo.ReloadLocaleFile()
uiScriptLocale.ReloadLocaleFile()
app.SetDefaultFontName(localeInfo.UI_DEF_FONT)
textTail.Initialize()
uiAffectShower.AffectShower.ReloadVariables()
emotion.ReloadEmotionDict()
introCreate.CreateCharacterWindow.ReloadVariables()
introEmpire.SelectEmpireWindow.ReloadVariables()
introSelect.SelectCharacterWindow.ReloadVariables()
serverInfo.ReloadVariables()
uiCharacter.CharacterWindow.ReloadVariables()
uiChat.ChatLine.ReloadVariables()
uiChat.ChatLogWindow.ReloadVariables()
uiDragonSoul.DragonSoulWindow.ReloadVariables()
uiGuild.GuildWindow.ReloadVariables()
uiGuild.BuildGuildBuildingWindow.ReloadVariables()
uiMapNameShower.MapNameShower.ReloadVariables()
uiParty.PartyMemberInfoBoard.ReloadVariables()
uiParty.PartyMenu.ReloadVariables()
uiSelectMusic.ReloadVariables()
uiTarget.TargetBoard.ReloadVariables()
uiToolTip.ItemToolTip.ReloadVariables()
uiToolTip.SkillToolTip.ReloadVariables()
localeInfo.LoadLocaleData()
app.SetReloadLocale(False)
else:
localeInfo.LoadLocaleData()
else:
localeInfo.LoadLocaleData()
import introSelect
self.popupWindow.Close()
self.SetPhaseWindow(introSelect.SelectCharacterWindow(self))
except:

View File

@ -53,3 +53,16 @@ MARKADDR_DICT = {
}
TESTADDR = {"ip": SRV1["host"], "tcp_port": SRV1["ch1"], "udp_port": SRV1["ch1"],}
if app.__BL_MULTI_LANGUAGE__:
def ReloadVariables():
global STATE_NONE
STATE_NONE = TextColor(localeInfo.CHANNEL_STATUS_OFFLINE, "FF0000") #RED
global STATE_DICT
STATE_DICT = {
0: TextColor(localeInfo.CHANNEL_STATUS_OFFLINE, "FF0000"), #RED
1: TextColor(localeInfo.CHANNEL_STATUS_RECOMMENDED, "00ff00"), #GREEN
2: TextColor(localeInfo.CHANNEL_STATUS_BUSY, "ffff00"), #YELLOW
3: TextColor(localeInfo.CHANNEL_STATUS_FULL, "ff8a08") #ORANGE
}

View File

@ -2278,6 +2278,109 @@ class ThinBoard(Window):
for wnd in self.Corners:
wnd.Hide()
class ThinBoardGold(Window):
CORNER_WIDTH = 16
CORNER_HEIGHT = 16
LINE_WIDTH = 16
LINE_HEIGHT = 16
LT = 0
LB = 1
RT = 2
RB = 3
L = 0
R = 1
T = 2
B = 3
def __init__(self, layer = "UI"):
Window.__init__(self, layer)
CornerFileNames = [ "d:/ymir work/ui/pattern/thinboardgold/ThinBoard_Corner_"+dir+"_Gold.tga" for dir in ["LeftTop","LeftBottom","RightTop","RightBottom"] ]
LineFileNames = [ "d:/ymir work/ui/pattern/thinboardgold/ThinBoard_Line_"+dir+"_Gold.tga" for dir in ["Left","Right","Top","Bottom"] ]
self.MakeBase()
self.Corners = []
for fileName in CornerFileNames:
Corner = ExpandedImageBox()
Corner.AddFlag("attach")
Corner.AddFlag("not_pick")
Corner.LoadImage(fileName)
Corner.SetParent(self)
Corner.SetPosition(0, 0)
Corner.Show()
self.Corners.append(Corner)
self.Lines = []
for fileName in LineFileNames:
Line = ExpandedImageBox()
Line.AddFlag("attach")
Line.AddFlag("not_pick")
Line.LoadImage(fileName)
Line.SetParent(self)
Line.SetPosition(0, 0)
Line.Show()
self.Lines.append(Line)
self.Lines[self.L].SetPosition(0, self.CORNER_HEIGHT)
self.Lines[self.T].SetPosition(self.CORNER_WIDTH, 0)
def __del__(self):
Window.__del__(self)
def SetSize(self, width, height):
width = max(self.CORNER_WIDTH*2, width)
height = max(self.CORNER_HEIGHT*2, height)
Window.SetSize(self, width, height)
self.Corners[self.LB].SetPosition(0, height - self.CORNER_HEIGHT)
self.Corners[self.RT].SetPosition(width - self.CORNER_WIDTH, 0)
self.Corners[self.RB].SetPosition(width - self.CORNER_WIDTH, height - self.CORNER_HEIGHT)
self.Lines[self.R].SetPosition(width - self.CORNER_WIDTH, self.CORNER_HEIGHT)
self.Lines[self.B].SetPosition(self.CORNER_HEIGHT, height - self.CORNER_HEIGHT)
verticalShowingPercentage = float((height - self.CORNER_HEIGHT*2) - self.LINE_HEIGHT) / self.LINE_HEIGHT
horizontalShowingPercentage = float((width - self.CORNER_WIDTH*2) - self.LINE_WIDTH) / self.LINE_WIDTH
self.Lines[self.L].SetRenderingRect(0, 0, 0, verticalShowingPercentage)
self.Lines[self.R].SetRenderingRect(0, 0, 0, verticalShowingPercentage)
self.Lines[self.T].SetRenderingRect(0, 0, horizontalShowingPercentage, 0)
self.Lines[self.B].SetRenderingRect(0, 0, horizontalShowingPercentage, 0)
#self.Base.GetWidth()
#self.Base.GetHeight()
"""
Defalt Width : 128, Height : 128
0.0 > 128, 1.0 > 256
"""
if self.Base:
self.Base.SetRenderingRect(0, 0, (float(width)-32)/float(self.Base.GetWidth()) - 1.0, (float(height)-32)/float(self.Base.GetHeight()) - 1.0)
def MakeBase(self):
self.Base = ExpandedImageBox()
self.Base.AddFlag("not_pick")
self.Base.LoadImage("d:/ymir work/ui/pattern/Board_Base.tga")
self.Base.SetParent(self)
self.Base.SetPosition(16, 16)
self.Base.SetAlpha(0.8)
self.Base.Show()
def ShowInternal(self):
self.Base.Show()
for wnd in self.Lines:
wnd.Show()
for wnd in self.Corners:
wnd.Show()
def HideInternal(self):
self.Base.Hide()
for wnd in self.Lines:
wnd.Hide()
for wnd in self.Corners:
wnd.Hide()
class ThinBoardCircle(Window):
CORNER_WIDTH = 4
CORNER_HEIGHT = 4
@ -3472,6 +3575,11 @@ class PythonScriptLoader(object):
parent.Children[Index].SetParent(parent)
self.LoadElementThinBoard(parent.Children[Index], ElementValue, parent)
elif Type == "thinboard_gold":
parent.Children[Index] = ThinBoardGold()
parent.Children[Index].SetParent(parent)
self.LoadElementThinBoard(parent.Children[Index], ElementValue, parent)
elif Type == "thinboard_circle":
parent.Children[Index] = ThinBoardCircle()
parent.Children[Index].SetParent(parent)

View File

@ -432,6 +432,76 @@ class AffectShower(ui.Window):
AFFECT_DATA_DICT[chr.AFFECT_RED_POSSESSION] = (localeInfo.SKILL_GWIGEOM, "d:/ymir work/ui/skill/wolfman/red_possession_03.sub")
AFFECT_DATA_DICT[chr.AFFECT_BLUE_POSSESSION] = (localeInfo.SKILL_CHEONGEUN, "d:/ymir work/ui/skill/wolfman/blue_possession_03.sub")
if app.__BL_MULTI_LANGUAGE__:
@staticmethod
def ReloadVariables():
AffectShower.AFFECT_DATA_DICT = {
chr.AFFECT_POISON : (localeInfo.SKILL_TOXICDIE, "d:/ymir work/ui/skill/common/affect/poison.sub"),
chr.AFFECT_SLOW : (localeInfo.SKILL_SLOW, "d:/ymir work/ui/skill/common/affect/slow.sub"),
chr.AFFECT_STUN : (localeInfo.SKILL_STUN, "d:/ymir work/ui/skill/common/affect/stun.sub"),
chr.AFFECT_ATT_SPEED_POTION : (localeInfo.SKILL_INC_ATKSPD, "d:/ymir work/ui/skill/common/affect/Increase_Attack_Speed.sub"),
chr.AFFECT_MOV_SPEED_POTION : (localeInfo.SKILL_INC_MOVSPD, "d:/ymir work/ui/skill/common/affect/Increase_Move_Speed.sub"),
chr.AFFECT_FISH_MIND : (localeInfo.SKILL_FISHMIND, "d:/ymir work/ui/skill/common/affect/fishmind.sub"),
chr.AFFECT_JEONGWI : (localeInfo.SKILL_JEONGWI, "d:/ymir work/ui/skill/warrior/jeongwi_03.sub",),
chr.AFFECT_GEOMGYEONG : (localeInfo.SKILL_GEOMGYEONG, "d:/ymir work/ui/skill/warrior/geomgyeong_03.sub",),
chr.AFFECT_CHEONGEUN : (localeInfo.SKILL_CHEONGEUN, "d:/ymir work/ui/skill/warrior/cheongeun_03.sub",),
chr.AFFECT_GYEONGGONG : (localeInfo.SKILL_GYEONGGONG, "d:/ymir work/ui/skill/assassin/gyeonggong_03.sub",),
chr.AFFECT_EUNHYEONG : (localeInfo.SKILL_EUNHYEONG, "d:/ymir work/ui/skill/assassin/eunhyeong_03.sub",),
chr.AFFECT_GWIGEOM : (localeInfo.SKILL_GWIGEOM, "d:/ymir work/ui/skill/sura/gwigeom_03.sub",),
chr.AFFECT_GONGPO : (localeInfo.SKILL_GONGPO, "d:/ymir work/ui/skill/sura/gongpo_03.sub",),
chr.AFFECT_JUMAGAP : (localeInfo.SKILL_JUMAGAP, "d:/ymir work/ui/skill/sura/jumagap_03.sub"),
chr.AFFECT_HOSIN : (localeInfo.SKILL_HOSIN, "d:/ymir work/ui/skill/shaman/hosin_03.sub",),
chr.AFFECT_BOHO : (localeInfo.SKILL_BOHO, "d:/ymir work/ui/skill/shaman/boho_03.sub",),
chr.AFFECT_KWAESOK : (localeInfo.SKILL_KWAESOK, "d:/ymir work/ui/skill/shaman/kwaesok_03.sub",),
chr.AFFECT_HEUKSIN : (localeInfo.SKILL_HEUKSIN, "d:/ymir work/ui/skill/sura/heuksin_03.sub",),
chr.AFFECT_MUYEONG : (localeInfo.SKILL_MUYEONG, "d:/ymir work/ui/skill/sura/muyeong_03.sub",),
chr.AFFECT_GICHEON : (localeInfo.SKILL_GICHEON, "d:/ymir work/ui/skill/shaman/gicheon_03.sub",),
chr.AFFECT_JEUNGRYEOK : (localeInfo.SKILL_JEUNGRYEOK, "d:/ymir work/ui/skill/shaman/jeungryeok_03.sub",),
chr.AFFECT_PABEOP : (localeInfo.SKILL_PABEOP, "d:/ymir work/ui/skill/sura/pabeop_03.sub",),
chr.AFFECT_FALLEN_CHEONGEUN : (localeInfo.SKILL_CHEONGEUN, "d:/ymir work/ui/skill/warrior/cheongeun_03.sub",),
28 : (localeInfo.SKILL_FIRE, "d:/ymir work/ui/skill/sura/hwayeom_03.sub",),
chr.AFFECT_CHINA_FIREWORK : (localeInfo.SKILL_POWERFUL_STRIKE, "d:/ymir work/ui/skill/common/affect/powerfulstrike.sub",),
#64 - END
chr.NEW_AFFECT_EXP_BONUS : (localeInfo.TOOLTIP_MALL_EXPBONUS_STATIC, "d:/ymir work/ui/skill/common/affect/exp_bonus.sub",),
chr.NEW_AFFECT_ITEM_BONUS : (localeInfo.TOOLTIP_MALL_ITEMBONUS_STATIC, "d:/ymir work/ui/skill/common/affect/item_bonus.sub",),
chr.NEW_AFFECT_SAFEBOX : (localeInfo.TOOLTIP_MALL_SAFEBOX, "d:/ymir work/ui/skill/common/affect/safebox.sub",),
chr.NEW_AFFECT_AUTOLOOT : (localeInfo.TOOLTIP_MALL_AUTOLOOT, "d:/ymir work/ui/skill/common/affect/autoloot.sub",),
chr.NEW_AFFECT_FISH_MIND : (localeInfo.TOOLTIP_MALL_FISH_MIND, "d:/ymir work/ui/skill/common/affect/fishmind.sub",),
chr.NEW_AFFECT_MARRIAGE_FAST : (localeInfo.TOOLTIP_MALL_MARRIAGE_FAST, "d:/ymir work/ui/skill/common/affect/marriage_fast.sub",),
chr.NEW_AFFECT_GOLD_BONUS : (localeInfo.TOOLTIP_MALL_GOLDBONUS_STATIC, "d:/ymir work/ui/skill/common/affect/gold_bonus.sub",),
chr.NEW_AFFECT_NO_DEATH_PENALTY : (localeInfo.TOOLTIP_APPLY_NO_DEATH_PENALTY, "d:/ymir work/ui/skill/common/affect/gold_premium.sub"),
chr.NEW_AFFECT_SKILL_BOOK_BONUS : (localeInfo.TOOLTIP_APPLY_SKILL_BOOK_BONUS, "d:/ymir work/ui/skill/common/affect/gold_premium.sub"),
chr.NEW_AFFECT_SKILL_BOOK_NO_DELAY : (localeInfo.TOOLTIP_APPLY_SKILL_BOOK_NO_DELAY, "d:/ymir work/ui/skill/common/affect/gold_premium.sub"),
chr.NEW_AFFECT_AUTO_HP_RECOVERY : (localeInfo.TOOLTIP_AUTO_POTION_REST, "d:/ymir work/ui/pattern/auto_hpgauge/05.dds"),
chr.NEW_AFFECT_AUTO_SP_RECOVERY : (localeInfo.TOOLTIP_AUTO_POTION_REST, "d:/ymir work/ui/pattern/auto_spgauge/05.dds"),
AffectShower.MALL_DESC_IDX_START+player.POINT_MALL_ATTBONUS : (localeInfo.TOOLTIP_MALL_ATTBONUS_STATIC, "d:/ymir work/ui/skill/common/affect/att_bonus.sub",),
AffectShower.MALL_DESC_IDX_START+player.POINT_MALL_DEFBONUS : (localeInfo.TOOLTIP_MALL_DEFBONUS_STATIC, "d:/ymir work/ui/skill/common/affect/def_bonus.sub",),
AffectShower.MALL_DESC_IDX_START+player.POINT_MALL_EXPBONUS : (localeInfo.TOOLTIP_MALL_EXPBONUS, "d:/ymir work/ui/skill/common/affect/exp_bonus.sub",),
AffectShower.MALL_DESC_IDX_START+player.POINT_MALL_ITEMBONUS : (localeInfo.TOOLTIP_MALL_ITEMBONUS, "d:/ymir work/ui/skill/common/affect/item_bonus.sub",),
AffectShower.MALL_DESC_IDX_START+player.POINT_MALL_GOLDBONUS : (localeInfo.TOOLTIP_MALL_GOLDBONUS, "d:/ymir work/ui/skill/common/affect/gold_bonus.sub",),
AffectShower.MALL_DESC_IDX_START+player.POINT_CRITICAL_PCT : (localeInfo.TOOLTIP_APPLY_CRITICAL_PCT,"d:/ymir work/ui/skill/common/affect/critical.sub"),
AffectShower.MALL_DESC_IDX_START+player.POINT_PENETRATE_PCT : (localeInfo.TOOLTIP_APPLY_PENETRATE_PCT, "d:/ymir work/ui/skill/common/affect/gold_premium.sub"),
AffectShower.MALL_DESC_IDX_START+player.POINT_MAX_HP_PCT : (localeInfo.TOOLTIP_MAX_HP_PCT, "d:/ymir work/ui/skill/common/affect/gold_premium.sub"),
AffectShower.MALL_DESC_IDX_START+player.POINT_MAX_SP_PCT : (localeInfo.TOOLTIP_MAX_SP_PCT, "d:/ymir work/ui/skill/common/affect/gold_premium.sub"),
AffectShower.MALL_DESC_IDX_START+player.POINT_PC_BANG_EXP_BONUS : (localeInfo.TOOLTIP_MALL_EXPBONUS_P_STATIC, "d:/ymir work/ui/skill/common/affect/EXP_Bonus_p_on.sub",),
AffectShower.MALL_DESC_IDX_START+player.POINT_PC_BANG_DROP_BONUS: (localeInfo.TOOLTIP_MALL_ITEMBONUS_P_STATIC, "d:/ymir work/ui/skill/common/affect/Item_Bonus_p_on.sub",),
}
if app.ENABLE_DRAGON_SOUL_SYSTEM:
AffectShower.AFFECT_DATA_DICT[chr.NEW_AFFECT_DRAGON_SOUL_DECK1] = (localeInfo.TOOLTIP_DRAGON_SOUL_DECK1, "d:/ymir work/ui/dragonsoul/buff_ds_sky1.tga")
AffectShower.AFFECT_DATA_DICT[chr.NEW_AFFECT_DRAGON_SOUL_DECK2] = (localeInfo.TOOLTIP_DRAGON_SOUL_DECK2, "d:/ymir work/ui/dragonsoul/buff_ds_land1.tga")
if app.ENABLE_WOLFMAN_CHARACTER:
AffectShower.AFFECT_DATA_DICT[chr.AFFECT_BLEEDING] = (localeInfo.SKILL_BLEEDING, "d:/ymir work/ui/skill/common/affect/poison.sub")
AffectShower.AFFECT_DATA_DICT[chr.AFFECT_RED_POSSESSION] = (localeInfo.SKILL_GWIGEOM, "d:/ymir work/ui/skill/wolfman/red_possession_03.sub")
AffectShower.AFFECT_DATA_DICT[chr.AFFECT_BLUE_POSSESSION] = (localeInfo.SKILL_CHEONGEUN, "d:/ymir work/ui/skill/wolfman/blue_possession_03.sub")
def __init__(self):
ui.Window.__init__(self)

View File

@ -75,6 +75,25 @@ class CharacterWindow(ui.ScriptWindow):
STAT_MINUS_DESCRIPTION = localeInfo.STAT_MINUS_DESCRIPTION
if app.__BL_MULTI_LANGUAGE__:
@staticmethod
def ReloadVariables():
CharacterWindow.SKILL_GROUP_NAME_DICT = {
playerSettingModule.JOB_WARRIOR : { 1 : localeInfo.SKILL_GROUP_WARRIOR_1, 2 : localeInfo.SKILL_GROUP_WARRIOR_2, },
playerSettingModule.JOB_ASSASSIN : { 1 : localeInfo.SKILL_GROUP_ASSASSIN_1, 2 : localeInfo.SKILL_GROUP_ASSASSIN_2, },
playerSettingModule.JOB_SURA : { 1 : localeInfo.SKILL_GROUP_SURA_1, 2 : localeInfo.SKILL_GROUP_SURA_2, },
playerSettingModule.JOB_SHAMAN : { 1 : localeInfo.SKILL_GROUP_SHAMAN_1, 2 : localeInfo.SKILL_GROUP_SHAMAN_2, },
}
if app.ENABLE_WOLFMAN_CHARACTER:
CharacterWindow.SKILL_GROUP_NAME_DICT.update({playerSettingModule.JOB_WOLFMAN : { 1 : localeInfo.JOB_WOLFMAN1, 2 : localeInfo.JOB_WOLFMAN2, },})
CharacterWindow.STAT_DESCRIPTION = {
"HTH" : localeInfo.STAT_TOOLTIP_CON,
"INT" : localeInfo.STAT_TOOLTIP_INT,
"STR" : localeInfo.STAT_TOOLTIP_STR,
"DEX" : localeInfo.STAT_TOOLTIP_DEX,
}
def __init__(self):
ui.ScriptWindow.__init__(self)
self.state = "STATUS"

View File

@ -68,7 +68,7 @@ class CharacterDetailsUI(ui.ScriptWindow):
self.labelTextList[i].SetOverOutEvent( ui.__mem_func__(self.__ButtonOverOut), i )
if localeInfo.IsARABIC():
(x,y) = self.labelTextList[i].GetLocalPosition()
self.labelTextList[i].SetPosition(65, y+7)
self.labelTextList[i].SetPosition(30, y)
self.labelTextList[i].SetWindowHorizontalAlignLeft()
self.labelTextList[i].ButtonText.SetHorizontalAlignRight()
(x,y) = self.labelList[i].GetLocalPosition()

View File

@ -10,6 +10,10 @@ import colorInfo
import constInfo
import systemSetting
if app.__BL_MULTI_LANGUAGE_ULTIMATE__:
import uiScriptLocale
import uiToolTip
ENABLE_CHAT_COMMAND = True
ENABLE_LAST_SENTENCE_STACK = True
ENABLE_INSULT_CHECK = True
@ -117,6 +121,16 @@ class ChatLine(ui.EditLine):
chat.CHAT_TYPE_GUILD : localeInfo.CHAT_GUILD,
chat.CHAT_TYPE_SHOUT : localeInfo.CHAT_SHOUT, }
if app.__BL_MULTI_LANGUAGE__:
@staticmethod
def ReloadVariables():
ChatLine.CHAT_MODE_NAME = {
chat.CHAT_TYPE_TALKING : localeInfo.CHAT_NORMAL,
chat.CHAT_TYPE_PARTY : localeInfo.CHAT_PARTY,
chat.CHAT_TYPE_GUILD : localeInfo.CHAT_GUILD,
chat.CHAT_TYPE_SHOUT : localeInfo.CHAT_SHOUT,
}
def __init__(self):
ui.EditLine.__init__(self)
self.SetWindowName("Chat Line")
@ -367,14 +381,30 @@ class ChatLine(ui.EditLine):
def OnMouseLeftButtonDown(self):
hyperlink = ui.GetHyperlink()
if hyperlink:
if app.IsPressed(app.DIK_LALT):
link = chat.GetLinkFromHyperlink(hyperlink)
ime.PasteString(link)
if app.__BL_MULTI_LANGUAGE_PREMIUM__:
country = chat.GetCountry()
empire = chat.GetEmpire()
if hyperlink:
if app.IsPressed(app.DIK_LALT):
link = chat.GetLinkFromHyperlink(hyperlink)
ime.PasteString(link)
else:
self.interface.MakeHyperlinkTooltip(hyperlink)
elif country:
self.interface.MakeCountryTooltip(country)
elif empire:
self.interface.MakeEmpireTooltip(empire)
else:
self.interface.MakeHyperlinkTooltip(hyperlink)
ui.EditLine.OnMouseLeftButtonDown(self)
else:
ui.EditLine.OnMouseLeftButtonDown(self)
if hyperlink:
if app.IsPressed(app.DIK_LALT):
link = chat.GetLinkFromHyperlink(hyperlink)
ime.PasteString(link)
else:
self.interface.MakeHyperlinkTooltip(hyperlink)
else:
ui.EditLine.OnMouseLeftButtonDown(self)
class ChatInputSet(ui.Window):
@ -499,6 +529,8 @@ class ChatWindow(ui.Window):
EDIT_LINE_HEIGHT = 25
CHAT_WINDOW_WIDTH = 600
if app.__BL_MULTI_LANGUAGE_ULTIMATE__:
IMAGE_DISABLE_ALPHA = 0.5
class ChatBackBoard(ui.Window):
def __init__(self):
@ -607,6 +639,47 @@ class ChatWindow(ui.Window):
imgChatBarMiddle.Show()
self.imgChatBarMiddle = imgChatBarMiddle
if app.__BL_MULTI_LANGUAGE_ULTIMATE__:
self.EMPIRE_NAME = {
net.EMPIRE_A : localeInfo.EMPIRE_A,
net.EMPIRE_B : localeInfo.EMPIRE_B,
net.EMPIRE_C : localeInfo.EMPIRE_C
}
self.flag_bar = ui.ThinBoardGold()
self.lang_image_dict = {}
self.empire_image_dict = {}
self.toolTip = uiToolTip.ToolTip()
x = 12 + 11
step = 28
for lang in sorted(uiScriptLocale.LOCALE_NAME_DICT.iterkeys()):
image = ui.ImageBox()
image.SetParent(self.flag_bar)
image.LoadImage("D:/ymir work/ui/intro/login/server_flag_{}.sub".format(lang))
image.SetPosition(x, 7)
image.SetEvent(ui.__mem_func__(self.__EventCountry), "mouse_click", lang)
image.SetEvent(ui.__mem_func__(self.__EventCountry), "mouse_over_in", lang)
image.SetEvent(ui.__mem_func__(self.__EventCountry), "mouse_over_out", 0)
image.Show()
self.lang_image_dict[lang] = image
x += step
for empire in self.EMPIRE_NAME.iterkeys():
image = ui.ExpandedImageBox()
image.SetParent(self.flag_bar)
image.LoadImage("D:/ymir work/ui/intro/empire_01/empireflag_{}.sub".format(chr(96 + empire)))
image.SetScale(22.0 / image.GetWidth(), 17.0 / image.GetHeight())
image.SetPosition(x, 7)
image.SetEvent(ui.__mem_func__(self.__EventEmpire), "mouse_click", empire)
image.SetEvent(ui.__mem_func__(self.__EventEmpire), "mouse_over_in", empire)
image.SetEvent(ui.__mem_func__(self.__EventEmpire), "mouse_over_out", 0)
image.Show()
self.empire_image_dict[empire] = image
x += step
self.RefreshChatFilterSettings()
scrollBar = ui.ScrollBar()
scrollBar.AddFlag("float")
scrollBar.SetScrollEvent(ui.__mem_func__(self.OnScroll))
@ -646,6 +719,11 @@ class ChatWindow(ui.Window):
self.btnSendWhisper = 0
self.btnChatLog = 0
self.btnChatSizing = 0
if app.__BL_MULTI_LANGUAGE_ULTIMATE__:
self.flag_bar = None
self.lang_image_dict = {}
self.empire_image_dict = {}
self.toolTip = None
################
## Open & Close
@ -666,6 +744,8 @@ class ChatWindow(ui.Window):
if self.IsShow():
self.btnChatSizing.Show()
if app.__BL_MULTI_LANGUAGE_ULTIMATE__:
self.flag_bar.Show()
self.Refresh()
@ -696,6 +776,8 @@ class ChatWindow(ui.Window):
self.btnSendWhisper.Hide()
self.btnChatLog.Hide()
self.btnChatSizing.Hide()
if app.__BL_MULTI_LANGUAGE_ULTIMATE__:
self.flag_bar.Hide()
self.Refresh()
@ -705,6 +787,64 @@ class ChatWindow(ui.Window):
def SetOpenChatLogEvent(self, event):
self.btnChatLog.SetEvent(event)
if app.__BL_MULTI_LANGUAGE_ULTIMATE__:
def __EventCountry(self, event_type, lang):
if "mouse_click" == event_type :
if systemSetting.IsChatFilterCountry(lang):
systemSetting.RemoveChatFilterCountry(lang)
else:
systemSetting.AddChatFilterCountry(lang)
self.RefreshChatFilterSettings()
elif "mouse_over_in" == event_type :
lang = uiScriptLocale.LOCALE_NAME_DICT.get(lang, "")
if lang:
arglen = len(lang)
pos_x, pos_y = wndMgr.GetMousePosition()
self.toolTip.ClearToolTip()
self.toolTip.SetThinBoardSize(11 * arglen)
self.toolTip.SetToolTipPosition(pos_x + 50, pos_y + 50)
self.toolTip.AppendTextLine(lang, 0xffffff00)
self.toolTip.Show()
elif "mouse_over_out" == event_type :
self.toolTip.Hide()
def __EventEmpire(self, event_type, empire):
if "mouse_click" == event_type :
if systemSetting.IsChatFilterEmpire(empire):
systemSetting.RemoveChatFilterEmpire(empire)
else:
systemSetting.AddChatFilterEmpire(empire)
self.RefreshChatFilterSettings()
elif "mouse_over_in" == event_type :
empire = self.EMPIRE_NAME.get(empire, "")
if empire:
arglen = len(empire)
pos_x, pos_y = wndMgr.GetMousePosition()
self.toolTip.ClearToolTip()
self.toolTip.SetThinBoardSize(11 * arglen)
self.toolTip.SetToolTipPosition(pos_x + 50, pos_y + 50)
self.toolTip.AppendTextLine(empire, 0xffffff00)
self.toolTip.Show()
elif "mouse_over_out" == event_type :
self.toolTip.Hide()
def RefreshChatFilterSettings(self):
for lang, btn in self.lang_image_dict.iteritems():
if systemSetting.IsChatFilterCountry(lang):
btn.SetAlpha(self.IMAGE_DISABLE_ALPHA)
else:
btn.SetAlpha(1.0)
for empire, btn in self.empire_image_dict.iteritems():
if systemSetting.IsChatFilterEmpire(empire):
btn.SetAlpha(self.IMAGE_DISABLE_ALPHA)
else:
btn.SetAlpha(1.0)
def IsEditMode(self):
if chat.BOARD_STATE_EDIT == self.boardState:
return True
@ -763,6 +903,9 @@ class ChatWindow(ui.Window):
if btnY > y:
self.btnChatSizing.SetPosition(btnX, y)
self.heightBar = self.EDIT_LINE_HEIGHT
if app.__BL_MULTI_LANGUAGE_ULTIMATE__:
self.flag_bar.SetSize(width, 30)
self.flag_bar.SetPosition(btnX, btnY - self.flag_bar.GetHeight())
def RefreshBoardViewState(self):
(x, y, width, height) = self.GetRect()
@ -858,6 +1001,13 @@ class ChatLogWindow(ui.Window):
CHAT_LOG_WINDOW_MINIMUM_WIDTH = 450
CHAT_LOG_WINDOW_MINIMUM_HEIGHT = 120
if app.__BL_MULTI_LANGUAGE__:
@staticmethod
def ReloadVariables():
ChatLogWindow.CHAT_MODE_NAME = [ localeInfo.CHAT_NORMAL, localeInfo.CHAT_PARTY, localeInfo.CHAT_GUILD, localeInfo.CHAT_SHOUT, localeInfo.CHAT_INFORMATION, localeInfo.CHAT_NOTICE, ]
if app.ENABLE_DICE_SYSTEM:
ChatLogWindow.CHAT_MODE_NAME.append(localeInfo.CHAT_DICE_INFO)
class ResizeButton(ui.DragButton):
def __init__(self):
@ -1165,9 +1315,23 @@ class ChatLogWindow(ui.Window):
def OnMouseLeftButtonDown(self):
hyperlink = ui.GetHyperlink()
if hyperlink:
if app.IsPressed(app.DIK_LALT):
link = chat.GetLinkFromHyperlink(hyperlink)
ime.PasteString(link)
else:
self.interface.MakeHyperlinkTooltip(hyperlink)
if app.__BL_MULTI_LANGUAGE_PREMIUM__:
country = chat.GetCountry()
empire = chat.GetEmpire()
if hyperlink:
if app.IsPressed(app.DIK_LALT):
link = chat.GetLinkFromHyperlink(hyperlink)
ime.PasteString(link)
else:
self.interface.MakeHyperlinkTooltip(hyperlink)
elif country:
self.interface.MakeCountryTooltip(country)
elif empire:
self.interface.MakeEmpireTooltip(empire)
else:
if hyperlink:
if app.IsPressed(app.DIK_LALT):
link = chat.GetLinkFromHyperlink(hyperlink)
ime.PasteString(link)
else:
self.interface.MakeHyperlinkTooltip(hyperlink)

View File

@ -24,6 +24,16 @@ ITEM_FLAG_APPLICABLE = 1 << 14
class DragonSoulWindow(ui.ScriptWindow):
KIND_TAP_TITLES = [uiScriptLocale.DRAGONSOUL_TAP_TITLE_1, uiScriptLocale.DRAGONSOUL_TAP_TITLE_2,
uiScriptLocale.DRAGONSOUL_TAP_TITLE_3, uiScriptLocale.DRAGONSOUL_TAP_TITLE_4, uiScriptLocale.DRAGONSOUL_TAP_TITLE_5, uiScriptLocale.DRAGONSOUL_TAP_TITLE_6]
if app.__BL_MULTI_LANGUAGE__:
@staticmethod
def ReloadVariables():
DragonSoulWindow.KIND_TAP_TITLES = [
uiScriptLocale.DRAGONSOUL_TAP_TITLE_1, uiScriptLocale.DRAGONSOUL_TAP_TITLE_2,
uiScriptLocale.DRAGONSOUL_TAP_TITLE_3, uiScriptLocale.DRAGONSOUL_TAP_TITLE_4,
uiScriptLocale.DRAGONSOUL_TAP_TITLE_5, uiScriptLocale.DRAGONSOUL_TAP_TITLE_6
]
def __init__(self):
ui.ScriptWindow.__init__(self)
self.questionDialog = None

View File

@ -716,6 +716,18 @@ class GuildWindow(ui.ScriptWindow):
MEMBER_LINE_COUNT = 13
if app.__BL_MULTI_LANGUAGE__:
@staticmethod
def ReloadVariables():
GuildWindow.JOB_NAME = {
0 : localeInfo.JOB_WARRIOR,
1 : localeInfo.JOB_ASSASSIN,
2 : localeInfo.JOB_SURA,
3 : localeInfo.JOB_SHAMAN,
}
if app.ENABLE_WOLFMAN_CHARACTER:
GuildWindow.JOB_NAME.update({4 : localeInfo.JOB_WOLFMAN,})
class PageWindow(ui.ScriptWindow):
def __init__(self, parent, filename):
ui.ScriptWindow.__init__(self)
@ -2035,6 +2047,15 @@ class BuildGuildBuildingWindow(ui.ScriptWindow):
START_INSTANCE_INDEX = 123450
#WALL_SET_INSTANCE = 14105
if app.__BL_MULTI_LANGUAGE__:
@staticmethod
def ReloadVariables():
BuildGuildBuildingWindow.GUILD_CATEGORY_LIST = (
("HEADQUARTER", localeInfo.GUILD_HEADQUARTER),
("FACILITY", localeInfo.GUILD_FACILITY),
("OBJECT", localeInfo.GUILD_OBJECT),
)
def __init__(self):
ui.ScriptWindow.__init__(self)
self.__LoadWindow()

View File

@ -14,6 +14,98 @@ class MapNameShower(ui.ExpandedImageBox):
STATE_SHOW = 2
STATE_FADE_OUT = 3
if app.__BL_MULTI_LANGUAGE__:
@staticmethod
def ReloadVariables():
global LOCALE_PATH
LOCALE_PATH = uiScriptLocale.MAPNAME_PATH
if localeInfo.IsARABIC():
MapNameShower.MAP_NAME_IMAGE = {
"metin2_map_a1" : LOCALE_PATH+"a1.tga",
"map_a2" : LOCALE_PATH+"a2.tga",
"season2/metin2_map_a2_1": LOCALE_PATH+"a2_2.tga",
"metin2_map_a3" : LOCALE_PATH+"a3.tga",
"metin2_map_b1" : LOCALE_PATH+"b1.tga",
"map_b2" : LOCALE_PATH+"b2.tga",
"metin2_map_b3" : LOCALE_PATH+"b3.tga",
"metin2_map_c1" : LOCALE_PATH+"c1.tga",
"map_c2" : LOCALE_PATH+"c2.tga",
"metin2_map_c3" : LOCALE_PATH+"c3.tga",
"metin2_map_deviltower1" : LOCALE_PATH+"devil1_title.tga",
"metin2_map_n_desert_01" : LOCALE_PATH+"desert1.tga",
"season2/metin2_map_n_desert_02": LOCALE_PATH+"desert2.tga",
"metin2_map_n_flame_01" : LOCALE_PATH+"frame1.tga",
"season2/metin2_map_n_flame_02": LOCALE_PATH+"frame2.tga",
"metin2_map_milgyo" : LOCALE_PATH+"milgyo.tga",
"season2/metin2_map_milgyo_a": LOCALE_PATH+"milgyo2.TGA",
"metin2_map_monkeydungeon" : LOCALE_PATH+"monkey1.tga",
"metin2_map_monkeydungeon_02" : LOCALE_PATH+"monkey2.tga",
"metin2_map_monkeydungeon_03" : LOCALE_PATH+"monkey3.tga",
"metin2_map_guild_01" : LOCALE_PATH+"guild1.tga",
"metin2_map_guild_02" : LOCALE_PATH+"guild2.tga",
"metin2_map_guild_03" : LOCALE_PATH+"guild3.tga",
"season2/metin2_map_skipia_dungeon_01": LOCALE_PATH+"skipia.tga",
"season2/metin2_map_skipia_dungeon_02": LOCALE_PATH+"skipia.tga",
"map_n_snowm_01" : LOCALE_PATH+"snow1.tga",
"season2/map_n_snowm_02": LOCALE_PATH+"snow2.tga",
"metin2_map_spiderdungeon" : LOCALE_PATH+"spider1.tga",
"metin2_map_trent" : LOCALE_PATH+"trent.tga",
"metin2_map_trent02" : LOCALE_PATH+"trent02.tga",
"season2/metin2_map_trent_a": LOCALE_PATH+"trent_a.tga",
"season2/metin2_map_trent02_a": LOCALE_PATH+"trent02_a.tga",
"metin2_map_dd" : LOCALE_PATH+"devil_basement.tga",
"metin2_map_devilsCatacomb" : LOCALE_PATH+"devil_basement.tga",
"metin2_map_dd" : LOCALE_PATH+"devil_basement.tga",
"season1/metin2_map_WL_01" : LOCALE_PATH+"wl.tga",
"season1/metin2_map_nusluck01": LOCALE_PATH+"nusluck.tga",
}
else:
MapNameShower.MAP_NAME_IMAGE = {
"metin2_map_a1" : LOCALE_PATH+"a1.tga",
"map_a2" : LOCALE_PATH+"a2.tga",
"metin2_map_a3" : LOCALE_PATH+"a3.tga",
"metin2_map_b1" : LOCALE_PATH+"b1.tga",
"map_b2" : LOCALE_PATH+"b2.tga",
"metin2_map_b3" : LOCALE_PATH+"b3.tga",
"metin2_map_c1" : LOCALE_PATH+"c1.tga",
"map_c2" : LOCALE_PATH+"c2.tga",
"metin2_map_c3" : LOCALE_PATH+"c3.tga",
"map_n_snowm_01" : LOCALE_PATH+"snow1.tga",
"metin2_map_deviltower1" : LOCALE_PATH+"devil1_title.tga",
"metin2_map_n_flame_01" : LOCALE_PATH+"frame1.tga",
"metin2_map_n_desert_01" : LOCALE_PATH+"desert1.tga",
"metin2_map_milgyo" : LOCALE_PATH+"milgyo.tga",
"metin2_map_monkeydungeon" : LOCALE_PATH+"monkey1.tga",
"metin2_map_monkeydungeon_02" : LOCALE_PATH+"monkey2.tga",
"metin2_map_monkeydungeon_03" : LOCALE_PATH+"monkey3.tga",
"metin2_map_guild_01" : LOCALE_PATH+"guild1.tga",
"metin2_map_guild_02" : LOCALE_PATH+"guild2.tga",
"metin2_map_guild_03" : LOCALE_PATH+"guild3.tga",
"metin2_map_trent" : LOCALE_PATH+"trent.tga",
"metin2_map_trent02" : LOCALE_PATH+"trent02.tga",
"season2/map_n_snowm_02": LOCALE_PATH+"snow2.tga",
"season2/metin2_map_a2_1": LOCALE_PATH+"a2_2.tga",
"season2/metin2_map_n_desert_02": LOCALE_PATH+"desert2.tga",
"season2/metin2_map_n_flame_02": LOCALE_PATH+"frame2.tga",
"season2/metin2_map_milgyo_a": LOCALE_PATH+"milgyo2.TGA",
"season2/metin2_map_trent_a": LOCALE_PATH+"trent_a.tga",
"season2/metin2_map_trent02_a": LOCALE_PATH+"trent02_a.tga",
"season2/metin2_map_skipia_dungeon_01": LOCALE_PATH+"skipia.tga",
"season2/metin2_map_skipia_dungeon_02": LOCALE_PATH+"skipia.tga",
"metin2_map_devilsCatacomb" : LOCALE_PATH+"devil_basement.tga",
"metin2_guild_village_01" : LOCALE_PATH+"a4.tga",
"metin2_guild_village_02" : LOCALE_PATH+"b4.tga",
"metin2_guild_village_03" : LOCALE_PATH+"c4.tga",
"metin2_map_BayBlackSand" : LOCALE_PATH+"bay.tga",
"metin2_map_Mt_Thunder" : LOCALE_PATH+"thunder.tga",
"metin2_map_dawnmistwood" : LOCALE_PATH+"dawn.tga",
"Metin2_map_CapeDragonHead" : LOCALE_PATH+"cape.tga",
"metin2_map_spiderdungeon" : LOCALE_PATH+"sd01.tga",
"metin2_map_spiderdungeon_02" : LOCALE_PATH+"sd02.tga",
"metin2_map_spiderdungeon_03" : LOCALE_PATH+"sd03.tga",
}
def __init__(self):
if localeInfo.IsARABIC():
self.MAP_NAME_IMAGE = {

View File

@ -7,6 +7,7 @@ import localeInfo
import uiScriptLocale
import constInfo
import mouseModule
import app
class PartyMemberInfoBoard(ui.ScriptWindow):
if localeInfo.IsJAPAN():
@ -65,6 +66,30 @@ class PartyMemberInfoBoard(ui.ScriptWindow):
player.PARTY_STATE_BUFFER : localeInfo.PARTY_SET_BUFFER,
player.PARTY_STATE_SKILL_MASTER : localeInfo.PARTY_SET_SKILL_MASTER, }
if app.__BL_MULTI_LANGUAGE__:
@staticmethod
def ReloadVariables():
PartyMemberInfoBoard.AFFECT_STRING_DICT = {
PartyMemberInfoBoard.PARTY_AFFECT_EXPERIENCE : localeInfo.PARTY_BONUS_EXP,
PartyMemberInfoBoard.PARTY_AFFECT_ATTACKER : localeInfo.PARTY_BONUS_ATTACKER,
PartyMemberInfoBoard.PARTY_AFFECT_TANKER : localeInfo.PARTY_BONUS_TANKER,
PartyMemberInfoBoard.PARTY_AFFECT_BUFFER : localeInfo.PARTY_BONUS_BUFFER,
PartyMemberInfoBoard.PARTY_AFFECT_SKILL_MASTER : localeInfo.PARTY_BONUS_SKILL_MASTER,
PartyMemberInfoBoard.PARTY_AFFECT_BERSERKER : localeInfo.PARTY_BONUS_BERSERKER,
PartyMemberInfoBoard.PARTY_AFFECT_DEFENDER : localeInfo.PARTY_BONUS_DEFENDER,
PartyMemberInfoBoard.PARTY_AFFECT_INCREASE_AREA_150 : localeInfo.PARTY_INCREASE_AREA_150,
PartyMemberInfoBoard.PARTY_AFFECT_INCREASE_AREA_200 : localeInfo.PARTY_INCREASE_AREA_200,
}
PartyMemberInfoBoard.STATE_NAME_DICT = {
player.PARTY_STATE_ATTACKER : localeInfo.PARTY_SET_ATTACKER,
player.PARTY_STATE_BERSERKER : localeInfo.PARTY_SET_BERSERKER,
player.PARTY_STATE_TANKER : localeInfo.PARTY_SET_TANKER,
player.PARTY_STATE_DEFENDER : localeInfo.PARTY_SET_DEFENDER,
player.PARTY_STATE_BUFFER : localeInfo.PARTY_SET_BUFFER,
player.PARTY_STATE_SKILL_MASTER : localeInfo.PARTY_SET_SKILL_MASTER,
}
def __init__(self):
ui.ScriptWindow.__init__(self)
@ -396,6 +421,11 @@ class PartyMenu(ui.ThinBoard):
BUTTON_NAME = ( localeInfo.PARTY_HEAL_ALL_MEMBER, localeInfo.PARTY_BREAK_UP, localeInfo.PARTY_LEAVE )
if app.__BL_MULTI_LANGUAGE__:
@staticmethod
def ReloadVariables():
PartyMenu.BUTTON_NAME = ( localeInfo.PARTY_HEAL_ALL_MEMBER, localeInfo.PARTY_BREAK_UP, localeInfo.PARTY_LEAVE )
def __init__(self):
ui.ThinBoard.__init__(self)
self.buttonDict = {}

View File

@ -10,26 +10,121 @@ OPTION_SHADOW = "SHADOW"
CODEPAGE = str(app.GetDefaultCodePage())
def LoadLocaleFile(srcFileName, localeDict):
localeDict["CUBE_INFO_TITLE"] = "Recipe"
localeDict["CUBE_REQUIRE_MATERIAL"] = "Requirements"
localeDict["CUBE_REQUIRE_MATERIAL_OR"] = "or"
if app.__BL_MULTI_LANGUAGE__:
def LoadLocaleFile(srcFileName):
localeDict = {}
localeDict["CUBE_INFO_TITLE"] = "Recipe"
localeDict["CUBE_REQUIRE_MATERIAL"] = "Requirements"
localeDict["CUBE_REQUIRE_MATERIAL_OR"] = "or"
try:
lines = open(srcFileName, "r").readlines()
except IOError:
import dbg
dbg.LogBox("LoadUIScriptLocaleError(%(srcFileName)s)" % locals())
app.Abort()
try:
lines = open(srcFileName, "r").readlines()
except IOError:
import dbg
dbg.LogBox("LoadUIScriptLocaleError(%(srcFileName)s)" % localeDict)
app.Abort()
for line in lines:
tokens = line[:-1].split("\t")
for line in lines:
tokens = line[:-1].split("\t")
if len(tokens) >= 2:
localeDict[tokens[0]] = tokens[1]
if len(tokens) >= 2:
localeDict[tokens[0]] = tokens[1]
else:
print(len(tokens), lines.index(line), line)
globals().update(localeDict)
def ReloadLocaleFile():
global CODEPAGE
CODEPAGE = str(app.GetDefaultCodePage())
global __IS_ARABIC
__IS_ARABIC = "locale/ae" == app.GetLocalePath()
global LOCALE_UISCRIPT_PATH, LOGIN_PATH, EMPIRE_PATH, GUILD_PATH, SELECT_PATH, WINDOWS_PATH, MAPNAME_PATH
if app.ENABLE_LOCALE_COMMON and not __IS_ARABIC:
LOCALE_UISCRIPT_PATH = "locale/common/ui/"
else:
print(len(tokens), lines.index(line), line)
LOCALE_UISCRIPT_PATH = "%s/ui/" % (app.GetLocalePath())
LOGIN_PATH = "%s/ui/login/" % (app.GetLocalePath())
EMPIRE_PATH = "%s/ui/empire/" % (app.GetLocalePath())
if app.ENABLE_LOCALE_COMMON and not __IS_ARABIC:
GUILD_PATH = "locale/common/ui/guild/"
else:
GUILD_PATH = "%s/ui/guild/" % (app.GetLocalePath())
SELECT_PATH = "%s/ui/select/" % (app.GetLocalePath())
WINDOWS_PATH = "%s/ui/windows/" % (app.GetLocalePath())
MAPNAME_PATH = "%s/ui/mapname/" % (app.GetLocalePath())
global JOBDESC_WARRIOR_PATH, JOBDESC_ASSASSIN_PATH, JOBDESC_SURA_PATH, JOBDESC_SHAMAN_PATH
JOBDESC_WARRIOR_PATH = "%s/jobdesc_warrior.txt" % (app.GetLocalePath())
JOBDESC_ASSASSIN_PATH = "%s/jobdesc_assassin.txt" % (app.GetLocalePath())
JOBDESC_SURA_PATH = "%s/jobdesc_sura.txt" % (app.GetLocalePath())
JOBDESC_SHAMAN_PATH = "%s/jobdesc_shaman.txt" % (app.GetLocalePath())
global EMPIREDESC_A, EMPIREDESC_B, EMPIREDESC_C
EMPIREDESC_A = "%s/empiredesc_a.txt" % (app.GetLocalePath())
EMPIREDESC_B = "%s/empiredesc_b.txt" % (app.GetLocalePath())
EMPIREDESC_C = "%s/empiredesc_c.txt" % (app.GetLocalePath())
global LOCALE_INTERFACE_FILE_NAME
LOCALE_INTERFACE_FILE_NAME = "%s/locale_interface.txt" % (app.GetLocalePath())
LoadLocaleFile(LOCALE_INTERFACE_FILE_NAME)
if app.ENABLE_LOCALE_COMMON:
def TryLoadLocaleFile(filename):
if pack.Exist(filename) or os.path.exists(filename):
LoadLocaleFile(filename)
TryLoadLocaleFile("locale/common/locale_interface_ex.txt")
TryLoadLocaleFile("%s/locale_interface_ex.txt" % app.GetLocalePath())
if app.__BL_MULTI_LANGUAGE__:
TryLoadLocaleFile("%s/locale_interface_maliml.txt" % app.GetLocalePath())
global LOCALE_NAME_DICT
LOCALE_NAME_DICT = {
"ae" : globals()['LANGUAGE_AE'],
"cz" : globals()['LANGUAGE_CZ'],
"dk" : globals()['LANGUAGE_DK'],
"nl" : globals()['LANGUAGE_NL'],
"en" : globals()['LANGUAGE_EN'],
"fr" : globals()['LANGUAGE_FR'],
"de" : globals()['LANGUAGE_DE'],
"gr" : globals()['LANGUAGE_GR'],
"hu" : globals()['LANGUAGE_HU'],
"it" : globals()['LANGUAGE_IT'],
"pl" : globals()['LANGUAGE_PL'],
"pt" : globals()['LANGUAGE_PT'],
"ro" : globals()['LANGUAGE_RO'],
"ru" : globals()['LANGUAGE_RU'],
"es" : globals()['LANGUAGE_ES'],
"tr" : globals()['LANGUAGE_TR'],
}
if app.__BL_MULTI_LANGUAGE_ULTIMATE__:
LOCALE_NAME_DICT["eu"] = globals()['LANGUAGE_ANONYMOUS']
else:
def LoadLocaleFile(srcFileName, localeDict):
localeDict["CUBE_INFO_TITLE"] = "Recipe"
localeDict["CUBE_REQUIRE_MATERIAL"] = "Requirements"
localeDict["CUBE_REQUIRE_MATERIAL_OR"] = "or"
try:
lines = open(srcFileName, "r").readlines()
except IOError:
import dbg
dbg.LogBox("LoadUIScriptLocaleError(%(srcFileName)s)" % locals())
app.Abort()
for line in lines:
tokens = line[:-1].split("\t")
if len(tokens) >= 2:
localeDict[tokens[0]] = tokens[1]
else:
print(len(tokens), lines.index(line), line)
name = app.GetLocalePath()
@ -60,10 +155,40 @@ EMPIREDESC_B = "%s/empiredesc_b.txt" % (name)
EMPIREDESC_C = "%s/empiredesc_c.txt" % (name)
LOCALE_INTERFACE_FILE_NAME = "%s/locale_interface.txt" % (name)
LoadLocaleFile(LOCALE_INTERFACE_FILE_NAME, locals())
if app.__BL_MULTI_LANGUAGE__:
LoadLocaleFile(LOCALE_INTERFACE_FILE_NAME)
else:
LoadLocaleFile(LOCALE_INTERFACE_FILE_NAME, locals())
if app.ENABLE_LOCALE_COMMON:
def TryLoadLocaleFile(filename):
if pack.Exist(filename) or os.path.exists(filename):
LoadLocaleFile(filename, globals())
if app.__BL_MULTI_LANGUAGE__:
LoadLocaleFile(filename)
else:
LoadLocaleFile(filename, globals())
TryLoadLocaleFile("locale/common/locale_interface_ex.txt")
TryLoadLocaleFile("%s/locale_interface_ex.txt" % app.GetLocalePath())
if app.__BL_MULTI_LANGUAGE__:
TryLoadLocaleFile("%s/locale_interface_maliml.txt" % app.GetLocalePath())
if app.__BL_MULTI_LANGUAGE__:
LOCALE_NAME_DICT = {
"ae" : globals()['LANGUAGE_AE'],
"cz" : globals()['LANGUAGE_CZ'],
"dk" : globals()['LANGUAGE_DK'],
"nl" : globals()['LANGUAGE_NL'],
"en" : globals()['LANGUAGE_EN'],
"fr" : globals()['LANGUAGE_FR'],
"de" : globals()['LANGUAGE_DE'],
"gr" : globals()['LANGUAGE_GR'],
"hu" : globals()['LANGUAGE_HU'],
"it" : globals()['LANGUAGE_IT'],
"pl" : globals()['LANGUAGE_PL'],
"pt" : globals()['LANGUAGE_PT'],
"ro" : globals()['LANGUAGE_RO'],
"ru" : globals()['LANGUAGE_RU'],
"es" : globals()['LANGUAGE_ES'],
"tr" : globals()['LANGUAGE_TR'],
}
if app.__BL_MULTI_LANGUAGE_ULTIMATE__:
LOCALE_NAME_DICT["eu"] = globals()['LANGUAGE_ANONYMOUS']

View File

@ -6,6 +6,11 @@ import uiScriptLocale
FILE_NAME_LEN = 20
DEFAULT_THEMA = localeInfo.MUSIC_METIN2_DEFAULT_THEMA
if app.__BL_MULTI_LANGUAGE__:
def ReloadVariables():
global DEFAULT_THEMA
DEFAULT_THEMA = localeInfo.MUSIC_METIN2_DEFAULT_THEMA
class Item(ui.ListBoxEx.Item):
def __init__(self, fileName):
ui.ListBoxEx.Item.__init__(self)

View File

@ -164,3 +164,13 @@ class SystemDialog(ui.ScriptWindow):
def OnPressEscapeKey(self):
self.Close()
return True
if app.__BL_MULTI_LANGUAGE__:
def LanguageChange(self):
if self.systemOptionDlg:
self.systemOptionDlg.LanguageChange()
if app.__BL_MULTI_LANGUAGE_ULTIMATE__:
def LanguageChangeAnonymous(self):
if self.systemOptionDlg:
self.systemOptionDlg.LanguageChangeAnonymous()

View File

@ -14,15 +14,23 @@ import musicInfo
import uiSelectMusic
import background
if app.__BL_MULTI_LANGUAGE__:
import uiScriptLocale
MUSIC_FILENAME_MAX_LEN = 25
blockMode = 0
class OptionDialog(ui.ScriptWindow):
if app.__BL_MULTI_LANGUAGE__:
LANG_VIEW_COUNT = 5
def __init__(self):
ui.ScriptWindow.__init__(self)
self.__Initialize()
if app.__BL_MULTI_LANGUAGE__:
self.__LoadLocaleListFile()
self.__Load()
def __del__(self):
@ -37,6 +45,23 @@ class OptionDialog(ui.ScriptWindow):
self.ctrlMusicVolume = 0
self.ctrlSoundVolume = 0
self.musicListDlg = 0
if app.__BL_MULTI_LANGUAGE__:
self.language_list = []
self.language_button_list = []
self.language_select_is_open = False
self.selected_language_index = -1
self.scroll_bar = None
self.cur_language_text_window = None
self.cur_language_text = None
self.language_select_button = None
self.language_change_button = None
self.language_select_pivot_window = None
self.language_over_img = None
self.language_select_window = None
if app.__BL_MULTI_LANGUAGE_ULTIMATE__:
self.show_country_flag_button = None
self.show_empire_flag_button = None
self.anonymous_button = None
self.tilingApplyButton = 0
self.cameraModeButtonList = []
self.fogModeButtonList = []
@ -68,6 +93,16 @@ class OptionDialog(ui.ScriptWindow):
self.ctrlSoundVolume = GetObject("sound_volume_controller")
self.cameraModeButtonList.append(GetObject("camera_short"))
self.cameraModeButtonList.append(GetObject("camera_long"))
if app.__BL_MULTI_LANGUAGE__:
self.cur_language_text_window = GetObject("cur_language_text_window")
self.cur_language_text = GetObject("cur_language_text")
self.language_select_button = GetObject("language_select_button")
self.language_change_button = GetObject("language_change_button")
self.language_select_pivot_window = GetObject("language_select_pivot_window")
if app.__BL_MULTI_LANGUAGE_ULTIMATE__:
self.show_country_flag_button = GetObject("show_country_flag_button")
self.show_empire_flag_button = GetObject("show_empire_flag_button")
self.anonymous_button = GetObject("anonymous_button")
self.fogModeButtonList.append(GetObject("fog_level0"))
self.fogModeButtonList.append(GetObject("fog_level1"))
self.fogModeButtonList.append(GetObject("fog_level2"))
@ -84,6 +119,8 @@ class OptionDialog(ui.ScriptWindow):
self.__Load_BindObject()
self.SetCenterPosition()
if app.__BL_MULTI_LANGUAGE__:
self.__CreateLanguageSelectWindow()
self.titleBar.SetCloseEvent(ui.__mem_func__(self.Close))
@ -114,6 +151,20 @@ class OptionDialog(ui.ScriptWindow):
self.__ClickRadioButton(self.fogModeButtonList, constInfo.GET_FOG_LEVEL_INDEX())
self.__ClickRadioButton(self.cameraModeButtonList, constInfo.GET_CAMERA_MAX_DISTANCE_INDEX())
if app.__BL_MULTI_LANGUAGE__:
self.language_select_button.SetEvent( ui.__mem_func__(self.__OnClickLanguageSelectButton) )
self.cur_language_text_window.SetOnMouseLeftButtonUpEvent( ui.__mem_func__(self.__OnClickLanguageSelectButton) )
self.language_change_button.SetEvent( ui.__mem_func__(self.__OnClickLanguageChangeButton) )
if app.__BL_MULTI_LANGUAGE_ULTIMATE__:
self.show_country_flag_button.SetToggleDownEvent(ui.__mem_func__(self.__EventShowFlags), "country")
self.show_country_flag_button.SetToggleUpEvent(ui.__mem_func__(self.__EventShowFlags), "country")
self.show_empire_flag_button.SetToggleDownEvent(ui.__mem_func__(self.__EventShowFlags), "empire")
self.show_empire_flag_button.SetToggleUpEvent(ui.__mem_func__(self.__EventShowFlags), "empire")
self.anonymous_button.SetEvent( ui.__mem_func__(self.__OnClickAnonymousButton) )
self.RefreshLanguageSettings()
if musicInfo.fieldMusic==musicInfo.METIN2THEMA:
self.selectMusicFile.SetText(uiSelectMusic.DEFAULT_THEMA)
@ -235,10 +286,16 @@ class OptionDialog(ui.ScriptWindow):
def Show(self):
ui.ScriptWindow.Show(self)
if app.__BL_MULTI_LANGUAGE__:
self.__LanguageSelectShowHide(False)
self.selected_language_index = -1
self.cur_language_text.SetText(self.__GetStringCurLanguage())
def Close(self):
self.__SetCurTilingMode()
self.Hide()
if app.__BL_MULTI_LANGUAGE__:
self.__LanguageSelectShowHide(False)
def __SetCurTilingMode(self):
if background.IsSoftwareTiling():
@ -248,3 +305,212 @@ class OptionDialog(ui.ScriptWindow):
def __NotifyChatLine(self, text):
chat.AppendChat(chat.CHAT_TYPE_INFO, text)
if app.__BL_MULTI_LANGUAGE__:
def OnTop(self):
if self.language_select_window:
self.language_select_window.SetTop()
def OnMoveWindow(self, x, y):
if self.language_select_window and self.language_select_pivot_window:
(x, y) = self.language_select_pivot_window.GetGlobalPosition()
self.language_select_window.SetPosition(x, y)
def __AdjustLanguageSelectWindowPosition(self):
pos = int(self.scroll_bar.GetPos() * self.Diff)
for i in xrange(len(self.language_button_list)) :
idx = i + pos
if idx >= len(self.language_list):
return
text = self.language_list[idx]["name"]
self.language_button_list[i].SetText(text)
self.language_button_list[i].SetEvent(ui.__mem_func__(self.__OnClickLanguageSelect), idx)
self.language_button_list[i].SetOverEvent(ui.__mem_func__(self.__OnClickLanguageButtonOver), i)
self.language_button_list[i].SetOverOutEvent(ui.__mem_func__(self.__OnClickLanguageButtonOverOut), i)
def __CreateLanguageSelectWindow(self):
self.language_select_window = ui.Window()
self.language_select_window.AddFlag("float")
self.language_select_window.SetSize(210, 80)
(x, y) = self.language_select_pivot_window.GetGlobalPosition()
self.language_select_window.SetPosition(x, y)
count = min(self.LANG_VIEW_COUNT, len(self.language_list))
for i in range(count):
btn = ui.Button()
btn.SetParent(self.language_select_window)
btn.SetPosition(0, i * 15)
if i == 0:
btn.SetUpVisual("d:/ymir work/ui/quest_re/button_top.sub")
btn.SetDownVisual("d:/ymir work/ui/quest_re/button_top.sub")
btn.SetOverVisual("d:/ymir work/ui/quest_re/button_top.sub")
elif i == (count - 1):
btn.SetUpVisual("d:/ymir work/ui/quest_re/button_bottom.sub")
btn.SetDownVisual("d:/ymir work/ui/quest_re/button_bottom.sub")
btn.SetOverVisual("d:/ymir work/ui/quest_re/button_bottom.sub")
else:
btn.SetUpVisual("d:/ymir work/ui/quest_re/button_middle.sub")
btn.SetDownVisual("d:/ymir work/ui/quest_re/button_middle.sub")
btn.SetOverVisual("d:/ymir work/ui/quest_re/button_middle.sub")
btn.Show()
self.language_button_list.append(btn)
self.language_over_img = ui.ImageBox()
self.language_over_img.LoadImage("d:/ymir work/ui/quest_re/button_over.sub")
self.language_over_img.SetParent(self.language_select_window)
self.language_over_img.AddFlag("not_pick")
self.scroll_bar = ui.ScrollBar()
self.scroll_bar.SetParent(self.language_select_window)
self.scroll_bar.AddFlag("float")
self.scroll_bar.SetPosition(195, 0)
self.scroll_bar.SetScrollBarSize(75)
self.scroll_bar.SetScrollEvent(ui.__mem_func__(self.__OnLanguageSelectScroll))
self.Diff = len(self.language_list) - self.LANG_VIEW_COUNT
stepSize = 1.0 / self.Diff
self.scroll_bar.SetScrollStep( stepSize )
self.__AdjustLanguageSelectWindowPosition()
def __LanguageSelectShowHide(self, is_show):
self.language_select_is_open = is_show
if True == is_show:
self.language_select_window.Show()
if self.LANG_VIEW_COUNT < len(self.language_list):
self.scroll_bar.SetPos(0.0)
self.scroll_bar.Show()
else:
self.scroll_bar.Hide()
else:
self.language_select_window.Hide()
self.scroll_bar.Hide()
def __LoadLocaleListFile(self):
try:
with open("locale_list.txt", "rt") as file:
lines = file.readlines()
except:
import dbg
dbg.LogBox("__LoadLocaleListFile error locale_list.txt")
app.Abort()
lineIndex = 1
for line in lines:
try:
tokens = line[:-1].split(" ")
if len(tokens) == 3:
name = tokens[0]
code_page = tokens[1]
locale = tokens[2]
if locale in uiScriptLocale.LOCALE_NAME_DICT:
name = uiScriptLocale.LOCALE_NAME_DICT[locale]
self.language_list.append({"name" : name, "code_page" : code_page, "locale" : locale})
else:
raise RuntimeError, "Unknown TokenSize"
lineIndex += 1
except:
import dbg
dbg.LogBox("%s: line(%d): %s" % ("locale_list.txt", lineIndex, line), "Error")
raise
def __OnClickLanguageButtonOver(self, index):
if index >= len(self.language_button_list):
return
btn = self.language_button_list[index]
(x, y) = btn.GetLocalPosition()
self.language_over_img.SetPosition(x, y)
self.language_over_img.Show()
def __OnClickLanguageButtonOverOut(self, index):
self.language_over_img.Hide()
def __OnClickLanguageChangeButton(self):
if self.__GetStringCurLanguage() == self.cur_language_text.GetText():
return
net.SendChatPacket("/language_change")
def __OnClickLanguageSelect(self, index):
if index >= len(self.language_list):
return
self.__LanguageSelectShowHide( False )
self.selected_language_index = index
if self.cur_language_text:
self.cur_language_text.SetText( self.language_list[index]["name"] )
def __OnClickLanguageSelectButton(self):
self.__LanguageSelectShowHide( not self.language_select_is_open )
def __OnLanguageSelectScroll(self):
self.__AdjustLanguageSelectWindowPosition()
def __SaveLoca(self, code_page, locale):
try:
with open("loca.cfg", "wt") as file:
file.write("{} {}".format(code_page, locale))
except:
import dbg
dbg.LogBox("__SaveLoca error")
app.Abort()
def __GetStringCurLanguage(self):
cur_locale = app.GetLocaleName()
for lang in self.language_list:
if lang["locale"] == cur_locale:
return lang["name"]
return "-"
def LanguageChange(self):
if self.selected_language_index == -1:
return
if self.selected_language_index >= len(self.language_list):
return
lang = self.language_list[self.selected_language_index]
self.__SaveLoca(lang["code_page"], lang["locale"])
app.SetReloadLocale(True)
if app.__BL_MULTI_LANGUAGE_ULTIMATE__:
def __EventShowFlags(self, type):
if type == "country":
systemSetting.SetShowCountryFlag(not systemSetting.IsShowCountryFlag())
elif type == "empire":
systemSetting.SetShowEmpireFlag(not systemSetting.IsShowEmpireFlag())
self.RefreshLanguageSettings()
def __OnClickAnonymousButton(self):
net.SendChatPacket("/language_anonymous")
def LanguageChangeAnonymous(self):
systemSetting.SetAnonymousCountryMode(not systemSetting.GetAnonymousCountryMode())
self.RefreshLanguageSettings()
def RefreshLanguageSettings(self):
if systemSetting.IsShowCountryFlag():
self.show_country_flag_button.Down()
else:
self.show_country_flag_button.SetUp()
if systemSetting.IsShowEmpireFlag():
self.show_empire_flag_button.Down()
else:
self.show_empire_flag_button.SetUp()
if systemSetting.GetAnonymousCountryMode():
self.anonymous_button.SetText(uiScriptLocale.LANGUAGE_SETTINGS_ANON_OFF)
else:
self.anonymous_button.SetText(uiScriptLocale.LANGUAGE_SETTINGS_ANON_ON)

View File

@ -68,6 +68,38 @@ class TargetBoard(ui.ThinBoard):
}
EXCHANGE_LIMIT_RANGE = 3000
if app.__BL_MULTI_LANGUAGE__:
@staticmethod
def ReloadVariables():
TargetBoard.BUTTON_NAME_LIST = (
localeInfo.TARGET_BUTTON_WHISPER,
localeInfo.TARGET_BUTTON_EXCHANGE,
localeInfo.TARGET_BUTTON_FIGHT,
localeInfo.TARGET_BUTTON_ACCEPT_FIGHT,
localeInfo.TARGET_BUTTON_AVENGE,
localeInfo.TARGET_BUTTON_FRIEND,
localeInfo.TARGET_BUTTON_INVITE_PARTY,
localeInfo.TARGET_BUTTON_LEAVE_PARTY,
localeInfo.TARGET_BUTTON_EXCLUDE,
localeInfo.TARGET_BUTTON_INVITE_GUILD,
localeInfo.TARGET_BUTTON_DISMOUNT,
localeInfo.TARGET_BUTTON_EXIT_OBSERVER,
localeInfo.TARGET_BUTTON_VIEW_EQUIPMENT,
localeInfo.TARGET_BUTTON_REQUEST_ENTER_PARTY,
localeInfo.TARGET_BUTTON_BUILDING_DESTROY,
localeInfo.TARGET_BUTTON_EMOTION_ALLOW,
"VOTE_BLOCK_CHAT",
)
TargetBoard.GRADE_NAME = {
nonplayer.PAWN : localeInfo.TARGET_LEVEL_PAWN,
nonplayer.S_PAWN : localeInfo.TARGET_LEVEL_S_PAWN,
nonplayer.KNIGHT : localeInfo.TARGET_LEVEL_KNIGHT,
nonplayer.S_KNIGHT : localeInfo.TARGET_LEVEL_S_KNIGHT,
nonplayer.BOSS : localeInfo.TARGET_LEVEL_BOSS,
nonplayer.KING : localeInfo.TARGET_LEVEL_KING,
}
def __init__(self):
ui.ThinBoard.__init__(self)

View File

@ -129,8 +129,12 @@ class ToolTip(ui.ThinBoard):
self.toolTipHeight += size
self.ResizeToolTip()
def AppendHorizontalLine(self):
if app.__BL_MULTI_LANGUAGE_PREMIUM__:
def SetThinBoardSize(self, width, height = 12) :
self.toolTipWidth = width
self.toolTipHeight = height
def AppendHorizontalLine(self):
for i in xrange(2):
horizontalLine = ui.Line()
horizontalLine.SetParent(self)
@ -511,6 +515,166 @@ class ItemToolTip(ToolTip):
FONT_COLOR = grp.GenerateColor(0.7607, 0.7607, 0.7607, 1.0)
if app.__BL_MULTI_LANGUAGE__:
@staticmethod
def ReloadVariables():
ItemToolTip.CHARACTER_NAMES = (
localeInfo.TOOLTIP_WARRIOR,
localeInfo.TOOLTIP_ASSASSIN,
localeInfo.TOOLTIP_SURA,
localeInfo.TOOLTIP_SHAMAN
)
if app.ENABLE_WOLFMAN_CHARACTER:
ItemToolTip.CHARACTER_NAMES += (
localeInfo.TOOLTIP_WOLFMAN,
)
ItemToolTip.CHARACTER_COUNT = len(ItemToolTip.CHARACTER_NAMES)
ItemToolTip.WEAR_NAMES = (
localeInfo.TOOLTIP_ARMOR,
localeInfo.TOOLTIP_HELMET,
localeInfo.TOOLTIP_SHOES,
localeInfo.TOOLTIP_WRISTLET,
localeInfo.TOOLTIP_WEAPON,
localeInfo.TOOLTIP_NECK,
localeInfo.TOOLTIP_EAR,
localeInfo.TOOLTIP_UNIQUE,
localeInfo.TOOLTIP_SHIELD,
localeInfo.TOOLTIP_ARROW,
)
ItemToolTip.WEAR_COUNT = len(ItemToolTip.WEAR_NAMES)
ItemToolTip.AFFECT_DICT = {
item.APPLY_MAX_HP : localeInfo.TOOLTIP_MAX_HP,
item.APPLY_MAX_SP : localeInfo.TOOLTIP_MAX_SP,
item.APPLY_CON : localeInfo.TOOLTIP_CON,
item.APPLY_INT : localeInfo.TOOLTIP_INT,
item.APPLY_STR : localeInfo.TOOLTIP_STR,
item.APPLY_DEX : localeInfo.TOOLTIP_DEX,
item.APPLY_ATT_SPEED : localeInfo.TOOLTIP_ATT_SPEED,
item.APPLY_MOV_SPEED : localeInfo.TOOLTIP_MOV_SPEED,
item.APPLY_CAST_SPEED : localeInfo.TOOLTIP_CAST_SPEED,
item.APPLY_HP_REGEN : localeInfo.TOOLTIP_HP_REGEN,
item.APPLY_SP_REGEN : localeInfo.TOOLTIP_SP_REGEN,
item.APPLY_POISON_PCT : localeInfo.TOOLTIP_APPLY_POISON_PCT,
item.APPLY_STUN_PCT : localeInfo.TOOLTIP_APPLY_STUN_PCT,
item.APPLY_SLOW_PCT : localeInfo.TOOLTIP_APPLY_SLOW_PCT,
item.APPLY_CRITICAL_PCT : localeInfo.TOOLTIP_APPLY_CRITICAL_PCT,
item.APPLY_PENETRATE_PCT : localeInfo.TOOLTIP_APPLY_PENETRATE_PCT,
item.APPLY_ATTBONUS_WARRIOR : localeInfo.TOOLTIP_APPLY_ATTBONUS_WARRIOR,
item.APPLY_ATTBONUS_ASSASSIN : localeInfo.TOOLTIP_APPLY_ATTBONUS_ASSASSIN,
item.APPLY_ATTBONUS_SURA : localeInfo.TOOLTIP_APPLY_ATTBONUS_SURA,
item.APPLY_ATTBONUS_SHAMAN : localeInfo.TOOLTIP_APPLY_ATTBONUS_SHAMAN,
item.APPLY_ATTBONUS_MONSTER : localeInfo.TOOLTIP_APPLY_ATTBONUS_MONSTER,
item.APPLY_ATTBONUS_HUMAN : localeInfo.TOOLTIP_APPLY_ATTBONUS_HUMAN,
item.APPLY_ATTBONUS_ANIMAL : localeInfo.TOOLTIP_APPLY_ATTBONUS_ANIMAL,
item.APPLY_ATTBONUS_ORC : localeInfo.TOOLTIP_APPLY_ATTBONUS_ORC,
item.APPLY_ATTBONUS_MILGYO : localeInfo.TOOLTIP_APPLY_ATTBONUS_MILGYO,
item.APPLY_ATTBONUS_UNDEAD : localeInfo.TOOLTIP_APPLY_ATTBONUS_UNDEAD,
item.APPLY_ATTBONUS_DEVIL : localeInfo.TOOLTIP_APPLY_ATTBONUS_DEVIL,
item.APPLY_STEAL_HP : localeInfo.TOOLTIP_APPLY_STEAL_HP,
item.APPLY_STEAL_SP : localeInfo.TOOLTIP_APPLY_STEAL_SP,
item.APPLY_MANA_BURN_PCT : localeInfo.TOOLTIP_APPLY_MANA_BURN_PCT,
item.APPLY_DAMAGE_SP_RECOVER : localeInfo.TOOLTIP_APPLY_DAMAGE_SP_RECOVER,
item.APPLY_BLOCK : localeInfo.TOOLTIP_APPLY_BLOCK,
item.APPLY_DODGE : localeInfo.TOOLTIP_APPLY_DODGE,
item.APPLY_RESIST_SWORD : localeInfo.TOOLTIP_APPLY_RESIST_SWORD,
item.APPLY_RESIST_TWOHAND : localeInfo.TOOLTIP_APPLY_RESIST_TWOHAND,
item.APPLY_RESIST_DAGGER : localeInfo.TOOLTIP_APPLY_RESIST_DAGGER,
item.APPLY_RESIST_BELL : localeInfo.TOOLTIP_APPLY_RESIST_BELL,
item.APPLY_RESIST_FAN : localeInfo.TOOLTIP_APPLY_RESIST_FAN,
item.APPLY_RESIST_BOW : localeInfo.TOOLTIP_RESIST_BOW,
item.APPLY_RESIST_FIRE : localeInfo.TOOLTIP_RESIST_FIRE,
item.APPLY_RESIST_ELEC : localeInfo.TOOLTIP_RESIST_ELEC,
item.APPLY_RESIST_MAGIC : localeInfo.TOOLTIP_RESIST_MAGIC,
item.APPLY_RESIST_WIND : localeInfo.TOOLTIP_APPLY_RESIST_WIND,
item.APPLY_REFLECT_MELEE : localeInfo.TOOLTIP_APPLY_REFLECT_MELEE,
item.APPLY_REFLECT_CURSE : localeInfo.TOOLTIP_APPLY_REFLECT_CURSE,
item.APPLY_POISON_REDUCE : localeInfo.TOOLTIP_APPLY_POISON_REDUCE,
item.APPLY_KILL_SP_RECOVER : localeInfo.TOOLTIP_APPLY_KILL_SP_RECOVER,
item.APPLY_EXP_DOUBLE_BONUS : localeInfo.TOOLTIP_APPLY_EXP_DOUBLE_BONUS,
item.APPLY_GOLD_DOUBLE_BONUS : localeInfo.TOOLTIP_APPLY_GOLD_DOUBLE_BONUS,
item.APPLY_ITEM_DROP_BONUS : localeInfo.TOOLTIP_APPLY_ITEM_DROP_BONUS,
item.APPLY_POTION_BONUS : localeInfo.TOOLTIP_APPLY_POTION_BONUS,
item.APPLY_KILL_HP_RECOVER : localeInfo.TOOLTIP_APPLY_KILL_HP_RECOVER,
item.APPLY_IMMUNE_STUN : localeInfo.TOOLTIP_APPLY_IMMUNE_STUN,
item.APPLY_IMMUNE_SLOW : localeInfo.TOOLTIP_APPLY_IMMUNE_SLOW,
item.APPLY_IMMUNE_FALL : localeInfo.TOOLTIP_APPLY_IMMUNE_FALL,
item.APPLY_BOW_DISTANCE : localeInfo.TOOLTIP_BOW_DISTANCE,
item.APPLY_DEF_GRADE_BONUS : localeInfo.TOOLTIP_DEF_GRADE,
item.APPLY_ATT_GRADE_BONUS : localeInfo.TOOLTIP_ATT_GRADE,
item.APPLY_MAGIC_ATT_GRADE : localeInfo.TOOLTIP_MAGIC_ATT_GRADE,
item.APPLY_MAGIC_DEF_GRADE : localeInfo.TOOLTIP_MAGIC_DEF_GRADE,
item.APPLY_MAX_STAMINA : localeInfo.TOOLTIP_MAX_STAMINA,
item.APPLY_MALL_ATTBONUS : localeInfo.TOOLTIP_MALL_ATTBONUS,
item.APPLY_MALL_DEFBONUS : localeInfo.TOOLTIP_MALL_DEFBONUS,
item.APPLY_MALL_EXPBONUS : localeInfo.TOOLTIP_MALL_EXPBONUS,
item.APPLY_MALL_ITEMBONUS : localeInfo.TOOLTIP_MALL_ITEMBONUS,
item.APPLY_MALL_GOLDBONUS : localeInfo.TOOLTIP_MALL_GOLDBONUS,
item.APPLY_SKILL_DAMAGE_BONUS : localeInfo.TOOLTIP_SKILL_DAMAGE_BONUS,
item.APPLY_NORMAL_HIT_DAMAGE_BONUS : localeInfo.TOOLTIP_NORMAL_HIT_DAMAGE_BONUS,
item.APPLY_SKILL_DEFEND_BONUS : localeInfo.TOOLTIP_SKILL_DEFEND_BONUS,
item.APPLY_NORMAL_HIT_DEFEND_BONUS : localeInfo.TOOLTIP_NORMAL_HIT_DEFEND_BONUS,
item.APPLY_PC_BANG_EXP_BONUS : localeInfo.TOOLTIP_MALL_EXPBONUS_P_STATIC,
item.APPLY_PC_BANG_DROP_BONUS : localeInfo.TOOLTIP_MALL_ITEMBONUS_P_STATIC,
item.APPLY_RESIST_WARRIOR : localeInfo.TOOLTIP_APPLY_RESIST_WARRIOR,
item.APPLY_RESIST_ASSASSIN : localeInfo.TOOLTIP_APPLY_RESIST_ASSASSIN,
item.APPLY_RESIST_SURA : localeInfo.TOOLTIP_APPLY_RESIST_SURA,
item.APPLY_RESIST_SHAMAN : localeInfo.TOOLTIP_APPLY_RESIST_SHAMAN,
item.APPLY_MAX_HP_PCT : localeInfo.TOOLTIP_APPLY_MAX_HP_PCT,
item.APPLY_MAX_SP_PCT : localeInfo.TOOLTIP_APPLY_MAX_SP_PCT,
item.APPLY_ENERGY : localeInfo.TOOLTIP_ENERGY,
item.APPLY_COSTUME_ATTR_BONUS : localeInfo.TOOLTIP_COSTUME_ATTR_BONUS,
item.APPLY_MAGIC_ATTBONUS_PER : localeInfo.TOOLTIP_MAGIC_ATTBONUS_PER,
item.APPLY_MELEE_MAGIC_ATTBONUS_PER : localeInfo.TOOLTIP_MELEE_MAGIC_ATTBONUS_PER,
item.APPLY_RESIST_ICE : localeInfo.TOOLTIP_RESIST_ICE,
item.APPLY_RESIST_EARTH : localeInfo.TOOLTIP_RESIST_EARTH,
item.APPLY_RESIST_DARK : localeInfo.TOOLTIP_RESIST_DARK,
item.APPLY_ANTI_CRITICAL_PCT : localeInfo.TOOLTIP_ANTI_CRITICAL_PCT,
item.APPLY_ANTI_PENETRATE_PCT : localeInfo.TOOLTIP_ANTI_PENETRATE_PCT,
item.APPLY_ATTBONUS_CZ : localeInfo.TOOLTIP_APPLY_ATTBONUS_CZ,
item.APPLY_ATTBONUS_INSECT : localeInfo.TOOLTIP_APPLY_ATTBONUS_INSECT,
item.APPLY_ATTBONUS_DESERT : localeInfo.TOOLTIP_APPLY_ATTBONUS_DESERT,
item.APPLY_ATTBONUS_SWORD : localeInfo.TOOLTIP_APPLY_ATTBONUS_SWORD,
item.APPLY_ATTBONUS_TWOHAND : localeInfo.TOOLTIP_APPLY_ATTBONUS_TWOHAND,
item.APPLY_ATTBONUS_DAGGER : localeInfo.TOOLTIP_APPLY_ATTBONUS_DAGGER,
item.APPLY_ATTBONUS_BELL : localeInfo.TOOLTIP_APPLY_ATTBONUS_BELL,
item.APPLY_ATTBONUS_FAN : localeInfo.TOOLTIP_APPLY_ATTBONUS_FAN,
item.APPLY_ATTBONUS_BOW : localeInfo.TOOLTIP_APPLY_ATTBONUS_BOW,
item.APPLY_RESIST_HUMAN : localeInfo.TOOLTIP_APPLY_RESIST_HUMAN,
item.APPLY_RESIST_MOUNT_FALL : localeInfo.TOOLTIP_APPLY_RESIST_MOUNT_FALL,
}
if app.ENABLE_WOLFMAN_CHARACTER:
ItemToolTip.AFFECT_DICT.update({
item.APPLY_BLEEDING_PCT : localeInfo.TOOLTIP_APPLY_BLEEDING_PCT,
item.APPLY_BLEEDING_REDUCE : localeInfo.TOOLTIP_APPLY_BLEEDING_REDUCE,
item.APPLY_ATTBONUS_WOLFMAN : localeInfo.TOOLTIP_APPLY_ATTBONUS_WOLFMAN,
item.APPLY_RESIST_CLAW : localeInfo.TOOLTIP_APPLY_RESIST_CLAW,
item.APPLY_RESIST_WOLFMAN : localeInfo.TOOLTIP_APPLY_RESIST_WOLFMAN,
item.APPLY_ATTBONUS_CLAW : localeInfo.TOOLTIP_APPLY_ATTBONUS_CLAW,
})
if app.ENABLE_MAGIC_REDUCTION_SYSTEM:
ItemToolTip.AFFECT_DICT.update({
item.APPLY_RESIST_MAGIC_REDUCTION : localeInfo.TOOLTIP_RESIST_MAGIC_REDUCTION,
})
ItemToolTip.AFFECT_DICT.update({
item.APPLY_ENCHANT_ELECT : localeInfo.TOOLTIP_APPLY_ENCHANT_ELECT,
item.APPLY_ENCHANT_FIRE : localeInfo.TOOLTIP_APPLY_ENCHANT_FIRE,
item.APPLY_ENCHANT_ICE : localeInfo.TOOLTIP_APPLY_ENCHANT_ICE,
item.APPLY_ENCHANT_WIND : localeInfo.TOOLTIP_APPLY_ENCHANT_WIND,
item.APPLY_ENCHANT_EARTH : localeInfo.TOOLTIP_APPLY_ENCHANT_EARTH,
item.APPLY_ENCHANT_DARK : localeInfo.TOOLTIP_APPLY_ENCHANT_DARK,
})
def __init__(self, *args, **kwargs):
ToolTip.__init__(self, *args, **kwargs)
self.itemVnum = 0
@ -2241,6 +2405,17 @@ class HyperlinkItemToolTip(ItemToolTip):
def OnMouseLeftButtonDown(self):
self.Hide()
if app.__BL_MULTI_LANGUAGE_PREMIUM__:
class CountryToolTip(ToolTip):
def __init__(self):
ToolTip.__init__(self, isPickable=True)
def __del__(self):
ToolTip.__del__(self)
def OnMouseLeftButtonDown(self):
self.Hide()
class SkillToolTip(ToolTip):
POINT_NAME_DICT = {
@ -2288,6 +2463,31 @@ class SkillToolTip(ToolTip):
"REFLECT_MELEE" : "%",
}
if app.__BL_MULTI_LANGUAGE__:
@staticmethod
def ReloadVariables():
SkillToolTip.POINT_NAME_DICT = {
player.LEVEL : localeInfo.SKILL_TOOLTIP_LEVEL,
player.IQ : localeInfo.SKILL_TOOLTIP_INT,
}
SkillToolTip.SKILL_GRADE_NAME = {
player.SKILL_GRADE_MASTER : localeInfo.SKILL_GRADE_NAME_MASTER,
player.SKILL_GRADE_GRAND_MASTER : localeInfo.SKILL_GRADE_NAME_GRAND_MASTER,
player.SKILL_GRADE_PERFECT_MASTER : localeInfo.SKILL_GRADE_NAME_PERFECT_MASTER,
}
SkillToolTip.AFFECT_NAME_DICT = {
"HP" : localeInfo.TOOLTIP_SKILL_AFFECT_ATT_POWER,
"ATT_GRADE" : localeInfo.TOOLTIP_SKILL_AFFECT_ATT_GRADE,
"DEF_GRADE" : localeInfo.TOOLTIP_SKILL_AFFECT_DEF_GRADE,
"ATT_SPEED" : localeInfo.TOOLTIP_SKILL_AFFECT_ATT_SPEED,
"MOV_SPEED" : localeInfo.TOOLTIP_SKILL_AFFECT_MOV_SPEED,
"DODGE" : localeInfo.TOOLTIP_SKILL_AFFECT_DODGE,
"RESIST_NORMAL" : localeInfo.TOOLTIP_SKILL_AFFECT_RESIST_NORMAL,
"REFLECT_MELEE" : localeInfo.TOOLTIP_SKILL_AFFECT_REFLECT_MELEE,
}
def __init__(self):
ToolTip.__init__(self, self.SKILL_TOOL_TIP_WIDTH)
def __del__(self):

View File

@ -6,6 +6,8 @@ import app
import localeInfo
import ime
import chr
if app.__BL_MULTI_LANGUAGE_PREMIUM__:
import systemSetting
class WhisperButton(ui.Button):
def __init__(self):
@ -291,7 +293,15 @@ class WhisperDialog(ui.ScriptWindow):
net.SendWhisperPacket(self.targetName, text)
self.chatLine.SetText("")
chat.AppendWhisper(chat.WHISPER_TYPE_CHAT, self.targetName, player.GetName() + " : " + text)
if app.__BL_MULTI_LANGUAGE_PREMIUM__:
country = app.GetLocaleName()
empire = net.GetEmpireID()
if app.__BL_MULTI_LANGUAGE_ULTIMATE__:
if systemSetting.GetAnonymousCountryMode():
country = "eu"
chat.AppendWhisper(chat.WHISPER_TYPE_CHAT, self.targetName, player.GetName() + " : " + text, empire, country)
else:
chat.AppendWhisper(chat.WHISPER_TYPE_CHAT, self.targetName, player.GetName() + " : " + text)
def OnTop(self):
self.chatLine.SetFocus()
@ -301,9 +311,23 @@ class WhisperDialog(ui.ScriptWindow):
def OnMouseLeftButtonDown(self):
hyperlink = ui.GetHyperlink()
if hyperlink:
if app.IsPressed(app.DIK_LALT):
link = chat.GetLinkFromHyperlink(hyperlink)
ime.PasteString(link)
else:
self.interface.MakeHyperlinkTooltip(hyperlink)
if app.__BL_MULTI_LANGUAGE_PREMIUM__:
country = chat.GetCountry()
empire = chat.GetEmpire()
if hyperlink:
if app.IsPressed(app.DIK_LALT):
link = chat.GetLinkFromHyperlink(hyperlink)
ime.PasteString(link)
else:
self.interface.MakeHyperlinkTooltip(hyperlink)
elif country:
self.interface.MakeCountryTooltip(country)
elif empire:
self.interface.MakeEmpireTooltip(empire)
else:
if hyperlink:
if app.IsPressed(app.DIK_LALT):
link = chat.GetLinkFromHyperlink(hyperlink)
ime.PasteString(link)
else:
self.interface.MakeHyperlinkTooltip(hyperlink)

View File

@ -0,0 +1,18 @@
LANGUAGE_ANONYMOUS مجهول
LANGUAGE_ANONYMOUS_MODE وضع مجهول
LANGUAGE_SETTINGS_FILTER_COUNTRY مرشح الدردشة (البلد)
LANGUAGE_SETTINGS_FILTER_EMPIRE مرشح الدردشة (الإمبراطورية)
LANGUAGE_SETTINGS_OTHER آخر
LANGUAGE_SETTINGS_SHOW_FLAG_COUNTRY عرض أعلام الدول
LANGUAGE_SETTINGS_SHOW_FLAG_EMPIRE عرض أعلام الإمبراطورية
LANGUAGE_SETTINGS اعدادات اللغة
OPTION_LANGUAGE_SETTINGS اعدادات اللغة
LANGUAGE_SETTINGS_TOOLTIP_LINE1 مرشح الدردشة: يمكنك تعديل اللغات التي يمكن عرضها في الدردشة.
LANGUAGE_SETTINGS_TOOLTIP_LINE2 إظهار الأعلام: يمكنك التحكم في ظهور الأعلام في الدردشة والهمسات وبجوار عناوين الشخصيات.
LANGUAGE_SETTINGS_TOOLTIP_LINE3 الوضع المجهول: سيكون علمك مجهولاً ولكن لغتك لن تتغير.
LANGUAGE_SETTINGS_COUNTRY دولة
LANGUAGE_SETTINGS_EMPIRE إمبراطورية
LANGUAGE_SETTINGS_SHOW_FLAG إظهار العلم
LANGUAGE_SETTINGS_ANON_ON على
LANGUAGE_SETTINGS_ANON_OFF عن
LANGUAGE_WILL_CHANGE سوف تتغير اللغة عند تسجيل الدخول.

View File

@ -0,0 +1,18 @@
LANGUAGE_ANONYMOUS Anonymní
LANGUAGE_ANONYMOUS_MODE Anonymní Režim
LANGUAGE_SETTINGS_FILTER_COUNTRY Filtr Chatu (Zeme)
LANGUAGE_SETTINGS_FILTER_EMPIRE Filtr Chatu (Impérium)
LANGUAGE_SETTINGS_OTHER Jiný
LANGUAGE_SETTINGS_SHOW_FLAG_COUNTRY Zobrazit Vlajky Zemí
LANGUAGE_SETTINGS_SHOW_FLAG_EMPIRE Zobrazit ríšské Vlajky
LANGUAGE_SETTINGS Nastavení Jazyka
OPTION_LANGUAGE_SETTINGS Nastavení Jaz.
LANGUAGE_SETTINGS_TOOLTIP_LINE1 Filtr Chatu: Mužete upravit, které jazyky mohou být zobrazeny v chate.
LANGUAGE_SETTINGS_TOOLTIP_LINE2 Zobrazit Príznaky: Mužete urcit, zda se príznaky objeví v chatu, šepotu a vedle názvu postav.
LANGUAGE_SETTINGS_TOOLTIP_LINE3 Anonymní Režim: Vaše vlajka bude anonymní, ale váš jazyk se nezmení.
LANGUAGE_SETTINGS_COUNTRY Zeme
LANGUAGE_SETTINGS_EMPIRE Ríše
LANGUAGE_SETTINGS_SHOW_FLAG Zobrazit Vlajku
LANGUAGE_SETTINGS_ANON_ON Na
LANGUAGE_SETTINGS_ANON_OFF Vypnuto
LANGUAGE_WILL_CHANGE Jazyk se zmení, když se prihlásíte.

View File

@ -0,0 +1,18 @@
LANGUAGE_ANONYMOUS Anonym
LANGUAGE_ANONYMOUS_MODE Anonym Modus
LANGUAGE_SETTINGS_FILTER_COUNTRY Chat-Filter (Land)
LANGUAGE_SETTINGS_FILTER_EMPIRE Chat-Filter (Empire)
LANGUAGE_SETTINGS_OTHER Andere
LANGUAGE_SETTINGS_SHOW_FLAG_COUNTRY Länderflaggen Anzeigen
LANGUAGE_SETTINGS_SHOW_FLAG_EMPIRE Flaggen des Imperiums Anzeigen
LANGUAGE_SETTINGS Spracheinstellungen
OPTION_LANGUAGE_SETTINGS Spracheinstel.
LANGUAGE_SETTINGS_TOOLTIP_LINE1 Chat-Filter: Sie können bearbeiten, welche Sprachen im Chat angezeigt werden können.
LANGUAGE_SETTINGS_TOOLTIP_LINE2 Flaggen anzeigen: Sie können steuern, ob Flaggen im Chat, im Flüsterton und neben den Charaktertiteln angezeigt werden.
LANGUAGE_SETTINGS_TOOLTIP_LINE3 Anonymous Mode: Ihre Flagge bleibt anonym, Ihre Sprache ändert sich jedoch nicht.
LANGUAGE_SETTINGS_COUNTRY Land
LANGUAGE_SETTINGS_EMPIRE Reich
LANGUAGE_SETTINGS_SHOW_FLAG Flagge Anzeigen
LANGUAGE_SETTINGS_ANON_ON An
LANGUAGE_SETTINGS_ANON_OFF Aus
LANGUAGE_WILL_CHANGE Die Sprache ändert sich, wenn Sie sich anmelden.

View File

@ -0,0 +1,18 @@
LANGUAGE_ANONYMOUS Anonym
LANGUAGE_ANONYMOUS_MODE Anonym Tilstand
LANGUAGE_SETTINGS_FILTER_COUNTRY Chatfilter (Land)
LANGUAGE_SETTINGS_FILTER_EMPIRE Chatfilter (Imperium)
LANGUAGE_SETTINGS_OTHER Andet
LANGUAGE_SETTINGS_SHOW_FLAG_COUNTRY Vis Landeflag
LANGUAGE_SETTINGS_SHOW_FLAG_EMPIRE Vis Empire Flag
LANGUAGE_SETTINGS Sprogindstillinger
OPTION_LANGUAGE_SETTINGS Sprogindstil.
LANGUAGE_SETTINGS_TOOLTIP_LINE1 Chatfilter: Du kan redigere, hvilke sprog der kan vises i chatten.
LANGUAGE_SETTINGS_TOOLTIP_LINE2 Vis Flag: Du kan kontrollere, om flag vises i chat, hvisken og ved siden af ??karaktertitler.
LANGUAGE_SETTINGS_TOOLTIP_LINE3 Anonym Tilstand: Dit flag vil være anonymt, men dit sprog ændres ikke.
LANGUAGE_SETTINGS_COUNTRY Land
LANGUAGE_SETTINGS_EMPIRE Imperium
LANGUAGE_SETTINGS_SHOW_FLAG Vis Flag
LANGUAGE_SETTINGS_ANON_ON På
LANGUAGE_SETTINGS_ANON_OFF Af
LANGUAGE_WILL_CHANGE Sproget ændres, når du logger ind.

View File

@ -0,0 +1,18 @@
LANGUAGE_ANONYMOUS Anonymous
LANGUAGE_ANONYMOUS_MODE Anonymous Mode
LANGUAGE_SETTINGS_FILTER_COUNTRY Chat Filter (Country)
LANGUAGE_SETTINGS_FILTER_EMPIRE Chat Filter (Empire)
LANGUAGE_SETTINGS_OTHER Other
LANGUAGE_SETTINGS_SHOW_FLAG_COUNTRY Show Country Flags
LANGUAGE_SETTINGS_SHOW_FLAG_EMPIRE Show Empire Flags
LANGUAGE_SETTINGS Language Settings
OPTION_LANGUAGE_SETTINGS Language Sett.
LANGUAGE_SETTINGS_TOOLTIP_LINE1 Chat Filter: You can edit which languages can be displayed in the chat.
LANGUAGE_SETTINGS_TOOLTIP_LINE2 Show Flags: You can control whether flags appear in chat, whispers, and next to character titles.
LANGUAGE_SETTINGS_TOOLTIP_LINE3 Anonymous Mode: Your flag will be anonymous but your language will not change.
LANGUAGE_SETTINGS_COUNTRY Country
LANGUAGE_SETTINGS_EMPIRE Empire
LANGUAGE_SETTINGS_SHOW_FLAG Show Flag
LANGUAGE_SETTINGS_ANON_ON On
LANGUAGE_SETTINGS_ANON_OFF Off
LANGUAGE_WILL_CHANGE The language will change when you log in.

View File

@ -0,0 +1,18 @@
LANGUAGE_ANONYMOUS Anónimo
LANGUAGE_ANONYMOUS_MODE Modo Anónimo
LANGUAGE_SETTINGS_FILTER_COUNTRY Filtro De Chat (País)
LANGUAGE_SETTINGS_FILTER_EMPIRE Filtro De Chat (Imperio)
LANGUAGE_SETTINGS_OTHER Otro
LANGUAGE_SETTINGS_SHOW_FLAG_COUNTRY Mostrar Nanderas De Países
LANGUAGE_SETTINGS_SHOW_FLAG_EMPIRE Mostrar Banderas Del Imperio
LANGUAGE_SETTINGS Ajustes De Idioma
OPTION_LANGUAGE_SETTINGS Ajustes De Idi.
LANGUAGE_SETTINGS_TOOLTIP_LINE1 Filtro de chat: Puede editar qué idiomas se pueden mostrar en el chat.
LANGUAGE_SETTINGS_TOOLTIP_LINE2 Mostrar Banderas: Puedes controlar si las banderas aparecen en el chat, en los susurros y junto a los títulos de los personajes.
LANGUAGE_SETTINGS_TOOLTIP_LINE3 Modo Anónimo: Su bandera será anónima pero su idioma no cambiará.
LANGUAGE_SETTINGS_COUNTRY País
LANGUAGE_SETTINGS_EMPIRE Imperio
LANGUAGE_SETTINGS_SHOW_FLAG Mostrar Bandera
LANGUAGE_SETTINGS_ANON_ON En
LANGUAGE_SETTINGS_ANON_OFF Apagado
LANGUAGE_WILL_CHANGE El idioma cambiará cuando inicies sesión.

View File

@ -0,0 +1,18 @@
LANGUAGE_ANONYMOUS Anonyme
LANGUAGE_ANONYMOUS_MODE Mode Anonyme
LANGUAGE_SETTINGS_FILTER_COUNTRY Filtre De Discussion (Pays)
LANGUAGE_SETTINGS_FILTER_EMPIRE Filtre De Discussion (Empire)
LANGUAGE_SETTINGS_OTHER Autre
LANGUAGE_SETTINGS_SHOW_FLAG_COUNTRY Afficher Les Drapeaux Des Pays
LANGUAGE_SETTINGS_SHOW_FLAG_EMPIRE Afficher Les Drapeaux De l'Empire
LANGUAGE_SETTINGS Paramètres De Langue
OPTION_LANGUAGE_SETTINGS Paramètres De La.
LANGUAGE_SETTINGS_TOOLTIP_LINE1 Filtre De Discussion : Vous pouvez modifier les langues pouvant être affichées dans la discussion.
LANGUAGE_SETTINGS_TOOLTIP_LINE2 Afficher Les Drapeaux : Vous pouvez contrôler si les drapeaux apparaissent dans le chat, les chuchotements et à côté des titres des personnages.
LANGUAGE_SETTINGS_TOOLTIP_LINE3 Mode Anonyme : Votre drapeau sera anonyme mais votre langue ne changera pas.
LANGUAGE_SETTINGS_COUNTRY Pays
LANGUAGE_SETTINGS_EMPIRE Empire
LANGUAGE_SETTINGS_SHOW_FLAG Afficher Le Drapeau
LANGUAGE_SETTINGS_ANON_ON Sur
LANGUAGE_SETTINGS_ANON_OFF Désactivé
LANGUAGE_WILL_CHANGE La langue changera lorsque vous vous connecterez.

View File

@ -0,0 +1,18 @@
LANGUAGE_ANONYMOUS Ανώνυμος
LANGUAGE_ANONYMOUS_MODE Ανώνυμη λειτουργία
LANGUAGE_SETTINGS_FILTER_COUNTRY Φίλτρο συνομιλίας (Χώρα)
LANGUAGE_SETTINGS_FILTER_EMPIRE Φίλτρο συνομιλίας (αμπίρ)
LANGUAGE_SETTINGS_OTHER Αλλα
LANGUAGE_SETTINGS_SHOW_FLAG_COUNTRY Εμφάνιση σημαιών χωρών
LANGUAGE_SETTINGS_SHOW_FLAG_EMPIRE Εμφάνιση σημαιών της αυτοκρατορίας
LANGUAGE_SETTINGS ΡΥΘΜΙΣΕΙΣ ΓΛΩΣΣΑΣ
OPTION_LANGUAGE_SETTINGS ΡΥΘΜΙΣΕΙΣ ΓΛΩ.
LANGUAGE_SETTINGS_TOOLTIP_LINE1 Φίλτρο συνομιλίας: Μπορείτε να επεξεργαστείτε ποιες γλώσσες μπορούν να εμφανίζονται στη συνομιλία.
LANGUAGE_SETTINGS_TOOLTIP_LINE2 Εμφάνιση σημαιών: Μπορείτε να ελέγξετε εάν οι σημαίες εμφανίζονται στη συνομιλία, στους ψιθύρους και δίπλα σε τίτλους χαρακτήρων.
LANGUAGE_SETTINGS_TOOLTIP_LINE3 Ανώνυμη λειτουργία: Η σημαία σας θα είναι ανώνυμη, αλλά η γλώσσα σας δεν θα αλλάξει.
LANGUAGE_SETTINGS_COUNTRY Χώρα
LANGUAGE_SETTINGS_EMPIRE αμπίρ
LANGUAGE_SETTINGS_SHOW_FLAG Εμφάνιση σημαίας
LANGUAGE_SETTINGS_ANON_ON Επί
LANGUAGE_SETTINGS_ANON_OFF Μακριά από
LANGUAGE_WILL_CHANGE Η γλώσσα θα αλλάξει όταν συνδεθείτε.

View File

@ -0,0 +1,18 @@
LANGUAGE_ANONYMOUS Névtelen
LANGUAGE_ANONYMOUS_MODE Névtelen Mód
LANGUAGE_SETTINGS_FILTER_COUNTRY Csevegés Szuro (Ország)
LANGUAGE_SETTINGS_FILTER_EMPIRE Csevegés Szuro (Empire)
LANGUAGE_SETTINGS_OTHER Egyéb
LANGUAGE_SETTINGS_SHOW_FLAG_COUNTRY Országzászló Megjelenítése
LANGUAGE_SETTINGS_SHOW_FLAG_EMPIRE Mutasd A Birodalom Zászlóit
LANGUAGE_SETTINGS Nyelvi Beállítások
OPTION_LANGUAGE_SETTINGS Nyelvi Beáll.
LANGUAGE_SETTINGS_TOOLTIP_LINE1 Csevegésszuro: Módosíthatja, hogy mely nyelvek jelenjenek meg a csevegésben.
LANGUAGE_SETTINGS_TOOLTIP_LINE2 Zászlók Megjelenítése: Beállíthatja, hogy a zászlók megjelenjenek-e a csevegésben, a suttogásban és a karakterek címei mellett.
LANGUAGE_SETTINGS_TOOLTIP_LINE3 Névtelen Mód: A zászló névtelen lesz, de a nyelve nem változik.
LANGUAGE_SETTINGS_COUNTRY Ország
LANGUAGE_SETTINGS_EMPIRE Empire
LANGUAGE_SETTINGS_SHOW_FLAG Zászló Megjelenítése
LANGUAGE_SETTINGS_ANON_ON Tovább
LANGUAGE_SETTINGS_ANON_OFF Ki
LANGUAGE_WILL_CHANGE A nyelv megváltozik, amikor bejelentkezik.

View File

@ -0,0 +1,18 @@
LANGUAGE_ANONYMOUS Anonima
LANGUAGE_ANONYMOUS_MODE Modalità Anonima
LANGUAGE_SETTINGS_FILTER_COUNTRY Filtro Chat (Paese)
LANGUAGE_SETTINGS_FILTER_EMPIRE Filtro Chat (Impero)
LANGUAGE_SETTINGS_OTHER Altro
LANGUAGE_SETTINGS_SHOW_FLAG_COUNTRY Mostra Le Bandiere Dei Paesi
LANGUAGE_SETTINGS_SHOW_FLAG_EMPIRE Mostra Le Bandiere Dell'Impero
LANGUAGE_SETTINGS Impostazioni della lingua
OPTION_LANGUAGE_SETTINGS Impostazioni Della Li.
LANGUAGE_SETTINGS_TOOLTIP_LINE1 Filtro Chat: Puoi modificare le lingue che possono essere visualizzate nella chat.
LANGUAGE_SETTINGS_TOOLTIP_LINE2 Mostra Bandiere: Puoi controllare se le bandiere appaiono nella chat, nei sussurri e accanto ai titoli dei personaggi.
LANGUAGE_SETTINGS_TOOLTIP_LINE3 Modalità Anonima: La tua bandiera sarà anonima ma la tua lingua non cambierà.
LANGUAGE_SETTINGS_COUNTRY Paese
LANGUAGE_SETTINGS_EMPIRE Impero
LANGUAGE_SETTINGS_SHOW_FLAG Mostra Bandiera
LANGUAGE_SETTINGS_ANON_ON Attiva
LANGUAGE_SETTINGS_ANON_OFF Disattiva
LANGUAGE_WILL_CHANGE La lingua cambierà quando effettuerai l'accesso.

View File

@ -0,0 +1,18 @@
LANGUAGE_ANONYMOUS Anoniem
LANGUAGE_ANONYMOUS_MODE Anonieme Modus
LANGUAGE_SETTINGS_FILTER_COUNTRY Chatfilter (Land)
LANGUAGE_SETTINGS_FILTER_EMPIRE Chatfilter (Empire)
LANGUAGE_SETTINGS_OTHER Ander
LANGUAGE_SETTINGS_SHOW_FLAG_COUNTRY Toon Landvlaggen
LANGUAGE_SETTINGS_SHOW_FLAG_EMPIRE Toon Empire-Vlaggen
LANGUAGE_SETTINGS Taal Instellingen
OPTION_LANGUAGE_SETTINGS Taal Instel.
LANGUAGE_SETTINGS_TOOLTIP_LINE1 Chatfilter: U kunt bewerken welke talen in de chat kunnen worden weergegeven.
LANGUAGE_SETTINGS_TOOLTIP_LINE2 Vlaggen Tonen: Je kunt bepalen of vlaggen verschijnen in chats, gefluister en naast karaktertitels.
LANGUAGE_SETTINGS_TOOLTIP_LINE3 Anonieme Modus: Uw vlag is anoniem, maar uw taal verandert niet.
LANGUAGE_SETTINGS_COUNTRY Land
LANGUAGE_SETTINGS_EMPIRE Empire
LANGUAGE_SETTINGS_SHOW_FLAG Vlag Tonen
LANGUAGE_SETTINGS_ANON_ON Op
LANGUAGE_SETTINGS_ANON_OFF Uit
LANGUAGE_WILL_CHANGE De taal verandert wanneer u inlogt.

View File

@ -0,0 +1,18 @@
LANGUAGE_ANONYMOUS Anonimowy
LANGUAGE_ANONYMOUS_MODE Tryb Anonimowy
LANGUAGE_SETTINGS_FILTER_COUNTRY Filtr Czatu (Kraj)
LANGUAGE_SETTINGS_FILTER_EMPIRE Filtr Czatu (Imperium)
LANGUAGE_SETTINGS_OTHER Inny
LANGUAGE_SETTINGS_SHOW_FLAG_COUNTRY Pokaz Flagi Krajów
LANGUAGE_SETTINGS_SHOW_FLAG_EMPIRE Pokaz Flagi Imperium
LANGUAGE_SETTINGS Ustawienia Jezyka
OPTION_LANGUAGE_SETTINGS Ustawienia Jez.
LANGUAGE_SETTINGS_TOOLTIP_LINE1 Filtr Czatu: Mozesz edytowac, które jezyki moga byc wyswietlane na czacie.
LANGUAGE_SETTINGS_TOOLTIP_LINE2 Pokaz Flagi: Mozesz kontrolowac, czy flagi pojawiaja sie na czacie, szeptach i obok tytulów postaci.
LANGUAGE_SETTINGS_TOOLTIP_LINE3 Tryb Anonimowy: Twoja flaga bedzie anonimowa, ale Twój jezyk nie ulegnie zmianie.
LANGUAGE_SETTINGS_COUNTRY Kraj
LANGUAGE_SETTINGS_EMPIRE Imperium
LANGUAGE_SETTINGS_SHOW_FLAG Pokaz Flage
LANGUAGE_SETTINGS_ANON_ON Na
LANGUAGE_SETTINGS_ANON_OFF Wylaczony
LANGUAGE_WILL_CHANGE Jezyk zmieni sie po zalogowaniu.

View File

@ -0,0 +1,18 @@
LANGUAGE_ANONYMOUS Anônimo
LANGUAGE_ANONYMOUS_MODE Modo Anônimo
LANGUAGE_SETTINGS_FILTER_COUNTRY Filtro De Bate-Papo (País)
LANGUAGE_SETTINGS_FILTER_EMPIRE Filtro De Bate-Papo (Império)
LANGUAGE_SETTINGS_OTHER Outro
LANGUAGE_SETTINGS_SHOW_FLAG_COUNTRY Mostrar Bandeiras Do País
LANGUAGE_SETTINGS_SHOW_FLAG_EMPIRE Mostrar Bandeiras Do Império
LANGUAGE_SETTINGS Configurações De Linguagem
OPTION_LANGUAGE_SETTINGS Configurações De Lin.
LANGUAGE_SETTINGS_TOOLTIP_LINE1 Filtro De Bate-Papo: Você pode editar quais idiomas podem ser exibidos no bate-papo.
LANGUAGE_SETTINGS_TOOLTIP_LINE2 Mostrar Sinalizadores: Você pode controlar se os sinalizadores aparecem no bate-papo, nos sussurros e ao lado dos títulos dos personagens.
LANGUAGE_SETTINGS_TOOLTIP_LINE3 Modo Anônimo: Sua bandeira será anônima, mas seu idioma não mudará.
LANGUAGE_SETTINGS_COUNTRY País
LANGUAGE_SETTINGS_EMPIRE Império
LANGUAGE_SETTINGS_SHOW_FLAG Mostrar Bandeira
LANGUAGE_SETTINGS_ANON_ON Sobre
LANGUAGE_SETTINGS_ANON_OFF Desligado
LANGUAGE_WILL_CHANGE O idioma mudará quando você fizer login.

View File

@ -0,0 +1,18 @@
LANGUAGE_ANONYMOUS Anonim
LANGUAGE_ANONYMOUS_MODE Mod Anonim
LANGUAGE_SETTINGS_FILTER_COUNTRY Filtru De Chat (Tara)
LANGUAGE_SETTINGS_FILTER_EMPIRE Filtru De Chat (Imperiu)
LANGUAGE_SETTINGS_OTHER Alte
LANGUAGE_SETTINGS_SHOW_FLAG_COUNTRY Afisati Steaguri De Tara
LANGUAGE_SETTINGS_SHOW_FLAG_EMPIRE Arata Steaguri Imperiului
LANGUAGE_SETTINGS Setarile De Limba
OPTION_LANGUAGE_SETTINGS Setarile De Lim.
LANGUAGE_SETTINGS_TOOLTIP_LINE1 Filtru De Chat: Puteti edita ce limbi pot fi afisate în chat.
LANGUAGE_SETTINGS_TOOLTIP_LINE2 Afisati steaguri: Puteti controla daca steaguri apar în chat, în soapta si lânga titlurile personajelor.
LANGUAGE_SETTINGS_TOOLTIP_LINE3 Mod Anonim: Steagul tau va fi anonim, dar limba ta nu se va schimba.
LANGUAGE_SETTINGS_COUNTRY Tara
LANGUAGE_SETTINGS_EMPIRE Imperiu
LANGUAGE_SETTINGS_SHOW_FLAG Arata Steagul
LANGUAGE_SETTINGS_ANON_ON Pe
LANGUAGE_SETTINGS_ANON_OFF Oprit
LANGUAGE_WILL_CHANGE Limba se va schimba când va conectati.

View File

@ -0,0 +1,18 @@
LANGUAGE_ANONYMOUS áÎÏÎÉÍÎÙÊ
LANGUAGE_ANONYMOUS_MODE áÎÏÎÉÍÎÙÊ òÅÖÉÍ
LANGUAGE_SETTINGS_FILTER_COUNTRY æÉÌØÔÒ ÞÁÔÁ (óÔÒÁÎÁ)
LANGUAGE_SETTINGS_FILTER_EMPIRE æÉÌØÔÒ ÞÁÔÁ (éÍÐÅÒÉÑ)
LANGUAGE_SETTINGS_OTHER äÒÕÇÏÊ
LANGUAGE_SETTINGS_SHOW_FLAG_COUNTRY ðÏËÁÚÁÔØ ÆÌÁÇÉ ÓÔÒÁÎ
LANGUAGE_SETTINGS_SHOW_FLAG_EMPIRE ðÏËÁÚÁÔØ ÆÌÁÇÉ ÉÍÐÅÒÉÉ
LANGUAGE_SETTINGS ñÚÙËÏ×ÙÅ ÎÁÓÔÒÏÊËÉ
OPTION_LANGUAGE_SETTINGS ñÚÙËÏ×ÙÅ ÎÁÓ.
LANGUAGE_SETTINGS_TOOLTIP_LINE1 æÉÌØÔÒ ÞÁÔÁ: ×Ù ÍÏÖÅÔÅ ÉÚÍÅÎÉÔØ ÑÚÙËÉ, ËÏÔÏÒÙÅ ÂÕÄÕÔ ÏÔÏÂÒÁÖÁÔØÓÑ × ÞÁÔÅ.
LANGUAGE_SETTINGS_TOOLTIP_LINE2 ðÏËÁÚÙ×ÁÔØ ÆÌÁÇÉ: ×Ù ÍÏÖÅÔÅ ËÏÎÔÒÏÌÉÒÏ×ÁÔØ, ÂÕÄÕÔ ÌÉ ÆÌÁÇÉ ÐÏÑ×ÌÑÔØÓÑ × ÞÁÔÅ, ÐÒÉ ÛÅÐÏÔÅ É ÒÑÄÏÍ Ó ÎÁÚ×ÁÎÉÑÍÉ ÐÅÒÓÏÎÁÖÅÊ.
LANGUAGE_SETTINGS_TOOLTIP_LINE3 áÎÏÎÉÍÎÙÊ ÒÅÖÉÍ: ×ÁÛ ÆÌÁÇ ÂÕÄÅÔ ÁÎÏÎÉÍÎÙÍ, ÎÏ ×ÁÛ ÑÚÙË ÎÅ ÉÚÍÅÎÉÔÓÑ.
LANGUAGE_SETTINGS_COUNTRY óÔÒÁÎÁ
LANGUAGE_SETTINGS_EMPIRE éÍÐÅÒÉÑ
LANGUAGE_SETTINGS_SHOW_FLAG ðÏËÁÚÁÔØ ÆÌÁÇ
LANGUAGE_SETTINGS_ANON_ON îÁ
LANGUAGE_SETTINGS_ANON_OFF ÷ÙËÌÀÞÅÎÎÙÊ
LANGUAGE_WILL_CHANGE ñÚÙË ÉÚÍÅÎÉÔÓÑ ÐÒÉ ×ÈÏÄÅ × ÓÉÓÔÅÍÕ.

View File

@ -0,0 +1,18 @@
LANGUAGE_ANONYMOUS Anonim
LANGUAGE_ANONYMOUS_MODE Anonim Modu
LANGUAGE_SETTINGS_FILTER_COUNTRY Sohbet Filtresi (Ülke)
LANGUAGE_SETTINGS_FILTER_EMPIRE Sohbet Filtresi (Krallik)
LANGUAGE_SETTINGS_OTHER Diger
LANGUAGE_SETTINGS_SHOW_FLAG_COUNTRY Ülke Bayraklarini Göster
LANGUAGE_SETTINGS_SHOW_FLAG_EMPIRE Krallik Bayraklarini Göster
LANGUAGE_SETTINGS Dil Ayarlari
OPTION_LANGUAGE_SETTINGS Dil Ayarlari
LANGUAGE_SETTINGS_TOOLTIP_LINE1 Sohbet Filtresi: Sohbette hangi dillerin görüntülenebilecegini düzenleyebilirsiniz.
LANGUAGE_SETTINGS_TOOLTIP_LINE2 Bayraklari Göster: Bayraklarin sohbette, özel mesajlarda ve karakter basliklarinin yaninda görünüp görünmeyecegini kontrol edebilirsiniz.
LANGUAGE_SETTINGS_TOOLTIP_LINE3 Anonim Modu: Bayraginiz anonim olarak gözükecek ancak diliniz degismeyecektir.
LANGUAGE_SETTINGS_COUNTRY Ülke
LANGUAGE_SETTINGS_EMPIRE Krallik
LANGUAGE_SETTINGS_SHOW_FLAG Bayrak Göster
LANGUAGE_SETTINGS_ANON_ON Aç
LANGUAGE_SETTINGS_ANON_OFF Kapat
LANGUAGE_WILL_CHANGE Giriþ yaptýðýnýzda dil deðiþecektir.

View File

@ -0,0 +1,7 @@
title subImage
version 1.0
image "party_001.dds"
left 134
top 109
right 150
bottom 125

View File

@ -0,0 +1,7 @@
title subImage
version 1.0
image "party_001.dds"
left 166
top 109
right 182
bottom 125

View File

@ -0,0 +1,7 @@
title subImage
version 1.0
image "party_001.dds"
left 150
top 109
right 166
bottom 125

View File

@ -0,0 +1,7 @@
title subImage
version 1.0
image "IntroEmpire_01.dds"
left 313
top 357
right 441
bottom 436

View File

@ -0,0 +1,7 @@
title subImage
version 1.0
image "IntroEmpire_01.dds"
left 359
top 479
right 487
bottom 558

View File

@ -0,0 +1,7 @@
title subImage
version 1.0
image "IntroEmpire_01.dds"
left 0
top 669
right 128
bottom 748

View File

@ -0,0 +1,7 @@
title subImage
version 1.0
image "severflags_01.dds"
left 52
top 21
right 74
bottom 38

View File

@ -0,0 +1,7 @@
title subImage
version 1.0
image "severflags_01.dds"
left 26
top 63
right 48
bottom 80

View File

@ -0,0 +1,7 @@
title subImage
version 1.0
image "severflags_01.dds"
left 0
top 42
right 22
bottom 59

View File

@ -0,0 +1,7 @@
title subImage
version 1.0
image "severflags_01.dds"
left 78
top 0
right 100
bottom 17

View File

@ -0,0 +1,7 @@
title subImage
version 1.0
image "severflags_01.dds"
left 52
top 0
right 74
bottom 17

View File

@ -0,0 +1,7 @@
title subImage
version 1.0
image "severflags_01.dds"
left 78
top 21
right 100
bottom 38

View File

@ -0,0 +1,7 @@
title subImage
version 1.0
image "severflags_01.dds"
left 26
top 21
right 48
bottom 38

View File

@ -0,0 +1,7 @@
title subImage
version 1.0
image "severflags_01.dds"
left 104
top 63
right 126
bottom 80

View File

@ -0,0 +1,7 @@
title subImage
version 1.0
image "severflags_01.dds"
left 104
top 42
right 126
bottom 59

View File

@ -0,0 +1,7 @@
title subImage
version 1.0
image "severflags_01.dds"
left 0
top 0
right 22
bottom 17

View File

@ -0,0 +1,7 @@
title subImage
version 1.0
image "severflags_01.dds"
left 0
top 63
right 22
bottom 80

View File

@ -0,0 +1,7 @@
title subImage
version 1.0
image "severflags_01.dds"
left 104
top 21
right 126
bottom 38

View File

@ -0,0 +1,7 @@
title subImage
version 1.0
image "severflags_01.dds"
left 52
top 63
right 74
bottom 80

View File

@ -0,0 +1,7 @@
title subImage
version 1.0
image "severflags_01.dds"
left 26
top 0
right 48
bottom 17

View File

@ -0,0 +1,7 @@
title subImage
version 1.0
image "severflags_01.dds"
left 78
top 42
right 100
bottom 59

View File

@ -0,0 +1,7 @@
title subImage
version 1.0
image "severflags_01.dds"
left 52
top 42
right 74
bottom 59

View File

@ -0,0 +1,7 @@
title subImage
version 1.0
image "severflags_01.dds"
left 0
top 21
right 22
bottom 38

View File

@ -0,0 +1,7 @@
title subImage
version 1.0
image "severflags_01.dds"
left 104
top 0
right 126
bottom 17

View File

@ -0,0 +1,7 @@
title subImage
version 1.0
image "severflags_01.dds"
left 26
top 42
right 48
bottom 59

View File

@ -0,0 +1,7 @@
title subImage
version 1.0
image "form_lang_01.dds"
left 0
top 32
right 210
bottom 48

View File

@ -0,0 +1,7 @@
title subImage
version 1.0
image "form_lang_01.dds"
left 0
top 16
right 210
bottom 32

View File

@ -0,0 +1,7 @@
title subImage
version 1.0
image "form_lang_01.dds"
left 0
top 68
right 210
bottom 84

View File

@ -0,0 +1,7 @@
title subImage
version 1.0
image "form_lang_01.dds"
left 0
top 50
right 210
bottom 66

View File

@ -0,0 +1,7 @@
title subImage
version 1.0
image "form_lang_01.dds"
left 0
top 0
right 210
bottom 16

View File

@ -373,24 +373,6 @@ if app.ENABLE_ENVIRONMENT_EFFECT_OPTION:
"over_image" : ROOT_PATH + "small_Button_02.sub",
"down_image" : ROOT_PATH + "small_Button_03.sub",
},
# {
# "name" : "shadow_mode",
# "type" : "text",
# "x" : 30,
# "y" : 210,
# "text" : uiScriptLocale.OPTION_SHADOW,
# },
# {
# "name" : "shadow_bar",
# "type" : "sliderbar",
# "x" : 110,
# "y" : 210,
# },
),
},
),
@ -646,26 +628,156 @@ else:
"over_image" : ROOT_PATH + "middle_Button_02.sub",
"down_image" : ROOT_PATH + "middle_Button_03.sub",
},
# {
# "name" : "shadow_mode",
# "type" : "text",
# "x" : 30,
# "y" : 210,
# "text" : uiScriptLocale.OPTION_SHADOW,
# },
# {
# "name" : "shadow_bar",
# "type" : "sliderbar",
# "x" : 110,
# "y" : 210,
# },
),
},
),
}
if app.__BL_MULTI_LANGUAGE__:
MULTI_LANGUAGE_WINDOW_Y = 210
window["height"] = window["height"] + 10
window["children"][0]["height"] = window["children"][0]["height"] + 10
window["children"][0]["children"] = window["children"][0]["children"] + (
{
"name" : "language_change_window",
"type" : "window",
"x" : 0,
"y" : MULTI_LANGUAGE_WINDOW_Y,
"width" : 305,
"height" : 22+15,
"children" :
(
{
"name" : "language_select_text",
"type" : "text",
"x" : 40 + TEXT_TEMPORARY_X,
"y" : 2,
"text" : uiScriptLocale.OPTION_LANGUAGE_SELECT,
},
{
"name" : "language_select_img",
"type" : "image",
"x" : 40 + TEXT_TEMPORARY_X,
"y" : 20,
"image" : "d:/ymir work/ui/quest_re/button_one.sub",
},
{
"name" : "cur_language_text_window",
"type" : "window",
"x" : 40 + TEXT_TEMPORARY_X,
"y" : 20,
"width" : 210-16,
"height" : 16,
"children" :
(
{"name":"cur_language_text", "type":"text", "x":0, "y":0, "text": "-", "all_align" : "center"},
),
},
{
"name" : "language_select_button",
"type" : "button",
"x" : 40 + TEXT_TEMPORARY_X + 210 -16,
"y" : 20,
"default_image" : "d:/ymir work/ui/game/party_match/arrow_default.sub",
"over_image" : "d:/ymir work/ui/game/party_match/arrow_over.sub",
"down_image" : "d:/ymir work/ui/game/party_match/arrow_down.sub",
},
{
"name" : "language_change_button",
"type" : "button",
"x" : 40 + TEXT_TEMPORARY_X + 210 + 10,
"y" : -3 + 20,
"text" : uiScriptLocale.OPTION_LANGUAGE_CHANGE,
"default_image" : ROOT_PATH + "small_Button_01.sub",
"over_image" : ROOT_PATH + "small_Button_02.sub",
"down_image" : ROOT_PATH + "small_Button_03.sub",
"disable_image" : ROOT_PATH + "small_Button_03.sub",
},
{
"name" : "language_select_pivot_window",
"type" : "window",
"x" : 40 + TEXT_TEMPORARY_X,
"y" : 16+20,
"width" : 210,
"height" : 0,
},
),
},
)
if app.__BL_MULTI_LANGUAGE_ULTIMATE__:
window["height"] = window["height"] + 50
window["children"][0]["height"] = window["children"][0]["height"] + 50
window["children"][0]["children"] = window["children"][0]["children"] + (
{
"name" : "show_flags_text",
"type" : "text",
"x" : 40 + TEXT_TEMPORARY_X,
"y" : MULTI_LANGUAGE_WINDOW_Y + 50 + 2,
"text" : uiScriptLocale.LANGUAGE_SETTINGS_SHOW_FLAG,
},
{
"name" : "show_country_flag_button",
"type" : "toggle_button",
"x" : 110,
"y" : MULTI_LANGUAGE_WINDOW_Y + 50,
"text" : uiScriptLocale.LANGUAGE_SETTINGS_COUNTRY,
"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" : "show_empire_flag_button",
"type" : "toggle_button",
"x" : 110+70,
"y" : MULTI_LANGUAGE_WINDOW_Y + 50,
"text" : uiScriptLocale.LANGUAGE_SETTINGS_EMPIRE,
"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" : "anonymous_text",
"type" : "text",
"x" : 40 + TEXT_TEMPORARY_X,
"y" : MULTI_LANGUAGE_WINDOW_Y + 75 + 2,
"text" : uiScriptLocale.LANGUAGE_ANONYMOUS_MODE,
},
{
"name" : "anonymous_button",
"type" : "button",
"x" : 110,
"y" : MULTI_LANGUAGE_WINDOW_Y + 75,
"default_image" : ROOT_PATH + "Middle_Button_01.sub",
"over_image" : ROOT_PATH + "Middle_Button_02.sub",
"down_image" : ROOT_PATH + "Middle_Button_03.sub",
},
)

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

Some files were not shown because too many files have changed in this diff Show More