Jump to content

Tabla del Honor

Contenido popular

Showing content with the highest reputation on 14/08/20 en todas las áreas

  1. Contenido del MultiHack: Level Bot Buscador de Metines Auto Ataque Hack de Damage Teleport ¡Muchas otras cosas! Vídeo de Muestra: LINKS DE DESCARGA: CLICK AQUÍ
    3 puntos
  2. mrbraveras

    DMG hack en .mix

    Buenas zoneros, aquí os dejo un dmg hack de lalaker1 en formato .mix, solo lo metéis en el cliente de vuestro privado e iniciáis el juego normalmente. Al iniciar el juego debería abrir una ventana junto con el juego como ésta: (Si no abre o da algún error al iniciar metin, es porque tiene protección) Auto damage: Hace daño multiplicado al mob o player que hayas seleccionado con el ratón (no es necesario atacar). Auto damage on attack: Hace daño multiplicado a los mobs o players que estés pegando. (Cabe decir que en ciertos servidores no influye el modo de "dmg" que pongas, sólo funcionará uno de ellos.) Descargas> Funcionando en adventure, alianza, atardecer, destino, reborn, tsuki, faraón... etc Aclaro que no es un virus, por mucho que vuestro antivirus diga lo contrario, el mio también lo detecta como virus y me lo borra, por eso es recomendable añadir una excepción en la carpeta donde vaya a estar, así no lo borra. Decir también que el archivo que os ofrezco no lo he creado yo, simplemente lo encontré en un foro rumano, está modificado para que no haga falta inyector ya que el original de lalaker1 viene con inyector.
    3 puntos
  3. 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
    2 puntos
  4. Buenas shabots, hace tiempo iba a subir esta onda en VDI pero he estado ocupado xd, son los files de Arrival2 que subió @Araiguma los subo tal cual están recién instalados los .tgz no he limpiado nada ni modificado en absoluto nada salvo la cuenta para entrar y pass, prácticamente están como se subieron, el VDI es freebsd 9.3 y mysql 5.6 y esta preparado para compilar el source de Arrival2, y si desean pueden usarlo para compilar el source de akron2 y los que sean compatibles. Les dejo el post original para cualquier duda que tengan: ya que yo no soy dev de esos files, asi que no me pregunten algo relacionado a los bugs o cualquier cosa ya que desconozco los bugs que tenga xd POST ARRIVAL2 BY ARAIGUMA VDI User: root VDI Pass: delaro Juego ID: delaro Juego Pass: delaro Mysql ID: root Mysql Pass: delaro Ok una vez descargado el VDI y Cliente de Arrival2 queda iniciarlo en el virtual box, recuerden configurarlo como adaptador puente, inician y pedirá el id y el pass los cuales están arriba, una vez dentro del VDI dan el típico sysinstall y configuran su ip que vayan a usar y la segunda terminada en .100 ya saben como y si no busquen pues hay demasiados tutoriales :v El cliente es complicado si no sabes nada de nada, pero en pocas palabras, 1- en root cambias por tu ip terminada en .100 en intrologin.py, 2- despues usan el EterNexus y compilan el root, 3- después seleccionas los 2 archivos root.eix y root.epk y los arrastras sobre el archivo que dice encriptador.exe, 4- les creara el archivo root.metin2, 5- dan doble click al archivo metin2 a araiguma.bat y renombrara en automático el archivo root.metin2 a root.araiguma, 6- el archivo root.araiguma lo pasan al cliente a la carpeta pack y reemplazan por el existente y listo. Una vez todo esta configurado perfectamente antes que nada se me paso hacer GM al personaje xd asi que en navicat abren common, gmlist y en el 1 aparece jfirewall lo cambian por delaro, guardan el cambio y reinician, ahora si para iniciar el servidor el tipico cd /usr/game das enter y sh inicio.sh te dira cuantos chs iniciar, les recomiendo 1 y maximo 2 ya que el ch3 y ch4 no configure los CONFIG con el ID y PASS de mysql pero solo cámbienlos por los mismo que puse en ch1 o ch2.. para detener el servidor es sh parar.sh Links por Google Drive CLIENTE VDI SOURCE DE CLIENTE DESCOMPILADOR Prueba de que funciona bien :v FIX TRAIDOS POR @mt2arcangel SOLO HAY QUE REEMPLAZAR LOS ARCHIVOS EN ROOT. SE SUPONE REPARA EL BUG DE LA EXP DEL GREMIO. NO LO HE PROBADO YA QUE HACE TIEMPO BORRE TODO XD uiguild.py uiinventory.py uipickmoney.py
    2 puntos
  5. Hola shabots, antes que nada se que estan en el foro los files de pandora-eternia2 que subio @SzC, la cosa es que se lo traigo ya montados facilitando lo maximo posible a quien quiera usarlos, ya vienen en un VDI de BSD 9.3, solo los monte y les hice un mini test, no movi nada, no limpie nada en mysql, le toca meter mano a quien lo use. El VDI suponiendo que estan usando virtualbox vean un tutorial por si no saben como montarlo ahi, se loguean, le dan el tipico sysinstall, cambian la ip 192.168.0.123 por la ip ipv4 de su computadora (teniendo en cuenta que usan virtualbox xd) y en la siguiente ip ponen su misma ip pero cambiando al final por .100 o lo que quieran pero te recomiendo .100 para que no haya fallas, esta ip terminada en .100 la pondran en el cliente para que les conecte :v El cliente esta sin el root, pero esta la carpeta unpack con un descompilador (ahi esta la carpeta root, locale_es y un descompilador de los protos), cambian la ip de la carpeta root / serverinfo.py, ponen la ip terminada en .100 o como la hayan dejado (NO LA IPV4) lo compilan y meten en pack del cliente (supongo que saben lo mas basico). USUARIOS Y CONTRASEÑAS: VDI Usuario: root Contraseña: delaro MYSQL Usuario: root Contraseña: Vla%Lord%v1 Datos del juego Usuario: delaro Contraseña: delaro COMO INICIAR? Una vez puestas las ips correctamente en cliente y VDI, te logueas en el VDI o putty si es lo que usas, e inicias el servidor con los comandos: cd /usr/game das enter y ahora si quieres iniciar 1, 2, 3 o 4 channels escribe solo uno de los siguientes comandos: sh run.sh iniciara 1 channel sh run2.sh iniciara 2 channels sh run3.sh iniciara 3 channels sh run4.sh iniciara los 4 channels espera a que te diga que esta listo y ya podras loguearte en el cliente y entrar al juego. para detener el servidor: sh close.sh esperas a que termine de detenerse y ya podras reiniciar sin problemas. Links por MEGA, es el VDI, el cliente y el source con los libs :v Link MEGA: VDI Link MEGA: Cliente Link MEGA: Libs y Source Lo que traen estos files es: ARREGLO PARA PAR DE BUG "SEVEROS" GRACIAS A @Break Y @NazoX: Imagenes ejecutando los 4 channels sin problemas :v Si estas leyendo esto: te amo uwu Te creas prro deja el me encanta y abrete alv :v
    2 puntos
  6. 2 puntos
  7. Pulse aquí para descargar
    1 punto
  8. HOLA GENTE ACA LES TRAIGO UN NUEVO POST DE UNAS CITYS 1 QUE ENCONTRE EN UN SERVIDOR PRIVADO Y COMO CERRO ME TOME LA AMABILIDAD DE SACAR LAS CITYS 1 MODIFICADAS QUE HABIA EN DICHO SERVIDOR ESTAS CITYS NO LAS VI EN NINGUN LADO POR ESO HAGO ESTE POST ESPERO QUE LE GUSTE LES DEJO UNA FOTO Y EL LINK DE DESCARGA PD: LAS CITYS LAS VI UNA SOLA VEZ YA QUE CERRO EL SERVIDOR NOSE SI FUNCIONAN BIEN Y SI ALGUIEN SABE EN QUE ARCHIVO .EIX Y EPK ESTA LOS MINIMAPAS QUE ME DIJA ASI SUBO TAMBIEN LOS MINIMAPA LINK DE DESCARGA: https://mega.nz/#!AGgUyIYA!-7cUvVOKfLxMow5y3HayfTT6JUp3iqcqw8PGbewSiFQ SI SE CAE EL LINK O NO FUNCIONA ME AVISAN Y LO SUBO A MEDIAFIRE ATT: ADMNAHUI
    1 punto
  9. Descarga: https://mega.nz/file/fWAClSYJ#LyO0UftPIxe8xrc14QMlfxqEOTZmCdr7GPBmBMNUdXc Creditos: Just4Metin2
    1 punto
  10. Hello, bears. Here you have a list where you can find the entire plechito available on the internet. You don't have to search, and we provide it to prevent the sale of free items, as is the case with one of the Polish forums. free Download The list is constantly updated Premium Here
    1 punto
  11. Buenas quiero hacer un gran aporte para los que quieran empezar con el mundo de metin2 y para los que ya empezaron. veo que mucha gente busca vdi con freebsd 12.1, o vdi con freebsd 9.2,, ademas de estar listos, también se los deje con instalación FARM ( servidor web), con web instalada todo listo para descargar y montar, aparte le deje 2 clientes uno el que trabaja con del vdi freebsd 12.1 esta en español vieja escuela, y el que trabaja con el vdi freebsd 9.2 es el bestproduction V4 traducido al 30% al español, ambos clientes vienen con patchupdate listo para usar con instalador, cliente español sin patchupdate: https://onotepad.com/note/o4uxl5tn5e1/184828 cliente español con patchUpdate: http://exe.io/mt2ClienteEs_Pup vdi freebsd 12.1+ file + pagina web lista para usar: https://programas-juegos-max.blogspot.com/2020/03/metines-con-vdi-freebsd-121-vdi-freebsd.html cliente bestprodution v4 + patchUpdate: https://programas-juegos-max.blogspot.com/2020/03/metines-con-vdi-freebsd-121-vdi-freebsd.html vdi freebsd 9.2 + file +pagina web lista para usar: https://programas-juegos-max.blogspot.com/2020/03/metines-con-vdi-freebsd-121-vdi-freebsd.html Aquí están los tar.gz de los bestproduction que estaban pidiendo: mysql_max_9_2 y game_max_9_2: https://programas-juegos-max.blogspot.com/2020/03/metines-con-vdi-freebsd-121-vdi-freebsd.html Para Descomprimir: tar -xzvf mysql_max_9_2.tar.gz y despues colocan otra vez tar -xzvf game_max_9_2.tar.gz Creador de archivos para patchUpdate https://programas-juegos-max.blogspot.com/2020/03/autopatcher-profesional-metin2.html carpeta makepack esta carpeta es el contenido del cliente para poder editar el root y todo el contenido traducirlo u otros. Aqui les dejo el enlace de donde bajar el makepack, como compilarlo y corregir el error de los edificios que no se ven cambiar la carpeta root por la que esta en este enlace https://programas-juegos-max.blogspot.com/2020/04/descompilar-y-compilar-cliente-metin2.html Datos de acceso: vdi freebsd 12.1=>usuario: root clave: 0424nilmary mysql freebsd 12.1=>usuario: remoto clave: R1.mo_To vdi freebsd 9.2=>usuario: root clave: dev mysql freebsd 9.2=>usuario: root clave: /*bestproduction*/ clientes: usuario: nilsonmax clave:12345678 aunque con la pagina web pueden entrar en registrar y se crean las cuentas que deseen como les dije ya esta listo para montar. para configurar escribirme, usen noip para enlazar las ip dinamica de sus pc, y abrir los puertos y desactivar el firewall sea por antivirus y/o windows aquí les subo unas imagenes , la web, el instalador del metin, el pachtUpate, el metin y unas ventanas que tiene casi listo con todo. Este Server online Metin2Pluton traducido al 80%, ya este mes lo termino al 100%, vendo traducción interesados whatssap +573008935212 ver imágenes de la traducción al 80% https://programas-juegos-max.blogspot.com/2020/05/venta-de-metin2-bestproduction-v4.html Aprovecho de poner un enlace acá que me preguntan a cada rato que VPS les puedo recomendar, aquí les dejo el link donde les recomiendo un VPS de paga, digo que trae y porque lo prefiero y no solo para metines sino para los demas juegos online ya que trae buenas prestaciones y a muy buen precio, https://programas-juegos-max.blogspot.com/2020/07/contratar-un-buen-vps-o-servidor.html Los enlaces viejos se cayeron estas son imágenes ya mas reciente del proyecto, de las traducciones que estoy vendiendo es el mismo metin pero ya traducido al 80% no al 30% es para que vean lo que trae el metin.
    1 punto
  12. Compilación del binario 40K Introducción Bienvenidos a aquellos que les gusta y les interesa el tema de metin2 a fondo. Esta guía la hago especialmente para ellos y con el fin de facilitar conocimiento ya que a veces el don de búsqueda nos falla o no conseguimos encontrarlo. El nivel necesario para esto será: PRINCIPIANTE. Esta guía no es para aquellos que saben del tema en profundidad. Dicho esto, empecemos a introducir... ¿Qué haremos? Instalar Visual Studio 2013. Descargar los archivos del binario. Compilar. Probar. Características del cliente: Hay que aclarar que lo que aquí ofrezco es gracias a alguien que vino antes y dejo el trabajo a medias. Su nombre es Reboot y es un ex-usuario de Metin2Dev. Versión de python actualizada de 2.2 a 2.7 [hecho por mi]. All mount can attack // todas las monturas pueden atacar. All toolset set to v120_xp (Windows xp compatibility) include source files of the client and library, all set to v120)xp toolset. ENABLE_COSTUME_SYSTEM // sistemas de traje ENABLE_ENERGY_SYSTEM // sistema de energia ENABLE_DRAGON_SOUL_SYSTEM // ENABLE_BELT_SYSTEM // CINTURONES Cryptopp 5.6.2 boost 1.55 Cliente recomendado: Test Client für 40250. LINK. (VIENE YA PREPARADO POR MI PARA EL BINARIO) [LLEVA INCORPORADO EL NEXUS -> DESCOMPILADOR/COMPILADOR DE CLIENTE (EN LA CARPETA PACK)] El cliente este en Alemán. Posiblemente pronto suba alguna traducción del cliente para que lo podáis utilizar en español aunque ya haya guías de como traducirlo. Hay que tener en cuenta que esta guía esta hecha hasta el punto de compilar y tener el ejecutable, NO SOLUCIONAR BUGS QUE PUEDAN APARECER. Primer punto La descarga del Visual Studio 2013 la encontraremos en este enlace directo: LINK. Nota: en la instalación sólo nos dedicamos en hacer click en "siguiente" no modificar valores predeterminados. Segundo punto Los archivos del binario los encontraremos en el enlace de Mega: LINK Tercer punto Nota: Cualquier modificación en el source del cliente se tendrá que realizar previo a la compilación. ABRIMOS EL ARCHIVO CLIENT.SLN CON VISUAL STUDIO Y EN MODO LE ASIGNAMOS RELEASE, APRETAMOS CTRL + SHIFT + B Y ESPERAMOS QUE COMPILE, EL BINARIO ESTARÁ EN LA CARPETA BINARY DONDE DESCOMPRIMIMOS EL RAR DE LOS ARCHIVOS DEL CLIENTE. (En los pasos en fotos utilizo solamente el ratón y ninguna combinación de tecla sino que abro menús y ya.) PASOS EN FOTOS... 4. PROBEMOS... Nota: El cliente debe tener las librerías de Python 2.7 (el cliente preparado no le hace falta) Si utilizáis otros cliente deberíais bajaros la carpeta "lib" de la raíz del cliente que deberéis tener para correr el binario: LINK. Y HASTA AQUI LA GUÍA. Especiales agradecimientos a los autores de dicho trabajo como Reboot y Shisui. Y por último vuelvo a recalcar que el trabajo en su 99% no esta hecho por mi. Yo sólo intento aportar a la comunidad una manera fácil de compilar el binario sin dolores y dolores de cabeza que yo sufrí en mi tiempo para alcanzar conocimiento. Tampoco quiere decir que todo es regalado, habrán errores/bugs que puedan aparecer después de esto incluso con el cliente que os recomiendo pero como siempre, mi consejo es que nunca os rindáis. Un cordial saludo a todos y todas de esta comunidad. Y por último, recordar que si encontráis cualquier bug o error que se me haya pasado por alto o surja de imprevisto no dudéis en dejármelo en la caja de comentarios ! ! ! Canal YouTube para desarrollo metin2
    1 punto
  13. Hola chicos, traigo una nueva guía bastante simple. Es poner varías tiendas en un único npc. (PERDONAD, si me he equivocado de categoría al publicar este post) Nos vamos al navicat, a la db player y a la tabla shop : Añadimos una fila nueva, con "vnum" que no exista en esa misma tabla, esa será el vnum que haga referencia a nuestra tienda. En el name, pondremos el nombre del npc y por ultimo en npc_vnum, el vnum del npc. Ya tenemos creado nuestra tienda para añadirle items nos vamos a la tabla shop_item. Explicación en la tabla shop_item: Ya tendríamos creada nuestra tienda, con los items puesto a la venta por último faltaría añadir una quest, para que nos pueda abrir las diferentes categorías de las tiendas. Resultado: Un saludo!
    1 punto
  14. 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
    1 punto
  15. MiGueLiT0

    Pagina Web Simple

    DESCARGA: http://uploaded.net/file/j521y15j
    1 punto
  16. Bueno chicos os traigo este compilador / descompilador, tiene una sensilla interfaz y ala vez no hace falta hacer xml ( ya que el programa mismo no los hace) basta con poner vuestros archivos en las carpetas de los eix/epk. Descarga por MEGA(Link actualizado por @Dilong): https://mega.nz/#!loQk0Ljb!YVTayTradq7UwZDRrmr5EijAgEAURnvo1w5XZL13V8w Recomiendo actualizar las librerias c++ por si os da el error de mscore100.dll. http://www.microsoft...on.aspx?id=5555 Creditos: Luscha, Inforge.
    1 punto
  17. Randaron

    Nuevas City Unicas

    Imagenes: https://forum.turkmmo.com/konu/3442159-metin2-yeni-koy-gorunumleri-ucretsiz-paylasim-2016-ilk-defa-bu-forumda/ Dowload: https://mega.nz/#!ag1FxJTJ!GxKA6eRk5__565m5lKsL7k0bbUR0lPcqGRac3qAX9Y0
    1 punto
  18. Hola foreros y foreras hoy les traigo algo que a simple vista me impacto y a la vez gusto mucho,desde elitepvpers les traigo este login para sus clientes que lo disfruten. ANTES QUE NADA HACER COPIA DE SEGURIDAD DE LOS ARCHIVOS QUE VIENEN EN EL COMPRIMIDO: Bien aqui os dejo un video y una imagen: Video: http://www.youtube.com/watch?v=IyT6XiVCe6M Imagen: http://i.epvpimg.com/L3cab.jpg Instalacion: primero de nada debemos decompilar el locale.epk locale.eix,seguidamente irnos a la carpeta ui (dentro del locale decompilado) y sustituir los archivos por los que vienen en el archivo comprimido.(/locale/ui) Decompilamos el root.epk y root.eix,sustituimos o copiamos el/los archivos "intrologin.py","serverinfo.py","intrologin.txt" y "ui.txt" Compilamos el locale y el root y añadimos al cliente. P.D: Acuerdate en el archivo serverinfo.py de poner la ip y puertos que uses para tu servidor. Descarga: http://www.mediafire.com/?gaabqqhmnzcspws Creditos: AG.Simpsey Fuente: Elitepvpers
    1 punto
  19. SzC

    [Aporte] Offline Shop System

    Descarga: https://mega.nz/#!AVo3kKTQ!vFlrp7roOIvwbsXa7UxjOTmeRoq8UH7lW2T49SHuCF4 Creditos: board legend
    1 punto
  20. 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
  21. MiGueLiT0

    [WEB]Eren2

    Buenas chicas les dejo esta web :V imagen: http://metin2vatan.ro/news Descarga: https://mega.nz/file/0CgRiD5T#z1JdDQh3aHsnhoFCjz0aDW9MlxfUs9t6uystk4Rec7w
    1 punto
  22. Jfirewall

    Interface New Age

    Pues tengo mas de 25 interfaces xd y uso unas pocas para motivos personales. bueno en fin a nadie le importa aca les traigo la del new age un servidor que hiba a salir que era del akroma y yo me robe ese diseño hace mas de 6 meses o 8 meses el neox me saco el diseño y yo hice los script antes los habia hecho pero con errores ahora esta totalmente funcional para todas las resoluciones etc.. y a mi no me gusta entonces se las comparto creditos : jfirewall script neox por recortarla no siendo mas disfrutenla. https://mega.co.nz/#!NA91XSwT!kvKxGkxkJgmI-As8RxzQeKT9j2txmrmQjIP4YIahxDk saludos
    1 punto
  23. Hola muy buenas Tardes Aqui les Comparto esta Interfaz de cliente de login y select y Crear pj Espero que les Gustes no Se olviden Dar las Gracias y el que no Quiera bajarlo pues no lo baje no insulten :V Aqui les dejo unas fotos en estos links https://ibb.co/Gn2fvz8 https://ibb.co/thJJkWD https://ibb.co/hdXrnc9 Link mega https://mega.nz/file/MEwxxKgY#oCjUDMhJxhXir8dwXgxHcOcfa3ggFcBkEBsYys7PqHQ
    1 punto
  24. Hola chachos Estaba buscando esta item shop con el diseño del oficial pero según miraba en los comentarios era fake link oficial: http://www.elitepvpers.com/forum/metin2-pserver-guides-strategies/3148883-release-official-itemshop-2014-gf-script.html Si alguien puede pásamela lo agradecería muchísimo. Salu2
    1 punto
  25. Albúm de imagenes de los serverfiles [CLIC AQUI] Para ingresar al album de imagenes. Descargas: SERVERFILES+SOURCE+BINARIO+CLIENTE DUMPROTO
    1 punto
  26. Karol

    QUEST DEL BIOLOGO

    Nose si ya estaban posteadas pero aqui les vengo a dejar las misiones del biologo del Nivel 4 hasta el lvl 96 Creo que estan al 100% traducidas Bueno espero mis +1 Y Con Unas Gracias Esta Todo Bien Aqui les dejo el link por mega https://mega.nz/#!8ZsTFYLL!Ln3YB0GJXid8OmNcbyw_dvoH54vPWBm-jl2PtXtPJ90
    1 punto
  27. 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
  28. 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
  29. Hola bueno como nadie se decidio a postearlo en metin2zone, ps se los posteo yo xd, estos files fueron posteados por el mismo maxmi en turkmmo y luego lo llevaron para EPVP. SON ESTILO .ES Caracteristicas Files: Versión del juego: 34083 ( 62 MB ) Original Db Versión: 33820 ( 2 MB ) Versión del cliente: 34669 Status: 90 Nivel : 105 Oficial del Sistema de vestuario Sistema de mascotas . Abierto Backdoor cerrado. Sistema Oficial de la Energía Skybox Oficial Oficial Torre de los diablos Satanás Oficial de las catacumbas Oficial Equipamiento del dragón Arañas 1, 2 y 3! 8 Canales! Sistema Batalla Arena Anti Kick Hack y Mucho mas! ALGUNAS IMAGENES: sistema de Trajes Oficial! NUEVOS MAPAS: Drop! DATOS Mysql PW : maxmi GM id ; maxmi gm pw ; sezer123 Iniciar Files; cd /usr/game sh start.sh (Connection refused) FreeBSD 64; cd /usr/game sh 64bitstart.sh FreeBSD 32; cd /usr/game sh 32bitstart.sh DESCARGA: POR Mega Game ( 69 MB ) ; https://mega.co.nz/#!gNdXhDYR!S18QOmf53fk2Yc56CNxQ2D7dzAMLdkelVNrXVhyWBzk Mysql ( 0.5 MB ) ; https://mega.co.nz/#!YAdWiQZY!MSrBE3GNQw9towVHzNfg7mDHHC8oarVzZUVXq7DbEz0 Client ( 286 MB ) ; https://mega.co.nz/#!RJ0HDSAA!EPwWxCNYvsKQRikFHLOPYFxwBh82BJ2DjveZbD25aBE LIB que se añade en la ruta de /usr/lib32 ; https://hotfile.com/dl/254272895/47248e7/libstdc__.so.rar.html VDI Gracias a Arkano: https://mega.co.nz/#!MYsEGJ4A!Srb9_guuTL7OPQ6mLVOhEyg2hWYoQ525oiZWqCbd_9Q Virtual Box: Root Pass: Solo dar ENTER Navicat: Root Pass: invoice Creditos: Maxmi Fuente: Turkmmo PD: El Cliente que pueden usar es el oficial turco, por lo menos yo use ese para testiar los files y me funcionaban. SALUDOS!
    1 punto
  30. Desmint

    Nueva Interfaz Login

    Aqui Les Dejo Una Imagen Y Su Link Link:https://mega.co.nz/#!BRgwgAYZ!IcSQ2UuC8c5vW3KLT4SjWhw2O-Ic3jbWBk-PPjrznpc
    1 punto
  31. unkoll

    HOMEPAGE SNOOKEY

    I dont care. This cms is trash
    1 punto
  32. Hola a todos! A continuación vamos a explicar como realizar la instalación de la ItemShop que proporciona Recursos Móviles para los clientes de Metin2. 1) Accederemos con nuestro usuario a http://www.recursosmoviles.com/index.html 2) En el menú de WEBMASTER entraremos en Herramientas ? Scripts ItemShop 3) Una vez dentro de la sección Scripts Itemshop, descargaremos la ItemShop para Metin2: 4) Extraemos los ficheros a una carpeta o directorio, por ejemplo itemshop, nos quedará algo así: 5) Subimos la carpeta o directorio itemshop a nuestro Hosting. 6) Deberemos acceder por el navegador a la ruta relativa /itemshop/setup_mysql.php (Ej: http://dominiometin2.com/itemshop/setup_mysql.php) 7) Una vez aquí configuraremos los datos para la conexión con nuestra base de datos: En el caso del ejemplo utilizaremos los siguientes datos de conexión: Host: localhost (Si tenéis base de datos remota tendréis que poner la IP de la base de datos) Login: semontejano (Usuario de la base de datos, normalmente es root) Password: aquí hay que poner la contraseña de acceso a la base de datos Bases de datos a crear: itemshop o itemshoprm por ejemplo… Una vez configurado los datos, le daremos a Crear para crear la base de datos y tablas utilizadas por la ItemShop. 8) Como nos indica, falta configurar el archivo config.fn.php que vamos a continuación y borrar el archivo setup_mysql.php 9) Pasamos a configurar el config.fn.php, solo tenemos que completar con nuestros datos, está comentando que es cada cosa y si tenéis dudas podéis contactar con el Soporte de Recursos Móviles: Una vez configurado el config.fn.php guardamos y ya podemos acceder a nuestra itemshop con los datos de administración o una cuenta del juego. Desde el navegador: http://tudominio.com/itemshop/itemshop.php administracion / passadmin ¡Y ya tenemos instalada nuestra ItemShop para Metin2! Versión en Vídeo: https://www.youtube.com/watch?v=jBKQQtT4FDI
    1 punto
  33. Break

    Files Arrival2

    Te falto el cliente xD
    1 punto
  34. El pack incluye: - Cliente - Source code cliente - Source code server - Server files (quests, mapas, cores, etc.) Son unos server bastante estables y equilibrados, probados con más de 500 usuarios online al mismo tiempo sin problemas de lag o caídas. Sin bugs. Actualmente el servidor se encuentra online y podéis probarlo en https://metin2rage.com/ También le podéis echar un ojo a la presentación si queréis ver lo que incluyen: Presentación Descripción y sistemas: - Base estable, equilibrada y testeada con cientos de usuarios online. - Cabos y flechas infinitas - Instant equip - Special Storage - Diálogo destruir objetos - MP al hacer click en nombre - Target information - Shop offline + WON (versión única sin bugs) - Cambiar CH (versión única sin bugs) - Pet system - Inventory slot marking + exchange system - Rocios en affect bar - Revivir full hp - Block/unblock exp - Estolas - Biólogo profesional - Sistema de brillos - Party buff - Un jugador por IP en mapas indicados - Revive event para quests - Limite de yang 999.999.999.999 - Dungeon info - Transfiguración - Dar MDs a todos los player de un imperio en un mapa. - Dungeons únicas: (Aryas dungeon, Cueva Slime, Bosque Celestial...) - Dungeons normales: (Nemere, Arrador, Azrael, Torre...) - Eventos: (Budokan, guerra de reinos, defiende tu metin, sayon, guerra total, evento de caza, trueque sorpresa...) - Atuendos de armas y armaduras únicos - Y mucho más... revisa presentación o descarga el servidor. Server File: https://mega.nz/#!S1R1gCqZ!GOLXtiG9LK-oJ8svK4O2ovLE9ZYMtHdRL1p-WUr4Mn4 (Elimine base de datos y estan limpios) WEB programada en Python: https://mega.nz/#!q9AnCQRK!m2mIgmtkUCdDliHg3WSuyV6jdNWT-gQmbZe-bQwguLc Puedes revisar el funcionamiento de esta en www.metin2rage.com by DevLilian.
    1 punto
  35. Buenas, Si alguna vez habéis curioseado por el cliente habréis visto seguramente que en el mismo archivo donde se encuentran las texturas del agua hay también unas de lava que sin embargo nunca fueron implementadas. Si queréis sustituir en determinados mapas el agua por lava debéis hacer esto: Nota: este es el source del WoM y no puedo garantizar que funcione tal y como lo he puesto en vuestro source. Si no conseguís que vaya, alguien con un poco de idea de C++ os podrá ayudar a adaptarlo. Aunque esta modificación es mía, no tengo ni idea de C++ y le he sacado por pura observación y lógica. (Source del cliente siempre) MapOutdoorLoad.cpp Buscar: if (stTokenVectorMap.end() != stTokenVectorMap.find("terrainvisible")) { m_bSettingTerrainVisible = (bool) (atoi(stTokenVectorMap["terrainvisible"][0].c_str()) != 0); } else { m_bSettingTerrainVisible = true; } e insertar a continuación: if (stTokenVectorMap.end() != stTokenVectorMap.find("islavamap")) { m_bSettingIsLavaMap = (bool)(atoi(stTokenVectorMap["islavamap"][0].c_str()) != 0); } else { m_bSettingIsLavaMap = false; } MapOutdoorWater.cpp Modificar esta parte del siguiente modo: void CMapOutdoor::LoadWaterTexture() { UnloadWaterTexture(); char buf[256]; for (int i = 0; i < 30; ++i) { if (m_bSettingIsLavaMap) { sprintf_s(buf, "d:/ymir Work/special/lava/%02d.dds", i + 1); } else { sprintf_s(buf, "d:/ymir Work/special/water/%02d.dds", i + 1); } m_WaterInstances[i].SetImagePointer((CGraphicImage *)CResourceManager::Instance().GetResourcePointer(buf)); } } MapOutdoor.h Editad al final de todo añadiendo esta última línea: private: bool m_bSettingTerrainVisible; bool m_bSettingIsLavaMap; Ahora tenéis que ir al fichero MapSetting.txt del mapa en el que queráis reemplazar el agua por lava y añadir esta línea: IsLavaMap 1 Resultado:
    1 punto
  36. Desmint

    [HACK]Metin2LostDay

    Hola amigos de Metin2Zone..... Hoy les traigo un buen hack/boot para Metin2 LostDay Funcional 100% similar al de Metin2.es pero este funciona perfectamente sin tirar del servidor, o sin que alguien se de cuenta. Adiciona a esto, trae precargado el hack de Damage, el cual consiste en bajar 3 veces mas rapido el HP de Enemigo, Mob, Jefe.... todo 100% funcional probado por mi.... Sin mas preambulos.... les dejo el link de descarga, es de facil instalacion en la parte del cliente, e inyeccion que se las dejare por ScreenShot... Pronto mas Hacks y Boots Para este y otros Metines Parte del Cliente: Descomprimen el archivo rar y entran a las carpetas, cada una dice su función, copean los archivos "py" y los pegan en la carpeta "lib" del cliente Los archivos de la otra carpeta lo pegan dentro de la carpeta Metin2LostDay (raiz) IMPORTANTE! El cliente debe de estar sin hacer la primer carga de usuarios, es decir, solo abrirlo y dejarlo en el login para realizar los siguientes pasos Inyeccion: Paso 1, descomprimen el archivo rar y les quedara una carpeta con 2 subcarpetas 1 archivo y 1 ejecutable. Paso 2, ejecutan en modo administrador "inyector.exe" Paso 3, una vez el inyector se ejecute, buscan el proceso "Mt2losday.exe" y lo seleccionan Paso 4, se dirigen hacia el boton "Browse" y buscan el archivo "DMG HACK.dll" como se observa en la imagen Paso 5, Le dan al boton "inject" y listo. Les aparecera un cuadro en la parte izquierda del cliente LostDay que dice "start" lo inician y les aparecera 2 mensajes de creditos, Le dan aceptar y les aparecera despues, un segundo boton de "start" el cual contiene el script de boot Una vez acepten todo, entran a su cuenta, y listo! Tendran el hack de daño activado (no lo podran desactivar) y el boot en una ventana flotable. Evidencias: Descarga: http://www.mediafire.com/file/gtojevlv27j4mj3/DMG_HACK.rar/file
    1 punto
  37. https://www.mediafire.com/file/e341515o5758f8k/Pagina_Web_Publico_tayson.rar/file
    1 punto
  38. Bien, te ayudo Aquí en el serverinfo.py Lo primero es qué donde esta el "146.174.110" pones "ip" y en "localhost" pones tu ip para conectarte. Revisa los demás a ver si lo tienes todo bien. Y no recuerdo si hay un archivo qué se llama Dates.py o algo así.
    1 punto
  39. - Descargar el vdi FreeBSD 9.2 Con Source - lo montáis y os metéis (user: root pass: dev) - Abrís el ftp y editáis el "Makefile" de /usr/src/mainline_released/mainline_sg/Srcs/Server/game/src - en SVN_VERSION ponéis como queréis que se llame vuestra versión SVN_VERSION = 123456 - buscáis esto $(OBJDIR)/version.o: version.cpp @$(CC) $(CFLAGS) -D__USER__="$(USER)" -D__HOSTNAME__="$(HOSTNAME)" -D__PWD__="$(PWD)" -D__P4_VERSION__="$(P4_VERSION)" -c $< -o $@ @echo compile $< lo cambiáis por $(OBJDIR)/version.o: version.cpp @$(CC) $(CFLAGS) -D__P4_VERSION__="$(SVN_VERSION)" -c $< -o $@ @echo compile $< añadís debajo de LIBDIR += -L/usr/local/lib esto LIBDIR += -L/usr/local/lib/mysql - Dentro de /usr/src/mainline_released/mainline_sg/Srcs/Server/game/src editáis el archivo "version.cpp" borrando lo que hay por #include <stdio.h> void WriteVersion(){#ifndef __WIN32__ FILE* fp = fopen("VERSION.txt", "w"); if (fp) { fprintf(fp, "game revision: 123456n"); fclose(fp); }#endif} - Volvemos a la consola y ponemos: cd /usr/src/mainline_released/mainline_sg/Srcs/Server/game/srcgmake -j20 (Ultimo y más dificil) - Esperar a que se compile esta es la base del source que tomó vanilla Grifo: piecemeal search in m2dev
    1 punto
  40. francia

    web Lysania2

    imagen Descargar web Polaria2 Descargar web wildfire descargar web atheros 2 descargar creditos just4metin +
    1 punto
  41. sergio2014

    Quest Biologo lvl 85

    Bueno revisando las quest del biologo me lleve esta sopresa, quisiera saber si el problema esta en la quest que yo tengo o con todas las de lvl 85 pasa lo mismo.. say_reward ( "Por la ayuda que ofreciste al biologo" ) say_reward ( "Recibes los siguientes bonus permanentes" ) say_reward ( "Aumento d la velociadad de hechizo +25%." ) say_reward ( "Aumento de daño contra otros jugadores +10%." )say_reward ( "Es un aumento permanente." ) affect.add_collect(apply.CAST_SPEED,25,60*60*24*365*60) --60¦~affect.add_collect(apply.ATT_GRADE_BONUS,10,60*60*24*365*60) --60¦~ Ahi dice, "aumento de daño contra otros jugadores", al hacer la mision y mirar en la tabla de bonus me encuentro que me da 10% Fuerza Ninja, la hago con otro pj y me da 10% Fuerza Sura, y asi con cada uno, siempre es aleatorio entre las 4 razas. La pregunta es: La quest funciona de esa manera aleatoria o la misma quest esta mal? Por si acaso dejo adjuntada la quest. collect_quest_lv85.rar
    1 punto
  42. [D]ELARO ✓

    borrar

    borrar.
    0 puntos
Esta clasificación está establecida en Madrid/GMT+02:00
×
×
  • Crear nuevo...