dexolus 12 Posted December 17, 2021 Share Posted December 17, 2021 (edited) Hello, i downloaded dungeon. Transalated and do everything i mostly wanted. But i dont know how can i set only one person can go the dungeon. Now u need group more then 2 peoples to enter dungeon. Here the quest file. Hope somebody will help me or explain how to do it. Spoiler quest crystal_dungeon begin state start begin --Functions function settings() return { ["map_index"] = 9, ["spawm_pos"] = { [1] = {21272, 29576}, [2] = {21650, 29689}, [3] = {21232, 30067}, [4] = {21396, 30104}, [5] = {21765, 30187}, }, ["level_check"] = { ["minimum"] = 105, ["maximum"] = 120 }, ["keys"] = {30701, 30702, 30703}, ["metin_stones"] = {8411, 8412, 8413, 8414}, }; end function spawn_boss(level) local boss_settings = { [3] = {948, 741, 191}, [5] = {949, 431, 544}, [7] = {950, 773, 681} }; return d.spawn_mob(boss_settings[level][1], boss_settings[level][2], boss_settings[level][3]) end function spawn_metins_4thfloor() local setting = crystal_dungeon.settings() local r = number (1,8) if r == 1 then d.spawn_mob(setting["metin_stones"][3], 250, 659) d.spawn_mob(setting["metin_stones"][2], 239, 714) d.spawn_mob(setting["metin_stones"][2], 257, 745) d.spawn_mob(setting["metin_stones"][2], 282, 777) d.spawn_mob(setting["metin_stones"][2], 321, 767) d.spawn_mob(setting["metin_stones"][2], 371, 770) d.spawn_mob(setting["metin_stones"][2], 397, 737) d.spawn_mob(setting["metin_stones"][2], 410, 714) elseif r == 2 then d.spawn_mob(setting["metin_stones"][2], 250, 659) d.spawn_mob(setting["metin_stones"][3], 239, 714) d.spawn_mob(setting["metin_stones"][2], 257, 745) d.spawn_mob(setting["metin_stones"][2], 282, 777) d.spawn_mob(setting["metin_stones"][2], 321, 767) d.spawn_mob(setting["metin_stones"][2], 371, 770) d.spawn_mob(setting["metin_stones"][2], 397, 737) d.spawn_mob(setting["metin_stones"][2], 410, 714) elseif r == 3 then d.spawn_mob(setting["metin_stones"][2], 250, 659) d.spawn_mob(setting["metin_stones"][2], 239, 714) d.spawn_mob(setting["metin_stones"][3], 257, 745) d.spawn_mob(setting["metin_stones"][2], 282, 777) d.spawn_mob(setting["metin_stones"][2], 321, 767) d.spawn_mob(setting["metin_stones"][2], 371, 770) d.spawn_mob(setting["metin_stones"][2], 397, 737) d.spawn_mob(setting["metin_stones"][2], 410, 714) elseif r == 4 then d.spawn_mob(setting["metin_stones"][2], 250, 659) d.spawn_mob(setting["metin_stones"][2], 239, 714) d.spawn_mob(setting["metin_stones"][2], 257, 745) d.spawn_mob(setting["metin_stones"][3], 282, 777) d.spawn_mob(setting["metin_stones"][2], 321, 767) d.spawn_mob(setting["metin_stones"][2], 371, 770) d.spawn_mob(setting["metin_stones"][2], 397, 737) d.spawn_mob(setting["metin_stones"][2], 410, 714) elseif r == 5 then d.spawn_mob(setting["metin_stones"][2], 250, 659) d.spawn_mob(setting["metin_stones"][2], 239, 714) d.spawn_mob(setting["metin_stones"][2], 257, 745) d.spawn_mob(setting["metin_stones"][2], 282, 777) d.spawn_mob(setting["metin_stones"][3], 321, 767) d.spawn_mob(setting["metin_stones"][2], 371, 770) d.spawn_mob(setting["metin_stones"][2], 397, 737) d.spawn_mob(setting["metin_stones"][2], 410, 714) elseif r == 6 then d.spawn_mob(setting["metin_stones"][2], 250, 659) d.spawn_mob(setting["metin_stones"][2], 239, 714) d.spawn_mob(setting["metin_stones"][2], 257, 745) d.spawn_mob(setting["metin_stones"][2], 282, 777) d.spawn_mob(setting["metin_stones"][2], 321, 767) d.spawn_mob(setting["metin_stones"][3], 371, 770) d.spawn_mob(setting["metin_stones"][2], 397, 737) d.spawn_mob(setting["metin_stones"][2], 410, 714) elseif r == 7 then d.spawn_mob(setting["metin_stones"][2], 250, 659) d.spawn_mob(setting["metin_stones"][2], 239, 714) d.spawn_mob(setting["metin_stones"][2], 257, 745) d.spawn_mob(setting["metin_stones"][2], 282, 777) d.spawn_mob(setting["metin_stones"][2], 321, 767) d.spawn_mob(setting["metin_stones"][2], 371, 770) d.spawn_mob(setting["metin_stones"][3], 397, 737) d.spawn_mob(setting["metin_stones"][2], 410, 714) elseif r == 8 then d.spawn_mob(setting["metin_stones"][2], 250, 659) d.spawn_mob(setting["metin_stones"][2], 239, 714) d.spawn_mob(setting["metin_stones"][2], 257, 745) d.spawn_mob(setting["metin_stones"][2], 282, 777) d.spawn_mob(setting["metin_stones"][2], 321, 767) d.spawn_mob(setting["metin_stones"][2], 371, 770) d.spawn_mob(setting["metin_stones"][2], 397, 737) d.spawn_mob(setting["metin_stones"][3], 410, 714) end end function make_dungeon() local setting = crystal_dungeon.settings() d.new_jump_party(setting["map_index"], setting["spawm_pos"][1][1], setting["spawm_pos"][1][2]) d.setf("lair_check", 1) d.setf("level_four_login", 0) crystal_dungeon.get_regens(1) end function get_regens(level) local regens = { [1] = "data/dungeon/crystal_dungeon/regen_1.txt", [2] = "data/dungeon/crystal_dungeon/regen_2.txt", [3] = "data/dungeon/crystal_dungeon/regen_3.txt", [4] = "data/dungeon/crystal_dungeon/regen_4a.txt", [5] = "data/dungeon/crystal_dungeon/regen_4b.txt", [6] = "data/dungeon/crystal_dungeon/regen_5.txt", [7] = "data/dungeon/crystal_dungeon/regen_5_metins.txt"}; return d.set_regen_file(regens[level]) end function party_get_member_pids() local pids = {party.get_member_pids()} return pids end ------ ------[Dungeon enter] ------ when 20092.chat." Krystalová jeskyně " begin local settings = crystal_dungeon.settings() say_title(mob_name(9214)) say("") if not party.is_party() then say(" Pro vstup do Krystalové jeskyně musíš být ve skupině. ") say("") return end if not party.is_leader() then say("Pouze vůdce skupiny může spustit Jeskyni Krystalů.") say("") say("") say("") return end if party.get_near_count() < 2 then say(" Pokud chceš vstoupit, ") say(" Tvoje skupina musí mít aspoň 2 členy . ") return end local levelCheck, maximlevelCheck = true, true local notEnoughLevelMembers, notEnoughmaximLevelMembers = {}, {} local pids = {party.get_member_pids()} for i, pid in next, crystal_dungeon.party_get_member_pids(), nil do q.begin_other_pc_block(pid) if pc.get_level() < settings["level_check"]["minimum"] then table.insert(notEnoughLevelMembers, pc.get_name()) levelCheck = false end if pc.get_level() > settings["level_check"]["maximum"] then table.insert(notEnoughmaximLevelMembers, pc.get_name()) maximlevelCheck = false end q.end_other_pc_block() end if not levelCheck then say(" Pokud chcete vstoupit do Jeskyně ") say(" Krystalů, musí každý člen skupiny ") say(string.format(" mít minimálně level %s.", settings["level_check"]["minimum"])) say("") say(" Následující členi nemají požadovaný level :") for i, name in next, notEnoughLevelMembers, nil do say("- "..name) end return end if not maximlevelCheck then say(" Pokud chcete vstoupit do Jeskyně ") say(" Krystalů, musí každý člen skupiny ") say(string.format(" mít minimálně level %s.", settings["level_check"]["maximum"])) say("") say(" Následující členi nemají požadovaný level : ") for i, name in next, notEnoughmaximLevelMembers, nil do say("- "..name.."") end return end say("Budeš teleportován.") say("") wait() crystal_dungeon.make_dungeon() end ---- ----Dungeon start ---- when login begin local get_flag = d.getf("lair_check") local four_login = d.getf("level_four_login") local six_login = d.getf("level_six_login") if get_flag == 2 then say_title(" Druhé patro : ") say("") say(" Zabij všechny příšery, aby ti padla pečeť. ") say(" Přetáhnutím pečetě se portneš do dalšího patra. ") say(" Může ti padnout i falešná pečeť. ") d.setf("crystal_seal", 0) elseif get_flag == 3 then say_title(" Třetí patro : ") say("") say(" Zabijte všechny příšery na tomto patře. ") say(" Jsou to strážci Krystalického dráčka.") say(" Po zabití všech příšer se objeví Krystalický dráček. ") say("") say("") say_title(" Rychle! Máš 10 minut. ") if four_login == 0 then d.setf("level_four_login", 1) d.setf("lair_check", 3) clear_server_timer("level_four_timer", get_server_timer_arg()) clear_server_timer("exit_before", get_server_timer_arg()) server_timer("level_four_timer", 10 * 60, d.get_map_index()) end elseif get_flag == 4 then say_title(" Čtvrté patro : ") say("") say(" Dobrá práce, mnoho hráčů se tak vysoko nedostalo. ") say(" Rychle! Musíš rozbít balvany aby ti padla pečeť. ") say(" Pouze jedna pečeť je ta správná. ") say("") say("") say("") say_title(" Pilíř je na konci tohoto patra. ") say_title("") elseif get_flag == 5 then say_title(" Paté patro : ") say("") say(" Zabij všechny příšery na tomto patře. ") say(" Po zabítí příšer se objeví Krystalický dinosaur ") say(" Zabij Krystalického dinosaura pro postup do dalšího patra. ") say("") say("") say("") say_title(" Hodně štěstí. ") elseif get_flag == 6 then say_title(" Šesté patro: ") say("") say(" Pro vstup do dalšího patra musíš rozbít všechny balvany. ") say("") say("") say_title(" Máš 15 minut na rozbití všech balvanů. ") say_title(" Poté budeš teleportován pryč. ") if six_login == 0 then d.setf("level_six_login", 1) d.setf("lair_check", 6) clear_server_timer("level_six_timer", get_server_timer_arg()) clear_server_timer("exit_before2", get_server_timer_arg()) server_timer("level_six_timer", 15 * 60, d.get_map_index()) end else return end end when kill with npc.get_race() == 940 or npc.get_race() == 941 or npc.get_race() == 942 begin local count, check = d.getf("mobs") + 1, false; local setting = crystal_dungeon.settings() if d.getf("lair_check") == 1 then --83 if count < 83 and check == false then d.setf("mobs", count) else if d.getf("metin_stone") == 0 then d.clear_regen() d.kill_all() d.spawn_mob(setting["metin_stones"][1], 261, 276) d.spawn_mob(setting["metin_stones"][1], 242, 303) d.spawn_mob(setting["metin_stones"][1], 293, 305) d.notice(string.format(" %s spawnut ! ", mob_name(8411))) d.setf("metin_stone", 1) end check = true end end end when kill with npc.get_race() == 8411 and pc.in_dungeon() begin local count, check_metin1 = d.getf("metins") + 1, false; local setting = crystal_dungeon.settings() if d.getf("lair_check") == 1 then if count < 3 and check_metin1 == false then d.setf("metins", count) else if d.getf("metin_stone1") == 0 then d.notice(" Zvládl jsi to. Budeš teleportován!") d.kill_all() d.setf("lair_check", 2) d.setf("metin_stone1", 1) cleartimer("level_timer") timer("level_timer", 7) end check_metin1 = true end end end when 942.kill or 943.kill or 944.kill begin local count, check_2 = d.getf("mobs_2") + 1, false; local setting = crystal_dungeon.settings() if d.getf("lair_check") == 2 then --73 if count < 73 and check_2 == false then d.setf("mobs_2", count) else if d.getf("crystal_seal") == 0 then game.drop_item(setting["keys"][1], 1) d.setf("crystal_seal", 1) end check_2 = true end end end when 9210.take with item.vnum == 30701 and pc.in_dungeon() begin local setting = crystal_dungeon.settings() local n = number (1,2) if n == 1 then d.clear_regen() pc.remove_item(setting["keys"][1], 1) d.notice(" Toto nebyla správna pečeť .") d.notice(" Dropni správnou !") d.spawn_mob(9211, 753, 172) timer("effect_purge", 10) d.setf("mobs_2", 1) crystal_dungeon.get_regens(2) d.setf("crystal_seal", 0) else d.notice(" Toto je správná pečeť. ") d.kill_unique(9210) d.clear_regen() d.kill_all() d.setf("lair_check", 3) pc.remove_item(setting["keys"][1], 1) cleartimer("level_timer") timer("level_timer", 12) end end when 940.kill or 943.kill or 944.kill or 945.kill begin local count, check3 = d.getf("mobs_3") + 1, false; if d.getf("lair_check") == 3 then --105 if count < 105 and check3 == false then d.setf("mobs_3", count) else if d.getf("crystal_boss1") == 0 then d.kill_all() d.clear_regen() d.notice(" Všechny příšery byli poraženy! ") d.notice(" Krystalický dráček se zjeví zachvíly ! ") timer("third_boss", 10) d.setf("third_boss", 1) d.setf("crystal_boss1", 1) end check3 = true end end end when 948.kill begin local setting = crystal_dungeon.settings() if d.getf("lair_check") == 3 then d.clear_regen() d.kill_all() d.setf("lair_check", 4) d.notice(" Krystalický dráček byl zabit! ") d.notice(" Budeš teleportován.") cleartimer("level_four_timer") cleartimer("level_timer") timer("level_timer", 10) else return end end when 8412.kill begin local setting = crystal_dungeon.settings() if d.getf("lair_check") == 4 then game.drop_item(setting["keys"][2],1) end end when 8413.kill begin local setting = crystal_dungeon.settings() if d.getf("lair_check") == 4 then game.drop_item(setting["keys"][3],1) end end when 9212.take with item.vnum == 30702 and pc.in_dungeon() begin local setting = crystal_dungeon.settings() pc.remove_item(setting["keys"][2], 1) d.spawn_mob(9213, 405, 687) timer("wait_eff1", 2) end when 9212.take with item.vnum == 30703 and pc.in_dungeon() begin local setting = crystal_dungeon.settings() pc.remove_item(setting["keys"][3], 1) d.spawn_mob(9213, 405, 687) timer("wait_eff2", 2) end when 944.kill or 945.kill or 946.kill begin local count, check_4 = d.getf("mobs_5") + 1, false; local setting = crystal_dungeon.settings() if d.getf("lair_check") == 5 then --75 if count < 75 and check_4 == false then d.setf("mobs_5", count) else if d.getf("crystal_dino") == 0 then d.clear_regen() d.kill_all() timer("crystal_dino", 10) d.setf("crystal_dino", 1) end check_4 = true end end end when 949.kill with pc.in_dungeon() begin local setting = crystal_dungeon.settings() if d.getf("lair_check") == 5 then d.clear_regen() d.kill_all() d.setf("lair_check", 6) d.notice(" Krystalický dinosaur byl zabit! ") d.notice(" Budeš teleportován do dalšího patra. ") cleartimer("level_timer") timer("level_timer", 10) else return end end when 8414.kill with pc.in_dungeon() begin local count, check_5 = d.getf("metins_6") + 1, false; local setting = crystal_dungeon.settings() if d.getf("lair_check") == 6 then if count < 7 and check_5 == false then d.setf("metins_6", count) else if d.getf("crystal_dragon") == 0 then d.notice(" Všechny balvany byly rozbity! ") d.notice(" Krystalický drak se brzy objeví! ") cleartimer("level_six_timer") cleartimer("level_timer") d.kill_all() d.setf("lair_check", 7) d.setf("crystal_dragon", 1) cleartimer("level_timer") timer("level_timer", 7) end check_5 = true end end end when 950.kill with pc.in_dungeon() begin local setting = crystal_dungeon.settings() if d.getf("lair_check") == 7 then d.clear_regen() d.kill_all() d.notice(" Krystalický drak byl zabit! ") d.notice(" Dobrá práce, úspěšně jste prošli Krystalovou jeskyni! ") d.notice(" Za 3minuty budeš teleportován. ") cleartimer("level_timer") server_timer("final", 3 * 60, d.get_map_index()) else return end end --- --- Dungeon end --- --- --- TIMERS --- when effect_purge.timer begin d.kill_unique(9211) end when third_boss.timer begin local setting = crystal_dungeon.settings() if d.getf("third_boss") == 1 then crystal_dungeon.spawn_boss(3) d.setf("third_boss", 0) else return end end when crystal_dino.timer begin local setting = crystal_dungeon.settings() if d.getf("crystal_dino") == 1 then crystal_dungeon.spawn_boss(5) d.notice(string.format(" %s je tu! Zabij ho! ", mob_name(949))) d.setf("crystal_dino", 0) else return end end when wait_eff1.timer begin d.notice(" Toto nebyla správná pečeť! ") d.notice(" Najdi správnou pečeť. ") end when wait_eff2.timer begin d.notice(" Toto byla správná pečeť! ") d.notice(" Budeš teleportován do dalšího patra. ") d.kill_unique(9212) d.clear_regen() d.kill_all() d.setf("lair_check", 5) cleartimer("level_timer") timer("level_timer", 12) end when level_four_timer.server_timer begin if d.select(get_server_timer_arg()) then d.set_warp_location(41, 9694, 2786) d.notice(" Došel ti čas. ") d.notice(" Budeš teleportován! ") server_timer("exit_before", 10, get_server_timer_arg()) end end when level_six_timer.server_timer begin if d.select(get_server_timer_arg()) then d.set_warp_location(41, 9694, 2786) d.notice(" Došel ti čas! ") d.notice(" Budeš teleportován! ") server_timer("exit_before2", 10, get_server_timer_arg()) end end when final.server_timer begin if d.select(get_server_timer_arg()) then d.set_warp_location(41, 9694, 2786) d.notice(" Uplynuli 3 minuty. Budeš teleportován. ") server_timer("final_warp", 10, get_server_timer_arg()) end end when exit_before.server_timer begin if d.select(get_server_timer_arg()) then clear_server_timer("exit_before", get_server_timer_arg()) clear_server_timer("final", get_server_timer_arg()) clear_server_timer("level_four_timer", get_server_timer_arg()) d.exit_all() end end when exit_before2.server_timer begin if d.select(get_server_timer_arg()) then clear_server_timer("exit_before2", get_server_timer_arg()) clear_server_timer("final", get_server_timer_arg()) clear_server_timer("level_six_timer", get_server_timer_arg()) d.exit_all() end end when final_warp.server_timer begin if d.select(get_server_timer_arg()) then clear_server_timer("final_warp", get_server_timer_arg()) clear_server_timer("final", get_server_timer_arg()) clear_server_timer("final", get_server_timer_arg()) d.exit_all() end end when level_timer.timer begin local get_flag = d.getf("lair_check") local setting = crystal_dungeon.settings() d.clear_regen() d.kill_all() if get_flag == 2 then d.new_jump_party(setting["map_index"], setting["spawm_pos"][2][1], setting["spawm_pos"][2][2]) crystal_dungeon.get_regens(2) d.spawn_mob(9210, 753, 172) d.setf("lair_check", 2) end if get_flag == 3 then d.new_jump_party(setting["map_index"], setting["spawm_pos"][2][1], setting["spawm_pos"][2][2]) crystal_dungeon.get_regens(3) d.setf("lair_check", 3) end if get_flag == 4 then d.new_jump_party(setting["map_index"], setting["spawm_pos"][3][1], setting["spawm_pos"][3][2]) crystal_dungeon.get_regens(4) d.setf("lair_check", 4) crystal_dungeon.spawn_metins_4thfloor() end if get_flag == 5 then d.new_jump_party(setting["map_index"], setting["spawm_pos"][4][1], setting["spawm_pos"][4][2]) crystal_dungeon.get_regens(5) d.setf("lair_check", 5) end if get_flag == 6 then d.new_jump_party(setting["map_index"], setting["spawm_pos"][5][1], setting["spawm_pos"][5][2]) crystal_dungeon.get_regens(6) crystal_dungeon.get_regens(7) d.setf("lair_check", 6) end if get_flag == 7 then crystal_dungeon.spawn_boss(7) d.setf("lair_check", 7) end end end end Thanks for help. Edited December 18, 2021 by dexolus better understand 1 Link to comment Share on other sites More sharing options...
Active Member Volvox 1523 Posted December 19, 2021 Active Member Share Posted December 19, 2021 Try to comment/ delete this Link to comment Share on other sites More sharing options...
dexolus 12 Posted December 19, 2021 Author Share Posted December 19, 2021 When i do that, the npc who is porting me in game. Says you will be teleported but it does not teleport me. Link to comment Share on other sites More sharing options...
Active Member Volvox 1523 Posted December 19, 2021 Active Member Share Posted December 19, 2021 new_jump_party to new_jump Link to comment Share on other sites More sharing options...
dexolus 12 Posted December 19, 2021 Author Share Posted December 19, 2021 If i delete what u send and paste new_jump_party to new_jump its not working. Am i supposed to remove that and then paste new_jump_party to new_jump ? Thank you for helping Im sorry , i understand after a while how u meant it.. Its not working too Link to comment Share on other sites More sharing options...
dexolus 12 Posted December 21, 2021 Author Share Posted December 21, 2021 Hi. I made it working. bcs i rewrite Spoiler function make_dungeon() local setting = crystal_dungeon.settings() d.new_jump_party(setting["map_index"], setting["spawm_pos"][1][1], setting["spawm_pos"][1][2]) d.setf("lair_check", 1) d.setf("level_four_login", 0) crystal_dungeon.get_regens(1) end To function make_dungeon() local setting = crystal_dungeon.settings() d.join(setting["map_index"], setting["spawm_pos"][1][1], setting["spawm_pos"][1][2]) d.setf("lair_check", 1) d.setf("level_four_login", 0) crystal_dungeon.get_regens(1) end But now it ports anyone and does not level check it. So i can enter with level one even i have set it from level 105. Anyone know fix please? Link to comment Share on other sites More sharing options...
Recommended Posts
Please sign in to comment
You will be able to leave a comment after signing in
Sign In Now