Jump to content

Kraliyet2 Diriliş

Miembro
  • Contador contenido

    0
  • Ingreso

  • Última visita

Actividad de reputación

  1. Me Gusta
    Kraliyet2 Diriliş reacted to Jfirewall in Interface New Age   
    Debes iniciar sesión para ver el contenido del enlace en esta publicación.  
    Pues tengo mas de 25 interfaces xd y uso unas pocas para motivos personales.
     
    bueno en fin a nadie le importa aca les traigo la del new age un servidor que hiba a salir que era del akroma y yo me robe ese diseño hace mas de 6 meses o 8 meses el neox me saco el diseño y yo hice los script antes los habia hecho pero con errores ahora esta totalmente funcional para todas las resoluciones etc.. y a mi no me gusta entonces se las comparto 
     
    creditos : 
     
    jfirewall script 
     
    neox por recortarla 
     
    no siendo mas disfrutenla.
     

    Debes iniciar sesión para ver el contenido del enlace en esta publicación.  
    saludos
  2. Me Gusta
    Kraliyet2 Diriliş reacted to PENTAGRAMA in [INSTALL]3D MAX 2008+PLUGGINS[MEGA]   
    ME CAGO EN LA MADRE -.-  
    TENIA YA EL POST BIEN ECHO. SUPER BONITO CON UNA HISTORIA DE TRAS.
    PERO PUM LE DOY EN LA TECLA BORRAR Y ME REGRESA A LA PAGINA WEB ANTERIOR CUANDO LE DOY REGRESAR TODO ESTABA PERDIDO.
     
    BUENO RESUMIENDO.
    LOS LINKS DE RYEN ESTAN CAIDOS, ME DI LA TAREA DE BUSCARLOS Y SUBIRLOS
    FUE UN ARDUO TRABAJO ENCERIO PORQUE NO LOS TENIA YA QUE MI PC SE DESCOMPUSO Y TUVE  QUE FORMATEAR.
    PERO BUENO DA IGUAL  
     
    LINKS:

    Debes iniciar sesión para ver el contenido del enlace en esta publicación. PASS:
    metin2zone.net/#PENTAGRAMA
     
    ALGUNAS FOTOS.


     
     
    SI UN ADMIN ESTA LEYENDO ESTO, SERIA BUENA IDEA UN AUTO GUARDADO CADA 1 MINUTO -.-
    PORQUE MI POST QUEDO ECHO UN ASCO.
     
    ESPERO SUS  +1
  3. Me Gusta
    Kraliyet2 Diriliş reacted to  Pantsu  in [GUIA] Adaptación de armas a Metin2.   
    Hola queridos usuarios de Metin2Zone. Hoy os traigo una guia de como adaptar un arma del World Of Warcraft por ejemplo y usarla en vuestro Metin2. Bueno lo primero que tenéis que saber son los programas necesarios para hacer dicha adaptación.
     
    ·Recursos:
    - 3Ds Max 2007.
    - World Of Warcraft Cliente.
    - World Of Warcraft Model Viewer.
    - Plugin Export GR2 Para 3Ds Max 2007.
    - GR2 to Mesh.
     
    ·Descarga de recursos:
    -
    Debes iniciar sesión para ver el contenido del enlace en esta publicación. -
    Debes iniciar sesión para ver el contenido del enlace en esta publicación. -
    Debes iniciar sesión para ver el contenido del enlace en esta publicación. / Debes iniciar sesión para ver el contenido del enlace en esta publicación. -
    Debes iniciar sesión para ver el contenido del enlace en esta publicación. -
    Debes iniciar sesión para ver el contenido del enlace en esta publicación.  
    Teniendo todo esto solo tendríamos que instalar el World Of Warcraft. La instalación puede demorar varias horas. Instalamos el World Of Warcraft Model Viewer y se guardara predeterminadamente en 'C:\Program Files\World Of Warcraft Model Viewer' Al dirigirnos a la ruta del model viewer podemos abrir el .exe llamado 'WowModelViewer32' al abrirlo le damos todo a 'Si' en lo que nos aparezca y se cargara automáticamente la base de datos del World Of Warcraft (Para esta parte hace falta tener el World Of Warcraft instalado y actualizado). Ahora el 3Ds max lo instalan. Descomprimimos el archivo Plugins y la carpeta la pasamos a la raíz del 3Ds MAX 2007. Después de todo esto podremos comenzar con la guía.
     

    1º Paso: Exportar cosas del World Of Warcraft Model Viewer.
    Lo primero de todo esto es abrir el Model Viewer del World Of Warcraft. Al abrir el Model Viewer y si ya tenemos el World Of Warcraft instalado nos aparecerá el programa y primero una ventana y le damos a 'Si' luego a 'Aceptar' y tendremos la Base de datos cargada. Para las armas nos vamos a 'Item' luego a 'Objectcomponents' y finalmente a 'Weapons' y escogemos un arma para nuestro metin. Asi como muestro en la imagen. Para exportar le dais a File -> Export Model -> Wavefront OBJ.

    [El arma que se muestra en la imagen en la base de datos se llama 'sword_1h_raid_d_03']

    2º Paso: Sacar modelo de arma Metin2 para adaptar el arma del World Of Warcraft.
    Descargamos el GR2 to Mesh y arrastramos ahi un GR2 de un arma del Metin2. Por ejemplo el de un arma del nivel 1 (00010.gr2) lo ponemos en la carpeta del GR2 to Mesh. Y arrastramos el GR2 a 'grnreader' y aparecerán 3 ventanas es cuestion de darle 'Si' a las tres ventanas.Despues de este paso ya tendremos el 00010.GR2.ms y ese archivo lo arrastramos hasta el 3Ds Max. Asi ya tendremos un modelo fijo para adaptar el arma con la medida correcta. Asi se vera en el 3Ds Max 2007, aqui la imagen de muestra.

    [El arma que se muestra en la imagen no es la espada del nivel 1 (00010.gr2.ms) si no otra que ya tiene guardada]

    3º Paso: Adaptacion del modelo del World Of Warcraft al Modelo de Metin2.
    Lo primero de todo al tener el arma del World Of Warcraft que extrajimos antes la arrastramos al 3Ds Max 2007 saldrá girada mal. Lo primero es poner el arma recta. Para eso cogéis la herramienta que esta en el menú de arriba. Luego de ponerla recta lo siguiente es aumentarle el tamaño al tamaño del Modelo del Metin, pues muy fácil. Cogéis la herramienta que también esta en el menú de arriba y es ir aumentando hasta que del mismo tamaño que el arma del Metin. Bueno ahora es eliminar el modelo del Metin el verde de arriba para eso escogemos la herramienta que también esta en el menú de arriba y seleccionáis la capa de 'Object01' y le dais a 'Select' y luego a la tecla 'Delete/Suprimir' ahora ya quedara el arma solamente. Solamente queda centrar el arma para eso vamos al cuadro de arriba a la izquierda (Como os habréis dado cuenta ahí 4 Cuadros distintos cada uno una perspectiva diferente para ver el arma) en el de arriba a la izquierda ponéis el arma en esta posicion. Que las lineas queden en linea con las negras. Se puede mover el arma con esta herramienta que esta ubicada en el menú de arriba. Aquí una imagen de como tiene que quedar el arma.

     
    NOTA: Para añadirle la textura a un arma solo es necesario arrastrar la textura (TGA/DDS o cualquier archivo de imagen). Para que a los usuarios se les vea con textura dentro de el juego el arma tiene que tener de ruta 'D:\Ymir Work\Item\Weapon'.
     
     
     
     

    Bueno eso es todo, espero que le haya gustado la guía y que pronto puedan tener armas únicas en su servidor, gracias y
    buena suerte.

    Guia oficial Metin2Zone
    Att. Strach
  4. Me Gusta
    Kraliyet2 Diriliş reacted to Lord Ahriman in Gr2 to Mesh - Grn-Reader   
    Saludos a todos, les dejo acá este programa muy útil a la hora de pasar poder pasar un gr2 a mesh para meterlo al 3ds max.

    Me costo demasiado encontrarlo, no se para los demás, pero por lo menos en Metin2Zone no lo encontré, si esta, pues avísenme jajaj
    Aca les dejo el link, el cual incluye una carpeta donde trae unos mesh de las armas oficiales para comparar dimensiones de las armas:
     
    Link: Debes iniciar sesión para ver el contenido del enlace en esta publicación.
    [Link Resubido con fecha: 21 - 01 - 2023]
    Para los que no saben usarlo, es muy simple, buscan algun GR2 en el directorio '' D:\ymir wrok\item\weapon '' y lo colocan en la carpeta donde esta el decodificador.
    Arrastra el GR2 al ''grnreader.exe" y les saldrán las siguientes ventanas:

    Si no les sirve usen GR2 to FBX, grnreader usualemente lo usan para sacar los huesos de los personajes... suerte!.

    Le dan a ''SI'' a todo



  5. Me Gusta
    Kraliyet2 Diriliş reacted to TTV_RANDARON in Loading Imagen PSD   
    Debes iniciar sesión para ver el contenido del enlace en esta publicación.
    Debes iniciar sesión para ver el contenido del enlace en esta publicación. Creditos a #Xrose
     
  6. Me Gusta
    Kraliyet2 Diriliş reacted to Anthony's in [Intro Login] Traducida   
    Buenas como muchos sabréis hay un post de esta intro login:
     

     
    Ami me gusto y decidí usarla para mi Versión2 de mi servidor. Así que la traduje 100% al Español y como a muchos le gustaron y pocos saben hacerla funcionar o traducir. 
     
    #A lo de traducir me refiero que en el post Original hubo mucha polémica de como se traducía o montaba la intro login. "Eso paso en Alemania."
     
    Bueno yo os daré los archivos necesarios y también un mini tuto de como hacerla funcionar.
     
     
     
    Bien lo primero que haremos será lo siguiente:
     
    Descompilar root y ir al archivo: "intrologin".
     
    Y lo remplazaremos por lo siguiente:
    import dbgimport appimport netimport uiimport imeimport sndimport wndMgrimport musicInfoimport serverInfoimport systemSettingimport ServerStateCheckerimport localeimport constInfoimport uiCommonimport timeimport ServerCommandParserimport imeimport uiScriptLocaleimport chatimport sysimport md5import backgroundimport osimport stringimport constinfoimport linecache########Config########DEINEIP = ""CH1PORT = CH2PORT = CH3PORT = CH4PORT = AUTHPORT = SERVERNAME = "Aeternum2"LOGINDATENSPEICHERN = 0 #0 = aus / 1 = anFORUMLINK = ""YOUTUBELINK = ""FACEBOOKLINK = ""#########################Ab hier nichts mehr ändern!######RUNUP_MATRIX_AUTH = FALSENEWCIBN_PASSPOD_AUTH = FALSELOGIN_DELAY_SEC = 0.0SKIP_LOGIN_PHASE = FALSESKIP_LOGIN_PHASE_SUPPORT_CHANNEL = FALSEFULL_BACK_IMAGE = TRUEPASSPOD_MSG_DICT = {}VIRTUAL_KEYBOARD_NUM_KEYS = 46VIRTUAL_KEYBOARD_RAND_KEY = FALSECH1STATE = 0CH2STATE = 0CH3STATE = 0CH4STATE = 0def 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 srcif locale.IsNEWCIBN() or locale.IsCIBN10(): 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 = TRUEelif locale.IsHONGKONG(): FULL_BACK_IMAGE = TRUE RUNUP_MATRIX_AUTH = TRUE PASSPOD_MSG_DICT = { "NOTELE" : locale.LOGIN_FAILURE_NOTELEBLOCK, }elif locale.IsJAPAN(): FULL_BACK_IMAGE = TRUEdef IsFullBackImage(): global FULL_BACK_IMAGE return FULL_BACK_IMAGEdef IsLoginDelay(): global LOGIN_DELAY_SEC if LOGIN_DELAY_SEC > 0.0: return TRUE else: return FALSEdef IsRunupMatrixAuth(): global RUNUP_MATRIX_AUTH return RUNUP_MATRIX_AUTH def IsNEWCIBNPassPodAuth(): global NEWCIBN_PASSPOD_AUTH return NEWCIBN_PASSPOD_AUTHdef 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, state): 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 TRUEclass 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, "HACK" : "Du wurdest wegen hacken gesperrt.", "BOT" : "Du wurdest wegen benutzung von Bots gesperrt.", "SCAM" : "Du wurdest wegen Betrug gesperrt.", "INSULT" : "Du wurdest wegen Beleidigung gesperrt.", "FAKE" : "Du wurdest aufgrund deiner Namensgebung gesperrt.", "NAME" : "Du wurdest aufgrund deiner Namensgebung gesperrt.", "BUG" : "Du wurdest wegen Bugusing gesperrt.", "DK" : "Du wurdest wegen Dauerkill gesperrt.", "OTHER" : "Du wurdest von der Serverleitung gesperrt.", } 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("demonking").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.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.connectBoard = GetObject("ConnectBoard") self.loginBoard = GetObject("LoginBoard") self.idEditLine = GetObject("ID_EditLine") self.pwdEditLine = GetObject("Password_EditLine") self.ch1_offline_demon = GetObject("Channel1_offline_demon") self.ch2_offline_demon = GetObject("Channel2_offline_demon") self.ch3_offline_demon = GetObject("Channel3_offline_demon") self.ch4_offline_demon = GetObject("Channel4_offline_demon") self.ch1_online_demon = GetObject("Channel1_online_demon") self.ch2_online_demon = GetObject("Channel2_online_demon") self.ch3_online_demon = GetObject("Channel3_online_demon") self.ch4_online_demon = GetObject("Channel4_online_demon") self.ch1_online_markiert_demon = GetObject("Channel1_online_markiert_demon") self.ch2_online_markiert_demon = GetObject("Channel2_online_markiert_demon") self.ch3_online_markiert_demon = GetObject("Channel3_online_markiert_demon") self.ch4_online_markiert_demon = GetObject("Channel4_online_markiert_demon") self.ch1_offline_markiert_demon = GetObject("Channel1_offline_markiert_demon") self.ch2_offline_markiert_demon = GetObject("Channel2_offline_markiert_demon") self.ch3_offline_markiert_demon = GetObject("Channel3_offline_markiert_demon") self.ch4_offline_markiert_demon = GetObject("Channel4_offline_markiert_demon") self.loginButton = GetObject("LoginButton") self.forum = GetObject("forum") self.youtube = GetObject("youtube") self.facebook = GetObject("facebook") self.oben_links = GetObject("oben_links") self.idEditLine.SetFontColor(71, 96, 144) self.pwdEditLine.SetFontColor(71, 96, 144) ## ACCMANAGER self.endles = GetObject("endles") # 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() except: import exception exception.Abort("LoginWindow.__LoadScript.BindObject") self.serverBoard.OnKeyUp = ui.__mem_func__(self.__ServerBoard_OnKeyUp) self.xServerBoard, self.yServerBoard = self.serverBoard.GetLocalPosition() self.loginButton.SetEvent(ui.__mem_func__(self.__OnClickLoginButton)) self.forum.SetEvent(ui.__mem_func__(self.__forum)) self.youtube.SetEvent(ui.__mem_func__(self.__youtube)) self.facebook.SetEvent(ui.__mem_func__(self.__facebook)) ## ACCMANAGER self.endles.SetEvent(self.__OnClickExitButton) ## END ACCMANAGER 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("demonking").Show() 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(1, 1, 1) 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=ij¸¯ÅÍ ¼±Åà À妽º (¾ø°Å³ª -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, 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[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, 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): self.ch1_offline_markiert_demon.Hide() self.ch2_offline_markiert_demon.Hide() self.ch3_offline_markiert_demon.Hide() self.ch4_offline_markiert_demon.Hide() self.ch1_online_markiert_demon.Hide() self.ch2_online_markiert_demon.Hide() self.ch3_online_markiert_demon.Hide() self.ch4_online_markiert_demon.Hide() self.ch3_online_demon.Hide() #Auskommentieren wenn ihr CH3+4 habt self.ch4_online_demon.Hide() #Auskommentieren wenn ihr CH3+4 habt global DEINEIP global CH1PORT global AUTHPORT global CH2PORT global SERVERNAME global CH3PORT global CH4PORT global CH1STATE global CH2STATE global CH3STATE global CH4STATE global LOGINDATENSPEICHERN if LOGINDATENSPEICHERN==1: login = linecache.getline("pack/loginsetting", 1) password = linecache.getline("pack/loginsetting", 2) self.idEditLine.SetText(login) self.pwdEditLine.SetText(password) id = self.idEditLine.GetText() id = id.replace('n', '') self.idEditLine.SetText(id) self.ch1_offline_demon.SetEvent(ui.__mem_func__(self.__OnClickch1_demon)) self.ch2_offline_demon.SetEvent(ui.__mem_func__(self.__OnClickch2_demon)) self.ch3_offline_demon.SetEvent(ui.__mem_func__(self.__OnClickch3_demon)) self.ch4_offline_demon.SetEvent(ui.__mem_func__(self.__OnClickch4_demon)) self.ch1_online_demon.SetEvent(ui.__mem_func__(self.__OnClickch1_demon)) self.ch2_online_demon.SetEvent(ui.__mem_func__(self.__OnClickch2_demon)) self.ch3_online_demon.SetEvent(ui.__mem_func__(self.__OnClickch3_demon)) self.ch4_online_demon.SetEvent(ui.__mem_func__(self.__OnClickch4_demon)) self.ch1_online_markiert_demon.SetEvent(ui.__mem_func__(self.__OnClickch1_demon)) self.ch2_online_markiert_demon.SetEvent(ui.__mem_func__(self.__OnClickch2_demon)) self.ch3_online_markiert_demon.SetEvent(ui.__mem_func__(self.__OnClickch3_demon)) self.ch4_online_markiert_demon.SetEvent(ui.__mem_func__(self.__OnClickch4_demon)) self.ch1_offline_markiert_demon.SetEvent(ui.__mem_func__(self.__OnClickch1_demon)) self.ch2_offline_markiert_demon.SetEvent(ui.__mem_func__(self.__OnClickch2_demon)) self.ch3_offline_markiert_demon.SetEvent(ui.__mem_func__(self.__OnClickch3_demon)) self.ch4_offline_markiert_demon.SetEvent(ui.__mem_func__(self.__OnClickch4_demon)) print "XMAS_SNOW ON" background.EnableSnow(1) # 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() self.__LoadACCNames() 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() ##Statecheck import socket, os ip = DEINEIP s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) s2 = socket.socket(socket.AF_INET, socket.SOCK_STREAM) #s3 = socket.socket(socket.AF_INET, socket.SOCK_STREAM) #Einkommentieren wenn CH 3 + 4 #s4 = socket.socket(socket.AF_INET, socket.SOCK_STREAM) #Einkommentieren wenn CH 3 + 4 #Channel1 try: s.connect((ip,CH1PORT)) s.close() self.ch1_offline_demon.Hide() self.ch1_online_demon.Show() CH1STATE = 1 except: self.ch1_online_demon.Hide() CH1STATE = 0 s.close() #Channel2 try: s2.connect((ip,CH2PORT)) s2.close() CH2STATE = 1 self.ch2_offline_demon.Hide() self.ch2_online_demon.Show() except: self.ch2_online_demon.Hide() CH2STATE = 0 s2.close() ####Channel3 Einkommentieren wenn CH 3 + 4 #try: # s3.connect((ip,CH3PORT)) # s3.close() # CH3STATE = 1 # self.ch3_offline_demon.Hide() # self.ch3_online_demon.Show() #except: # self.ch3_online_demon.Hide() # CH3STATE = 0 # ###Channel4 #try: # s4.connect((ip,CH4PORT)) # s4.close() # CH4STATE = 1 # self.ch4_offline_demon.Hide() # self.ch4_online_demon.Show() #except: # self.ch4_online_demon.Hide() # CH4STATE = 0 self.stream.SetConnectInfo(DEINEIP, CH1PORT, DEINEIP, AUTHPORT) net.SetServerInfo(SERVERNAME + " - Ch 1") net.SetMarkServer(DEINEIP, CH1PORT) app.SetGuildMarkPath("10.tga") app.SetGuildSymbolPath("10") if CH1STATE: self.ch1_online_demon.Hide() self.ch1_online_markiert_demon.Show() else: self.ch1_offline_demon.Hide() self.ch1_offline_markiert_demon.Show() if CH2STATE: self.ch2_online_demon.Show() self.ch2_online_markiert_demon.Hide() else: self.ch2_offline_demon.Show() self.ch2_offline_markiert_demon.Hide() if CH3STATE: self.ch3_online_demon.Show() self.ch3_online_markiert_demon.Hide() else: self.ch3_offline_demon.Show() self.ch3_offline_markiert_demon.Hide() if CH4STATE: self.ch4_online_demon.Show() self.ch4_online_markiert_demon.Hide() else: self.ch4_offline_demon.Show() self.ch4_offline_markiert_demon.Hide() global SKIP_LOGIN_PHASE if SKIP_LOGIN_PHASE: if not self.loginInfo: self.connectBoard.Hide() def __OpenLoginBoard(self): print "XMAS_SNOW ON" background.EnableSnow(1) # 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() self.__LoadACCNames() 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: if locale.IsCIBN10(): if name[0] == "#": self.serverList.InsertItem(-1, " %s" % (name[1:])) else: self.serverList.InsertItem(id, " %s" % (name)) visible_index += 1 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("demonking").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.__RefreshServerList() self.__OpenServerBoard() def __OnClickch1_demon(self): global DEINEIP global CH1PORT global AUTHPORT global SERVERNAME self.stream.SetConnectInfo(DEINEIP, CH1PORT, DEINEIP, AUTHPORT) net.SetServerInfo(SERVERNAME + " - Ch 1") net.SetMarkServer(DEINEIP, CH1PORT) app.SetGuildMarkPath("10.tga") app.SetGuildSymbolPath("10") if CH1STATE: self.ch1_online_demon.Hide() self.ch1_online_markiert_demon.Show() else: self.ch1_offline_demon.Hide() self.ch1_offline_markiert_demon.Show() if CH2STATE: self.ch2_online_demon.Show() self.ch2_online_markiert_demon.Hide() else: self.ch2_offline_demon.Show() self.ch2_offline_markiert_demon.Hide() if CH3STATE: self.ch3_online_demon.Show() self.ch3_online_markiert_demon.Hide() else: self.ch3_offline_demon.Show() self.ch3_offline_markiert_demon.Hide() if CH4STATE: self.ch4_online_demon.Show() self.ch4_online_markiert_demon.Hide() else: self.ch4_offline_demon.Show() self.ch4_offline_markiert_demon.Hide() def __OnClickch2_demon(self): global DEINEIP global CH2PORT global AUTHPORT global SERVERNAME self.stream.SetConnectInfo(DEINEIP, CH2PORT, DEINEIP, AUTHPORT) net.SetServerInfo(SERVERNAME + " - Ch 2") net.SetMarkServer(DEINEIP, CH2PORT) app.SetGuildMarkPath("10.tga") app.SetGuildSymbolPath("10") if CH2STATE: self.ch2_online_demon.Hide() self.ch2_online_markiert_demon.Show() else: self.ch2_offline_demon.Hide() self.ch2_offline_markiert_demon.Show() if CH1STATE: self.ch1_online_demon.Show() self.ch1_online_markiert_demon.Hide() else: self.ch1_offline_demon.Show() self.ch1_offline_markiert_demon.Hide() if CH3STATE: self.ch3_online_demon.Show() self.ch3_online_markiert_demon.Hide() else: self.ch3_offline_demon.Show() self.ch3_offline_markiert_demon.Hide() if CH4STATE: self.ch4_online_demon.Show() self.ch4_online_markiert_demon.Hide() else: self.ch4_offline_demon.Show() self.ch4_offline_markiert_demon.Hide() def __OnClickch3_demon(self): global DEINEIP global CH3PORT global AUTHPORT global SERVERNAME self.stream.SetConnectInfo(DEINEIP, CH3PORT, DEINEIP, AUTHPORT) net.SetServerInfo(SERVERNAME + " - Ch 3") net.SetMarkServer(DEINEIP, CH3PORT) app.SetGuildMarkPath("10.tga") app.SetGuildSymbolPath("10") if CH3STATE: self.ch3_online_demon.Hide() self.ch3_online_markiert_demon.Show() else: self.ch3_offline_demon.Hide() self.ch3_offline_markiert_demon.Show() if CH2STATE: self.ch2_online_demon.Show() self.ch2_online_markiert_demon.Hide() else: self.ch2_offline_demon.Show() self.ch2_offline_markiert_demon.Hide() if CH1STATE: self.ch1_online_demon.Show() self.ch1_online_markiert_demon.Hide() else: self.ch1_offline_demon.Show() self.ch1_offline_markiert_demon.Hide() if CH4STATE: self.ch4_online_demon.Show() self.ch4_online_markiert_demon.Hide() else: self.ch4_offline_demon.Show() self.ch4_offline_markiert_demon.Hide() def __OnClickch4_demon(self): global DEINEIP global CH4PORT global AUTHPORT global SERVERNAME self.stream.SetConnectInfo(DEINEIP, CH4PORT, DEINEIP, AUTHPORT) net.SetServerInfo(SERVERNAME + " - Ch 4") net.SetMarkServer(DEINEIP, CH4PORT) app.SetGuildMarkPath("10.tga") app.SetGuildSymbolPath("10") if CH4STATE: self.ch4_online_demon.Hide() self.ch4_online_markiert_demon.Show() else: self.ch4_offline_demon.Hide() self.ch4_offline_markiert_demon.Show() if CH2STATE: self.ch2_online_demon.Show() self.ch2_online_markiert_demon.Hide() else: self.ch2_offline_demon.Show() self.ch2_offline_markiert_demon.Hide() if CH3STATE: self.ch3_online_demon.Show() self.ch3_online_markiert_demon.Hide() else: self.ch3_offline_demon.Show() self.ch3_offline_markiert_demon.Hide() if CH1STATE: self.ch1_online_demon.Show() self.ch1_online_markiert_demon.Hide() else: self.ch1_offline_demon.Show() self.ch1_offline_markiert_demon.Hide() def __forum(self): global FORUMLINK os.system("start " + FORUMLINK) def __youtube(self): global YOUTUBELINK os.system("start " + YOUTUBELINK) def __facebook(self): global FACEBOOKLINK os.system("start " + FACEBOOKLINK) 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 if LOGINDATENSPEICHERN==1: id = self.idEditLine.GetText() pwd = self.pwdEditLine.GetText() f = open("packloginsetting", "w") f.write (id + "n" + pwd) f.close() self.Connect(id, pwd) Bien abra que editar un par de cosas para que nos funcione correctamente.
     
    Lo primero será editar la "DEINEIP" que será poner nuestra ip. Ejemplo: 255.25.25.25
     
    Lo segundo será editar los "CH1PORT - CH2PORT - CH3PORT - CH4PORT"
     
    Para conseguir los CH Port tendremos que ir al FTP y ir a Channel 1 y abrimos el Config y hay pondrá "Port: " y ese será el CH1Port ahora aremos lo mismo con los 4.
     
    Bien ahora que tenemos los 4 falta 1 sola cosa. El "AUTHPORT" que estará en cada caso en auth o en mi caso "invoice" y abriremos otra vez Config y pondremos el PORT.
     
    Una vez hecho eso compilamos root y sustituimos el antiguo por el nuevo.
     
    Ahora descompilamos nuestro locale "locale_de locale_es" lo que tengáis.
     
    Bien y tendremos que abrir la carpeta UI.
     
    Una vez hay sustituimos el archivo "login.png" por el nuevo que os daré:
     

     
    Bien ahora tendremos que sustituir "loginwindow.py" por el que os daré:
    import uiScriptLocale LOCALE_PATH = uiScriptLocale.LOGIN_PATHSERVER_BOARD_HEIGHT = 220SERVER_LIST_HEIGHT = 170window = { "name" : "LoginWindow", "sytle" : ("movable",), "x" : 0, "y" : 0, "width" : SCREEN_WIDTH, "height" : SCREEN_HEIGHT, "children" : ( ## Board { "name" : "demonking", "type" : "expanded_image", "x" : 0, "y" : 0, "x_scale" : float(SCREEN_WIDTH) / 1024.0, "y_scale" : float(SCREEN_HEIGHT) / 768.0, #"x_scale" : float(SCREEN_WIDTH) / 1920.0, #"y_scale" : float(SCREEN_HEIGHT) / 1080.0, "image" : "locale/de/ui/login.jpg", "children" : ( { "name" : "unten_rechts", "type" : "image", "x" : SCREEN_WIDTH - 1920, "y" : SCREEN_HEIGHT - 80, "image" : "locale/de/ui/login/unten_rechts.tga", }, { "name" : "unten_links", "type" : "image", "x" : 0, "y" : SCREEN_HEIGHT - 16, "image" : "locale/de/ui/login/unten_links.tga", }, { "name" : "endles", "type" : "button", "x" : (SCREEN_WIDTH - 127) / 1, "y" : 20, "default_image" : "locale/de/ui/login/exit.tga", "over_image" : "locale/de/ui/login/exit_hover.tga", "down_image" : "locale/de/ui/login/exit_hover.tga", "text" : "", }, { "name" : "forum", "type" : "button", "x" : (SCREEN_WIDTH - 136) / 1, "y" : (SCREEN_HEIGHT - 56) / 1, "default_image" : "locale/de/ui/login/forum.tga", "over_image" : "locale/de/ui/login/forum_hover.tga", "down_image" : "locale/de/ui/login/forum_hover.tga", "text" : "", }, { "name" : "youtube", "type" : "button", "x" : (SCREEN_WIDTH - 254) / 1, "y" : (SCREEN_HEIGHT - 56) / 1, "default_image" : "locale/de/ui/login/Youtube.tga", "over_image" : "locale/de/ui/login/Youtube_hover.tga", "down_image" : "locale/de/ui/login/Youtube_hover.tga", "text" : "", }, { "name" : "facebook", "type" : "button", "x" : (SCREEN_WIDTH - 374) / 1, "y" : (SCREEN_HEIGHT - 56) / 1, "default_image" : "locale/de/ui/login/fanpage.tga", "over_image" : "locale/de/ui/login/fanpage_hover.tga", "down_image" : "locale/de/ui/login/fanpage_hover.tga", "text" : "", }, ) }, ## ConnectBoard { "name" : "ConnectBoard", "type" : "thinboard", "x" : 10000, "y" : 10000, "width" : 5, "height" : 5, "children" : ( ), }, ## LoginBoard { "name" : "LoginBoard", "type" : "image", "x" : 30, "y" : 0, "image" : "locale/de/ui/login/loginbox.tga", "children" : ( { "name" : "ID_EditLine", "type" : "editline", "x" : 90, "y" : 86, "width" : 120, "height" : 18, "input_limit" : 16, "enable_codepage" : 0, "r" : 0.0, "g" : 0.0, "b" : 0.0, "a" : 9.0, }, { "name" : "Password_EditLine", "type" : "editline", "x" : 90, "y" : 142, "width" : 120, "height" : 18, "input_limit" : 16, "secret_flag" : 1, "enable_codepage" : 0, "r" : 0.0, "g" : 0.0, "b" : 0.0, "a" : 9.0, }, { "name" : "LoginButton", "type" : "button", "x" : 75, "y" : 190, "default_image" : "locale/de/ui/login/Login.tga", "over_image" : "locale/de/ui/login/Login_hover.tga", "down_image" : "locale/de/ui/login/Login_hover.tga", "text" : "", }, { "name" : "Channel1_online_markiert_demon", "type" : "button", "x" : 32, "y" : 269, #"vertical_align" : "center", "default_image" : "locale/de/ui/login/Channel1_online_hover.tga", "over_image" : "locale/de/ui/login/Channel1_online_hover.tga", "down_image" : "locale/de/ui/login/Channel1_online_hover.tga", "text" : "", }, { "name" : "Channel2_online_markiert_demon", "type" : "button", "x" : 32, "y" : 300, #"vertical_align" : "center", "default_image" : "locale/de/ui/login/Channel2_online_hover.tga", "over_image" : "locale/de/ui/login/Channel2_online_hover.tga", "down_image" : "locale/de/ui/login/Channel2_online_hover.tga", "text" : "", }, { "name" : "Channel3_online_markiert_demon", "type" : "button", "x" : 32, "y" : 331, #"vertical_align" : "center", "default_image" : "locale/de/ui/login/Channel3_online_hover.tga", "over_image" : "locale/de/ui/login/Channel3_online_hover.tga", "down_image" : "locale/de/ui/login/Channel3_online_hover.tga", "text" : "", }, { "name" : "Channel4_online_markiert_demon", "type" : "button", "x" : 32, "y" : 362, #"vertical_align" : "center", "default_image" : "locale/de/ui/login/Channel4_online_hover.tga", "over_image" : "locale/de/ui/login/Channel4_online_hover.tga", "down_image" : "locale/de/ui/login/Channel4_online_hover.tga", "text" : "", }, { "name" : "Channel1_offline_markiert_demon", "type" : "button", "x" : 32, "y" : 269, #"vertical_align" : "center", "default_image" : "locale/de/ui/login/Channel1_offline_hover.tga", "over_image" : "locale/de/ui/login/Channel1_offline_hover.tga", "down_image" : "locale/de/ui/login/Channel1_offline_hover.tga", "text" : "", }, { "name" : "Channel2_offline_markiert_demon", "type" : "button", "x" : 32, "y" : 300, #"vertical_align" : "center", "default_image" : "locale/de/ui/login/Channel2_offline_hover.tga", "over_image" : "locale/de/ui/login/Channel2_offline_hover.tga", "down_image" : "locale/de/ui/login/Channel2_offline_hover.tga", "text" : "", }, { "name" : "Channel3_offline_markiert_demon", "type" : "button", "x" : 32, "y" : 331, #"vertical_align" : "center", "default_image" : "locale/de/ui/login/Channel3_offline_hover.tga", "over_image" : "locale/de/ui/login/Channel3_offline_hover.tga", "down_image" : "locale/de/ui/login/Channel3_offline_hover.tga", "text" : "", }, { "name" : "Channel4_offline_markiert_demon", "type" : "button", "x" : 32, "y" : 362, #"vertical_align" : "center", "default_image" : "locale/de/ui/login/Channel4_offline_hover.tga", "over_image" : "locale/de/ui/login/Channel4_offline_hover.tga", "down_image" : "locale/de/ui/login/Channel4_offline_hover.tga", "text" : "", }, { "name" : "Channel1_online_demon", "type" : "button", "x" : 32, "y" : 269, #"vertical_align" : "center", "default_image" : "locale/de/ui/login/Channel1_online.tga", "over_image" : "locale/de/ui/login/Channel1_online_hover.tga", "down_image" : "locale/de/ui/login/Channel1_online_hover.tga", "text" : "", }, { "name" : "Channel2_online_demon", "type" : "button", "x" : 32, "y" : 300, #"vertical_align" : "center", "default_image" : "locale/de/ui/login/Channel2_online.tga", "over_image" : "locale/de/ui/login/Channel2_online_hover.tga", "down_image" : "locale/de/ui/login/Channel2_online_hover.tga", "text" : "", }, { "name" : "Channel3_online_demon", "type" : "button", "x" : 32, "y" : 331, #"vertical_align" : "center", "default_image" : "locale/de/ui/login/Channel3_online.tga", "over_image" : "locale/de/ui/login/Channel3_online_hover.tga", "down_image" : "locale/de/ui/login/Channel3_online_hover.tga", "text" : "", }, { "name" : "Channel4_online_demon", "type" : "button", "x" : 32, "y" : 362, #"vertical_align" : "center", "default_image" : "locale/de/ui/login/Channel4_online.tga", "over_image" : "locale/de/ui/login/Channel4_online_hover.tga", "down_image" : "locale/de/ui/login/Channel4_online_hover.tga", "text" : "", }, { "name" : "Channel1_offline_demon", "type" : "button", "x" : 32, "y" : 269, #"vertical_align" : "center", "default_image" : "locale/de/ui/login/Channel1_offline.tga", "over_image" : "locale/de/ui/login/Channel1_offline_hover.tga", "down_image" : "locale/de/ui/login/Channel1_offline_hover.tga", "text" : "", }, { "name" : "Channel2_offline_demon", "type" : "button", "x" : 32, "y" : 300, #"vertical_align" : "center", "default_image" : "locale/de/ui/login/Channel2_offline.tga", "over_image" : "locale/de/ui/login/Channel2_offline_hover.tga", "down_image" : "locale/de/ui/login/Channel2_offline_hover.tga", "text" : "", }, { "name" : "Channel3_offline_demon", "type" : "button", "x" : 32, "y" : 331, #"vertical_align" : "center", "default_image" : "locale/de/ui/login/Channel3_offline.tga", "over_image" : "locale/de/ui/login/Channel3_offline_hover.tga", "down_image" : "locale/de/ui/login/Channel3_offline_hover.tga", "text" : "", }, { "name" : "Channel4_offline_demon", "type" : "button", "x" : 32, "y" : 362, #"vertical_align" : "center", "default_image" : "locale/de/ui/login/Channel4_offline.tga", "over_image" : "locale/de/ui/login/Channel4_offline_hover.tga", "down_image" : "locale/de/ui/login/Channel4_offline_hover.tga", "text" : "", }, ), }, { "name" : "oben_rechts", "type" : "image", "x" : SCREEN_WIDTH - 1920, "y" : 0, #"horizontal_align" : "center", "image" : "locale/de/ui/login/oben_rechts.tga", }, { "name" : "oben_links", "type" : "image", "x" : 36, "y" : 0, "image" : "locale/de/ui/login/oben_links.tga", }, ## ServerBoard { "name" : "ServerBoard", "type" : "thinboard", "x" : 0, "y" : SCREEN_HEIGHT - SERVER_BOARD_HEIGHT - 150, "width" : 375, "height" : SERVER_BOARD_HEIGHT, "horizontal_align" : "center", "children" : ( ## ListBox { "name" : "ServerList", "type" : "listbox2", "x" : 10, "y" : 40, "width" : 232, "height" : SERVER_LIST_HEIGHT, "row_count" : 18, "item_align" : 0, }, { "name" : "ChannelList", "type" : "listbox", "x" : 255, "y" : 40, "width" : 109, "height" : SERVER_LIST_HEIGHT, "item_align" : 0, }, ), }, ),} Bien ahora que tenemos eso iremos a la carpeta login y sustituimos por los archivos que os daré ahora mismo:
     
    Debes iniciar sesión para ver el contenido del enlace en esta publicación.
     
    Bien una vez hecho todo eso compilamos todo y lo sustituimos.
     
    Ahora lo que haremos será coger estos dos archivos que os voy a dar ahora mismo:
     
    Debes iniciar sesión para ver el contenido del enlace en esta publicación.
     
    Y los pondremos en la raíz del cliente. "Donde das click al Metin2.exe para abrir el sv".
     
    Y ya esta debería funcionar ^.^
     
    Créditos: 
    Debes iniciar sesión para ver el contenido del enlace en esta publicación.  
    Y mi agradecimiento a jfirewall por decirme como hacer funcionar los port.
     
×
×
  • Crear nuevo...