Jump to content

Predator77

Miembro
  • Contador contenido

    33
  • Ingreso

  • Última visita

  • Días ganados

    3

Actividad de reputación

  1. Me Gusta
    Predator77 reacted to KeKo in Nuevo subforo: Creacion de quests   
    Hola a todos, como os habreis fijado hay un nuevo subforo dentro de la seccion quests.
     
    Este nuevo subforo es una iniciativa de ElRaulxX y mia (KeKo) en el que haremos un curso de creacion de quests para que todos podais aprender sobre el lenguaje lua, que (modificado para metin2) es el que se usa en la quests, y que podais editar, entender y crear quests.
     
    El curso se compondrá de una serie de capítulos en los que raul y yo os iremos desentrañando los interesantes misterios del mundo de las quest de metin2 :acepted:
     
    Dentro de poco publicaremos el primer capítulo del curso, y esperamos que a todos os guste el nuevo subforo y os sea útil.
     
    Un saludo, raul y keko.
  2. Me Gusta
    Predator77 reacted to Kryzz in Un nuevo Mapa PVP!   
    Funciona perfectamente +1 Nico

    Aquí una prueba:


  3. Me Gusta
    Predator77 reacted to Zaymax in Protege tu servidor "SHOWMETHEMONEY"   
    Bueno hace poco postearon un multihack con la funcion de poder ser gm en los servidores y demas.
     
    Acontinuacion les hare una breve guia de como bloquear estos tipos de cosas:
     
    Paso 1: Descargamos este editor Hexadecimal > HxD :
    Debes iniciar sesión para ver el contenido del enlace en esta publicación.  
    Paso 2: Abrimos el GAME de vuestro servidor con el editor Hexadecimal
     
    Paso 3:
     
     
    Le damos a buscar el siguiente texto:
    SHOWMETHEMONEY
     
     
    Paso 4:
     
    Acontinuacion sustituimos "SHOWMETHEMONEY" Por el texto que quieran con el mismo numero de letras y en mayusculas
     
    Ejemplo:
    MONEYMONEYMONE
     
    Guardamos y listo se acabaron los estos tipos de "hacks"
  4. Me Gusta
    Predator77 reacted to Kryzz in Encriptacion por LZO, XML corruptos i types 4 a 872   
    Muy buena +1 , pero como dijo Predator77 deberías añadir eso.
  5. Me Gusta
    Predator77 reacted to destroyermt2 in [Recopilación]Dif's game 2089   
    hola metin2zone este es mi primer aporte
    aqui espero les guste
     
    para poder parchar su game necesitan esto

    Debes iniciar sesión para ver el contenido del enlace en esta publicación.  
    Dif lvl 99 ( hace que el lvl maximo del game sea 99)
     

    This difference file is created by The Interactive Disassembler game_r2089M_32 0042E340: FF 63 0008EF2E: FF 63 0008F6C7: FF 63  
    Dif lvl 125 ( game max lvl 125)
     

    This difference file is created by The Interactive Disassembler game 0002E252: 5A FA 00031F6C: 5A FA 0007D600: 59 7C 0008B4AF: 5A 7D 0008B4C8: 5A 7D 0008B4F9: 5A 7D 0008B661: 5A 7D 0008B67E: 5A 7D 0008B6A5: 5A 7D 0008B6C2: 5A 7D 0008B6F3: 5A 7D  
    Dif lvl 150

    This difference file is created by The Interactive Disassembler game_r2089M_32 0042E340: FF 96 0008EF2E: FF 96 0008F6C7: FF 96  
    Dif lvl 200

    This difference file is created by The Interactive Disassembler game_r2089M_32 0042E340: FF c8 0008EF2E: FF c8 0008F6C7: FF c8  
    Dif lvl 250
     

    This difference file is created by The Interactive Disassembler game_r2089M_32 0042E340: FF fa 0008EF2E: FF fa 0008F6C7: FF fa  
    Dif lvl 255
     

    This difference file is created by The Interactive Disassembler game_r2089M_32 0042E340: FF ff 0008EF2E: FF ff 0008F6C7: FF ff  
    Dif para que la maxima karma sea 30.000

    This difference file is created by The Interactive Disassembler game 0003B426: 40 E0 0003B427: 0D 93 0003B428: 03 04 0003B45F: 40 E0 0003B460: 0D 93 0003B461: 03 04 0003C315: BF DF 0003C316: D4 93 0003C317: 01 04 0003B431: C0 20 0003B432: F2 6C 0003B433: FC FB 0003B46A: C0 20 0003B46B: F2 6C 0003B46C: FC FB Dif caballo 35 ( no la he probado )

    This difference file is created by The Interactive Disassembler game 0008A24A: 1E 28 000CCCF8: 1E 28  
    Dif-Pet System

    This difference file is created by The Interactive Disassembler game_r2089M_32 00035011: 74 0F 00035012: 43 8C 00035013: 66 15 00035014: 3D 01 00035015: 86 00 00035016: 4E 00 00035017: 74 90 00035018: 3D 90 0003501B: 87 B6 00035020: 74 7E 00035022: 66 90 00035023: 3D 90 00035024: 88 90 00035025: 4E 90 00035026: 74 90 00035027: 2E 90 00035028: 66 90 00035029: 3D 90 0003502A: 89 90 0003502B: 4E 90 0003502C: 8D 90 0003502D: 74 90 0003502E: 26 90 0003502F: 00 90 00035030: 74 90 00035031: 24 90 00035032: 66 90 00035033: 3D 90 00035034: 8A 90 00035035: 4E 90 00035036: 74 90 00035037: 1E 90 00035038: 66 90 00035039: 3D 90 0003503A: 8B 90 0003503B: 4E 90 0003503C: 8D 90 0003503D: 74 90 0003503E: 26 90 0003503F: 00 90 00035040: 74 90 00035041: 14 90 00035042: 66 90 00035043: 3D 90 00035044: 8C 90 00035045: 4E 90 00035046: 74 90 00035047: 0E 90 0003504A: 8D B6 00430784: 8B 98 004307B4: 8B 9B 004307E4: 8B 9E 00430814: 8B A1 00430844: 8B A4 00430874: 8B A7 004308A4: 8B AA 004308D4: 8B AD 00430904: 8B B0  
    Rates por encima de 200%

    This difference file is created by The Interactive Disassembler game 0008E703: E8 A0 0008E704: 03 0F  
    Espero les sirva
    estare buscando mas
     
    Saludos
  6. Me Gusta
    Predator77 reacted to fuuton97 in [QUEST]Actualización en pergamino (información).   
    Hola, hoy les traigo esta quest de Metin2, esta es creada por mi, y es la primera que hago. La quest tiene la función de que cuando inicias a un lvl 1 o cuando entras al login te saldrá un pergamino donde te mostrará como cierta información del server o actualizaciones, y/o lo que quieras anunciar, sin más rodeos dejo la quest:
     

    ---------------------------------------------- -- Quest creada por Fuuton97 -- www.metin2skill.com ---------------------------------------------- quest notice_server begin state start begin when login begin set_state(gotoinfomation) end end state gotoinfomation begin when letter begin send_letter("NOTICIAS DEL SERVER!") end when button or info begin say("Próxima actualizaciones en el server van a hacer enumeradas:") say_title("1- Actualización de Catacumbas:") say_title("-Se implementará catacumbas al 100%.") say_title("-Se pondrán los Jefes de cada mapa de catacumbas.") say_title("-Habrán dropes único en los mob's/Jefes.") say_title("2- Actualización de Mapa BOSS:") say_title("-En este mapa serán puestos Mob's nuevos.") say_title("-Se les colocará un drop a todos diferentes a los mob's normales.") say_title("3- Mapa de Jefes (Menores)") say_title("- Este es una mapa donde estarán todos los Jefes.") say_title("- Este mapa es para que los user'entren y disfruten.") say_title("ESTARá PRONTO EN NUESTRO SERVER!!") set_state(gotoinfomation) end end state __COMPLETE__ begin end end Esta quest es creada por mi 100%, y es la primera que hago, así que recibo sugerencias o críticas que sean constructivas.
     
    Otro punto que no hice fue la que saliera el login, pues metería por el método como la que tiene guabina, que cada ves que inicies el login en tu pj o te telestrasporte aparecerá siempre este mensaje, entonces y lo hice en pergamino.
     
    Saludos.
  7. Me Gusta
    Predator77 reacted to izaviona in [GUIA]Como usar el "in game map editor"   
    NOTA: Con la publicación del source de Metin2 y su respectivo editor de mapas, esto ya queda practicamente en desuso.
     
     
    IN GAME MAP EDITOR



    Imagenes de muestra:



    Para usarlo necesitais el Python Module Loader(
    Debes iniciar sesión para ver el contenido del enlace en esta publicación.), lo extraeis en la raiz del cliente que quereis editar, luego descargais el in game map editor 1.1(Debes iniciar sesión para ver el contenido del enlace en esta publicación.), esto lo descomprimiis tambien en la carpeta raiz del cliente junto al Python Module Loader.

    Haora ejecutais el Python Module Loader(m2PythonLoader.exe),

    Os aparecera esto:


    Una vez ejecutado, ejecutais el cliente y os logueais hasta estar dentro del juego, cuando estais dentro, pulsais F9 y os aparecera una ventana para elegir el archivo .py,

    Aparecera esto:


    Le damos a select y buscamos el py, cuando lo selecciones, le damos a run y nos aparecera el editor.


    El menu de los objetos es este:



    En el podeis navegar y elegir lo que querais, Aqui os dejo un carpeta con todos los objetos del cliente:
    Debes iniciar sesión para ver el contenido del enlace en esta publicación.(el de arriba son edificios xD)

    Para acceder a la carpeta es muy facil:
    Vamos a la ruta del cliente Aqui:
    y elegimos la carpeta necesiaria, en este caso "map_object_editor" para los edificios y "Objekte sortiert Property DE 2012" para los objetos.

    - Para seleccionar una estructura 3d dentro del juego solo es hacer clic sobre ella, para borrarla le damos clic y luego en la tecla suprimir.

    - Si tu seleccionas un objeto dentro del juego y le das a , directamente te pones a construir esa estructura sin tener que buscarla.

    - , esto hace que construyas y la estructura no se valla del puntero, si quieres seleccionar otra
    estructura le das a y seleccionas la que quieras.

    - ,esto exporta el mapa que has editado.
    Cuando le das a exportar aparecera esto:



    elegis la ruta que querais y os guardara en la ruta que habeis elegido el mapa con sus respectivos areadatas.txt

    Las demas cosas ya les dejo que toqueteen jeje

    Saludos y espero haber ayudado a quellas personas que no saben usarlo aun!

    Fuente: Nerule y musicinstructor.
    Creditos a mi por la guia, creada desde cero.
  8. Me Gusta
    Predator77 reacted to KeKo in [Guia] Implementar mobs sin morir en el intento   
    Buenas zoneros y zoneras, hoy os traigo esta guía que me habían pedido que hiciera para implementar mobs, cosa que hay gente a la que le da bastantes problemas a veces.
     
    ESTA GUIA ES EXCLUSIVA DE METIN2ZONE, NO LA POSTEEIS EN OTRO FOROS
     
    Ire paso por paso explicando el proceso de implementación de un mob:
     
    1 - Qué es lo que trae la carpeta de un mob?
     
    Cuandos nos bajamos un mob nuevo para meter en nuestro servidor vemos que el mob consiste en una carpeta con una serie de archivos dentro, que pueden ser de diferentes tipos y que tienen diferentes funciones.
     

     
     
    Esos archivos pueden ser:
     
    -Archivos .gr2: Son los archivos que contienen el modelo del mob y sus movimientos. Para que un gr2 funcione debe ir siempre a unido a un archivo, que puede ser un .msm o un .msa
     
    Podeis abrirlos usando el granny viewer, y tendreis una vista así del mob:
     

     
    -Archivos msm y msa: Son aquellos que sirven para que el juego pueda leer un archivo .gr2, por lo que siempre tienen la ruta del modelo al que van unidos. Los msm son para el modelo del mob en si y los msa para animaciones.
     
    -Archivos .mse: Estos archivos se usan para meter efectos a los mobs, por lo que los renocereis viendo que al final del archivo siempre saldra el nombre de un .dds o otro archivo de textura, que es el efecto en si.
     
    -Motlist.txt: En cada carpeta de un mob debe aver un archivo con este nombre, ya que es el que le dije al juego a que movimiento se corresponde cada uno de los gr2 de animaciones del mob.
     
    Explicacion del motlist:
     

     
    -Cada linea lleva GENERAL luego el nombre del movimiento, que puede ser WAIT, RUNT, DIE, ATTACK, etc (nombres en ingles de las acciones de los mobs) y luego el nombre del .msa que enlaza con esa animacion. El numero despues del nombre del msa poned el mismo que en otra linea.
     
     
    -Texturas: Pueden presentarse en varios formatos, siendo .jpeg .dds y .tga los mas comunes. La ruta en la que deben ir estos archivos va especificada en el .gr2 del mob asi:
     

     
     
    *Nota: la ruta mas normal para un mob suele ser monster/monster2/npc/npc2 pero puede haber mobs con rutas diferentes como en el zone o carpetas nuevas.
     
    2 - Vale ya se como va la carpeta del mob, ahora que hago con ella?
     
    Bien, ahora que ya tenemos la carpeta de nuestro mob y entendemos como funciona tenemos que implementarlo en nuestro cliente. Pero en que archivo lo hacemos?
     
    A la hora de ver en que ruta poner la carpeta de nuestro mob tenemos que ir a la susodicha carpeta y abrir el msm que lleve el nombre del mob. Una vez lo abramos veremos un apartado donde pone: BaseModelFileName y en esa ruta pondremos la carpeta del mob.
     

     
    Una vez tengamos metido la carpeta en su sitio, añadiremos al xml del archivo que estemos modificando las lineas correspondientes al nuevo mob, ya sea a mano o usando un creador de xml.
     
    *Se pueden dar casos de mobs en los que la ruta en la que tenga la textura sea diferente a la ruta en la que tenga que ir la carpeta del mob, así que si se da el caso tendreis que meter la carpeta del mob en la ruta del msm y el archivo de la textura en su ruta correspondiente.
     
    3 - Ya compile el archivo, que és lo siguiente?
     
    Una vez compilado el archivo el siguiente paso es decompilar el root de nuestro cliente y abrir un archivo llamado npclist.txt, en el que relacionaremos cada mob nuevo con una id en el cliente.
     
    *Detalle: cuando escribais en el npclist debereis usar la tecla tabulador en vez de espacios, para que no os de errores al cargar el juego.
     
    Una vez abrais el npclist, vais a cualquier parte del archivo, le dais a enter para dejar una linea vacia y escribis lo siguiente:
     
    1º La id que quereis que tenga el mob.
     
    2º Le dais a tab
     
    3º El nombre del msm del mob.
     

    idmob [tab] nombremsm El resultado tiene que ser algo asi:
     

     
    3.1: Casos especiales: mobs duplicados:
     
    Hay veces que un mismo mob con diferentes texturas, por lo que recurrirmos a duplicar el mob. Por no alargar la guia demasiado podeis ver mi post de duplicar mobs para aprender a hacerlo:
     

    Debes iniciar sesión para ver el contenido del enlace en esta publicación.  
    En esos casos (resumiendo la parte del root) tendreis que poner primero una linea que sea asi, ya que cuando duplicais un mob haceis otro msm con un nombre diferente al del mob original en el que haceis que tenga otra textura.
     

    0 [tab] nombredelmsmnuevo [tab] nombredelmsmviejo
     
    4 - Es todo? Ya implemente mi mob?
     
    Casi Casi. Ya lo ultimo que queda para implementar a vuestro mob es meterle una query en el mob_proto del navicat, que puede ser igual a la de otro mob o podeis modificarla como os plazca.
     
    *Detalle: Aunque un mob no tenga query si está implementado en el cliente podeis hacer /poly iddelmob para probarlo antes de meterle query.
     
    Para que el mob sea el mismo que acabamos de meter, la query debe llevar la misma id que pusimos en el npclist.txt del root.
     
    *Opcional: Si ademas queremos que nuestro mob lleve encima el nombre deberemos añadir una linea con la id npclist.txt en el mob_proto del cliente: vamos al locale de nuestro servidor, buscamos el mob_proto y lo decompilamos. Una vez hecho eso añadimos una linea nueva:
     

    <Mob vnum="idmob" name="????" gb2312name="Nombremob" type="0" rank="1" battle_type="0" level="125" event_type="0" mob_color="0" /> Y listo ya tendreis vuestro nuevo mob implementado y funcionando
     

     
    (Os pongo una foto de un mob cualquiera xd, esta porq la chami sale toda sexy )
     
     
    5 - Errores frecuentes, soluciones y truquillos varios:
     
    Toda esta teoría está muy bien, pero a mucha gente le pasa que implementa un mob perfectamente y luego no le va, hay una serie de cosas tipicas que suelen causar eso:
     
    5.1: Invoco al mob, veo que me baja la vida pero no hay ningun monstruo, que hago
     
    Este es el error mas tipico de todos, y que tiene muchas soluciones diferentes:
     
    1 - Pusiste mal el nombre del mob en el npclist, así que revisa que el nombre que tiene el msm del mob sea el mismo que pusiste en el npclist, puede que lo hayas escrito mal. (Se que es muy básico pero nunca se sabe).
     
    2 - Problema de ruta: A veces puede pasar que implementes un mob y metas la carpeta del mob en otra ruta diferente a la que tiene en el msm así que debereis cambiarlo de carpeta a la que ponga el msm.
     
    3- El problema de las mayúsuclas y minúsculas: Aunque no lo parezca esto es algo que causa muchos problemas con los mobs, ya que es algo que muchos no saben.
     
    Esto es muy importante: NUNCA PUEDE HABER MAYUSCULAS EN EL XML DE UN MOB, YA SEA EL NOMBRE DEL GR2 O DE LA TEXTURA, PORQUE DARA ERROR.
     
    Como la gran mayoria usamos el creador de xml, cuando meteis la carpeta del mob en su archivo correspondiente teneis que fijaros que el nombre del gr2 del mob estea escrito en minusculas:
     
    Así mal
     

     
     
    Así bien
     

     
     
    También teneis que abrir el msm del mob y ver que el .gr2 de ahi esté en minus también:
     
    Asi mal
     

     
     
    Asi bien
     

     
    Ademas comprobad también que esta en minusculas en el xml. De esta manera al usar el creador de xml ya saldra en minusculas el nombre del gr2.
     
    Por ultimo en lo referente a las minusculas fijaros que el nombre del mob, de la textura o cualquier otra cosa del xml este en minusculas, por ejemplo:
     

    d:/ymir work/monster2/mob_nuevo/Mob.gr2 d:/ymir work/monster2/mob_nuevo/Textura_Mob.tga Esas dos lineas estarían mal, ya que aunque el .gr2 esta en minusculas hay letras en mayuscula (la M de mob y la T de textura) asi que recordad siempre que todo debe estar en minusculas para que el juego lo lea bien
     

    d:/ymir work/monster2/mob_nuevo/mob.gr2 d:/ymir work/monster2/mob_nuevo/textura_Mob.tga  
    4 - El problema de las ids: A la hora de poner ids a los mobs nuevos que hayais implementado teneis que tener en cuenta que hay una serie de ids que se corresponde a monster/monster2/npc/npc2 así que a la hora de poner id os aconsejo que useis esta numeración:
     
    * Si el mob es del monster, ponedle id de 210 en adelante.
     
    * Si el mob es del monster2, ponedle id de 3000 en adelante.
     
    * Si el mob es de npc/npc2, ponedle id de 18000 en adelante (a menos que sean montus que peguen o mascota que tienen que tener una id concreta).
     
    Eso sí, si no quereis poner esas ids no significa que el mob no vaya a ir, pero con esas no os dará problema por la id nunca.
     
    5.2: Cuando descargo un mob viene sin los gr2 de las animaciones, que hago???
     

     
    Los mobs nuevos que implementeis no siempre tendrán animaciones propias, así que en muchos casos usarán las de otros mobs que tengan su mismo esqueleto (por lo que sus animaciones seran compatibles). En ese caso llevaran el mse con la ruta de la animacion del otro mob.
     
    Si solo teneis el gr2 y msm de un mob y quereis usarlo tendreis que copiar de otro mob compatible con el sus mse (lo que es dificil de ver a veces ya que hay que fijarse en como es el mob fisicamente y buscar uno parecido) y pegarlos en la carpeta de vuestro mob.
     

     
    5.3: Tengo un mob sin motlist, que hago??
     
    Si os falta el motlist de un mob solo teneis que cojer el de otro mob y editarlo con los nombres de las animaciones que tenga vuestro mob. Para saber que gr2 es cada animacion (si el 00 es WAIT por ejemplo) tendreis que abrir el gr2 del mob cn el granny, darle a animation list, ahi a load new animation. Una vez os diga que gr2 abrir vais a la carpeta del mob abris un gr2, por ejemplo el 00 y veis que hace el mob, si corre sería RUN, si se muere pues DEAD y así.
     

     
     
    Y eso es todo zoneros, espero que os sirva la guía
  9. Me Gusta
    Predator77 reacted to Serex in [Videotutorial] Cambiar drop a un cofre   
    Sencillo tutorial sobre como cambiar el drop de un cofre, explicación de las columnas.
    También os sirve para crear un nuevo cofre.
    Guía sencilla pero muy útil.
     

  10. Me Gusta
    Predator77 reacted to Serex in Descripción columnas MOB_PROTO   
    Bueno en esta guía os explicaremos para que sirve cada columna del mob_proto de vuestro servidor:
     
    -Vnum: id con la que se invocara el mob/npc.
     
    -Name: nombre interno en el servidor del mob, recomendable no tocar esta columna.
     
    -Locale_name: nombre que tendra el mob/npc en el juego.
    El nombre de los mobs en el juego se edita en el mob_proto del cliente.
    El nombre de los npcs en el juego se edita en el mob_proto de la base de datos.
     
    -Rank: este valor puede ser del 0 al 5, este valor determina la cantidad de yang que tirara al suelo un mob, aumentando la cantidad a medida que el numero es mayor (El yang que tira este mob con el rank no se recoge automáticamente con la tercera mano)
     
    -Type: determina si si es un metin2, un npc, un portal, o un mob.
    Type = 0 = un mob
    Type = 1 = un npc
    Type = 2 = un metin
    Type = 9 = un portal
    Type = 3 = un portal
    Type = 5 = Estructura
     
    -Battle_type: Comprendido entre el 0 y el 5, determina el tipo de batalla.
    Mobs y npcs suelen llevar un 0.
    Metins llevan un 3.
    Jefes llevan un 4 o un 5.
    Mobs fuertes llevan un 2.
     
    -Level: determina el nivel que sera el mob npc o metin.
    El nivel visual se edita en el mob_proto del cliente.
    El nivel verdadero se edita en el mob_proto de la base de datos.
     
    -Size: esta columna se deja sin rellenar, no tiene función.
     
    -Ai_flag: determina como sera el mob / npc / metin
    AGGR: el mob sera agresivo y atacara a los players que se acerquen
    NOMOVE: el mob no se moverá del sitio, se usa en metins y npcs
    COWARD: el mob escapa y corre de los players
    NOATTSINSHU: el mob no atacara players del reino sinshoo
    NOATTCHUNJO: el mob no atacara players del reino chunjo
    NOATTJINNO: el mob no atacara players del reino jinno
    ATTMOB: el mob atacara otros mobs, se suele usar en npcs
    BERSERK: el mob tendra la habilidad de aumentar su velocidad de ataque
    STONESKIN: habilidad que se suele poner en los metins
    GODSPEED: el mob tendrá la habilidad de aumentar su velocidad de movimiento
    DEATHBLOW: el mob tendrá la habilidad de asestar golpes críticos
    REVIVE: el mob revivira 1 vez despues de ser matado
     
    -Mount_capacity: todos tienen un 0 esta columna no tiene funcion.
     
    -Setraceflag: determina la raza del mob, esto afectara para los bonus que podemos encontra en el juego como fuerza contra no-muertos, animales, demonios etc...
    ANIMAL = animales
    UNDEAD = no-muertos
    DEVIL = demonios
    HUMAN = mediohumanos
    ORC = orcos
    MILGYO = misticios
    INSECT = insectos ¿?
    FIRE = mobs de fuego ¿?
    ICE = mobs de hielo ¿?
    DESERT = mobs deserticos ¿?
     
    -Setinmuneflag: determina a que sera inmune el mob.
    STUN = apagones
    SLOW = retardo
    FALL = caidas
    CURSE = maldiciones
    POISON = veneno
    TERROR = miedo
     
    -Empire: no tiene funcion alguna todos tienen 0.
     
    -Folder: determina la carpeta donde se encuentra el mob
     
    -On_click: determina que funcion tiene nuestro npc / mob.
    0 = mobs
    1= tiendas
    2 = npcs y portales
     
    -St: determina la fuerza de nuestro mob.
     
    -Dx: determina la deztreza de nuestro mob.
     
    -Ht: determina la vitalidad de nuestro mob(ojo vitalidad no vida).
     
    -Iq: determina la inteligencia de nuestro mob.
     
    -Damage_min: determina el daño minimo de nuestro mob.
     
    -Damage_max: determina el daño máximo de nuestro mob.
     
    -Max_hp: determina la vida de nuestro mob.
     
    -Regen_cycle: determina la velocidad de regeneración de nuestro mob, puede ir del 0 al 100.
     
    -Regen_percent: determina el porcentaje de vida que se regenera nuestro mob en cada regen_cycle.
     
    -Gold_min: determina el drop minimo de yang de nuestro mob.
     
    -Gold_max: determina el drop máximo de yang de nuestro mob.
     
    -Exp: determina la experiencia que dará nuestro mob al matarlo.
     
    -Def: determina la defensa de nuestro mob.
     
    -Attack_speed: determina la velocidad de ataque de nuestro mob, una velocidad normal suele estar entre 80 y 100.
     
    -Mob_speed: determina la velocidad de movimiento de nuestro mob, una velocidad normal esta entre 100 y 130.
     
    -Aggresive_hp_pct: determina la agresividad de nuestro mob, el valor suele ser siempre 100, tiene poca utilidad.
     
    -Agressive_sight: Esta columna no tiene función alguna, el valor por defecto suele ser 2000.
     
    -Attack_range: Esta columna define el rango de ataque que tendra un mob en el caso de que sea agresivo(AGGR) el valor normal suele ser 175 pero puedes llegar a poner hasta 1000.
     
    -Drop_item: Esta columna no tiene función útil, suele llevar un 0.
     
    -Resurrection_vnum: Esta columna define en que mob resucitara nuestro mob despues de ser matado, si no quieres que resucite en ningun mob solo tiemes que ponerle el valor 0.
     
    -Enchant: es una función poco usada, determina una probabilidad adicional a la normal que tendra nuestro mob de las siguientes habilidades, por eso esta columna es opcional se puede dejar en 0 y el mob seguira teniendo las habilidades.
    Enchant_curse: probabilidad de maldecir.
    Enchant_poison: probabilidad de envenenar.
    Enchant_stun: probabilidad de stunear.
    Enchant_critical: probabilidad de golpes críticos.
    Enchant_penetrate: probabilidad de penetración.
     
    -Resist: Esta columna determina la resistencia/defensa de nuestro mob a las diferentes armas y habilidades.
    Resist_sword: defensa espada
    Resist_twohand: defensa 2 manos
    Resist_dagger: defensa daga
    Resist_bell: defensa campana
    Resist_fan: defensa fan
    Resist_bow: resistencia contra flechas
    Resist_fire: resistencia fuego
    Resist_elect: resistencia relámpago
    Resist_magic: resistencia mágica
    Resist_wind: resistencia viento
    Resist_poison: resistencia veneno
     
    -Dam_multiply: Esta columna define por cuanto se multiplicará el daño base del mob, multiplicara los valores de daño máximo y daño minimo y ese será el daño real del mob, es recomendable dejarlo en 1 si has ajustado bien el daño del mob, aunque lo puedes multiplicar si asi lo deseas.
     
    -Summon: Esta columna se usa en algunos jefes del juego, el id que pongas en esta columna será el mob que llame el jefe una vez entre en batalla.
     
    -Drain_sp: Esta columna define el robo de sp que tendra el mob, se usa en mobs como las dríadas que roban sp.
     
    -Mob_color: Esta columna define el color del mob, si quieres el color normal deberas dejarla en 0, si quieres que el mob adquiera otro color deberas editar la columna en el mob_proto del cliente.
    En el mob_proto dle servidor siempre es 0.
    16764108 --> colorización roja
    16764159 --> colorización violeta
    13434828 --> colorización verdosa
    16756141 --> colorización roja intenso
    6750207 --> colorización azul intenso
    Aqui teneis un ejemplo:

     
    -Polymorph_item: Esta columna determina el id de la bola polimorfa de nuestro mob.
     
    -Skill_level0: Esta columa se suele usar en jefes, determina el nivel o intesidad de la habilidad especial del mob.
     
    -Skill_vnum0: Esta columna determina la id de la habilidad especial que tendra nuestro mob.
     
    -Skill_level1: Esta columna determinal el nivel o intensida de la segunda habilidad especial del mob.
     
    -Skill_vnum1: Esta columna determina la id de la segunda habilidad especial de nuestro mob.
     
    -Skill_level2: misma funcion que skill_level0
     
    -Skill_vnum2: misma funcion que skill_vnum0
     
    -Skill_level3: misma funcion que skill_level0
     
    -Skill_vnum3: misma funcion que skill_vnum0
     
    -Skill_level4: misma funcion que skill_level0
     
    -Skill_vnum4: misma funcion que skill_vnum0
     
    -Sp_berserk: Sin función útil valor por defecto 0.
     
    -Sp_stoneskin: Sin función útil valor por defecto 0.
     
    -Sp_goodspeed: Sin función útil valor por defecto 0.
     
    -Sp_deathblow: Sin función útil valor por defecto 0.
     
    -Sp_revive: Sin función útil valor por defecto 0.
  11. Me Gusta
    Predator77 reacted to KeKo in [TIP] Hacer un item comerciable   
    Hola a todos, hoy he hecho una guía para hacer un item comerciable, en la guía uso las emperadores pero vosotros podeis hacer comerciable cualquiera.
     
    Paso1:Ponemos el server on , abrimos el Navicat y entramos a los datos de nuestro server.
    Debes iniciar sesión para ver el contenido del enlace en esta publicación.
     
    Paso2:Vamos a la tabla player.
    Debes iniciar sesión para ver el contenido del enlace en esta publicación.
     
    Paso3:Abrimos la tabla Item_proto.
    Debes iniciar sesión para ver el contenido del enlace en esta publicación.
     
    Paso4:Vamos hasta el objeto que queremos hacer comerciable, en este caso las imperiales.
    Debes iniciar sesión para ver el contenido del enlace en esta publicación.
     
    Paso5:En la columna antiflag, que es la que determina que tipo de pj puede poner una armadura o usar un arma, y ponemos:
    Caso1:0; para que una imperial sirva para los cuatro tipos de pj .
    Debes iniciar sesión para ver el contenido del enlace en esta publicación.
     
    Caso2:56, 52, 44, 28; para que cada una sirva para un pj.
    Debes iniciar sesión para ver el contenido del enlace en esta publicación.
     
    56-Guerrero.
    52-Ninja.
    44-Sura.
    28-Chamán
     
    Aparte si queremos:
     
    1-Solo la pueden poner pjs hombre.
    2-Solo la pueden poner pjs mujer.
    284=28=Chamanes.
    288=44=Suras.
    312=52=Guerreros.
    308=52=Ninjas.
    32=300=Guerrero, ninja y sura (como en las armas).
     
    Una vez hecho todo, reboteamos el server y al volver a ponerlo on, lo que hayais hecho comerciable será comerciable y se podrá vender .
  12. Me Gusta
    Predator77 reacted to Serex in Descripción Bonus del servidor   
    Bueno pues aqui os vengo a mostrar los bonus existentes en un servidor de Metin2, esto os vendrá muy bien a la hora de crear querys o editarlas.
    El número que va delante del bonus es el que deveras usar en las columnas "applytype0", "applytype1", "applytype2".
    Seguido del valor del bonus en las columnas "applyvalue0", "applyvalue1", "applyvalue2".
    Os podré un ejemplo, quiero que mi espada tenga 10% de críticos y 5000 de hp.
    Applytype0 = 15
    Applyvalue0 = 10
    Applytype1 = 1
    Applyvalue1 = 5000
     
    1 = Max HP 2 = Max SP 3 = Vitalidad 4 = Inteligencia 5 = Fuerza 6 = Dextreza 7 = Velocidad de ataque 8 = Velocidad de Movimiento 9 = Velocidad Hechizo 10 = Regeneracion de HP 11 = Regeneracion de SP 12 = Probabilidad de Envenenamiento 13 = Probabilidad de Apagon 14 = Probabilidad de Retardo 15 = Probabilidad de golpes críticos 16 = Probabilidad de golpes de penetracion 17 = Fuerza Contra MedioHumanos 18 = Fuerza Contra Animales 19 = Fuerza Contra Orcos 20 = Fuerza Contra Misticos 21 = Fuerza Contra No-muertos 22 = Fuerza Contra Demonios 23 = Probabilidad de Absorver HP 24 = Probabilidad de Absorver SP 25 = Probabilidad de robar HP 26 = Probabilidad de recuperar SP al golpear 27 = Posibilidad de bloquear un ataque cuerpo a cuerpo 28 = Probabilidad de Esquivar Flechas 29 = Defensa Espada 30 = Defensa Dos Manos 31 = Defensa Daga 32 = Defensa Campana 33 = Defensa Fan 34 = Resistencia de Flechas 35 = Resistencia Fuego 36 = Resistencia Relampago 37 = Resistencia Magia 38 = Resistencia Vento 39 = Probabilidad de reflectar golpes fisicos 40 = Probabilidad de reflectar maldicion 41 = Resistencia veneno 42 = Probabilidad para recuperar SP 43 = Probabilidad de bonus de doble de EXP 44 = Probabilidad de Caer Doble Drop de Yang 45 = Probabilidad de Caer Doble Drop de Items 46 = Aumentar el efecto de las pociones 47 = Probabilidad para recuperar HP 48 = Defensa contra Apagones 49 = Defensa contra Retardo 50 = Defensa contra Caidas 51 = UNKNOWN_TYTE [51] SIN EFECTO 52 = Alcance del arco 53 = Valor de ataque 54 = Defensa 55 = Valor de Ataque magico 56 = Defensa Magica 57 = UNKNOWN_TYPE [57] SIN EFECTO 58 = Max Resistencia 59 = Fuerza contra Guerrero 60 = Fuerza contra Ninja 61 = Fuerza contra Sura 62 = Fuerza contra Chamanes 63 = Fuerza contra Mounstruo 64 = Valor de ataque 65 = Defensa66 = EXP 67 = Probabilidad de capturar objetos multiplicada con x.xx (las X son un porcentaje % = Bonus) 68 = Probabilidad de capturar Yang multiplicada con x.xx (las X son un porcentaje % = Bonus) 69 = UNKNOWN_TYPE [69] SIN EFECTO 70 = UNKNOWN_TYPE [70] SIN EFECTO 71 = Daño de Habilidad 72 = Daño Media 73 = Resistencia al daño de habilidad ( contrarresta el bonus ID:71 ) 74 = Resistencia al daño de media( contrarresta el bonus ID:72 ) 75 = UNKNOWN_TYPE [75] SIN EFECTO 76 = EXP Bonus x.xx (las X son un porcentaje % = Bonus) 77 = Probabilidad de capturar objetos mas x.xx (las X son un porcentaje % = Bonus) 78 = Defensa Contra Guerrero 79 = Defensa Contra Ninja 80 = Defensa Contra Sura 81 = Defensa Contra Chaman
  13. Me Gusta
    Predator77 reacted to KeKo in [NPC] El reto de los demonios   
    Hola a todos, hoy me dio por ver que hace milenios habí­a posteado un npc que cuando hablabas con él te invocaba unos jefes y si los vencias te daba un premio. Por supuesto de aquella no tenia ni idea de hacer quests y no funcionaba así­ que hoy me dio por volver a hacerlo, pero esta vez funciona claro
     
    El funcionamiento es sencillo, tu hablas con el npc y estes donde estes te invocará el jefe que le digas, cuando mates a los 6 jefes (cuando matas a uno de los que cuentan te sale un mensaje en la barra de chat) te invoca el último jefe que es el que te da el premio.
     
    Sé que es una tonteria pero me da pena que cuando lo hice por primera vez alguien haya podido quedar con las ganas, así­ que ahora que si que sabí­a hacerlo bien pos lo hice.
     
    Aqui teneis unas foticos:
     

    Debes iniciar sesión para ver el contenido del enlace en esta publicación.
    Debes iniciar sesión para ver el contenido del enlace en esta publicación.
    Debes iniciar sesión para ver el contenido del enlace en esta publicación.
    Debes iniciar sesión para ver el contenido del enlace en esta publicación.
    Debes iniciar sesión para ver el contenido del enlace en esta publicación.
    Debes iniciar sesión para ver el contenido del enlace en esta publicación.  
    Y aquí­ la quest en sí­, como suponeis podeis editarla todo lo que querais, aunque no taria de más que digais que lo hice yo si lo usasis xd. Como toda quest la meteis en /home/game/quest (o la ruta en la que tengais vuestra carpeta quest) y luego la cargais cn el comando ./qc retodemonios.quest. Os dejo adjunta la quest tmbn ya creado el archivo .quest por si os da pereza hacerlo vosotros.
     
    *El mob que le puse de id 2608 es el dragon de fuego de hdlgp que quedaba bien como jefe del npc y mola verlo, pero vosotros ponerle el que querais xd
     

    quest retodemonios begin state start begin when 20095.chat."El reto de los demonios" begin say_title("El reto de los demonios") say("") say("Veo que estas preparado para afrontarlo") say("Elige a tu adversario") say("Y preparate para la lucha") say("Hay que acabar con 6 jefes") say("pero solo aquellos que te salga un mensaje") say("al acabar con ellos sol validos.") say("Descubre el reto final al acabar con el sexto") say_reward( "NPC by KeKo!" ) local s = select ( "Reaper", "Reina arana", "Rey demonio", "Nueve colas", "Rey arana", "Comandante Zin", "Cerrar" ) local coor_x = pc.get_local_x() local coor_y = pc.get_local_y() local cor_x = math.random(0,10) local cor_y = math.random(0,10) if s == 1 then mob.spawn(1093, coor_x + cor_x , coor_y + cor_y, 1) pc.setqf("jefesdem", 2) elseif s == 2 then mob.spawn(2092, coor_x + cor_x , coor_y + cor_y, 1) pc.setqf("jefesdem", 2) elseif s == 3 then mob.spawn(1092, coor_x + cor_x , coor_y + cor_y, 1) pc.setqf("jefesdem", 2) elseif s == 4 then mob.spawn(1901, coor_x + cor_x , coor_y + cor_y, 1) pc.setqf("jefesdem", 2) elseif s == 5 then mob.spawn(2091, coor_x + cor_x , coor_y + cor_y, 1) pc.setqf("jefesdem", 2) elseif s == 6 then mob.spawn(2494, coor_x + cor_x , coor_y + cor_y, 1) pc.setqf("jefesdem", 2) elseif s == 7 then return end end when 1901.kill or 2494.kil or 2092.kill with pc.getqf("jefesdem") == 2 begin if pc.getqf("jefesdem") > 1 then pc.setqf("retodemonio", pc.getqf("retodemonio") + 1) chat("Has acabado con uno de los jefes") if pc.getqf("retodemonio") > 5 then local coor_x = pc.get_local_x() local coor_y = pc.get_local_y() local cor_x = math.random(0,10) local cor_y = math.random(0,10) mob.spawn(2608, coor_x + cor_x , coor_y + cor_y, 1) pc.setqf("jefereto", 2) pc.setqf("retodemonio", pc.getqf("retodemonio") - 6) chat("Acaba con el dragon azul") end end end when 2608.kill begin if pc.getqf("jefereto") > 1 then say("Has superado el reto de los demonios") say("puedes descansar ya que te has ganado tu premio") say("al exterminar a todos esos jefes.") say_reward("Has ganado 100kk") say_reward("Has ganado 5kk de exp") pc.change_gold(100000000) pc.give_exp2(50000000) notice_all ("El jugador "..pc.get_name().." ha superado el reto de los demonios") pc.setqf("jefereto", pc.getqf("jefereto") - 2) end end end end Quest 100% by KeKo!
  14. Me Gusta
    Predator77 reacted to KeKo in [Quest] GM Online.   
    Aquí os dejo una de las quests mas típicas de servidores de Metin2, pero no por ello menos importante, editad el texto como queráis.
     

    quest gmlogin begin     state start begin         when login with pc.is_gm() begin             command("n ".. pc.get_name() .." esta Online")             command("n Enviale un mp para dudas/quejas.")                    end     end end
  15. Me Gusta
    Predator77 reacted to KeKo in [Quest+cliente] El sistema de logros   
    Buenasss zoneros y zoneras, hoy os voi a explicar como implementar en vuestro servidores el sistema de logros que meti en Metin2Extasis, hasta con mi querida quest de canjes xd (aunque en elite hay una mas completa la mia es mas sencillita).
     
    ESTA GUIA ES EXCLUSIVA DE METIN2ZONE, QUE NADIE LA COPY PASTEE A OTROS FOROS
     
    1 - Qué es el sistema de logros?
     
    Este sistema consiste en una quest y una edicion del cliente que hace que cada vez que un jugador alcance un objetivo concreto, que tu fijas en la quest, le da los puntos correspondientes al logro que haya alcanzando. Si un jugador acumula puntos luego los puede canjear por premios.
     
    Aqui teneis algunas fotos del resultado final (son antiguas del extasis xd):
     

     

     
     
     
    2 - Como meto yo esto?
     
    El sistema de logros consiste en una quest y en editar unos archivos en el cliente, así que vamos a ir paso por paso:
     
     
    2.1: Parte del cliente:
     
    *Todos los archivos que tengais que meter estan en esta descarga:
     

    Debes iniciar sesión para ver el contenido del enlace en esta publicación.  
    2.1.1 - Que archivos vamos a editar? En el cliente editaremos los siguientes archivos:
     
    -Root: dentro de el los archivos game.py y uiachievement.py (este lo meteremos nosotros).
    -Etc: donde meteremos los archivos achievement_small.sub y achievement_small.dds
    -Uiscript: aqui meteremos el archivo achievementboard.py y warteschleife.py
     
    2.1.2 - Manos a la obra, a implementar!
     
     
    2.1.2.1: Primero empezaremos con el root. Decompilad vuestro root, abrid el archivo game.py y buscad esto:
     

    def __ServerCommand_Build(self): Una vez esteis ahi, vais hasta donde pone "CloseSafeBox" y cuando esteis en esa linea le dais a a enter y pegais esto:
     

    # Achievement System START "achievement" : self.__AchievementTest, "achievementpoints" : self.__ShowAchievementPoints, # Achievement System END Quedandoos asi:
     

     
    (Las -------------------- las pongo solo para que distingais la parte que acabamos de añadir, no hay que ponerlas)
     
    Ahora vais al final del archivo, le dais a enter para dejar algo de espacio y pegais esto:
     

    # Achievement System START def __ShowAchievementPoints(self, points): import uiAchievement import uiTaskbar self.uiAchievement = uiAchievement.AchievementDialog() uiAchievement.AchievementPoints = int(points) def __AchievementTest(self, archivement): import uiAchievement self.uiAchievement = uiAchievement.AchievementDialog() self.uiAchievement.Show(1, str(archivement)) self.uiAchievement.SetTop() # Achievement System END Quedará asi:
     

     
     
    *Siguiente paso: metemos en la carpeta root el archivo uiachievement.py y lo añadimos al xml
     

    <File archivedPath="uiachievement.py" type="2"><![CDATA[Sourceuiachievement.py]]></File> Listo el root! Sigamos con el etc.
     
    2.1.2.2: Decompilamos nuestro etc, vamos a la carpeta ymir work/ui y metemos el achievement_small.dds. Despues vamos a la carpeta ymir work/ui/public y metemos el achievement_small.sub. Por ultimo agregamos ambos al xml:
     

    <File archivedPath="d:/ymir work/ui/public/achievement_small.sub" type="0"><![CDATA[Sourceymir workuipublicachievement_small.sub]]></File> <File archivedPath="d:/ymir work/ui/achievement_small.dds" type="0"><![CDATA[Sourceymir workuiachievement_small.dds]]></File> 2.1.2.3: El ultimo paso en el cliente es decompilar nuestro uiscript y meter el archivo achievementboard.py y el warteschleife.py: en la carpeta. Los añadimos al xml y compilamos:
     

    <File archivedPath="uiscript/achievementboard.py" type="2"><![CDATA[Sourceuiscriptachievementboard.py]]></File> <File archivedPath="uiscript/warteschleife.py" type="2"><![CDATA[Sourceuiscriptwarteschleife.py]]></File> Y listo ya tenemos todo lo del cliente
     
     
    2.1: Parte del server:
     
    Bueno ahora ya solo nos queda meter nuestra quest del sistema de logros en la carpeta /home/game/quest (o la ruta en la que tengais la carpeta quest). Aqui os dejo la mia, con los nombres en español, algunos logros añadidos, canje, un item que te da logros (pa quien lo quiera xd), una opcion que te dice tus logros, etc
     

    quest logros_keko begin state start begin --LOGIN when login begin local actual_achievement_points = pc.getqf("achievement_points") if pc.getqf("firstlogin") != 1 then local Reward = 1 pc.setqf("firstlogin", 1) pc.setqf("achievement_points", actual_achievement_points + Reward) cmdchat("achievement Primer_login%".. actual_achievement_points + Reward .."") else cmdchat("achievementpoints ".. pc.getqf("achievement_points")) end end --BOSSE when 691.kill begin local Reward = 2 local Achievement = "Jefe_Orco" local killcount = pc.getqf("691") local actual_achievement_points = pc.getqf("achievement_points") pc.setqf("691", killcount + 1) pc.setqf("achievement_points", actual_achievement_points + Reward) cmdchat("achievement ".. Achievement .."_derrotado#".. killcount + 1 .."%".. actual_achievement_points + Reward .."") end when 791.kill begin local Reward = 3 local Achievement = "Lider_esoterico" local killcount = pc.getqf("791") local actual_achievement_points = pc.getqf("achievement_points") pc.setqf("791", killcount + 1) pc.setqf("achievement_points", actual_achievement_points + Reward) cmdchat("achievement ".. Achievement .."_derrotado#".. killcount + 1 .."%".. actual_achievement_points + Reward .."") end when 2493.kill begin local Reward = 100 local Achievement = "Dragon_azul" local killcount = pc.getqf("2493") local actual_achievement_points = pc.getqf("achievement_points") pc.setqf("2493", killcount + 1) pc.setqf("achievement_points", actual_achievement_points + Reward) cmdchat("achievement ".. Achievement .."_derrotado#".. killcount + 1 .."%".. actual_achievement_points + Reward .."") end when 2492.kill begin local Reward = 20 local Achievement = "Comandante_Setaou" local killcount = pc.getqf("2492") local actual_achievement_points = pc.getqf("achievement_points") pc.setqf("2492", killcount + 1) pc.setqf("achievement_points", actual_achievement_points + Reward) cmdchat("achievement ".. Achievement .."_derrotado#".. killcount + 1 .."%".. actual_achievement_points + Reward .."") end when 1091.kill begin local Reward = 5 local Achievement = "Rey_demonio" local killcount = pc.getqf("1091") local actual_achievement_points = pc.getqf("achievement_points") pc.setqf("1091", killcount + 1) pc.setqf("achievement_points", actual_achievement_points + Reward) cmdchat("achievement ".. Achievement .."_derrotado#".. killcount + 1 .."%".. actual_achievement_points + Reward .."") end when 2597.kill begin local Reward = 20 local Achievement = "Muerte" local killcount = pc.getqf("2597") local actual_achievement_points = pc.getqf("achievement_points") pc.setqf("2597", killcount + 1) pc.setqf("achievement_points", actual_achievement_points + Reward) cmdchat("achievement ".. Achievement .."_derrotado#".. killcount + 1 .."%".. actual_achievement_points + Reward .."") end when 1192.kill begin local Reward = 12 local Achievement = "Bruja_de_hielo" local killcount = pc.getqf("1192") local actual_achievement_points = pc.getqf("achievement_points") pc.setqf("1192", killcount + 1) pc.setqf("achievement_points", actual_achievement_points + Reward) cmdchat("achievement ".. Achievement .."_derrotado#".. killcount + 1 .."%".. actual_achievement_points + Reward .."") end when 1304.kill begin local Reward = 5 local Achievement = "Tigre_fantasma" local killcount = pc.getqf("1304") local actual_achievement_points = pc.getqf("achievement_points") pc.setqf("1304", killcount + 1) pc.setqf("achievement_points", actual_achievement_points + Reward) cmdchat("achievement ".. Achievement .."_derrotado#".. killcount + 1 .."%".. actual_achievement_points + Reward .."") end when 1901.kill begin local Reward = 4 local Achievement = "9_colas" local killcount = pc.getqf("1901") local actual_achievement_points = pc.getqf("achievement_points") pc.setqf("1901", killcount + 1) pc.setqf("achievement_points", actual_achievement_points + Reward) cmdchat("achievement ".. Achievement .."_derrotado#".. killcount + 1 .."%".. actual_achievement_points + Reward .."") end when 2091.kill begin local Reward = 3 local Achievement = "Reina_araña" local killcount = pc.getqf("2091") local actual_achievement_points = pc.getqf("achievement_points") pc.setqf("2091", killcount + 1) pc.setqf("achievement_points", actual_achievement_points + Reward) cmdchat("achievement ".. Achievement .."_derrotado#".. killcount + 1 .."%".. actual_achievement_points + Reward .."") end when 2206.kill begin local Reward = 4 local Achievement = "Jefe_logros" local killcount = pc.getqf("2206") local actual_achievement_points = pc.getqf("achievement_points") pc.setqf("2206", killcount + 1) pc.setqf("achievement_points", actual_achievement_points + Reward) cmdchat("achievement ".. Achievement .."_derrotado#".. killcount + 1 .."%".. actual_achievement_points + Reward .."") end when 2191.kill begin local Reward = 5 local Achievement = "Tortuga_del_desierto" local killcount = pc.getqf("2191") local actual_achievement_points = pc.getqf("achievement_points") pc.setqf("2191", killcount + 1) pc.setqf("achievement_points", actual_achievement_points + Reward) cmdchat("achievement ".. Achievement .."_derrotado#".. killcount + 1 .."%".. actual_achievement_points + Reward .."") end when 692.kill begin local Reward = 3 local Achievement = "Orco_elite" local killcount = pc.getqf("692") local actual_achievement_points = pc.getqf("achievement_points") pc.setqf("692", killcount + 1) pc.setqf("achievement_points", actual_achievement_points + Reward) cmdchat("achievement ".. Achievement .."_derrotado#".. killcount + 1 .."%".. actual_achievement_points + Reward .."") end when 693.kill begin local Reward = 5 local Achievement = "Orco_renacido" local killcount = pc.getqf("693") local actual_achievement_points = pc.getqf("achievement_points") pc.setqf("693", killcount + 1) pc.setqf("achievement_points", actual_achievement_points + Reward) cmdchat("achievement ".. Achievement .."_derrotado#".. killcount + 1 .."%".. actual_achievement_points + Reward .."") end --Item shop--- when 50129.use begin say_title ( "Obten puntos logro") local actual_achievement_points = pc . getqf ( "achievement_points" ) local p = select ( "Obten 200 puntos logro" ) if p == 1 then local actual_achievement_points = pc . getqf ( "achievement_points" ) pc . setqf ( "achievement_points" , actual_achievement_points + 200 ) say ( "Enorabuena tienes 200 logros mas" ) say ( "Disfrutalos!" ) item.remove ( "50129", 1 ) end end when 50130.use begin say_title ( "Obten puntos logro") local actual_achievement_points = pc . getqf ( "achievement_points" ) local p = select ( "Obten 100 puntos logro" ) if p == 1 then local actual_achievement_points = pc . getqf ( "achievement_points" ) pc . setqf ( "achievement_points" , actual_achievement_points + 100 ) say ( "Enorabuena tienes 100 logros mas" ) say ( "Disfrutalos!" ) item.remove ( "50130", 1 ) end end when 50131.use begin say_title ( "Obten puntos logro") local actual_achievement_points = pc . getqf ( "achievement_points" ) local p = select ( "Obten 50 puntos logro" ) if p == 1 then local actual_achievement_points = pc . getqf ( "achievement_points" ) pc . setqf ( "achievement_points" , actual_achievement_points + 50 ) say ( "Enorabuena tienes 50 logros mas" ) say ( "Disfrutalos!" ) item.remove ( "50131", 1 ) end end when 50132.use begin say_title ( "Obten puntos logro") local actual_achievement_points = pc . getqf ( "achievement_points" ) local p = select ( "Obten 25 puntos logro" ) if p == 1 then local actual_achievement_points = pc . getqf ( "achievement_points" ) pc . setqf ( "achievement_points" , actual_achievement_points + 25 ) say ( "Enorabuena tienes 25 logros mas" ) say ( "Disfrutalos!" ) item.remove ( "50132", 1 ) end end --CANJES-- when 50115.use begin say_title ( "Canjea tus puntos logro" ) local actual_achievement_points = pc . getqf ( "achievement_points" ) local p = select ( "Caballo armado - 5 puntos" , "Caballo militar - 30 puntos" , "Bonus mediohumanos +20% por 30min - 50 puntos" , "Bonus HP +5000 por 30min - 60 puntos" , "Armadura divina - 400 logros" , "Mascota de ataque - 30 puntos" , "Mas" ) if p == 1 then if pc . getqf ( "achievement_points" ) <= 4 then say ( "Lo siento necesitas mas puntos" ) return end local actual_achievement_points = pc . getqf ( "achievement_points" ) pc . setqf ( "achievement_points" , actual_achievement_points - 5 ) say ( "Has recibido un caballo armado" ) horse . set_level ( "11" ) horse . unsummon ( ) horse . summon ( ) pc . give_item2 ( "50052" , 1 ) return elseif p == 2 then if pc . getqf ( "achievement_points" ) <= 29 then say ( "Lo siento necesitas mas puntos" ) return end local actual_achievement_points = pc . getqf ( "achievement_points" ) pc . setqf ( "achievement_points" , actual_achievement_points - 30 ) say ( "Has recibido un caballo militar" ) horse . set_level ( "21" ) horse . unsummon ( ) horse . summon ( ) pc . give_item2 ( "50053" , 1 ) return elseif p == 3 then if pc . getqf ( "achievement_points" ) <= 49 then say ( "Lo siento necesitas mas puntos" ) return end local actual_achievement_points = pc . getqf ( "achievement_points" ) pc . setqf ( "achievement_points" , actual_achievement_points - 50 ) say ( "Has recibido 20% fuerza contra mediohumanos por 30min" ) affect . add_collect ( apply . ATTBONUS_HUMAN , 20 , 60 * 30 ) return elseif p == 4 then if pc . getqf ( "achievement_points" ) <= 59 then say ( "Lo siento necesitas mas puntos" ) return end local actual_achievement_points = pc . getqf ( "achievement_points" ) pc . setqf ( "achievement_points" , actual_achievement_points - 60 ) say ( "Has recibido 5000hp por 30min" ) affect . add_collect ( apply . MAX_HP , 5000 , 60 * 30 ) return elseif p == 5 then if pc. getqf ( "achievement_points" ) <= 399 then say ( "Lo siento necesitas mas puntos" ) return end local actual_achievement_points = pc . getqf ( "achievement_points" ) pc . setqf ( "achievement_points" , actual_achievement_points - 399 ) local armor = select ( "Armd. divina (G)" , "Armd. divina (N)" , "Armd. divina (S)" , "Armd. divina (C)" ) if armor == 1 then say ( "Has recibido la Armadura divina" ) pc . give_item2 ( "42080" , 1 ) return elseif armor == 2 then say ( "Has recibido la Armadura divina" ) pc . give_item2 ( "44080" , 1 ) return elseif armor == 3 then say ( "Has recibido la Armadura divina" ) pc . give_item2 ( "46080" , 1 ) return elseif armor == 4 then say ( "Has recibido la Armadura divina" ) pc . give_item2 ( "48080" , 1 ) return end elseif p == 6 then if pc . getqf ( "achievement_points" ) <= 29 then say ( "Lo siento necesitas mas puntos" ) return end local actual_achievement_points = pc . getqf ( "achievement_points" ) pc . setqf ( "achievement_points" , actual_achievement_points - 29 ) say ( "Has recibido la mascota de ataque" ) pc . give_item2 ( "30312" , 1 ) return elseif p == 7 then local p2 = select ( "Leon Blanco - 40 puntos" , "Anillo experiencia - 5 puntos" , "Fuerza monstruo +20% 30min - 15 puntos" , "Velocidad movimiento +25% 30min - 10 puntos" , "Mascota de defensa - 25 puntos" , "Cuantos logros tengo?" , "Cerrar" ) if p2 == 1 then if pc . getqf ( "achievement_points" ) <= 39 then say ( "Lo siento necesitas mas puntos" ) return end local actual_achievement_points = pc . getqf ( "achievement_points" ) pc . setqf ( "achievement_points" , actual_achievement_points - 40 ) say ( "Has recibido un leon blanco disfrtualo, no se acaba" ) pc . give_item2 ( "50110" , 1 ) return elseif p2 == 2 then if pc . getqf ( "achievement_points" ) <= 4 then say ( "Lo siento necesitas mas puntos" ) return end local actual_achievement_points = pc . getqf ( "achievement_points" ) pc . setqf ( "achievement_points" , actual_achievement_points - 5 ) say ( "Disfruta de un anillo de experiencia" ) pc . give_item2 ( "71015" , 1 ) return elseif p2 == 3 then if pc . getqf ( "achievement_points" ) <= 14 then say ( "Lo siento necesitas mas puntos" ) return end local actual_achievement_points = pc . getqf ( "achievement_points" ) pc . setqf ( "achievement_points" , actual_achievement_points - 15 ) say ( "Has recibido 20% fuerza monstruo por 30min" ) affect . add_collect ( apply . ATTBONUS_MONSTER , 20 , 60 * 30 ) return elseif p2 == 4 then if pc . getqf ( "achievement_points" ) <= 9 then say ( "Lo siento necesitas mas puntos" ) return end local actual_achievement_points = pc . getqf ( "achievement_points" ) pc . setqf ( "achievement_points" , actual_achievement_points - 10 ) say ( "Has recibido 25% velo.movimiento por 30min" ) affect . add_collect ( apply . MOV_SPEED , 25 , 60 * 30 ) return elseif p2 == 5 then if pc . getqf ( "achievement_points" ) <= 24 then say ( "Lo siento necesitas mas puntos" ) return end local actual_achievement_points = pc . getqf ( "achievement_points" ) pc . setqf ( "achievement_points" , actual_achievement_points - 25 ) say ( "Has recibido la mascota de defensa" ) pc . give_item2 ( "71124" , 1 ) return elseif p2 == 6 then local Reward = 0 local Achievement = "Ver_tus_logros" local killcount = pc.getqf("logros") local actual_achievement_points = pc.getqf("achievement_points") pc.setqf("achievement_points", actual_achievement_points + Reward) cmdchat("achievement ".. Achievement .."_derrotado#".. killcount + 1 .."%".. actual_achievement_points + Reward .."") elseif p2 == 7 then return end end end --METINS when 8013.kill begin local Reward = 8 local Achievement = "Metin_muerte" local killcount = pc.getqf("8013") local actual_achievement_points = pc.getqf("achievement_points") pc.setqf("8013", killcount + 1) pc.setqf("achievement_points", actual_achievement_points + Reward) cmdchat("achievement ".. Achievement .."_destruido#".. killcount + 1 .."%".. actual_achievement_points + Reward .."") end when 8016.kill begin local Reward = 5 local Achievement = "Metin_demonio" local killcount = pc.getqf("8016") local actual_achievement_points = pc.getqf("achievement_points") pc.setqf("8016", killcount + 1) pc.setqf("achievement_points", actual_achievement_points + Reward) cmdchat("achievement ".. Achievement .."_destruido#".. killcount + 1 .."%".. actual_achievement_points + Reward .."") end when 8012.kill begin local Reward = 6 local Achievement = "Metin_caida" local killcount = pc.getqf("8012") local actual_achievement_points = pc.getqf("achievement_points") pc.setqf("8012", killcount + 1) pc.setqf("achievement_points", actual_achievement_points + Reward) cmdchat("achievement ".. Achievement .."_destruido#".. killcount + 1 .."%".. actual_achievement_points + Reward .."") end when 8015.kill begin local Reward = 5 local Achievement = "Metin_dureza" local killcount = pc.getqf("8015") local actual_achievement_points = pc.getqf("achievement_points") pc.setqf("8015", killcount + 1) pc.setqf("achievement_points", actual_achievement_points + Reward) cmdchat("achievement ".. Achievement .."_destruido#".. killcount + 1 .."%".. actual_achievement_points + Reward .."") end when 8026.kill begin local Reward = 2 local Achievement = "Metin_85" local killcount = pc.getqf("8026") local actual_achievement_points = pc.getqf("achievement_points") pc.setqf("8026", killcount + 1) pc.setqf("achievement_points", actual_achievement_points + Reward) cmdchat("achievement ".. Achievement .."_destruido#".. killcount + 1 .."%".. actual_achievement_points + Reward .."") end when 8027.kill begin local Reward = 3 local Achievement = "Metin_90" local killcount = pc.getqf("8027") local actual_achievement_points = pc.getqf("achievement_points") pc.setqf("8027", killcount + 1) pc.setqf("achievement_points", actual_achievement_points + Reward) cmdchat("achievement ".. Achievement .."_destruido#".. killcount + 1 .."%".. actual_achievement_points + Reward .."") end --LEVELS when login or levelup with pc.get_level() >= 15 and pc.getqf("Level15") != 1 begin local Reward = 2 local Achievement = "Level_15" local actual_achievement_points = pc.getqf("achievement_points") pc.setqf("Level15", 1) pc.setqf("achievement_points", actual_achievement_points + Reward) cmdchat("achievement ".. Achievement .."_alcanzado%".. actual_achievement_points + Reward .."") end when login or levelup with pc.get_level() >= 30 and pc.getqf("Level30") != 1 begin local Reward = 2 local Achievement = "Level_30" local actual_achievement_points = pc.getqf("achievement_points") pc.setqf("Level30", 1) pc.setqf("achievement_points", actual_achievement_points + Reward) cmdchat("achievement ".. Achievement .."_alcanzado%".. actual_achievement_points + Reward .."") end when login or levelup with pc.get_level() >= 40 and pc.getqf("Level40") != 1 begin local Reward = 3 local Achievement = "Level_40" local actual_achievement_points = pc.getqf("achievement_points") pc.setqf("Level40", 1) pc.setqf("achievement_points", actual_achievement_points + Reward) cmdchat("achievement ".. Achievement .."_alcanzado%".. actual_achievement_points + Reward .."") end when login or levelup with pc.get_level() >= 50 and pc.getqf("Level50") != 1 begin local Reward = 4 local Achievement = "Level_50" local actual_achievement_points = pc.getqf("achievement_points") pc.setqf("Level50", 1) pc.setqf("achievement_points", actual_achievement_points + Reward) cmdchat("achievement ".. Achievement .."_alcanzado%".. actual_achievement_points + Reward .."") end when login or levelup with pc.get_level() >= 75 and pc.getqf("Level75") != 1 begin local Reward = 5 local Achievement = "Level_75" local actual_achievement_points = pc.getqf("achievement_points") pc.setqf("Level75", 1) pc.setqf("achievement_points", actual_achievement_points + Reward) cmdchat("achievement ".. Achievement .."_alcanzado%".. actual_achievement_points + Reward .."") end when login or levelup with pc.get_level() >= 85 and pc.getqf("Level85") != 1 begin local Reward = 10 local Achievement = "Level_85" local actual_achievement_points = pc.getqf("achievement_points") pc.setqf("Level85", 1) pc.setqf("achievement_points", actual_achievement_points + Reward) cmdchat("achievement ".. Achievement .."_alcanzado%".. actual_achievement_points + Reward .."") end when login or levelup with pc.get_level() >= 90 and pc.getqf("Level90") != 1 begin local Reward = 25 local Achievement = "Level_90" local actual_achievement_points = pc.getqf("achievement_points") pc.setqf("Level90", 1) pc.setqf("achievement_points", actual_achievement_points + Reward) cmdchat("achievement ".. Achievement .."_alcanzado%".. actual_achievement_points + Reward .."") end when login or levelup with pc.get_level() >= 95 and pc.getqf("Level95") != 1 begin local Reward = 50 local Achievement = "Level_95" local actual_achievement_points = pc.getqf("achievement_points") pc.setqf("Level95", 1) pc.setqf("achievement_points", actual_achievement_points + Reward) cmdchat("achievement ".. Achievement .."_alcanzado%".. actual_achievement_points + Reward .."") end when login or levelup with pc.get_level() >= 99 and pc.getqf("Level99") != 1 begin local Reward = 100 local Achievement = "Level_99" local actual_achievement_points = pc.getqf("achievement_points") pc.setqf("Level99", 1) pc.setqf("achievement_points", actual_achievement_points + Reward) cmdchat("achievement ".. Achievement .."_alcanzado%".. actual_achievement_points + Reward .."") end --CHECK EQUIP when login begin loop_timer("check_eq", 10) end when check_eq.timer begin local russi = pc.get_armor() local waffe = pc.get_weapon() local actual_achievement_points = pc.getqf("achievement_points") local Reward = 5 if russi==11299 and pc.getqf("achievement_ssp") != 1 then pc.setqf("achievement_ssp", 1) pc.setqf("achievement_points", actual_achievement_points + Reward) cmdchat("achievement Armadura negra+9%".. actual_achievement_points + Reward .."") elseif russi==11499 and pc.getqf("achievement_swa") != 1 then pc.setqf("achievement_swa", 1) pc.setqf("achievement_points", actual_achievement_points + Reward) cmdchat("achievement Armadura negra+9%".. actual_achievement_points + Reward .."") elseif russi==11699 and pc.getqf("achievement_mpp") != 1 then pc.setqf("achievement_mpp", 1) pc.setqf("achievement_points", actual_achievement_points + Reward) cmdchat("achievement Armadura negra+9%".. actual_achievement_points + Reward .."") elseif russi==11899 and pc.getqf("achievement_sk") != 1 then pc.setqf("achievement_sk", 1) pc.setqf("achievement_points", actual_achievement_points + Reward) cmdchat("achievement Armadura negra+9%".. actual_achievement_points + Reward .."") elseif waffe==189 and pc.getqf("achievement_gifti") != 1 then pc.setqf("achievement_gifti", 1) pc.setqf("achievement_points", actual_achievement_points + Reward) cmdchat("achievement Giftschwert+9%".. actual_achievement_points + Reward .."") elseif waffe==199 and pc.getqf("achievement_lowenschw.") != 1 then pc.setqf("achievement_lowenschw.", 1) pc.setqf("achievement_points", actual_achievement_points + Reward) cmdchat("achievement Löwenschwert+9%".. actual_achievement_points + Reward .."") elseif waffe==5129 and pc.getqf("achievement_orchiglocke") != 1 then pc.setqf("achievement_orchiglocke", 1) pc.setqf("achievement_points", actual_achievement_points + Reward) cmdchat("achievement Orchideenglocke+9%".. actual_achievement_points + Reward .."") elseif waffe==2179 and pc.getqf("achievement_krahenstahl") != 1 then pc.setqf("achievement_krahenstahl", 1) pc.setqf("achievement_points", actual_achievement_points + Reward) cmdchat("achievement Krähenstahlbogen+9%".. actual_achievement_points + Reward .."") elseif waffe==1139 and pc.getqf("achievement_teufelsflugenchak") != 1 then pc.setqf("achievement_teufelsflugenchak", 1) pc.setqf("achievement_points", actual_achievement_points + Reward) cmdchat("achievement Teufelsflügel-Chakram+9%".. actual_achievement_points + Reward .."") elseif waffe==3169 and pc.getqf("achievement_Grolli") != 1 then pc.setqf("achievement_Grolli", 1) pc.setqf("achievement_points", actual_achievement_points + Reward) cmdchat("achievement Grollschwert+9%".. actual_achievement_points + Reward .."") end end end end Y para que no os quedeis simplemente metiendo la quest y ya ta os voi a explicar como funciona:
     
    1 - Lo mas importante de los logros es que cuando alcanzas uno (por ejemplo matar al jefe orco) te suma puntos mediante un pc.setqf:
     

    when 691.kill begin local Reward = 2 pc.setqf("achievement_points", actual_achievement_points + Reward) Como veis ahí al jefe orco (mob de id 691) le asigna los puntos que vale con local Reward = 2 y luego te suma 2 puntos con el pc.setqf("achievement_points", actual_achievement_points + Reward (el reward en este caso seria un +2).
     
    Por lo tanto si quereis añadir otro mob a la lista de logros solo tendreis que hacer lo siguiente:
     

    when idmob.kill begin local Reward = puntos -- Poneis cuantos puntos quereis que os de local Achievement = "Nombre del mob que saldra en el cliente" local killcount = pc.getqf("idmob") -- Se usa para que el juego lleve la cuenta de cuantas veces lo mataste local actual_achievement_points = pc.getqf("achievement_points") -- Calcula cuantos puntos tenes pc.setqf("693", killcount + 1) -- Aqui os suma 1 al numero de ese mob que llevais pc.setqf("achievement_points", actual_achievement_points + Reward) -- aqui te suma tus puntos por matarlo cmdchat("achievement ".. Achievement .."_derrotado#".. killcount + 1 .."%".. actual_achievement_points + Reward .."") -- Con esto te saldra la ventana en el cliente diciendo que lo mataste y cuantos puntos tenes end Ahora os enseñare como hacer los canjes. En mi caso los canjes se hacen mediante un item, pero vosotros podeis hacerlo como querais simplement cambiando el when iditem.use por un when npc.chat."Canje de Logros" o como os apetezca.
     
    Veamos como tengo yo los canjes:
     

    when 50115.use begin say_title ( "Canjea tus puntos logro" ) local actual_achievement_points = pc . getqf ( "achievement_points" ) local p = select ( "Caballo armado - 5 puntos" , "Caballo militar - 30 puntos" , "Bonus mediohumanos +20% por 30min - 50 puntos" , "Bonus HP +5000 por 30min - 60 puntos" , "Armadura divina - 400 logros" , "Mascota de ataque - 30 puntos" , "Mas" ) if p == 1 then if pc . getqf ( "achievement_points" ) <= 4 then say ( "Lo siento necesitas mas puntos" ) return end local actual_achievement_points = pc . getqf ( "achievement_points" ) pc . setqf ( "achievement_points" , actual_achievement_points - 5 ) say ( "Has recibido un caballo armado" ) horse . set_level ( "11" ) horse . unsummon ( ) horse . summon ( ) pc . give_item2 ( "50052" , 1 ) return elseif p == 2 then if pc . getqf ( "achievement_points" ) <= 29 then say ( "Lo siento necesitas mas puntos" ) return end local actual_achievement_points = pc . getqf ( "achievement_points" ) pc . setqf ( "achievement_points" , actual_achievement_points - 30 ) say ( "Has recibido un caballo militar" ) horse . set_level ( "21" ) horse . unsummon ( ) horse . summon ( ) pc . give_item2 ( "50053" , 1 ) return elseif p == 3 then if pc . getqf ( "achievement_points" ) <= 49 then say ( "Lo siento necesitas mas puntos" ) return end local actual_achievement_points = pc . getqf ( "achievement_points" ) pc . setqf ( "achievement_points" , actual_achievement_points - 50 ) say ( "Has recibido 20% fuerza contra mediohumanos por 30min" ) affect . add_collect ( apply . ATTBONUS_HUMAN , 20 , 60 * 30 ) return elseif p == 4 then if pc . getqf ( "achievement_points" ) <= 59 then say ( "Lo siento necesitas mas puntos" ) return end local actual_achievement_points = pc . getqf ( "achievement_points" ) pc . setqf ( "achievement_points" , actual_achievement_points - 60 ) say ( "Has recibido 5000hp por 30min" ) affect . add_collect ( apply . MAX_HP , 5000 , 60 * 30 ) return elseif p == 5 then if pc. getqf ( "achievement_points" ) <= 399 then say ( "Lo siento necesitas mas puntos" ) return end local actual_achievement_points = pc . getqf ( "achievement_points" ) pc . setqf ( "achievement_points" , actual_achievement_points - 399 ) local armor = select ( "Armd. divina (G)" , "Armd. divina (N)" , "Armd. divina (S)" , "Armd. divina (C)" ) if armor == 1 then say ( "Has recibido la Armadura divina" ) pc . give_item2 ( "42080" , 1 ) return elseif armor == 2 then say ( "Has recibido la Armadura divina" ) pc . give_item2 ( "44080" , 1 ) return elseif armor == 3 then say ( "Has recibido la Armadura divina" ) pc . give_item2 ( "46080" , 1 ) return elseif armor == 4 then say ( "Has recibido la Armadura divina" ) pc . give_item2 ( "48080" , 1 ) return end elseif p == 6 then if pc . getqf ( "achievement_points" ) <= 29 then say ( "Lo siento necesitas mas puntos" ) return end local actual_achievement_points = pc . getqf ( "achievement_points" ) pc . setqf ( "achievement_points" , actual_achievement_points - 29 ) say ( "Has recibido la mascota de ataque" ) pc . give_item2 ( "30312" , 1 ) return elseif p == 7 then local p2 = select ( "Leon Blanco - 40 puntos" , "Anillo experiencia - 5 puntos" , "Fuerza monstruo +20% 30min - 15 puntos" , "Velocidad movimiento +25% 30min - 10 puntos" , "Mascota de defensa - 25 puntos" , "Cuantos logros tengo?" , "Cerrar" ) if p2 == 1 then if pc . getqf ( "achievement_points" ) <= 39 then say ( "Lo siento necesitas mas puntos" ) return end local actual_achievement_points = pc . getqf ( "achievement_points" ) pc . setqf ( "achievement_points" , actual_achievement_points - 40 ) say ( "Has recibido un leon blanco disfrtualo, no se acaba" ) pc . give_item2 ( "50110" , 1 ) return elseif p2 == 2 then if pc . getqf ( "achievement_points" ) <= 4 then say ( "Lo siento necesitas mas puntos" ) return end local actual_achievement_points = pc . getqf ( "achievement_points" ) pc . setqf ( "achievement_points" , actual_achievement_points - 5 ) say ( "Disfruta de un anillo de experiencia" ) pc . give_item2 ( "71015" , 1 ) return elseif p2 == 3 then if pc . getqf ( "achievement_points" ) <= 14 then say ( "Lo siento necesitas mas puntos" ) return end local actual_achievement_points = pc . getqf ( "achievement_points" ) pc . setqf ( "achievement_points" , actual_achievement_points - 15 ) say ( "Has recibido 20% fuerza monstruo por 30min" ) affect . add_collect ( apply . ATTBONUS_MONSTER , 20 , 60 * 30 ) return elseif p2 == 4 then if pc . getqf ( "achievement_points" ) <= 9 then say ( "Lo siento necesitas mas puntos" ) return end local actual_achievement_points = pc . getqf ( "achievement_points" ) pc . setqf ( "achievement_points" , actual_achievement_points - 10 ) say ( "Has recibido 25% velo.movimiento por 30min" ) affect . add_collect ( apply . MOV_SPEED , 25 , 60 * 30 ) return elseif p2 == 5 then if pc . getqf ( "achievement_points" ) <= 24 then say ( "Lo siento necesitas mas puntos" ) return end local actual_achievement_points = pc . getqf ( "achievement_points" ) pc . setqf ( "achievement_points" , actual_achievement_points - 25 ) say ( "Has recibido la mascota de defensa" ) pc . give_item2 ( "71124" , 1 ) return elseif p2 == 6 then local Reward = 0 local Achievement = "Ver_tus_logros" local killcount = pc.getqf("logros") local actual_achievement_points = pc.getqf("achievement_points") pc.setqf("achievement_points", actual_achievement_points + Reward) cmdchat("achievement ".. Achievement .."_derrotado#".. killcount + 1 .."%".. actual_achievement_points + Reward .."") elseif p2 == 7 then return end end end *Si os fijais la ultima opcion de la tienda de canjes te permite ver tus logros, para ello le hice un logro que te sume 0 puntos pero que te enseña cuantos tienes:
     

    elseif p2 == 6 then local Reward = 0 local Achievement = "Ver_tus_logros" local killcount = pc.getqf("logros") local actual_achievement_points = pc.getqf("achievement_points") pc.setqf("achievement_points", actual_achievement_points + Reward) cmdchat("achievement ".. Achievement .."_derrotado#".. killcount + 1 .."%".. actual_achievement_points + Reward .."") Asi que si necesitais hacer vuestra opcion de ver logros ahi teneis
     
    Tal como eso son todos los canjes, si quereis hacer vuestros propios canjes os hago aqui un pequeño script de canje para explicaros como seria:
     
     

    when 20095.chat."Canjear mis logros" begin say_title("Canjear mis logros") say("") say("Hola jugador, si tienes logros") say("yo te los puedo cambiar por cositas.") say("") say("Si no tienes intenta conseguir alguno") say("porque merece la pena") say("") say_reward("Quieres canjear tus punots?") local canje = select ("Si" , "No") if canje == 1 then say_title("Canjes de logros") say("") say("Elige lo que quieras") local elegir = select ("Quinto bonus - 3 logros" , "Añadir 6-7 bonus - 4 logros" , "Cambiar 6-7 bonus - 5 logros" , "Caballo armado - 6 logros" , "Caballo militar - 8 logros" , "Cerrar") if elegir == 1 then if pc . getqf ( "achievement_points" ) <= 2 then chat( "Lo siento necesitas mas puntos" ) return end pc.give_item2("70024", 1) local actual_achievement_points = pc . getqf ( "achievement_points" ) pc . setqf ( "achievement_points" , actual_achievement_points - 3 ) return elseif elegir == 2 then if pc . getqf ( "achievement_points" ) <= 3 then chat( "Lo siento necesitas mas puntos" ) return end pc.give_item2("71051", 1) local actual_achievement_points = pc . getqf ( "achievement_points" ) pc . setqf ( "achievement_points" , actual_achievement_points - 4 ) return elseif elegir == 3 then if pc . getqf ( "achievement_points" ) <= 4 then say ( "Lo siento necesitas mas puntos" ) return end pc.give_item2("71052", 1) local actual_achievement_points = pc . getqf ( "achievement_points" ) pc . setqf ( "achievement_points" , actual_achievement_points - 5 ) return elseif elegir == 4 then if pc . getqf ( "achievement_points" ) <= 5 then chat( "Lo siento necesitas mas puntos" ) return end local actual_achievement_points = pc . getqf ( "achievement_points" ) pc . setqf ( "achievement_points" , actual_achievement_points - 6 ) chat ( "Has recibido un caballo armado" ) horse . set_level ( "11" ) horse . unsummon ( ) horse . summon ( ) pc . give_item2 ( "50052" , 1 ) return elseif elegir == 5 then elseif p == 2 then if pc . getqf ( "achievement_points" ) <= 7 then say ( "Lo siento necesitas mas puntos" ) return end local actual_achievement_points = pc . getqf ( "achievement_points" ) pc . setqf ( "achievement_points" , actual_achievement_points - 8 ) chat( "Has recibido un caballo militar" ) horse . set_level ( "21" ) horse . unsummon ( ) horse . summon ( ) pc . give_item2 ( "50053" , 1 ) return elseif elegir == 6 then return end elseif canje == 2 then return end end Este script es un pequeño regalo para vosotros, lo hice ahora para que podais usar otro si no quereis el que tenia en el extasis.
     
    *Para meterla en vuestra quest podeis quitar mi tienda de canjes y pegar esta si quereis, o hacerla como quest separada.
     
    Por ultimo os explicare como funcionan los canjes con un ejemplo:
     

    local p = select ( "Caballo armado - 5 logros") if p == 1 then if pc . getqf ( "achievement_points" ) <= 4 then say ( "Lo siento necesitas mas puntos" ) return end local actual_achievement_points = pc . getqf ( "achievement_points" ) pc . setqf ( "achievement_points" , actual_achievement_points - 5 ) say ( "Has recibido un caballo armado" ) horse . set_level ( "11" ) horse . unsummon ( ) horse . summon ( ) pc . give_item2 ( "50052" , 1 ) return Empieza con un local = select para que escojais vuestro premio y os aconsejo que pongais ahi cuantos logros cuesta como hice yo.
     
    Luego puse una restriccion para que si teneis menos puntos que los que pide el item no os deje comprarlo:
     

    if pc . getqf ( "achievement_points" ) <= 2 then chat( "Lo siento necesitas mas puntos" ) return end Funciona de la siguiente manera: donde pone <= 2 teneis que poner un punto menos que los que pide, ya que eso dice que si tienes esos puntos o menos no te deje comprar.
     
    Despues del return end ya solo teneis que poner el comando para que os quite los puntos que es este:
     

    local actual_achievement_points = pc . getqf ( "achievement_points" ) pc . setqf ( "achievement_points" , actual_achievement_points - 5 ) --Poneis ahi los que quereis que quite Y lo que quereis que os dea justo debajo de esas dos lineas:
     

    pc.give_item2("71052", 1) --- Ahi poned lo que quereis que dea Y eso es todo zoneros, que disfruteis del sistema de logros !!!
     
    Creditos: al creador del sistema (que no es mio xd) y a mi por la parte de la quest mia y la traduccion de la original.
  16. Me Gusta
    Predator77 reacted to KeKo in [FIX] Armors set 3 Baso (Guerre-Sura)   
    Hola a todos, hace tiempo implemente las armors de mi coleguin baso (sus 3 sets que le robaron del millenium-world) y me di cuenta de que la cara del guerrero y del sura no se veían, y aunque sé que muchos se dieron cuenta de por que y lo arreglaron aquí os dejo adjuntos los 2 archivos que hacen falta para que se vean por si no lo teneis arreglado
     
    Ya les hice una foto
     

    Debes iniciar sesión para ver el contenido del enlace en esta publicación.  
    Y las lineas del xml de los 2 archivos de la textura de la cara:
     

    <File archivedPath="d:/ymir work/pc/warrior/warrior_face.jpg" type="0"><![CDATA[pc_descompiladoymir workpcwarriorwarrior_face.jpg]]></File> <File archivedPath="d:/ymir work/pc/sura/sura_face.jpg" type="0"><![CDATA[pc_descompiladoymir workpcsurasura_face.jpg]]></File> Eso es todo un saludo :wiii:

    Debes iniciar sesión para ver el contenido del enlace en esta publicación.
  17. Me Gusta
    Predator77 reacted to Joakin47 in [TIP]Reloads   
    Bueno, esto es bastante básico, pero me he encontrado con mucha gente que aún no lo sabía, pues he decidido hacer este post explicando para que sirve cada "reload" y hacer menos reboots
    Bueno empecemos,
     
    Reload P
    Este reload sirve para recargar las tablas item_protom mob_proto y algunas tablas más de la db player.
    Puede ser utilizado para meter un nuevo mob o item sin la necesidad de rebootar.
     
    Reload Q
    Recarga la carpeta quest y object del FTP.
    Puede ser usado para meter una nueva quest o nueva nueva NPC sin la necesidad de rebootar.
     
    Reload A
    Recarga la tabla gmlist de la db common.
    Puede ser usado para poner un nuevo GM sin tener que rebootar.
     
    Reload U
    Recarga la tabla player de la db player.
    Puede ser útil para editar el nombre de un PJ o editar a un PJ.
     
    Reload F
    Recarga la tabla fish_proto de la db player.
    Puede ser útil para editar que se pueda pescar algún item sin necesidad de rebootar.
     
    Reload S
    Recarga big5_string y eng_string del FTP.
    Puede ser útil para editar diálogos de las NPC sin necesidad de rebootar.
     
    Bueno, espero que les haya sido de ayuda la guía y les ahorre tiempo, que no hay de sobra.
    ¡Saludes!
  18. Me Gusta
    Predator77 reacted to Serex in [Release]Cliente Metin2 Extasis + Descompilador   
    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:
     

    Debes iniciar sesión para ver el contenido del enlace en esta publicación.
    Debes iniciar sesión para ver el contenido del enlace en esta publicación.
    Debes iniciar sesión para ver el contenido del enlace en esta publicación.
    Debes iniciar sesión para ver el contenido del enlace en esta publicación.
    Debes iniciar sesión para ver el contenido del enlace en esta publicación.
    Debes iniciar sesión para ver el contenido del enlace en esta publicación.
    Debes iniciar sesión para ver el contenido del enlace en esta publicación.  
    -Nuevos sellos para las monturas:
     

     
    -Nuevas monturas implementadas y atacan:
     

    http-~~-//www.youtube.com/watch?v=24-_YoXcLq4&feature=player_embedded
     
    -Nuevas mascotas implementadas:
     

    Debes iniciar sesión para ver el contenido del enlace en esta publicación.
    Debes iniciar sesión para ver el contenido del enlace en esta publicación.
    Debes iniciar sesión para ver el contenido del enlace en esta publicación.
    Debes iniciar sesión para ver el contenido del enlace en esta publicación.
    Debes iniciar sesión para ver el contenido del enlace en esta publicación.
    Debes iniciar sesión para ver el contenido del enlace en esta publicación.  
    -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?
     
     

    Debes iniciar sesión para ver el contenido del enlace en esta publicación.
    Debes iniciar sesión para ver el contenido del enlace en esta publicación.  
    La contraseña de los .rar es: www.Metin2Zone.net
  19. Me Gusta
    Predator77 reacted to ElRaulxX in Nuevo questlib 2012 aun en test   
    Esto no es un questlib, son nuevas funciones totalmente a parte de las funciones del questlib.
    Deberías haber dejado el archivo lua.
    Para implementarlo, hay que añadir el nuevo archivo lua (el original se llama questing.lua) y añadir la siguiente línea al questlib:

    dofile("locale/germany/quest/questing.lua")
  20. Me Gusta
    Predator77 reacted to ElRaulxX in Nuevo Mapa by ChaoSS   
    Esto es un object (o como queráis llamarlo), es decir, un modelo gr2 para colocar en un mapa.
    Con solo esto ni mucho menos vais a hacer un mapa. Primero debéis crear el "mapa" en si y colocar el object en él.
     
    Y ahora mi pregunta es, si no sabéis lo que es o no estáis seguros, ¿porque lo posteais?...
     
    ¿Nos hemos olvidado de esto?:
  21. Me Gusta
    Predator77 reacted to Serex in Nuevas Armas Para Metin2Zone   
    Este tema lo califico como copy-paste, un simple link 3 imágenes que no son tuyas y la descarga, ¿que añadiste tu?
    Si quieres que el tema siga aquí tienes 2 días para editarlo, puedes añadir alguna información, imagenes propias de las armas en el juego, puedes agregar los iconos de las armas que a la gente le gustaria tenerlos, puedes meterlas en un epk, puedes agrtegar las querys, etc.
    Lo dicho, tienes 48h antes de que enviemos el post a la papelera.
  22. Me Gusta
    Predator77 got a reaction from ElRaulxX in [QUEST] Auto-Rates   
    Muy Buena ! Tus aportes han sido buenos y seguiran siendolos porque son cosas exclusivas. PD: No me extrañaria que apareciera en UJ esta quest pfff xD...
  23. Me Gusta
    Predator77 got a reaction from Joakin47 in [PROYECTO] Video de los viejos tiempos   
    Tienes razón Joakin tiempos esos cuando tenias el server FULL CHINO y tu feliz con tu Gran Server haha
×
×
  • Crear nuevo...