Jump to content

Tabla del Honor

Contenido popular

Showing content with the highest reputation on 22/10/21 in Mensajes

  1. Descarga: https://mega.nz/file/fWAClSYJ#LyO0UftPIxe8xrc14QMlfxqEOTZmCdr7GPBmBMNUdXc Creditos: Just4Metin2
    2 puntos
  2. Ryukend

    Web Traducida [Noveria]

    Buenas amigos, vi la web de Noveria2 en varios foros y me gusto, entonces la traduje y la use unos días en un servidor, ahora he decidido subirla, la traduje todo funciona, Ranking, Cambio de Pass almacen y cuenta y más, lo único que no traduje fue el Install, pero es sencilla la instalación. Aquí una imagen de como es la web: Link de descarga: http://goo.gl/DJoLbJ Pass del .Rar : Ryukend
    2 puntos
  3. 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.
    1 punto
  4. DESCARGA: https://mega.nz/file/VepTXIzB#FKSYj8hr1Gbr1EP9YkLz1ppGFFE8Y7sVDKSR3XSC6nQ
    1 punto
  5. Atuendos Pack (86 Carpetas) Accesorios (36 Carpetas) https://mega.nz/file/GMtVQayb#2YK6qne_tEbcsy0xN0Uk2fZME3iceeJ9rn6F-2emIHU https://mega.nz/file/PRlDVAqY#FtzbEDzkMa_pOFgS64vPmgqhzlLSHophKmwORd22gsI
    1 punto
  6. [40250] Archivos limpios + Cliente + Src [15 idiomas disponibles] Mi objetivo era hacer que un archivo de servidor r40250 fuera lo más oficial posible en comparación con lo que GF tenía cuando sus archivos se filtraron a principios de 2014. No se agregaron nuevos sistemas, solo se corrigieron errores. Aunque pasé varias horas probando, es posible que todavía haya errores. Por favor, infórmeme de los errores para que pueda corregirlos en el futuro, quiero que este proyecto esté lo más libre de errores posible. Idiomas disponibles: EN / DE / HU / FR / CZ / DK / ES / GR / IT / NL / PL / PT / RO / RU / TR Lea Languages.txt para aprender cómo cambiar el idioma predeterminado. SSH para VM: root / 123456789 MySQL: root/ 123456789 En el juego: admin / 123456789 Alias y sus comandos: iniciar cd /usr/metin2/server && sh start.sh apagar cd /usr/metin2/server && sh close.sh limpiar cd /usr/metin2/server && sh clear.sh backup cd /usr/metin2/server && sh backup.sh cargarquest cd /usr/metin2/server/share/locale/english/quest && python make.py limpiardb cd /usr/metin2/src/db/src && gmake clean comp-db cd /usr/metin2/src/db/src && gmake limpiargame cd /usr/metin2/src/game/src && gmake clean compilargame cd /usr/metin2/src/game/src && gmake Lea Changelog.txt para obtener más información sobre los cambios que hice. Agradecimientos especiales a: @Mali por los archivos src de cliente y servidor limpios y actualizados. @Sanchez por el cliente base 2014. @Veltor88 por el paquete de translate.lua. @Fazer por el paquete de locale_string.txt. Hice un pequeño video sobre la instalación del archivo de servidor (vm) y el cambio de idioma: Descarga / Download [CLIC AL BOTÓN DE "ME GUSTA" PARA VER EL ENLACE] [CLICK ON THE "LIKE" BUTTON TO SEE THE LINK] Créditos: TMP4
    1 punto
  7. Seru

    [Taskbar] Steel Task

    Bueno, me aburría esta tarde y me he entretenido un poco, viendo la sección, está claro que no la he adaptado, os la dejo para el/la que la quiera adaptar, las barras de arriba no van sueltas, sólo las he apartado para que se vea como queda todo, pero van abajo... https://mega.co.nz/#!ewo33CKT!ODSzz6GWB8AmqKcowdl1BlI-JJ0_t3PioZ5D-gIVZIc
    1 punto
  8. Buenas dias hoy les traigo esta interfaz para los que les guste puedan ponerla Link de Descarga https://mega.nz/file/Zc5UzaoA#8U60aZgtGyFn0F_7xtgarD13FVNfFkwJZ8ym8nFavU8
    1 punto
  9. Jfirewall

    [RELEASE] Nuevo Taskbar

    bueno hace unas horas vi publico el psd en epvp y tenia unas cuentas horas libre y cree el codigo la interface funciona totalmente ademas esta zona lleva mucho tiempo sin actividad ademas toca ponerle motivacion al foro para poder sacar mas provecho. pd: si ya existe el codigo publico pues no lo sabia me gusta hacer mis propias cosas y no estar copiando codigos. buena noche code: jfirewall diseño: feistygraphic https://mega.co.nz/#!FVkxAQ4b!i3yrnQHo6hgiYNifyQ7gcOCDXHF0AcDcwBu_86plA70
    1 punto
  10. XhebasT1an

    VDI SERVER FILES HOVSA

    Files HOVSA los cuales vi que muchos no pudieron entrar por algún motivo, acá dejo la VDI, el servidor prende y se puede entrar a la cuenta. Cambiar la ip de la VDI a la que te sirva Los files que montaron se deben configurar varias líneas del source del binario y del cliente lo cual no se realizo. El archivo Binario y Source es el mismo que estaba en el post anterior Info del VDI Verificando el VDI se debe realizar el siguiente procedimiento para que no saque error de mysql * Vamos a la ruta var/db/mysql y borramos los siguientes archivos auto.cnf ib_logfile0 ib_logfile1 ibdata1 Xbastian.org.err Xbastian.org.pid * En la maquina virtual colocamos el comando service mysql-server restart * reboot y listo ya nos vamos a la ruta /m2_svfiles/main y colocamos comando en la maquina virtual sh admin_panel.sh 1 para prender 3 para limpiar Screen dentro del juego Binario Eternexus Source VDI 11.3 GCC8 con mysql 5.6 por si la necesitan para otro server. Descargar VDI GCC8 11.3 MYSQL 5.7 Cliente Se actualiza con una nueva VDI con mysql 5.7 y se arregla el error que sacaba al intentar compilar las quest que era un error de libreria VDI GCC8 11.3 MYSQL 5.7
    1 punto
  11. map_pesca.rar map_pesca_ruben.rar
    1 punto
  12. https://mega.nz/file/jVATSYLY#9DBMWhPRyNOWD-DK2nS7gSYeN7Qv0YA57GpLm9l3yaM https://mega.nz/file/f2p0UKAK#4GZuFgBdOJNRArx0Vp-HZfEvswvEvt50sAmXfrlSXM8 Los códigos fuente del lado del servidor relacionados con la tienda fuera de línea se compilan con gcc8. Los códigos fuente del lado del cliente se compilan con Visual Studio 2019. Las herramientas están compiladas con Visual Studio 2019. Está usando MySQL 5.6. Mis scripts son compatibles con python2.7. No hay qc.core disponible en la sección de misiones. Los registros de sistema y MySQL innecesarios están desactivados. Los contenidos de la biblioteca del lado del servidor utilizados son; Aumento minimizado 1.68.0 Cryptopp 7.0.0 Libfmt 5.2.1 Rapidjson 1.1.0 Msl v1.2.2 El contenido de la biblioteca del lado del cliente que uso son; Impulso minimizado -1.67.0 Cryptopp 7.0.0 IL-1.8.0.1 lzo-2.10 libjpeg-9c granny2 (2.4 2.7 2.8 2.9 2.11) python2 (2.7) libfmt 5.2.1 lz4 1.9.1 rapidjson 1.1.0 msl v1.2.2 FreeBSD 11.2 32 y 64 bit y superior puede funcionar sin problemas
    1 punto
  13. ChuchoGamer

    New Armaduras 2021

    Buenas noches Aqui les Traigo estas Armaduras que son bastante buenas yo ya las instale y funcionan de maravilla aqui les dejo foto foto de la armaduras https://ibb.co/XJ6hBXy Link de descarga https://mega.nz/file/Ln4kUSbJ#MmLM4sXptKvWWGkiBoHahrDGmmEzz7yGNINctRgkVUw Fuente: turkmmo
    1 punto
  14. con esta web podremos generar contraseñas mysql para no andar poniendo una web y crear contraseñas aora ya nosotoros las podemos crear tan facil y sinple mysqlgenerador donde dise pasword ponemos cualñquier contraseña una ves puesta le damos abajo en el botonsito create password donde se pone en verde copiamos con todo y aterisco y lo pegamos en nuesto password de acoount en esa tabla y ya quedo guardamos y nos loguamos al server
    1 punto
  15. Link: https://www.mediafire.com/file/snyj1pxbc32646v/Neue_Waffen_-_H4ZEJ.7z/file
    1 punto
  16. Estos Files estan en turkmmo asi que no creo que infrinja ninguna regla ya que están posteados en otros foros. Los Files son MartySama y según el post son la versión 5.3 ya trabajados, no esta confirmado que lo sean ya que normalmente los quitan por que ellos los venden :v , contienen sistema pet oficial, tienda offline de Great, monturas funcionando correctamente y no se que mas sistemas tiene, son la mejor base que haya al momento según el foro y otros lados son los mas robustos, les dejo imágenes de referencia, el locale_inc y el service o define de los Files. Cabe mencionar que ya los probé y funcionan sin problemas, puede tener multi lenguaje por lo menos en cliente pero seria cosas de ustedes hacer esa tarea titanica xd, yo añadí español solo de prueba y funciono :v ID de BSD: root Contraseña de BSD: turkmmo Mysql: no hay informacion pero en un comentario les dejo la forma facil de cambiar la contraseña. Locale_inc #pragma once ////////////////////////////////////////////////////////////////////////// // ### Default Ymir Macros ### #define LOCALE_SERVICE_EUROPE #define ENABLE_COSTUME_SYSTEM #define ENABLE_ENERGY_SYSTEM #define ENABLE_DRAGON_SOUL_SYSTEM #define ENABLE_NEW_EQUIPMENT_SYSTEM // ### Default Ymir Macros ### ////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////// // ### New From LocaleInc ### #define ENABLE_PACK_GET_CHECK #define ENABLE_CANSEEHIDDENTHING_FOR_GM #define ENABLE_PROTOSTRUCT_AUTODETECT #define ENABLE_PLAYER_PER_ACCOUNT5 #define ENABLE_LEVEL_IN_TRADE #define ENABLE_DICE_SYSTEM #define ENABLE_EXTEND_INVEN_SYSTEM #define ENABLE_LVL115_ARMOR_EFFECT #define ENABLE_SLOT_WINDOW_EX #define ENABLE_TEXT_LEVEL_REFRESH #define ENABLE_USE_COSTUME_ATTR #define WJ_SHOW_MOB_INFO #ifdef WJ_SHOW_MOB_INFO #define ENABLE_SHOW_MOBAIFLAG #define ENABLE_SHOW_MOBLEVEL #endif // ### New From LocaleInc ### ////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////// // ### From GameLib ### #define ENABLE_WOLFMAN_CHARACTER // #define ENABLE_MAGIC_REDUCTION_SYSTEM #define ENABLE_MOUNT_COSTUME_SYSTEM #define ENABLE_WEAPON_COSTUME_SYSTEM // ### From GameLib ### ////////////////////////////////////////////////////////////////////////// /* ### New System Defines - Extended Version ### */ // if is define ENABLE_ACCE_SYSTEM the players can use shoulder sash // if you want to use object scaling function you must defined ENABLE_OBJ_SCALLING #define ENABLE_ACCE_SYSTEM #define ENABLE_OBJ_SCALLING // if you want use SetMouseWheelScrollEvent or you want use mouse wheel to move the scrollbar #define ENABLE_MOUSEWHEEL_EVENT //if you want to see highlighted a new item when dropped or when exchanged #define ENABLE_HIGHLIGHT_NEW_ITEM // it shows emojis in the textlines #define ENABLE_EMOJI_SYSTEM #define ENABLE_NEW_PET_SYSTEM //Tr Levelli Pet Sistemi #define ENABLE_PET_ATTR_DETERMINE //Tr Yeni Pet Güncellemesi #define ENABLE_NEW_PET_SYSTEM_FEED //Lvlli Pet Mama Sistemi #define ENABLE_CONQUEROR_LEVEL #define ENABLE_DISCORD_RPC #define ENABLE_DETAILS_UI #define BL_PRIVATESHOP_SEARCH_SYSTEM #define ENABLE_EXTRA_APPLY_BONUS // Yeni Bonuslar Modulu #define ENABLE_ELEMENTAL_APPLY_BONUS // Elemental Bonuslar Modulu #define ENABLE_OFFLINE_SHOP // Offline Shop System; #define __LOADING_TIP__ #define ENABLE_QUEST_RENEWAL // Quest page renewal #define ENABLE_OFFICAL_CHARACTER_SCREEN //Tr Karakter Seçme Ekranı #define ENABLE_CHEQUE_SYSTEM #define ENABLE_OFFLINE_SHOP_USE_CHEQUE /* ### New Debugging Defines */ // #define ENABLE_PRINT_RECV_PACKET_DEBUG Service o Define de game #ifndef __INC_METIN2_COMMON_DEFINES_H__ #define __INC_METIN2_COMMON_DEFINES_H__ #define ENABLE_QUEST_CATEGORY #define ENABLE_D_NJGUILD #define ENABLE_FULL_NOTICE #define ENABLE_NEWSTUFF #define ENABLE_PORT_SECURITY #define ENABLE_BELT_INVENTORY_EX #define ENABLE_CMD_WARP_IN_DUNGEON // #define ENABLE_ITEM_ATTR_COSTUME // #define ENABLE_SEQUENCE_SYSTEM enum eCommonDefines { MAP_ALLOW_LIMIT = 32, // 32 default }; #define ENABLE_WOLFMAN_CHARACTER #ifdef ENABLE_WOLFMAN_CHARACTER #define USE_MOB_BLEEDING_AS_POISON #define USE_MOB_CLAW_AS_DAGGER // #define USE_ITEM_BLEEDING_AS_POISON // #define USE_ITEM_CLAW_AS_DAGGER #define USE_WOLFMAN_STONES #define USE_WOLFMAN_BOOKS #endif #define ENABLE_PLAYER_PER_ACCOUNT5 #define ENABLE_DICE_SYSTEM #define ENABLE_EXTEND_INVEN_SYSTEM #define ENABLE_MOUNT_COSTUME_SYSTEM #define ENABLE_WEAPON_COSTUME_SYSTEM // #define ENABLE_MAGIC_REDUCTION_SYSTEM #ifdef ENABLE_MAGIC_REDUCTION_SYSTEM // #define USE_MAGIC_REDUCTION_STONES #endif #define DISABLE_STOP_RIDING_WHEN_DIE // if DISABLE_TOP_RIDING_WHEN_DIE is defined , the player does not lose the horse after his death #define ENABLE_ACCE_SYSTEM //fixed version #define ENABLE_HIGHLIGHT_NEW_ITEM //if you want to see highlighted a new item when dropped or when exchanged #define __ENABLE_KILL_EVENT_FIX__ //if you want to fix the 0 exp problem about the when kill lua event (recommended) #define ENABLE_EXTRA_APPLY_BONUS // Yeni Bonuslar Modulu #define ENABLE_ELEMENTAL_APPLY_BONUS // Yeni Elemental Bonuslar Modulu #define OFFLINE_SHOP // Çevrimdışı Pazar #define GIFT_SYSTEM // Hediye Sistemi #define SHOP_TIME_REFRESH 1*60 // Pazarların Yenilenme Süresi #define SHOP_BLOCK_GAME99 // Kanal 99da Pazarı Bloklama #define SHOP_DISTANCE // Pazarlar Arası Mesafe #define SHOP_AUTO_CLOSE // Pazarda İtem Kalmayınca Otomatik Kapanması //#define SHOP_ONLY_ALLOWED_INDEX // Her Mapta Belirli Sayıda Pazar //#define SHOP_HIDE_NAME // Pazar İsimlerini Gizleme #define SHOP_GM_PRIVILEGES GM_IMPLEMENTOR // Pazar açmak için minimum gm seviyesi #define BL_PRIVATESHOP_SEARCH_SYSTEM #define ENABLE_NEW_PET_SYSTEM //Tr Levelli Pet Sistemi #define ENABLE_PET_ATTR_DETERMINE //Tr Yeni Pet Güncellemesi #define ENABLE_CONQUEROR_LEVEL #define __LOADING_TIP__ #define ENABLE_CHEQUE_SYSTEM #define ENABLE_OFFLINE_SHOP_USE_CHEQUE #define ENABLE_SHOP_USE_CHEQUE #endif IMAGENES: Links Google Drive MEGA, Actualizaciones no probadas por mi.
    1 punto
  17. DESCARGA https://mega.co.nz/#!d09VDTbI!GBYzo675T-igiGvH80tOd-4pEyLapjZzwPJNkfo_z90
    1 punto
  18. estaba aburrido asi que me puse a diseñar una web para metin2 con materialize espero les guste, saludos descalimar: se que en algunas ocasiones las personas abusan con los links de publicidad (3, 4 o mas links) también entiendo los demás motivos pero se que así se incentiva el compartir material y la comunidad se beneficia con el trabajo que realizamos los desarrolladores/diseñadores, a cualquiera le gustaría que valoraran su trabajo con algunos centavos y es que a ti nada te cuesta ver algunos segundos de publicidad y si obtienes script, items y demás, únicos; saludos descargar
    1 punto
  19. ChuchoGamer

    pagina web #1

    Hola buenas tarde les comparto esta web que esta bastante buena y funciona bien les dejo foto y link de descargar https://ibb.co/ByzQFHk link de descarga https://www.mediafire.com/file/5n68r4hcxoez07s/Darkbey-D4rkW0rld-OldSchool-Tema.rar/file
    1 punto
  20. Slabon

    Página Web Azteka

    Les traigo esta página Web que acabo de encontrar. Datos: El diseño ya tiene algo de tiempo, pero según la fuente es una "Pagina Web Completa". Idioma Alemán. PD. No he tenido tiempo de testear la pagina ya que mi conocimiento en paginas web es mínimo y últimamente he andado ocupado para aprender xD, pero igual se las traigo y espero que alguien pueda probarla y decirnos que tal funciona. Descarga Uploaded Descarga Mediafire Descarga Mega Créditos.
    1 punto
  21. MiGueLiT0

    Pagina Web Simple

    DESCARGA: http://uploaded.net/file/j521y15j
    1 punto
  22. Una guía rápida que recopile e hice a mi manera hace unos minutos, ya que quería eliminar las banderas de los reinos en los NPC. Les dejo una imagen ilustrativa de que funciona correctamente, y un link por si lo quieren guardar para un futuro. Google Drive Ocultar la bandera del reino de todos los NPCs. En Source Binario Abrir: UserInterface/InstanceBaseEffect.cpp // Buscar: void CInstanceBase::__AttachEmpireEffect(DWORD eEmpire) // Abajo buscar: if (IsResource()) return; // Agregar abajo de return; #ifdef ENABLE_HIDE_EMPIRE_FLAGS if (IsNPC()) return; #endif // Quedaria de esta manera: if (IsResource()) return; #ifdef ENABLE_HIDE_EMPIRE_FLAGS if (IsNPC()) return; #endif Abrir UserInterface/Locale_inc.h // Agregar en alguna parte: #define ENABLE_HIDE_EMPIRE_FLAGS // ADVERTENCIA: En el cliente si llegas a tener este error en sysser: 1022 01:03:34375 :: File "game.py", line 2272, in BINARY_Highlight_Item 1022 01:03:34375 :: AttributeError 1022 01:03:34375 :: : 1022 01:03:34375 :: 'NoneType' object has no attribute 'Highligt_Item' 1022 01:03:34375 :: // Busca esto en game.py def BINARY_Highlight_Item(self, inven_type, inven_pos): self.interface.Highligt_Item(inven_type, inven_pos) // Y reemplaza con esto: def BINARY_Highlight_Item(self, inven_type, inven_pos): if self.interface: self.interface.Highligt_Item(inven_type, inven_pos) // Fin. Lo hice de esta manera por si en un futuro deseas volver a ver las banderas, solo debes desactivar el define con una doble barra. les dejo un ejemplo de la manera manera correcta: // #define ENABLE_HIDE_EMPIRE_FLAGS No olviden que tambien tendrian que dejar la linea de game.py original. [D]ELARO
    1 punto
  23. Hola, amigos de Metin Zone. He visto este post en otro foro y he decidido traerlo a zone, ya que son una base estable y de aquí pueden empezar muchos sin algunos errores. Inicialmente estos Files + Source son Pagos, pero los traigo gratis, ya que compartir es vivir, oh al menos eso dicen, sin mas que decir, los dejo con ello. Cito Texto Anexado a los Files y Source: Hola, compartí la fuente principal hace meses, pero no me percate de muchos problemas, el gremio, alquimia tenían problemas, etc. Cerré el tema para crear uno nuevamente. Este es el nuevo. No hay problemas en muchos sistemas oficiales como el sistema de alquimia. Les deseo buen uso a quienes lo usen.Una pequeña nota; No tomé la infraestructura de nadie, o no tomé la infraestructura de la parte de alguien. El proyecto; Mainline FUENTE Fix. Cliente; Granny 2.9 Python 2.7 Contraseña de Navicat: 123456 personaje GM; ID: root PASS: 123456 Comandos de compilación; / usr / mainlinesource / Server gmake clean & gmake all o el comando anterior se puede hacer de una manera clásica Errores Solucionados ------------------------------------->Se Aumento el Tamaño de los Boos <--------------------------------------- ------------------------------------->Info. Hora, Nivel En MP <--------------------------------------- ------------------------------------->Atuendos y Vestidos de Boda Fix <--------------------------------------- -------------------------------------> Objetos de "0" Yang cambian a "Gratis" <--------------------------------------- ------------------------------------->Hoguera Fixeada <--------------------------------------- ------------------------------------->Bloqueo de Comercio mientras se esta TRANSFORMADO <--------------------------------------- ------------------------------------->Alquimia Sin Coste <--------------------------------------- ------------------------------------->Alquimia Sin Coste <--------------------------------------- ------------------------------------->Mensaje de Área Protegida <--------------------------------------- ------------------------------------->Cambio de Color a Signos de Reino [J] [S] [C] <--------------------------------------- ------------------------------------->Descarga <--------------------------------------- Fuente: Turkmmo
    1 punto
  24. caanmasu

    ¡Evento de pesca!

    --------------------------------------------------- UPDATE! He puesto multilanguage la quest. En el momento está en español e inglés pero está en variables de translate, así que se puede usar en cualquier servidor internacional, solo se agregan las variables de los otros idiomas. Esta quest es para que se pueda pescar todo lo que quieras en el mar sin tener que modificar ningún archivo en la base! Otra actualización que hice fue que, mientras el evento esté activo y yo como GM agregue o elimine un pez (objeto) va a avisar a todos en un anuncio. ¿La quieres? ------------------------------------------------------- ¡Hola a todos! He sacado de mi baúl de quests un evento de pesca El evento consiste en pescar objetos que el GM agregue a la lista de peces. Saludos a mi amigo @Anthony's que aparece en el vídeo. Vídeo: Instrucciones: El GM activa el evento y asigna la duración. Hay un menú donde aparecen todos los objetos posibles para pescar, y al seleccionar alguno, se puede elegir como modelo para agregar el objeto que se quiera. Una vez agregado, queda en la lista de Objetos especiales que se puede ver en el Pescador y en el NPC donde se activa el evento. Los objetos agregados se pueden eliminar desde la lista de Objetos especiales. Se puede terminar el evento forzadamente. FAQ: ¿Si agrego un objeto, se pueden seguir pescando los peces normales? Sí ¿Qué sucede cuando agrego un pez? ¿en dónde queda? Queda arriba del pez modelo, o sea, del pez elegido. Si elegiste Pez pequeño como modelo, en el fishing.txt va a quedar tu nuevo objeto arriba de esa línea. ¿Si se termina el evento, no saldrán los objetos especiales? Por supuesto que no. Y tampoco se eliminarán los objetos especiales sino que seguirán guardados en la lista. ¿Por qué al pescar objetos con socket aparece una rozadura en un socket? Ya no recomiendo esto, por favor no poner objetos equipables para pescar ¿Si elimino un pez de los normales, lo puedo volver a agregar después? No. Hay que hacer una copia de fishing.txt ¿Por qué vi un tiempo de 30 segundos cuando se iba a activar el evento? Porque era para hacer pruebas, eso ya no estará. ¿Por qué hay que tomar como modelo otro objeto? Porque los parámetros de los peces son muy complejos, y para más facilidad solo se copia y se pega la línea. ¿Cuánto cuesta? Escríbeme para hacer un trato. El servicio cuenta desde la instalación hasta las actualizaciones que haga del evento. Esto fue todo amigos Discord: Camilo#0869
    1 punto
  25. Algunos de mis amigos me han preguntado este error, la descripción del error está en rar, les deseo un buen día. Link de descarga
    1 punto
  26. 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
  27. nuevo link : https://mega.nz/file/Flg0jQwL#hq6H4xNqxsc1lxkN9LYDYKiGf-7e7DBjWeKnnNh1d3Q
    1 punto
  28. danhakhavro

    Metin2CMS v2.12

    Impossible to make changes. https://gyazo.com/4faca57c3ee77b52f6238b6428ab5e22 Somebody get that problem ?
    1 punto
  29. Aquí os dejo un post de un foro portugués: Tech-Gamers http://www.tech-gamers.pt/index.php?/topic/33451-metin2-websites/
    1 punto
  30. 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
  31. Buenas, hace rato no posteo nada, hace poco comence con esto de las quest y de a poco he ido mejorando. Hace un tiempo postee una quest donde consistia que los metines dropearan piedras +4 al azar. Gracias a caanmasu por comentarme y dejar sus conocimientos, pude mirar y probar por mi mismo mas a fondo las funciones, y tratar de achicar codigo. Aqui esta una nueva quest de drop de piedras al azar, que la disfruten. piedrasxd.lua
    1 punto
  32. 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
  33. Alguien que logre poner shop offiline Aqui les dejo el link Ya que yo no puede nose mucho del source y eso http://www.mediafire.com/file/cxpbc95doj7xowc/shop_offline.rar/file
    1 punto
  34. Bueno, como dije anteriormente, voy a publicar más cosillas y quizás más tarde me anime hasta a hacer diseños para algunos pero de momento ando muy ocupado, por lo que intentaré aportar todo lo que pueda. Esta web es de Beyond2, la antigua web que tenía, hablé con el dueño y no le importó en absoluto que la publicara, a si que aquí tenéis el PSD para quien la quiera. Conceptos: >> DESCARGA AQUÍ << ¡Recuerda dejar tu like, no te cuesta nada!
    1 punto
  35. Ya La Habian Visto Pues Ay La Posteo Para Ustedes Adaptada Por Mi jfirewall.rar
    1 punto
  36. transfer.sh Subelo donde tengas el game, y pon la ip del vps que quieres transferir.
    1 punto
  37. joao duarte

    [Armas]Pack de armas

    muy buenno
    1 punto
  38. IonutPopescu

    Metin2CMS v2.12

    UP: New available in 8 languages:
    1 punto
  39. Rinnegan

    Evento PvP

    quest evento_pvp begin state start begin function Config() return { ["Coordenadas"] = {55500,55500}--Coordenadas del mapa cuando das al boton Participar ["Index"] = {360}--Index del mapa del evento ["Vidas"] = {3}--Vidas del usuario } end when 20011.chat("Evento pvp") with game.get_event_flag("eventopvp") == 1 begin local r = game.get_event_flag("eventopvp2") if pc.getqf("eventopvp") != r then pc.setqf("eventopvp",r) pc.setqf("muertes",0) pc.setqf("intento",0) end if pc.getqf("muertes") >= evento_pvp.Config().Vidas[1] then say("Usted ya agoto sus "..evento_pvp.Config().Vidas[1].." vidas.") return end if select ("Participar","Salir") == 1 then pc.warp(evento_pvp.Config().Coordenadas[1],evento_pvp.Config().Coordenadas[2]) end end when 20358.chat."Evento pvp GM" with pc.is_gm() begin local e = select ("Iniciar evento","Terminar evento","Nada") if e == 1 then notice_all("El evento pvp ha iniciado, ve a uriel para participar.") game.set_event_flag("eventopvp",1) game.set_event_flag("eventopvp2",game.get_event_flag("eventopvp2")+1) elseif e == 2 then notice_all("El evento pvp ha terminado.") game.set_event_flag("eventopvp",0) end end when login with pc.get_map_index() == evento_pvp.Config().Index[1] begin if pc.getqf("muertes") >= evento_pvp.Config().Vidas[1] or game.get_event_flag("eventopvp2") == 0 then warp_to_village() return end loop_timer("revisar_pvp",0.5) end when revisar_pvp.timer begin if pc.get_hp() <= 0 and pc.getqf("intento") == 0 then pc.setqf("intento",1) local m = pc.getqf("muertes")+1 pc.setqf("muertes",m) if m >= evento_pvp.Config().Vidas[1] then notice_in_map("El usuario "..pc.get_name().." ha muerto "..m.." veces y fue descalificado.") cleartimer("revisar_pvp") warp_to_village() return end chat("Has muerto "..m.." veces") end if pc.getqf("intento") == 1 and pc.get_hp() >= 1 then pc.setqf("intento",0) end if game.get_event_flag("eventopvp2") == 0 then cleartimer("revisar_pvp") warp_to_village() end end end end Casi nunca ayudo pero hoy fue la excepsion, disfrutela. mini_pvp.rar
    1 punto
  40. Muchos de vosotros recordareis Metin2 Extasis, un servidor que dió mucho que hablar, un servidor innovador, uno de los mejores que han pasado por este foro, en mi opinión claro. De parte del equipo de Metin2 Zone os traemos todo nuestro antiguo trabajo, el cliente Metin2 Extasis COMPLETO y repito COMPLETO, tiene todo implementado esta perfecto para usarse, es la ultima versión del cliente de Metin2 Extasis. Como sabeis este cliente se encontraba encriptado, pues decidimos publicar el desencriptador para el cliente con lo que todos podreis usar y moldear el cliente a vuestro gusto, ademas de sacar lo que os guste de el. Aqui os dejo mas información sobre que trae este cliente: -Habilidades mejoradas con un mejor diseño. -Tema cristalino en español -Item_proto en español incluyendo gran parte de las nuevas armas,armaduras y accesorios. -Mob_proto en español incluyendo gran parte de nuevos mobs. -Sistema de puntos de logro listo para usar en el cliente(Aunque debes disponer de el en el servidor). -Nuevos mapas que pocos abreis visto, a parte de los de las fotos hay muchos mas implementados. -Tambien podreis ver gran parte de los nuevos mobs implementados. -Armaduras nuevas implementadas. -Infinidad de nuevas armas, muchas mas a parte de las de las fotos: http://img815.images...campanaspvm.jpg http://img10.imagesh...83/dagaspvm.jpg http://img85.imagesh...daspvmdegns.jpg http://img403.images...padaspvpdeg.jpg http://img214.images...adassurapvm.jpg http://img513.images...adassurapvp.jpg http://img818.images...21/fanespvp.jpg -Nuevos sellos para las monturas: -Nuevas monturas implementadas y atacan: http-~~-//www.youtube.com/watch?v=24-_YoXcLq4&feature=player_embedded -Nuevas mascotas implementadas: http://img196.images...3973/mascoo.jpg http://img855.images...7976/masco1.jpg http://img689.images.../643/masco2.jpg http://img818.images...1210/masco3.jpg http://img402.images...9076/masco4.jpg http://img859.images...9681/masco5.jpg -Ademas de todo esto cuenta con un excelente diseño, y un excelente loguin, con teclado, y la opcion de guardar contraseña y ID. Bueno y ya todos os estareis preguntando: ¿Donde lo descargo como lo consigo? http://www.4shared.com/rar/E52eodNF/Descompilador_Metin2Extasis.html? http://www.4shared.com/rar/d40djtzE/Cliente_Metin2_Extasis.html? La contraseña de los .rar es: www.Metin2Zone.net
    1 punto
  41. francia

    Web Seguridad

    Hola amigos bueno navengando por internet encontre esta web de seguridad la verdad es que no la teste ni la instale pero se las dejo demas que alguien le servira trae proteccion contra: DDos Flood Sql Injection etc.. Descarga.. no dejo imagenes por que no la tengo saludos creditos a Google por que ni idea de donde la sake. Seguridad Francia Google.rar
    1 punto
  42. Rheinald

    Nuevo taskbar !

    bueno ya ke veo ke esto anda un pco aburrido os dejo este taskbar echo por mi ! tiene algun que otro fallo como la exp y la barra de correr solo lo modifican en el archivo taskbar.py y ya sta ! Descarga: https://mega.co.nz/#!Zs43RCbR!jbFHZB_7nlCO4fLqYC8hCUCgF9jggjryPv2qkYELLpY
    1 punto
  43. hola.. bueno ya esta puesto el cliente del yoneis nuevas armaduras son 3 de eso: ninja hombre: sura hombre : guerrero hombre : chaman aun no disponible.. descargar en el cliente del yoneis alguno sacas cosas del armaduras: click aqui PD: si ya esta posteado puede borrar el post.. un saludos
    1 punto
  44. Anthony's

    [Intro Login] Traducida

    En pocas palabras dije que teníais que poner estos 2 archivos al cliente para que no saltara ningún error y que funcionara. Ami también me saltaban si no ponía esto: http://www.mediafire.com/?3yj2r9b0zlqx9ub
    1 punto
  45. DryUz

    Web muy hermosa

    Descarga: http://www.mediafire.com/?e9sbg20uon2xw9b
    1 punto
  46. Thanato

    Bug de hp

    Bueno os hago hoy otra guia, esta consiste en quitar el bug de hp sin necesidad de quest. Para arreglarlo es simple os vais a navicat. En navicat os vais a player, y en player haceis esto: http://subefotos.com...bd391ec231o.jpg le dais en player a design table, luego de esto os saldra una pestaña con unos datos, buscais hp: http://fotos.subefot...b732613fbfo.jpg Y en hp justo al lado cambiais el smallint por int:: http://fotos.subefot...f448467cedo.jpg Asi desbugueareis el hp cuando pasa el limite de 32k de hp que empieza a bugearse cuando vais a otro mapa que os sale el hp negativa. Espero que os haya servido. Atentamente Thanato.
    1 punto
Esta clasificación está establecida en Madrid/GMT+02:00
×
×
  • Crear nuevo...