Tabla del Honor
Contenido popular
Showing content with the highest reputation on 14/08/20 en todas las áreas
-
[APORTE] MultiHack + DMG | Servidores Privados
Leo TheDream and 2 otros reaccionó a Josevasqueez por un tema,
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 -
DMG hack en .mix
Pepito Reyes and 2 otros reaccionó a mrbraveras por un tema,
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 -
serverfiles Daroo Link Resubidos
ferhatcnrr and uno mas reaccionó a ChuchoGamer por un tema,
Hola muy buenas tardes hoy les Traigo estos files Daroo 1678 son files virgenes Tambien les dejare un cliente para que puedan usarlo el cliente es total mente virgen les pueden implementar lo que quieras ha sus gustos Claro Repito si estos files Ya estan postiado con link resubido Porfavor Borren este post Claros simpre y cuando si el otro Post original los tenga activo los links bueno en fin aqui se los dejo Link del Files http://www.mediafire.com/file/tvx11lj9dfe5zw2/Serverfiles1678-RC-B4.exe La contraseña para Descomprimir los files es germany Link Files 2089 (daroo 8.2) .tar y Cliente omega (2011) instalable por @Dilong: https://mega.nz/#F!s9pz3CbR!MVMn7dvUChrqm_ldiw6BhQ Link del cliente http://www.mediafire.com/file/yopxej88befqn8c/Metin2+by+daroo.rar Datos para Encender la maquina virtual y Navicat root daroo Para prender los files solo configuren la maquina cuando ya esta listo ponen m2 start les pedira que canal quieres encender les pones 1 y enter y listo Cliente omega Español full esta por partes el cliente http://www.mediafire.com/?gqlmf58cd6fxg Espero que os guste Credito para el Creador del los files daroo 8.2 Saludos2 puntos -
Server Files 40k en VDI Arrival2
morstamayo and uno mas reaccionó a [D]ELARO ✓ por un tema,
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.py2 puntos -
VDI Server Files 40k, Metin2 Pandora / Metin2 Eternia2
Slaver02 and uno mas reaccionó a [D]ELARO ✓ por un tema,
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 :v2 puntos -
EVADIR PROTECCION [SVSIDE]
Anibal Estela Ramos and uno mas reaccionó a Nucla2018 por un tema,
http://svside.com2 puntos -
Nuevos Effect de agua en movimiento
Kuillper reaccionó a TTV_RANDARON por un tema,
Pulse aquí para descargar1 punto -
Nuevas Citys 1 Shinsoo,Jinno Y Chunjo (Archivos .eix y .epk)
DarneLL超本能 reaccionó a admnahui por un tema,
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: ADMNAHUI1 punto -
[REUPLOAD]Serverfiles martysama v4 RO
luis nuñez reaccionó a MiGueLiT0 por un tema,
Descarga: https://mega.nz/file/fWAClSYJ#LyO0UftPIxe8xrc14QMlfxqEOTZmCdr7GPBmBMNUdXc Creditos: Just4Metin21 punto -
[Plechito] Maps/Dungeon/Weapons/Mount/Pets
Uniqua Uniqua reaccionó a Mikimous por un tema,
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 Here1 punto -
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
-
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 metin21 punto
-
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
-
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 Total1 punto
-
Pagina Web Simple
mt2arcangel reaccionó a MiGueLiT0 por un tema,
DESCARGA: http://uploaded.net/file/j521y15j1 punto -
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
-
Imagenes: https://forum.turkmmo.com/konu/3442159-metin2-yeni-koy-gorunumleri-ucretsiz-paylasim-2016-ilk-defa-bu-forumda/ Dowload: https://mega.nz/#!ag1FxJTJ!GxKA6eRk5__565m5lKsL7k0bbUR0lPcqGRac3qAX9Y01 punto
-
Login estupendo para tu interfaz
GreposX reaccionó a themagicfreak por un tema,
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: Elitepvpers1 punto -
Descarga: https://mega.nz/#!AVo3kKTQ!vFlrp7roOIvwbsXa7UxjOTmeRoq8UH7lW2T49SHuCF4 Creditos: board legend1 punto
-
Hola, Bueno me pidio un usario que hiciera 1 video sobre como crear 1 servidor metin2 y aqui esta todo lo necesario con el video nos entendemos. https://www.youtube.com/watch?v=CCPhx6z1VSY Link's de MEGA: Datos Principales de todo "GUIA": https://mega.co.nz/#!SRRFHKZT!IhwqhoMhqfQjvFzQ7dFFXauRBH8dJ5E7E9h25Jrudy4 Cliente Omega ESP con windows.dds: https://mega.co.nz/#!CMBCmTCZ!3aeBBbhvJ7XPoVRVN_eaYc-9LMrgT79reYIAj6Y1X44 Cliente Omega Virgen: https://mega.co.nz/#!rdpQ1LJJ!9ubSUiotlFkHeD0vX12fcS1fN7sP918tdgeZvJE8fy8 SF Rain 2007+ Cliente (Nuevo link @Dilong): https://mega.nz/#F!8wYxhAAa!I-jt1PPEdeHXTMancEuYAg No-IP(DUC): https://mega.co.nz/#!jMIk2Z7C!eWN6ctcDa_cufwaqMAGkQVMDh4QGk9o93qLWeuUSIPQ EterNexus: https://mega.co.nz/#!bdxDFKBL!3Fl41l3LGq1iDePp5RhoEfFGS6pcKN_RIMsCcBkOXJI Navicat Premium Full: https://mega.co.nz/#!3QwGxKQQ!wu1Zh5zHDqHRhwB41gQBkTWtIIS5JnLH8pengEMVCAc Port Map: https://mega.co.nz/#!HM4HHYTR!C1BEcK2_vZRC4st1031KKiGAAOY32zKF0s04MjxLJL8 Traduccion Omega para el cliente sin traducir: https://mega.co.nz/#!LdgBBaLJ!m3SXX3dj9uFBGKQRZaxxjYnOkhDuASnoHr5FJKssG7o VirtualBox: https://mega.co.nz/#!LVxiWZAZ!w6XKyr2FAnPKphv9fPKkmsieiw5owvaXtIDYuwek-5c Windows.dds para el Cliente Omega Virgen sin traducir en Español[ESP]: https://mega.co.nz/#!GZwGAZxb!RBwBDCnIKsSlQOWksOEUSFb2MwxYqEgxFdOWUfzsbTU VIA HAMACHI: https://www.youtube.com/watch?v=-l4KIGVRChs VIA HAMACHI Lauling.V3: https://www.youtube.com/watch?v=lbJhKsU47No 1 LINK DE MEGA TODO LO NECESARIO. Para criticas mejor ni comenteis las ignorare solo lo e posteado para los que no saben, que comienzen aprender... Saludos, Wolf solo hice la guia de YouTube. Alguna foto http://postimg.org/image/760vcyfq5/ Fecha del Video: 27/03/20151 punto
-
[WEB]Eren2
autodesk_metin2 reaccionó a MiGueLiT0 por un tema,
Buenas chicas les dejo esta web :V imagen: http://metin2vatan.ro/news Descarga: https://mega.nz/file/0CgRiD5T#z1JdDQh3aHsnhoFCjz0aDW9MlxfUs9t6uystk4Rec7w1 punto -
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 saludos1 punto
-
New -Login/Select/Create - Lysium
Soo reaccionó a ChuchoGamer por un tema,
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#oCjUDMhJxhXir8dwXgxHcOcfa3ggFcBkEBsYys7PqHQ1 punto -
Alguien tiene esta item shop?
emilianodmg reaccionó a Stiven. por un tema,
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. Salu21 punto -
[SERVERFILES] Moris2TR
ferhatcnrr reaccionó a 【ℛ-𝓝】ℛ𝔂𝓼𝒆 por un tema,
Albúm de imagenes de los serverfiles [CLIC AQUI] Para ingresar al album de imagenes. Descargas: SERVERFILES+SOURCE+BINARIO+CLIENTE DUMPROTO1 punto -
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-jl2PtXtPJ901 punto
-
[C++]Fix Shop Offline Ken
tomas ishihara reaccionó a NazoX por un tema,
Bueno visto que no lo he visto en esta comunidad, traigo el fix de la tienda offline de ken para duplicar items en la offline, no lo he probado todavía ya que la estoy recién instalando, pero por algunos comentarios de diversos foros, funciona, bueno empecemos. 1º Solución, vamos a offlineshop_manager.cpp y buscamos la siguiente línea: void COfflineShopManager::TakeItem(LPCHARACTER ch, BYTE bPos) y cambiamos el and status = 0 por 1 quedando así: Nota: Si no funciona buscamos and status = y todos los "0" remplazamos por "1" 2ºSolución, vamos a input_main.cpp, y buscamos la siguiente línea: "case SHOP_SUBHEADER_CG_TAKE_ITEM" y remplazamos toda la función por lo siguiente: case SHOP_SUBHEADER_CG_TAKE_ITEM: { if (uiBytes < sizeof(BYTE)) return -1; BYTE bPos = *c_pData; if (!COfflineShopManager::instance().HasOfflineShop(ch)){ sys_log(0, "INPUT: %s OFFLINE_SHOP_TAKE_ITEM", ch->GetName()); COfflineShopManager::instance().TakeItem(ch, bPos); } return (sizeof(BYTE)); } Nuevamente buscamos -> "case SHOP_SUBHEADER_CG_REFRESH_UNSOLD_ITEMS" y remplazamos la función por lo siguiente: case SHOP_SUBHEADER_CG_REFRESH_UNSOLD_ITEMS: { if (!COfflineShopManager::instance().HasOfflineShop(ch)){ sys_log(0, "INPUT: %s OFFLINE_SHOP_REFRESH_UNSOLD_ITEMS", ch->GetName()); COfflineShopManager::instance().RefreshUnsoldItems(ch); } return 0; } Con esto debería bastar para solucionar el problema de duplicar items en la tienda Créditos: GucciMane. Según la otra persona, pudo solucionar el problema, solo utilizando el método 1, es decir el de "and status" Otra solución para duplicar items en la tienda offline, (en general, otro sistema o incluso en la de Ken mismo, podéis probar esto) vamos a input_main.cpp y buscamos esta función -> int CInputMain::MyOfflineShop(LPCHARACTER ch, const char * c_pData, size_t uiBytes) y añadimos lo siguiente: if (ch->GetExchange() || ch->IsOpenSafebox() || ch->GetShopOwner() || ch->IsCubeOpen() || ch->GetOfflineShopOwner() || ch->IsAcceOpen()) { ch->ChatPacket(CHAT_TYPE_NOTICE, ("This nigga try to make a bug -> %s."), ch->GetName()); return (iExtraLen); } Nota: Si no tenéis el "IsAcceOpen" a vosotros os dará el error, simplemente eliminar y cerrar en el anterior punto. Otro fix para la parte de C++ en el cliente, para poder cambiar de precio los objetos de la tienda offline, debemos hacer esto. Nos dirigimos a: PythonNetworkPhaseGameItem.cpp Una vez aquí, buscamos la siguiente línea -> bool CPythonNetworkStream :: SendChangePriceOfflineShopItem (BYTE bPos, int iPrice) lo cambiamos por lo siguiente: Para terminar otra vez en C++ del servidor, vamos a input_main.cpp y buscamos esta línea-> COfflineShopManager :: instance (). ChangePrice (ch, pTable-> bPos, pTable-> lPrice); por esta Créditos: DeYaN. Aquí comentan algún fix mas para Ken Fix Shop Offline Se agradecería que si funciona, comentéis cual método habéis usado, o si los de la web funcionan, para dejarlo claro y así los demás tengamos idea para usarlos, un saludo ^^1 punto -
[Intro Login] Traducida
[email protected] reaccionó a Anthony's por un tema,
Buenas como muchos sabréis hay un post de esta intro login: Ami me gusto y decidí usarla para mi Versión2 de mi servidor. Así que la traduje 100% al Español y como a muchos le gustaron y pocos saben hacerla funcionar o traducir. #A lo de traducir me refiero que en el post Original hubo mucha polémica de como se traducía o montaba la intro login. "Eso paso en Alemania." Bueno yo os daré los archivos necesarios y también un mini tuto de como hacerla funcionar. Bien lo primero que haremos será lo siguiente: Descompilar root y ir al archivo: "intrologin". Y lo remplazaremos por lo siguiente: import dbgimport appimport netimport uiimport imeimport sndimport wndMgrimport musicInfoimport serverInfoimport systemSettingimport ServerStateCheckerimport localeimport constInfoimport uiCommonimport timeimport ServerCommandParserimport imeimport uiScriptLocaleimport chatimport sysimport md5import backgroundimport osimport stringimport constinfoimport linecache########Config########DEINEIP = ""CH1PORT = CH2PORT = CH3PORT = CH4PORT = AUTHPORT = SERVERNAME = "Aeternum2"LOGINDATENSPEICHERN = 0 #0 = aus / 1 = anFORUMLINK = ""YOUTUBELINK = ""FACEBOOKLINK = ""#########################Ab hier nichts mehr ändern!######RUNUP_MATRIX_AUTH = FALSENEWCIBN_PASSPOD_AUTH = FALSELOGIN_DELAY_SEC = 0.0SKIP_LOGIN_PHASE = FALSESKIP_LOGIN_PHASE_SUPPORT_CHANNEL = FALSEFULL_BACK_IMAGE = TRUEPASSPOD_MSG_DICT = {}VIRTUAL_KEYBOARD_NUM_KEYS = 46VIRTUAL_KEYBOARD_RAND_KEY = FALSECH1STATE = 0CH2STATE = 0CH3STATE = 0CH4STATE = 0def Suffle(src): if VIRTUAL_KEYBOARD_RAND_KEY: items = [item for item in src] itemCount = len(items) for oldPos in xrange(itemCount): newPos = app.GetRandom(0, itemCount-1) items[newPos], items[oldPos] = items[oldPos], items[newPos] return "".join(items) else: return srcif locale.IsNEWCIBN() or locale.IsCIBN10(): LOGIN_DELAY_SEC = 20.0 FULL_BACK_IMAGE = TRUE NEWCIBN_PASSPOD_AUTH = TRUE PASSPOD_MSG_DICT = { "PASERR1" : locale.LOGIN_FAILURE_PASERR1, "PASERR2" : locale.LOGIN_FAILURE_PASERR2, "PASERR3" : locale.LOGIN_FAILURE_PASERR3, "PASERR4" : locale.LOGIN_FAILURE_PASERR4, "PASERR5" : locale.LOGIN_FAILURE_PASERR5, }elif locale.IsYMIR() or locale.IsCHEONMA(): FULL_BACK_IMAGE = TRUEelif locale.IsHONGKONG(): FULL_BACK_IMAGE = TRUE RUNUP_MATRIX_AUTH = TRUE PASSPOD_MSG_DICT = { "NOTELE" : locale.LOGIN_FAILURE_NOTELEBLOCK, }elif locale.IsJAPAN(): FULL_BACK_IMAGE = TRUEdef IsFullBackImage(): global FULL_BACK_IMAGE return FULL_BACK_IMAGEdef IsLoginDelay(): global LOGIN_DELAY_SEC if LOGIN_DELAY_SEC > 0.0: return TRUE else: return FALSEdef IsRunupMatrixAuth(): global RUNUP_MATRIX_AUTH return RUNUP_MATRIX_AUTH def IsNEWCIBNPassPodAuth(): global NEWCIBN_PASSPOD_AUTH return NEWCIBN_PASSPOD_AUTHdef GetLoginDelay(): global LOGIN_DELAY_SEC return LOGIN_DELAY_SEC app.SetGuildMarkPath("test")class ConnectingDialog(ui.ScriptWindow): def __init__(self): ui.ScriptWindow.__init__(self) self.__LoadDialog() self.eventTimeOver = lambda *arg: None self.eventExit = lambda *arg: None def __del__(self): ui.ScriptWindow.__del__(self) def __LoadDialog(self): try: PythonScriptLoader = ui.PythonScriptLoader() PythonScriptLoader.LoadScriptFile(self, "UIScript/ConnectingDialog.py") self.board = self.GetChild("board") self.message = self.GetChild("message") self.countdownMessage = self.GetChild("countdown_message") except: import exception exception.Abort("ConnectingDialog.LoadDialog.BindObject") def Open(self, waitTime): curTime = time.clock() self.endTime = curTime + waitTime self.Lock() self.SetCenterPosition() self.SetTop() self.Show() def Close(self): self.Unlock() self.Hide() def Destroy(self): self.Hide() self.ClearDictionary() def SetText(self, text): self.message.SetText(text) def SetCountDownMessage(self, waitTime): self.countdownMessage.SetText("%.0f%s" % (waitTime, locale.SECOND)) def SAFE_SetTimeOverEvent(self, event): self.eventTimeOver = ui.__mem_func__(event) def SAFE_SetExitEvent(self, event): self.eventExit = ui.__mem_func__(event) def OnUpdate(self, state): lastTime = max(0, self.endTime - time.clock()) if 0 == lastTime: self.Close() self.eventTimeOver() else: self.SetCountDownMessage(self.endTime - time.clock()) def OnPressExitKey(self): #self.eventExit() return TRUEclass LoginWindow(ui.ScriptWindow): IS_TEST = net.IsTest() def __init__(self, stream): print "NEW LOGIN WINDOW ----------------------------------------------------------------------------" ui.ScriptWindow.__init__(self) net.SetPhaseWindow(net.PHASE_WINDOW_LOGIN, self) net.SetAccountConnectorHandler(self) self.matrixInputChanceCount = 0 self.lastLoginTime = 0 self.inputDialog = None self.connectingDialog = None self.stream=stream self.isNowCountDown=FALSE self.isStartError=FALSE self.xServerBoard = 0 self.yServerBoard = 0 self.loadingImage = None self.virtualKeyboard = None self.virtualKeyboardMode = "ALPHABET" self.virtualKeyboardIsUpper = FALSE def __del__(self): net.ClearPhaseWindow(net.PHASE_WINDOW_LOGIN, self) net.SetAccountConnectorHandler(0) ui.ScriptWindow.__del__(self) print "---------------------------------------------------------------------------- DELETE LOGIN WINDOW" def Open(self): ServerStateChecker.Create(self) print "LOGIN WINDOW OPEN ----------------------------------------------------------------------------" self.loginFailureMsgDict={ #"DEFAULT" : locale.LOGIN_FAILURE_UNKNOWN, "ALREADY" : locale.LOGIN_FAILURE_ALREAY, "NOID" : locale.LOGIN_FAILURE_NOT_EXIST_ID, "WRONGPWD" : locale.LOGIN_FAILURE_WRONG_PASSWORD, "FULL" : locale.LOGIN_FAILURE_TOO_MANY_USER, "SHUTDOWN" : locale.LOGIN_FAILURE_SHUTDOWN, "REPAIR" : locale.LOGIN_FAILURE_REPAIR_ID, "BLOCK" : locale.LOGIN_FAILURE_BLOCK_ID, "WRONGMAT" : locale.LOGIN_FAILURE_WRONG_MATRIX_CARD_NUMBER, "QUIT" : locale.LOGIN_FAILURE_WRONG_MATRIX_CARD_NUMBER_TRIPLE, "BESAMEKEY" : locale.LOGIN_FAILURE_BE_SAME_KEY, "NOTAVAIL" : locale.LOGIN_FAILURE_NOT_AVAIL, "NOBILL" : locale.LOGIN_FAILURE_NOBILL, "BLKLOGIN" : locale.LOGIN_FAILURE_BLOCK_LOGIN, "WEBBLK" : locale.LOGIN_FAILURE_WEB_BLOCK, "HACK" : "Du wurdest wegen hacken gesperrt.", "BOT" : "Du wurdest wegen benutzung von Bots gesperrt.", "SCAM" : "Du wurdest wegen Betrug gesperrt.", "INSULT" : "Du wurdest wegen Beleidigung gesperrt.", "FAKE" : "Du wurdest aufgrund deiner Namensgebung gesperrt.", "NAME" : "Du wurdest aufgrund deiner Namensgebung gesperrt.", "BUG" : "Du wurdest wegen Bugusing gesperrt.", "DK" : "Du wurdest wegen Dauerkill gesperrt.", "OTHER" : "Du wurdest von der Serverleitung gesperrt.", } self.loginFailureFuncDict = { "WRONGPWD" : self.__DisconnectAndInputPassword, "WRONGMAT" : self.__DisconnectAndInputMatrix, "QUIT" : app.Exit, } self.SetSize(wndMgr.GetScreenWidth(), wndMgr.GetScreenHeight()) self.SetWindowName("LoginWindow") if not self.__LoadScript(uiScriptLocale.LOCALE_UISCRIPT_PATH + "LoginWindow.py"): dbg.TraceError("LoginWindow.Open - __LoadScript Error") return self.__LoadLoginInfo("loginInfo.py") if app.loggined: self.loginFailureFuncDict = { "WRONGPWD" : app.Exit, "WRONGMAT" : app.Exit, "QUIT" : app.Exit, } if musicInfo.loginMusic != "": snd.SetMusicVolume(systemSetting.GetMusicVolume()) snd.FadeInMusic("BGM/"+musicInfo.loginMusic) snd.SetSoundVolume(systemSetting.GetSoundVolume()) # pevent key "[" "]" ime.AddExceptKey(91) ime.AddExceptKey(93) self.Show() global SKIP_LOGIN_PHASE if SKIP_LOGIN_PHASE: if self.isStartError: self.connectBoard.Hide() self.loginBoard.Hide() self.serverBoard.Hide() self.PopupNotifyMessage(locale.LOGIN_CONNECT_FAILURE, self.__ExitGame) return if self.loginInfo: self.serverBoard.Hide() else: self.__RefreshServerList() self.__OpenServerBoard() else: connectingIP = self.stream.GetConnectAddr() if connectingIP: self.__OpenLoginBoard() if IsFullBackImage(): self.GetChild("demonking").Show() else: self.__RefreshServerList() self.__OpenServerBoard() app.ShowCursor() def Close(self): if self.connectingDialog: self.connectingDialog.Close() self.connectingDialog = None ServerStateChecker.Destroy(self) print "---------------------------------------------------------------------------- CLOSE LOGIN WINDOW " # # selectMusicÀÌ ¾øÀ¸¸é BGMÀÌ ²÷±â¹Ç·Î µÎ°³ ´Ù üũÇÑ´Ù. # if musicInfo.loginMusic != "" and musicInfo.selectMusic != "": snd.FadeOutMusic("BGM/"+musicInfo.loginMusic) ## NOTE : idEditLine¿Í pwdEditLineÀº À̺¥Æ®°¡ ¼·Î ¿¬°á µÇ¾îÀÖ¾î¼ ## Event¸¦ °Á¦·Î ÃʱâÈ ÇØÁÖ¾î¾ß¸¸ ÇÕ´Ï´Ù - [levites] self.idEditLine.SetTabEvent(0) self.idEditLine.SetReturnEvent(0) self.pwdEditLine.SetReturnEvent(0) self.pwdEditLine.SetTabEvent(0) self.connectBoard = None self.loginBoard = None self.idEditLine = None self.pwdEditLine = None self.inputDialog = None self.connectingDialog = None self.loadingImage = None self.serverBoard = None self.serverList = None self.channelList = None # RUNUP_MATRIX_AUTH self.matrixQuizBoard = None self.matrixAnswerInput = None self.matrixAnswerOK = None self.matrixAnswerCancel = None # RUNUP_MATRIX_AUTH_END # NEWCIBN_PASSPOD_AUTH self.passpodBoard = None self.passpodAnswerInput = None self.passpodAnswerOK = None self.passpodAnswerCancel = None # NEWCIBN_PASSPOD_AUTH_END self.VIRTUAL_KEY_ALPHABET_LOWERS = None self.VIRTUAL_KEY_ALPHABET_UPPERS = None self.VIRTUAL_KEY_SYMBOLS = None self.VIRTUAL_KEY_NUMBERS = None # VIRTUAL_KEYBOARD_BUG_FIX if self.virtualKeyboard: for keyIndex in xrange(0, VIRTUAL_KEYBOARD_NUM_KEYS+1): key = self.GetChild2("key_%d" % keyIndex) if key: key.SetEvent(None) self.virtualKeyboard = None self.KillFocus() self.Hide() self.stream.popupWindow.Close() self.loginFailureFuncDict=None ime.ClearExceptKey() app.HideCursor() def __SaveChannelInfo(self): try: file=open("channel.inf", "w") file.write("%d %d %d" % (self.__GetServerID(), self.__GetChannelID(), self.__GetRegionID())) except: print "LoginWindow.__SaveChannelInfo - SaveError" def __LoadChannelInfo(self): try: file=open("channel.inf") lines=file.readlines() if len(lines)>0: tokens=lines[0].split() selServerID=int(tokens[0]) selChannelID=int(tokens[1]) if len(tokens) == 3: regionID = int(tokens[2]) return regionID, selServerID, selChannelID except: print "LoginWindow.__LoadChannelInfo - OpenError" return -1, -1, -1 def __ExitGame(self): app.Exit() def SetIDEditLineFocus(self): if self.idEditLine != None: self.idEditLine.SetFocus() def SetPasswordEditLineFocus(self): if locale.IsEUROPE(): if self.idEditLine != None: #0000862: [M2EU] ·Î±×ÀÎâ Æ˾÷ ¿¡·¯: Á¾·á½Ã ¸ÕÀú None ¼³Á¤µÊ self.idEditLine.SetText("") self.idEditLine.SetFocus() #0000685: [M2EU] ¾ÆÀ̵ð/ºñ¹Ð¹øÈ£ À¯Ãß °¡´É ¹ö±× ¼öÁ¤: ¹«Á¶°Ç ¾ÆÀ̵ð·Î Æ÷Ä¿½º°¡ °¡°Ô ¸¸µç´Ù if self.pwdEditLine != None: #0000862: [M2EU] ·Î±×ÀÎâ Æ˾÷ ¿¡·¯: Á¾·á½Ã ¸ÕÀú None ¼³Á¤µÊ self.pwdEditLine.SetText("") else: if self.pwdEditLine != None: self.pwdEditLine.SetFocus() def OnEndCountDown(self): self.isNowCountDown = FALSE self.OnConnectFailure() def OnConnectFailure(self): if self.isNowCountDown: return snd.PlaySound("sound/ui/loginfail.wav") if self.connectingDialog: self.connectingDialog.Close() self.connectingDialog = None if app.loggined: self.PopupNotifyMessage(locale.LOGIN_CONNECT_FAILURE, self.__ExitGame) else: self.PopupNotifyMessage(locale.LOGIN_CONNECT_FAILURE, self.SetPasswordEditLineFocus) def OnHandShake(self): if not IsLoginDelay(): snd.PlaySound("sound/ui/loginok.wav") self.PopupDisplayMessage(locale.LOGIN_CONNECT_SUCCESS) def OnLoginStart(self): if not IsLoginDelay(): self.PopupDisplayMessage(locale.LOGIN_PROCESSING) def OnLoginFailure(self, error): if self.connectingDialog: self.connectingDialog.Close() self.connectingDialog = None try: loginFailureMsg = self.loginFailureMsgDict[error] except KeyError: if PASSPOD_MSG_DICT: try: loginFailureMsg = PASSPOD_MSG_DICT[error] except KeyError: loginFailureMsg = locale.LOGIN_FAILURE_UNKNOWN + error else: loginFailureMsg = locale.LOGIN_FAILURE_UNKNOWN + error #0000685: [M2EU] ¾ÆÀ̵ð/ºñ¹Ð¹øÈ£ À¯Ãß °¡´É ¹ö±× ¼öÁ¤: ¹«Á¶°Ç Æнº¿öµå·Î Æ÷Ä¿½º°¡ °¡°Ô ¸¸µç´Ù loginFailureFunc=self.loginFailureFuncDict.get(error, self.SetPasswordEditLineFocus) if app.loggined: self.PopupNotifyMessage(loginFailureMsg, self.__ExitGame) else: self.PopupNotifyMessage(loginFailureMsg, loginFailureFunc) snd.PlaySound("sound/ui/loginfail.wav") def __DisconnectAndInputID(self): if self.connectingDialog: self.connectingDialog.Close() self.connectingDialog = None self.SetIDEditLineFocus() net.Disconnect() def __DisconnectAndInputPassword(self): if self.connectingDialog: self.connectingDialog.Close() self.connectingDialog = None self.SetPasswordEditLineFocus() net.Disconnect() def __DisconnectAndInputMatrix(self): if self.connectingDialog: self.connectingDialog.Close() self.connectingDialog = None self.stream.popupWindow.Close() self.matrixInputChanceCount -= 1 if self.matrixInputChanceCount <= 0: self.__OnCloseInputDialog() elif self.inputDialog: self.inputDialog.Show() def __LoadScript(self, fileName): try: pyScrLoader = ui.PythonScriptLoader() pyScrLoader.LoadScriptFile(self, fileName) except: import exception exception.Abort("LoginWindow.__LoadScript.LoadObject") try: GetObject=self.GetChild self.serverBoard = GetObject("ServerBoard") self.serverList = GetObject("ServerList") self.channelList = GetObject("ChannelList") self.connectBoard = GetObject("ConnectBoard") self.loginBoard = GetObject("LoginBoard") self.idEditLine = GetObject("ID_EditLine") self.pwdEditLine = GetObject("Password_EditLine") self.ch1_offline_demon = GetObject("Channel1_offline_demon") self.ch2_offline_demon = GetObject("Channel2_offline_demon") self.ch3_offline_demon = GetObject("Channel3_offline_demon") self.ch4_offline_demon = GetObject("Channel4_offline_demon") self.ch1_online_demon = GetObject("Channel1_online_demon") self.ch2_online_demon = GetObject("Channel2_online_demon") self.ch3_online_demon = GetObject("Channel3_online_demon") self.ch4_online_demon = GetObject("Channel4_online_demon") self.ch1_online_markiert_demon = GetObject("Channel1_online_markiert_demon") self.ch2_online_markiert_demon = GetObject("Channel2_online_markiert_demon") self.ch3_online_markiert_demon = GetObject("Channel3_online_markiert_demon") self.ch4_online_markiert_demon = GetObject("Channel4_online_markiert_demon") self.ch1_offline_markiert_demon = GetObject("Channel1_offline_markiert_demon") self.ch2_offline_markiert_demon = GetObject("Channel2_offline_markiert_demon") self.ch3_offline_markiert_demon = GetObject("Channel3_offline_markiert_demon") self.ch4_offline_markiert_demon = GetObject("Channel4_offline_markiert_demon") self.loginButton = GetObject("LoginButton") self.forum = GetObject("forum") self.youtube = GetObject("youtube") self.facebook = GetObject("facebook") self.oben_links = GetObject("oben_links") self.idEditLine.SetFontColor(71, 96, 144) self.pwdEditLine.SetFontColor(71, 96, 144) ## ACCMANAGER self.endles = GetObject("endles") # RUNUP_MATRIX_AUTH if IsRunupMatrixAuth(): self.matrixQuizBoard = GetObject("RunupMatrixQuizBoard") self.matrixAnswerInput = GetObject("RunupMatrixAnswerInput") self.matrixAnswerOK = GetObject("RunupMatrixAnswerOK") self.matrixAnswerCancel = GetObject("RunupMatrixAnswerCancel") # RUNUP_MATRIX_AUTH_END # NEWCIBN_PASSPOD_AUTH if IsNEWCIBNPassPodAuth(): self.passpodBoard = GetObject("NEWCIBN_PASSPOD_BOARD") self.passpodAnswerInput = GetObject("NEWCIBN_PASSPOD_INPUT") self.passpodAnswerOK = GetObject("NEWCIBN_PASSPOD_OK") self.passpodAnswerCancel= GetObject("NEWCIBN_PASSPOD_CANCEL") # NEWCIBN_PASSPOD_AUTH_END self.virtualKeyboard = self.GetChild2("VirtualKeyboard") if self.virtualKeyboard: self.VIRTUAL_KEY_ALPHABET_UPPERS = Suffle(locale.VIRTUAL_KEY_ALPHABET_UPPERS) self.VIRTUAL_KEY_ALPHABET_LOWERS = "".join([locale.VIRTUAL_KEY_ALPHABET_LOWERS[locale.VIRTUAL_KEY_ALPHABET_UPPERS.index(e)] for e in self.VIRTUAL_KEY_ALPHABET_UPPERS]) self.VIRTUAL_KEY_SYMBOLS = Suffle(locale.VIRTUAL_KEY_SYMBOLS) self.VIRTUAL_KEY_NUMBERS = Suffle(locale.VIRTUAL_KEY_NUMBERS) self.__VirtualKeyboard_SetAlphabetMode() except: import exception exception.Abort("LoginWindow.__LoadScript.BindObject") self.serverBoard.OnKeyUp = ui.__mem_func__(self.__ServerBoard_OnKeyUp) self.xServerBoard, self.yServerBoard = self.serverBoard.GetLocalPosition() self.loginButton.SetEvent(ui.__mem_func__(self.__OnClickLoginButton)) self.forum.SetEvent(ui.__mem_func__(self.__forum)) self.youtube.SetEvent(ui.__mem_func__(self.__youtube)) self.facebook.SetEvent(ui.__mem_func__(self.__facebook)) ## ACCMANAGER self.endles.SetEvent(self.__OnClickExitButton) ## END ACCMANAGER self.serverList.SetEvent(ui.__mem_func__(self.__OnSelectServer)) self.idEditLine.SetReturnEvent(ui.__mem_func__(self.pwdEditLine.SetFocus)) self.idEditLine.SetTabEvent(ui.__mem_func__(self.pwdEditLine.SetFocus)) self.pwdEditLine.SetReturnEvent(ui.__mem_func__(self.__OnClickLoginButton)) self.pwdEditLine.SetTabEvent(ui.__mem_func__(self.idEditLine.SetFocus)) # RUNUP_MATRIX_AUTH if IsRunupMatrixAuth(): self.matrixAnswerOK.SAFE_SetEvent(self.__OnClickMatrixAnswerOK) self.matrixAnswerCancel.SAFE_SetEvent(self.__OnClickMatrixAnswerCancel) self.matrixAnswerInput.SAFE_SetReturnEvent(self.__OnClickMatrixAnswerOK) # RUNUP_MATRIX_AUTH_END # NEWCIBN_PASSPOD_AUTH if IsNEWCIBNPassPodAuth(): self.passpodAnswerOK.SAFE_SetEvent(self.__OnClickNEWCIBNPasspodAnswerOK) self.passpodAnswerCancel.SAFE_SetEvent(self.__OnClickNEWCIBNPasspodAnswerCancel) self.passpodAnswerInput.SAFE_SetReturnEvent(self.__OnClickNEWCIBNPasspodAnswerOK) # NEWCIBN_PASSPOD_AUTH_END if IsFullBackImage(): self.GetChild("demonking").Show() return 1 def __VirtualKeyboard_SetKeys(self, keyCodes): uiDefFontBackup = locale.UI_DEF_FONT locale.UI_DEF_FONT = locale.UI_DEF_FONT_LARGE keyIndex = 1 for keyCode in keyCodes: key = self.GetChild2("key_%d" % keyIndex) if key: key.SetEvent(lambda x=keyCode: self.__VirtualKeyboard_PressKey(x)) key.SetText(keyCode) key.ButtonText.SetFontColor(1, 1, 1) keyIndex += 1 for keyIndex in xrange(keyIndex, VIRTUAL_KEYBOARD_NUM_KEYS+1): key = self.GetChild2("key_%d" % keyIndex) if key: key.SetEvent(lambda x=' ': self.__VirtualKeyboard_PressKey(x)) key.SetText(' ') locale.UI_DEF_FONT = uiDefFontBackup def __VirtualKeyboard_PressKey(self, code): ime.PasteString(code) #if self.virtualKeyboardMode == "ALPHABET" and self.virtualKeyboardIsUpper: # self.__VirtualKeyboard_SetLowerMode() def __VirtualKeyboard_PressBackspace(self): ime.PasteBackspace() def __VirtualKeyboard_PressReturn(self): ime.PasteReturn() def __VirtualKeyboard_SetUpperMode(self): self.virtualKeyboardIsUpper = TRUE if self.virtualKeyboardMode == "ALPHABET": self.__VirtualKeyboard_SetKeys(self.VIRTUAL_KEY_ALPHABET_UPPERS) elif self.virtualKeyboardMode == "NUMBER": self.__VirtualKeyboard_SetKeys(self.VIRTUAL_KEY_SYMBOLS) else: self.__VirtualKeyboard_SetKeys(self.VIRTUAL_KEY_NUMBERS) def __VirtualKeyboard_SetLowerMode(self): self.virtualKeyboardIsUpper = FALSE if self.virtualKeyboardMode == "ALPHABET": self.__VirtualKeyboard_SetKeys(self.VIRTUAL_KEY_ALPHABET_LOWERS) elif self.virtualKeyboardMode == "NUMBER": self.__VirtualKeyboard_SetKeys(self.VIRTUAL_KEY_NUMBERS) else: self.__VirtualKeyboard_SetKeys(self.VIRTUAL_KEY_SYMBOLS) def __VirtualKeyboard_SetAlphabetMode(self): self.virtualKeyboardIsUpper = FALSE self.virtualKeyboardMode = "ALPHABET" self.__VirtualKeyboard_SetKeys(self.VIRTUAL_KEY_ALPHABET_LOWERS) def __VirtualKeyboard_SetNumberMode(self): self.virtualKeyboardIsUpper = FALSE self.virtualKeyboardMode = "NUMBER" self.__VirtualKeyboard_SetKeys(self.VIRTUAL_KEY_NUMBERS) def __VirtualKeyboard_SetSymbolMode(self): self.virtualKeyboardIsUpper = FALSE self.virtualKeyboardMode = "SYMBOL" self.__VirtualKeyboard_SetKeys(self.VIRTUAL_KEY_SYMBOLS) def Connect(self, id, pwd): if constInfo.SEQUENCE_PACKET_ENABLE: net.SetPacketSequenceMode() if IsLoginDelay(): loginDelay = GetLoginDelay() self.connectingDialog = ConnectingDialog() self.connectingDialog.Open(loginDelay) self.connectingDialog.SAFE_SetTimeOverEvent(self.OnEndCountDown) self.connectingDialog.SAFE_SetExitEvent(self.OnPressExitKey) self.isNowCountDown = TRUE else: self.stream.popupWindow.Close() self.stream.popupWindow.Open(locale.LOGIN_CONNETING, self.SetPasswordEditLineFocus, locale.UI_CANCEL) self.stream.SetLoginInfo(id, pwd) self.stream.Connect() def __OnClickExitButton(self): self.stream.SetPhaseWindow(0) def __SetServerInfo(self, name): net.SetServerInfo(name.strip()) self.serverInfo.SetText(name) def __LoadLoginInfo(self, loginInfoFileName): try: loginInfo={} execfile(loginInfoFileName, loginInfo) except IOError: print( "ÀÚµ¿ ·Î±×ÀÎÀ» ÇϽ÷Á¸é" + loginInfoFileName + "ÆÄÀÏÀ» ÀÛ¼ºÇØÁÖ¼¼¿än" "n" "³»¿ë:n" "================================================================n" "addr=ÁÖ¼Òn" "port=Æ÷Æ®n" "id=¾ÆÀ̵ðn" "pwd=ºñ¹Ð¹øÈ£n" "slot=ij¸¯ÅÍ ¼±Åà À妽º (¾ø°Å³ª -1À̸é ÀÚµ¿ ¼±Åà ¾ÈÇÔ)n" "autoLogin=ÀÚµ¿ Á¢¼Ó ¿©ºÎn" "autoSelect=ÀÚµ¿ Á¢¼Ó ¿©ºÎn" "locale=(ymir) LC_Ymir ÀÏ°æ¿ì ymir·Î ÀÛµ¿. ÁöÁ¤ÇÏÁö ¾ÊÀ¸¸é korea·Î ÀÛµ¿n" ); id=loginInfo.get("id", "") pwd=loginInfo.get("pwd", "") if self.IS_TEST: try: addr=loginInfo["addr"] port=loginInfo["port"] account_addr=addr account_port=port net.SetMarkServer(addr, port) self.__SetServerInfo(locale.CHANNEL_TEST_SERVER_ADDR % (addr, port)) except: try: addr=serverInfo.TESTADDR["ip"] port=serverInfo.TESTADDR["tcp_port"] net.SetMarkServer(addr, port) self.__SetServerInfo(locale.CHANNEL_TEST_SERVER) except: import exception exception.Abort("LoginWindow.__LoadLoginInfo - Å×½ºÆ®¼¹ö ÁÖ¼Ò°¡ ¾ø½À´Ï´Ù") else: addr=loginInfo.get("addr", "") port=loginInfo.get("port", 0) account_addr=loginInfo.get("account_addr", addr) account_port=loginInfo.get("account_port", port) locale = loginInfo.get("locale", "") if addr and port: net.SetMarkServer(addr, port) if locale == "ymir" : net.SetServerInfo("õ¸¶ ¼¹ö") self.serverInfo.SetText("Y:"+addr+":"+str(port)) else: net.SetServerInfo(addr+":"+str(port)) self.serverInfo.SetText("K:"+addr+":"+str(port)) slot=loginInfo.get("slot", 0) isAutoLogin=loginInfo.get("auto", 0) isAutoLogin=loginInfo.get("autoLogin", 0) isAutoSelect=loginInfo.get("autoSelect", 0) self.stream.SetCharacterSlot(slot) self.stream.SetConnectInfo(addr, port, account_addr, account_port) self.stream.isAutoLogin=isAutoLogin self.stream.isAutoSelect=isAutoSelect self.id = None self.pwd = None self.loginnedServer = None self.loginnedChannel = None app.loggined = FALSE self.loginInfo = loginInfo if self.id and self.pwd: app.loggined = TRUE if isAutoLogin: self.Connect(id, pwd) print "==================================================================================" print "ÀÚµ¿ ·Î±×ÀÎ: %s - %s:%d %s" % (loginInfoFileName, addr, port, id) print "==================================================================================" def PopupDisplayMessage(self, msg): self.stream.popupWindow.Close() self.stream.popupWindow.Open(msg) def PopupNotifyMessage(self, msg, func=0): if not func: func=self.EmptyFunc self.stream.popupWindow.Close() self.stream.popupWindow.Open(msg, func, locale.UI_OK) # RUNUP_MATRIX_AUTH def BINARY_OnRunupMatrixQuiz(self, quiz): if not IsRunupMatrixAuth(): return id = self.GetChild("RunupMatrixID") id.SetText(self.idEditLine.GetText()) code = self.GetChild("RunupMatrixCode") code.SetText("".join(["[%c,%c]" % (quiz[i], quiz[i+1]) for i in xrange(0, len(quiz), 2)])) self.stream.popupWindow.Close() self.serverBoard.Hide() self.connectBoard.Hide() self.loginBoard.Hide() self.matrixQuizBoard.Show() self.matrixAnswerInput.SetFocus() def __OnClickMatrixAnswerOK(self): answer = self.matrixAnswerInput.GetText() print "matrix_quiz.ok" net.SendRunupMatrixCardPacket(answer) self.matrixQuizBoard.Hide() self.stream.popupWindow.Close() self.stream.popupWindow.Open("WAITING FOR MATRIX AUTHENTICATION", self.__OnClickMatrixAnswerCancel, locale.UI_CANCEL) def __OnClickMatrixAnswerCancel(self): print "matrix_quiz.cancel" if self.matrixQuizBoard: self.matrixQuizBoard.Hide() if self.connectBoard: self.connectBoard.Show() if self.loginBoard: self.loginBoard.Show() # RUNUP_MATRIX_AUTH_END # NEWCIBN_PASSPOD_AUTH def BINARY_OnNEWCIBNPasspodRequest(self): if not IsNEWCIBNPassPodAuth(): return if self.connectingDialog: self.connectingDialog.Close() self.connectingDialog = None self.stream.popupWindow.Close() self.serverBoard.Hide() self.connectBoard.Hide() self.loginBoard.Hide() self.passpodBoard.Show() self.passpodAnswerInput.SetFocus() def BINARY_OnNEWCIBNPasspodFailure(self): if not IsNEWCIBNPassPodAuth(): return def __OnClickNEWCIBNPasspodAnswerOK(self): answer = self.passpodAnswerInput.GetText() print "passpod.ok" net.SendNEWCIBNPasspodAnswerPacket(answer) self.passpodAnswerInput.SetText("") self.passpodBoard.Hide() self.stream.popupWindow.Close() self.stream.popupWindow.Open(locale.WAIT_FOR_PASSPOD, self.__OnClickNEWCIBNPasspodAnswerCancel, locale.UI_CANCEL) def __OnClickNEWCIBNPasspodAnswerCancel(self): print "passpod.cancel" if self.passpodBoard: self.passpodBoard.Hide() if self.connectBoard: self.connectBoard.Show() if self.loginBoard: self.loginBoard.Show() # NEWCIBN_PASSPOD_AUTH_END def OnMatrixCard(self, row1, row2, row3, row4, col1, col2, col3, col4): if self.connectingDialog: self.connectingDialog.Close() self.connectingDialog = None self.matrixInputChanceCount = 3 self.stream.popupWindow.Close() # CHINA_MATRIX_CARD_BUG_FIX ## A~Z ±îÁö 26 À̳»ÀÇ °ªÀÌ µé¾îÀÖ¾î¾ß¸¸ ÇÑ´Ù. ## Python Exception Log ¿¡¼ ±× ÀÌ»óÀÇ °ªÀÌ µé¾îÀÖ¾î¼ ¿¡·¯ ¹æÁö ## Çåµ¥ ¿Ö Çѱ¹ÂÊ ·Î±×¿¡¼ ÀÌ°Ô È°¿ëµÇ´ÂÁö´Â ¸ð¸£°ÚÀ½ row1 = min(30, row1) row2 = min(30, row2) row3 = min(30, row3) row4 = min(30, row4) # END_OF_CHINA_MATRIX_CARD_BUG_FIX row1 = chr(row1 + ord('A')) row2 = chr(row2 + ord('A')) row3 = chr(row3 + ord('A')) row4 = chr(row4 + ord('A')) col1 = col1 + 1 col2 = col2 + 1 col3 = col3 + 1 col4 = col4 + 1 inputDialog = uiCommon.InputDialogWithDescription2() inputDialog.SetMaxLength(8) inputDialog.SetAcceptEvent(ui.__mem_func__(self.__OnAcceptMatrixCardData)) inputDialog.SetCancelEvent(ui.__mem_func__(self.__OnCancelMatrixCardData)) inputDialog.SetTitle(locale.INPUT_MATRIX_CARD_TITLE) inputDialog.SetDescription1(locale.INPUT_MATRIX_CARD_NUMBER) inputDialog.SetDescription2("%c%d %c%d %c%d %c%d" % (row1, col1, row2, col2, row3, col3, row4, col4)) inputDialog.Open() self.inputDialog = inputDialog def __OnAcceptMatrixCardData(self): text = self.inputDialog.GetText() net.SendChinaMatrixCardPacket(text) if self.inputDialog: self.inputDialog.Hide() self.PopupNotifyMessage(locale.LOGIN_PROCESSING) return TRUE def __OnCancelMatrixCardData(self): self.SetPasswordEditLineFocus() self.__OnCloseInputDialog() self.__DisconnectAndInputPassword() return TRUE def __OnCloseInputDialog(self): if self.inputDialog: self.inputDialog.Close() self.inputDialog = None return TRUE def OnPressExitKey(self): self.stream.popupWindow.Close() self.stream.SetPhaseWindow(0) return TRUE def OnExit(self): self.stream.popupWindow.Close() self.stream.popupWindow.Open(locale.LOGIN_FAILURE_WRONG_MATRIX_CARD_NUMBER_TRIPLE, app.Exit, locale.UI_OK) def OnUpdate(self): ServerStateChecker.Update() def EmptyFunc(self): pass ##################################################################################### def __ServerBoard_OnKeyUp(self, key): if self.serverBoard.IsShow(): if app.DIK_RETURN==key: self.__OnClickSelectServerButton() return TRUE def __GetRegionID(self): return 0 def __GetServerID(self): return self.serverList.GetSelectedItem() def __GetChannelID(self): return self.channelList.GetSelectedItem() # SEVER_LIST_BUG_FIX def __ServerIDToServerIndex(self, regionID, targetServerID): try: regionDict = serverInfo.REGION_DICT[regionID] except KeyError: return -1 retServerIndex = 0 for eachServerID, regionDataDict in regionDict.items(): if eachServerID == targetServerID: return retServerIndex retServerIndex += 1 return -1 def __ChannelIDToChannelIndex(self, channelID): return channelID - 1 # END_OF_SEVER_LIST_BUG_FIX def __OpenServerBoard(self): self.ch1_offline_markiert_demon.Hide() self.ch2_offline_markiert_demon.Hide() self.ch3_offline_markiert_demon.Hide() self.ch4_offline_markiert_demon.Hide() self.ch1_online_markiert_demon.Hide() self.ch2_online_markiert_demon.Hide() self.ch3_online_markiert_demon.Hide() self.ch4_online_markiert_demon.Hide() self.ch3_online_demon.Hide() #Auskommentieren wenn ihr CH3+4 habt self.ch4_online_demon.Hide() #Auskommentieren wenn ihr CH3+4 habt global DEINEIP global CH1PORT global AUTHPORT global CH2PORT global SERVERNAME global CH3PORT global CH4PORT global CH1STATE global CH2STATE global CH3STATE global CH4STATE global LOGINDATENSPEICHERN if LOGINDATENSPEICHERN==1: login = linecache.getline("pack/loginsetting", 1) password = linecache.getline("pack/loginsetting", 2) self.idEditLine.SetText(login) self.pwdEditLine.SetText(password) id = self.idEditLine.GetText() id = id.replace('n', '') self.idEditLine.SetText(id) self.ch1_offline_demon.SetEvent(ui.__mem_func__(self.__OnClickch1_demon)) self.ch2_offline_demon.SetEvent(ui.__mem_func__(self.__OnClickch2_demon)) self.ch3_offline_demon.SetEvent(ui.__mem_func__(self.__OnClickch3_demon)) self.ch4_offline_demon.SetEvent(ui.__mem_func__(self.__OnClickch4_demon)) self.ch1_online_demon.SetEvent(ui.__mem_func__(self.__OnClickch1_demon)) self.ch2_online_demon.SetEvent(ui.__mem_func__(self.__OnClickch2_demon)) self.ch3_online_demon.SetEvent(ui.__mem_func__(self.__OnClickch3_demon)) self.ch4_online_demon.SetEvent(ui.__mem_func__(self.__OnClickch4_demon)) self.ch1_online_markiert_demon.SetEvent(ui.__mem_func__(self.__OnClickch1_demon)) self.ch2_online_markiert_demon.SetEvent(ui.__mem_func__(self.__OnClickch2_demon)) self.ch3_online_markiert_demon.SetEvent(ui.__mem_func__(self.__OnClickch3_demon)) self.ch4_online_markiert_demon.SetEvent(ui.__mem_func__(self.__OnClickch4_demon)) self.ch1_offline_markiert_demon.SetEvent(ui.__mem_func__(self.__OnClickch1_demon)) self.ch2_offline_markiert_demon.SetEvent(ui.__mem_func__(self.__OnClickch2_demon)) self.ch3_offline_markiert_demon.SetEvent(ui.__mem_func__(self.__OnClickch3_demon)) self.ch4_offline_markiert_demon.SetEvent(ui.__mem_func__(self.__OnClickch4_demon)) print "XMAS_SNOW ON" background.EnableSnow(1) # RUNUP_MATRIX_AUTH if IsRunupMatrixAuth(): self.matrixQuizBoard.Hide() # RUNUP_MATRIX_AUTH_END # NEWCIBN_PASSPOD_AUTH if IsNEWCIBNPassPodAuth(): self.passpodBoard.Hide() # NEWCIBN_PASSPOD_AUTH_END self.serverBoard.SetPosition(self.xServerBoard, wndMgr.GetScreenHeight()) self.serverBoard.Hide() if self.virtualKeyboard: self.virtualKeyboard.Show() self.__LoadACCNames() if app.loggined: self.Connect(self.id, self.pwd) self.connectBoard.Hide() self.loginBoard.Hide() elif not self.stream.isAutoLogin: self.connectBoard.Show() self.loginBoard.Show() ## if users have the login infomation, then don't initialize.2005.9 haho if self.idEditLine == None: self.idEditLine.SetText("") if self.pwdEditLine == None: self.pwdEditLine.SetText("") self.idEditLine.SetFocus() ##Statecheck import socket, os ip = DEINEIP s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) s2 = socket.socket(socket.AF_INET, socket.SOCK_STREAM) #s3 = socket.socket(socket.AF_INET, socket.SOCK_STREAM) #Einkommentieren wenn CH 3 + 4 #s4 = socket.socket(socket.AF_INET, socket.SOCK_STREAM) #Einkommentieren wenn CH 3 + 4 #Channel1 try: s.connect((ip,CH1PORT)) s.close() self.ch1_offline_demon.Hide() self.ch1_online_demon.Show() CH1STATE = 1 except: self.ch1_online_demon.Hide() CH1STATE = 0 s.close() #Channel2 try: s2.connect((ip,CH2PORT)) s2.close() CH2STATE = 1 self.ch2_offline_demon.Hide() self.ch2_online_demon.Show() except: self.ch2_online_demon.Hide() CH2STATE = 0 s2.close() ####Channel3 Einkommentieren wenn CH 3 + 4 #try: # s3.connect((ip,CH3PORT)) # s3.close() # CH3STATE = 1 # self.ch3_offline_demon.Hide() # self.ch3_online_demon.Show() #except: # self.ch3_online_demon.Hide() # CH3STATE = 0 # ###Channel4 #try: # s4.connect((ip,CH4PORT)) # s4.close() # CH4STATE = 1 # self.ch4_offline_demon.Hide() # self.ch4_online_demon.Show() #except: # self.ch4_online_demon.Hide() # CH4STATE = 0 self.stream.SetConnectInfo(DEINEIP, CH1PORT, DEINEIP, AUTHPORT) net.SetServerInfo(SERVERNAME + " - Ch 1") net.SetMarkServer(DEINEIP, CH1PORT) app.SetGuildMarkPath("10.tga") app.SetGuildSymbolPath("10") if CH1STATE: self.ch1_online_demon.Hide() self.ch1_online_markiert_demon.Show() else: self.ch1_offline_demon.Hide() self.ch1_offline_markiert_demon.Show() if CH2STATE: self.ch2_online_demon.Show() self.ch2_online_markiert_demon.Hide() else: self.ch2_offline_demon.Show() self.ch2_offline_markiert_demon.Hide() if CH3STATE: self.ch3_online_demon.Show() self.ch3_online_markiert_demon.Hide() else: self.ch3_offline_demon.Show() self.ch3_offline_markiert_demon.Hide() if CH4STATE: self.ch4_online_demon.Show() self.ch4_online_markiert_demon.Hide() else: self.ch4_offline_demon.Show() self.ch4_offline_markiert_demon.Hide() global SKIP_LOGIN_PHASE if SKIP_LOGIN_PHASE: if not self.loginInfo: self.connectBoard.Hide() def __OpenLoginBoard(self): print "XMAS_SNOW ON" background.EnableSnow(1) # RUNUP_MATRIX_AUTH if IsRunupMatrixAuth(): self.matrixQuizBoard.Hide() # RUNUP_MATRIX_AUTH_END # NEWCIBN_PASSPOD_AUTH if IsNEWCIBNPassPodAuth(): self.passpodBoard.Hide() # NEWCIBN_PASSPOD_AUTH_END self.serverBoard.SetPosition(self.xServerBoard, wndMgr.GetScreenHeight()) self.serverBoard.Hide() if self.virtualKeyboard: self.virtualKeyboard.Show() self.__LoadACCNames() if app.loggined: self.Connect(self.id, self.pwd) self.connectBoard.Hide() self.loginBoard.Hide() elif not self.stream.isAutoLogin: self.connectBoard.Show() self.loginBoard.Show() ## if users have the login infomation, then don't initialize.2005.9 haho if self.idEditLine == None: self.idEditLine.SetText("") if self.pwdEditLine == None: self.pwdEditLine.SetText("") self.idEditLine.SetFocus() global SKIP_LOGIN_PHASE if SKIP_LOGIN_PHASE: if not self.loginInfo: self.connectBoard.Hide() def __OnSelectRegionGroup(self): self.__RefreshServerList() def __OnSelectSettlementArea(self): # SEVER_LIST_BUG_FIX regionID = self.__GetRegionID() serverID = self.serverListOnRegionBoard.GetSelectedItem() serverIndex = self.__ServerIDToServerIndex(regionID, serverID) self.serverList.SelectItem(serverIndex) # END_OF_SEVER_LIST_BUG_FIX self.__OnSelectServer() def __RefreshServerList(self): regionID = self.__GetRegionID() if not serverInfo.REGION_DICT.has_key(regionID): return self.serverList.ClearItem() regionDict = serverInfo.REGION_DICT[regionID] # SEVER_LIST_BUG_FIX visible_index = 1 for id, regionDataDict in regionDict.items(): name = regionDataDict.get("name", "noname") if locale.IsBRAZIL() or locale.IsCANADA(): self.serverList.InsertItem(id, "%s" % (name)) else: if locale.IsCIBN10(): if name[0] == "#": self.serverList.InsertItem(-1, " %s" % (name[1:])) else: self.serverList.InsertItem(id, " %s" % (name)) visible_index += 1 else: self.serverList.InsertItem(id, " %02d. %s" % (visible_index, name)) visible_index += 1 # END_OF_SEVER_LIST_BUG_FIX def __OnSelectServer(self): self.__OnCloseInputDialog() self.__RequestServerStateList() self.__RefreshServerStateList() def __RequestServerStateList(self): regionID = self.__GetRegionID() serverID = self.__GetServerID() try: channelDict = serverInfo.REGION_DICT[regionID][serverID]["channel"] except: print " __RequestServerStateList - serverInfo.REGION_DICT(%d, %d)" % (regionID, serverID) return for id, channelDataDict in channelDict.items(): key=channelDataDict["key"] ip=channelDataDict["ip"] udp_port=channelDataDict["udp_port"] ServerStateChecker.Request(key, ip, udp_port) def __RefreshServerStateList(self): regionID = self.__GetRegionID() serverID = self.__GetServerID() bakChannelID = self.channelList.GetSelectedItem() self.channelList.ClearItem() try: channelDict = serverInfo.REGION_DICT[regionID][serverID]["channel"] except: print " __RequestServerStateList - serverInfo.REGION_DICT(%d, %d)" % (regionID, serverID) return for channelID, channelDataDict in channelDict.items(): channelName = channelDataDict["name"] channelState = channelDataDict["state"] self.channelList.InsertItem(channelID, " %s %s" % (channelName, channelState)) self.channelList.SelectItem(bakChannelID-1) def __GetChannelName(self, regionID, selServerID, selChannelID): try: return serverInfo.REGION_DICT[regionID][selServerID]["channel"][selChannelID]["name"] except KeyError: if 9==selChannelID: return locale.CHANNEL_PVP else: return locale.CHANNEL_NORMAL % (selChannelID) def NotifyChannelState(self, addrKey, state): try: stateName=serverInfo.STATE_DICT[state] except: stateName=serverInfo.STATE_NONE regionID=int(addrKey/1000) serverID=int(addrKey/10) % 100 channelID=addrKey%10 try: serverInfo.REGION_DICT[regionID][serverID]["channel"][channelID]["state"] = stateName self.__RefreshServerStateList() except: import exception exception.Abort(locale.CHANNEL_NOT_FIND_INFO) def __OnClickExitServerButton(self): print "exit server" self.__OpenLoginBoard() if IsFullBackImage(): self.GetChild("demonking").Show() def __OnClickSelectRegionButton(self): regionID = self.__GetRegionID() serverID = self.__GetServerID() if (not serverInfo.REGION_DICT.has_key(regionID)): self.PopupNotifyMessage(locale.CHANNEL_SELECT_REGION) return if (not serverInfo.REGION_DICT[regionID].has_key(serverID)): self.PopupNotifyMessage(locale.CHANNEL_SELECT_SERVER) return self.__SaveChannelInfo() self.__RefreshServerList() self.__OpenServerBoard() def __OnClickch1_demon(self): global DEINEIP global CH1PORT global AUTHPORT global SERVERNAME self.stream.SetConnectInfo(DEINEIP, CH1PORT, DEINEIP, AUTHPORT) net.SetServerInfo(SERVERNAME + " - Ch 1") net.SetMarkServer(DEINEIP, CH1PORT) app.SetGuildMarkPath("10.tga") app.SetGuildSymbolPath("10") if CH1STATE: self.ch1_online_demon.Hide() self.ch1_online_markiert_demon.Show() else: self.ch1_offline_demon.Hide() self.ch1_offline_markiert_demon.Show() if CH2STATE: self.ch2_online_demon.Show() self.ch2_online_markiert_demon.Hide() else: self.ch2_offline_demon.Show() self.ch2_offline_markiert_demon.Hide() if CH3STATE: self.ch3_online_demon.Show() self.ch3_online_markiert_demon.Hide() else: self.ch3_offline_demon.Show() self.ch3_offline_markiert_demon.Hide() if CH4STATE: self.ch4_online_demon.Show() self.ch4_online_markiert_demon.Hide() else: self.ch4_offline_demon.Show() self.ch4_offline_markiert_demon.Hide() def __OnClickch2_demon(self): global DEINEIP global CH2PORT global AUTHPORT global SERVERNAME self.stream.SetConnectInfo(DEINEIP, CH2PORT, DEINEIP, AUTHPORT) net.SetServerInfo(SERVERNAME + " - Ch 2") net.SetMarkServer(DEINEIP, CH2PORT) app.SetGuildMarkPath("10.tga") app.SetGuildSymbolPath("10") if CH2STATE: self.ch2_online_demon.Hide() self.ch2_online_markiert_demon.Show() else: self.ch2_offline_demon.Hide() self.ch2_offline_markiert_demon.Show() if CH1STATE: self.ch1_online_demon.Show() self.ch1_online_markiert_demon.Hide() else: self.ch1_offline_demon.Show() self.ch1_offline_markiert_demon.Hide() if CH3STATE: self.ch3_online_demon.Show() self.ch3_online_markiert_demon.Hide() else: self.ch3_offline_demon.Show() self.ch3_offline_markiert_demon.Hide() if CH4STATE: self.ch4_online_demon.Show() self.ch4_online_markiert_demon.Hide() else: self.ch4_offline_demon.Show() self.ch4_offline_markiert_demon.Hide() def __OnClickch3_demon(self): global DEINEIP global CH3PORT global AUTHPORT global SERVERNAME self.stream.SetConnectInfo(DEINEIP, CH3PORT, DEINEIP, AUTHPORT) net.SetServerInfo(SERVERNAME + " - Ch 3") net.SetMarkServer(DEINEIP, CH3PORT) app.SetGuildMarkPath("10.tga") app.SetGuildSymbolPath("10") if CH3STATE: self.ch3_online_demon.Hide() self.ch3_online_markiert_demon.Show() else: self.ch3_offline_demon.Hide() self.ch3_offline_markiert_demon.Show() if CH2STATE: self.ch2_online_demon.Show() self.ch2_online_markiert_demon.Hide() else: self.ch2_offline_demon.Show() self.ch2_offline_markiert_demon.Hide() if CH1STATE: self.ch1_online_demon.Show() self.ch1_online_markiert_demon.Hide() else: self.ch1_offline_demon.Show() self.ch1_offline_markiert_demon.Hide() if CH4STATE: self.ch4_online_demon.Show() self.ch4_online_markiert_demon.Hide() else: self.ch4_offline_demon.Show() self.ch4_offline_markiert_demon.Hide() def __OnClickch4_demon(self): global DEINEIP global CH4PORT global AUTHPORT global SERVERNAME self.stream.SetConnectInfo(DEINEIP, CH4PORT, DEINEIP, AUTHPORT) net.SetServerInfo(SERVERNAME + " - Ch 4") net.SetMarkServer(DEINEIP, CH4PORT) app.SetGuildMarkPath("10.tga") app.SetGuildSymbolPath("10") if CH4STATE: self.ch4_online_demon.Hide() self.ch4_online_markiert_demon.Show() else: self.ch4_offline_demon.Hide() self.ch4_offline_markiert_demon.Show() if CH2STATE: self.ch2_online_demon.Show() self.ch2_online_markiert_demon.Hide() else: self.ch2_offline_demon.Show() self.ch2_offline_markiert_demon.Hide() if CH3STATE: self.ch3_online_demon.Show() self.ch3_online_markiert_demon.Hide() else: self.ch3_offline_demon.Show() self.ch3_offline_markiert_demon.Hide() if CH1STATE: self.ch1_online_demon.Show() self.ch1_online_markiert_demon.Hide() else: self.ch1_offline_demon.Show() self.ch1_offline_markiert_demon.Hide() def __forum(self): global FORUMLINK os.system("start " + FORUMLINK) def __youtube(self): global YOUTUBELINK os.system("start " + YOUTUBELINK) def __facebook(self): global FACEBOOKLINK os.system("start " + FACEBOOKLINK) def __OnClickLoginButton(self): id = self.idEditLine.GetText() pwd = self.pwdEditLine.GetText() if len(id)==0: self.PopupNotifyMessage(locale.LOGIN_INPUT_ID, self.SetIDEditLineFocus) return if len(pwd)==0: self.PopupNotifyMessage(locale.LOGIN_INPUT_PASSWORD, self.SetPasswordEditLineFocus) return if LOGINDATENSPEICHERN==1: id = self.idEditLine.GetText() pwd = self.pwdEditLine.GetText() f = open("packloginsetting", "w") f.write (id + "n" + pwd) f.close() self.Connect(id, pwd) Bien abra que editar un par de cosas para que nos funcione correctamente. Lo primero será editar la "DEINEIP" que será poner nuestra ip. Ejemplo: 255.25.25.25 Lo segundo será editar los "CH1PORT - CH2PORT - CH3PORT - CH4PORT" Para conseguir los CH Port tendremos que ir al FTP y ir a Channel 1 y abrimos el Config y hay pondrá "Port: " y ese será el CH1Port ahora aremos lo mismo con los 4. Bien ahora que tenemos los 4 falta 1 sola cosa. El "AUTHPORT" que estará en cada caso en auth o en mi caso "invoice" y abriremos otra vez Config y pondremos el PORT. Una vez hecho eso compilamos root y sustituimos el antiguo por el nuevo. Ahora descompilamos nuestro locale "locale_de locale_es" lo que tengáis. Bien y tendremos que abrir la carpeta UI. Una vez hay sustituimos el archivo "login.png" por el nuevo que os daré: Bien ahora tendremos que sustituir "loginwindow.py" por el que os daré: import uiScriptLocale LOCALE_PATH = uiScriptLocale.LOGIN_PATHSERVER_BOARD_HEIGHT = 220SERVER_LIST_HEIGHT = 170window = { "name" : "LoginWindow", "sytle" : ("movable",), "x" : 0, "y" : 0, "width" : SCREEN_WIDTH, "height" : SCREEN_HEIGHT, "children" : ( ## Board { "name" : "demonking", "type" : "expanded_image", "x" : 0, "y" : 0, "x_scale" : float(SCREEN_WIDTH) / 1024.0, "y_scale" : float(SCREEN_HEIGHT) / 768.0, #"x_scale" : float(SCREEN_WIDTH) / 1920.0, #"y_scale" : float(SCREEN_HEIGHT) / 1080.0, "image" : "locale/de/ui/login.jpg", "children" : ( { "name" : "unten_rechts", "type" : "image", "x" : SCREEN_WIDTH - 1920, "y" : SCREEN_HEIGHT - 80, "image" : "locale/de/ui/login/unten_rechts.tga", }, { "name" : "unten_links", "type" : "image", "x" : 0, "y" : SCREEN_HEIGHT - 16, "image" : "locale/de/ui/login/unten_links.tga", }, { "name" : "endles", "type" : "button", "x" : (SCREEN_WIDTH - 127) / 1, "y" : 20, "default_image" : "locale/de/ui/login/exit.tga", "over_image" : "locale/de/ui/login/exit_hover.tga", "down_image" : "locale/de/ui/login/exit_hover.tga", "text" : "", }, { "name" : "forum", "type" : "button", "x" : (SCREEN_WIDTH - 136) / 1, "y" : (SCREEN_HEIGHT - 56) / 1, "default_image" : "locale/de/ui/login/forum.tga", "over_image" : "locale/de/ui/login/forum_hover.tga", "down_image" : "locale/de/ui/login/forum_hover.tga", "text" : "", }, { "name" : "youtube", "type" : "button", "x" : (SCREEN_WIDTH - 254) / 1, "y" : (SCREEN_HEIGHT - 56) / 1, "default_image" : "locale/de/ui/login/Youtube.tga", "over_image" : "locale/de/ui/login/Youtube_hover.tga", "down_image" : "locale/de/ui/login/Youtube_hover.tga", "text" : "", }, { "name" : "facebook", "type" : "button", "x" : (SCREEN_WIDTH - 374) / 1, "y" : (SCREEN_HEIGHT - 56) / 1, "default_image" : "locale/de/ui/login/fanpage.tga", "over_image" : "locale/de/ui/login/fanpage_hover.tga", "down_image" : "locale/de/ui/login/fanpage_hover.tga", "text" : "", }, ) }, ## ConnectBoard { "name" : "ConnectBoard", "type" : "thinboard", "x" : 10000, "y" : 10000, "width" : 5, "height" : 5, "children" : ( ), }, ## LoginBoard { "name" : "LoginBoard", "type" : "image", "x" : 30, "y" : 0, "image" : "locale/de/ui/login/loginbox.tga", "children" : ( { "name" : "ID_EditLine", "type" : "editline", "x" : 90, "y" : 86, "width" : 120, "height" : 18, "input_limit" : 16, "enable_codepage" : 0, "r" : 0.0, "g" : 0.0, "b" : 0.0, "a" : 9.0, }, { "name" : "Password_EditLine", "type" : "editline", "x" : 90, "y" : 142, "width" : 120, "height" : 18, "input_limit" : 16, "secret_flag" : 1, "enable_codepage" : 0, "r" : 0.0, "g" : 0.0, "b" : 0.0, "a" : 9.0, }, { "name" : "LoginButton", "type" : "button", "x" : 75, "y" : 190, "default_image" : "locale/de/ui/login/Login.tga", "over_image" : "locale/de/ui/login/Login_hover.tga", "down_image" : "locale/de/ui/login/Login_hover.tga", "text" : "", }, { "name" : "Channel1_online_markiert_demon", "type" : "button", "x" : 32, "y" : 269, #"vertical_align" : "center", "default_image" : "locale/de/ui/login/Channel1_online_hover.tga", "over_image" : "locale/de/ui/login/Channel1_online_hover.tga", "down_image" : "locale/de/ui/login/Channel1_online_hover.tga", "text" : "", }, { "name" : "Channel2_online_markiert_demon", "type" : "button", "x" : 32, "y" : 300, #"vertical_align" : "center", "default_image" : "locale/de/ui/login/Channel2_online_hover.tga", "over_image" : "locale/de/ui/login/Channel2_online_hover.tga", "down_image" : "locale/de/ui/login/Channel2_online_hover.tga", "text" : "", }, { "name" : "Channel3_online_markiert_demon", "type" : "button", "x" : 32, "y" : 331, #"vertical_align" : "center", "default_image" : "locale/de/ui/login/Channel3_online_hover.tga", "over_image" : "locale/de/ui/login/Channel3_online_hover.tga", "down_image" : "locale/de/ui/login/Channel3_online_hover.tga", "text" : "", }, { "name" : "Channel4_online_markiert_demon", "type" : "button", "x" : 32, "y" : 362, #"vertical_align" : "center", "default_image" : "locale/de/ui/login/Channel4_online_hover.tga", "over_image" : "locale/de/ui/login/Channel4_online_hover.tga", "down_image" : "locale/de/ui/login/Channel4_online_hover.tga", "text" : "", }, { "name" : "Channel1_offline_markiert_demon", "type" : "button", "x" : 32, "y" : 269, #"vertical_align" : "center", "default_image" : "locale/de/ui/login/Channel1_offline_hover.tga", "over_image" : "locale/de/ui/login/Channel1_offline_hover.tga", "down_image" : "locale/de/ui/login/Channel1_offline_hover.tga", "text" : "", }, { "name" : "Channel2_offline_markiert_demon", "type" : "button", "x" : 32, "y" : 300, #"vertical_align" : "center", "default_image" : "locale/de/ui/login/Channel2_offline_hover.tga", "over_image" : "locale/de/ui/login/Channel2_offline_hover.tga", "down_image" : "locale/de/ui/login/Channel2_offline_hover.tga", "text" : "", }, { "name" : "Channel3_offline_markiert_demon", "type" : "button", "x" : 32, "y" : 331, #"vertical_align" : "center", "default_image" : "locale/de/ui/login/Channel3_offline_hover.tga", "over_image" : "locale/de/ui/login/Channel3_offline_hover.tga", "down_image" : "locale/de/ui/login/Channel3_offline_hover.tga", "text" : "", }, { "name" : "Channel4_offline_markiert_demon", "type" : "button", "x" : 32, "y" : 362, #"vertical_align" : "center", "default_image" : "locale/de/ui/login/Channel4_offline_hover.tga", "over_image" : "locale/de/ui/login/Channel4_offline_hover.tga", "down_image" : "locale/de/ui/login/Channel4_offline_hover.tga", "text" : "", }, { "name" : "Channel1_online_demon", "type" : "button", "x" : 32, "y" : 269, #"vertical_align" : "center", "default_image" : "locale/de/ui/login/Channel1_online.tga", "over_image" : "locale/de/ui/login/Channel1_online_hover.tga", "down_image" : "locale/de/ui/login/Channel1_online_hover.tga", "text" : "", }, { "name" : "Channel2_online_demon", "type" : "button", "x" : 32, "y" : 300, #"vertical_align" : "center", "default_image" : "locale/de/ui/login/Channel2_online.tga", "over_image" : "locale/de/ui/login/Channel2_online_hover.tga", "down_image" : "locale/de/ui/login/Channel2_online_hover.tga", "text" : "", }, { "name" : "Channel3_online_demon", "type" : "button", "x" : 32, "y" : 331, #"vertical_align" : "center", "default_image" : "locale/de/ui/login/Channel3_online.tga", "over_image" : "locale/de/ui/login/Channel3_online_hover.tga", "down_image" : "locale/de/ui/login/Channel3_online_hover.tga", "text" : "", }, { "name" : "Channel4_online_demon", "type" : "button", "x" : 32, "y" : 362, #"vertical_align" : "center", "default_image" : "locale/de/ui/login/Channel4_online.tga", "over_image" : "locale/de/ui/login/Channel4_online_hover.tga", "down_image" : "locale/de/ui/login/Channel4_online_hover.tga", "text" : "", }, { "name" : "Channel1_offline_demon", "type" : "button", "x" : 32, "y" : 269, #"vertical_align" : "center", "default_image" : "locale/de/ui/login/Channel1_offline.tga", "over_image" : "locale/de/ui/login/Channel1_offline_hover.tga", "down_image" : "locale/de/ui/login/Channel1_offline_hover.tga", "text" : "", }, { "name" : "Channel2_offline_demon", "type" : "button", "x" : 32, "y" : 300, #"vertical_align" : "center", "default_image" : "locale/de/ui/login/Channel2_offline.tga", "over_image" : "locale/de/ui/login/Channel2_offline_hover.tga", "down_image" : "locale/de/ui/login/Channel2_offline_hover.tga", "text" : "", }, { "name" : "Channel3_offline_demon", "type" : "button", "x" : 32, "y" : 331, #"vertical_align" : "center", "default_image" : "locale/de/ui/login/Channel3_offline.tga", "over_image" : "locale/de/ui/login/Channel3_offline_hover.tga", "down_image" : "locale/de/ui/login/Channel3_offline_hover.tga", "text" : "", }, { "name" : "Channel4_offline_demon", "type" : "button", "x" : 32, "y" : 362, #"vertical_align" : "center", "default_image" : "locale/de/ui/login/Channel4_offline.tga", "over_image" : "locale/de/ui/login/Channel4_offline_hover.tga", "down_image" : "locale/de/ui/login/Channel4_offline_hover.tga", "text" : "", }, ), }, { "name" : "oben_rechts", "type" : "image", "x" : SCREEN_WIDTH - 1920, "y" : 0, #"horizontal_align" : "center", "image" : "locale/de/ui/login/oben_rechts.tga", }, { "name" : "oben_links", "type" : "image", "x" : 36, "y" : 0, "image" : "locale/de/ui/login/oben_links.tga", }, ## ServerBoard { "name" : "ServerBoard", "type" : "thinboard", "x" : 0, "y" : SCREEN_HEIGHT - SERVER_BOARD_HEIGHT - 150, "width" : 375, "height" : SERVER_BOARD_HEIGHT, "horizontal_align" : "center", "children" : ( ## ListBox { "name" : "ServerList", "type" : "listbox2", "x" : 10, "y" : 40, "width" : 232, "height" : SERVER_LIST_HEIGHT, "row_count" : 18, "item_align" : 0, }, { "name" : "ChannelList", "type" : "listbox", "x" : 255, "y" : 40, "width" : 109, "height" : SERVER_LIST_HEIGHT, "item_align" : 0, }, ), }, ),} Bien ahora que tenemos eso iremos a la carpeta login y sustituimos por los archivos que os daré ahora mismo: http://www.mediafire.com/?5bigetc18ba97de Bien una vez hecho todo eso compilamos todo y lo sustituimos. Ahora lo que haremos será coger estos dos archivos que os voy a dar ahora mismo: http://www.mediafire.com/?3yj2r9b0zlqx9ub Y los pondremos en la raíz del cliente. "Donde das click al Metin2.exe para abrir el sv". Y ya esta debería funcionar ^.^ Créditos: Ýoshii36 Y mi agradecimiento a jfirewall por decirme como hacer funcionar los port.1 punto -
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
-
Aqui Les Dejo Una Imagen Y Su Link Link:https://mega.co.nz/#!BRgwgAYZ!IcSQ2UuC8c5vW3KLT4SjWhw2O-Ic3jbWBk-PPjrznpc1 punto
-
1 punto
-
Instalación de ItemShop 2.0 Metin2 + Vídeo
Paulo Ferreira reaccionó a RecursosMóviles por un tema,
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=jBKQQtT4FDI1 punto -
1 punto
-
1 punto
-
Server files de Metin2 Rage 2019 + Web Python [GRATIS] by DevLilian
prueba prueba reaccionó a DevLilian por un tema,
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 -
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
-
[HACK]Metin2LostDay
Arenados Airasca reaccionó a Desmint por un tema,
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/file1 punto -
Pagina web Metin2
siguaschristofer2332 reaccionó a ALEXANDER2020 por un tema,
https://www.mediafire.com/file/e341515o5758f8k/Pagina_Web_Publico_tayson.rar/file1 punto -
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
-
[GAME] Compilar source del game (mainline_released)
dexterxdlol reaccionó a Da Vinci por un tema,
- 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 m2dev1 punto -
web Lysania2
Metin2Regal reaccionó a francia por un tema,
imagen Descargar web Polaria2 Descargar web wildfire descargar web atheros 2 descargar creditos just4metin +1 punto -
Quest Biologo lvl 85
Lincoln reaccionó a sergio2014 por un tema,
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.rar1 punto -
0 puntos