Tabla del Honor
Contenido popular
Showing content with the highest reputation on 22/10/21 in Mensajes
-
[REUPLOAD]Serverfiles martysama v4 RO
luis nuñez and uno mas reaccionó a MiGueLiT0 por un tema,
Descarga: https://mega.nz/file/fWAClSYJ#LyO0UftPIxe8xrc14QMlfxqEOTZmCdr7GPBmBMNUdXc Creditos: Just4Metin22 puntos -
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 : Ryukend2 puntos
-
DMG hack en .mix
Pepito Reyes 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.1 punto -
[PSD]Web y autoparch
Marcos Pinheiro reaccionó a MiGueLiT0 por un tema,
DESCARGA: https://mega.nz/file/VepTXIzB#FKSYj8hr1Gbr1EP9YkLz1ppGFFE8Y7sVDKSR3XSC6nQ1 punto -
86 Carpetas De Atuendos y 36 de accesorios (APORTE)
Daniel Barbosa reaccionó a TrafalgarLaw por un tema,
1 punto -
[INTERFACE] Login + Select & Create [ES]
Lorenzo Gallo reaccionó a 【ℛ-𝓝】ℛ𝔂𝓼𝒆 por un tema,
DESCARGA: [CLIC AQUI]1 punto -
[SERVERFILES] 40k limpios fix + SRC & binario *15 idiomas*
alvaroglez reaccionó a 【ℛ-𝓝】ℛ𝔂𝓼𝒆 por un tema,
[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: TMP41 punto -
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-gIVZIc1 punto
-
Interfaz login, select, create.
Gddfg reaccionó a ChuchoGamer por un tema,
Buenas dias hoy les traigo esta interfaz para los que les guste puedan ponerla Link de Descarga https://mega.nz/file/Zc5UzaoA#8U60aZgtGyFn0F_7xtgarD13FVNfFkwJZ8ym8nFavU81 punto -
bueno hace unas horas vi publico el psd en epvp y tenia unas cuentas horas libre y cree el codigo la interface funciona totalmente ademas esta zona lleva mucho tiempo sin actividad ademas toca ponerle motivacion al foro para poder sacar mas provecho. pd: si ya existe el codigo publico pues no lo sabia me gusta hacer mis propias cosas y no estar copiando codigos. buena noche code: jfirewall diseño: feistygraphic https://mega.co.nz/#!FVkxAQ4b!i3yrnQHo6hgiYNifyQ7gcOCDXHF0AcDcwBu_86plA701 punto
-
VDI SERVER FILES HOVSA
igoriap reaccionó a XhebasT1an por un tema,
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.71 punto -
map_pesca.rar map_pesca_ruben.rar1 punto
-
Files Marty sama /22/09/2021
𝗔𝗿𝗲𝘀 reaccionó a ALEXANDER2020 por un tema,
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 problemas1 punto -
New Armaduras 2021
mafianekcek reaccionó a ChuchoGamer por un tema,
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: turkmmo1 punto -
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 server1 punto
-
Armas y armaduras legendarias [2010]
Emir Sanchez reaccionó a Kenshi Torres por un tema,
1 punto -
Server Files MartySama 5.3*
wysta shop reaccionó a [D]ELARO ✓ por un tema,
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 -
[INTERFACE]Login By Pan Grafik
RiniTheBest reaccionó a EzekielitohMercury por un tema,
DESCARGA https://mega.co.nz/#!d09VDTbI!GBYzo675T-igiGvH80tOd-4pEyLapjZzwPJNkfo_z901 punto -
nueva web metin2 2021 [html]
Armstrong lumbi reaccionó a colcrt por un tema,
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 descargar1 punto -
pagina web #1
pierosotelo reaccionó a ChuchoGamer por un tema,
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/file1 punto -
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
-
Pagina Web Simple
mt2arcangel reaccionó a MiGueLiT0 por un tema,
DESCARGA: http://uploaded.net/file/j521y15j1 punto -
Eliminar Banderas de Reinos a NPC
Kronixer™ reaccionó a [D]ELARO ✓ por un tema,
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]ELARO1 punto -
[SF+Source]Mainline Fix Errores
ferhatcnrr reaccionó a Desmint por un tema,
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: Turkmmo1 punto -
¡Evento de pesca!
Marcos Pinheiro reaccionó a caanmasu por un tema,
--------------------------------------------------- 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#08691 punto -
[FIX]socket_bind: bind: Address already in use
Nzio reaccionó a Kenshi Torres por un tema,
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 descarga1 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
-
[PhotoShop]Full Package
HardGames2 reaccionó a Night-legionm2.com por un tema,
nuevo link : https://mega.nz/file/Flg0jQwL#hq6H4xNqxsc1lxkN9LYDYKiGf-7e7DBjWeKnnNh1d3Q1 punto -
Metin2CMS v2.12
Cedrik Tesch reaccionó a danhakhavro por un tema,
Impossible to make changes. https://gyazo.com/4faca57c3ee77b52f6238b6428ab5e22 Somebody get that problem ?1 punto -
54 Paginas web + intro
autodesk_metin2 reaccionó a Edward por un tema,
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 -
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
-
Drop piedras al azar mejorada
Marcos Pinheiro reaccionó a ReuS por un tema,
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.lua1 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 -
Akron2 - Ultima actualización 01/12/2020
Marcos Pinheiro reaccionó a ChuchoGamer por un tema,
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/file1 punto -
1 punto
-
Web Beyond2 antigua - FREE (GRATIS)
RiniTheBest reaccionó a n0name por un tema,
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 -
1 punto
-
Inaguremos La Seccion ;) Taskbar
Metin2Regal reaccionó a Jfirewall por un tema,
Ya La Habian Visto Pues Ay La Posteo Para Ustedes Adaptada Por Mi jfirewall.rar1 punto -
1 punto
-
[SCRIPT] Mover game compilado al vps del servidor
Johan Stiven Gonzalez reaccionó a Break por un tema,
transfer.sh Subelo donde tengas el game, y pon la ip del vps que quieres transferir.1 punto -
1 punto
-
1 punto
-
Evento PvP
wille damare reaccionó a Rinnegan por un tema,
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.rar1 punto -
[Release]Cliente Metin2 Extasis + Descompilador
arturodarb reaccionó a Serex por un tema,
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.net1 punto -
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.rar1 punto
-
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_7nlCO4fLqYC8hCUCgF9jggjryPv2qkYELLpY1 punto
-
New Armaduras del yoneis!!
Emmanuel Ramírez Pérez reaccionó a Frank Arkero por un tema,
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 saludos1 punto -
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/?3yj2r9b0zlqx9ub1 punto
-
Descarga: http://www.mediafire.com/?e9sbg20uon2xw9b1 punto
-
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