Skocz do zawartości
  • 👋 Witaj na MPCForum!

    Przeglądasz forum jako gość, co oznacza, że wiele świetnych funkcji jest jeszcze przed Tobą! 😎

    • Pełny dostęp do działów i ukrytych treści
    • Możliwość pisania i odpowiadania w tematach
    • System prywatnych wiadomości
    • Zbieranie reputacji i rozwijanie swojego profilu
    • Członkostwo w jednej z największych społeczności graczy

    👉 Dołączenie zajmie Ci mniej niż minutę – a zyskasz znacznie więcej!

    Zarejestruj się teraz

Logowanie na serwer


Rekomendowane odpowiedzi

Opublikowano

Witam, jest to pierwsza próba postawienia własnego serwera, uporałem się z wieloma problemami ale na ten nie mam żadnego pomysłu, nawet nie przychodzi mi do głowy jak wyszukać czy ktoś miał coś podobnego, a więc do rzeczy...

 

Kiedy (wreszcie) otwieram klienta mojego serwera (client z 2010 r.) widzę listę serwerów, prawidłowo znajduje się tam jedna pozycja z nazwą którą wybrałem, status CH1 - Norm, ale kiedy go wybieram (klikam ok, enter, etc.) NIC się nie dzieje. nie pojawia się okienko do wpisywania danych do logowania ani żaden inny podejrzany komunikat. ;( nie mam pojęcia co jest tego przyczyną.

Czy znajdzie się ktoś kto potrafił by mi coś doradzić?

Opublikowano

Masz wgrane root.epk i eix w folderze pack?

"Wracaj z tarczą, a nie na tarczy. "

 

"Nigdy nie kłóć się z idiotą... Najpierw sprowadzi Cię do swego poziomu, a potem wykończy doświadczeniem."

 

Opublikowano

Masz wgrane root.epk i eix w folderze pack?

Tak, wcześniej miałem z nimi problemy typu syntaxError, i coś z MAP_CAPE, ale wkońcu znalazłem odpowiedni generator pliku serverinfo.py i mogłem odpalić klienta bez błędów, (no oprócz tego aktualnego ;) )

 

zawartośc pliku syserr

 

 

0711 23:20:01543 :: 1
0711 23:20:01550 :: 2
0711 23:20:01552 :: 3
0711 23:20:01552 :: 4
0711 23:20:01553 :: 5
0711 23:20:01553 :: 6
0711 23:20:01554 :: 7
0711 23:20:01556 :: 8
0711 23:20:01557 :: 9
0711 23:20:01558 :: 10
0711 23:20:01558 :: 11
0711 23:20:01559 :: 12
0711 23:20:01560 :: 13
0711 23:20:01560 :: 14
0711 23:20:01561 :: 15
0711 23:20:01561 :: 16
0711 23:20:01562 :: 17
0711 23:20:01562 :: 18
0711 23:20:01563 :: 19
0711 23:20:01565 :: 20
0711 23:20:01565 :: 21
0711 23:20:01566 :: 22
0711 23:20:01566 :: 23
0711 23:20:01567 :: 24
0711 23:20:01579 :: 25
0711 23:20:01580 :: 26
0711 23:20:01580 :: 27
0711 23:20:01581 :: 28
0711 23:20:01582 :: 29
0711 23:20:01582 :: 30
0711 23:20:01591 :: 31
0711 23:20:01609 :: 32
0711 23:20:01610 :: 33
0711 23:20:01611 :: 34
0711 23:20:01611 :: 35
0711 23:20:01612 :: 36
0711 23:20:01613 :: 37
0711 23:20:01614 :: 38
0711 23:20:01615 :: 39
0711 23:20:01615 :: 40
0711 23:20:01616 :: 41
0711 23:20:01616 :: 42
0711 23:20:01617 :: 43
0711 23:20:01618 :: 44
0711 23:20:01620 :: 45
0711 23:20:01621 :: 46
0711 23:20:09235 :: Traceback (most recent call last):
0711 23:20:09235 :: File "ui.py", line 984, in CallEvent
0711 23:20:09235 :: File "ui.py", line 87, in __call__
0711 23:20:09235 :: File "ui.py", line 69, in __call__
0711 23:20:09236 :: File "introLogin.py", line 1257, in __OnClickSelectServerButton
0711 23:20:09236 :: KeyError
0711 23:20:09236 :: :
0711 23:20:09236 :: 3
0711 23:20:09236 ::
0711 23:20:09927 :: Traceback (most recent call last):
0711 23:20:09927 :: File "ui.py", line 984, in CallEvent
0711 23:20:09927 :: File "ui.py", line 87, in __call__
0711 23:20:09927 :: File "ui.py", line 69, in __call__
0711 23:20:09927 :: File "introLogin.py", line 1257, in __OnClickSelectServerButton
0711 23:20:09927 :: KeyError
0711 23:20:09927 :: :
0711 23:20:09927 :: 3
0711 23:20:09927 ::
0711 23:20:10059 :: Traceback (most recent call last):
0711 23:20:10059 :: File "ui.py", line 984, in CallEvent
0711 23:20:10059 :: File "ui.py", line 87, in __call__
0711 23:20:10059 :: File "ui.py", line 69, in __call__
0711 23:20:10059 :: File "introLogin.py", line 1257, in __OnClickSelectServerButton
0711 23:20:10059 :: KeyError
0711 23:20:10059 :: :
0711 23:20:10059 :: 3
0711 23:20:10059 ::
0711 23:20:10208 :: Traceback (most recent call last):
0711 23:20:10208 :: File "ui.py", line 984, in CallEvent
0711 23:20:10208 :: File "ui.py", line 87, in __call__
0711 23:20:10208 :: File "ui.py", line 69, in __call__
0711 23:20:10208 :: File "introLogin.py", line 1257, in __OnClickSelectServerButton
0711 23:20:10208 :: KeyError
0711 23:20:10209 :: :
0711 23:20:10209 :: 3
0711 23:20:10209 ::
0711 23:20:10339 :: Traceback (most recent call last):
0711 23:20:10339 :: File "ui.py", line 984, in CallEvent
0711 23:20:10339 :: File "ui.py", line 87, in __call__
0711 23:20:10339 :: File "ui.py", line 69, in __call__
0711 23:20:10339 :: File "introLogin.py", line 1257, in __OnClickSelectServerButton
0711 23:20:10339 :: KeyError
0711 23:20:10340 :: :
0711 23:20:10340 :: 3
0711 23:20:10340 ::
0711 23:20:11235 :: granny_shared_vbs:
0711 23:20:11235 :: 0: 40
0711 23:20:11235 :: 1: 20
0711 23:20:11235 :: 2: 20
0711 23:20:11235 :: 3: 40
0711 23:20:11236 :: 4: 0
0711 23:20:11236 :: 5: 20
0711 23:20:11237 :: 6: 0
0711 23:20:11237 :: 7: 0
0711 23:20:11237 :: 8: 0

Opublikowano

"Wracaj z tarczą, a nie na tarczy. "

 

"Nigdy nie kłóć się z idiotą... Najpierw sprowadzi Cię do swego poziomu, a potem wykończy doświadczeniem."

 

Opublikowano

dzięki za pliki, ale teraz okno zamyka się zaraz po otwarciu, bez żadnych komunikatów, błędów etc.

spróbuje poszukać jakiś innych może.

Opublikowano

Daj zawatośc syserr

"Wracaj z tarczą, a nie na tarczy. "

 

"Nigdy nie kłóć się z idiotą... Najpierw sprowadzi Cię do swego poziomu, a potem wykończy doświadczeniem."

 

Opublikowano

@up

Można zmienić, ale nie trzeba.

Może dam rade pomóc zrobić ten problem.

 

Do autora

Zmień launchera może pomoże.

"Wracaj z tarczą, a nie na tarczy. "

 

"Nigdy nie kłóć się z idiotą... Najpierw sprowadzi Cię do swego poziomu, a potem wykończy doświadczeniem."

 

Opublikowano



0712 14:54:01062 ::

introLogin.py(line:470) __LoadScript

ui.py(line:2468) GetChild


LoginWindow.__LoadScript.BindObject - exceptions.KeyError:ServerList


0712 14:54:01062 :: ============================================================================================================

0712 14:54:01062 :: Abort!!!!



0712 14:54:01074 :: ============================================================================================================

0712 14:54:01074 :: Abort!!!!



0712 14:54:01078 :: granny_shared_vbs:

0712 14:54:01078 :: 0: 40

0712 14:54:01079 :: 1: 20

0712 14:54:01079 :: 2: 20

0712 14:54:01079 :: 3: 40

0712 14:54:01080 :: 4: 0

0712 14:54:01080 :: 5: 20

0712 14:54:01080 :: 6: 0

0712 14:54:01080 :: 7: 0

0712 14:54:01080 :: 8: 0



Launchery mam 2 różne na obydwu ta sama sytuacja.

Opublikowano

Skołuj inne root'y

"Wracaj z tarczą, a nie na tarczy. "

 

"Nigdy nie kłóć się z idiotą... Najpierw sprowadzi Cię do swego poziomu, a potem wykończy doświadczeniem."

 

Opublikowano

Kurw znawcy się znaleźli. Wejdź w intrologin i znajdź funkcję gdzie będzie zdeklarowane coś takiego

GetChild
i będziesz miał coś takiego
self.xxx = GetChild("nazwa")
lub
self.xxx =  GetObject("nazwa")
Teraz otwierasz loginwindow i patrzysz na nazwę "name" ich tam będzie dosc sporo, za każdym razem gdy masz "name" wchodzi w intrologin i patrzysz na nazwę wtym nawiasie w tym co mówiłem GetChild i ten błąd jest spowodowany tym że w intrologin masz wprowadzony jakiś child, który nie jest zdefiniowany w loginwindow wypierdzielasz go i po sprawie :D ENJOY !

nexi.png

 

CYTOWAĆ MOJE POSTY, JEŚLI LICZYCIE NA POMOC !!

Opublikowano

 

Kurw znawcy się znaleźli. Wejdź w intrologin i znajdź funkcję gdzie będzie zdeklarowane coś takiego

GetChild
i będziesz miał coś takiego

self.xxx = GetChild("nazwa")
lub

self.xxx =  GetObject("nazwa")
Teraz otwierasz loginwindow i patrzysz na nazwę "name" ich tam będzie dosc sporo, za każdym razem gdy masz "name" wchodzi w intrologin i patrzysz na nazwę wtym nawiasie w tym co mówiłem GetChild i ten błąd jest spowodowany tym że w intrologin masz wprowadzony jakiś child, który nie jest zdefiniowany w loginwindow wypierdzielasz go i po sprawie :D ENJOY !

niezbyt wiele z tego rozumiem, gdzie jest ten plik "loginwindow" ? w rozpakowanym root go nie ma

oto zawartość mojego pliku loginintro.py

 

 

import dbg
import app
import net
import ui
import ime
import snd
import wndMgr
import musicInfo
import serverInfo
import systemSetting
import ServerStateChecker
import locale
import constInfo
import uiCommon
import time
import ServerCommandParser
import ime
import uiScriptLocale
JAPAN_LOGIN = None
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 locale.IsJAPAN():
SKIP_LOGIN_PHASE = TRUE
SKIP_LOGIN_PHASE_SUPPORT_CHANNEL = TRUE
elif locale.IsNEWCIBN():
LOGIN_DELAY_SEC = 20.0
FULL_BACK_IMAGE = TRUE
NEWCIBN_PASSPOD_AUTH = TRUE
PASSPOD_MSG_DICT = {
"PASERR1" : locale.LOGIN_FAILURE_PASERR1,
"PASERR2" : locale.LOGIN_FAILURE_PASERR2,
"PASERR3" : locale.LOGIN_FAILURE_PASERR3,
"PASERR4" : locale.LOGIN_FAILURE_PASERR4,
"PASERR5" : locale.LOGIN_FAILURE_PASERR5,
}
elif locale.IsYMIR() or locale.IsCHEONMA():
FULL_BACK_IMAGE = TRUE
elif locale.IsHONGKONG():
FULL_BACK_IMAGE = TRUE
RUNUP_MATRIX_AUTH = TRUE
PASSPOD_MSG_DICT = {
"NOTELE" : locale.LOGIN_FAILURE_NOTELEBLOCK,
}
elif locale.IsJAPAN():
FULL_BACK_IMAGE = TRUE
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, locale.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)
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" : locale.LOGIN_FAILURE_UNKNOWN,
"ALREADY" : locale.LOGIN_FAILURE_ALREAY,
"NOID" : locale.LOGIN_FAILURE_NOT_EXIST_ID,
"WRONGPWD" : locale.LOGIN_FAILURE_WRONG_PASSWORD,
"FULL" : locale.LOGIN_FAILURE_TOO_MANY_USER,
"SHUTDOWN" : locale.LOGIN_FAILURE_SHUTDOWN,
"REPAIR" : locale.LOGIN_FAILURE_REPAIR_ID,
"BLOCK" : locale.LOGIN_FAILURE_BLOCK_ID,
"WRONGMAT" : locale.LOGIN_FAILURE_WRONG_MATRIX_CARD_NUMBER,
"QUIT" : locale.LOGIN_FAILURE_WRONG_MATRIX_CARD_NUMBER_TRIPLE,
"BESAMEKEY" : locale.LOGIN_FAILURE_BE_SAME_KEY,
"NOTAVAIL" : locale.LOGIN_FAILURE_NOT_AVAIL,
"NOBILL" : locale.LOGIN_FAILURE_NOBILL,
"BLKLOGIN" : locale.LOGIN_FAILURE_BLOCK_LOGIN,
"WEBBLK" : locale.LOGIN_FAILURE_WEB_BLOCK,
}
self.loginFailureFuncDict = {
"WRONGPWD" : self.__DisconnectAndInputPassword,
"WRONGMAT" : self.__DisconnectAndInputMatrix,
"QUIT" : 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.py")
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(locale.LOGIN_CONNECT_FAILURE, self.__ExitGame)
return
if self.loginInfo:
self.serverBoard.Hide()
else:
self.__RefreshServerList()
self.__OpenServerBoard()
else:
connectingIP = self.stream.GetConnectAddr()
if connectingIP:
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.Destroy(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.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 locale.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
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(locale.LOGIN_CONNECT_FAILURE, self.__ExitGame)
else:
self.PopupNotifyMessage(locale.LOGIN_CONNECT_FAILURE, self.SetPasswordEditLineFocus)
def OnHandShake(self):
if not IsLoginDelay():
snd.PlaySound("sound/ui/loginok.wav")
self.PopupDisplayMessage(locale.LOGIN_CONNECT_SUCCESS)
def OnLoginStart(self):
if not IsLoginDelay():
self.PopupDisplayMessage(locale.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 = locale.LOGIN_FAILURE_UNKNOWN + error
else:
loginFailureMsg = locale.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):
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")
# 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")
if self.virtualKeyboard:
self.VIRTUAL_KEY_ALPHABET_UPPERS = Suffle(locale.VIRTUAL_KEY_ALPHABET_UPPERS)
self.VIRTUAL_KEY_ALPHABET_LOWERS = "".join([locale.VIRTUAL_KEY_ALPHABET_LOWERS[locale.VIRTUAL_KEY_ALPHABET_UPPERS.index(e)] for e in self.VIRTUAL_KEY_ALPHABET_UPPERS])
self.VIRTUAL_KEY_SYMBOLS = Suffle(locale.VIRTUAL_KEY_SYMBOLS)
self.VIRTUAL_KEY_NUMBERS = Suffle(locale.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))
# 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
def __VirtualKeyboard_SetKeys(self, keyCodes):
uiDefFontBackup = locale.UI_DEF_FONT
locale.UI_DEF_FONT = locale.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(' ')
locale.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":
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:
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"
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(locale.LOGIN_CONNETING, self.SetPasswordEditLineFocus, locale.UI_CANCEL)
self.stream.SetLoginInfo(id, pwd)
self.stream.Connect()
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
try:
if not loginInfo:
self.__AnalyzeConnectionInfoCommandLine(app.__COMMAND_LINE__)
except:
import exception
exception.Abort("LoginWindow.__LoadLoginInfo - Á˘ĽÓ Á¤ş¸¸¦ ÇŘĽ®ÇŇ Ľö ľř˝Ŕ´Ď´Ů")
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 __AnalyzeConnectionInfoCommandLine(self, cmdLine):
if locale.IsJAPAN():
global JAPAN_LOGIN
if JAPAN_LOGIN:
(self.id, self.pwd) = JAPAN_LOGIN
else:
try:
ip, port, self.id, self.pwd = app.NetmarbleJP_DecryptString(cmdLine.strip()).split(",")[:4]
JAPAN_LOGIN = (self.id, self.pwd)
except:
cmdLine = cmdLine.strip()
if cmdLine:
dbg.LogBox(cmdLine)
self.isStartError = TRUE
self.loginnedServer, self.loginnedChannel = 1, 1
else:
pass
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, locale.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, 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,
locale.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()
# 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.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(locale.WAIT_FOR_PASSPOD,
self.__OnClickNEWCIBNPasspodAnswerCancel,
locale.UI_CANCEL)
def __OnClickNEWCIBNPasspodAnswerCancel(self):
print "passpod.cancel"
if self.passpodBoard:
self.passpodBoard.Hide()
if self.connectBoard:
self.connectBoard.Show()
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(locale.INPUT_MATRIX_CARD_TITLE)
inputDialog.SetDescription1(locale.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(locale.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(locale.LOGIN_FAILURE_WRONG_MATRIX_CARD_NUMBER_TRIPLE, app.Exit, locale.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 locale.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()
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(locale.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.loginBoard.Hide()
elif not self.stream.isAutoLogin:
self.connectBoard.Show()
self.loginBoard.Show()
## 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 locale.IsBRAZIL() or locale.IsCANADA():
self.serverList.InsertItem(id, "%s" % (name))
else:
self.serverList.InsertItem(id, " %02d. %s" % (visible_index, 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
for id, channelDataDict in channelDict.items():
key=channelDataDict["key"]
ip=channelDataDict["ip"]
udp_port=channelDataDict["udp_port"]
ServerStateChecker.Request(key, ip, udp_port)
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 locale.CHANNEL_PVP
else:
return locale.CHANNEL_NORMAL % (selChannelID)
def NotifyChannelState(self, addrKey, state):
try:
stateName=serverInfo.STATE_DICT[state]
except:
stateName=serverInfo.STATE_NONE
regionID=int(addrKey/1000)
serverID=int(addrKey/10) % 100
channelID=addrKey%10
try:
serverInfo.REGION_DICT[regionID][serverID]["channel"][channelID]["state"] = stateName
self.__RefreshServerStateList()
except:
import exception
exception.Abort(locale.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(locale.CHANNEL_SELECT_REGION)
return
if (not serverInfo.REGION_DICT[regionID].has_key(serverID)):
self.PopupNotifyMessage(locale.CHANNEL_SELECT_SERVER)
return
self.__SaveChannelInfo()
self.serverExitButton.SetEvent(ui.__mem_func__(self.__OnClickExitServerButton))
self.serverExitButton.SetText(locale.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(locale.CHANNEL_SELECT_REGION)
return
if (not serverInfo.REGION_DICT[regionID].has_key(serverID)):
self.PopupNotifyMessage(locale.CHANNEL_SELECT_SERVER)
return
try:
channelDict = serverInfo.REGION_DICT[regionID][serverID]["channel"]
except KeyError:
return
try:
state = channelDict[channelID]["state"]
except KeyError:
self.PopupNotifyMessage(locale.CHANNEL_SELECT_CHANNEL)
return
# »óۡ FULL °ú °°Ŕ¸¸é ÁřŔÔ ±ÝÁö
if state == serverInfo.STATE_DICT[3]:
self.PopupNotifyMessage(locale.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"]
except:
print " ERROR __OnClickSelectServerButton(%d, %d, %d)" % (regionID, serverID, channelID)
serverName = locale.CHANNEL_EMPTY_SERVER
channelName = locale.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 - ¸¶Ĺ© Á¤ş¸ ľřŔ˝")
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(locale.LOGIN_INPUT_ID, self.SetIDEditLineFocus)
return
if len(pwd)==0:
self.PopupNotifyMessage(locale.LOGIN_INPUT_PASSWORD, self.SetPasswordEditLineFocus)
return
self.Connect(id, pwd)

 

 

Opublikowano

bez zmian, albo źle to robię ;/

 

loginwindow.py

 

 

import uiScriptLocale
LOCALE_PATH = uiScriptLocale.LOGIN_PATH
#Big-List
#SERVER_BOARD_HEIGHT = 180 + 390
#SERVER_LIST_HEIGHT = 171 + 350
#Small list like german
SERVER_BOARD_HEIGHT = 220 + 180
SERVER_LIST_HEIGHT = 171 + 180
SERVER_BOARD_WEIGHT = 375
window = {
"name" : "LoginWindow",
"sytle" : ("movable",),
"x" : 0,
"y" : 0,
"width" : SCREEN_WIDTH,
"height" : SCREEN_HEIGHT,
"children" :
(
## Board
{
"name" : "bg1", "type" : "expanded_image", "x" : 0, "y" : 0,
"x_scale" : float(SCREEN_WIDTH) / 1024.0, "y_scale" : float(SCREEN_HEIGHT) / 768.0,
"image" : "locale/pl/ui/serverlist.sub",
},
{
"name" : "bg2", "type" : "expanded_image", "x" : 0, "y" : 0,
"x_scale" : float(SCREEN_WIDTH) / 1024.0, "y_scale" : float(SCREEN_HEIGHT) / 768.0,
"image" : "locale/pl/ui/login.sub",
},
## VirtualKeyboard
{
'name' : 'VirtualKeyboard',
'type' : 'thinboard',
'x' : (SCREEN_WIDTH - 564) / 2,
'y' : SCREEN_HEIGHT - 300,
'width' : 564,
'height' : 254,
'children' :
(
{
'name' : 'key_at',
'type' : 'toggle_button',
'x' : 40,
'y' : 186,
'default_image' : 'locale/pl/ui/vkey/key_at.tga',
'down_image' : 'locale/pl/ui/vkey/key_at_dn.tga',
'over_image' : 'locale/pl/ui/vkey/key_at_over.tga',
},
{
'name' : 'key_backspace',
'type' : 'button',
'x' : 498,
'y' : 186,
'default_image' : 'locale/pl/ui/vkey/key_backspace.tga',
'down_image' : 'locale/pl/ui/vkey/key_backspace_dn.tga',
'over_image' : 'locale/pl/ui/vkey/key_backspace_over.tga',
},
{
'name' : 'key_enter',
'type' : 'button',
'x' : 439,
'y' : 186,
'default_image' : 'locale/pl/ui/vkey/key_enter.tga',
'down_image' : 'locale/pl/ui/vkey/key_enter_dn.tga',
'over_image' : 'locale/pl/ui/vkey/key_enter_over.tga',
},
{
'name' : 'key_shift',
'type' : 'toggle_button',
'x' : 86,
'y' : 186,
'default_image' : 'locale/pl/ui/vkey/key_shift.tga',
'down_image' : 'locale/pl/ui/vkey/key_shift_dn.tga',
'over_image' : 'locale/pl/ui/vkey/key_shift_over.tga',
},
{
'name' : 'key_space',
'type' : 'button',
'x' : 145,
'y' : 186,
'default_image' : 'locale/pl/ui/vkey/key_space.tga',
'down_image' : 'locale/pl/ui/vkey/key_space_dn.tga',
'over_image' : 'locale/pl/ui/vkey/key_space_over.tga',
},
{
'name' : 'key_1',
'type' : 'button',
'x' : 40,
'y' : 24,
'default_image' : 'locale/pl/ui/vkey/key_normal.tga',
'down_image' : 'locale/pl/ui/vkey/key_normal_dn.tga',
'over_image' : 'locale/pl/ui/vkey/key_normal_over.tga',
},
{
'name' : 'key_2',
'type' : 'button',
'x' : 80,
'y' : 24,
'default_image' : 'locale/pl/ui/vkey/key_normal.tga',
'down_image' : 'locale/pl/ui/vkey/key_normal_dn.tga',
'over_image' : 'locale/pl/ui/vkey/key_normal_over.tga',
},
{
'name' : 'key_3',
'type' : 'button',
'x' : 120,
'y' : 24,
'default_image' : 'locale/pl/ui/vkey/key_normal.tga',
'down_image' : 'locale/pl/ui/vkey/key_normal_dn.tga',
'over_image' : 'locale/pl/ui/vkey/key_normal_over.tga',
},
{
'name' : 'key_4',
'type' : 'button',
'x' : 160,
'y' : 24,
'default_image' : 'locale/pl/ui/vkey/key_normal.tga',
'down_image' : 'locale/pl/ui/vkey/key_normal_dn.tga',
'over_image' : 'locale/pl/ui/vkey/key_normal_over.tga',
},
{
'name' : 'key_5',
'type' : 'button',
'x' : 200,
'y' : 24,
'default_image' : 'locale/pl/ui/vkey/key_normal.tga',
'down_image' : 'locale/pl/ui/vkey/key_normal_dn.tga',
'over_image' : 'locale/pl/ui/vkey/key_normal_over.tga',
},
{
'name' : 'key_6',
'type' : 'button',
'x' : 240,
'y' : 24,
'default_image' : 'locale/pl/ui/vkey/key_normal.tga',
'down_image' : 'locale/pl/ui/vkey/key_normal_dn.tga',
'over_image' : 'locale/pl/ui/vkey/key_normal_over.tga',
},
{
'name' : 'key_7',
'type' : 'button',
'x' : 280,
'y' : 24,
'default_image' : 'locale/pl/ui/vkey/key_normal.tga',
'down_image' : 'locale/pl/ui/vkey/key_normal_dn.tga',
'over_image' : 'locale/pl/ui/vkey/key_normal_over.tga',
},
{
'name' : 'key_8',
'type' : 'button',
'x' : 320,
'y' : 24,
'default_image' : 'locale/pl/ui/vkey/key_normal.tga',
'down_image' : 'locale/pl/ui/vkey/key_normal_dn.tga',
'over_image' : 'locale/pl/ui/vkey/key_normal_over.tga',
},
{
'name' : 'key_9',
'type' : 'button',
'x' : 360,
'y' : 24,
'default_image' : 'locale/pl/ui/vkey/key_normal.tga',
'down_image' : 'locale/pl/ui/vkey/key_normal_dn.tga',
'over_image' : 'locale/pl/ui/vkey/key_normal_over.tga',
},
{
'name' : 'key_10',
'type' : 'button',
'x' : 400,
'y' : 24,
'default_image' : 'locale/pl/ui/vkey/key_normal.tga',
'down_image' : 'locale/pl/ui/vkey/key_normal_dn.tga',
'over_image' : 'locale/pl/ui/vkey/key_normal_over.tga',
},
{
'name' : 'key_11',
'type' : 'button',
'x' : 440,
'y' : 24,
'default_image' : 'locale/pl/ui/vkey/key_normal.tga',
'down_image' : 'locale/pl/ui/vkey/key_normal_dn.tga',
'over_image' : 'locale/pl/ui/vkey/key_normal_over.tga',
},
{
'name' : 'key_12',
'type' : 'button',
'x' : 480,
'y' : 24,
'default_image' : 'locale/pl/ui/vkey/key_normal.tga',
'down_image' : 'locale/pl/ui/vkey/key_normal_dn.tga',
'over_image' : 'locale/pl/ui/vkey/key_normal_over.tga',
},
{
'name' : 'key_13',
'type' : 'button',
'x' : 40,
'y' : 63,
'default_image' : 'locale/pl/ui/vkey/key_normal.tga',
'down_image' : 'locale/pl/ui/vkey/key_normal_dn.tga',
'over_image' : 'locale/pl/ui/vkey/key_normal_over.tga',
},
{
'name' : 'key_14',
'type' : 'button',
'x' : 80,
'y' : 63,
'default_image' : 'locale/pl/ui/vkey/key_normal.tga',
'down_image' : 'locale/pl/ui/vkey/key_normal_dn.tga',
'over_image' : 'locale/pl/ui/vkey/key_normal_over.tga',
},
{
'name' : 'key_15',
'type' : 'button',
'x' : 120,
'y' : 63,
'default_image' : 'locale/pl/ui/vkey/key_normal.tga',
'down_image' : 'locale/pl/ui/vkey/key_normal_dn.tga',
'over_image' : 'locale/pl/ui/vkey/key_normal_over.tga',
},
{
'name' : 'key_16',
'type' : 'button',
'x' : 160,
'y' : 63,
'default_image' : 'locale/pl/ui/vkey/key_normal.tga',
'down_image' : 'locale/pl/ui/vkey/key_normal_dn.tga',
'over_image' : 'locale/pl/ui/vkey/key_normal_over.tga',
},
{
'name' : 'key_17',
'type' : 'button',
'x' : 200,
'y' : 63,
'default_image' : 'locale/pl/ui/vkey/key_normal.tga',
'down_image' : 'locale/pl/ui/vkey/key_normal_dn.tga',
'over_image' : 'locale/pl/ui/vkey/key_normal_over.tga',
},
{
'name' : 'key_18',
'type' : 'button',
'x' : 240,
'y' : 63,
'default_image' : 'locale/pl/ui/vkey/key_normal.tga',
'down_image' : 'locale/pl/ui/vkey/key_normal_dn.tga',
'over_image' : 'locale/pl/ui/vkey/key_normal_over.tga',
},
{
'name' : 'key_19',
'type' : 'button',
'x' : 280,
'y' : 63,
'default_image' : 'locale/pl/ui/vkey/key_normal.tga',
'down_image' : 'locale/pl/ui/vkey/key_normal_dn.tga',
'over_image' : 'locale/pl/ui/vkey/key_normal_over.tga',
},
{
'name' : 'key_20',
'type' : 'button',
'x' : 320,
'y' : 63,
'default_image' : 'locale/pl/ui/vkey/key_normal.tga',
'down_image' : 'locale/pl/ui/vkey/key_normal_dn.tga',
'over_image' : 'locale/pl/ui/vkey/key_normal_over.tga',
},
{
'name' : 'key_21',
'type' : 'button',
'x' : 360,
'y' : 63,
'default_image' : 'locale/pl/ui/vkey/key_normal.tga',
'down_image' : 'locale/pl/ui/vkey/key_normal_dn.tga',
'over_image' : 'locale/pl/ui/vkey/key_normal_over.tga',
},
{
'name' : 'key_22',
'type' : 'button',
'x' : 400,
'y' : 63,
'default_image' : 'locale/pl/ui/vkey/key_normal.tga',
'down_image' : 'locale/pl/ui/vkey/key_normal_dn.tga',
'over_image' : 'locale/pl/ui/vkey/key_normal_over.tga',
},
{
'name' : 'key_23',
'type' : 'button',
'x' : 440,
'y' : 63,
'default_image' : 'locale/pl/ui/vkey/key_normal.tga',
'down_image' : 'locale/pl/ui/vkey/key_normal_dn.tga',
'over_image' : 'locale/pl/ui/vkey/key_normal_over.tga',
},
{
'name' : 'key_24',
'type' : 'button',
'x' : 480,
'y' : 63,
'default_image' : 'locale/pl/ui/vkey/key_normal.tga',
'down_image' : 'locale/pl/ui/vkey/key_normal_dn.tga',
'over_image' : 'locale/pl/ui/vkey/key_normal_over.tga',
},
{
'name' : 'key_25',
'type' : 'button',
'x' : 60,
'y' : 104,
'default_image' : 'locale/pl/ui/vkey/key_normal.tga',
'down_image' : 'locale/pl/ui/vkey/key_normal_dn.tga',
'over_image' : 'locale/pl/ui/vkey/key_normal_over.tga',
},
{
'name' : 'key_26',
'type' : 'button',
'x' : 100,
'y' : 104,
'default_image' : 'locale/pl/ui/vkey/key_normal.tga',
'down_image' : 'locale/pl/ui/vkey/key_normal_dn.tga',
'over_image' : 'locale/pl/ui/vkey/key_normal_over.tga',
},
{
'name' : 'key_27',
'type' : 'button',
'x' : 140,
'y' : 104,
'default_image' : 'locale/pl/ui/vkey/key_normal.tga',
'down_image' : 'locale/pl/ui/vkey/key_normal_dn.tga',
'over_image' : 'locale/pl/ui/vkey/key_normal_over.tga',
},
{
'name' : 'key_28',
'type' : 'button',
'x' : 180,
'y' : 104,
'default_image' : 'locale/pl/ui/vkey/key_normal.tga',
'down_image' : 'locale/pl/ui/vkey/key_normal_dn.tga',
'over_image' : 'locale/pl/ui/vkey/key_normal_over.tga',
},
{
'name' : 'key_29',
'type' : 'button',
'x' : 220,
'y' : 104,
'default_image' : 'locale/pl/ui/vkey/key_normal.tga',
'down_image' : 'locale/pl/ui/vkey/key_normal_dn.tga',
'over_image' : 'locale/pl/ui/vkey/key_normal_over.tga',
},
{
'name' : 'key_30',
'type' : 'button',
'x' : 260,
'y' : 104,
'default_image' : 'locale/pl/ui/vkey/key_normal.tga',
'down_image' : 'locale/pl/ui/vkey/key_normal_dn.tga',
'over_image' : 'locale/pl/ui/vkey/key_normal_over.tga',
},
{
'name' : 'key_31',
'type' : 'button',
'x' : 300,
'y' : 104,
'default_image' : 'locale/pl/ui/vkey/key_normal.tga',
'down_image' : 'locale/pl/ui/vkey/key_normal_dn.tga',
'over_image' : 'locale/pl/ui/vkey/key_normal_over.tga',
},
{
'name' : 'key_32',
'type' : 'button',
'x' : 340,
'y' : 104,
'default_image' : 'locale/pl/ui/vkey/key_normal.tga',
'down_image' : 'locale/pl/ui/vkey/key_normal_dn.tga',
'over_image' : 'locale/pl/ui/vkey/key_normal_over.tga',
},
{
'name' : 'key_33',
'type' : 'button',
'x' : 380,
'y' : 104,
'default_image' : 'locale/pl/ui/vkey/key_normal.tga',
'down_image' : 'locale/pl/ui/vkey/key_normal_dn.tga',
'over_image' : 'locale/pl/ui/vkey/key_normal_over.tga',
},
{
'name' : 'key_34',
'type' : 'button',
'x' : 420,
'y' : 104,
'default_image' : 'locale/pl/ui/vkey/key_normal.tga',
'down_image' : 'locale/pl/ui/vkey/key_normal_dn.tga',
'over_image' : 'locale/pl/ui/vkey/key_normal_over.tga',
},
{
'name' : 'key_35',
'type' : 'button',
'x' : 460,
'y' : 104,
'default_image' : 'locale/pl/ui/vkey/key_normal.tga',
'down_image' : 'locale/pl/ui/vkey/key_normal_dn.tga',
'over_image' : 'locale/pl/ui/vkey/key_normal_over.tga',
},
{
'name' : 'key_36',
'type' : 'button',
'x' : 60,
'y' : 144,
'default_image' : 'locale/pl/ui/vkey/key_normal.tga',
'down_image' : 'locale/pl/ui/vkey/key_normal_dn.tga',
'over_image' : 'locale/pl/ui/vkey/key_normal_over.tga',
},
{
'name' : 'key_37',
'type' : 'button',
'x' : 100,
'y' : 144,
'default_image' : 'locale/pl/ui/vkey/key_normal.tga',
'down_image' : 'locale/pl/ui/vkey/key_normal_dn.tga',
'over_image' : 'locale/pl/ui/vkey/key_normal_over.tga',
},
{
'name' : 'key_38',
'type' : 'button',
'x' : 140,
'y' : 144,
'default_image' : 'locale/pl/ui/vkey/key_normal.tga',
'down_image' : 'locale/pl/ui/vkey/key_normal_dn.tga',
'over_image' : 'locale/pl/ui/vkey/key_normal_over.tga',
},
{
'name' : 'key_39',
'type' : 'button',
'x' : 180,
'y' : 144,
'default_image' : 'locale/pl/ui/vkey/key_normal.tga',
'down_image' : 'locale/pl/ui/vkey/key_normal_dn.tga',
'over_image' : 'locale/pl/ui/vkey/key_normal_over.tga',
},
{
'name' : 'key_40',
'type' : 'button',
'x' : 220,
'y' : 144,
'default_image' : 'locale/pl/ui/vkey/key_normal.tga',
'down_image' : 'locale/pl/ui/vkey/key_normal_dn.tga',
'over_image' : 'locale/pl/ui/vkey/key_normal_over.tga',
},
{
'name' : 'key_41',
'type' : 'button',
'x' : 260,
'y' : 144,
'default_image' : 'locale/pl/ui/vkey/key_normal.tga',
'down_image' : 'locale/pl/ui/vkey/key_normal_dn.tga',
'over_image' : 'locale/pl/ui/vkey/key_normal_over.tga',
},
{
'name' : 'key_42',
'type' : 'button',
'x' : 300,
'y' : 144,
'default_image' : 'locale/pl/ui/vkey/key_normal.tga',
'down_image' : 'locale/pl/ui/vkey/key_normal_dn.tga',
'over_image' : 'locale/pl/ui/vkey/key_normal_over.tga',
},
{
'name' : 'key_43',
'type' : 'button',
'x' : 340,
'y' : 144,
'default_image' : 'locale/pl/ui/vkey/key_normal.tga',
'down_image' : 'locale/pl/ui/vkey/key_normal_dn.tga',
'over_image' : 'locale/pl/ui/vkey/key_normal_over.tga',
},
{
'name' : 'key_44',
'type' : 'button',
'x' : 380,
'y' : 144,
'default_image' : 'locale/pl/ui/vkey/key_normal.tga',
'down_image' : 'locale/pl/ui/vkey/key_normal_dn.tga',
'over_image' : 'locale/pl/ui/vkey/key_normal_over.tga',
},
{
'name' : 'key_45',
'type' : 'button',
'x' : 420,
'y' : 144,
'default_image' : 'locale/pl/ui/vkey/key_normal.tga',
'down_image' : 'locale/pl/ui/vkey/key_normal_dn.tga',
'over_image' : 'locale/pl/ui/vkey/key_normal_over.tga',
},
{
'name' : 'key_46',
'type' : 'button',
'x' : 460,
'y' : 144,
'default_image' : 'locale/pl/ui/vkey/key_normal.tga',
'down_image' : 'locale/pl/ui/vkey/key_normal_dn.tga',
'over_image' : 'locale/pl/ui/vkey/key_normal_over.tga',
},
)
},
## ConnectBoard
{
"name" : "ConnectBoard",
"type" : "thinboard",
"x" : (SCREEN_WIDTH - 208) / 2,
"y" : (SCREEN_HEIGHT - 410 - 35),
"width" : 208,
"height" : 30,
"children" :
(
{
"name" : "ConnectName",
"type" : "text",
"x" : 15,
"y" : 0,
"vertical_align" : "center",
"text_vertical_align" : "center",
"text" : uiScriptLocale.LOGIN_DEFAULT_SERVERADDR,
},
{
"name" : "SelectConnectButton",
"type" : "button",
"x" : 150,
"y" : 0,
"vertical_align" : "center",
"default_image" : "d:/ymir work/ui/public/small_button_01.sub",
"over_image" : "d:/ymir work/ui/public/small_button_02.sub",
"down_image" : "d:/ymir work/ui/public/small_button_03.sub",
"text" : uiScriptLocale.LOGIN_SELECT_BUTTON,
},
),
},
## LoginBoard
{
"name" : "LoginBoard",
"type" : "image",
"x" : (SCREEN_WIDTH - 208) / 2,
"y" : (SCREEN_HEIGHT - 410),
"image" : LOCALE_PATH + "loginwindow.sub",
"children" :
(
{
"name" : "ID_EditLine",
"type" : "editline",
"x" : 77,
"y" : 16,
"width" : 120,
"height" : 18,
"input_limit" : 16,
"enable_codepage" : 0,
"r" : 1.0,
"g" : 1.0,
"b" : 1.0,
"a" : 1.0,
},
{
"name" : "Password_EditLine",
"type" : "editline",
"x" : 77,
"y" : 43,
"width" : 120,
"height" : 18,
"input_limit" : 16,
"secret_flag" : 1,
"enable_codepage" : 0,
"r" : 1.0,
"g" : 1.0,
"b" : 1.0,
"a" : 1.0,
},
{
"name" : "LoginButton",
"type" : "button",
"x" : 15,
"y" : 65,
"default_image" : "d:/ymir work/ui/public/large_button_01.sub",
"over_image" : "d:/ymir work/ui/public/large_button_02.sub",
"down_image" : "d:/ymir work/ui/public/large_button_03.sub",
"text" : uiScriptLocale.LOGIN_CONNECT,
},
{
"name" : "LoginExitButton",
"type" : "button",
"x" : 105,
"y" : 65,
"default_image" : "d:/ymir work/ui/public/large_button_01.sub",
"over_image" : "d:/ymir work/ui/public/large_button_02.sub",
"down_image" : "d:/ymir work/ui/public/large_button_03.sub",
"text" : uiScriptLocale.LOGIN_EXIT,
},
),
},
## ServerBoard
{
"name" : "ServerBoard",
"type" : "thinboard",
"x" : 0,
"y" : SCREEN_HEIGHT - SERVER_BOARD_HEIGHT - 72,
"width" : 375,
"height" : SERVER_BOARD_HEIGHT,
"horizontal_align" : "center",
"children" :
(
## Title
{
"name" : "Title",
"type" : "text",
"x" : 0,
"y" : 12,
"horizontal_align" : "center",
"text_horizontal_align" : "center",
"text" : uiScriptLocale.LOGIN_SELECT_TITLE,
},
## Horizontal
{
"name" : "HorizontalLine1",
"type" : "line",
"x" : 10,
"y" : 34,
"width" : 354,
"height" : 0,
"color" : 0xff777777,
},
{
"name" : "HorizontalLine2",
"type" : "line",
"x" : 10,
"y" : 35,
"width" : 355,
"height" : 0,
"color" : 0xff111111,
},
## Vertical
{
"name" : "VerticalLine1",
"type" : "line",
"x" : 246,
"y" : 38,
"width" : 0,
"height" : SERVER_LIST_HEIGHT + 4,
"color" : 0xff777777,
},
{
"name" : "VerticalLine2",
"type" : "line",
"x" : 247,
"y" : 38,
"width" : 0,
"height" : SERVER_LIST_HEIGHT + 4,
"color" : 0xff111111,
},
## ListBox
{
"name" : "ServerList",
"type" : "listbox2",
"x" : 10,
"y" : 40,
"width" : 232,
"height" : SERVER_LIST_HEIGHT,
"row_count" : 15,
"item_align" : 0,
},
{
"name" : "ChannelList",
"type" : "listbox",
"x" : 255,
"y" : 40,
"width" : 109,
"height" : SERVER_LIST_HEIGHT,
"item_align" : 0,
},
## Buttons
{
"name" : "ServerSelectButton",
"type" : "button",
"x" : 267,
"y" : SERVER_LIST_HEIGHT,
"default_image" : "d:/ymir work/ui/public/large_button_01.sub",
"over_image" : "d:/ymir work/ui/public/large_button_02.sub",
"down_image" : "d:/ymir work/ui/public/large_button_03.sub",
"text" : uiScriptLocale.OK,
},
{
"name" : "ServerExitButton",
"type" : "button",
"x" : 267,
"y" : SERVER_LIST_HEIGHT + 22,
"default_image" : "d:/ymir work/ui/public/large_button_01.sub",
"over_image" : "d:/ymir work/ui/public/large_button_02.sub",
"down_image" : "d:/ymir work/ui/public/large_button_03.sub",
"text" : uiScriptLocale.LOGIN_SELECT_EXIT,
},
),
},
),
}

  • 1 rok później...
Opublikowano

Czy możesz dać intrologin.py jako plik? Wtedy będzie wiadomo gdzie dokładnie jest błąd bo wklejając bezpośrednio na forum, kod się sypie. (linie się przesuwają)

teraz mogę się domyślać jedynie że błąd wywala ten warunek:
 

if (not serverInfo.REGION_DICT.has_key(regionID)):

Sprawdź czy w serverInfo.py masz tablicę "REGION_DICT" jeśli tak to pokaż jej zawartość, albo daj tutaj cały ten plik. Myślę że przeoczyłeś przecinek czy coś.
 

8910814572903361049127.png

Zarchiwizowany

Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.

×
×
  • Dodaj nową pozycję...