M2Kingdoms 110 Posted December 27, 2017 Olá boa noite. Eu já pedi ajuda noutro fórum, no qual o Paci ajudou-me ao dar uma quest simples para criar uma dungeon. Mas porém não é por falta de vontade que não consiga entender a maioria das coisas e o que eu quero é bastante simples: Entrar na dungeon, exemplo: Primeira Ronda -matar 10 javalis Segunda Ronda - Matar 10 Ursos Terceira Ronda - Mata os boss's Queria que a quest, verifica-se: - Se estão aptos para a próxima ronda e começar a outra rodada - Se quando os moobs estão mortos verificar (isto é o menos pq tem este comando: d.kill_all()) - Se quando acabar a dungeon, todos vão para as suas cidades Só queria isso, saber entender um pouco sobre dungeon, há muitas quests que requer uma linguagem muito avançada, para uns é simples, para outros, umas horas assim como o meu caso. Já estou a muitas horas mesmo a tentar, a tirar de outras dungeons, a tentar entender e torna-se muito complicado deixar o projecto em pausa mas como eu sou teimoso gosto de ir até ao fim. Eu odeio pedir ajuda, acreditem nisso, mas se temos uma comunidade, há que ajudar uns aos outros, um dia secalhar tu vais andar a procura da mesma coisa que eu e vais encontrar aqui (caso me ajudarem) A minha Quest: quest dungeon_lynm2 begin state start begin function setting() return { ["MAP_INDEX"] = 355, ["ENTRY_POS"] = {369, 430}, ["FLOORS"] = { {369, 430}, -- 1 {369, 430}, -- 2 -- etc }, ["TASKS"] = { {101, 20}, {101, 20}, -- etc }, -- etc } end function in_dungeon() local dunMapIdx = dungeon_lynm2.setting().MAP_INDEX return pc.get_map_index() >= dunMapIdx * 10000 and pc.get_map_index() < (dunMapIdx + 1) * 10000 end function join() local setting = dungeon_lynm2.setting() if party.is_party() then d.new_jump_party(setting.MAP_INDEX, setting.ENTRY_POS[1], setting.ENTRY_POS[2]) else d.join(setting.MAP_INDEX) end end when 20060.chat."Dungeon" begin say("Entrar?") if select("Y", "N") == 2 then return end dungeon_lynm2.join() end when login with dungeon_lynm2.in_dungeon() begin local setting = dungeon_lynm2.setting() if d.getf("level") == 0 then d.regen_file("data/lynm2/regen_1.txt") d.spawn_mob(101, 359, 441) -- vnum, x, y d.notice("Mata "..setting.TASKS[1][2].." "..mob_name(setting.TASKS[1][1])) d.setf("level", 1) end end when kill with not npc.is_pc() and dungeon_lynm2.in_dungeon() begin local level = d.getf("level") local tasks = dungeon_lynm2.setting().TASKS if npc.get_race() ~= tasks[level][1] then return end local killCount = d.getf("kill_count") + 1 if killCount < tasks[level][2] then d.setf("kill_count", killCount) return end d.notice("Nivel "..level.." completo. 5 segundos para subir.") d.setf("kill_count", 0) server_timer("my_simple_dungeon_jump_timer", 5, d.get_map_index()) end when my_simple_dungeon_jump_timer.server_timer with d.select(get_server_timer_arg()) begin local setting = dungeon_lynm2.setting() local nextLevel = d.getf("level") + 1 local task = setting.TASKS[nextLevel] d.setf("level", nextLevel) d.kill_all() d.clear_regen() d.notice("Mata "..task[2].." "..mob_name(task[1])) d.regen_file("data/lynm2/regen_2.txt") d.spawn_mob(101, 375, 433) -- vnum, x, y d.jump_all(setting.FLOORS[nextLevel][1], setting.FLOORS[nextLevel][2]) d.setf("level", 2) end end end Obrigado!!! Share this post Link to post Share on other sites
Ultra Instict Goku 1 Posted December 27, 2017 6 minutos atrás, LynM2 disse: Olá boa noite. Eu já pedi ajuda noutro fórum, no qual o Paci ajudou-me ao dar uma quest simples para criar uma dungeon. Mas porém não é por falta de vontade que não consiga entender a maioria das coisas e o que eu quero é bastante simples: Entrar na dungeon, exemplo: Primeira Ronda -matar 10 javalis Segunda Ronda - Matar 10 Ursos Terceira Ronda - Mata os boss's Queria que a quest, verifica-se: - Se estão aptos para a próxima ronda e começar a outra rodada - Se quando os moobs estão mortos verificar (isto é o menos pq tem este comando: d.kill_all()) - Se quando acabar a dungeon, todos vão para as suas cidades Só queria isso, saber entender um pouco sobre dungeon, há muitas quests que requer uma linguagem muito avançada, para uns é simples, para outros, umas horas assim como o meu caso. Já estou a muitas horas mesmo a tentar, a tirar de outras dungeons, a tentar entender e torna-se muito complicado deixar o projecto em pausa mas como eu sou teimoso gosto de ir até ao fim. Eu odeio pedir ajuda, acreditem nisso, mas se temos uma comunidade, há que ajudar uns aos outros, um dia secalhar tu vais andar a procura da mesma coisa que eu e vais encontrar aqui (caso me ajudarem) A minha Quest: quest dungeon_lynm2 begin state start begin function setting() return { ["MAP_INDEX"] = 355, ["ENTRY_POS"] = {369, 430}, ["FLOORS"] = { {369, 430}, -- 1 {369, 430}, -- 2 -- etc }, ["TASKS"] = { {101, 20}, {101, 20}, -- etc }, -- etc } end function in_dungeon() local dunMapIdx = dungeon_lynm2.setting().MAP_INDEX return pc.get_map_index() >= dunMapIdx * 10000 and pc.get_map_index() < (dunMapIdx + 1) * 10000 end function join() local setting = dungeon_lynm2.setting() if party.is_party() then d.new_jump_party(setting.MAP_INDEX, setting.ENTRY_POS[1], setting.ENTRY_POS[2]) else d.join(setting.MAP_INDEX) end end when 20060.chat."Dungeon" begin say("Entrar?") if select("Y", "N") == 2 then return end dungeon_lynm2.join() end when login with dungeon_lynm2.in_dungeon() begin local setting = dungeon_lynm2.setting() if d.getf("level") == 0 then d.regen_file("data/lynm2/regen_1.txt") d.spawn_mob(101, 359, 441) -- vnum, x, y d.notice("Mata "..setting.TASKS[1][2].." "..mob_name(setting.TASKS[1][1])) d.setf("level", 1) end end when kill with not npc.is_pc() and dungeon_lynm2.in_dungeon() begin local level = d.getf("level") local tasks = dungeon_lynm2.setting().TASKS if npc.get_race() ~= tasks[level][1] then return end local killCount = d.getf("kill_count") + 1 if killCount < tasks[level][2] then d.setf("kill_count", killCount) return end d.notice("Nivel "..level.." completo. 5 segundos para subir.") d.setf("kill_count", 0) server_timer("my_simple_dungeon_jump_timer", 5, d.get_map_index()) end when my_simple_dungeon_jump_timer.server_timer with d.select(get_server_timer_arg()) begin local setting = dungeon_lynm2.setting() local nextLevel = d.getf("level") + 1 local task = setting.TASKS[nextLevel] d.setf("level", nextLevel) d.kill_all() d.clear_regen() d.notice("Mata "..task[2].." "..mob_name(task[1])) d.regen_file("data/lynm2/regen_2.txt") d.spawn_mob(101, 375, 433) -- vnum, x, y d.jump_all(setting.FLOORS[nextLevel][1], setting.FLOORS[nextLevel][2]) d.setf("level", 2) end end end Obrigado!!! Queres por exemplo 1 piso 10 javalis Outro piso 10 ursos e outro piso Boss ? Share this post Link to post Share on other sites
M2Kingdoms 110 Posted December 27, 2017 Tipo em relação a quantidade de moobs ou o moob em critério não tem problema porque eu conheço bem, o problema é ele da ronda 1, passar para 2, da 2 para a 3 e finalizar e todos serem teleportados daqui a 1 minuto exemplo Share this post Link to post Share on other sites
Ultra Instict Goku 1 Posted December 27, 2017 (edited) 3 minutos atrás, LynM2 disse: Tipo em relação a quantidade de moobs ou o moob em critério não tem problema porque eu conheço bem, o problema é ele da ronda 1, passar para 2, da 2 para a 3 e finalizar e todos serem teleportados daqui a 1 minuto exemplo Oque estas a dizer que queres passar todos os moobs para outras ronda mas teres um boss na ultima certo ? Edited December 27, 2017 by [SA]Power (see edit history) Share this post Link to post Share on other sites
M2Kingdoms 110 Posted December 27, 2017 cada ronda tem moobs diferentes e tal tens que matar os moobs citados para passares pras proximas rondas. Depois de finalizar a dungeon, serem teleportados para a cidade mano Share this post Link to post Share on other sites