Hello, and I installed the multilanguage in my loginintro.py, but my new loginintro.py looks a bit different, and now I don't know where exactly I have to place the code places.
Could someone possibly insert them for me briefly?
My Loginintro.py (There the HowTo should be in):
Python
- import app, net, ui, snd, wndMgr, musicInfo, systemSetting, localeInfo, constInfo, ime, os, uiScriptLocale
- from _weakref import proxy
- SERVER_IP = "135.125.139.75" # YOUR SERVER IP
- CH1_PORT = 13005 # PORTS
- CH2_PORT = 13105
- CH3_PORT = 13205
- CH4_PORT = 0
- PORT_AUTH = 31432
- NUME_SERVER = "Nemesis"
- class LoginWindow(ui.ScriptWindow):
- def __init__(self, stream):
- ui.ScriptWindow.__init__(self)
- net.SetPhaseWindow(net.PHASE_WINDOW_LOGIN, self)
- net.SetAccountConnectorHandler(self)
- self.stream = stream
- self.AccUse = [None, None, None, None, None, None]
- self.AccDel = [None, None, None, None, None, None]
- self.AccName = [None, None, None, None, None, None]
- self.AccSave = [None, None, None, None, None, None]
- self.Login = [None, None, None, None, None, None]
- self.SelectedChannel = [None, None, None, None, None, None]
- def __del__(self):
- ui.ScriptWindow.__del__(self)
- net.ClearPhaseWindow(net.PHASE_WINDOW_LOGIN, self)
- net.SetAccountConnectorHandler(0)
- def Open(self):
- print("TEST")
- if (False == os.path.exists('./loginsettings')):
- try:
- print("DEBUG01")
- os.mkdir("/loginsettings/")
- except OSError:
- print("EXIT")
- app.Exit
- f = open("loginsettings/loginsetting1.cfg", "a+")
- f.close()
- f = open("loginsettings/loginsetting2.cfg", "a+")
- f.close()
- f = open("loginsettings/loginsetting3.cfg", "a+")
- f.close()
- f = open("loginsettings/loginsetting4.cfg", "a+")
- f.close()
- f = open("loginsettings/loginsetting5.cfg", "a+")
- f.close()
- f = open("loginsettings/loginsetting6.cfg", "a+")
- f.close()
- self.loginFailureMsgDict={
- "ALREADY" : localeInfo.LOGIN_FAILURE_ALREAY,
- "NOID" : localeInfo.LOGIN_FAILURE_NOT_EXIST_ID,
- "WRONGPWD" : localeInfo.LOGIN_FAILURE_WRONG_PASSWORD,
- "FULL" : localeInfo.LOGIN_FAILURE_TOO_MANY_USER,
- "SHUTDOWN" : localeInfo.LOGIN_FAILURE_SHUTDOWN,
- "REPAIR" : localeInfo.LOGIN_FAILURE_REPAIR_ID,
- "BLOCK" : localeInfo.LOGIN_FAILURE_BLOCK_ID,
- "WRONGMAT" : localeInfo.LOGIN_FAILURE_WRONG_MATRIX_CARD_NUMBER,
- "QUIT" : localeInfo.LOGIN_FAILURE_WRONG_MATRIX_CARD_NUMBER_TRIPLE,
- "BESAMEKEY" : localeInfo.LOGIN_FAILURE_BE_SAME_KEY,
- "NOTAVAIL" : localeInfo.LOGIN_FAILURE_NOT_AVAIL,
- "NOBILL" : localeInfo.LOGIN_FAILURE_NOBILL,
- "BLKLOGIN" : localeInfo.LOGIN_FAILURE_BLOCK_LOGIN,
- "WEBBLK" : localeInfo.LOGIN_FAILURE_WEB_BLOCK,
- }
- self.loginFailureFuncDict = {
- "WRONGPWD" : localeInfo.LOGIN_FAILURE_WRONG_PASSWORD,
- "WRONGMAT" : localeInfo.LOGIN_FAILURE_WRONG_MATRIX_CARD_NUMBER,
- "QUIT" : app.Exit,
- }
- self.SetSize(wndMgr.GetScreenWidth(), wndMgr.GetScreenHeight())
- self.SetWindowName("LoginWindow")
- self.__LoadScript("UIScript/loginwindow.py")
- if musicInfo.loginMusic != "":
- snd.SetMusicVolume(systemSetting.GetMusicVolume())
- snd.FadeInMusic("BGM/" + musicInfo.loginMusic)
- snd.SetSoundVolume(systemSetting.GetSoundVolume())
- ime.AddExceptKey(91)
- ime.AddExceptKey(93)
- self.SetChannel(0)
- self.Show()
- app.ShowCursor()
- def Close(self):
- if musicInfo.loginMusic != "" and musicInfo.selectMusic != "":
- snd.FadeOutMusic("BGM/"+musicInfo.loginMusic)
- if self.stream.popupWindow:
- self.stream.popupWindow.Close()
- self.AccUse = [None, None, None, None, None, None]
- self.AccDel = [None, None, None, None, None, None]
- self.AccName = [None, None, None, None, None, None]
- self.AccSave = [None, None, None, None, None, None]
- self.Login = [None, None, None, None, None, None]
- self.SelectedChannel = [None, None, None, None, None, None]
- self.Hide()
- self.KillFocus()
- app.HideCursor()
- ime.ClearExceptKey()
- def OnConnectFailure(self):
- snd.PlaySound("sound/ui/loginfail.wav")
- self.PopupNotifyMessage(localeInfo.LOGIN_CONNECT_FAILURE, self.EmptyFunc)
- def OnHandShake(self):
- snd.PlaySound("sound/ui/loginok.wav")
- self.PopupDisplayMessage(localeInfo.LOGIN_CONNECT_SUCCESS)
- def OnLoginStart(self):
- self.PopupDisplayMessage(localeInfo.LOGIN_PROCESSING)
- def OnLoginFailure(self, error):
- try:
- loginFailureMsg = self.loginFailureMsgDict[error]
- except KeyError:
- loginFailureMsg = localeInfo.LOGIN_FAILURE_UNKNOWN + error
- loginFailureFunc = self.loginFailureFuncDict.get(error, self.EmptyFunc)
- self.PopupNotifyMessage(loginFailureMsg, loginFailureFunc)
- snd.PlaySound("sound/ui/loginfail.wav")
- def __LoadScript(self, fileName):
- try:
- pyScrLoader = ui.PythonScriptLoader()
- pyScrLoader.LoadScriptFile(self, fileName)
- except:
- import exception
- exception.Abort("LoginWindow.__LoadScript.LoadObject")
- try:
- self.idEditLine = self.GetChild("id")
- self.pwdEditLine = self.GetChild("pwd")
- self.loginButton = self.GetChild("login_button")
- self.channelButton = {
- 0 : self.GetChild("ch1"),
- 1 : self.GetChild("ch2"),
- 2 : self.GetChild("ch3"),
- 3 : self.GetChild("ch4")}
- self.AccUse[0] = self.GetChild("saved_accs_acc1_use")
- self.AccUse[1] = self.GetChild("saved_accs_acc2_use")
- self.AccUse[2] = self.GetChild("saved_accs_acc3_use")
- self.AccUse[3] = self.GetChild("saved_accs_acc4_use")
- self.AccUse[4] = self.GetChild("saved_accs_acc5_use")
- self.AccUse[5] = self.GetChild("saved_accs_acc6_use")
- self.AccDel[0] = self.GetChild("saved_accs_acc1_del")
- self.AccDel[1] = self.GetChild("saved_accs_acc2_del")
- self.AccDel[2] = self.GetChild("saved_accs_acc3_del")
- self.AccDel[3] = self.GetChild("saved_accs_acc4_del")
- self.AccDel[4] = self.GetChild("saved_accs_acc5_del")
- self.AccDel[5] = self.GetChild("saved_accs_acc6_del")
- self.AccName[0] = self.GetChild("saved_accs_acc1")
- self.AccName[1] = self.GetChild("saved_accs_acc2")
- self.AccName[2] = self.GetChild("saved_accs_acc3")
- self.AccName[3] = self.GetChild("saved_accs_acc4")
- self.AccName[4] = self.GetChild("saved_accs_acc5")
- self.AccName[5] = self.GetChild("saved_accs_acc6")
- self.AccSave[0] = self.GetChild("save_acc1")
- self.AccSave[1] = self.GetChild("save_acc2")
- self.AccSave[2] = self.GetChild("save_acc3")
- self.AccSave[3] = self.GetChild("save_acc4")
- self.AccSave[4] = self.GetChild("save_acc5")
- self.AccSave[5] = self.GetChild("save_acc6")
- self.SelectedChannel[0] = self.GetChild("selected_channel1")
- self.SelectedChannel[1] = self.GetChild("selected_channel2")
- self.SelectedChannel[2] = self.GetChild("selected_channel3")
- self.SelectedChannel[3] = self.GetChild("selected_channel4")
- self.SelectedChannel[4] = self.GetChild("selected_channel5")
- self.SelectedChannel[5] = self.GetChild("selected_channel6")
- except:
- import exception
- exception.Abort("LoginWindow.__LoadScript.BindObject")
- for (channelID, channelButtons) in self.channelButton.items():
- channelButtons.SetEvent(ui.__mem_func__(self.SetChannel), channelID)
- self.loginButton.SetEvent(ui.__mem_func__(self.__OnClickLoginButton))
- # self.exitButton.SetEvent(ui.__mem_func__(self.OnPressExitKey))
- self.idEditLine.SetReturnEvent(ui.__mem_func__(self.pwdEditLine.SetFocus))
- self.idEditLine.SetTabEvent(ui.__mem_func__(self.pwdEditLine.SetFocus))
- self.pwdEditLine.SetReturnEvent(ui.__mem_func__(self.__OnClickLoginButton))
- self.pwdEditLine.SetTabEvent(ui.__mem_func__(self.idEditLine.SetFocus))
- self.idEditLine.SetFocus()
- self.AccSave[0].SetEvent(lambda : self.__OnClickLoginSaveButton(0))
- self.AccSave[1].SetEvent(lambda : self.__OnClickLoginSaveButton(1))
- self.AccSave[2].SetEvent(lambda : self.__OnClickLoginSaveButton(2))
- self.AccSave[3].SetEvent(lambda : self.__OnClickLoginSaveButton(3))
- self.AccSave[4].SetEvent(lambda : self.__OnClickLoginSaveButton(4))
- self.AccSave[5].SetEvent(lambda : self.__OnClickLoginSaveButton(5))
- self.AccUse[0].SetEvent(lambda : self.__LoadACCInfos(0))
- self.AccUse[1].SetEvent(lambda : self.__LoadACCInfos(1))
- self.AccUse[2].SetEvent(lambda : self.__LoadACCInfos(2))
- self.AccUse[3].SetEvent(lambda : self.__LoadACCInfos(3))
- self.AccUse[4].SetEvent(lambda : self.__LoadACCInfos(4))
- self.AccUse[5].SetEvent(lambda : self.__LoadACCInfos(5))
- self.AccDel[0].SetEvent(lambda : self.__OnClickDeleteButton(0))
- self.AccDel[1].SetEvent(lambda : self.__OnClickDeleteButton(1))
- self.AccDel[2].SetEvent(lambda : self.__OnClickDeleteButton(2))
- self.AccDel[3].SetEvent(lambda : self.__OnClickDeleteButton(3))
- self.AccDel[4].SetEvent(lambda : self.__OnClickDeleteButton(4))
- self.AccDel[5].SetEvent(lambda : self.__OnClickDeleteButton(5))
- def SetChannel(self, ch):
- for key, button in self.channelButton.items():
- button.SetUp()
- self.channelButton[ch].Down()
- for i in range(6):
- self.SelectedChannel[i].Hide()
- self.SelectedChannel[ch].Show()
- self.stream.SetConnectInfo(SERVER_IP, self.ChannelPort(ch, 0), SERVER_IP, self.ChannelPort("LOGIN"))
- net.SetMarkServer(SERVER_IP, self.ChannelPort("LOGO"))
- app.SetGuildMarkPath("10.tga")
- app.SetGuildSymbolPath("10")
- self.__LoadACCNames()
- net.SetServerInfo(self.ChannelPort(ch, 2))
- def ChannelPort(self, ch, value=0):
- channel = {
- 0 : CH1_PORT,
- 1 : CH2_PORT,
- 2 : CH3_PORT,
- 3 : CH4_PORT,}
- if ch == "LOGIN":
- return PORT_AUTH
- elif ch == "LOGO":
- return channel[0]
- elif value == 2:
- return NUME_SERVER + ", CH%s" % (ch+1)
- else:
- return channel[ch]
- def Connect(self, id, pwd):
- if constInfo.SEQUENCE_PACKET_ENABLE:
- net.SetPacketSequenceMode()
- constInfo.LastAccount = id.lower()
- self.stream.popupWindow.Close()
- self.stream.popupWindow.Open(localeInfo.LOGIN_CONNETING, self.EmptyFunc, localeInfo.UI_CANCEL)
- self.stream.SetLoginInfo(id, pwd)
- self.stream.Connect()
- def PopupDisplayMessage(self, msg):
- self.stream.popupWindow.Close()
- self.stream.popupWindow.Open(msg)
- def PopupNotifyMessage(self, msg, func=0):
- if not func:
- func = self.EmptyFunc
- self.stream.popupWindow.Close()
- self.stream.popupWindow.Open(msg, func, localeInfo.UI_OK)
- def OnPressExitKey(self):
- if self.stream.popupWindow:
- self.stream.popupWindow.Close()
- self.stream.SetPhaseWindow(0)
- return TRUE
- def EmptyFunc(self):
- pass
- def __OnClickLoginButton(self):
- id = self.idEditLine.GetText()
- pwd = self.pwdEditLine.GetText()
- if len(id)==0:
- self.PopupNotifyMessage(localeInfo.LOGIN_INPUT_ID, self.EmptyFunc)
- return
- if len(pwd)==0:
- self.PopupNotifyMessage(localeInfo.LOGIN_INPUT_PASSWORD, self.EmptyFunc)
- return
- self.Connect(id, pwd)
- def __LoadACCInfos(self, accid):
- import linecache
- login = linecache.getline("loginsettings/loginsetting" + str(accid) + ".cfg", 1)
- password = linecache.getline("loginsettings/loginsetting" + str(accid) + ".cfg", 2)
- login = login.replace("\n", "")
- password = password.replace("\n", "")
- if login != "" and password != "":
- self.Connect(login, password)
- else:
- self.PopupNotifyMessage(uiScriptLocale.LOGIN_INTERFACE_NOSAVED_ACC)
- def __LoadACCNames(self):
- for i in range(6):
- fd = open( "loginsettings/loginsetting" + str(i) + ".cfg" )
- self.Login[i] = fd.readline()
- self.Login[i].replace( "\n", "" )
- fd.close()
- if self.Login[i] != "":
- self.AccName[i].SetText(str(self.Login[i]))
- self.AccUse[i].Show()
- self.AccDel[i].Show()
- self.AccSave[i].Hide()
- else:
- self.AccName[i].SetText(uiScriptLocale.LOGIN_INTERFACE_FREE_SPACE)
- self.AccSave[i].Show()
- self.AccUse[i].Hide()
- self.AccDel[i].Hide()
- def __OnClickLoginSaveButton(self, id):
- user = self.idEditLine.GetText()
- pwd = self.pwdEditLine.GetText()
- fd = open("loginsettings/loginsetting" + str(id) + ".cfg")
- self.Login[id] = fd.readline()
- self.Login[id].replace( "\n", "" )
- fd.close()
- if user == "":
- self.PopupNotifyMessage(uiScriptLocale.LOGIN_INTERFACE_PASTE_ID)
- return
- if pwd == "":
- self.PopupNotifyMessage(uiScriptLocale.LOGIN_INTERFACE_PASTE_PW)
- return
- f = open("loginsettings/loginsetting" + str(id) + ".cfg", "r+")
- f.write (user +"\n")
- f.write (pwd)
- f.close()
- self.PopupNotifyMessage(uiScriptLocale.LOGIN_INTERFACE_SAVED)
- self.__LoadACCNames()
- def __OnClickDeleteButton(self, id):
- f = open("loginsettings/loginsetting" + str(id) + ".cfg", "r+")
- check = f.readline()
- if check != "":
- f.truncate(0)
- f.close()
- self.__LoadACCNames()
- self.PopupNotifyMessage("Slot " + str(id+1) + " " + uiScriptLocale.LOGIN_INTERFACE_DELETED)
- else:
- self.PopupNotifyMessage("Slot " + str(id+1) + " " + uiScriptLocale.LOGIN_INTERFACE_ALREADY_EMPTY)
The HowTo for Loginintro.py Multilang. Add:
Code
- #add:
- import os
- #after:
- self.loadingImage = None
- #add:
- self.languageList = ["en","de","ro","pl","tr"]
- #after:
- self.loginButton = GetObject("LoginButton")
- #add:
- self.loginLanguageBoard = GetObject("LanguageBoard")
- #replace:
- if IsFullBackImage():
- self.GetChild("bg1").Show()
- self.GetChild("bg2").Hide()
- return 1
- #with:
- self.InitLanguageBoard()
- if IsFullBackImage():
- self.GetChild("bg1").Show()
- self.GetChild("bg2").Hide()
- return 1
- def InitLanguageBoard(self):
- self.Y_START = 7
- self.X_SPACE = self.Y_START
- self.WIDTH_FLAG = 36
- self.typeButtonList, groupButtonDict = [], {}
- for i in xrange(len(self.languageList)):
- bLanguage = self.languageList[i]
- groupButtonDict[i] = ui.RadioButton()
- groupButtonDict[i].SetParent(self.loginLanguageBoard)
- groupButtonDict[i].SetPosition(self.X_SPACE, 8)
- groupButtonDict[i].SetUpVisual("d:/ymir work/ui/language_system/login_language/flag_%s_norm.tga" % bLanguage)
- groupButtonDict[i].SetOverVisual("d:/ymir work/ui/language_system/login_language/flag_%s_over.tga" % bLanguage)
- groupButtonDict[i].SetDownVisual("d:/ymir work/ui/language_system/login_language/flag_%s_down.tga" % bLanguage)
- groupButtonDict[i].SAFE_SetEvent(self.OnSelectLanguageButton, bLanguage)
- groupButtonDict[i].Show()
- self.typeButtonList.append(groupButtonDict[i])
- self.X_SPACE += self.WIDTH_FLAG
- self.loginLanguageBoard.SetSize(self.Y_START + (self.WIDTH_FLAG * len(groupButtonDict)) + 4, self.loginLanguageBoard.GetHeight())
- self.ClickRadioButton(self.typeButtonList, self.getLanguageAsIndex(self.getLanguage()))
- def getLanguageAsIndex(self, bLanguage):
- for i in xrange(len(self.languageList)):
- if self.languageList[i] == bLanguage:
- return i
- def getLanguage(self):
- f = open("lang.cfg", "r")
- return f.read()
- def setLanguage(self, language):
- self.language = language
- def ClickRadioButton(self, buttonList, buttonIndex):
- try:
- selButton = buttonList[buttonIndex]
- except IndexError:
- return
- for eachButton in buttonList:
- eachButton.SetUp()
- selButton.Down()
- def OnSelectLanguageButton(self, bLanguage):
- file = open("lang.cfg", "w")
- file.write(bLanguage)
- file.close()
- if bLanguage == "en":
- file = open("locale.cfg", "w")
- file.write("10022 1250 en")
- file.close()
- dbg.LogBox("The client will restart.")
- os.system('start metin2client.exe')
- app.Exit()
- elif bLanguage == "de":
- file = open("locale.cfg", "w")
- file.write("10022 1250 de")
- file.close()
- dbg.LogBox("The client will restart.")
- os.system('start metin2client.exe')
- app.Exit()
- elif bLanguage == "ro":
- file = open("locale.cfg", "w")
- file.write("10022 1250 ro")
- file.close()
- dbg.LogBox("The client will restart.")
- os.system('start metin2client.exe')
- app.Exit()
- elif bLanguage == "pl":
- file = open("locale.cfg", "w")
- file.write("10022 1250 pl")
- file.close()
- dbg.LogBox("The client will restart.")
- os.system('start metin2client.exe')
- app.Exit()
- elif bLanguage == "tr":
- file = open("locale.cfg", "w")
- file.write("10022 1250 tr")
- file.close()
- dbg.LogBox("The client will restart.")
- os.system('start metin2client.exe')
- app.Exit()
My old Loginintro.py already with Multilang. For comparison:
Code
- import dbg
- import app
- import net
- import ui
- import ime
- import snd
- import wndMgr
- import musicInfo
- import serverInfo
- import systemSetting
- import ServerStateChecker
- import localeInfo
- import constInfo
- import uiCommon
- import time
- import serverCommandParser
- import ime
- import os
- import uiScriptLocale
- RUNUP_MATRIX_AUTH = FALSE
- NEWCIBN_PASSPOD_AUTH = FALSE
- LOGIN_DELAY_SEC = 0.0
- SKIP_LOGIN_PHASE = FALSE
- SKIP_LOGIN_PHASE_SUPPORT_CHANNEL = FALSE
- FULL_BACK_IMAGE = FALSE
- PASSPOD_MSG_DICT = {}
- VIRTUAL_KEYBOARD_NUM_KEYS = 46
- VIRTUAL_KEYBOARD_RAND_KEY = TRUE
- def Suffle(src):
- if VIRTUAL_KEYBOARD_RAND_KEY:
- items = [item for item in src]
- itemCount = len(items)
- for oldPos in xrange(itemCount):
- newPos = app.GetRandom(0, itemCount-1)
- items[newPos], items[oldPos] = items[oldPos], items[newPos]
- return "".join(items)
- else:
- return src
- if localeInfo.IsNEWCIBN() or localeInfo.IsCIBN10():
- LOGIN_DELAY_SEC = 60.0
- FULL_BACK_IMAGE = TRUE
- NEWCIBN_PASSPOD_AUTH = TRUE
- PASSPOD_MSG_DICT = {
- "PASERR1" : localeInfo.LOGIN_FAILURE_PASERR1,
- "PASERR2" : localeInfo.LOGIN_FAILURE_PASERR2,
- "PASERR3" : localeInfo.LOGIN_FAILURE_PASERR3,
- "PASERR4" : localeInfo.LOGIN_FAILURE_PASERR4,
- "PASERR5" : localeInfo.LOGIN_FAILURE_PASERR5,
- }
- elif localeInfo.IsYMIR() or localeInfo.IsCHEONMA():
- FULL_BACK_IMAGE = TRUE
- elif localeInfo.IsJAPAN():
- FULL_BACK_IMAGE = TRUE
- elif localeInfo.IsBRAZIL():
- LOGIN_DELAY_SEC = 60.0
- def IsFullBackImage():
- global FULL_BACK_IMAGE
- return FULL_BACK_IMAGE
- def IsLoginDelay():
- global LOGIN_DELAY_SEC
- if LOGIN_DELAY_SEC > 0.0:
- return TRUE
- else:
- return FALSE
- def IsRunupMatrixAuth():
- global RUNUP_MATRIX_AUTH
- return RUNUP_MATRIX_AUTH
- def IsNEWCIBNPassPodAuth():
- global NEWCIBN_PASSPOD_AUTH
- return NEWCIBN_PASSPOD_AUTH
- def GetLoginDelay():
- global LOGIN_DELAY_SEC
- return LOGIN_DELAY_SEC
- app.SetGuildMarkPath("test")
- class ConnectingDialog(ui.ScriptWindow):
- def __init__(self):
- ui.ScriptWindow.__init__(self)
- self.__LoadDialog()
- self.eventTimeOver = lambda *arg: None
- self.eventExit = lambda *arg: None
- def __del__(self):
- ui.ScriptWindow.__del__(self)
- def __LoadDialog(self):
- try:
- PythonScriptLoader = ui.PythonScriptLoader()
- PythonScriptLoader.LoadScriptFile(self, "UIScript/ConnectingDialog.py")
- self.board = self.GetChild("board")
- self.message = self.GetChild("message")
- self.countdownMessage = self.GetChild("countdown_message")
- except:
- import exception
- exception.Abort("ConnectingDialog.LoadDialog.BindObject")
- def Open(self, waitTime):
- curTime = time.clock()
- self.endTime = curTime + waitTime
- self.Lock()
- self.SetCenterPosition()
- self.SetTop()
- self.Show()
- def Close(self):
- self.Unlock()
- self.Hide()
- def Destroy(self):
- self.Hide()
- self.ClearDictionary()
- def SetText(self, text):
- self.message.SetText(text)
- def SetCountDownMessage(self, waitTime):
- self.countdownMessage.SetText("%.0f%s" % (waitTime, localeInfo.SECOND))
- def SAFE_SetTimeOverEvent(self, event):
- self.eventTimeOver = ui.__mem_func__(event)
- def SAFE_SetExitEvent(self, event):
- self.eventExit = ui.__mem_func__(event)
- def OnUpdate(self):
- lastTime = max(0, self.endTime - time.clock())
- if 0 == lastTime:
- self.Close()
- self.eventTimeOver()
- else:
- self.SetCountDownMessage(self.endTime - time.clock())
- def OnPressExitKey(self):
- #self.eventExit()
- return TRUE
- class LoginWindow(ui.ScriptWindow):
- IS_TEST = net.IsTest()
- def __init__(self, stream):
- print "NEW LOGIN WINDOW ----------------------------------------------------------------------------"
- ui.ScriptWindow.__init__(self)
- net.SetPhaseWindow(net.PHASE_WINDOW_LOGIN, self)
- net.SetAccountConnectorHandler(self)
- if app.ENABLE_MULTI_LANGUAGE:
- self.languageList = ["en","de","ro","pl","tr"]
- self.matrixInputChanceCount = 0
- self.lastLoginTime = 0
- self.inputDialog = None
- self.connectingDialog = None
- self.stream=stream
- self.isNowCountDown=FALSE
- self.isStartError=FALSE
- self.xServerBoard = 0
- self.yServerBoard = 0
- self.loadingImage = None
- self.virtualKeyboard = None
- self.virtualKeyboardMode = "ALPHABET"
- self.virtualKeyboardIsUpper = FALSE
- def __del__(self):
- net.ClearPhaseWindow(net.PHASE_WINDOW_LOGIN, self)
- net.SetAccountConnectorHandler(0)
- ui.ScriptWindow.__del__(self)
- print "---------------------------------------------------------------------------- DELETE LOGIN WINDOW"
- def Open(self):
- ServerStateChecker.Create(self)
- print "LOGIN WINDOW OPEN ----------------------------------------------------------------------------"
- self.loginFailureMsgDict={
- #"DEFAULT" : localeInfo.LOGIN_FAILURE_UNKNOWN,
- "ALREADY" : localeInfo.LOGIN_FAILURE_ALREAY,
- "NOID" : localeInfo.LOGIN_FAILURE_NOT_EXIST_ID,
- "WRONGPWD" : localeInfo.LOGIN_FAILURE_WRONG_PASSWORD,
- "FULL" : localeInfo.LOGIN_FAILURE_TOO_MANY_USER,
- "SHUTDOWN" : localeInfo.LOGIN_FAILURE_SHUTDOWN,
- "REPAIR" : localeInfo.LOGIN_FAILURE_REPAIR_ID,
- "BLOCK" : localeInfo.LOGIN_FAILURE_BLOCK_ID,
- "WRONGMAT" : localeInfo.LOGIN_FAILURE_WRONG_MATRIX_CARD_NUMBER,
- "QUIT" : localeInfo.LOGIN_FAILURE_WRONG_MATRIX_CARD_NUMBER_TRIPLE,
- "BESAMEKEY" : localeInfo.LOGIN_FAILURE_BE_SAME_KEY,
- "NOTAVAIL" : localeInfo.LOGIN_FAILURE_NOT_AVAIL,
- "NOBILL" : localeInfo.LOGIN_FAILURE_NOBILL,
- "BLKLOGIN" : localeInfo.LOGIN_FAILURE_BLOCK_LOGIN,
- "WEBBLK" : localeInfo.LOGIN_FAILURE_WEB_BLOCK,
- "BADSCLID" : localeInfo.LOGIN_FAILURE_WRONG_SOCIALID,
- "AGELIMIT" : localeInfo.LOGIN_FAILURE_SHUTDOWN_TIME,
- "HWBANNED" : "Login from this computer has been blocked",
- }
- self.loginFailureFuncDict = {
- "WRONGPWD" : self.__DisconnectAndInputPassword,
- "WRONGMAT" : self.__DisconnectAndInputMatrix,
- "QUIT" : app.Exit,
- }
- if app.NEW_CLIENT_VERSION_CHECK:
- self.loginFailureMsgDict["WRONGVER"] = localeInfo.LOGIN_FAILURE_WRONG_VERSION
- self.loginFailureFuncDict["WRONGVER"] = app.Exit
- self.SetSize(wndMgr.GetScreenWidth(), wndMgr.GetScreenHeight())
- self.SetWindowName("LoginWindow")
- if not self.__LoadScript(uiScriptLocale.LOCALE_UISCRIPT_PATH + "LoginWindow.py"):
- dbg.TraceError("LoginWindow.Open - __LoadScript Error")
- return
- self.__LoadLoginInfo("loginInfo.xml")
- if app.loggined:
- self.loginFailureFuncDict = {
- "WRONGPWD" : app.Exit,
- "WRONGMAT" : app.Exit,
- "QUIT" : app.Exit,
- }
- if musicInfo.loginMusic != "":
- snd.SetMusicVolume(systemSetting.GetMusicVolume())
- snd.FadeInMusic("BGM/"+musicInfo.loginMusic)
- snd.SetSoundVolume(systemSetting.GetSoundVolume())
- # pevent key "[" "]"
- ime.AddExceptKey(91)
- ime.AddExceptKey(93)
- self.Show()
- global SKIP_LOGIN_PHASE
- if SKIP_LOGIN_PHASE:
- if self.isStartError:
- self.connectBoard.Hide()
- self.loginBoard.Hide()
- self.serverBoard.Hide()
- self.PopupNotifyMessage(localeInfo.LOGIN_CONNECT_FAILURE, self.__ExitGame)
- return
- if self.loginInfo:
- self.serverBoard.Hide()
- else:
- self.__RefreshServerList()
- self.__OpenServerBoard()
- else:
- connectingIP = self.stream.GetConnectAddr()
- if connectingIP:
- if app.USE_OPENID and not app.OPENID_TEST :
- self.__RefreshServerList()
- self.__OpenServerBoard()
- else:
- self.__OpenLoginBoard()
- if IsFullBackImage():
- self.GetChild("bg1").Hide()
- self.GetChild("bg2").Show()
- else:
- self.__RefreshServerList()
- self.__OpenServerBoard()
- app.ShowCursor()
- def Close(self):
- if self.connectingDialog:
- self.connectingDialog.Close()
- self.connectingDialog = None
- ServerStateChecker.Initialize(self)
- print "---------------------------------------------------------------------------- CLOSE LOGIN WINDOW "
- #
- # selectMusic이 없으면 BGM이 끊기므로 두개 다 체크한다.
- #
- if musicInfo.loginMusic != "" and musicInfo.selectMusic != "":
- snd.FadeOutMusic("BGM/"+musicInfo.loginMusic)
- ## NOTE : idEditLine와 pwdEditLine은 이벤트가 서로 연결 되어있어서
- ## Event를 강제로 초기화 해주어야만 합니다 - [levites]
- self.idEditLine.SetTabEvent(0)
- self.idEditLine.SetReturnEvent(0)
- self.pwdEditLine.SetReturnEvent(0)
- self.pwdEditLine.SetTabEvent(0)
- self.connectBoard = None
- self.AccountBoard = None
- self.AccEditBoard = None
- self.loginBoard = None
- self.idEditLine = None
- self.pwdEditLine = None
- self.inputDialog = None
- self.connectingDialog = None
- self.loadingImage = None
- self.serverBoard = None
- self.serverList = None
- self.channelList = None
- # RUNUP_MATRIX_AUTH
- self.matrixQuizBoard = None
- self.matrixAnswerInput = None
- self.matrixAnswerOK = None
- self.matrixAnswerCancel = None
- # RUNUP_MATRIX_AUTH_END
- # NEWCIBN_PASSPOD_AUTH
- self.passpodBoard = None
- self.passpodAnswerInput = None
- self.passpodAnswerOK = None
- self.passpodAnswerCancel = None
- # NEWCIBN_PASSPOD_AUTH_END
- self.VIRTUAL_KEY_ALPHABET_LOWERS = None
- self.VIRTUAL_KEY_ALPHABET_UPPERS = None
- self.VIRTUAL_KEY_SYMBOLS = None
- self.VIRTUAL_KEY_NUMBERS = None
- # VIRTUAL_KEYBOARD_BUG_FIX
- if self.virtualKeyboard:
- for keyIndex in xrange(0, VIRTUAL_KEYBOARD_NUM_KEYS+1):
- key = self.GetChild2("key_%d" % keyIndex)
- if key:
- key.SetEvent(None)
- self.GetChild("key_space").SetEvent(None)
- self.GetChild("key_backspace").SetEvent(None)
- self.GetChild("key_enter").SetEvent(None)
- self.GetChild("key_shift").SetToggleDownEvent(None)
- self.GetChild("key_shift").SetToggleUpEvent(None)
- self.GetChild("key_at").SetToggleDownEvent(None)
- self.GetChild("key_at").SetToggleUpEvent(None)
- self.virtualKeyboard = None
- self.KillFocus()
- self.Hide()
- self.stream.popupWindow.Close()
- self.loginFailureFuncDict=None
- ime.ClearExceptKey()
- app.HideCursor()
- def __SaveChannelInfo(self):
- try:
- file=open("channel.inf", "w")
- file.write("%d %d %d" % (self.__GetServerID(), self.__GetChannelID(), self.__GetRegionID()))
- except:
- print "LoginWindow.__SaveChannelInfo - SaveError"
- def __LoadChannelInfo(self):
- try:
- file=open("channel.inf")
- lines=file.readlines()
- if len(lines)>0:
- tokens=lines[0].split()
- selServerID=int(tokens[0])
- selChannelID=int(tokens[1])
- if len(tokens) == 3:
- regionID = int(tokens[2])
- return regionID, selServerID, selChannelID
- except:
- print "LoginWindow.__LoadChannelInfo - OpenError"
- return -1, -1, -1
- def __ExitGame(self):
- app.Exit()
- def SetIDEditLineFocus(self):
- if self.idEditLine != None:
- self.idEditLine.SetFocus()
- def SetPasswordEditLineFocus(self):
- if localeInfo.IsEUROPE():
- if self.idEditLine != None: #0000862: [M2EU] 로그인창 팝업 에러: 종료시 먼저 None 설정됨
- self.idEditLine.SetText("")
- self.idEditLine.SetFocus() #0000685: [M2EU] 아이디/비밀번호 유추 가능 버그 수정: 무조건 아이디로 포커스가 가게 만든다
- if self.pwdEditLine != None: #0000862: [M2EU] 로그인창 팝업 에러: 종료시 먼저 None 설정됨
- self.pwdEditLine.SetText("")
- else:
- if self.pwdEditLine != None:
- self.pwdEditLine.SetFocus()
- def OnEndCountDown(self):
- self.isNowCountDown = FALSE
- if localeInfo.IsBRAZIL():
- self.timeOutMsg = TRUE
- else:
- self.timeOutMsg = FALSE
- self.OnConnectFailure()
- def OnConnectFailure(self):
- if self.isNowCountDown:
- return
- snd.PlaySound("sound/ui/loginfail.wav")
- if self.connectingDialog:
- self.connectingDialog.Close()
- self.connectingDialog = None
- if app.loggined:
- self.PopupNotifyMessage(localeInfo.LOGIN_CONNECT_FAILURE, self.__ExitGame)
- else:
- self.PopupNotifyMessage(localeInfo.LOGIN_CONNECT_FAILURE, self.SetPasswordEditLineFocus)
- def OnHandShake(self):
- if not IsLoginDelay():
- snd.PlaySound("sound/ui/loginok.wav")
- self.PopupDisplayMessage(localeInfo.LOGIN_CONNECT_SUCCESS)
- def OnLoginStart(self):
- if not IsLoginDelay():
- self.PopupDisplayMessage(localeInfo.LOGIN_PROCESSING)
- def OnLoginFailure(self, error):
- if self.connectingDialog:
- self.connectingDialog.Close()
- self.connectingDialog = None
- try:
- loginFailureMsg = self.loginFailureMsgDict[error]
- except KeyError:
- if PASSPOD_MSG_DICT:
- try:
- loginFailureMsg = PASSPOD_MSG_DICT[error]
- except KeyError:
- loginFailureMsg = localeInfo.LOGIN_FAILURE_UNKNOWN + error
- else:
- loginFailureMsg = localeInfo.LOGIN_FAILURE_UNKNOWN + error
- #0000685: [M2EU] 아이디/비밀번호 유추 가능 버그 수정: 무조건 패스워드로 포커스가 가게 만든다
- loginFailureFunc=self.loginFailureFuncDict.get(error, self.SetPasswordEditLineFocus)
- if app.loggined:
- self.PopupNotifyMessage(loginFailureMsg, self.__ExitGame)
- else:
- self.PopupNotifyMessage(loginFailureMsg, loginFailureFunc)
- snd.PlaySound("sound/ui/loginfail.wav")
- def __DisconnectAndInputID(self):
- if self.connectingDialog:
- self.connectingDialog.Close()
- self.connectingDialog = None
- self.SetIDEditLineFocus()
- net.Disconnect()
- def __DisconnectAndInputPassword(self):
- if self.connectingDialog:
- self.connectingDialog.Close()
- self.connectingDialog = None
- self.SetPasswordEditLineFocus()
- net.Disconnect()
- def __DisconnectAndInputMatrix(self):
- if self.connectingDialog:
- self.connectingDialog.Close()
- self.connectingDialog = None
- self.stream.popupWindow.Close()
- self.matrixInputChanceCount -= 1
- if self.matrixInputChanceCount <= 0:
- self.__OnCloseInputDialog()
- elif self.inputDialog:
- self.inputDialog.Show()
- def __LoadScript(self, fileName):
- import dbg
- try:
- pyScrLoader = ui.PythonScriptLoader()
- pyScrLoader.LoadScriptFile(self, fileName)
- except:
- import exception
- exception.Abort("LoginWindow.__LoadScript.LoadObject")
- try:
- GetObject=self.GetChild
- self.serverBoard = GetObject("ServerBoard")
- self.serverList = GetObject("ServerList")
- self.channelList = GetObject("ChannelList")
- self.serverSelectButton = GetObject("ServerSelectButton")
- self.serverExitButton = GetObject("ServerExitButton")
- self.connectBoard = GetObject("ConnectBoard")
- self.loginBoard = GetObject("LoginBoard")
- self.idEditLine = GetObject("ID_EditLine")
- self.pwdEditLine = GetObject("Password_EditLine")
- self.serverInfo = GetObject("ConnectName")
- self.selectConnectButton = GetObject("SelectConnectButton")
- self.loginButton = GetObject("LoginButton")
- # self.loginExitButton = GetObject("LoginExitButton")
- ## ACCMANAGER
- self.acc1loginButton = GetObject("Acc1Login")
- self.acc2loginButton = GetObject("Acc2Login")
- self.acc3loginButton = GetObject("Acc3Login")
- self.acc4loginButton = GetObject("Acc4Login")
- self.LoginSaveButton = GetObject("LoginSaveButton")
- self.ACC1_LABEL = GetObject("ACC1_LABEL")
- self.ACC2_LABEL = GetObject("ACC2_LABEL")
- self.ACC3_LABEL = GetObject("ACC3_LABEL")
- self.ACC4_LABEL = GetObject("ACC4_LABEL")
- self.ACC1__LABEL = GetObject("ACC1__LABEL")
- self.ACC2__LABEL = GetObject("ACC2__LABEL")
- self.ACC3__LABEL = GetObject("ACC3__LABEL")
- self.ACC4__LABEL = GetObject("ACC4__LABEL")
- self.Acc1Del = GetObject("Acc1Del")
- self.Acc2Del = GetObject("Acc2Del")
- self.Acc3Del = GetObject("Acc3Del")
- self.Acc4Del = GetObject("Acc4Del")
- self.AccEditButton = GetObject("AccEditButton")
- self.AccFEditButton = GetObject("AccFEditButton")
- if app.ENABLE_MULTI_LANGUAGE:
- self.loginLanguageBoard = GetObject("LanguageBoard")
- if localeInfo.IsVIETNAM():
- self.checkButton = GetObject("CheckButton")
- self.checkButton.Down()
- # RUNUP_MATRIX_AUTH
- if IsRunupMatrixAuth():
- self.matrixQuizBoard = GetObject("RunupMatrixQuizBoard")
- self.matrixAnswerInput = GetObject("RunupMatrixAnswerInput")
- self.matrixAnswerOK = GetObject("RunupMatrixAnswerOK")
- self.matrixAnswerCancel = GetObject("RunupMatrixAnswerCancel")
- # RUNUP_MATRIX_AUTH_END
- # NEWCIBN_PASSPOD_AUTH
- if IsNEWCIBNPassPodAuth():
- self.passpodBoard = GetObject("NEWCIBN_PASSPOD_BOARD")
- self.passpodAnswerInput = GetObject("NEWCIBN_PASSPOD_INPUT")
- self.passpodAnswerOK = GetObject("NEWCIBN_PASSPOD_OK")
- self.passpodAnswerCancel= GetObject("NEWCIBN_PASSPOD_CANCEL")
- # NEWCIBN_PASSPOD_AUTH_END
- self.virtualKeyboard = self.GetChild2("VirtualKeyboard")
- self.AccountBoard = self.GetChild2("AccountBoard")
- self.AccEditBoard = self.GetChild2("AccEditBoard")
- 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])
- if localeInfo.IsBRAZIL():
- self.VIRTUAL_KEY_SYMBOLS_BR = Suffle(localeInfo.VIRTUAL_KEY_SYMBOLS_BR)
- else:
- self.VIRTUAL_KEY_SYMBOLS = Suffle(localeInfo.VIRTUAL_KEY_SYMBOLS)
- self.VIRTUAL_KEY_NUMBERS = Suffle(localeInfo.VIRTUAL_KEY_NUMBERS)
- self.__VirtualKeyboard_SetAlphabetMode()
- self.GetChild("key_space").SetEvent(lambda : self.__VirtualKeyboard_PressKey(' '))
- self.GetChild("key_backspace").SetEvent(lambda : self.__VirtualKeyboard_PressBackspace())
- self.GetChild("key_enter").SetEvent(lambda : self.__VirtualKeyboard_PressReturn())
- self.GetChild("key_shift").SetToggleDownEvent(lambda : self.__VirtualKeyboard_SetUpperMode())
- self.GetChild("key_shift").SetToggleUpEvent(lambda : self.__VirtualKeyboard_SetLowerMode())
- self.GetChild("key_at").SetToggleDownEvent(lambda : self.__VirtualKeyboard_SetSymbolMode())
- self.GetChild("key_at").SetToggleUpEvent(lambda : self.__VirtualKeyboard_SetAlphabetMode())
- except:
- import exception
- exception.Abort("LoginWindow.__LoadScript.BindObject")
- if self.IS_TEST:
- self.selectConnectButton.Hide()
- else:
- self.selectConnectButton.SetEvent(ui.__mem_func__(self.__OnClickSelectConnectButton))
- self.serverBoard.OnKeyUp = ui.__mem_func__(self.__ServerBoard_OnKeyUp)
- self.xServerBoard, self.yServerBoard = self.serverBoard.GetLocalPosition()
- self.serverSelectButton.SetEvent(ui.__mem_func__(self.__OnClickSelectServerButton))
- self.serverExitButton.SetEvent(ui.__mem_func__(self.__OnClickExitButton))
- self.loginButton.SetEvent(ui.__mem_func__(self.__OnClickLoginButton))
- # self.loginExitButton.SetEvent(ui.__mem_func__(self.__OnClickExitButton))
- self.serverList.SetEvent(ui.__mem_func__(self.__OnSelectServer))
- self.idEditLine.SetReturnEvent(ui.__mem_func__(self.pwdEditLine.SetFocus))
- self.idEditLine.SetTabEvent(ui.__mem_func__(self.pwdEditLine.SetFocus))
- self.pwdEditLine.SetReturnEvent(ui.__mem_func__(self.__OnClickLoginButton))
- self.pwdEditLine.SetTabEvent(ui.__mem_func__(self.idEditLine.SetFocus))
- ## ACCMANAGER
- self.acc1loginButton.SetEvent(ui.__mem_func__(self.__OnClickACC1LoginButton))
- self.acc2loginButton.SetEvent(ui.__mem_func__(self.__OnClickACC2LoginButton))
- self.acc3loginButton.SetEvent(ui.__mem_func__(self.__OnClickACC3LoginButton))
- self.acc4loginButton.SetEvent(ui.__mem_func__(self.__OnClickACC4LoginButton))
- self.LoginSaveButton.SetEvent(ui.__mem_func__(self.__OnClickLoginSaveButton))
- self.Acc1Del.SetEvent(ui.__mem_func__(self.__OnClickAcc1DelButton))
- self.Acc2Del.SetEvent(ui.__mem_func__(self.__OnClickAcc2DelButton))
- self.Acc3Del.SetEvent(ui.__mem_func__(self.__OnClickAcc3DelButton))
- self.Acc4Del.SetEvent(ui.__mem_func__(self.__OnClickAcc4DelButton))
- self.AccEditButton.SetEvent(ui.__mem_func__(self.__OnClickAccEditButton))
- self.AccFEditButton.SetEvent(ui.__mem_func__(self.__OnClickAccFEditButton))
- if app.ENABLE_MULTI_LANGUAGE:
- self.InitLanguageBoard()
- ## END ACCMANAGER
- # RUNUP_MATRIX_AUTH
- if IsRunupMatrixAuth():
- self.matrixAnswerOK.SAFE_SetEvent(self.__OnClickMatrixAnswerOK)
- self.matrixAnswerCancel.SAFE_SetEvent(self.__OnClickMatrixAnswerCancel)
- self.matrixAnswerInput.SAFE_SetReturnEvent(self.__OnClickMatrixAnswerOK)
- # RUNUP_MATRIX_AUTH_END
- # NEWCIBN_PASSPOD_AUTH
- if IsNEWCIBNPassPodAuth():
- self.passpodAnswerOK.SAFE_SetEvent(self.__OnClickNEWCIBNPasspodAnswerOK)
- self.passpodAnswerCancel.SAFE_SetEvent(self.__OnClickNEWCIBNPasspodAnswerCancel)
- self.passpodAnswerInput.SAFE_SetReturnEvent(self.__OnClickNEWCIBNPasspodAnswerOK)
- # NEWCIBN_PASSPOD_AUTH_END
- if IsFullBackImage():
- self.GetChild("bg1").Show()
- self.GetChild("bg2").Hide()
- return 1
- if app.ENABLE_MULTI_LANGUAGE:
- def InitLanguageBoard(self):
- self.Y_START = 7
- self.X_SPACE = self.Y_START
- self.WIDTH_FLAG = 36
- self.typeButtonList, groupButtonDict = [], {}
- for i in xrange(len(self.languageList)):
- bLanguage = self.languageList[i]
- groupButtonDict[i] = ui.RadioButton()
- groupButtonDict[i].SetParent(self.loginLanguageBoard)
- groupButtonDict[i].SetPosition(self.X_SPACE, 8)
- groupButtonDict[i].SetUpVisual("d:/ymir work/ui/language_system/login_language/flag_%s_norm.tga" % bLanguage)
- groupButtonDict[i].SetOverVisual("d:/ymir work/ui/language_system/login_language/flag_%s_over.tga" % bLanguage)
- groupButtonDict[i].SetDownVisual("d:/ymir work/ui/language_system/login_language/flag_%s_down.tga" % bLanguage)
- groupButtonDict[i].SAFE_SetEvent(self.OnSelectLanguageButton, bLanguage)
- groupButtonDict[i].Show()
- self.typeButtonList.append(groupButtonDict[i])
- self.X_SPACE += self.WIDTH_FLAG
- self.loginLanguageBoard.SetSize(self.Y_START + (self.WIDTH_FLAG * len(groupButtonDict)) + 4, self.loginLanguageBoard.GetHeight())
- self.ClickRadioButton(self.typeButtonList, self.getLanguage())
- def getLanguageAsIndex(self, bLanguage):
- for i in xrange(len(self.languageList)):
- if self.languageList[i] == bLanguage:
- return i
- def getLanguage(self):
- return app.GetLanguage()
- def setLanguage(self, language):
- self.language = language
- def ClickRadioButton(self, buttonList, buttonIndex):
- try:
- selButton = buttonList[buttonIndex]
- except IndexError:
- return
- for eachButton in buttonList:
- eachButton.SetUp()
- selButton.Down()
- def OnSelectLanguageButton(self, bLanguage):
- if bLanguage == "en":
- file = open("locale.cfg", "w")
- file.write("10022 1250 en")
- file.close()
- dbg.LogBox("The client will restart.")
- os.system('start Nemesis-starter.exe')
- app.Exit()
- elif bLanguage == "de":
- file = open("locale.cfg", "w")
- file.write("10022 1250 de")
- file.close()
- dbg.LogBox("The client will restart.")
- os.system('start Nemesis-starter.exe')
- app.Exit()
- elif bLanguage == "ro":
- file = open("locale.cfg", "w")
- file.write("10022 1250 ro")
- file.close()
- dbg.LogBox("The client will restart.")
- os.system('start Nemesis-starter.exe')
- app.Exit()
- elif bLanguage == "pl":
- file = open("locale.cfg", "w")
- file.write("10022 1250 pl")
- file.close()
- dbg.LogBox("The client will restart.")
- os.system('start Nemesis-starter.exe')
- app.Exit()
- elif bLanguage == "tr":
- file = open("locale.cfg", "w")
- file.write("10022 1250 tr")
- file.close()
- dbg.LogBox("The client will restart.")
- os.system('start Nemesis-starter.exe')
- app.Exit()
- def __VirtualKeyboard_SetKeys(self, keyCodes):
- uiDefFontBackup = localeInfo.UI_DEF_FONT
- localeInfo.UI_DEF_FONT = localeInfo.UI_DEF_FONT_LARGE
- keyIndex = 1
- for keyCode in keyCodes:
- key = self.GetChild2("key_%d" % keyIndex)
- if key:
- key.SetEvent(lambda x=keyCode: self.__VirtualKeyboard_PressKey(x))
- key.SetText(keyCode)
- key.ButtonText.SetFontColor(0, 0, 0)
- keyIndex += 1
- for keyIndex in xrange(keyIndex, VIRTUAL_KEYBOARD_NUM_KEYS+1):
- key = self.GetChild2("key_%d" % keyIndex)
- if key:
- key.SetEvent(lambda x=' ': self.__VirtualKeyboard_PressKey(x))
- key.SetText(' ')
- localeInfo.UI_DEF_FONT = uiDefFontBackup
- def __VirtualKeyboard_PressKey(self, code):
- ime.PasteString(code)
- #if self.virtualKeyboardMode == "ALPHABET" and self.virtualKeyboardIsUpper:
- # self.__VirtualKeyboard_SetLowerMode()
- def __VirtualKeyboard_PressBackspace(self):
- ime.PasteBackspace()
- def __VirtualKeyboard_PressReturn(self):
- ime.PasteReturn()
- def __VirtualKeyboard_SetUpperMode(self):
- self.virtualKeyboardIsUpper = TRUE
- if self.virtualKeyboardMode == "ALPHABET":
- self.__VirtualKeyboard_SetKeys(self.VIRTUAL_KEY_ALPHABET_UPPERS)
- elif self.virtualKeyboardMode == "NUMBER":
- if localeInfo.IsBRAZIL():
- self.__VirtualKeyboard_SetKeys(self.VIRTUAL_KEY_SYMBOLS_BR)
- else:
- self.__VirtualKeyboard_SetKeys(self.VIRTUAL_KEY_SYMBOLS)
- else:
- self.__VirtualKeyboard_SetKeys(self.VIRTUAL_KEY_NUMBERS)
- def __VirtualKeyboard_SetLowerMode(self):
- self.virtualKeyboardIsUpper = FALSE
- if self.virtualKeyboardMode == "ALPHABET":
- self.__VirtualKeyboard_SetKeys(self.VIRTUAL_KEY_ALPHABET_LOWERS)
- elif self.virtualKeyboardMode == "NUMBER":
- self.__VirtualKeyboard_SetKeys(self.VIRTUAL_KEY_NUMBERS)
- else:
- if localeInfo.IsBRAZIL():
- self.__VirtualKeyboard_SetKeys(self.VIRTUAL_KEY_SYMBOLS_BR)
- else:
- self.__VirtualKeyboard_SetKeys(self.VIRTUAL_KEY_SYMBOLS)
- def __VirtualKeyboard_SetAlphabetMode(self):
- self.virtualKeyboardIsUpper = FALSE
- self.virtualKeyboardMode = "ALPHABET"
- self.__VirtualKeyboard_SetKeys(self.VIRTUAL_KEY_ALPHABET_LOWERS)
- def __VirtualKeyboard_SetNumberMode(self):
- self.virtualKeyboardIsUpper = FALSE
- self.virtualKeyboardMode = "NUMBER"
- self.__VirtualKeyboard_SetKeys(self.VIRTUAL_KEY_NUMBERS)
- def __VirtualKeyboard_SetSymbolMode(self):
- self.virtualKeyboardIsUpper = FALSE
- self.virtualKeyboardMode = "SYMBOL"
- if localeInfo.IsBRAZIL():
- self.__VirtualKeyboard_SetKeys(self.VIRTUAL_KEY_SYMBOLS_BR)
- else:
- self.__VirtualKeyboard_SetKeys(self.VIRTUAL_KEY_SYMBOLS)
- def Connect(self, id, pwd):
- if constInfo.SEQUENCE_PACKET_ENABLE:
- net.SetPacketSequenceMode()
- if IsLoginDelay():
- loginDelay = GetLoginDelay()
- self.connectingDialog = ConnectingDialog()
- self.connectingDialog.Open(loginDelay)
- self.connectingDialog.SAFE_SetTimeOverEvent(self.OnEndCountDown)
- self.connectingDialog.SAFE_SetExitEvent(self.OnPressExitKey)
- self.isNowCountDown = TRUE
- else:
- self.stream.popupWindow.Close()
- self.stream.popupWindow.Open(localeInfo.LOGIN_CONNETING, self.SetPasswordEditLineFocus, localeInfo.UI_CANCEL)
- self.stream.SetLoginInfo(id, pwd)
- self.stream.Connect()
- ## ACCMANAGER
- def __OnClickAccEditButton(self):
- self.AccEditBoard.Show()
- self.AccountBoard.Hide()
- self.__LoadACCNames()
- def __OnClickAccFEditButton(self):
- self.AccEditBoard.Hide()
- self.AccountBoard.Show()
- self.__LoadACCNames()
- def __LoadACCNames(self):
- fd = open( "Settings/loginsetting1.cfg" )
- login1 = fd.readline()
- login1.replace( "\n", "" )
- fd.close()
- fd = open( "Settings/loginsetting2.cfg" )
- login2 = fd.readline()
- login2.replace( "\n", "" )
- fd.close()
- fd = open( "Settings/loginsetting3.cfg" )
- login3 = fd.readline()
- login3.replace( "\n", "" )
- fd.close()
- fd = open( "Settings/loginsetting4.cfg" )
- login4 = fd.readline()
- login4.replace( "\n", "" )
- fd.close()
- if login1 != "":
- self.ACC1__LABEL.SetText(login1)
- self.ACC1_LABEL.SetText(login1)
- if login2 != "":
- self.ACC2__LABEL.SetText(login2)
- self.ACC2_LABEL.SetText(login2)
- if login3 != "":
- self.ACC3__LABEL.SetText(login3)
- self.ACC3_LABEL.SetText(login3)
- if login4 != "":
- self.ACC4__LABEL.SetText(login4)
- self.ACC4_LABEL.SetText(login4)
- def __LoadACCInfos(self, accid):
- import linecache
- login = linecache.getline("Settings/loginsetting" + str(accid) + ".cfg", 1)
- password = linecache.getline("Settings/loginsetting" + str(accid) + ".cfg", 2)
- login = login.replace("\n", "")
- password = password.replace("\n", "")
- if login != "" and password != "":
- self.Connect(login, password)
- else:
- self.PopupNotifyMessage("In diesem Slot ist kein Account gespeichert!")
- def __OnClickACC1LoginButton(self):
- self.__LoadACCInfos(1)
- def __OnClickACC2LoginButton(self):
- self.__LoadACCInfos(2)
- def __OnClickACC3LoginButton(self):
- self.__LoadACCInfos(3)
- def __OnClickACC4LoginButton(self):
- self.__LoadACCInfos(4)
- def __OnClickLoginSaveButton(self):
- id = self.idEditLine.GetText()
- pwd = self.pwdEditLine.GetText()
- fd = open( "Settings/loginsetting1.cfg" )
- login1 = fd.readline()
- login1.replace( "\n", "" )
- fd.close()
- fd = open( "Settings/loginsetting2.cfg" )
- login2 = fd.readline()
- login2.replace( "\n", "" )
- fd.close()
- fd = open( "Settings/loginsetting3.cfg" )
- login3 = fd.readline()
- login3.replace( "\n", "" )
- fd.close()
- fd = open( "Settings/loginsetting4.cfg" )
- login4 = fd.readline()
- login4.replace( "\n", "" )
- fd.close()
- if login1 == "":
- slot = 1
- elif login2 == "":
- slot = 2
- elif login3 == "":
- slot = 3
- elif login4 == "":
- slot = 4
- else:
- self.PopupNotifyMessage("Es ist kein Slot zum speichern frei!")
- return
- f = open("Settings/loginsetting" + str(slot) + ".cfg", "w")
- f.write (id +"\n")
- f.write (pwd)
- f.close()
- self.PopupNotifyMessage("Deine Login-Daten wurden gespeichert!")
- self.__LoadACCNames()
- def __OnClickAcc1DelButton(self):
- f = open("Settings/loginsetting1.cfg", "w")
- f.write ("")
- f.close()
- self.ACC1__LABEL.SetText("ACC1 - Leer")
- self.ACC1_LABEL.SetText("ACC1 - Leer")
- self.__LoadACCNames()
- def __OnClickAcc2DelButton(self):
- f = open("Settings/loginsetting2.cfg", "w")
- f.write ("")
- f.close()
- self.ACC2__LABEL.SetText("ACC2 - Leer")
- self.ACC2_LABEL.SetText("ACC2 - Leer")
- self.__LoadACCNames()
- def __OnClickAcc3DelButton(self):
- f = open("Settings/loginsetting3.cfg", "w")
- f.write ("")
- f.close()
- self.ACC3__LABEL.SetText("ACC3 - Leer")
- self.ACC3_LABEL.SetText("ACC3 - Leer")
- self.__LoadACCNames()
- def __OnClickAcc4DelButton(self):
- f = open("Settings/loginsetting4.cfg", "w")
- f.write ("")
- f.close()
- self.ACC4__LABEL.SetText("ACC4 - Leer")
- self.ACC4_LABEL.SetText("ACC4 - Leer")
- self.__LoadACCNames()
- def __OnClickExitButton(self):
- self.stream.SetPhaseWindow(0)
- def __SetServerInfo(self, name):
- net.SetServerInfo(name.strip())
- self.serverInfo.SetText(name)
- def __LoadLoginInfo(self, loginInfoFileName):
- try:
- loginInfo={}
- execfile(loginInfoFileName, loginInfo)
- except IOError:
- print(\
- "자동 로그인을 하시려면" + loginInfoFileName + "파일을 작성해주세요\n"\
- "\n"\
- "내용:\n"\
- "================================================================\n"\
- "addr=주소\n"\
- "port=포트\n"\
- "id=아이디\n"\
- "pwd=비밀번호\n"\
- "slot=캐릭터 선택 인덱스 (없거나 -1이면 자동 선택 안함)\n"\
- "autoLogin=자동 접속 여부\n"
- "autoSelect=자동 접속 여부\n"
- "locale=(ymir) LC_Ymir 일경우 ymir로 작동. 지정하지 않으면 korea로 작동\n"
- );
- id=loginInfo.get("id", "")
- pwd=loginInfo.get("pwd", "")
- if self.IS_TEST:
- try:
- addr=loginInfo["addr"]
- port=loginInfo["port"]
- account_addr=addr
- account_port=port
- net.SetMarkServer(addr, port)
- self.__SetServerInfo(locale.CHANNEL_TEST_SERVER_ADDR % (addr, port))
- except:
- try:
- addr=serverInfo.TESTADDR["ip"]
- port=serverInfo.TESTADDR["tcp_port"]
- net.SetMarkServer(addr, port)
- self.__SetServerInfo(locale.CHANNEL_TEST_SERVER)
- except:
- import exception
- exception.Abort("LoginWindow.__LoadLoginInfo - 테스트서버 주소가 없습니다")
- else:
- addr=loginInfo.get("addr", "")
- port=loginInfo.get("port", 0)
- account_addr=loginInfo.get("account_addr", addr)
- account_port=loginInfo.get("account_port", port)
- locale = loginInfo.get("locale", "")
- if addr and port:
- net.SetMarkServer(addr, port)
- if locale == "ymir" :
- net.SetServerInfo("천마 서버")
- self.serverInfo.SetText("Y:"+addr+":"+str(port))
- else:
- net.SetServerInfo(addr+":"+str(port))
- self.serverInfo.SetText("K:"+addr+":"+str(port))
- slot=loginInfo.get("slot", 0)
- isAutoLogin=loginInfo.get("auto", 0)
- isAutoLogin=loginInfo.get("autoLogin", 0)
- isAutoSelect=loginInfo.get("autoSelect", 0)
- self.stream.SetCharacterSlot(slot)
- self.stream.SetConnectInfo(addr, port, account_addr, account_port)
- self.stream.isAutoLogin=isAutoLogin
- self.stream.isAutoSelect=isAutoSelect
- self.id = None
- self.pwd = None
- self.loginnedServer = None
- self.loginnedChannel = None
- app.loggined = FALSE
- self.loginInfo = loginInfo
- if self.id and self.pwd:
- app.loggined = TRUE
- if isAutoLogin:
- self.Connect(id, pwd)
- print "=================================================================================="
- print "자동 로그인: %s - %s:%d %s" % (loginInfoFileName, addr, port, id)
- print "=================================================================================="
- def PopupDisplayMessage(self, msg):
- self.stream.popupWindow.Close()
- self.stream.popupWindow.Open(msg)
- def PopupNotifyMessage(self, msg, func=0):
- if not func:
- func=self.EmptyFunc
- self.stream.popupWindow.Close()
- self.stream.popupWindow.Open(msg, func, localeInfo.UI_OK)
- # RUNUP_MATRIX_AUTH
- def BINARY_OnRunupMatrixQuiz(self, quiz):
- if not IsRunupMatrixAuth():
- return
- id = self.GetChild("RunupMatrixID")
- id.SetText(self.idEditLine.GetText())
- code = self.GetChild("RunupMatrixCode")
- code.SetText("".join(["[%c,%c]" % (quiz[i], quiz[i+1]) for i in xrange(0, len(quiz), 2)]))
- self.stream.popupWindow.Close()
- self.serverBoard.Hide()
- self.connectBoard.Hide()
- self.loginBoard.Hide()
- self.matrixQuizBoard.Show()
- self.matrixAnswerInput.SetFocus()
- def __OnClickMatrixAnswerOK(self):
- answer = self.matrixAnswerInput.GetText()
- print "matrix_quiz.ok"
- net.SendRunupMatrixCardPacket(answer)
- self.matrixQuizBoard.Hide()
- self.stream.popupWindow.Close()
- self.stream.popupWindow.Open("WAITING FOR MATRIX AUTHENTICATION",
- self.__OnClickMatrixAnswerCancel,
- localeInfo.UI_CANCEL)
- def __OnClickMatrixAnswerCancel(self):
- print "matrix_quiz.cancel"
- if self.matrixQuizBoard:
- self.matrixQuizBoard.Hide()
- if self.connectBoard:
- self.connectBoard.Show()
- if self.loginBoard:
- self.loginBoard.Show()
- if self.AccountBoard:
- self.AccountBoard.Show()
- self.__LoadACCNames()
- if self.AccEditBoard:
- self.AccEditBoard.Show()
- # RUNUP_MATRIX_AUTH_END
- # NEWCIBN_PASSPOD_AUTH
- def BINARY_OnNEWCIBNPasspodRequest(self):
- if not IsNEWCIBNPassPodAuth():
- return
- if self.connectingDialog:
- self.connectingDialog.Close()
- self.connectingDialog = None
- self.stream.popupWindow.Close()
- self.serverBoard.Hide()
- self.connectBoard.Hide()
- self.AccountBoard.Hide()
- self.AccEditBoard.Hide()
- self.loginBoard.Hide()
- self.passpodBoard.Show()
- self.passpodAnswerInput.SetFocus()
- def BINARY_OnNEWCIBNPasspodFailure(self):
- if not IsNEWCIBNPassPodAuth():
- return
- def __OnClickNEWCIBNPasspodAnswerOK(self):
- answer = self.passpodAnswerInput.GetText()
- print "passpod.ok"
- net.SendNEWCIBNPasspodAnswerPacket(answer)
- self.passpodAnswerInput.SetText("")
- self.passpodBoard.Hide()
- self.stream.popupWindow.Close()
- self.stream.popupWindow.Open(localeInfo.WAIT_FOR_PASSPOD,
- self.__OnClickNEWCIBNPasspodAnswerCancel,
- localeInfo.UI_CANCEL)
- def __OnClickNEWCIBNPasspodAnswerCancel(self):
- print "passpod.cancel"
- if self.passpodBoard:
- self.passpodBoard.Hide()
- if self.connectBoard:
- self.connectBoard.Show()
- if self.AccountBoard:
- self.AccountBoard.Show()
- self.__LoadACCNames()
- if self.loginBoard:
- self.loginBoard.Show()
- # NEWCIBN_PASSPOD_AUTH_END
- def OnMatrixCard(self, row1, row2, row3, row4, col1, col2, col3, col4):
- if self.connectingDialog:
- self.connectingDialog.Close()
- self.connectingDialog = None
- self.matrixInputChanceCount = 3
- self.stream.popupWindow.Close()
- # CHINA_MATRIX_CARD_BUG_FIX
- ## A~Z 까지 26 이내의 값이 들어있어야만 한다.
- ## Python Exception Log 에서 그 이상의 값이 들어있어서 에러 방지
- ## 헌데 왜 한국쪽 로그에서 이게 활용되는지는 모르겠음
- row1 = min(30, row1)
- row2 = min(30, row2)
- row3 = min(30, row3)
- row4 = min(30, row4)
- # END_OF_CHINA_MATRIX_CARD_BUG_FIX
- row1 = chr(row1 + ord('A'))
- row2 = chr(row2 + ord('A'))
- row3 = chr(row3 + ord('A'))
- row4 = chr(row4 + ord('A'))
- col1 = col1 + 1
- col2 = col2 + 1
- col3 = col3 + 1
- col4 = col4 + 1
- inputDialog = uiCommon.InputDialogWithDescription2()
- inputDialog.SetMaxLength(8)
- inputDialog.SetAcceptEvent(ui.__mem_func__(self.__OnAcceptMatrixCardData))
- inputDialog.SetCancelEvent(ui.__mem_func__(self.__OnCancelMatrixCardData))
- inputDialog.SetTitle(localeInfo.INPUT_MATRIX_CARD_TITLE)
- inputDialog.SetDescription1(localeInfo.INPUT_MATRIX_CARD_NUMBER)
- inputDialog.SetDescription2("%c%d %c%d %c%d %c%d" % (row1, col1,
- row2, col2,
- row3, col3,
- row4, col4))
- inputDialog.Open()
- self.inputDialog = inputDialog
- def __OnAcceptMatrixCardData(self):
- text = self.inputDialog.GetText()
- net.SendChinaMatrixCardPacket(text)
- if self.inputDialog:
- self.inputDialog.Hide()
- self.PopupNotifyMessage(localeInfo.LOGIN_PROCESSING)
- return TRUE
- def __OnCancelMatrixCardData(self):
- self.SetPasswordEditLineFocus()
- self.__OnCloseInputDialog()
- self.__DisconnectAndInputPassword()
- return TRUE
- def __OnCloseInputDialog(self):
- if self.inputDialog:
- self.inputDialog.Close()
- self.inputDialog = None
- return TRUE
- def OnPressExitKey(self):
- self.stream.popupWindow.Close()
- self.stream.SetPhaseWindow(0)
- return TRUE
- def OnExit(self):
- self.stream.popupWindow.Close()
- self.stream.popupWindow.Open(localeInfo.LOGIN_FAILURE_WRONG_MATRIX_CARD_NUMBER_TRIPLE, app.Exit, localeInfo.UI_OK)
- def OnUpdate(self):
- ServerStateChecker.Update()
- def EmptyFunc(self):
- pass
- #####################################################################################
- def __ServerBoard_OnKeyUp(self, key):
- if self.serverBoard.IsShow():
- if app.DIK_RETURN==key:
- self.__OnClickSelectServerButton()
- return TRUE
- def __GetRegionID(self):
- return 0
- def __GetServerID(self):
- return self.serverList.GetSelectedItem()
- def __GetChannelID(self):
- return self.channelList.GetSelectedItem()
- # SEVER_LIST_BUG_FIX
- def __ServerIDToServerIndex(self, regionID, targetServerID):
- try:
- regionDict = serverInfo.REGION_DICT[regionID]
- except KeyError:
- return -1
- retServerIndex = 0
- for eachServerID, regionDataDict in regionDict.items():
- if eachServerID == targetServerID:
- return retServerIndex
- retServerIndex += 1
- return -1
- def __ChannelIDToChannelIndex(self, channelID):
- return channelID - 1
- # END_OF_SEVER_LIST_BUG_FIX
- def __OpenServerBoard(self):
- loadRegionID, loadServerID, loadChannelID = self.__LoadChannelInfo()
- serverIndex = self.__ServerIDToServerIndex(loadRegionID, loadServerID)
- channelIndex = self.__ChannelIDToChannelIndex(loadChannelID)
- # RUNUP_MATRIX_AUTH
- if IsRunupMatrixAuth():
- self.matrixQuizBoard.Hide()
- # RUNUP_MATRIX_AUTH_END
- # NEWCIBN_PASSPOD_AUTH
- if IsNEWCIBNPassPodAuth():
- self.passpodBoard.Hide()
- # NEWCIBN_PASSPOD_AUTH_END
- self.serverList.SelectItem(serverIndex)
- if localeInfo.IsEUROPE():
- self.channelList.SelectItem(app.GetRandom(0, self.channelList.GetItemCount()))
- else:
- if channelIndex >= 0:
- self.channelList.SelectItem(channelIndex)
- ## Show/Hide 코드에 문제가 있어서 임시 - [levites]
- self.serverBoard.SetPosition(self.xServerBoard, self.yServerBoard)
- self.serverBoard.Show()
- self.connectBoard.Hide()
- self.loginBoard.Hide()
- self.AccountBoard.Hide()
- self.AccEditBoard.Hide()
- if self.virtualKeyboard:
- self.virtualKeyboard.Hide()
- if app.loggined and not SKIP_LOGIN_PHASE_SUPPORT_CHANNEL:
- self.serverList.SelectItem(self.loginnedServer-1)
- self.channelList.SelectItem(self.loginnedChannel-1)
- self.__OnClickSelectServerButton()
- def __OpenLoginBoard(self):
- self.serverExitButton.SetEvent(ui.__mem_func__(self.__OnClickExitServerButton))
- self.serverExitButton.SetText(localeInfo.UI_CLOSE)
- # RUNUP_MATRIX_AUTH
- if IsRunupMatrixAuth():
- self.matrixQuizBoard.Hide()
- # RUNUP_MATRIX_AUTH_END
- # NEWCIBN_PASSPOD_AUTH
- if IsNEWCIBNPassPodAuth():
- self.passpodBoard.Hide()
- # NEWCIBN_PASSPOD_AUTH_END
- self.serverBoard.SetPosition(self.xServerBoard, wndMgr.GetScreenHeight())
- self.serverBoard.Hide()
- if self.virtualKeyboard:
- self.virtualKeyboard.Show()
- if app.loggined:
- self.Connect(self.id, self.pwd)
- self.connectBoard.Hide()
- self.AccountBoard.Hide()
- self.AccEditBoard.Hide()
- self.loginBoard.Hide()
- elif not self.stream.isAutoLogin:
- self.connectBoard.Show()
- self.loginBoard.Show()
- self.AccountBoard.Show()
- self.__LoadACCNames()
- ## if users have the login infomation, then don't initialize.2005.9 haho
- if self.idEditLine == None:
- self.idEditLine.SetText("")
- if self.pwdEditLine == None:
- self.pwdEditLine.SetText("")
- self.idEditLine.SetFocus()
- global SKIP_LOGIN_PHASE
- if SKIP_LOGIN_PHASE:
- if not self.loginInfo:
- self.connectBoard.Hide()
- def __OnSelectRegionGroup(self):
- self.__RefreshServerList()
- def __OnSelectSettlementArea(self):
- # SEVER_LIST_BUG_FIX
- regionID = self.__GetRegionID()
- serverID = self.serverListOnRegionBoard.GetSelectedItem()
- serverIndex = self.__ServerIDToServerIndex(regionID, serverID)
- self.serverList.SelectItem(serverIndex)
- # END_OF_SEVER_LIST_BUG_FIX
- self.__OnSelectServer()
- def __RefreshServerList(self):
- regionID = self.__GetRegionID()
- if not serverInfo.REGION_DICT.has_key(regionID):
- return
- self.serverList.ClearItem()
- regionDict = serverInfo.REGION_DICT[regionID]
- # SEVER_LIST_BUG_FIX
- visible_index = 1
- for id, regionDataDict in regionDict.items():
- name = regionDataDict.get("name", "noname")
- if localeInfo.IsBRAZIL() or localeInfo.IsCANADA():
- self.serverList.InsertItem(id, "%s" % (name))
- else:
- if localeInfo.IsCIBN10():
- if name[0] == "#":
- self.serverList.InsertItem(-1, " %s" % (name[1:]))
- else:
- self.serverList.InsertItem(id, " %s" % (name))
- visible_index += 1
- else:
- try:
- server_id = serverInfo.SERVER_ID_DICT[id]
- except:
- server_id = visible_index
- self.serverList.InsertItem(id, " %02d. %s" % (int(server_id), name))
- visible_index += 1
- # END_OF_SEVER_LIST_BUG_FIX
- def __OnSelectServer(self):
- self.__OnCloseInputDialog()
- self.__RequestServerStateList()
- self.__RefreshServerStateList()
- def __RequestServerStateList(self):
- regionID = self.__GetRegionID()
- serverID = self.__GetServerID()
- try:
- channelDict = serverInfo.REGION_DICT[regionID][serverID]["channel"]
- except:
- print " __RequestServerStateList - serverInfo.REGION_DICT(%d, %d)" % (regionID, serverID)
- return
- ServerStateChecker.Initialize();
- for id, channelDataDict in channelDict.items():
- key=channelDataDict["key"]
- ip=channelDataDict["ip"]
- udp_port=channelDataDict["udp_port"]
- ServerStateChecker.AddChannel(key, ip, udp_port)
- ServerStateChecker.Request()
- def __RefreshServerStateList(self):
- regionID = self.__GetRegionID()
- serverID = self.__GetServerID()
- bakChannelID = self.channelList.GetSelectedItem()
- self.channelList.ClearItem()
- try:
- channelDict = serverInfo.REGION_DICT[regionID][serverID]["channel"]
- except:
- print " __RequestServerStateList - serverInfo.REGION_DICT(%d, %d)" % (regionID, serverID)
- return
- for channelID, channelDataDict in channelDict.items():
- channelName = channelDataDict["name"]
- channelState = channelDataDict["state"]
- self.channelList.InsertItem(channelID, " %s %s" % (channelName, channelState))
- self.channelList.SelectItem(bakChannelID-1)
- def __GetChannelName(self, regionID, selServerID, selChannelID):
- try:
- return serverInfo.REGION_DICT[regionID][selServerID]["channel"][selChannelID]["name"]
- except KeyError:
- if 9==selChannelID:
- return localeInfo.CHANNEL_PVP
- else:
- return localeInfo.CHANNEL_NORMAL % (selChannelID)
- def NotifyChannelState(self, addrKey, state):
- try:
- stateName=serverInfo.STATE_DICT[state]
- except:
- stateName=serverInfo.STATE_NONE
- regionID=self.__GetRegionID()
- serverID=self.__GetServerID()
- channelID=addrKey%10
- try:
- serverInfo.REGION_DICT[regionID][serverID]["channel"][channelID]["state"] = stateName
- self.__RefreshServerStateList()
- except:
- import exception
- exception.Abort(localeInfo.CHANNEL_NOT_FIND_INFO)
- def __OnClickExitServerButton(self):
- print "exit server"
- self.__OpenLoginBoard()
- if IsFullBackImage():
- self.GetChild("bg1").Hide()
- self.GetChild("bg2").Show()
- def __OnClickSelectRegionButton(self):
- regionID = self.__GetRegionID()
- serverID = self.__GetServerID()
- if (not serverInfo.REGION_DICT.has_key(regionID)):
- self.PopupNotifyMessage(localeInfo.CHANNEL_SELECT_REGION)
- return
- if (not serverInfo.REGION_DICT[regionID].has_key(serverID)):
- self.PopupNotifyMessage(localeInfo.CHANNEL_SELECT_SERVER)
- return
- self.__SaveChannelInfo()
- self.serverExitButton.SetEvent(ui.__mem_func__(self.__OnClickExitServerButton))
- self.serverExitButton.SetText(localeInfo.UI_CLOSE)
- self.__RefreshServerList()
- self.__OpenServerBoard()
- def __OnClickSelectServerButton(self):
- if IsFullBackImage():
- self.GetChild("bg1").Hide()
- self.GetChild("bg2").Show()
- regionID = self.__GetRegionID()
- serverID = self.__GetServerID()
- channelID = self.__GetChannelID()
- if (not serverInfo.REGION_DICT.has_key(regionID)):
- self.PopupNotifyMessage(localeInfo.CHANNEL_SELECT_REGION)
- return
- if (not serverInfo.REGION_DICT[regionID].has_key(serverID)):
- self.PopupNotifyMessage(localeInfo.CHANNEL_SELECT_SERVER)
- return
- try:
- channelDict = serverInfo.REGION_DICT[regionID][serverID]["channel"]
- except KeyError:
- return
- try:
- state = channelDict[channelID]["state"]
- except KeyError:
- self.PopupNotifyMessage(localeInfo.CHANNEL_SELECT_CHANNEL)
- return
- # 상태가 FULL 과 같으면 진입 금지
- if state == serverInfo.STATE_DICT[3]:
- self.PopupNotifyMessage(localeInfo.CHANNEL_NOTIFY_FULL)
- return
- self.__SaveChannelInfo()
- try:
- serverName = serverInfo.REGION_DICT[regionID][serverID]["name"]
- channelName = serverInfo.REGION_DICT[regionID][serverID]["channel"][channelID]["name"]
- addrKey = serverInfo.REGION_DICT[regionID][serverID]["channel"][channelID]["key"]
- if "천마 서버" == serverName:
- app.ForceSetLocale("ymir", "locale/ymir")
- elif "쾌도 서버" == serverName:
- app.ForceSetLocale("we_korea", "locale/we_korea")
- except:
- print " ERROR __OnClickSelectServerButton(%d, %d, %d)" % (regionID, serverID, channelID)
- serverName = localeInfo.CHANNEL_EMPTY_SERVER
- channelName = localeInfo.CHANNEL_NORMAL % channelID
- self.__SetServerInfo("%s, %s " % (serverName, channelName))
- try:
- ip = serverInfo.REGION_DICT[regionID][serverID]["channel"][channelID]["ip"]
- tcp_port = serverInfo.REGION_DICT[regionID][serverID]["channel"][channelID]["tcp_port"]
- except:
- import exception
- exception.Abort("LoginWindow.__OnClickSelectServerButton - 서버 선택 실패")
- try:
- account_ip = serverInfo.REGION_AUTH_SERVER_DICT[regionID][serverID]["ip"]
- account_port = serverInfo.REGION_AUTH_SERVER_DICT[regionID][serverID]["port"]
- except:
- account_ip = 0
- account_port = 0
- try:
- markKey = regionID*1000 + serverID*10
- markAddrValue=serverInfo.MARKADDR_DICT[markKey]
- net.SetMarkServer(markAddrValue["ip"], markAddrValue["tcp_port"])
- app.SetGuildMarkPath(markAddrValue["mark"])
- # GUILD_SYMBOL
- app.SetGuildSymbolPath(markAddrValue["symbol_path"])
- # END_OF_GUILD_SYMBOL
- except:
- import exception
- exception.Abort("LoginWindow.__OnClickSelectServerButton - 마크 정보 없음")
- if app.USE_OPENID and not app.OPENID_TEST :
- ## 2012.07.19 OpenID : 김용욱
- # 채널 선택 화면에서 "확인"(SelectServerButton) 을 눌렀을때,
- # 로그인 화면으로 넘어가지 않고 바로 서버에 OpenID 인증키를 보내도록 수정
- self.stream.SetConnectInfo(ip, tcp_port, account_ip, account_port)
- self.Connect(0, 0)
- else :
- self.stream.SetConnectInfo(ip, tcp_port, account_ip, account_port)
- self.__OpenLoginBoard()
- def __OnClickSelectConnectButton(self):
- if IsFullBackImage():
- self.GetChild("bg1").Show()
- self.GetChild("bg2").Hide()
- self.__RefreshServerList()
- self.__OpenServerBoard()
- def __OnClickLoginButton(self):
- id = self.idEditLine.GetText()
- pwd = self.pwdEditLine.GetText()
- if len(id)==0:
- self.PopupNotifyMessage(localeInfo.LOGIN_INPUT_ID, self.SetIDEditLineFocus)
- return
- if len(pwd)==0:
- self.PopupNotifyMessage(localeInfo.LOGIN_INPUT_PASSWORD, self.SetPasswordEditLineFocus)
- return
- self.Connect(id, pwd)
- def SameLogin_OpenUI(self):
- self.stream.popupWindow.Close()
- self.stream.popupWindow.Open(localeInfo.LOGIN_FAILURE_SAMELOGIN, 0, localeInfo.UI_OK)
I would be very happy about it!
Thank you and kind regards!