Jump to content

Tabla del Honor

Contenido popular

Showing content with the highest reputation on 12/07/20 in Mensajes

  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. 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 Saludos
    1 punto
  8. Jfirewall

    [RELEASE] Nuevo Taskbar

    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_86plA70
    1 punto
  9. 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
  10. Reborn Ox System
    1 punto
  11. 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
  12. Soren

    AdminTool V5.

    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.rar
    1 punto
  13. Desmint

    [SV]BestProduction V5 2019

    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: turkmmo
    1 punto
  14. caanmasu

    borrar

    borrar
    1 punto
  15. 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
  16. 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
  17. lordofgames

    [Texture] armaduras

    Hello Download Link:
    1 punto
  18. 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/AZOLR
    1 punto
  19. 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
  20. Hello images Download link: Credit: RuffyDCapone
    1 punto
  21. 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
  22. 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
  23. 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
  24. Desmint

    Nueva Interfaz Login

    Aqui Les Dejo Una Imagen Y Su Link Link:https://mega.co.nz/#!BRgwgAYZ!IcSQ2UuC8c5vW3KLT4SjWhw2O-Ic3jbWBk-PPjrznpc
    1 punto
  25. https://programas-juegos-max.blogspot.com/2020/03/metines-con-vdi-freebsd-121-vdi-freebsd.html
    1 punto
  26. 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
  27. Descarga http://s2.dosya.tc/server8/ngn0hi/lycan_kraliyet_imp_titan.rar.html
    1 punto
  28. Dilong

    Interface Cristal prime

    Link: https://mega.nz/#!opIHiKJY!w-7S6hwCEa3_GdShaH8EfD83nEWHcjB9cY4XMMr08r0 Fotos:
    1 punto
  29. 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
  30. 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
  31. 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
  32. 1 punto
  33. 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!mbojoCtSfyScs6SoBYaPV7YJHv2QAk5p2c2I4jLZPpY
    1 punto
  34. 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...v31524n6abcz5rd
    1 punto
  35. 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
  36. Give one TAB to every single line.
    1 punto
  37. ♥ TesT ♥

    Mi primer simbolo GM :3

    Buenas tardes,dias,noches lo que sea XD , queria compartir mi primer simbolo gm creadito recien jaja opinen, el efecto lo saque de otro simbolo si alguno lo prueba qe deje una foto ingame ya qe no tengo sevidor simbologm.rar
    1 punto
  38. import uihabilidades al final de game.py y en constinfo
    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. 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
  43. Shang no logro ver bien el codigo, Arregla eso http://prntscr.com/7n2gci Buen aporte. Saludos.
    1 punto
  44. revisa qué no sean espacios, ya qué aveces se confunden las tabs con espacios...
    1 punto
  45. 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
  46. Serex

    300 Items variados

    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...vnwwr37vfv3c9qs
    1 punto
  47. -YC-

    Taskbar.tga .es u original.

    Toma taskbar.rar
    1 punto
  48. 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
  49. 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
  50. 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 Akroma
    1 punto
Esta clasificación está establecida en Madrid/GMT+02:00
×
×
  • Crear nuevo...