fuuton97 Posted October 6, 2013 Report Share Posted October 6, 2013 Hola, estoy de nuevo aquí trayéndoles el segundo capítulo de DUNGEON, y hoy comenzaremos haciendo paso a paso una dungeon sencilla para principiantes, nos profundizaremos en una dungeon muy eficaz, con funciones generales y de su derivado. Si te pasaste el Primer Capítulo te lo dejo aquí: Debes iniciar sesión para ver el contenido del enlace en esta publicación. Bien, primero que nada, debemos saber que dungeon es lenguaje LUA, y por lo tanto vamos a usar sus funciones ya sean de dungeon o no. 1. Comenzamos haciendo lo inicial, que es lo que toda quest debe llevar: quest dungeon_principiante begin state start begin 2. En este paso comenzamos haciendo el cuerpo de la dungeon. Haremos el NPC que nos va a hacer llevar a X mapa para comenzar la dungeon: when 20090.chat."Dungeon Principiante" begin say_title("Dungeon:") say("Hola viajero, hoy te llevaré") say("aun magico lugar donde podrás explorar") say("nuevas tierras") say("") say("Quieres ir?") local dungeon = select("Si" , "No") if dungeon == 1 then pc.warp(6521200, 1231200) elseif dungeon == 2 then return end end Bueno, como ven es un simple NPC que te va a llevar a ese X mapa, para comenzar la dungeon. 3. Ahora iremos con el paso dentro del mapa, para darle el comienzo en sí, en este caso pondré que inicie mediante un mob, osea matando a ese mob. when 101.kill begin Una vez aniquilado el mob 101, será comenzado la dungeon. 4. Paso seguido ponemos el timer, para que los lleve a comenzar en 5 segundos: timer("inicio_dungeon", 5) end Se preguntarán, ¿Qué es un timer?, pues bien timer quiere decir en su significado literal, tiempo, pero este da inicio en tiempo, ejemplo, si queremos ir a otro lugar ponemos timer, más un nombre para darselo y el tiempo, puede ser en segundos, minutos, etc; también el timer se usa para acabar en un evento o algo. Esta fue la manera que trate de explicarles, no se si me entiendan bien xD. 5. En este paso ya comenzaremos con el inicio dentro de la dungeon, comenzaremos con el timer que pusimos anteriormente: when inicio_dungeon.timer begin 6. Aquí en este paso vamos a usar la primera función "d." de dungeon, y será para que nos lleve a X planta: d.new_jump_all(23, 2312, 2122) Explicaré: La función mostrada nos da a ir a todos que se encuentren en ese mapa a esas coordenadas (X y Y), el número 23 que está de primero nos indica el INDEX de ese mapa donde los va a llevar o donde están. 7. El paso séptimo, usaremos nuestra segunda función dungeon, para eso miremos: d.setf("fuuton97", 1) Cómo ven pusimos la función "d.setf", donde nos indica un nombre inicial secuencial denominado "fuuton97", cabe decir que se puede colocar cualquier nombre, pero siempre en todos los d.setf se debe colocar el mismo nombre; el número "1", indica que es el primer d.setf, en otras palabras primera planta en la que comenzamos la dungeon. En este mismo paso colocamos un anunció, para darle ambiente a la dungeon, pero ojo, aquí comenzamos a jugar nuestra imaginación de como haremos divertido esta dungeon. Invocamos al mob con la función "d.spawn_mob". Quedaría así: d.setf("fuuton97", 1) d.spawn_mob(101, 12312, 123123) d.notice("Están en la Primera Planta!!!!") 8. Seguidamente ponemos a disposición el "juego", llamaremos a un mob que nos permitirá ir a la segunda planta. Le hacemos ambiente de diálogo a la dungeon: when 101.kill d.getf("fuuton97") == 1 begin d.notice("Havepis destruido al Perro Salvaje...") d.notice("Avanzarán a la segunda planta.") Cómo ven vemos otra función nueva para ustedes, y es la "d.getf" que es el complemento de "d.setf", en esa hay que colocar el nombre que dimos para todas las plantas, osea fuuton97, en mi caso, pero ustedes pueden colocarle otro nombre; el "1" no hace referencia también como en "d.setf", en otras palabras quiere decir que vamos por la primera planta. 9. Cerramos con un timer que nos va a dirigir a la segunda planta y un end: timer("seguda_dungeon", 5) end Hasta ahora toda la dungeon debe ir así: quest dungeon_principiante begin state start begin when 20090.chat."Dungeon Principiante" begin say_title("Dungeon:") say("Hola viajero, hoy te llevaré") say("aun magico lugar donde podrás explorar") say("nuevas tierras") say("") say("Quieres ir?") local dungeon = select("Si" , "No") if dungeon == 1 then pc.warp(6521200, 1231200) elseif dungeon == 2 then return end end when 101.kill begin timer("inicio_dungeon", 5) end when inicio_dungeon.timer begin d.new_jump_all(23, 2312, 2122) d.setf("fuuton97", 1) d.spawn_mob(102, 12312, 123123) d.notice("Están en la Primera Planta!!!!") d.notice("Encontrar el Perro Salvaje.") end when 102.kill d.getf("fuuton97") == 1 begin d.notice("Havepis destruido al Perro Salvaje...") d.notice("Avanzarán a la segunda planta.") timer("segunda_dungeon", 5) end 10. Iniciamos llamando al timer, y hacemos lo mismo en los pasos anteriores, ambientando con diálogo, haciendo jugadas de kill mob o metines, etc, que vuele su imaginación: when segunda_dungeon.timer begin d.jump_all(312312, 12131) d.setf("fuuton97", 2) d.spawn_mob(8025, 431232, 412421) d.notice("Viajeros estás en la segunda planta") d.notice("Acaba con un metin y avanzarán.") end 11. Ahora llamamos al metin que pusimos y hacemos lo mismo con los pasos anteriores: when segunda_dungeon.timer begin d.jump_all(312312, 12131) d.setf("fuuton97", 2) d.spawn_mob(8025, 431232, 412421) d.notice("Viajeros estás en la segunda planta") d.notice("Acaba con un metin y avanzarán.") end when 8025.kill with d.getf("fuuton97") == 2 begin d.notice("Haveís acabado con un Metin") d.notice("Avanzarán a la tercera planta....") timer("tercera_dungeon", 5) end 12. Acá iniciamos con el timer que dejamos, osea lo llamamos, y en esta tercera planta haremos este jueguito: Pondremos un drop en mob, soltará una llave, al coger la llave damos click derecho y nos llevará a la cuarta y última planta de dungeon. En este paso conoceremos otras funciones que combinaremos con la dungeon, veamos: when tercera_dungeon.timer begin d.jump_all(3123, 123123) d.setf("fuuton97", 3) d.setf("drop_dungeon", 0) d.spawn_mob(103, 312312, 123123) d.spawn_mob(104, 123123, 123123) d.spawn_mob(105, 123123, 123123) d.spawn_mob(103, 312312, 123123) d.spawn_mob(104, 123123, 123123) d.spawn_mob(105, 123123, 123123) d.notice("Encontrar la llave!!!!!!!!!!") end when 103.kill or 104.kill or 105.kill with d.getf("fuuton97") == 3 begin d.setf("drop_dungeon", d.getf("drop_dungeon")+1) if d.getf("drop_dungeon") == 2 game.drop_item(43003, 1) d.setf("drop_dungeon", 0) end end when 43003.use begin item.remove() timer("cuarta_dungeon", 5) end Cómo ven es algo fantástico, el código de esta tercera planta es fácil, igual al de todos, solo invocamos más mob para el drop, utilizamos el game.drop_item para que suelte la llave. 13. Llamamos al timer, y haremos la última planta, que en este caso solo se hizo para 4. Haremos los mismos pasos cómo los demás, solo veremos una función que agregaremos: when cuarta_dungeon.timer begin d.jump_all(12312, 13212) d.setf("fuuton97", 4) d.spawn_mob(108, 12312, 12312) d.notice("Acaba con el Jefe y ganarás la Dungeon") end when 108.kill with d.getf("fuuton97") == 4 begin game.drop_item(289, 1) notice_all("El Jugador ".. pc.get_name() .." ha derrotado al Jefe...") d.notice("Acabaron con el Jefe, felicitaciones...") d.notice("Tienen 10 segundos para recoger su premio..") timer("salir_dungeon", 10) end Bueno como ven pusimos el Jefe, al matarlo suelta un item, que es la recompensa, ponemos un anuncio General para que lo vean todos de quien fue el que mató al Jefe, cerramos con un timer de 10 segundos para recoger el premio, y nos llevará para afuera de la dungeon. 14. Último paso, solo añadiremos el timer que nos llevará fuera de la dungeon, o si quieres llevar a todos a sus citys: when salir_dungeon.timer begin d.exit_all() end end end También podemos usar la otra función: warp_to_all_village(): when salir_dungeon.timer begin warp_to_all_village() end end end Por último cerramos con end del when, otro end del begin de inicio y el segundo begin de inicio, con total de 3 end's. Y para ver como quedó toda la dungeon, pequeña pero atendible para este curso: quest dungeon_principiante begin state start begin when 20090.chat."Dungeon Principiante" begin say_title("Dungeon:") say("Hola viajero, hoy te llevaré") say("aun magico lugar donde podrás explorar") say("nuevas tierras") say("") say("Quieres ir?") local dungeon = select("Si" , "No") if dungeon == 1 then pc.warp(6521200, 1231200) elseif dungeon == 2 then return end end when 101.kill begin timer("inicio_dungeon", 5) end when inicio_dungeon.timer begin d.new_jump_all(23, 2312, 2122) d.setf("fuuton97", 1) d.spawn_mob(102, 12312, 123123) d.notice("Están en la Primera Planta!!!!") d.notice("Encontrar el Perro Salvaje.") end when 102.kill d.getf("fuuton97") == 1 begin d.notice("Havepis destruido al Perro Salvaje...") d.notice("Avanzarán a la segunda planta.") timer("segunda_dungeon", 5) end when segunda_dungeon.timer begin d.jump_all(312312, 12131) d.setf("fuuton97", 2) d.spawn_mob(8025, 431232, 412421) d.notice("Viajeros estás en la segunda planta") d.notice("Acaba con un metin y avanzarán.") end when 8025.kill with d.getf("fuuton97") == 2 begin d.notice("Haveís acabado con un Metin") d.notice("Avanzarán a la tercera planta....") timer("tercera_dungeon", 5) end when tercera_dungeon.timer begin d.jump_all(3123, 123123) d.setf("fuuton97", 3) d.setf("drop_dungeon", 0) d.spawn_mob(103, 312312, 123123) d.spawn_mob(104, 123123, 123123) d.spawn_mob(105, 123123, 123123) d.spawn_mob(103, 312312, 123123) d.spawn_mob(104, 123123, 123123) d.spawn_mob(105, 123123, 123123) d.notice("Encontrar la llave!!!!!!!!!!") end when 103.kill or 104.kill or 105.kill with d.getf("fuuton97") == 3 begin d.setf("drop_dungeon", d.getf("drop_dungeon")+1) if d.getf("drop_dungeon") == 2 game.drop_item(43003, 1) d.setf("drop_dungeon", 0) end end when 43003.use begin item.remove() timer("cuarta_dungeon", 5) end when cuarta_dungeon.timer begin d.jump_all(12312, 13212) d.setf("fuuton97", 4) d.spawn_mob(108, 12312, 12312) d.notice("Acaba con el Jefe y ganarás la Dungeon") end when 108.kill with d.getf("fuuton97") == 4 begin game.drop_item(289, 1) notice_all("El Jugador ".. pc.get_name() .." ha derrotado al Jefe...") d.notice("Acabaron con el Jefe, felicitaciones...") d.notice("Tienen 10 segundos para recoger su premio..") timer("salir_dungeon", 10) end when salir_dungeon.timer begin warp_to_all_village() end end end Espero que valoren mi tiempo, esto solo es una dungeon explicativa para principiantes, solo digo y hago lo básico, luego iremos añadiendo más funciones, condiciones, etc. Aprovecho para decir que se hacen Dungeon's profesionales, con las plantas que quieran, y como quieren que sea, claro no se vallan de la imaginación xD, a tan solo 15 Euros; pueden contáctarme por skype: fuuton97 o enviarme un mensaje por mp al foro. Próximo capítulo: [DUNGEON] Capítulo III - Condiciones y Funciones en Dungeon. Espero que valoren este POST, me tome mi tiempo para ustedes, no desaprovechen esta oportunidad. Saludos. Marcos Pinheiro, sossin and iMixxx 3 Link to comment Share on other sites More sharing options...
PACI Posted October 6, 2013 Report Share Posted October 6, 2013 Para salir de una dungeon supongo que la función será d.exit_all(), y no warp_all_to_village(), que por cierto tienes warp_to_all_village(). XD En los kill tienes d.setf("drop_dungeon") == 2, en vez de get, y en el timer cuarta_dungeon el d.spawn supongo que quieres decir d.spawn_mob Link to comment Share on other sites More sharing options...
fuuton97 Posted October 6, 2013 Author Report Share Posted October 6, 2013 Para salir de una dungeon supongo que la función será d.exit_all(), y no warp_all_to_village(), que por cierto tienes warp_to_all_village(). XD En los kill tienes d.setf("drop_dungeon") == 2, en vez de get, y en el timer cuarta_dungeon el d.spawn supongo que quieres decir d.spawn_mob Madre mía, eso me pasa por no ver antes de publicar xDDDDDDD! Vale gracias. Pero si miras yo puse dos opciones a usuario, no se que te cuesta mirar ¬¬, aparte para mi siempre es mejor llevar a la city. Link to comment Share on other sites More sharing options...
Tiico™ Posted October 6, 2013 Report Share Posted October 6, 2013 En esta parte when 20090.chat."Dungeon Principiante" begin say_title("Dungeon:") say("Hola viajero, hoy te llevaré") say("aun magico lugar donde podrás explorar") say("nuevas tierras") say("") say("Quieres ir?") local dungeon = select("Si" "No") if dungeon == 1 then pc.warp(6521200, 1231200) if dungeon == 2 then return endend Hay 2 errores, uno es el siguiente local dungeon = select("Si" "No") Esto, es así local dungeon = select ("Si", "No") Segundo, esto local dungeon = select("Si", "No") if dungeon == 1 then pc.warp(6521200, 1231200) if dungeon == 2 then return end Está mal, esto es así if dungeon == 1 then pc.warp(6521200, 1231200)elseif dungeon == 2 then returnend Tercero, esto when 103.kill or 104.kill or 105.kill with d.getf("fuuton97") == 3 begin d.setf("drop_dungeon", d.getf("drop_dungeon")+1) if d.detf("drop_dungeon") == 2 game.drop_item(43003, 1) d.setf("drop_dungeon", 0) endend También está mal, debería ser así when 103.kill or 104.kill or 105.kill with d.getf("fuuton97") == 3 begin d.setf("drop_dungeon", d.getf("drop_dungeon") +1) if d.getf("drop_dungeon") == 2 then game.drop_item(43003, 1) d.setf("drop_dungeon", 0) endend Eso es lo que ví, un gran dungeon como tú dices serlo, debe arreglar todo esto y no equivocarse Aprovecho para decir que se hacen Dungeon's profesionales, con las plantas que quieran, y como quieren que sea, claro no se vallan de la imaginación xD, a tan solo 15 Euros No es por nada, pero tienes que ver los errores antes de decir que eres professional en las dungeons. Link to comment Share on other sites More sharing options...
fuuton97 Posted October 6, 2013 Author Report Share Posted October 6, 2013 En esta parte when 20090.chat."Dungeon Principiante" begin say_title("Dungeon:") say("Hola viajero, hoy te llevaré") say("aun magico lugar donde podrás explorar") say("nuevas tierras") say("") say("Quieres ir?") local dungeon = select("Si" "No") if dungeon == 1 then pc.warp(6521200, 1231200) if dungeon == 2 then return endend Hay 2 errores, uno es el siguiente local dungeon = select("Si" "No") Esto, es así local dungeon = select ("Si", "No") Segundo, esto local dungeon = select("Si", "No") if dungeon == 1 then pc.warp(6521200, 1231200) if dungeon == 2 then return end Está mal, esto es así if dungeon == 1 then pc.warp(6521200, 1231200)elseif dungeon == 2 then returnend Tercero, esto when 103.kill or 104.kill or 105.kill with d.getf("fuuton97") == 3 begin d.setf("drop_dungeon", d.getf("drop_dungeon")+1) if d.detf("drop_dungeon") == 2 game.drop_item(43003, 1) d.setf("drop_dungeon", 0) endend También está mal, debería ser así when 103.kill or 104.kill or 105.kill with d.getf("fuuton97") == 3 begin d.setf("drop_dungeon", d.getf("drop_dungeon") +1) if d.getf("drop_dungeon") == 2 then game.drop_item(43003, 1) d.setf("drop_dungeon", 0) endend Eso es lo que ví, un gran dungeon como tú dices serlo, debe arreglar todo esto y no equivocarse Aprovecho para decir que se hacen Dungeon's profesionales, con las plantas que quieran, y como quieren que sea, claro no se vallan de la imaginación xD, a tan solo 15 Euros No es por nada, pero tienes que ver los errores antes de decir que eres professional en las dungeons. Vale, Gracias, como iba a hacer esta guía fui muy rápido y no percibí esos errores, pero gracias por verlos, para eso eres Corrector . Referente a lo que dices, si no supiera dungeon, no fuese posteado 3 dungeon a la sección como regalo, simplemente me equivoqué por ir a prisas, espero que te quede claro. Saludos, Link to comment Share on other sites More sharing options...
Jfirewall Posted October 6, 2013 Report Share Posted October 6, 2013 Con tus guias e aclarado dudas con cosillas gracias por las guias Link to comment Share on other sites More sharing options...
LORDCarlo™ Posted October 6, 2013 Report Share Posted October 6, 2013 Muchas Gracias ^_^ Link to comment Share on other sites More sharing options...
KeKo Posted October 25, 2013 Report Share Posted October 25, 2013 En esta parte when 20090.chat."Dungeon Principiante" begin say_title("Dungeon:") say("Hola viajero, hoy te llevaré") say("aun magico lugar donde podrás explorar") say("nuevas tierras") say("") say("Quieres ir?") local dungeon = select("Si" "No") if dungeon == 1 then pc.warp(6521200, 1231200) if dungeon == 2 then return endend Hay 2 errores, uno es el siguiente local dungeon = select("Si" "No") Esto, es así local dungeon = select ("Si", "No") No es por nada, pero tienes que ver los errores antes de decir que eres professional en las dungeons. Sera el parentesis separado del select porque lo digas tu? Yo siempre lo he escrito junto, no pasa nada. Y os he dicho millones de veces que a un select que cierre el diálogo NO HAY QUE PONERLE NADAAAAAAAA if dungeon == 2 then return end Y la funcion de lo que pasa si le das al 1 y ya esta, te ahorras lineas. Un detalle: d.spawn_mob(103, 312312, 123123)d.spawn_mob(104, 123123, 123123)d.spawn_mob(105, 123123, 123123)d.spawn_mob(103, 312312, 123123)d.spawn_mob(104, 123123, 123123)d.spawn_mob(105, 123123, 123123) No se que haces exactamente ahi, supongo que las cordes seran inventadas pero spameos multiples de mobs esta la estructura: local cordes = {{cordx,cordy},{cordx,cordy},{cordx,cordy}}for i=1, cantidadmobs dod.spawn_mob(idmob,cordes[i][1],cordes[i][2]do (Por si a alguien le sirve) Sobre la guia la verdad es que ni la he leido (me da igual ya no trabajo en metin2) pero es una pena que no la haya hecho yo que precisamente era el que mejor hacia dungeons del foro xd Link to comment Share on other sites More sharing options...
sossin Posted January 26, 2014 Report Share Posted January 26, 2014 me parece demasiado interesante este tutorial, y esperando por la parte 3 gracias sigue asi +1 Link to comment Share on other sites More sharing options...
Recommended Posts