Tabla del Honor
Contenido popular
Showing content with the highest reputation on 12/07/20 in Mensajes
-
Mustang SF 2020 | Most clean
whatter and 3 otros reaccionó a Mustang Forsaken por un tema,
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 : Download4 puntos -
FreeBSD 9.3 64 bits + Files synera
pierosotelo and 2 otros reaccionó a EzekielitohMercury por un tema,
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: seki2mako43 puntos -
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 Total2 puntos
-
[SEMI-APORTE]Cliente Volvo (VLV)
Matias Principe and uno mas reaccionó a Felipe © por un tema,
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 -
Mustang SF 2020 | Most clean
Baboca67 and uno mas reaccionó a Mustang Forsaken por un tema,
Discord : Mustang#1649 Client test available with 15 account saved : Download2 puntos -
Game Difeado para quien no sepa: http://www.mediafire.com/file/h52uzfqknyddzt5/game.rar/file2 puntos
-
serverfiles Daroo Link Resubidos
ferhatcnrr reaccionó a ChuchoGamer por un tema,
Hola muy buenas tardes hoy les Traigo estos files Daroo 1678 son files virgenes Tambien les dejare un cliente para que puedan usarlo el cliente es total mente virgen les pueden implementar lo que quieras ha sus gustos Claro Repito si estos files Ya estan postiado con link resubido Porfavor Borren este post Claros simpre y cuando si el otro Post original los tenga activo los links bueno en fin aqui se los dejo Link del Files http://www.mediafire.com/file/tvx11lj9dfe5zw2/Serverfiles1678-RC-B4.exe La contraseña para Descomprimir los files es germany Link Files 2089 (daroo 8.2) .tar y Cliente omega (2011) instalable por @Dilong: https://mega.nz/#F!s9pz3CbR!MVMn7dvUChrqm_ldiw6BhQ Link del cliente http://www.mediafire.com/file/yopxej88befqn8c/Metin2+by+daroo.rar Datos para Encender la maquina virtual y Navicat root daroo Para prender los files solo configuren la maquina cuando ya esta listo ponen m2 start les pedira que canal quieres encender les pones 1 y enter y listo Cliente omega Español full esta por partes el cliente http://www.mediafire.com/?gqlmf58cd6fxg Espero que os guste Credito para el Creador del los files daroo 8.2 Saludos1 punto -
bueno hace unas horas vi publico el psd en epvp y tenia unas cuentas horas libre y cree el codigo la interface funciona totalmente ademas esta zona lleva mucho tiempo sin actividad ademas toca ponerle motivacion al foro para poder sacar mas provecho. pd: si ya existe el codigo publico pues no lo sabia me gusta hacer mis propias cosas y no estar copiando codigos. buena noche code: jfirewall diseño: feistygraphic https://mega.co.nz/#!FVkxAQ4b!i3yrnQHo6hgiYNifyQ7gcOCDXHF0AcDcwBu_86plA701 punto
-
World Editor - Creación Final de Mapas
Jose Angel Novo Rico reaccionó a pepineitor por un tema,
World Editor Buenas tardes, os traigo el creador y editor de mapas definitivo, desarrollado por Ymir, el World Editor. ¿En que se diferencia de los métodos de creación de mapas actuales? Pues la diferencia que podremos encontrar es abismal, con este programa no debereís de hacer todos los procesos que actualmente hay que realizar para desarrollar un mapa, es sencillo, completo, práctico y eficaz. ¿Que ventajas nos ofrece World Editor? [*]No tendreís que volver a usar programas como L3DT, earth esculptor, etc., los cuales eran los utilizados hasta la fecha. Son complejos, con una usabilidad reducida, además de la necesidad de programas anexos para completar los mapas que estubieses desarrollando o editando. [*]No tendreis la necesidad de seguir exportando archivos height, tile, shadow map, y posteirormente editarlo con photoshop, ademas no necesitareis ir carpeta por carpeta para crear o modificar el minimapa. [*]No necesitareis tampoco un editor de ATR ya que con World Editor podreis crear todas las SafeZone, las zonas caminables, las zonas montañosas, rios, puentes y demás. [*]Nos ofrece una interfaz sencilla, intuitiva, con la que podremos desarrollar todo aquello que deseemos de una manera sencilla y eficaz. [*]No se usa unica y exlcusivamente para desarrollar mapas, con el tambien podremos crear efectos tales como un level up, un golpe crítico, y demás. ¿Como se instala y se usa? Su instalación es bastante simple, para ello deberemos de seguir los siguientes pasos: [*]Necesitamos una unidad de disco D, para ello deberemos de crear una partición en nuestro disco local, C o bien tener un disco duro D conectado [*]Una vez hecha la partición, debemos de crear dentro una carpeta llamada ymir work [*]En la carpeta ymir work de nuestro disco D, introduciremos el programa completo y además deberemos de introducir todos las carpetas de nuestro cliente descompiladas, la carpeta lib, etc, debe de quedarnos tal que así [*] [*]Una vez hecho esto, solo nos queda usar World Editor y crear nuestros propios mapas de una manera profesional. A continuación os dejo un par de imagenes para que podais judgar por vosotros mismos. Descargar http://metin2dev.org/board/topic/64-worldeditor/ https://mega.co.nz/#!xtoiXRDZ!NTyJPGn0B6tDEcm3kyXO5k--fm9nWRWyNQ6UdLDmlIE Posteador original: .InyaProcution Fuente: Metin2Dev Un saludo a todos.1 punto -
1 punto
-
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, Jayden1 punto
-
Buenas metin2zone, hoy les traigo el programa AdminTool V5 para administrar vuestro servidor de Metin2 Fotos del programa: Link: http://www.mediafire.com/download/g01r4gjsjpd8osy/AdminTool_V5_By_k%C3%AE%D0%AF%D0%94_Metin2Zone.rar1 punto
-
Hola amigos de Metin2Zone Hoy les traigo unos files (que no es nada raro) de EDWARD BestProduction, esta vez en su version V5 del mes de Febrero, y como ya saben, si tienen la marca de EDWARD son de calidad, uno que otro error pero nada que no tenga solucion. Como bonus adicional, nos deja una guia (espero poderla seguir y subir el FreeBSD) de como crear un freebsd v12.0 para estos files, que en cuanto pueda instalarlo bien y adecuadamente se los estare pasando. En cuanto a esta version, viene mas recargada, con nuevos sistemas, nuevos mapas, nuevas dungeons y mas chula. Sin mas que decir les dejo estos lindos Files. Cito: "Hola amigos he esperado mucho tiempo la versión v4 La versión V5 es una versión fija de los problemas solucionados. Puedo decir muchas razones para no compartir, pero prometí no compartir ninguna necesidad. Sé que llevas mucho tiempo esperando. Ignoré los problemas incluidos en el sistema para interrumpir el equilibrio del juego que me gusta. He eliminado los sistemas que necesitan juegos innecesarios. Lycan -Lyceless 1-105 1-120 formatos diferentes se dividen. Durante este tiempo algunos de los vacíos son inútiles. Virtual 30-40 realde niños de 10-15 años en el grupo de niños mismos. Han pronunciado discursos como si estuvieran obligados. Trabajamos con salario adicional a estos elementos No hables como tu cabeza sopla, a nadie le gustará tu corazón Hará lo que quieras si viene de dentro, ayuda a compartirlo. No puedes decidir un poco sobre tu mente. No tuve que agregar la presentación completa de los archivos v4 en el apósito y se realizó la eliminación. Aquellos que quieran información detallada pueden ver v4. Se entiende mejor si escribí y escribí las correcciones. He explicado las ediciones y configuración necesarias en los archivos v4. Puedes hacer esto mirando el tema." Descarga desde Mega '' BUG - FIX DISPLAYS '' Versión GCC actualizada Lista de sistema fuente revisada sistemas innecesarios eliminados. El personaje Lycan fue eliminado por completo de los packs y source. La estructura del juego fue dibujada de 1-120 a 1-105. El 99% de nuestros amigos en V4 y @traglon11 han resuelto sus problemas. Algunos mapas teletransportan al problema de cierre del cliente solucionado. Se han reconfigurado los mapas y MAPA PERMITIR. Algunas misiones han sido arregladas. Solucionado el problema abierto en reemplazos de transferencia de bono de atuendos. El tiempo de apertura mejoró al comenzar el juego. Se agregaron algunas funciones de código faltantes en la ventana comercial. Uitooltip.py ha sido revisado. Se han eliminado algunos códigos redundantes en los paquetes. Las opciones de juego y sistema han sido reconfiguradas. Habilidad revisada Proto / C ++ Python Se arreglaron algunos problemas en el sistema de chamanes. Los problemas con el sistema de eventos se han solucionado. Estoy pensando en lo que recuerdo ahora ..." Nuevos Sistemas '' INTRODUCCIÓN DE NUEVOS SISTEMAS AÑADIDOS '' 1- Sistema de báscula móvil [Puedes ampliar la ranura que quieras] 2- sistema Ronark 3- Sistema de avistamiento zodiacal. 4- sistema de control de bot 5- Sistema de la torre del diablo revuelto 6- Sistema de bloqueo de cuenta. 6- Sistema informático seguro / Entrada del cliente y en el juego. 6- Sistema automático de eventos oficiales. 7- Sistema de rompecabezas de pescado. 7- Sistema Boss Hunter 8- Personaje dentro del juego de la bandera lateral que muestra el chat global / Empire Flag 9- Sistema de deslumbramiento del traje [Karaca425] 10- Sistema de efecto de tapón de pistola. 11- Sistema de efecto Boss. 12- Caña de pescar y sistema de efectos de excavación [+] 13- + sistema de anuncio push 14- Sistema oficial de demostración de bonus. 15- Sistema de carreras de caballos. 16- Sistema de modo prisión. 17- 9 Sistema de zodiaco plegado [de linterna] 18- 5 nuevos mapas [mapa] 19- Nuevo sistema mejorado y opciones de juego. 20- Gui oficial del gremio. 21- 2 nuevo barco de pesca. 22- Nuevas emociones y estilos de baile. 23- Sistema de torneos WS IMAGENES DE MUESTRA Aumento de escala de Jefes 5 Nuevos mapas Cambios Tipo Oficial(Normal - Cambio+) Sistema de Chat Mejorado Sistema de Prision Sistema de Control de Switch Brillos de Atuendo Sistema de Efecto de Jefes Nuevas Emociones Sistema de Eventos Automaticos Sistema de Gremios Tipo Oficial Sistema de WS Sistema Nuevo de Seguridad Mapa Laberinto Nuevas Opciones Brillos de Caña y Pico Sistema de Opciones Rediseñado Sistema de Atuendos Sistema de Bonus Tipo Oficial Sistema de Mejora Mejorado :u Sistema de Ronark Sistema de Torre demonios Mejorado Sistema de Zodiaco Poco a poco pondre cada sistema, pues se cayo la pagina y las imagenes desaparecieron Agradecimientos: turkmmo1 punto
-
Interfaz lol en metin2 MaltaMt2 File Server + Source
Kamal Kemo reaccionó a nilsonmax por un tema,
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: 123451 punto -
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/20151 punto
-
1 punto
-
pues eso aquí os dejo los mapas y sus respectivas fotos espero que os sean utiles https://mega.nz/#!zUM3XRxD!f2pVpabKIFEQHyUunTcO46AKFuvTN6i1aOKvOeX4z2c http://share.pho.to/AZOLR1 punto
-
Interfata LoL Login / Selectare Caracter
GreposX reaccionó a ChuchoGamer por un tema,
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!YaNub45LeF8niAFoRLzdWr9IkGMJDEENq5QgVZEiaK41 punto -
[Armas] New Weapons Vec
Abitsai De Leon reaccionó a lordofgames por un tema,
Hello images Download link: Credit: RuffyDCapone1 punto -
[C++]Fix Shop Offline Ken
tomas ishihara reaccionó a NazoX por un tema,
Bueno visto que no lo he visto en esta comunidad, traigo el fix de la tienda offline de ken para duplicar items en la offline, no lo he probado todavía ya que la estoy recién instalando, pero por algunos comentarios de diversos foros, funciona, bueno empecemos. 1º Solución, vamos a offlineshop_manager.cpp y buscamos la siguiente línea: void COfflineShopManager::TakeItem(LPCHARACTER ch, BYTE bPos) y cambiamos el and status = 0 por 1 quedando así: Nota: Si no funciona buscamos and status = y todos los "0" remplazamos por "1" 2ºSolución, vamos a input_main.cpp, y buscamos la siguiente línea: "case SHOP_SUBHEADER_CG_TAKE_ITEM" y remplazamos toda la función por lo siguiente: case SHOP_SUBHEADER_CG_TAKE_ITEM: { if (uiBytes < sizeof(BYTE)) return -1; BYTE bPos = *c_pData; if (!COfflineShopManager::instance().HasOfflineShop(ch)){ sys_log(0, "INPUT: %s OFFLINE_SHOP_TAKE_ITEM", ch->GetName()); COfflineShopManager::instance().TakeItem(ch, bPos); } return (sizeof(BYTE)); } Nuevamente buscamos -> "case SHOP_SUBHEADER_CG_REFRESH_UNSOLD_ITEMS" y remplazamos la función por lo siguiente: case SHOP_SUBHEADER_CG_REFRESH_UNSOLD_ITEMS: { if (!COfflineShopManager::instance().HasOfflineShop(ch)){ sys_log(0, "INPUT: %s OFFLINE_SHOP_REFRESH_UNSOLD_ITEMS", ch->GetName()); COfflineShopManager::instance().RefreshUnsoldItems(ch); } return 0; } Con esto debería bastar para solucionar el problema de duplicar items en la tienda Créditos: GucciMane. Según la otra persona, pudo solucionar el problema, solo utilizando el método 1, es decir el de "and status" Otra solución para duplicar items en la tienda offline, (en general, otro sistema o incluso en la de Ken mismo, podéis probar esto) vamos a input_main.cpp y buscamos esta función -> int CInputMain::MyOfflineShop(LPCHARACTER ch, const char * c_pData, size_t uiBytes) y añadimos lo siguiente: if (ch->GetExchange() || ch->IsOpenSafebox() || ch->GetShopOwner() || ch->IsCubeOpen() || ch->GetOfflineShopOwner() || ch->IsAcceOpen()) { ch->ChatPacket(CHAT_TYPE_NOTICE, ("This nigga try to make a bug -> %s."), ch->GetName()); return (iExtraLen); } Nota: Si no tenéis el "IsAcceOpen" a vosotros os dará el error, simplemente eliminar y cerrar en el anterior punto. Otro fix para la parte de C++ en el cliente, para poder cambiar de precio los objetos de la tienda offline, debemos hacer esto. Nos dirigimos a: PythonNetworkPhaseGameItem.cpp Una vez aquí, buscamos la siguiente línea -> bool CPythonNetworkStream :: SendChangePriceOfflineShopItem (BYTE bPos, int iPrice) lo cambiamos por lo siguiente: Para terminar otra vez en C++ del servidor, vamos a input_main.cpp y buscamos esta línea-> COfflineShopManager :: instance (). ChangePrice (ch, pTable-> bPos, pTable-> lPrice); por esta Créditos: DeYaN. Aquí comentan algún fix mas para Ken Fix Shop Offline Se agradecería que si funciona, comentéis cual método habéis usado, o si los de la web funcionan, para dejarlo claro y así los demás tengamos idea para usarlos, un saludo ^^1 punto -
[Intro Login] Traducida
[email protected] reaccionó a Anthony's por un tema,
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 -
[Release]Oldschool Client by Omega!
mexstation spagal reaccionó a Nico1Pro por un tema,
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 -
Aqui Les Dejo Una Imagen Y Su Link Link:https://mega.co.nz/#!BRgwgAYZ!IcSQ2UuC8c5vW3KLT4SjWhw2O-Ic3jbWBk-PPjrznpc1 punto
-
Web Beyond2 antigua - FREE (GRATIS)
Armstrong lumbi reaccionó a nilsonmax por un tema,
https://programas-juegos-max.blogspot.com/2020/03/metines-con-vdi-freebsd-121-vdi-freebsd.html1 punto -
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_Q1 punto
-
Armadura olimpica en Lynca
Inactivo Temporariamente reaccionó a Tayson2019 por un tema,
Descarga http://s2.dosya.tc/server8/ngn0hi/lycan_kraliyet_imp_titan.rar.html1 punto -
Interface Cristal prime
Metin2Regal reaccionó a Dilong por un tema,
Link: https://mega.nz/#!opIHiKJY!w-7S6hwCEa3_GdShaH8EfD83nEWHcjB9cY4XMMr08r0 Fotos:1 punto -
Link: http://www71.zippyshare.com/v/73593485/file.html Contraseña: albo sie zna haslo albo sie nie zna hasla Fotos:1 punto
-
Interfaz de cliente
𝗔𝗿𝗲𝘀 reaccionó a Frank Arkero por un tema,
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.rar1 punto -
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.rar1 punto
-
[GUIA] Traducir Cliente Metin2
Mari Carmen Rodriguez Morete reaccionó a cannibal por un tema,
servira para un 34k .-.1 punto -
[SALCHICHON]Select PJ - LovePlay & Felipe Ard
erick ellen reaccionó a LovePlay por un tema,
Hola andaba buscando porno perdido por mi PC, y me encontre con este select que tenia que me hizo felipe ard amablemente sin yo darle nada xd Y como no la uso porque soy JAQUER pues aqui os la dejo para que la tengais, si quereis un create igual al selecet, si me lo pedis bastantes os lo hago :* Scrip: Felipe Ard Diseño: LovePlay Material pal diseño: Zielsko Grabe hace tiempi un video de mi login y select, asi que os lo dejo si quereis verla mejor calidad: http://www.youtube.com/watch?v=0QQ37Gf-R9M #ElQueDeThanksLePago50€ Link de descarga: https://mega.co.nz/#!TENXTIhD!mbojoCtSfyScs6SoBYaPV7YJHv2QAk5p2c2I4jLZPpY1 punto -
[APORTE] Iconos para todos
ragnarok1515 reaccionó a JosanG por un tema,
Buenas, he visto que tenía este archivo por aquí la verdad no recuerdo ni de dónde lo saque, pero no está como lo descargué, tiene algunas cosillas añadidas y demás. Están todos en PNG. Son todos los iconos de las cosas implementadas en metin2. Sé que hay una database en liquiron, posteada por Serex, pero bueno, así ya los tienes descargados para entrenar tu mente cuando no tengas internet. Son 1510 iconos. https://mega.co.nz/#!eI9nyDAJ!bedYM27jQDjiITBZQWnh4VyiDo8TbPvhr6Q81R24n-A Saludos! EDIT: Link de mediafire, subido por BigWolf http://www.mediafire...v31524n6abcz5rd1 punto -
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
-
Give one TAB to every single line.1 punto
-
1 punto
-
[RLS] Sistema de elegir doctrinas.
[D]ELARO ✓ reaccionó a SergioT por un tema,
import uihabilidades al final de game.py y en constinfo1 punto -
[RLS] Sistema de elegir doctrinas.
Kenshi Torres reaccionó a SergioT por un tema,
me sale este error en el syser sabran porque?1 punto -
Si lo tengo en el root Imagen: http://gyazo.com/7d6cf2af2a829667b05992259bc3f8ce1 punto
-
Arreglado, gracias por avisar.1 punto
-
Creo que no me entendiste bien, yo me refiero al código completo, porque yo no entiendo mucho de paython, y paython se requiere que este bien estructurado el código. Ejemplo http://prntscr.com/7n2nz5 Saludos.1 punto
-
[RLS] Sistema de elegir doctrinas.
jose reyes reaccionó a Neo por un tema,
Shang no logro ver bien el codigo, Arregla eso http://prntscr.com/7n2gci Buen aporte. Saludos.1 punto -
revisa qué no sean espacios, ya qué aveces se confunden las tabs con espacios...1 punto
-
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!MXgCEhNFcTIORRrfMe53Pl71f15q2PdGIGHradssJF81 punto
-
300 Items variados
Sorry for my Autism reaccionó a Serex por un tema,
Hola chicos, como vi esta sección algo pobre os traigo un pack de items variados que encontré, vienen solo los iconos.tga las querys las debéis hacer vosotros. Son varios items, cascos, piedras, accesorios... Una imagen de los iconos: Link de descarga: http://www.mediafire...vnwwr37vfv3c9qs1 punto -
1 punto
-
[R]Aion Char Select System (Selección de personaje como en el AION)
LiveTime 97 reaccionó a Shang por un tema,
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.rar1 punto -
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 interface1 punto
-
Bueno MZ, como algunos sabran yo era el dueño del synthetic 1 gran sv que anda muerto por el momento, aunque re-abriremos aqui os dejo TODAS las armaduras que tenia el cliente asta el momento estan en .epk, i funcionan 100% correctas. Fotos de las armors : Tambien havian armaduras lunaris, terror, i algunas mas que no añadimos a los sets del servidor principal, tambien decir que hay armaduras que no estan ni posteadas, o debido a sus rutas o debido a que fueron desencriptadas por mi. Links: http://www.multiupload.nl/ECW4JB4C4G http://www.multiupload.nl/HR6WYSI8B8 http://www.multiupload.nl/KEQ2IETBB9 http://www.multiupload.nl/LTPW25DPOK Links resubidos por KaooS: http://www.mediafire.com/?nco0gqe74o22i Have for fun Akroma1 punto