Jump to content

Tabla del Honor

Contenido popular

Showing content with the highest reputation on 12/07/20 en todas las áreas

  1. Informations https://gyazo.com/collections/d0dec5372a6ecb26b6aab9353cd1d100 - Discord : Mustang#1649 - Boost 1.7.2 - Cryptopp 8.2.0 - MariaDB 10.3 - FreeBSD 12.1 RELEASE (32 BIT & 64 BIT) - LLVM-DEVEL-11.0 (CLANG 11) - Mob proto & Item Pro from official v20.1.3 - race.msm from officiel v20.1.3 - Save account system - Official create/select character - Syserr clean - Only official Metin2 system - No one custom system added - No one syserr was hide with // - Sell with VDI full source+start - No coredown, all fix applied - Visual Studio 2019 - Granny 2.9 Service.h #ifndef __INC_SERVICE_H__ #define __INC_SERVICE_H__ /**************************************** * title_name : System Info Client * filename : ../../common/service.h * author : Mustang * version : Version 1.2 * date : 25 03 2020 * update : 01 05 2020 ****************************************/ /*** YMIR System ***/ #define ENABLE_PET_SYSTEM // Système de pet de Ymir #define ENABLE_UDP_BLOCK // Block UDP port #define ENABLE_TRADABLE_ICON // Effet d'icon lors des échanges #define ENABLE_HIGHLIGHT_SYSTEM // Effet slot nouveau item #define ENABLE_CHEQUE_SYSTEM // Système de Won #define ENABLE_GAYA_SYSTEM // Système de Gaya #define ENABLE_SASH_SYSTEM // Système d'étole #define ENABLE_PENDANT_SYSTEM // Système de talisman du FR #define ENABLE_NEW_BONUS // Les nouveaux bonus du FR #define ENABLE_ELEMENT_TARGET // Affiche l'élement du monstre #define ENABLE_MAGIC_REDUCTION_SYSTEM // Pierre réduction magique du FR #define ENABLE_QUIVER_SYSTEM // Système de carquois #define ENABLE_SOULBIND_SYSTEM // Système de liaison d'âme #define ENABLE_TRANSMUTATION_SYSTEM // Système de transmutation #define ENABLE_SHOW_MOB_INFO // Niveau et aggresivité des monstres #define ENABLE_DICE_SYSTEM // Système de drop aléatoire #define ENABLE_COSTUME_WEAPON_SYSTEM // Système de costume d'arme #define ENABLE_MOUNT_COSTUME_SYSTEM // Système de costume monture #define ENABLE_NEW_EMOTION // Système de new emotion #define ENABLE_MESSENGER_BLOCK // Système de block message #define ENABLE_VIEW_EQUIPMENT_SYSTEM // Système de visualisation du profil #define ENABLE_OX_RENEWAL // Mise à jours de l'OX de l'officiel #define ENABLE_AGGREGATE_MONSTER_EFFECT // Système d'effet des capes #define ENABLE_CHANGE_CHANNEL_SYSTEM // Système de changement de channel #define ENABLE_MAILBOX_SYSTEM // Système de boîte aux lettres #define ENABLE_AURA_SYSTEM // Système d'aura de l'officiel #define ENABLE_COSTUME_ENCHANT_SYSTEM // Changement de switch bonus costume #define ENABLE_ATTR_TRANSFER_SYSTEM // Système de transfert bonus costume #define ENABLE_SOUL_EVENT_SYSTEM // Soul event system #define ENABLE_GROWTH_PET_SYSTEM // Système de familier /*** YMIR System ***/ /*** Official Update System ***/ #define ENABLE_PARTY_UPDATE // Mise à jour de l'officiel #define ENABLE_MOUNT_TRANSMUTATION_SYSTEM // Système de transmutation monture #define ENABLE_CUBE_RENEWAL // Les bonus sont sauvés lors d'un craft #define ENABLE_CUBE_STONE_RENEWAL // Les pierres sont sauvés lors d'un craft #define ENABLE_YMIR_AFFECT_FIX // Accumulation de bonus d'effet à la connexion #define ENABLE_PAERYONG_CENTER // Rugissement du dragon à distance #define ENABLE_KNOCBACK_SYSTEM // KNOCKBACK Patch Skill 17.5 #define ENABLE_NEW_GYEONGGONG_SKILL // Pas de plume explosif de l'officiel #define ENABLE_GACHA_SYSTEM // ITEM_GACHA #define ENABLE_QUEST_RENEWAL // Quest renewal with categories #define ENABLE_GRADE_MYTH // Dragon soul mythical grade #define ENABLE_EXTENDED_SOCKET // Extend item sockets /*** Official Update System ***/ /*** Enable Hack System ***/ #define ENABLE_CHECK_GHOSTMODE_HACK // Respawn si le joueurs est en ghost mode /*** Enable Hack System ***/ /*** Enable System ***/ #define ENABLE_PORT_SECURITY // Port p2p fix #define ENABLE_IMPROVED_PACKET_ENCRYPTION // Encryption des packets #define ENABLE_EXTENDED_INVENTORY // Pages d'inventaire supplémentaire //#define ENABLE_IGNORE_LOW_POWER_BUFF // Ignore low power buff /*** Enable System ***/ #endif Locale_inc.h /**************************************** * title_name : System Info Client * filename : ../../UserInterface/Locale_inc.h * author : Mustang * version : Version 1.2 * date : 25 03 2020 * update : 08 06 2020 ****************************************/ /*** YMIR Services System ***/ #define LOCALE_SERVICE_EUROPE /*** YMIR Services System ***/ /*** YMIR System ***/ #define ENABLE_COSTUME_SYSTEM // Système de costume #define ENABLE_ENERGY_SYSTEM // Système d'energie #define ENABLE_DRAGON_SOUL_SYSTEM // Système d'alchimie du dragon #define ENABLE_NEW_EQUIPMENT_SYSTEM // Système de ceinture #define ENABLE_TRADABLE_ICON // Système d'effet d'échanges #define ENABLE_HIGHLIGHT_SYSTEM // Système "nouveau item" #define ENABLE_CHEQUE_SYSTEM // Système de Won #define ENABLE_GAYA_SYSTEM // Système de Gaya #define ENABLE_SASH_SYSTEM // Système de sash #define ENABLE_MOUNT_COSTUME_SYSTEM // Système de monture #define ENABLE_PENDANT_SYSTEM // Système de talisman #define ENABLE_NEW_BONUS // Système de talisman et nouveau bonus #define ENABLE_ELEMENT_TARGET // Système de target d'élement #define ENABLE_MAGIC_REDUCTION_SYSTEM // Système de réduction magie #define ENABLE_COSTUME_WEAPON_SYSTEM // Système de costume d'arme #define ENABLE_QUIVER_SYSTEM // Système de carquois #define ENABLE_SOULBIND_SYSTEM // Système de liason d'âme #define ENABLE_TRANSMUTATION_SYSTEM // Système de transmutation #define ENABLE_BONUS_BOARD // Système de tableau de bonus #define ENABLE_NEW_MINIMAP // Renew de la minimap #define ENABLE_TAB_NEXT_TARGET // Système de switch de cible #define ENABLE_SHOW_MOB_INFO // Système d'info niveau/aggressivité #define ENABLE_TASKBAR_GROUPING // Fenêtre barre de tache séparé comme l'officiel #define ENABLE_DICE_SYSTEM // Système de drop aléatoire #define ENABLE_NEW_EMOTION // Système de new emotion #define ENABLE_MESSENGER_BLOCK // Système de block joueur #define ENABLE_VIEW_EQUIPMENT_SYSTEM // Système de visualisation des équipements #define ENABLE_AGGREGATE_MONSTER_EFFECT // Système d'effet des capes #define ENABLE_CHANNEL_CHANGE_SYSTEM // Système de changement de channel #define ENABLE_MAILBOX_SYSTEM // Système de boite aux lettres #define ENABLE_AURA_SYSTEM // Système d'aura #define ENABLE_ENCHANT_COSTUME_SYSTEM // Système switch bonus costume #define ENABLE_ATTR_TRANSFER_SYSTEM // Système de transfert bonus costume #define ENABLE_SOUL_SYSTEM // Soul system #define ENABLE_GROWTH_PET_SYSTEM // Growth pet system /*** YMIR System ***/ /*** Official Update ***/ #define ENABLE_PARTY_UPDATE // Système de groupe map officiel #define ENABLE_MOUNT_TRANSMUTATION_SYSTEM // Système de transmutation pour monture #define ENABLE_OX_RENEWAL // Message OX de l'officiel #define ENABLE_NEW_GYEONGGONG_SKILL // Pas de plume explosif de l'officiel #define ENABLE_NINJA_INVISIBILITY_RENEW // Système d'invisibilité au complet #define ENABLE_GACHA_SYSTEM // ITEM_GACHA #define ENABLE_QUEST_RENEWAL // Quest page renewal #define ENABLE_DS_GRADE_MYTH // Dragon soul mythical grade #define ENABLE_MOB_SCALE // ENABLE_MOB_SCALE like official #define ENABLE_EXTENDED_SOCKET // Extended item sockets /*** Official Update ***/ /*** Enable System by Mustang ***/ #define ENABLE_EXTENDED_INVENTORY // 4 Pages d'inventaire #define ENABLE_NEW_REFRESH_MONEY // Nouvelle actualisation des yangs #define ENABLE_PERFORMANCE_BOOST // Boost des performance du client /*** Enable System by Mustang ***/ Update 05/07/2020 - Compatibility with 32/64 bits FREEBSD - All errors encountered resolved Client test available with 15 account saved : Download
    4 puntos
  2. ServerFiles con game 40k+. Muy estables. Game muy protegido contra varios hacks. Itemshop en lua & mysql programado por SeMa. Pet System 2.0 de BlackYucko & PACIFICADOR para 40k con Pet-Gui & slot para items. Sistema de monturas como el official. Runs igual al .es. ALGUNAS IMAGENES!. DESCARGAS! ServerFiles https://mega.nz/#!vhMnmZRT!fPpRXt6A-YS3cJmcxD7k_ij6d8Wiuince16IkP4o3zU Cliente https://cloud.mail.ru/public/5634c8238cbb/Metin2Syneraa-Dedicado.rar Mysql https://mega.nz/#!H9VB1TJL!mUWbd3A_mokLF2M74AnVGQFkkYVIVLtOpQc0UC97Nqs Agregar este diff al game para que conecte... 00215F69: AC EE 00215F6A: 61 EE 00215F6B: 11 EE 00215F6C: 54 6E 00216846: AC EE 00216847: 61 EE 00216848: 11 EE 00216849: 54 6E DATOS DE MYSQL ID: drakon2_es PASS: seki2mako4
    3 puntos
  3. Hola amigos de Metin2Zone. EL dia de hoy les traigo unos files muy buenos que he estado probando y la verdad me parecen muy buenos, los files cuentan con todos los sistemas actuales del metin2 oficial. Así que sin más que decir, les dejo la descripción. Sistemas: - SwitchBoot InGame - Union al alma - Alquimia Totalmente Funcional - Atuendos actuales - Monturas Actuales - Pets (Pet de mejora + pet de ello) - Mapas del Oficial - Dungeons del oficial - Tienda Offline - Visualizaciones de tienda - Sistema de estolas -Transfiguracion - Cambio Rapido de Equipo - Moneda Gaya - Moneda Won - Sistema de Gremio (Oficial) - Cambio de Channel - Evento Okey - Eventos PvP - Sistema de Rangos - Cambio de Clima - Auto Guardar cuentas ingame - Proteccion de cuenta (al iniciar el pj se bloquea todo el teclado, no deja realizar la accion de la tecla hasta no ingresar la contraseña - 4 Inventarios - Sistema de Talismanes del Oficial Y Muchos mas sistemas que pueden ir descubriendo dia a dia -> Datos: Pass Mysql: asilzade -> Cuenta Admin InGame ID: asilzade PASS: 12345 Recomendaciones: Editar la opcion de guardado de cuentas en el cliente, pues se aloja en un archivo en la raiz del cliente. Si no se usa una proteccion adecuada para el archivo, en el momento que lo lleguen a subir a un Servidor para subirlo como suyo y sacar provecho (todos lo quieren hacer) los terceros querran este archivo para entrar y desocupar cuentas, por ello, recomiendo que le creen una extencion distinda al archivo y lo protejan, oh busquen la forma de que dicho archivo se aloje en un epk con proteccion anticompilacion... Imagenes Creditos: Metin2Web Descarga: Mega MediaFire Virus Total
    2 puntos
  4. Hace mucho no aporto nada. Hoy recorde este cliente, que fue en el primero que trabajo sobre mi trallectoria en Metin2. Este cliente de seguro les servira a algunos que quieran trabajar sobre un cliente 100% Virgen. Como a algunos que son principiantes y quieren adentrarse en la programacion sobre Metin2. Sin Mas Rodeos LINK: http://depositfiles.org/files/rgvq288ri El Cliente es compatible con los Files Ahynoa (Buscarlos en Server Files, estan posteados por mi). PD: El cliente trae: (MC,IP) . PD2: Es 100% Español. PD3: Abstengansen de criticas ofensibas. PD4: No hacen falta fotos, ya qué el cliente es igual a el .es antiguo.
    2 puntos
  5. Discord : Mustang#1649 Client test available with 15 account saved : Download
    2 puntos
  6. Game Difeado para quien no sepa: http://www.mediafire.com/file/h52uzfqknyddzt5/game.rar/file
    2 puntos
  7. flaka

    Interfaz+taskbar

    bueno chicos aquí les dejo la interfaz que potoshope es la primera que hago a si que disfrútenla si les gusta xdd como ponerla en el cliente: xd hay muchos que lo saben pero bueno no esta de de mas decirlo, 1º extraemos el rar en el escritorio donde quieran xd 2º cogemos el root de vuestro cliente lo descompilamos y metemos los archivos del root que aparecen en la carpeta del rar 3º cogemos el uiscript de vuestro cliente lo descompilamos y metemos los archivos igual que en el paso (2º) xd 4º cogemos el locale de vuestro cliente lo descompilamos y vamos asta la carpeta ui allí metemos el taskbar.py (no lo modifiques ) luego vamos a windows y metemos el dds y igual con el guild 5º cogemos el etc de vuestro cliente descompilamos vamos asta la carpeta ui allí meten los dds, luego abren la carpeta pattern y meten lo de esa carpeta xd (no se les olvide compilar las carpetas de nuevo xdd) 6º y ultimo xd cogen el epk, eix y lo meten en la carpeta pack de buestro cliente, buscamos el index abrimos con notepad++ o el que uséis y vamos asta la ultima linea damos enter y ponemos * (enter) flaka y con esto listo xddd con esa guia tan noob debería funcionar xd si hay algún fallo alguna duda no dudes en preguntar . listo eso es todo ahora me despido cuídense besitos :* 1º link https://www.dropbox.com/s/71l97b6ngu5hmeh/interfazby%20flaka.rar 2º (mega) https://mega.co.nz/#!dJkEEBQK!jU-cZvjPfxo92rgmF2MR0Zxy9gE8lDzICaQGYh03uBs bug de mp gm reparado, bug ctrl+q reparado
    1 punto
  8. Muy buenas a todos, En nombre de la comunidad M2Tec, me gustaría presentarles el generador de parches en línea. ¿Qué es y qué hace exactamente? Esta es una herramienta sencilla creada por el personal de M2Tec, con la que puede crear fácilmente un parcheador en línea de forma gratuita para su cliente. Actualmente estamos en una fase beta y comenzaremos a actualizar su contenido muy pronto, incluyendo un selector multi-idioma, ahora mismo está disponible únicamente en Ingles. Puede acceder a través de este enlace: Enlace Analisis de URL: Enlace Si tiene algún problema o sugerencia, por favor contacte con nosotros en el foro de la comunidad, es la única forma que tenemos de contacto directo por el momento (aunque también puede contactar conmigo por mensaje privado). (Quiero aclarar que esto no se pública con la intención de generar SPAM o publicidad de dicha comunidad, simplemente queremos dar a conocer dicha herramienta, por lo tanto la atención por parte de la publicación va diriga a la misma, y si existe algún inconviente por favor le pido honestamente a la administración que me lo haga saber para retirarlo, gracias por su comprensión.) Saludos cordiales, Jayden
    1 punto
  9. Buenas quiero dejar estos Files Server + Source que tenia guardado en una publicación gratis que hicieron por hay, y me los han pedido varias personas para los que quieran echarle un vistaso están valorados en 500 euros, aun no lo e iniciado cuando pueda subo imágenes mías, ante mano les digo para los que hicieron el comentario no recuerdo bien lo de la seguridad esta en el source un archivo llamado config.cpp hay ponen la ip pero para hacerlo en la parte de arriba le sale una web en esa web ponen la ip con un codigo hexadeximal lo copian tal cual y lo cambian por otra ip que este alli. sino quieren hacer todo ese proceso pueden usar 6 ip que hay salen y ponerlas en su virtualbox ya para usarlo en uno de paga si les toca crear la licencia como les estoy diciendo arriba saludos, otra cosa que vi los root no esta en la carpeta root esta en otra carpeta creo que era networt o algo asi mas adelante les informo. estos files no tiene datos así que toca crearlos como el root y contraseña del navicat link de descargas. https://programas-juegos-max.blogspot.com/2020/07/metin2-zentoria2-source-server-file.html
    1 punto
  10. Bueno chicos os traigo este compilador / descompilador, tiene una sensilla interfaz y ala vez no hace falta hacer xml ( ya que el programa mismo no los hace) basta con poner vuestros archivos en las carpetas de los eix/epk. Descarga por MEGA(Link actualizado por @Dilong): https://mega.nz/#!loQk0Ljb!YVTayTradq7UwZDRrmr5EijAgEAURnvo1w5XZL13V8w Recomiendo actualizar las librerias c++ por si os da el error de mscore100.dll. http://www.microsoft...on.aspx?id=5555 Creditos: Luscha, Inforge.
    1 punto
  11. Buenas quiero dejar estos Files Server + Source que encontre en turkmmo para los que quieran echarle un vistaso a esta bella interfaz de League of Legends, todo probado por mi funciona los source y el metin sin mas palabras aquí dejo imágenes y link de descargas. Link de Descarga: https://programas-juegos-max.blogspot.com/2020/06/interfaz-lol-en-metin2-maltamt2-file.html Datos de acceso: Navicat=>usuario: root clave: asilzade GM Bilgileri=>usuario: asilzade clave: 12345
    1 punto
  12. Hola, Bueno me pidio un usario que hiciera 1 video sobre como crear 1 servidor metin2 y aqui esta todo lo necesario con el video nos entendemos. https://www.youtube.com/watch?v=CCPhx6z1VSY Link's de MEGA: Datos Principales de todo "GUIA": https://mega.co.nz/#!SRRFHKZT!IhwqhoMhqfQjvFzQ7dFFXauRBH8dJ5E7E9h25Jrudy4 Cliente Omega ESP con windows.dds: https://mega.co.nz/#!CMBCmTCZ!3aeBBbhvJ7XPoVRVN_eaYc-9LMrgT79reYIAj6Y1X44 Cliente Omega Virgen: https://mega.co.nz/#!rdpQ1LJJ!9ubSUiotlFkHeD0vX12fcS1fN7sP918tdgeZvJE8fy8 SF Rain 2007+ Cliente (Nuevo link @Dilong): https://mega.nz/#F!8wYxhAAa!I-jt1PPEdeHXTMancEuYAg No-IP(DUC): https://mega.co.nz/#!jMIk2Z7C!eWN6ctcDa_cufwaqMAGkQVMDh4QGk9o93qLWeuUSIPQ EterNexus: https://mega.co.nz/#!bdxDFKBL!3Fl41l3LGq1iDePp5RhoEfFGS6pcKN_RIMsCcBkOXJI Navicat Premium Full: https://mega.co.nz/#!3QwGxKQQ!wu1Zh5zHDqHRhwB41gQBkTWtIIS5JnLH8pengEMVCAc Port Map: https://mega.co.nz/#!HM4HHYTR!C1BEcK2_vZRC4st1031KKiGAAOY32zKF0s04MjxLJL8 Traduccion Omega para el cliente sin traducir: https://mega.co.nz/#!LdgBBaLJ!m3SXX3dj9uFBGKQRZaxxjYnOkhDuASnoHr5FJKssG7o VirtualBox: https://mega.co.nz/#!LVxiWZAZ!w6XKyr2FAnPKphv9fPKkmsieiw5owvaXtIDYuwek-5c Windows.dds para el Cliente Omega Virgen sin traducir en Español[ESP]: https://mega.co.nz/#!GZwGAZxb!RBwBDCnIKsSlQOWksOEUSFb2MwxYqEgxFdOWUfzsbTU VIA HAMACHI: https://www.youtube.com/watch?v=-l4KIGVRChs VIA HAMACHI Lauling.V3: https://www.youtube.com/watch?v=lbJhKsU47No 1 LINK DE MEGA TODO LO NECESARIO. Para criticas mejor ni comenteis las ignorare solo lo e posteado para los que no saben, que comienzen aprender... Saludos, Wolf solo hice la guia de YouTube. Alguna foto http://postimg.org/image/760vcyfq5/ Fecha del Video: 27/03/2015
    1 punto
  13. Aqui les Traigo un Interface de metin2 les dejo video y link de descarga para quien Guste Bajarlo https://youtu.be/svhjZWWGt9k link descarga https://mega.nz/#!Rhkg3IRJ!YaNub45LeF8niAFoRLzdWr9IkGMJDEENq5QgVZEiaK4
    1 punto
  14. Creditos: A&J Ryan Descarga MEDIAFIRE: http://www.mediafire.com/file/dggnnxyvysa3nj3/Ryan+work.rar Descarga MEGA: https://mega.nz/#!NRB1xZgK!Bm0UGVeybvVUEU9_qUr2XVPLhGj3Zq8wtr5JMCLoIgI
    1 punto
  15. Hola Metin2Zone eh estado un poco ausente (estaba de viaje) pero les traigo este nuevo login (esta Guapo) Video: Descarga: http://www.multiupload.nl/SNCOBM2JS3 Contiene: -lib -Passwoerter -locale(pack) -root(pack) -uiscript(pack) Creditos: DEMONKING Fuente: Pro Area Saludos!
    1 punto
  16. 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: http://www.mediafire.com/?5bigetc18ba97de 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: http://www.mediafire.com/?3yj2r9b0zlqx9ub 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: Ýoshii36 Y mi agradecimiento a jfirewall por decirme como hacer funcionar los port.
    1 punto
  17. Hola gente de metin2zone, aquí les traigo aportando un cliente que encontre en epvp! Lo que tiene es lo siguiente : Link de Descarga : http://depositfiles....files/wu49vvlg4 Creadores del cliente: Omega = Omegadiklo19382 Sandoz94 = sandoz.dikulary Fuuton97 = greajya Fyuri = Fyuri31245 Trafalgar = Trafalgar932 Metin2DMT = denanodietoklobrati Medyc = Medyccydem Creditos a Sema1995 por pasarme el Post. Fuente: epvp Muchas Gracias.
    1 punto
  18. Lynx

    Winter Wolf [3D4M2]

    Link de Descarga y Video en la WEB
    1 punto
  19. Descarga: http://uploaded.net/file/munleu57 Creditos:Epvp
    1 punto
  20. Hola comunidad de Metin2Zone! Acá les traigo una de mis creaciones para Metin2: Item_Profo Full converter. Es un programa que tiene distintas funcionalidades, para el Item Proto, como son las siguientes: <El que no entienda que avise que se le explica> En seguida una breve explicación del funcionamiento: Convertir Item_Proto Cliente <=> Querys: Al elegir esta opcion, podran insertar una linea del item proto(Cliente) ejemplo: Código: <Item vnum="80013" hashName="'Barra de 500K'" name="Barra de 500K" type="18" subtype="0" weight="0" size="1" antiflag="128" flag="0" wearflag="0" immuneflag="0" gold="500000" buy_price="500000" limittype0="0" limitvalue0="0" limittype1="0" limitvalue1="0" applytype0="0" applyvalue0="0" applytype1="0" applyvalue1="0" applytype2="0" applyvalue2="0" value0="0" value1="0" value2="0" value3="0" value4="0" value5="0" socket0="65535" socket1="65535" socket2="65535" socket3="65535" socket4="65535" socket5="65535" refine_vnum="0" refine_set="0" magic_pct="0" specular="0" socket_pct="0" /> o sino, utilizar una linea de codigo del formato Insert into para convertirla a la del cliente ejemplo: Código: INSERT INTO item_proto VALUES (80013, 'Barra de 500K', 'Barra de 500K', 18, 0, 0, 1, 128, 0, 0, 0, 500000, 500000, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, -1, -1, -1, -1, 0, 0, 0); Ese es el formato en esa parte, recuerden que solo pueden insertar una linea a la vez no más. Además podran generar items que ya tengan insertados en la base de datos con el fin de cambiarles el valor, o bien, generarlos nuevos. Crear set de Arma: Con esta opción podemos crear el arma que queramos, así como los creadores de arma que andan por ahí lo único que este está mas completo, en español y con nuevas opciones. Si es un item+9 siempre el vnum= vnum del item+0 para que aumente desde +0 hasta +9. Luego todo debe de colocarse como se lo piden, y en la parte que dice +% que esta al lado del valor5 o incremento, como deseen llamarle es una forma de incrementar porcentuadamente, osea que no siempre siga un orden fijo. Por ejemplo en los creadores de armas comunes siempre les colocamos 10 al valor 5 por ejemplo y queda así: Item+0, Value5 = 10 Item+1, Value5 = 20 Item+2, Value5 = 30 y asi consecutivamente, si lo desean de esa manera dejan el campo de +% en cero de lo contrario si por ejemplo quieren que en cada + que se aumente sea con un porcentaje del 50% sería asi: Item+0, Value5 = 10 Item+1, Value5 = 25 Item+2, Value5 = 47 Con todo eso pueden generar el Item_Proto del cliente este formato: Código: <Item vnum="210" hashName="'Espada Rara+0'" name="Espada Rara+0" type="1" subtype="0" weight="0" size="2" antiflag="32" flag="1" wearflag="16" immuneflag="0" gold="200" buy_price="300" limittype0="1" limitvalue0="90" limittype1="0" limitvalue1="0" applytype0="0" applyvalue0="0" applytype1="0" applyvalue1="0" applytype2="0" applyvalue2="0" value0="0" value1="210" value2="220" value3="230" value4="250" value5="0" socket0="65535" socket1="65535" socket2="65535" socket3="65535" socket4="65535" socket5="65535" refine_vnum="211" refine_set="911" magic_pct="15" specular="0" socket_pct="0" /> El generador para items nuevos(o sea, que no esten en la base de datos) Código: INSERT INTO item_proto VALUES (210, 'Espada Rara+0', 'Espada Rara+0', 1, 0, 0, 2, 32, 1, 16, 0, 200, 300, 211, 911, 0, 15, 1, 90, 0, 0, 0, 0, 0, 0, 0, 0, 0, 210, 220, 230, 250, 0, -1, -1, -1, -1, -1, -1, 0, 0, 0); El generador para items existentes(que ya esta en la base de datos, solo les altera los valores) Código: UPDATE item_proto SET name='Espada Rara+0', locale_name='Espada Rara+0', type=1, subtype=0, weight=0, size=2, antiflag=32, flag=1, wearflag=16, immuneflag=0, gold=300, shop_buy_price=200, refined_vnum=211, refine_set=911, refine_set2=0, limittype0=1, limitvalue0=90, limittype1=0, limitvalue1=0, applytype0=0, applyvalue0=0, applytype1=0, applyvalue1=0, applytype2=0, applyvalue2=0, value0=0, value1=210, value2=220, value3=230, value4=250, value5=0, addon_type=0 WHERE vnum=210; Cabe destacar la explicación de los botones TABLA y ENTABLAR DATOS: TABLA: Al clickear este boton, lo que hace es que si por ejemplo necesitamos ver como será el valor de un ítem en +9, podemos tener una visualización de como será el ítem en +9. Basicamente es eso lo que nos ofrece. ENTABLAR DATOS: Nos permite poner como base el valor que está en TABLA. O sea, si por ejemplo necesitamos evolucionar algo, esto nos permite poner el valor de +9 de ese item como base en el item+0, o sea, para que el item +0 la evolución nueva tenga el valor de su anterior +9, esto ahorra mucho trabajo a la hora de tener que ir colocandolos manualmente. Y por último, esta el tipico Convertidor de archivos .xml a archivos .sql completo. Para los que les parezca muy tedioso estar convirtiendo uno a uno por el convertidor de arriba, solo deben de crear un archivo .xml, con todos los items que deseen que sean convertidos para que les genere el item_proto.sql de esos items que desean convertir y solo sera copiarlos y pegarlos en la base de datos, OJO les recuerdo que ese convertidor de Item_Proto tambien posee la posiblidad de cambiar los valores para los que posean todos los items existentes. Espero que les sirva, sobre todo en lo que he agregado como nuevo. LINK: 2SHARED http://www.2shared.c..._Converter.html MEDIAFIRE http://www.mediafire.com/?yytgj6xlum57lgw
    1 punto
  21. Serex

    Port Map Español Resubido

    Bueno chicos estuve buscando el port map para hacer unas cosillas y no lo encontré por ningun lado, suerte que lo tenia en mi viejo disco duro. Os lo dejo resubido a dos servidores: http://metin2elements.com/downloads/portmap.rar https://mega.co.nz/#!6UElhRhJ!EEnbq2Wg70LSzwj5th6f7kZ3ZDtz0NtMrP5N46_PI_Q
    1 punto
  22. Descarga http://s2.dosya.tc/server8/ngn0hi/lycan_kraliyet_imp_titan.rar.html
    1 punto
  23. Toma borra el game que tiene y mete este http://www.mediafire.com/file/h52uzfqknyddzt5/game.rar/file y luego dale permisos 777 y dale reboot y conectalo
    1 punto
  24. Dilong

    Interface Black Flash

    Link: http://www71.zippyshare.com/v/73593485/file.html Contraseña: albo sie zna haslo albo sie nie zna hasla Fotos:
    1 punto
  25. hola chavales.. bueno aqui te dejo la inteface del cliente.. imagen: PD: descompilar el etc.eix y etc.epk abrimos Etc_descompilado/ymir work/ui/pattern aki lo pegas y guardas y listo.. aqui descargar adjuntar Ficheros un saludos!!! pattern.rar
    1 punto
  26. Ya La Habian Visto Pues Ay La Posteo Para Ustedes Adaptada Por Mi jfirewall.rar
    1 punto
  27. Hola a tod@s después de estar casi 1 mes buscando esto, lo encontré! es un nuevo crear y seleccionar pj parecido al del Aion. Lo he testeado y funciona 100% , las fotos que mostraré a continuación son hechas por mi. Seleccionar Personaje: Crear Personaje: PD; Para crear un personaje deben escoger la opción de vestimenta 1 o 2 o si nó no es hará nada cuando pulséis el botón de crear. MUY IMPORTANTE: En los archivos .py de la descarga deben buscar locale/de con el notepad++ o con el que usen y cambiarlo por el locale que uséis. Por si no les gusta el color de fondo de los botones "Empezar", etc, os dejo 2 diseños, y el rojo que viene por defecto, unas imágenes para que los veáis. Botones Rojos: Botones Azules: Botones Transparentes: Déjenme las gracias si les sirvió. Un saludo. Create & Select Char ~ Aion.rar Diseño Botones Azules.rar Diseño Botones Rojos.rar Diseño Botones Transparentes.rar
    1 punto
  28. El pack incluye: - Cliente - Source code cliente - Source code server - Server files (quests, mapas, cores, etc.) Son unos server bastante estables y equilibrados, probados con más de 500 usuarios online al mismo tiempo sin problemas de lag o caídas. Sin bugs. Actualmente el servidor se encuentra online y podéis probarlo en https://metin2rage.com/ También le podéis echar un ojo a la presentación si queréis ver lo que incluyen: Presentación Descripción y sistemas: - Base estable, equilibrada y testeada con cientos de usuarios online. - Cabos y flechas infinitas - Instant equip - Special Storage - Diálogo destruir objetos - MP al hacer click en nombre - Target information - Shop offline + WON (versión única sin bugs) - Cambiar CH (versión única sin bugs) - Pet system - Inventory slot marking + exchange system - Rocios en affect bar - Revivir full hp - Block/unblock exp - Estolas - Biólogo profesional - Sistema de brillos - Party buff - Un jugador por IP en mapas indicados - Revive event para quests - Limite de yang 999.999.999.999 - Dungeon info - Transfiguración - Dar MDs a todos los player de un imperio en un mapa. - Dungeons únicas: (Aryas dungeon, Cueva Slime, Bosque Celestial...) - Dungeons normales: (Nemere, Arrador, Azrael, Torre...) - Eventos: (Budokan, guerra de reinos, defiende tu metin, sayon, guerra total, evento de caza, trueque sorpresa...) - Atuendos de armas y armaduras únicos - Y mucho más... revisa presentación o descarga el servidor. Server File: https://mega.nz/#!S1R1gCqZ!GOLXtiG9LK-oJ8svK4O2ovLE9ZYMtHdRL1p-WUr4Mn4 (Elimine base de datos y estan limpios) WEB programada en Python: https://mega.nz/#!q9AnCQRK!m2mIgmtkUCdDliHg3WSuyV6jdNWT-gQmbZe-bQwguLc Puedes revisar el funcionamiento de esta en www.metin2rage.com by DevLilian.
    1 punto
  29. tetires estas un poco perdido me parece, tienes que diffear el game, osea, saca el archivo "game" del server y difealo con ese diff que me acabas de poner, para ello necesitaras un programa para diffear el game, te aconsejo que intentes diffearlo por ti mismo, aquí te dejo la herramienta: https://www.mediafire.com/file/edp5twqf018b1wd/Parcheador_Diffs.rar/file
    1 punto
  30. Aca se los dejo Descarga: http://www.file-uplo...eKiiR-.rar.html creditos:epvp
    1 punto
  31. hola aqui les resubo este select para los que es gusten Link de mediafire http://www.mediafire.com/file/5lb84yr7zys9br3/Select+interface.rar la contraseña para Extraer el Archivo es metin2zone.net no se olviden dar las gracias a Loveplay ya que el Trajo esta interfaz de select
    1 punto
  32. Img: PD: Se ajusta para todas las dimensiones para que funcione editar el archivo dates y colocar los datos respectivos a su servidor , como ip,port,auth,nombre etc.. -name , es el nombre del servidor el cual aparece debajo del minimapa. -channel1_img, True igual si quieres que se vea el boton del channel o False si no quieres que se vea. igual con channel2 , channel3 etc... -ip, ip del servidor. -port_channel1, puerto del channel1 de su servidor . Igual con channel2 , channel3 etc. -port_auth , puesto del auth de su servidor PD1: si encuentra algun fallo o problema informar y se resuelve Descarga Saludos!
    1 punto
  33. Nuevo link: https://mega.co.nz/#!g1Zz2AiK!NZOK_0cEa8xMMFGR2Go3xb4KUH2xEJbfidw77Wltkxg Credito Nazox por pasarmelo, yo por subirlo otra vez a mega por que el link que me paso el feo no lo guarde <,<
    1 punto
  34. Give one TAB to every single line.
    1 punto
  35. A menos que hayas hecho 2 doctrinas para el licano... pero para una sola doctrina me parece tontería hacerlo xD
    1 punto
  36. import uihabilidades al final de game.py y en constinfo
    1 punto
  37. *-* Ein Deutscher auf zone :v Sencillo :v: In der game.py direkt unter Code: def OpenQuestWindow(self, skin, idx): folgenden code hinzufügen, ganz egal ob dort schon was steht, packt es einfach direkt unter den Funktionsnamen! Code: if constInfo.INPUT_IGNORE == 1: returndann noch in derCode: def __ServerCommand_Build(self):folgendes hinzufügen:Code: "getinputbegin" : self.__Inputget1, "getinputend" : self.__Inputget2, Die zwei Funktionen ans Ende der game.py: Code: def __Inputget1(self): constInfo.INPUT_IGNORE = 1 def __Inputget2(self): constInfo.INPUT_IGNORE = 0Und in die constInfo.pyCode: INPUT_IGNORE = 0 öffne die uiquest.py und suche nach Code: def __init__(self,skin,idx):und direkt unter dem Funktionsnamen fügst du dann folgenden Code ein:Code: import constInfo if constInfo.INPUT_IGNORE == 1: return
    1 punto
  38. Tienes el import uiHabilidades en el game.py? Has colocado bien el self.Habilidades en su zona correcta?
    1 punto
  39. me sale este error en el syser sabran porque?
    1 punto
  40. Si lo tengo en el root Imagen: http://gyazo.com/7d6cf2af2a829667b05992259bc3f8ce
    1 punto
  41. Arreglado, gracias por avisar.
    1 punto
  42. revisa qué no sean espacios, ya qué aveces se confunden las tabs con espacios...
    1 punto
  43. Hola feos y feas os traigo esta interfaz traducida post original: http://metin2zone.net/index.php?/topic/18226-interfacefallance/ descarga interfaz traducida :https://mega.co.nz/#!EpwW3QaQ!MXgCEhNFcTIORRrfMe53Pl71f15q2PdGIGHradssJF8
    1 punto
  44. Hola, pues hace mucho tiempo cuando yo tenia el Ridekay2, nos hicieron este login que nunca llegamos a usar y ahora la tarigo Credito: No me acuerdo Descarga: https://mega.co.nz/#!pIsjnQpQ!Y5sutsmp91rP7v7h2uUcaSWNeU_Gcf08SRceceb9kp8
    1 punto
  45. Hola, 1 imagen dice más que mil palabras, así que sin nada más que decir, aquí dejo unas fotillos: No olviden cambiar, en el createcharacterwindow.py y selectcharacterwindow.py, del locale, locale_es por vuestro locale. VERÁS COMO HAY QUIÉN COMENTA EL ERROR QUE OCURRE AL NO CAMBIARLO! Saludos, agradecer no cuesta nada. Aion Char Select ~ passy305.rar
    1 punto
  46. KeKo

    Baul del Aprendiz

    Eso de que son menos lineas en fin xd Esa quest era innecesario hacerla ya que LF95 ya la hizo hace tiempo y no se si has probado nunca que solo te dan el cofre en el lvl1, los demas salen al abrir los demas. http://www.inforge.net/community/metin2-howto-addon-server-privati/301301-release-quest-decente-e-configurabile-per-i-forzieri-livello.html
    1 punto
  47. Hola amigos de Mt2 Zone como pueden ver traduci la interface para los que no saben cuales esa interface les dejo aqui una imagen de la interface traducida y no traducida bueno si hay algun error o algo no traducido porfavor avisarme y si podre arreglarlo MM traduci esta interface para que todos las tengamos eso me parece buena parte de mi y quiero que todos los tengan traducido. Porfavor denle me gusta si les gusto y si no pues no el den y un gracias. Espero que les sirva a todos ustedes Bueno les dejo el link de descarga: http://www.mediafire.com/?hzvdibuo3a2p7ct PD: en al descarga viene en las carpeta las ruta dodne pondras la interface
    1 punto
  48. mejor sube el que se auto enciende
    1 punto
  49. Hola buenas a todos ando aburrido y pensé por que no hacer una recopilación de guías de mz y aquí estoy asiéndola ya que la que iso joakin esta mal bueno no se si va acá pero la are aca empecemos: Instalación del servidor: Crear servidor en hamanchi: http://metin2zone.ne...or-por-hamachi/ Montar servidor dedicado: http://metin2zone.ne...bsd-82-64-bits/ Instalar files en tgz: http://metin2zone.ne...en-tgz-o-targz/ ​ Edición del servidor: Descripción Bonus del server: http://metin2zone.ne...s-del-servidor/ Reparar bug de hp: http://metin2zone.ne.../768-bug-de-hp/ añadir música a 1 mapa: http://metin2zone.ne...ica-en-un-mapa/ Editar y añadir portales:http://metin2zone.ne...nadir-portales/ Cambiar contraseñas del server: http://metin2zone.ne...al-ftp-y-mysql/ Editar y ajustar 1 mob: http://metin2zone.ne...ajustar-un-mob/ Cambiar drop del server: http://metin2zone.ne...l-del-servidor/ Hacer 1 ítem comerciable: http://metin2zone.ne...em-comerciable/ Traducir comentarios de mobs http://metin2zone.ne...c-mobs-y-demas/ Descripción columna mob_proto http://metin2zone.ne...mnas-mob-proto/ Colocar npc fijo: http://metin2zone.ne...ijo-en-un-mapa/ Guías básica navicat: http://metin2zone.ne...cas-en-navicat/ Crear script de arranque: http://metin2zone.ne...-para-servidor/ Colocar auto encendido: http://metin2zone.ne...iento-de-login/ Recuperar datos de dedicado: http://metin2zone.ne...vidor-dedicado/ Script start.sh: http://metin2zone.ne...ranque-startsh/ Descripción syser: http://metin2zone.ne...marca-el-syser/ Fixear guerra de gremios: http://metin2zone.ne...rras-de-gremio/ Meter nuevos mapas: http://metin2zone.ne...files-20101112/ Editar comom_drop_item http://metin2zone.ne..._4464#entry4464 Vídeos tutorial-es: Crear regen de mapa: http://metin2zone.ne...n-para-un-mapa/ Cambiar drop de 1 cofre: http://metin2zone.ne...rop-a-un-cofre/ Agregar drop a 1 mob: http://metin2zone.ne...-drop-a-un-mob/ Crear evoluciones:http://metin2zone.ne...-guia-completa/ Cambiar horario del servidor: http://metin2zone.ne...ervidor-metin2/ Realizar backup del server http://metin2zone.ne...-base-de-datos/ Cambiar pass navicat: http://metin2zone.ne...de-tu-servidor/ Cambiar pass de root: http://metin2zone.ne...de-tu-servidor/ Quest y npc: Como meter quest: http://metin2zone.ne...-nuevas-quests/ Errores generales en las quest: http://metin2zone.ne...unes-en-quests/ Quest guerra de reinos: http://metin2zone.ne...100-files-2010/ 3 Quest de eventos: http://metin2zone.ne...est-de-eventos/ Misiones de caserias (Mt2.es) http://metin2zone.ne...evelupmetin2es/ Quest bonus de gremio: http://metin2zone.ne...s-por-el-lider/ Quest autopotas: http://metin2zone.ne...utopotas-by-me/ Quest welcome (Mt2.sg) http://metin2zone.ne...enida-metin2sg/ Sub_quest_lv24 http://metin2zone.ne...o-viento-negro/ Npc multiuso: http://metin2zone.ne...-metin2-sacred/ Skill_group.quest http://metin2zone.ne...t-la-educacion/ Priv_empire http://metin2zone.ne...-para-el-reino/ Misiones del biologo (Mt2.es) http://metin2zone.ne...ologo-metin2es/ Sub_quest_lv7 http://metin2zone.ne...elite%e2%84%a2/ Quest kill_info: http://metin2zone.ne.../688-kill-info/ Quest medalla de heroe: http://metin2zone.ne...-medalla-heroe/ mision by portmap: http://metin2zone.ne...rte-by-portmap/ Almacen portatil: http://metin2zone.ne...macen-portatil/ Quest catacumbas (Modificada) http://metin2zone.ne...bas-modificada/ Mision buscar soldado experimentado(.es) http://metin2zone.ne...entadometin2es/ Quest lobo oscuro multi_idioma http://metin2zone.ne...-multilenguaje/ Mision patrulla (.es) http://metin2zone.ne...trullametin2es/ Quest anillo teleport: http://metin2zone.ne...llo-teleporter/ Mision biolog lvl 70 http://metin2zone.ne...vel-70metin2es/ Quest militar(.es) http://metin2zone.ne...ilitarmetin2es/ Sello 4 monturas: http://metin2zone.ne...-de-4-monturas/ Quest de felicitasion: http://metin2zone.ne...e-felicitacion/ Quest inicio (Panamera) http://metin2zone.ne...stilo-panamera/ Quest + Cliente Sist De logros http://metin2zone.ne...tema-de-logros/ quest Noticias por pergamino: http://metin2zone.ne...no-informacion/ Quest duel points: http://metin2zone.ne...st-duel-points/ Quest items poderes P http://metin2zone.ne...-para-habs-a-p/ Quest Habilidades P por pergamino: http://metin2zone.ne...-por-pergamino/ Quest primer logeo en el server: http://metin2zone.ne...en-el-servidor/ Quest recojer objeto predeterminado: http://metin2zone.ne...to-determinado/ Evento ox: http://metin2zone.ne...ultura-general/ Quest autorates: http://metin2zone.ne...est-auto-rates/ quest Skill_reset2 (Gameforge) http://metin2zone.ne...like-gameforge/ Quest Cambio de raza: http://metin2zone.ne...cambio-de-raza/ Quest mapas: http://metin2zone.ne...94-quest-mapas/ NPC el reto de demonios: http://metin2zone.ne...e-los-demonios/ Quest gm online http://metin2zone.ne...uest-gm-online/ Quest comercio de coins: http://metin2zone.ne...ciables/unread/ Curso creacion de Quest: Capitulo 1: http://metin2zone.ne...curso-de-quest/ Capitulo 2: http://metin2zone.ne...a-de-una-quest/ Capitulo 3: http://metin2zone.ne...s-en-los-whens/ Capiturlo 4: http://metin2zone.ne...as-condiciones/ Capitulo 5: http://metin2zone.ne...o-v-los-states/ Capitulo especial: http://metin2zone.ne...e-uso-habitual/ Quest helper: http://metin2zone.ne...questhelper-10/ Server files: Files arthur: http://metin2zone.ne...o-implementado/ Files oyunu modificados: http://metin2zone.ne...-by-skywalkerx/ Files mt2caos: http://metin2zone.ne...-files-mt2caos/ Files 2011: http://metin2zone.ne...-mente-bueno-d/ Files daro: http://metin2zone.ne...files-de-daroo/ Files oyunu: http://metin2zone.ne...nu-serverfiles/ Games: Game oficial mz: http://metin2zone.ne...al-metin2-zone/ Game 255 año 2007: http://metin2zone.ne...iles-2007-rain/ Game 1765: http://metin2zone.ne...uevo-game-2089/ (no es 2089) Diff: Diff game 2089: http://metin2zone.ne...difs-game-2089/ diif game 2019: http://metin2zone.ne...ara-games-2019/ Parcheador: http://www.mediafire...fsn3uvw19uaw25x Programas útiles: Conversor de xml: http://metin2zone.ne...ml-o-viceversa/ Script menú del server: http://metin2zone.ne...-de-servermenu/ Metin2Manager: http://metin2zone.ne...-by-metin2zone/ visualisador de tga: http://metin2zone.ne...ds-para-metin2/ Grani viewer: http://metin2zone.ne...2-granny-viwer/ Admin tool: http://metin2zone.ne...c/21-admintool/ Traducciones: Pack 90% traducido http://metin2zone.ne...e-traducciones/ Mob proto: http://metin2zone.ne...ido-al-espanol/ Big5_string: http://metin2zone.ne...ido-al-espanol/ Edicion de clientes: Taller implementacion armaduras: http://metin2zone.ne...on-de-armaduras Abrir dds y tga: http://metin2zone.ne...brir-dds-y-tga/ Sist implementacion foenix: http://metin2zone.ne...scotas-phoenix/ Mensaje en el login: http://metin2zone.ne...je-en-el-login/ Poner nuevos brillos a armaduras: http://metin2zone.ne...para-armaduras/ Colocar para que las monturas ataquen: http://metin2zone.ne...-correctamente/ Implementar MSN a la primera: http://metin2zone.ne...m-a-la-primera/ Añadir CH2: http://metin2zone.ne...-tipanadir-ch2/ Cambiar logo de gm: http://metin2zone.ne...-en-tu-cliente/ Cambiar icono de .exe http://metin2zone.ne...icono-a-un-exe/ Aprender python desde 0 http://metin2zone.ne...-aprender-de-0/ Como compilar y des compilar eix y epk: http://metin2zone.ne...cion-detallada/ Implementar mob: http://metin2zone.ne...-en-el-intento/ Meter nuevos mapas: http://metin2zone.ne...files-20101112/ Duplicar mobs: http://metin2zone.ne...-duplicar-mobs/ Cosas para clientes: 2 Pack armaduras con todo: http://metin2zone.ne...duras-con-todo/ Armaduras con alas: http://metin2zone.ne...-mz-d-perdidas/ 1 Pack de armaduras con todo: http://metin2zone.ne...duras-con-todo/ Armaduras lunaris: http://metin2zone.ne...s-lunaris-full/ Nuevas armaduras: http://metin2zone.ne...evas-armaduras/ Armaduras abismo: http://metin2zone.ne...maduras-abismo/ Armaduras mileniumworld: http://metin2zone.ne...illenium-world/ Fix 3 armaduras baso: http://metin2zone.ne...so-guerre-sura/ Armaduras femeninas DLGP: http://metin2zone.ne...emeninas-hdlgp/ Armaduras universal: http://metin2zone.ne...niversalmetin2/ Pack 10 armas: http://metin2zone.ne...ck-de-10-armas/ Mas armas: http://metin2zone.ne...ro-con-gracias/ Daga uragaran: http://metin2zone.ne...o-100-mensajes/ 4 pack de armas: http://metin2zone.ne...ara-metin2zone/ 100 armas del aion: http://metin2zone.ne...-armas-de-aion/ Espada real: http://metin2zone.ne...11-espada-real/ armas y armaduras baso: http://metin2zone.ne...y-daga-by-baso/ Arma fintansy: http://metin2zone.ne...-by-metin2zone/ paquete 48 armas: http://metin2zone.ne...te-de-48-armas/ 42 armas extasis: http://metin2zone.ne...-metin2extasis/ 22 armas nuevas: http://metin2zone.ne...2-armas-nuevas/ Monturas baso: http://metin2zone.ne...2-armas-nuevas/ Nuevos mobs 2012: http://metin2zone.ne...95-nuevos-mobs/ Caballo con fuego: http://metin2zone.ne...fecto-de-fuego/ Dragones: http://metin2zone.ne...-de-dragones-p/ Arañas oscuras mt2elements: http://metin2zone.ne...by-mt2elements/ Lobo twighlit http://metin2zone.ne...light-princess/ skeletoch by keko: http://metin2zone.ne...eleton-by-keko/ Mini azrael: http://metin2zone.ne...ypt-miniazrael/ Caballo segun saldra en los oficiales: http://metin2zone.ne...s-oficiales-xd/ NPC señor oscuro: http://metin2zone.ne...c-senor-oscuro/ Emoticones sexo: http://metin2zone.ne...ticono-sexo-oo/ Accesorios, etc: http://metin2zone.ne...para-cliente-d/ Accesorios con todo: http://metin2zone.net/index.php?/topic/947-pack-de-accesorios/ Mapas: Mapa de fuutbol: http://metin2zone.ne...l-y-futbol-map/ Devils Catacomb: http://metin2zone.ne...-link-resubido/ Recopilación de mapas: http://metin2zone.ne...acion-de-mapas/ Mapa pvp: http://metin2zone.ne...nuevo-mapa-pvp/ Mapa by lusha: http://metin2zone.ne...s-y-muy-guapos/ Mapa minotauro: http://metin2zone.ne...mapa-minotauro/ Clientes de metin2: Cliente extasis: http://metin2zone.ne...-descompilador/ Cliente synthetic: http://metin2zone.ne...-descompilador/ Cliente aterna: http://metin2zone.ne...ea-100-decrypt/ Cliente themida v1: http://metin2zone.ne...n-construccion/ Cliente itomega: http://metin2zone.ne...lient-by-omega/ Cliente hidra v3: http://metin2zone.ne...vo-cliente-v30/ Cliente by gherius v3: http://metin2zone.ne...erusio-2012-v3/ Recopilacion de clientes: http://metin2zone.ne...ntes-de-metin2/ Cliente by pathis v1: http://metin2zone.ne...y-pathits96-v1/ Paginas web: web by raizon: http://metin2zone.ne...-web-by-raizon/ web by rimander http://metin2zone.ne...20-by-rimander/ Homepage: http://metin2zone.ne...nueva-homepage/ web traducida: http://metin2zone.ne...-web-traducida/ homepage: http://metin2zone.ne...ge-para-metin2/ Web desing + script http://metin2zone.ne...b-designscript/ web completa http://metin2zone.ne...a-web-completa/ web funhouse: http://metin2zone.ne...b-funhouse-psd/ web smd http://metin2zone.ne...gina-web-smd07/ web: http://metin2zone.ne.../248-nueva-web/ Script web: Script banear y desbanear: http://metin2zone.ne...anear-usuarios/ contador de pj: http://metin2zone.ne...o-configurable/ añadir coins manualmente: http://metin2zone.ne...ns-manualmente/ registro.php: http://metin2zone.ne...cript-registro/ contador de cuentas: http://metin2zone.ne...dor-de-cuentas/ contador team online: http://metin2zone.ne...aff-conectados/ config.php: http://metin2zone.ne.../100-configphp/ Hack, bots y sploits: sbvb5 cambiador de Bonus: http://metin2zone.ne...iador-de-bonus/ skip launcher: http://metin2zone.ne...4-skiplauncher/ recopilación de hack: http://metin2zone.ne...t2actualizable/ unbroker doser: http://metin2zone.ne...-unknown-doser/ 3D: adaptación de armas: http://metin2zone.ne...armas-a-metin2/ Crear texturas, etc: http://metin2zone.ne...dactar-objetos/ Bueno creo que me han faltado algunos después los pondre estoy cansado 3 horas me llevo xD. si hay algún link roto avisarme y lo acomodo al igual que la ire actualizando todos los días con aportes nuevos Espero que les gusten y las faltas de ortografias ya las reparare....
    1 punto
Esta clasificación está establecida en Madrid/GMT+02:00
×
×
  • Crear nuevo...