ChuchoGamer Publicado 4 de Agosto del 2021 Reportar Compartir Publicado 4 de Agosto del 2021 Buenas quiero pedirles se me pueden corregir esta quest ya que mata 5 mobs distintos y quiero que cuando mate 5 mobs distintos de una Recompensa quest hola begin state start begin when 9010.chat."Mata xd" begin say_title("Mata") say("5 Perros") say("5 de otra cosa") say("5 de otra cosa") say("5 de otra cosa") say("5 de otra cosa") pc.setqf("estadoms",1) end when 101. kill with pc.getqf("estadoms") == 1 begin if pc.getqf("contador1") < 5 then chat("Has matado a 5 perros") else pc.setqf("contador1",pc.getqf("contador1")+1) end end when 102. kill with pc.getqf("estadoms") == 1 begin if pc.getqf("contador2") < 5 then chat("Has matado a 5 otro") else pc.setqf("contador2",pc.getqf("contador2")+1) end end when 103. kill with pc.getqf("estadoms") == 1 begin if pc.getqf("contador3") < 5 then chat("Has matado a 5 otro") else pc.setqf("contador3",pc.getqf("contador3")+1) end end when 104. kill with pc.getqf("estadoms") == 1 begin if pc.getqf("contador4") < 5 then chat("Has matado a 5 otro") else pc.setqf("contador4",pc.getqf("contador4")+1) end end when 105. kill with pc.getqf("estadoms") == 1 begin if pc.getqf("contador5") < 5 then chat("Has matado a 5 otro") else pc.setqf("contador5",pc.getqf("contador5")+1) end end end end Citar Enlace para comentar Compartir en otros sitios Mas opciones de compartir...
caanmasu Publicado 4 de Agosto del 2021 Reportar Compartir Publicado 4 de Agosto del 2021 hace 5 horas, ChuchoGamer dijo: Buenas quiero pedirles se me pueden corregir esta quest ya que mata 5 mobs distintos y quiero que cuando mate 5 mobs distintos de una Recompensa quest hola begin state start begin when 9010.chat."Mata xd" begin say_title("Mata") say("5 Perros") say("5 de otra cosa") say("5 de otra cosa") say("5 de otra cosa") say("5 de otra cosa") pc.setqf("estadoms",1) end when 101. kill with pc.getqf("estadoms") == 1 begin if pc.getqf("contador1") < 5 then chat("Has matado a 5 perros") else pc.setqf("contador1",pc.getqf("contador1")+1) end end when 102. kill with pc.getqf("estadoms") == 1 begin if pc.getqf("contador2") < 5 then chat("Has matado a 5 otro") else pc.setqf("contador2",pc.getqf("contador2")+1) end end when 103. kill with pc.getqf("estadoms") == 1 begin if pc.getqf("contador3") < 5 then chat("Has matado a 5 otro") else pc.setqf("contador3",pc.getqf("contador3")+1) end end when 104. kill with pc.getqf("estadoms") == 1 begin if pc.getqf("contador4") < 5 then chat("Has matado a 5 otro") else pc.setqf("contador4",pc.getqf("contador4")+1) end end when 105. kill with pc.getqf("estadoms") == 1 begin if pc.getqf("contador5") < 5 then chat("Has matado a 5 otro") else pc.setqf("contador5",pc.getqf("contador5")+1) end end end end quest five_kills begin state start begin function info() return { [101] = 5, [102] = 5, [103] = 5, [104] = 5, [105] = 5 } end when 9010.chat."Mata xd" begin local s = five_kills.info() say_title(mob_name(npc.get_race())) say("Debes matar los monstruos que te indicaré ") say("cuando aceptes la misión") say_reward("Aceptar misión?") if select("Aceptar", "Cerrar") == 1 then for k, v in pairs(s) do pc.setqf(string.format("fk_%s", k), v) end set_state(state1) end end end state state1 begin when 9010.chat."Mata xd" begin local s = five_kills.info() say_title(mob_name(npc.get_race())) say("Todavía te quedan por matar:") for k, v in pairs(s) do say(string.format("%s %s", pc.getqf(string.format("fk_%s", k)), mob_name(k))) end end when kill begin if five_kills.info()[npc.get_race()] != nil then pc.setqf(string.format("fk_%s", npc.get_race()), pc.getqf(string.format("fk_%s", npc.get_race())-1)) if five_kills.allKillDone() then chat("Acabaste la misión con éxito") set_state(state2) end end end end function allKillDone() local s = five_kills.info() for k, v in pairs(s) do if pc.getqf(string.format("fk_%s", k)) > 0 then return false end end return true end function clearQuest() local s = five_kills.info() for k, v in pairs(s) do pc.delqf(string.format("fk_%s", k)) end end state state2 begin when 9010.chat."Mata xd" begin say_title(mob_name(npc.get_race())) say("Recompensas:") say_reward("Recibes bablabla") five_kills.clearQuest() set_state(__COMPLETE__) end end state __COMPLETE__ begin end end Esta la hice en un rato, no la testeé Fíjate que la quest es tipo misión, es más cómodo usar states. Si el pj está en un state, solo reconoce los when de ese mismo state. Así que no es necesario poner pc.getqf() de valor 1 o 0 para validar si el personaje tiene la misión activa, por ejemplo. De igual manera cuando se termina la misión se envía a un state vacío y listo. Al ser varios monstruos ya constituye una pequeña estructura de datos, a menos que uses programación estática. Sé que cada monstruo pide 5 de cantidad pero lo hice para que pudieras elegir cierta cada cantidad en cada uno. Utilizo la estructura como [clave] = valor, para que no tenga que recorrer la lista todas la veces sino que vaya directo a la posición que se pide. Esto mejora el rendimiento. Una vez aceptada la misión, se almacena un qf para cada monstruo donde el valor del qf es el número que hay que matar. Luego cada vez que mate uno, disminuye en 1 ese qf. Cada vez que hace un kill a un monstruo objetivo, verifica si todos los qf están en 0 para enviar al state de recompensas. En el state de recompensas limpio los qf para optimizar espacio en la db. Viste el for k, v in pairs(tabla) do ? eso es un ciclo que recorre las posiciones de la lista que no son nulas. Para la lista de five_kills.info(): La "k" es 101, 102, 103, 104, 105... La v es 5, 5, 5, 5, 5... Así se recorre un ciclo con [clave] = valor. El string.format es para que no hagas esto: say("Hola "..variable1.." blabla "..variable2.." asdasd "..variable3) sino que hagas esto say(string.format("Hola %s blabla %s asdasd %s", variable1, variable2, variable3)) Es mucho más fácil de ver y programar No creo que funcione la quest si la llegas a compilar y ya. Hay que testearla. renssis y Break reacciono a esto 1 1 Citar Enlace para comentar Compartir en otros sitios Mas opciones de compartir...
Mensajes recomendados
Unirse a la conversación
Puedes publicar ahora y registrarte más tarde. Si tienes una cuenta, regístrate para publicar con su cuenta.