Jump to content
!-->
  • Join-Us

    https://metin2.dev is the 1st international community on Metin2 development. Join us to develop your skills and share your knowledge with the community, respectful and ethical forum.

  • 0

Dungeon - monsters sometimes not spawn


dexolus

Question

Hi i have problem with my dungeons. Sometimes i enter dungeon by npc and there is no monsters. So i spawn npc or go to the town to the npc and enter again and its working.

But does anybody know where is problem? It does not work on more dungeons. I seen it in plechitos dungeons. In my dungeons which i made... Can anybody help me? I can upload the quest later. But i think its correct. When plechitos dungeons make it too.

 

Thank you 🙂

Link to comment
Share on other sites

  • Answers 5
  • Created
  • Last Reply

Top Posters For This Question

Popular Days

5 answers to this question

Recommended Posts

  • 0
  • Distinguished Member

I saw people exclude sometimes the first dungeon map index by accident because of the wrong use of '>', '<', '>=', '<=' opreators when checking the map index in the quest. In that case the first run fails, every other runs will work since the indexes will be higher (+1) every run.

Link to comment
Share on other sites

  • 0

Hi. Can you check the quest for me please? 

Spoiler

quest ledov_dungeon begin
    state start begin
    function settings()
        return
        {
            ["ledov_dungeon_index"] = 33, ---- Dungeon index
            ["ledov_dungeon_index_out"] = 41, ---- Map index, where players will be teleported from dungeon [Jinno M1]
            ["out_pos"] = {9694, 2786}, ---- Coordinations, where players will be teleported from dungeon [Jinno M1]
            ["ledov_dungeon_pos"] = { ----- Dungeon coords
                [1] = {244915, 245066},
                [2] = {245124, 245095}
            },
            ["level_check"] = {
                ["minimum"] = 200,
                ["maximum"] = 300},
        };
    end    
        
    function party_get_member_pids()
        local pids = {party.get_member_pids()}
        
        return pids
    end
    
    function boss1()
        local setting = ledov_dungeon.settings()
        local r = number (1,5)
        if r == 1 then    
            d.spawn_mob(101, 442, 284)
            d.spawn_mob(6108, 345, 279)
            d.spawn_mob(6108, 348, 197)
            d.spawn_mob(6108, 442, 197)
            d.spawn_mob(6108, 402, 78)
        elseif r == 2 then
            d.spawn_mob(6108, 442, 284)
            d.spawn_mob(101, 345, 279)
            d.spawn_mob(6108, 348, 197)
            d.spawn_mob(6108, 442, 197)    
            d.spawn_mob(6108, 402, 78)    
        elseif r == 3 then
            d.spawn_mob(6108, 442, 284)
            d.spawn_mob(6108, 345, 279)
            d.spawn_mob(101, 348, 197)
            d.spawn_mob(6108, 442, 197)
            d.spawn_mob(6108, 402, 78)
        elseif r == 4 then
            d.spawn_mob(6108, 442, 284)
            d.spawn_mob(101, 345, 279)
            d.spawn_mob(6108, 348, 197)
            d.spawn_mob(6108, 442, 197)
            d.spawn_mob(6108, 402, 78)
        elseif r == 5 then
            d.spawn_mob(6108, 442, 284)
            d.spawn_mob(6108, 345, 279)
            d.spawn_mob(101, 348, 197)
            d.spawn_mob(6108, 442, 197)    
            d.spawn_mob(6108, 402, 78)
        end
    end    
    
    function metin1()
        local setting = ledov_dungeon.settings()
        local r = number (1,10)
        if r == 1 then    
            d.spawn_mob(8001, 914, 189)
            d.spawn_mob(8630, 951, 189)
            d.spawn_mob(8630, 951, 231)
            d.spawn_mob(8630, 913, 231)
            d.spawn_mob(8630, 873, 228)
            d.spawn_mob(8630, 872, 187)
            d.spawn_mob(8630, 872, 206)
            d.spawn_mob(8630, 979, 190)
            d.spawn_mob(8630, 979, 210)
            d.spawn_mob(8630, 979, 231)
        elseif r == 2 then
            d.spawn_mob(8630, 914, 189)
            d.spawn_mob(8001, 951, 189)
            d.spawn_mob(8630, 951, 231)
            d.spawn_mob(8630, 913, 231)
            d.spawn_mob(8630, 873, 228)
            d.spawn_mob(8630, 872, 187)
            d.spawn_mob(8630, 872, 206)
            d.spawn_mob(8630, 979, 190)
            d.spawn_mob(8630, 979, 210)
            d.spawn_mob(8630, 979, 231)
        elseif r == 3 then
            d.spawn_mob(8630, 914, 189)
            d.spawn_mob(8630, 951, 189)
            d.spawn_mob(8001, 951, 231)
            d.spawn_mob(8630, 913, 231)
            d.spawn_mob(8630, 873, 228)
            d.spawn_mob(8630, 872, 187)
            d.spawn_mob(8630, 872, 206)
            d.spawn_mob(8630, 979, 190)
            d.spawn_mob(8630, 979, 210)
            d.spawn_mob(8630, 979, 231)
        elseif r == 4 then
            d.spawn_mob(8630, 914, 189)
            d.spawn_mob(8630, 951, 189)
            d.spawn_mob(8630, 951, 231)
            d.spawn_mob(8001, 913, 231)
            d.spawn_mob(8630, 873, 228)
            d.spawn_mob(8630, 872, 187)
            d.spawn_mob(8630, 872, 206)
            d.spawn_mob(8630, 979, 190)
            d.spawn_mob(8630, 979, 210)
            d.spawn_mob(8630, 979, 231)
        elseif r == 5 then
            d.spawn_mob(8630, 914, 189)
            d.spawn_mob(8630, 951, 189)
            d.spawn_mob(8630, 951, 231)
            d.spawn_mob(8630, 913, 231)
            d.spawn_mob(8001, 873, 228)
            d.spawn_mob(8630, 872, 187)
            d.spawn_mob(8630, 872, 206)
            d.spawn_mob(8630, 979, 190)
            d.spawn_mob(8630, 979, 210)
            d.spawn_mob(8630, 979, 231)
        elseif r == 6 then    
            d.spawn_mob(8630, 914, 189)
            d.spawn_mob(8630, 951, 189)
            d.spawn_mob(8630, 951, 231)
            d.spawn_mob(8630, 913, 231)
            d.spawn_mob(8630, 873, 228)
            d.spawn_mob(8001, 872, 187)
            d.spawn_mob(8630, 872, 206)
            d.spawn_mob(8630, 979, 190)
            d.spawn_mob(8630, 979, 210)
            d.spawn_mob(8630, 979, 231)
        elseif r == 7 then
            d.spawn_mob(8630, 914, 189)
            d.spawn_mob(8630, 951, 189)
            d.spawn_mob(8630, 951, 231)
            d.spawn_mob(8630, 913, 231)
            d.spawn_mob(8630, 873, 228)
            d.spawn_mob(8630, 872, 187)
            d.spawn_mob(8001, 872, 206)
            d.spawn_mob(8630, 979, 190)
            d.spawn_mob(8630, 979, 210)
            d.spawn_mob(8630, 979, 231)
        elseif r == 8 then
            d.spawn_mob(8630, 914, 189)
            d.spawn_mob(8630, 951, 189)
            d.spawn_mob(8630, 951, 231)
            d.spawn_mob(8630, 913, 231)
            d.spawn_mob(8630, 873, 228)
            d.spawn_mob(8630, 872, 187)
            d.spawn_mob(8630, 872, 206)
            d.spawn_mob(8001, 979, 190)
            d.spawn_mob(8630, 979, 210)
            d.spawn_mob(8630, 979, 231)
        elseif r == 9 then
            d.spawn_mob(8630, 914, 189)
            d.spawn_mob(8630, 951, 189)
            d.spawn_mob(8630, 951, 231)
            d.spawn_mob(8630, 913, 231)
            d.spawn_mob(8630, 873, 228)
            d.spawn_mob(8630, 872, 187)
            d.spawn_mob(8630, 872, 206)
            d.spawn_mob(8630, 979, 190)
            d.spawn_mob(8001, 979, 210)
            d.spawn_mob(8630, 979, 231)
        elseif r == 10 then
            d.spawn_mob(8630, 914, 189)
            d.spawn_mob(8630, 951, 189)
            d.spawn_mob(8630, 951, 231)
            d.spawn_mob(8630, 913, 231)
            d.spawn_mob(8630, 873, 228)
            d.spawn_mob(8630, 872, 187)
            d.spawn_mob(8630, 872, 206)
            d.spawn_mob(8630, 979, 190)
            d.spawn_mob(8630, 979, 210)
            d.spawn_mob(8001, 979, 231)        
        end
    end    

    function blud()
        local setting = ledov_dungeon.settings()
        local r = number (1,4)    
        if r == 1 then    
            d.spawn_mob(8001, 1081, 55)
            d.spawn_mob(8630, 1252, 277)
            d.spawn_mob(8630, 1184, 318)
            d.spawn_mob(8630, 983, 365)
        elseif r == 2 then
            d.spawn_mob(8630, 1081, 55)
            d.spawn_mob(8001, 1252, 277)
            d.spawn_mob(8630, 1184, 318)
            d.spawn_mob(8630, 983, 365)
        elseif r == 3 then
            d.spawn_mob(8630, 1081, 55)
            d.spawn_mob(8630, 1252, 277)
            d.spawn_mob(8001, 1184, 318)
            d.spawn_mob(8630, 983, 365)
        elseif r == 4 then
            d.spawn_mob(8630, 1081, 55)
            d.spawn_mob(8630, 1252, 277)
            d.spawn_mob(8630, 1184, 318)
            d.spawn_mob(8001, 983, 365)
        end
    end
    
    function bo()
        local setting = ledov_dungeon.settings()
        local r = number (1,4)    
        if r == 1 then    
            d.spawn_mob(102, 379, 739)
            d.spawn_mob(6109, 380, 538)
            d.spawn_mob(6109, 488, 550)
            d.spawn_mob(6109, 544, 551)
        elseif r == 2 then
            d.spawn_mob(6109, 379, 739)
            d.spawn_mob(102, 380, 538)
            d.spawn_mob(6109, 488, 550)
            d.spawn_mob(6109, 544, 551)
        elseif r == 3 then
            d.spawn_mob(6109, 379, 739)
            d.spawn_mob(6109, 380, 538)
            d.spawn_mob(102, 488, 550)
            d.spawn_mob(6109, 544, 551)
        elseif r == 4 then
            d.spawn_mob(6109, 379, 739)
            d.spawn_mob(6109, 380, 538)
            d.spawn_mob(6109, 488, 550)
            d.spawn_mob(102, 544, 551)
        end
    end    

    function is_ledoved()
        local pMapIndex = pc.get_map_index();
        local data = ledov_dungeon.settings();
        local map_index = data["ledov_dungeon_index"];

        return pc.in_dungeon() and pMapIndex >= map_index*10000 and pMapIndex < (map_index+1)*10000;
    end
    
    function clear_ledovdungeon()
        d.clear_regen();
        d.kill_all();
    end
    
    function clear_ledovtimers()
        clear_server_timer("ledov_dungeon_wave_kill", get_server_timer_arg())
        clear_server_timer("ledov_dungeon_30min_left", get_server_timer_arg())
        clear_server_timer("ledov_dungeon_15min_left", get_server_timer_arg())
        clear_server_timer("ledov_dungeon_10min_left", get_server_timer_arg())
        clear_server_timer("ledov_dungeon_5min_left", get_server_timer_arg())
        clear_server_timer("ledov_dungeon_1min_left", get_server_timer_arg())
        clear_server_timer("ledov_dungeon_0min_left", get_server_timer_arg())
        clear_server_timer("ledov_dungeon_final_exit", get_server_timer_arg())
    end    

    function check_enter()
        say_title(mob_name(8587))
        local settings = ledov_dungeon.settings()
        
        if ((get_global_time() - pc.getf("ledov_dungeon","exit_ledov_dungeon_time")) < 60*60) then
        
            local remaining_wait_time = (pc.getf("ledov_dungeon","exit_ledov_dungeon_time") - get_global_time() + 60*60)
            say(" Musíš počkat před vstupem do dungeonu. ")
            say_reward(" Po uplynutí této doby : "..get_time_remaining(remaining_wait_time)..'[ENTER]')
            say_reward("Můžete znovu vstoupit do dungeonu.")
            return
        end
        
        if party.is_party() then            
            if not party.is_leader() then
                say_reward(" Nech mě nejprve mluvit s vůdcem skupiny. ")
                return
            end

            if party.get_near_count() < 2 then
                say_reward(" Pro vstup musí mít tvoje skupina alespoň dva členy. ")
                say_reward(" Všichni členové musí být kolem. ")
                say_reward(" [ENTER]Jinak tě nemohu pustit. ")
                return false;
            end
            
            local levelCheck = true
            local MemberHaveLowLevel = {}
            local MemberHaveHighLevel = {}
            local pids = {party.get_member_pids()}
            
            if not party.is_map_member_flag_lt("exit_ledov_dungeon_time", get_global_time() - 60 * 60 ) then
                say_reward(" Někteří členi skupiny ")
                say_reward(" musí ještě počkat. ")
                return false;
            end
                        
            for i, pid in next, pids, nil do
                q.begin_other_pc_block(pid)
                if pc.get_level() < settings["level_check"]["minimum"] then
                    table.insert(MemberHaveLowLevel, pc.get_name())
                    levelCheck = false
                end

                q.end_other_pc_block()
            end

            if not levelCheck then
                say_reward(" Pokud chceš vstoupit do Ledové rokle ")
                say_reward(" musíš mít alespoň level 201 ")
                say_reward("")
                say_reward(" Následující hráči nemají dostatečný level : ")
                for i, n in next, MemberHaveLowLevel, nil do
                    say_title("- "..n)
                end
                return
            end
            
            for i, pid in next, pids, nil do
                q.begin_other_pc_block(pid)
                if pc.get_level() > settings["level_check"]["maximum"] then
                    table.insert(MemberHaveHighLevel, pc.get_name())
                    levelCheck = false
                end

                q.end_other_pc_block()
            end

            if not levelCheck then
                say_reward(" Pokud chceš vstoupit do Ledové rokle ")
                say_reward(" Musíš mít maximálně level 300. ")
                say_reward("")
                say_reward(" Tito hráči mají příliš vysoký level : ")
                for i, n in next, MemberHaveHighLevel, nil do
                    say_title("- "..n)
                end
                return
            end
    
        else
        
            if ((get_global_time() - pc.getf("ledov_dungeon","exit_ledov_dungeon_time")) < 60*60) then
            
                local remaining_wait_time = (pc.getf("ledov_dungeon","exit_ledov_dungeon_time") - get_global_time() + 60*60)
                say(" Před vstupem do Cesty zkázy musíš počkat. ")
                say_reward(" Můžeš znovu vstoupit za: "..get_time_remaining(remaining_wait_time)..'[ENTER]')
                return
            end
            
            if (pc.get_level() < settings["level_check"]["minimum"]) then
                say(string.format(" Minimální level pro vstup do Ledové rokle je %d. ", settings["level_check"]["minimum"]))
                return false;
            end
            
            if (pc.get_level() > settings["level_check"]["maximum"]) then
                say(string.format(" Maximální level pro vstup do Ledové rokle je %d. ", settings["level_check"]["maximum"]))
                return false;
            end
        end
        
        return true;
    end    
        
    function create_dungeon()
        local setting = ledov_dungeon.settings()
        local pids = {party.get_member_pids()}
        
        if party.is_party() then
            game.set_event_flag("trumetin", 0)
            d.new_jump_party(setting["ledov_dungeon_index"], setting["ledov_dungeon_pos"][1][1], setting["ledov_dungeon_pos"][1][2])
            d.setf("ledov_dungeon_level", 1)
            d.regen_file("data/dungeon/ledov_dungeon/regen1.txt")
            server_timer("ledov_dungeon_30min_left", 7200, d.get_map_index())
            server_loop_timer("ledov_dungeon_wave_kill", 15, d.get_map_index())
        else
            game.set_event_flag("trumetin", 0)
            d.new_jump(setting["ledov_dungeon_index"], setting["ledov_dungeon_pos"][1][1]*100, setting["ledov_dungeon_pos"][1][2]*100)
            d.setf("ledov_dungeon_level", 1)
            d.regen_file("data/dungeon/ledov_dungeon/regen1.txt")
            server_timer("ledov_dungeon_30min_left", 7200, d.get_map_index())
            server_loop_timer("ledov_dungeon_wave_kill", 15, d.get_map_index())
        end
    end    
    
        
        
    
        when login with ledov_dungeon.is_ledoved() begin
            local settings = ledov_dungeon.settings()
                        
            d.set_warp_location(settings["ledov_dungeon_index_out"], settings["out_pos"][1], settings["out_pos"][2]);
            if not pc.is_gm() then
                if not pc.in_dungeon() then
                    pc.warp(settings["ledov_dungeon_index_out"], settings["out_pos"][1]*100, settings["out_pos"][2]*100)
                end
            end
        end    

        when 20089.chat." Ledová rokle " begin
            local settings = ledov_dungeon.settings()
            say_title(mob_name(20089))
            say("")
            say(" Opravdu chceš vstoupit do Ledové rokle? ")
            if (select ("Ano", "Ne") == 1) then
                if ledov_dungeon.check_enter() then
                    say_reward(" Na dokončení Ledové rokle máš pouze 2 hodiny.")
                    say_reward(" Po uplynutí této doby budete teleportování zpět sem. ")
                    say_reward(" Pro postup do dalšího patra zabij správnou příšeru" )
                    wait()
                    ledov_dungeon.create_dungeon()
                end
            end
        end

        ---TIME RESET - ONLY FOR GM
        when 20089.chat."Resetování času pyčo" with pc.is_gm() begin
            say("")
            say("")
            say("")
            if select('Resetovat čas kurva','Ne dopiči') == 2 then return end
                addimage(25, 10, "ledov_bg_01.tga")
                say("")
                say("")
                say("")
                say_title(mob_name(20095))
                say("")
                say("Bylo resetovane kundo")
                pc.setf('ledov_dungeon','exit_ledov_dungeon_time', 0)
                
                -- Dungeon Info
                pc.setqf("rejoin_time", get_time() - 3600)
        end    

        
        when 6101.kill or 6102.kill or 6103.kill or 6104.kill with pc.in_dungeon() and d.getf("ledov_dungeon_level") == 1 begin
            local n = number(1,8)
            if n == 1 or game.get_event_flag("trumetin") == 7 then
                d.notice("Správná příšera byla zabita.")
                ledov_dungeon.clear_ledovdungeon()
                d.setf("ledov_dungeon_level", 2)
                server_timer("ledov_dungeon_spawner", 15, d.get_map_index())    
            else
                game.set_event_flag("trumetin", game.get_event_flag("trumetin")+1)
            end
        end
        
        when ledov_dungeon_spawner.server_timer begin
            local settings = ledov_dungeon.settings()
            if d.select(get_server_timer_arg()) then
                if d.getf("ledov_dungeon_level") == 2 then
                    game.set_event_flag("tru", 0)
                    d.setf("ledov_dungeon_level", 3)
                    ledov_dungeon.boss1()
                    d.notice("Zabij správného bosse pro postup do dalšího patra")
                    d.notice("Pokud zabiješ špatného bosse může ti dát trest")
                    d.jump_all(settings["ledov_dungeon_pos"][2][1], settings["ledov_dungeon_pos"][2][2])
                elseif d.getf("ledov_dungeon_level") == 4 then
                    game.set_event_flag("truu", 0)
                    d.setf("ledov_dungeon_level", 5)    
                    d.regen_file("data/dungeon/ledov_dungeon/regen2.txt")
                    d.jump_all(245389, 244810)
                elseif d.getf("ledov_dungeon_level") == 6 then
                    d.setf("ledov_dungeon_level", 7)
                    d.regen_file("data/dungeon/ledov_dungeon/regenhradby.txt")
                    d.jump_all (245655, 244818)
                elseif d.getf("ledov_dungeon_level") == 8 then
                    d.setf("ledov_dungeon_level", 9)
                    ledov_dungeon.metin1()
                    d.notice("Rozbij správný balvan pro postup do dalšího patra.")
                    d.notice("Jeden balvan je špatný za jeho rozbití budeš potrestán")
                    game.set_event_flag("truuhrad", 0)
                elseif d.getf("ledov_dungeon_level") == 10 then
                    d.setf("ledov_dungeon_level", 11)
                    d.notice("Najdi a rozbij balvany.")
                    d.notice("Jeden balvan je špatný, za jeho rozbití dostaneš trest")
                    ledov_dungeon.blud()
                    game.set_event_flag("blud", 0)
                    d.jump_all (245903, 244789)
                elseif d.getf("ledov_dungeon_level") == 12 then
                    d.setf("ledov_dungeon_level", 13)
                    d.notice("Zabij všechny příšery balvany a bosse.")
                    d.regen_file("data/dungeon/ledov_dungeon/regenkomb.txt")
                    d.jump_all (244803, 245324)
                elseif d.getf("ledov_dungeon_level") == 14 then
                    d.notice("Zabij správného bosse pro postup")
                    d.notice("Jeden boss je špatný za jeho zabití budeš potrestán")
                    d.setf("ledov_dungeon_level", 15)
                    ledov_dungeon.bo()
                    game.set_event_flag("lord", 0)
                elseif d.getf("ledov_dungeon_level") == 16 then    
                    d.notice("Zabij Nemereho pro dokončení dungeonu")
                    d.setf("ledov_dungeon_level", 17)
                    d.regen_file("data/dungeon/ledov_dungeon/regenlast.txt")
                end
            end
        end
        
        when 6108.kill with pc.in_dungeon() and d.getf("ledov_dungeon_level") == 3 begin
            local n = number(1,4)
            if n == 1 or game.get_event_flag("tru") == 3 then
                d.notice("Správný boss byl zabit.")
                ledov_dungeon.clear_ledovdungeon()
                d.setf("ledov_dungeon_level", 4)
                server_timer("ledov_dungeon_spawner", 15, d.get_map_index())    
            else
                d.notice("Toto nebyl správný boss.")
                game.set_event_flag("tru", game.get_event_flag("tru")+1)
            end
        end    
        
        when 101.kill with pc.in_dungeon() and d.getf("ledov_dungeon_level") == 3 begin
            d.notice("Zabil jsi špatného bosse. Budeš potrestán.")
            d.notice("Aby jsi se vrátil zpět zabij správnou příšeru.")
            game.set_event_flag("trumet", 0)
            d.regen_file("data/dungeon/ledov_dungeon/regentrest.txt")
            server_timer("ledov_dungeon_trest", 3, d.get_map_index())    
        end
        
        when ledov_dungeon_trest.server_timer begin
            local settings = ledov_dungeon.settings()
            if d.select(get_server_timer_arg()) then
                if d.getf("ledov_dungeon_level") == 3 then
                    d.jump_all(244848, 244820)
                end
            end
        end
            
        
        when 6101.kill or 6102.kill or 6103.kill or 6104.kill or 6105.kill or 6106.kill or 6107.kill with pc.in_dungeon() and d.getf("ledov_dungeon_level") == 3 begin
            local n = number(1,8)
            if n == 1 or game.get_event_flag("trumet") == 7 then
                d.notice("Správná příšera byla zabita.")
                server_timer("ledov_dungeon_trestt", 10, d.get_map_index())    
            else
                game.set_event_flag("trumet", game.get_event_flag("trumet")+1)
            end
        end
        
        when ledov_dungeon_trestt.server_timer begin
            local settings = ledov_dungeon.settings()
            if d.select(get_server_timer_arg()) then
                if d.getf("ledov_dungeon_level") == 3 then
                    d.jump_all(245124, 245095)
                end
            end
        end
                


        when 6101.kill or 6102.kill or 6103.kill or 6104.kill or 6105.kill or 6106.kill or 6107.kill with pc.in_dungeon() and d.getf("ledov_dungeon_level") == 5 begin
            local n = number(1,8)
            if n == 1 or game.get_event_flag("truu") == 7 then
                d.notice("Správná příšera byla zabita.")
                ledov_dungeon.clear_ledovdungeon()
                d.setf("ledov_dungeon_level", 6)
                server_timer("ledov_dungeon_spawner", 15, d.get_map_index())    
            else
                game.set_event_flag("truu", game.get_event_flag("truu")+1)
            end
        end

        when ledov_dungeon_wave_kill.server_timer begin
            local settings = ledov_dungeon.settings()
            if d.select(get_server_timer_arg()) then
                if d.getf("ledov_dungeon_level") == 7 then
                    d.notice("Zabij všechny příšery")
                    if d.count_monster() == 0 then
                        clear_server_timer("ledov_dungeon_wave_kill", get_server_timer_arg())
                        d.setf("ledov_dungeon_level", 😎
                        d.notice("Zabil jsi všechny příšery.")
                        server_timer("ledov_dungeon_spawner", 1, d.get_map_index())
                    else
                        d.notice(string.format("Zbývá zabít %d příšer", d.count_monster()));
                    end
                elseif d.getf("ledov_dungeon_level") == 13 then
                    d.notice("Zabij všechny příšery")
                    if d.count_monster() == 0 then
                        clear_server_timer("ledov_dungeon_wave_kill", get_server_timer_arg())
                        d.setf("ledov_dungeon_level", 14)
                        d.notice("Zabil jsi všechny příšery.")
                        server_timer("ledov_dungeon_spawner", 20, d.get_map_index())
                    else
                        d.notice(string.format("Zbývá zabít %d příšer", d.count_monster()));
                    end                    
                end
            end
        end
        
        when 8630.kill with pc.in_dungeon() and d.getf("ledov_dungeon_level") == 9 begin
            local n = number(1,9)
            if n == 1 or game.get_event_flag("truuhrad") == 8 then
                d.notice("Správný balvan byl rozbit.")
                ledov_dungeon.clear_ledovdungeon()
                d.setf("ledov_dungeon_level", 10)
                server_timer("ledov_dungeon_spawner", 15, d.get_map_index())    
            else
                d.notice("Toto nebyl správný balvan.")
                game.set_event_flag("truuhrad", game.get_event_flag("truuhrad")+1)
            end
        end
        
        when 8001.kill with pc.in_dungeon() and d.getf("ledov_dungeon_level") == 9 begin
            game.set_event_flag("trs", 0)
            d.notice("Rozbil jsi špatný balvan. Budeš potrestán.")
            d.notice("Aby jsi se vrátil zpět zabij správnou příšeru.")
            d.regen_file("data/dungeon/ledov_dungeon/regentrest.txt")
            server_timer("ledov_dungeon_tres", 15, d.get_map_index())    
        end
        
        when ledov_dungeon_tres.server_timer begin
            local settings = ledov_dungeon.settings()
            if d.select(get_server_timer_arg()) then
                if d.getf("ledov_dungeon_level") == 9 then
                    d.jump_all(244848, 244820)
                end
            end
        end    
        
        when 6101.kill or 6102.kill or 6103.kill or 6104.kill or 6105.kill or 6106.kill or 6107.kill with pc.in_dungeon() and d.getf("ledov_dungeon_level") == 9 begin
            local n = number(1,8)
            if n == 1 or game.get_event_flag("trs") == 7 then
                d.notice("Správná příšera byla zabita.")
                d.clear_regen("data/dungeon/ledov_dungeon/regentrest.txt")
                server_timer("ledov_dungeon_pico", 15, d.get_map_index())    
            else
                game.set_event_flag("trs", game.get_event_flag("trs")+1)
            end
        end        
        
        when ledov_dungeon_pico.server_timer begin
            local settings = ledov_dungeon.settings()
            if d.select(get_server_timer_arg()) then
                if d.getf("ledov_dungeon_level") == 9 then
                    d.jump_all(245655, 244818)
                end
            end
        end    

        when 8630.kill with pc.in_dungeon() and d.getf("ledov_dungeon_level") == 11 begin
            local n = number(1,3)
            if n == 1 or game.get_event_flag("blud") == 2 then
                d.notice("Správný balvan byl rozbit.")
                ledov_dungeon.clear_ledovdungeon()
                d.setf("ledov_dungeon_level", 12)
                server_timer("ledov_dungeon_spawner", 15, d.get_map_index())    
            else
                d.notice("Toto nebyl správný balvan.")
                game.set_event_flag("blud", game.get_event_flag("blud")+1)
            end
        end
        
        when 8001.kill with pc.in_dungeon() and d.getf("ledov_dungeon_level") == 11 begin
            d.spawn_mob(8632, 122, 72)
            d.notice("Rozbil jsi špatný balvan. Budeš potrestán.")
            d.notice("Aby jsi se vrátil zpět rozbij správný balvan.")
            server_timer("ledov_dungeon_tres", 15, d.get_map_index())    
        end        
        
        when ledov_dungeon_tres.server_timer begin
            local settings = ledov_dungeon.settings()
            if d.select(get_server_timer_arg()) then
                if d.getf("ledov_dungeon_level") == 11 then
                    d.jump_all(244848, 244820)
                end
            end
        end

        when 8632.kill with pc.in_dungeon() and d.getf("ledov_dungeon_level") == 11 begin
            server_timer("ledov_dungeon_trestboss", 15, d.get_map_index())
            d.notice("Zabil jsi bosse, budeš teleportován zpět")
        end

        when ledov_dungeon_trestboss.server_timer begin
            local settings = ledov_dungeon.settings()
            if d.select(get_server_timer_arg()) then
                if d.getf("ledov_dungeon_level") == 11 then
                    d.jump_all(245655, 244818)
                end
            end
        end
        
        when 6109.kill with pc.in_dungeon() and d.getf("ledov_dungeon_level") == 15 begin
            local n = number(1,4)
            if n == 1 or game.get_event_flag("lord") == 3 then
                d.notice("Správný boss byl zabit.")
                ledov_dungeon.clear_ledovdungeon()
                d.setf("ledov_dungeon_level", 16)
                server_timer("ledov_dungeon_spawner", 15, d.get_map_index())    
            else
                d.notice("Toto nebyl správný boss.")
                game.set_event_flag("lord", game.get_event_flag("lord")+1)
            end
        end    
        
        when 102.kill with pc.in_dungeon() and d.getf("ledov_dungeon_level") == 15 begin
            d.notice("Zabil jsi špatného bosse. Budeš potrestán.")
            d.notice("Aby jsi se vrátil zpět zabij Mrazivého lorda")
            d.spawn_mob(102, 65, 93)
            server_timer("ledov_dungeon_trestik", 3, d.get_map_index())    
        end
        
        when ledov_dungeon_trestik.server_timer begin
            local settings = ledov_dungeon.settings()
            if d.select(get_server_timer_arg()) then
                if d.getf("ledov_dungeon_level") == 15 then
                    d.jump_all(244848, 244820)
                end
            end
        end
            
        
        when 102.kill with pc.in_dungeon() and d.getf("ledov_dungeon_level") == 15 begin
            server_timer("ledov_dungeon_lord", 10, d.get_map_index())
        end
        
        when ledov_dungeon_lord.server_timer begin
            local settings = ledov_dungeon.settings()
            if d.select(get_server_timer_arg()) then
                if d.getf("ledov_dungeon_level") == 15 then
                    d.jump_all(245124, 245095)
                end
            end
        end

        when kill with ledov_dungeon.is_ledoved() and not npc.is_pc() and npc.get_race() == 6191 begin
            local settings = ledov_dungeon.settings()
            if d.getf("ledov_dungeon_level") == 17 then                
                d.setf("ledov_dungeon_level", 18)
                d.notice("Úspěšně jsi dokončil dungeon")
                d.notice("Za dvě minuty budeš teleportován.")
                notice_all("Hráč ".. pc.get_name() .." dokázal projít Ledovou rokli!")
                server_timer("ledov_dungeon_final", 115, d.get_map_index())
            end
        end        
        
        when ledov_dungeon_30min_left.server_timer begin
            if d.select(get_server_timer_arg()) then
                d.notice("Zbývá 30 minut!")
                server_timer("ledov_dungeon_15min_left", 15*60, d.get_map_index())
            end
        end

        when ledov_dungeon_15min_left.server_timer begin
            if d.select(get_server_timer_arg()) then
                d.notice("Zbývá 15 minut!!")
                server_timer("ledov_dungeon_10min_left", 5*60, d.get_map_index())
            end
        end

        when ledov_dungeon_10min_left.server_timer begin
            if d.select(get_server_timer_arg()) then
                d.notice("Zbývá 10 minut!")
                server_timer("ledov_dungeon_5min_left", 5*60, d.get_map_index())
            end
        end

        when ledov_dungeon_5min_left.server_timer begin
            if d.select(get_server_timer_arg()) then
                d.notice("Zbývá 5 minut!")
                server_timer("ledov_dungeon_1min_left", 4*60, d.get_map_index())
            end
        end

        when ledov_dungeon_1min_left.server_timer begin
            if d.select(get_server_timer_arg()) then
                d.notice("Zbývá 1 minuta!")
                server_timer("ledov_dungeon_0min_left", 60, d.get_map_index())
            end
        end

        when ledov_dungeon_0min_left.server_timer begin
            if d.select(get_server_timer_arg()) then
                d.notice("Čas vypršel. Budeš teleportován.")
                server_timer("ledov_dungeon_final", 5, d.get_map_index())
            end
        end

        when ledov_dungeon_final.server_timer begin
            if d.select(get_server_timer_arg()) then                                
                d.exit_all()
            end
        end
        
        when logout with ledov_dungeon.is_ledoved() begin 
            pc.setf("ledov_dungeon","exit_ledov_dungeon_time", get_global_time())
            pc.setqf("ledov_dungeon", get_time() + 3600)
        end
        
    end
end

I think the problem is here with that index?

 

Spoiler

    function is_ledoved()
        local pMapIndex = pc.get_map_index();
        local data = ledov_dungeon.settings();
        local map_index = data["ledov_dungeon_index"];

        return pc.in_dungeon() and pMapIndex >= map_index*10000 and pMapIndex < (map_index+1)*10000;

Thank you 🙂

Link to comment
Share on other sites

  • 0
  • Distinguished Member
49 minutes ago, dexolus said:

Hi. Can you check the quest for me please? 

  Hide contents

quest ledov_dungeon begin
    state start begin
    function settings()
        return
        {
            ["ledov_dungeon_index"] = 33, ---- Dungeon index
            ["ledov_dungeon_index_out"] = 41, ---- Map index, where players will be teleported from dungeon [Jinno M1]
            ["out_pos"] = {9694, 2786}, ---- Coordinations, where players will be teleported from dungeon [Jinno M1]
            ["ledov_dungeon_pos"] = { ----- Dungeon coords
                [1] = {244915, 245066},
                [2] = {245124, 245095}
            },
            ["level_check"] = {
                ["minimum"] = 200,
                ["maximum"] = 300},
        };
    end    
        
    function party_get_member_pids()
        local pids = {party.get_member_pids()}
        
        return pids
    end
    
    function boss1()
        local setting = ledov_dungeon.settings()
        local r = number (1,5)
        if r == 1 then    
            d.spawn_mob(101, 442, 284)
            d.spawn_mob(6108, 345, 279)
            d.spawn_mob(6108, 348, 197)
            d.spawn_mob(6108, 442, 197)
            d.spawn_mob(6108, 402, 78)
        elseif r == 2 then
            d.spawn_mob(6108, 442, 284)
            d.spawn_mob(101, 345, 279)
            d.spawn_mob(6108, 348, 197)
            d.spawn_mob(6108, 442, 197)    
            d.spawn_mob(6108, 402, 78)    
        elseif r == 3 then
            d.spawn_mob(6108, 442, 284)
            d.spawn_mob(6108, 345, 279)
            d.spawn_mob(101, 348, 197)
            d.spawn_mob(6108, 442, 197)
            d.spawn_mob(6108, 402, 78)
        elseif r == 4 then
            d.spawn_mob(6108, 442, 284)
            d.spawn_mob(101, 345, 279)
            d.spawn_mob(6108, 348, 197)
            d.spawn_mob(6108, 442, 197)
            d.spawn_mob(6108, 402, 78)
        elseif r == 5 then
            d.spawn_mob(6108, 442, 284)
            d.spawn_mob(6108, 345, 279)
            d.spawn_mob(101, 348, 197)
            d.spawn_mob(6108, 442, 197)    
            d.spawn_mob(6108, 402, 78)
        end
    end    
    
    function metin1()
        local setting = ledov_dungeon.settings()
        local r = number (1,10)
        if r == 1 then    
            d.spawn_mob(8001, 914, 189)
            d.spawn_mob(8630, 951, 189)
            d.spawn_mob(8630, 951, 231)
            d.spawn_mob(8630, 913, 231)
            d.spawn_mob(8630, 873, 228)
            d.spawn_mob(8630, 872, 187)
            d.spawn_mob(8630, 872, 206)
            d.spawn_mob(8630, 979, 190)
            d.spawn_mob(8630, 979, 210)
            d.spawn_mob(8630, 979, 231)
        elseif r == 2 then
            d.spawn_mob(8630, 914, 189)
            d.spawn_mob(8001, 951, 189)
            d.spawn_mob(8630, 951, 231)
            d.spawn_mob(8630, 913, 231)
            d.spawn_mob(8630, 873, 228)
            d.spawn_mob(8630, 872, 187)
            d.spawn_mob(8630, 872, 206)
            d.spawn_mob(8630, 979, 190)
            d.spawn_mob(8630, 979, 210)
            d.spawn_mob(8630, 979, 231)
        elseif r == 3 then
            d.spawn_mob(8630, 914, 189)
            d.spawn_mob(8630, 951, 189)
            d.spawn_mob(8001, 951, 231)
            d.spawn_mob(8630, 913, 231)
            d.spawn_mob(8630, 873, 228)
            d.spawn_mob(8630, 872, 187)
            d.spawn_mob(8630, 872, 206)
            d.spawn_mob(8630, 979, 190)
            d.spawn_mob(8630, 979, 210)
            d.spawn_mob(8630, 979, 231)
        elseif r == 4 then
            d.spawn_mob(8630, 914, 189)
            d.spawn_mob(8630, 951, 189)
            d.spawn_mob(8630, 951, 231)
            d.spawn_mob(8001, 913, 231)
            d.spawn_mob(8630, 873, 228)
            d.spawn_mob(8630, 872, 187)
            d.spawn_mob(8630, 872, 206)
            d.spawn_mob(8630, 979, 190)
            d.spawn_mob(8630, 979, 210)
            d.spawn_mob(8630, 979, 231)
        elseif r == 5 then
            d.spawn_mob(8630, 914, 189)
            d.spawn_mob(8630, 951, 189)
            d.spawn_mob(8630, 951, 231)
            d.spawn_mob(8630, 913, 231)
            d.spawn_mob(8001, 873, 228)
            d.spawn_mob(8630, 872, 187)
            d.spawn_mob(8630, 872, 206)
            d.spawn_mob(8630, 979, 190)
            d.spawn_mob(8630, 979, 210)
            d.spawn_mob(8630, 979, 231)
        elseif r == 6 then    
            d.spawn_mob(8630, 914, 189)
            d.spawn_mob(8630, 951, 189)
            d.spawn_mob(8630, 951, 231)
            d.spawn_mob(8630, 913, 231)
            d.spawn_mob(8630, 873, 228)
            d.spawn_mob(8001, 872, 187)
            d.spawn_mob(8630, 872, 206)
            d.spawn_mob(8630, 979, 190)
            d.spawn_mob(8630, 979, 210)
            d.spawn_mob(8630, 979, 231)
        elseif r == 7 then
            d.spawn_mob(8630, 914, 189)
            d.spawn_mob(8630, 951, 189)
            d.spawn_mob(8630, 951, 231)
            d.spawn_mob(8630, 913, 231)
            d.spawn_mob(8630, 873, 228)
            d.spawn_mob(8630, 872, 187)
            d.spawn_mob(8001, 872, 206)
            d.spawn_mob(8630, 979, 190)
            d.spawn_mob(8630, 979, 210)
            d.spawn_mob(8630, 979, 231)
        elseif r == 8 then
            d.spawn_mob(8630, 914, 189)
            d.spawn_mob(8630, 951, 189)
            d.spawn_mob(8630, 951, 231)
            d.spawn_mob(8630, 913, 231)
            d.spawn_mob(8630, 873, 228)
            d.spawn_mob(8630, 872, 187)
            d.spawn_mob(8630, 872, 206)
            d.spawn_mob(8001, 979, 190)
            d.spawn_mob(8630, 979, 210)
            d.spawn_mob(8630, 979, 231)
        elseif r == 9 then
            d.spawn_mob(8630, 914, 189)
            d.spawn_mob(8630, 951, 189)
            d.spawn_mob(8630, 951, 231)
            d.spawn_mob(8630, 913, 231)
            d.spawn_mob(8630, 873, 228)
            d.spawn_mob(8630, 872, 187)
            d.spawn_mob(8630, 872, 206)
            d.spawn_mob(8630, 979, 190)
            d.spawn_mob(8001, 979, 210)
            d.spawn_mob(8630, 979, 231)
        elseif r == 10 then
            d.spawn_mob(8630, 914, 189)
            d.spawn_mob(8630, 951, 189)
            d.spawn_mob(8630, 951, 231)
            d.spawn_mob(8630, 913, 231)
            d.spawn_mob(8630, 873, 228)
            d.spawn_mob(8630, 872, 187)
            d.spawn_mob(8630, 872, 206)
            d.spawn_mob(8630, 979, 190)
            d.spawn_mob(8630, 979, 210)
            d.spawn_mob(8001, 979, 231)        
        end
    end    

    function blud()
        local setting = ledov_dungeon.settings()
        local r = number (1,4)    
        if r == 1 then    
            d.spawn_mob(8001, 1081, 55)
            d.spawn_mob(8630, 1252, 277)
            d.spawn_mob(8630, 1184, 318)
            d.spawn_mob(8630, 983, 365)
        elseif r == 2 then
            d.spawn_mob(8630, 1081, 55)
            d.spawn_mob(8001, 1252, 277)
            d.spawn_mob(8630, 1184, 318)
            d.spawn_mob(8630, 983, 365)
        elseif r == 3 then
            d.spawn_mob(8630, 1081, 55)
            d.spawn_mob(8630, 1252, 277)
            d.spawn_mob(8001, 1184, 318)
            d.spawn_mob(8630, 983, 365)
        elseif r == 4 then
            d.spawn_mob(8630, 1081, 55)
            d.spawn_mob(8630, 1252, 277)
            d.spawn_mob(8630, 1184, 318)
            d.spawn_mob(8001, 983, 365)
        end
    end
    
    function bo()
        local setting = ledov_dungeon.settings()
        local r = number (1,4)    
        if r == 1 then    
            d.spawn_mob(102, 379, 739)
            d.spawn_mob(6109, 380, 538)
            d.spawn_mob(6109, 488, 550)
            d.spawn_mob(6109, 544, 551)
        elseif r == 2 then
            d.spawn_mob(6109, 379, 739)
            d.spawn_mob(102, 380, 538)
            d.spawn_mob(6109, 488, 550)
            d.spawn_mob(6109, 544, 551)
        elseif r == 3 then
            d.spawn_mob(6109, 379, 739)
            d.spawn_mob(6109, 380, 538)
            d.spawn_mob(102, 488, 550)
            d.spawn_mob(6109, 544, 551)
        elseif r == 4 then
            d.spawn_mob(6109, 379, 739)
            d.spawn_mob(6109, 380, 538)
            d.spawn_mob(6109, 488, 550)
            d.spawn_mob(102, 544, 551)
        end
    end    

    function is_ledoved()
        local pMapIndex = pc.get_map_index();
        local data = ledov_dungeon.settings();
        local map_index = data["ledov_dungeon_index"];

        return pc.in_dungeon() and pMapIndex >= map_index*10000 and pMapIndex < (map_index+1)*10000;
    end
    
    function clear_ledovdungeon()
        d.clear_regen();
        d.kill_all();
    end
    
    function clear_ledovtimers()
        clear_server_timer("ledov_dungeon_wave_kill", get_server_timer_arg())
        clear_server_timer("ledov_dungeon_30min_left", get_server_timer_arg())
        clear_server_timer("ledov_dungeon_15min_left", get_server_timer_arg())
        clear_server_timer("ledov_dungeon_10min_left", get_server_timer_arg())
        clear_server_timer("ledov_dungeon_5min_left", get_server_timer_arg())
        clear_server_timer("ledov_dungeon_1min_left", get_server_timer_arg())
        clear_server_timer("ledov_dungeon_0min_left", get_server_timer_arg())
        clear_server_timer("ledov_dungeon_final_exit", get_server_timer_arg())
    end    

    function check_enter()
        say_title(mob_name(8587))
        local settings = ledov_dungeon.settings()
        
        if ((get_global_time() - pc.getf("ledov_dungeon","exit_ledov_dungeon_time")) < 60*60) then
        
            local remaining_wait_time = (pc.getf("ledov_dungeon","exit_ledov_dungeon_time") - get_global_time() + 60*60)
            say(" Musíš počkat před vstupem do dungeonu. ")
            say_reward(" Po uplynutí této doby : "..get_time_remaining(remaining_wait_time)..'[ENTER]')
            say_reward("Můžete znovu vstoupit do dungeonu.")
            return
        end
        
        if party.is_party() then            
            if not party.is_leader() then
                say_reward(" Nech mě nejprve mluvit s vůdcem skupiny. ")
                return
            end

            if party.get_near_count() < 2 then
                say_reward(" Pro vstup musí mít tvoje skupina alespoň dva členy. ")
                say_reward(" Všichni členové musí být kolem. ")
                say_reward(" [ENTER]Jinak tě nemohu pustit. ")
                return false;
            end
            
            local levelCheck = true
            local MemberHaveLowLevel = {}
            local MemberHaveHighLevel = {}
            local pids = {party.get_member_pids()}
            
            if not party.is_map_member_flag_lt("exit_ledov_dungeon_time", get_global_time() - 60 * 60 ) then
                say_reward(" Někteří členi skupiny ")
                say_reward(" musí ještě počkat. ")
                return false;
            end
                        
            for i, pid in next, pids, nil do
                q.begin_other_pc_block(pid)
                if pc.get_level() < settings["level_check"]["minimum"] then
                    table.insert(MemberHaveLowLevel, pc.get_name())
                    levelCheck = false
                end

                q.end_other_pc_block()
            end

            if not levelCheck then
                say_reward(" Pokud chceš vstoupit do Ledové rokle ")
                say_reward(" musíš mít alespoň level 201 ")
                say_reward("")
                say_reward(" Následující hráči nemají dostatečný level : ")
                for i, n in next, MemberHaveLowLevel, nil do
                    say_title("- "..n)
                end
                return
            end
            
            for i, pid in next, pids, nil do
                q.begin_other_pc_block(pid)
                if pc.get_level() > settings["level_check"]["maximum"] then
                    table.insert(MemberHaveHighLevel, pc.get_name())
                    levelCheck = false
                end

                q.end_other_pc_block()
            end

            if not levelCheck then
                say_reward(" Pokud chceš vstoupit do Ledové rokle ")
                say_reward(" Musíš mít maximálně level 300. ")
                say_reward("")
                say_reward(" Tito hráči mají příliš vysoký level : ")
                for i, n in next, MemberHaveHighLevel, nil do
                    say_title("- "..n)
                end
                return
            end
    
        else
        
            if ((get_global_time() - pc.getf("ledov_dungeon","exit_ledov_dungeon_time")) < 60*60) then
            
                local remaining_wait_time = (pc.getf("ledov_dungeon","exit_ledov_dungeon_time") - get_global_time() + 60*60)
                say(" Před vstupem do Cesty zkázy musíš počkat. ")
                say_reward(" Můžeš znovu vstoupit za: "..get_time_remaining(remaining_wait_time)..'[ENTER]')
                return
            end
            
            if (pc.get_level() < settings["level_check"]["minimum"]) then
                say(string.format(" Minimální level pro vstup do Ledové rokle je %d. ", settings["level_check"]["minimum"]))
                return false;
            end
            
            if (pc.get_level() > settings["level_check"]["maximum"]) then
                say(string.format(" Maximální level pro vstup do Ledové rokle je %d. ", settings["level_check"]["maximum"]))
                return false;
            end
        end
        
        return true;
    end    
        
    function create_dungeon()
        local setting = ledov_dungeon.settings()
        local pids = {party.get_member_pids()}
        
        if party.is_party() then
            game.set_event_flag("trumetin", 0)
            d.new_jump_party(setting["ledov_dungeon_index"], setting["ledov_dungeon_pos"][1][1], setting["ledov_dungeon_pos"][1][2])
            d.setf("ledov_dungeon_level", 1)
            d.regen_file("data/dungeon/ledov_dungeon/regen1.txt")
            server_timer("ledov_dungeon_30min_left", 7200, d.get_map_index())
            server_loop_timer("ledov_dungeon_wave_kill", 15, d.get_map_index())
        else
            game.set_event_flag("trumetin", 0)
            d.new_jump(setting["ledov_dungeon_index"], setting["ledov_dungeon_pos"][1][1]*100, setting["ledov_dungeon_pos"][1][2]*100)
            d.setf("ledov_dungeon_level", 1)
            d.regen_file("data/dungeon/ledov_dungeon/regen1.txt")
            server_timer("ledov_dungeon_30min_left", 7200, d.get_map_index())
            server_loop_timer("ledov_dungeon_wave_kill", 15, d.get_map_index())
        end
    end    
    
        
        
    
        when login with ledov_dungeon.is_ledoved() begin
            local settings = ledov_dungeon.settings()
                        
            d.set_warp_location(settings["ledov_dungeon_index_out"], settings["out_pos"][1], settings["out_pos"][2]);
            if not pc.is_gm() then
                if not pc.in_dungeon() then
                    pc.warp(settings["ledov_dungeon_index_out"], settings["out_pos"][1]*100, settings["out_pos"][2]*100)
                end
            end
        end    

        when 20089.chat." Ledová rokle " begin
            local settings = ledov_dungeon.settings()
            say_title(mob_name(20089))
            say("")
            say(" Opravdu chceš vstoupit do Ledové rokle? ")
            if (select ("Ano", "Ne") == 1) then
                if ledov_dungeon.check_enter() then
                    say_reward(" Na dokončení Ledové rokle máš pouze 2 hodiny.")
                    say_reward(" Po uplynutí této doby budete teleportování zpět sem. ")
                    say_reward(" Pro postup do dalšího patra zabij správnou příšeru" )
                    wait()
                    ledov_dungeon.create_dungeon()
                end
            end
        end

        ---TIME RESET - ONLY FOR GM
        when 20089.chat."Resetování času pyčo" with pc.is_gm() begin
            say("")
            say("")
            say("")
            if select('Resetovat čas kurva','Ne dopiči') == 2 then return end
                addimage(25, 10, "ledov_bg_01.tga")
                say("")
                say("")
                say("")
                say_title(mob_name(20095))
                say("")
                say("Bylo resetovane kundo")
                pc.setf('ledov_dungeon','exit_ledov_dungeon_time', 0)
                
                -- Dungeon Info
                pc.setqf("rejoin_time", get_time() - 3600)
        end    

        
        when 6101.kill or 6102.kill or 6103.kill or 6104.kill with pc.in_dungeon() and d.getf("ledov_dungeon_level") == 1 begin
            local n = number(1,8)
            if n == 1 or game.get_event_flag("trumetin") == 7 then
                d.notice("Správná příšera byla zabita.")
                ledov_dungeon.clear_ledovdungeon()
                d.setf("ledov_dungeon_level", 2)
                server_timer("ledov_dungeon_spawner", 15, d.get_map_index())    
            else
                game.set_event_flag("trumetin", game.get_event_flag("trumetin")+1)
            end
        end
        
        when ledov_dungeon_spawner.server_timer begin
            local settings = ledov_dungeon.settings()
            if d.select(get_server_timer_arg()) then
                if d.getf("ledov_dungeon_level") == 2 then
                    game.set_event_flag("tru", 0)
                    d.setf("ledov_dungeon_level", 3)
                    ledov_dungeon.boss1()
                    d.notice("Zabij správného bosse pro postup do dalšího patra")
                    d.notice("Pokud zabiješ špatného bosse může ti dát trest")
                    d.jump_all(settings["ledov_dungeon_pos"][2][1], settings["ledov_dungeon_pos"][2][2])
                elseif d.getf("ledov_dungeon_level") == 4 then
                    game.set_event_flag("truu", 0)
                    d.setf("ledov_dungeon_level", 5)    
                    d.regen_file("data/dungeon/ledov_dungeon/regen2.txt")
                    d.jump_all(245389, 244810)
                elseif d.getf("ledov_dungeon_level") == 6 then
                    d.setf("ledov_dungeon_level", 7)
                    d.regen_file("data/dungeon/ledov_dungeon/regenhradby.txt")
                    d.jump_all (245655, 244818)
                elseif d.getf("ledov_dungeon_level") == 8 then
                    d.setf("ledov_dungeon_level", 9)
                    ledov_dungeon.metin1()
                    d.notice("Rozbij správný balvan pro postup do dalšího patra.")
                    d.notice("Jeden balvan je špatný za jeho rozbití budeš potrestán")
                    game.set_event_flag("truuhrad", 0)
                elseif d.getf("ledov_dungeon_level") == 10 then
                    d.setf("ledov_dungeon_level", 11)
                    d.notice("Najdi a rozbij balvany.")
                    d.notice("Jeden balvan je špatný, za jeho rozbití dostaneš trest")
                    ledov_dungeon.blud()
                    game.set_event_flag("blud", 0)
                    d.jump_all (245903, 244789)
                elseif d.getf("ledov_dungeon_level") == 12 then
                    d.setf("ledov_dungeon_level", 13)
                    d.notice("Zabij všechny příšery balvany a bosse.")
                    d.regen_file("data/dungeon/ledov_dungeon/regenkomb.txt")
                    d.jump_all (244803, 245324)
                elseif d.getf("ledov_dungeon_level") == 14 then
                    d.notice("Zabij správného bosse pro postup")
                    d.notice("Jeden boss je špatný za jeho zabití budeš potrestán")
                    d.setf("ledov_dungeon_level", 15)
                    ledov_dungeon.bo()
                    game.set_event_flag("lord", 0)
                elseif d.getf("ledov_dungeon_level") == 16 then    
                    d.notice("Zabij Nemereho pro dokončení dungeonu")
                    d.setf("ledov_dungeon_level", 17)
                    d.regen_file("data/dungeon/ledov_dungeon/regenlast.txt")
                end
            end
        end
        
        when 6108.kill with pc.in_dungeon() and d.getf("ledov_dungeon_level") == 3 begin
            local n = number(1,4)
            if n == 1 or game.get_event_flag("tru") == 3 then
                d.notice("Správný boss byl zabit.")
                ledov_dungeon.clear_ledovdungeon()
                d.setf("ledov_dungeon_level", 4)
                server_timer("ledov_dungeon_spawner", 15, d.get_map_index())    
            else
                d.notice("Toto nebyl správný boss.")
                game.set_event_flag("tru", game.get_event_flag("tru")+1)
            end
        end    
        
        when 101.kill with pc.in_dungeon() and d.getf("ledov_dungeon_level") == 3 begin
            d.notice("Zabil jsi špatného bosse. Budeš potrestán.")
            d.notice("Aby jsi se vrátil zpět zabij správnou příšeru.")
            game.set_event_flag("trumet", 0)
            d.regen_file("data/dungeon/ledov_dungeon/regentrest.txt")
            server_timer("ledov_dungeon_trest", 3, d.get_map_index())    
        end
        
        when ledov_dungeon_trest.server_timer begin
            local settings = ledov_dungeon.settings()
            if d.select(get_server_timer_arg()) then
                if d.getf("ledov_dungeon_level") == 3 then
                    d.jump_all(244848, 244820)
                end
            end
        end
            
        
        when 6101.kill or 6102.kill or 6103.kill or 6104.kill or 6105.kill or 6106.kill or 6107.kill with pc.in_dungeon() and d.getf("ledov_dungeon_level") == 3 begin
            local n = number(1,8)
            if n == 1 or game.get_event_flag("trumet") == 7 then
                d.notice("Správná příšera byla zabita.")
                server_timer("ledov_dungeon_trestt", 10, d.get_map_index())    
            else
                game.set_event_flag("trumet", game.get_event_flag("trumet")+1)
            end
        end
        
        when ledov_dungeon_trestt.server_timer begin
            local settings = ledov_dungeon.settings()
            if d.select(get_server_timer_arg()) then
                if d.getf("ledov_dungeon_level") == 3 then
                    d.jump_all(245124, 245095)
                end
            end
        end
                


        when 6101.kill or 6102.kill or 6103.kill or 6104.kill or 6105.kill or 6106.kill or 6107.kill with pc.in_dungeon() and d.getf("ledov_dungeon_level") == 5 begin
            local n = number(1,8)
            if n == 1 or game.get_event_flag("truu") == 7 then
                d.notice("Správná příšera byla zabita.")
                ledov_dungeon.clear_ledovdungeon()
                d.setf("ledov_dungeon_level", 6)
                server_timer("ledov_dungeon_spawner", 15, d.get_map_index())    
            else
                game.set_event_flag("truu", game.get_event_flag("truu")+1)
            end
        end

        when ledov_dungeon_wave_kill.server_timer begin
            local settings = ledov_dungeon.settings()
            if d.select(get_server_timer_arg()) then
                if d.getf("ledov_dungeon_level") == 7 then
                    d.notice("Zabij všechny příšery")
                    if d.count_monster() == 0 then
                        clear_server_timer("ledov_dungeon_wave_kill", get_server_timer_arg())
                        d.setf("ledov_dungeon_level", 😎
                        d.notice("Zabil jsi všechny příšery.")
                        server_timer("ledov_dungeon_spawner", 1, d.get_map_index())
                    else
                        d.notice(string.format("Zbývá zabít %d příšer", d.count_monster()));
                    end
                elseif d.getf("ledov_dungeon_level") == 13 then
                    d.notice("Zabij všechny příšery")
                    if d.count_monster() == 0 then
                        clear_server_timer("ledov_dungeon_wave_kill", get_server_timer_arg())
                        d.setf("ledov_dungeon_level", 14)
                        d.notice("Zabil jsi všechny příšery.")
                        server_timer("ledov_dungeon_spawner", 20, d.get_map_index())
                    else
                        d.notice(string.format("Zbývá zabít %d příšer", d.count_monster()));
                    end                    
                end
            end
        end
        
        when 8630.kill with pc.in_dungeon() and d.getf("ledov_dungeon_level") == 9 begin
            local n = number(1,9)
            if n == 1 or game.get_event_flag("truuhrad") == 8 then
                d.notice("Správný balvan byl rozbit.")
                ledov_dungeon.clear_ledovdungeon()
                d.setf("ledov_dungeon_level", 10)
                server_timer("ledov_dungeon_spawner", 15, d.get_map_index())    
            else
                d.notice("Toto nebyl správný balvan.")
                game.set_event_flag("truuhrad", game.get_event_flag("truuhrad")+1)
            end
        end
        
        when 8001.kill with pc.in_dungeon() and d.getf("ledov_dungeon_level") == 9 begin
            game.set_event_flag("trs", 0)
            d.notice("Rozbil jsi špatný balvan. Budeš potrestán.")
            d.notice("Aby jsi se vrátil zpět zabij správnou příšeru.")
            d.regen_file("data/dungeon/ledov_dungeon/regentrest.txt")
            server_timer("ledov_dungeon_tres", 15, d.get_map_index())    
        end
        
        when ledov_dungeon_tres.server_timer begin
            local settings = ledov_dungeon.settings()
            if d.select(get_server_timer_arg()) then
                if d.getf("ledov_dungeon_level") == 9 then
                    d.jump_all(244848, 244820)
                end
            end
        end    
        
        when 6101.kill or 6102.kill or 6103.kill or 6104.kill or 6105.kill or 6106.kill or 6107.kill with pc.in_dungeon() and d.getf("ledov_dungeon_level") == 9 begin
            local n = number(1,8)
            if n == 1 or game.get_event_flag("trs") == 7 then
                d.notice("Správná příšera byla zabita.")
                d.clear_regen("data/dungeon/ledov_dungeon/regentrest.txt")
                server_timer("ledov_dungeon_pico", 15, d.get_map_index())    
            else
                game.set_event_flag("trs", game.get_event_flag("trs")+1)
            end
        end        
        
        when ledov_dungeon_pico.server_timer begin
            local settings = ledov_dungeon.settings()
            if d.select(get_server_timer_arg()) then
                if d.getf("ledov_dungeon_level") == 9 then
                    d.jump_all(245655, 244818)
                end
            end
        end    

        when 8630.kill with pc.in_dungeon() and d.getf("ledov_dungeon_level") == 11 begin
            local n = number(1,3)
            if n == 1 or game.get_event_flag("blud") == 2 then
                d.notice("Správný balvan byl rozbit.")
                ledov_dungeon.clear_ledovdungeon()
                d.setf("ledov_dungeon_level", 12)
                server_timer("ledov_dungeon_spawner", 15, d.get_map_index())    
            else
                d.notice("Toto nebyl správný balvan.")
                game.set_event_flag("blud", game.get_event_flag("blud")+1)
            end
        end
        
        when 8001.kill with pc.in_dungeon() and d.getf("ledov_dungeon_level") == 11 begin
            d.spawn_mob(8632, 122, 72)
            d.notice("Rozbil jsi špatný balvan. Budeš potrestán.")
            d.notice("Aby jsi se vrátil zpět rozbij správný balvan.")
            server_timer("ledov_dungeon_tres", 15, d.get_map_index())    
        end        
        
        when ledov_dungeon_tres.server_timer begin
            local settings = ledov_dungeon.settings()
            if d.select(get_server_timer_arg()) then
                if d.getf("ledov_dungeon_level") == 11 then
                    d.jump_all(244848, 244820)
                end
            end
        end

        when 8632.kill with pc.in_dungeon() and d.getf("ledov_dungeon_level") == 11 begin
            server_timer("ledov_dungeon_trestboss", 15, d.get_map_index())
            d.notice("Zabil jsi bosse, budeš teleportován zpět")
        end

        when ledov_dungeon_trestboss.server_timer begin
            local settings = ledov_dungeon.settings()
            if d.select(get_server_timer_arg()) then
                if d.getf("ledov_dungeon_level") == 11 then
                    d.jump_all(245655, 244818)
                end
            end
        end
        
        when 6109.kill with pc.in_dungeon() and d.getf("ledov_dungeon_level") == 15 begin
            local n = number(1,4)
            if n == 1 or game.get_event_flag("lord") == 3 then
                d.notice("Správný boss byl zabit.")
                ledov_dungeon.clear_ledovdungeon()
                d.setf("ledov_dungeon_level", 16)
                server_timer("ledov_dungeon_spawner", 15, d.get_map_index())    
            else
                d.notice("Toto nebyl správný boss.")
                game.set_event_flag("lord", game.get_event_flag("lord")+1)
            end
        end    
        
        when 102.kill with pc.in_dungeon() and d.getf("ledov_dungeon_level") == 15 begin
            d.notice("Zabil jsi špatného bosse. Budeš potrestán.")
            d.notice("Aby jsi se vrátil zpět zabij Mrazivého lorda")
            d.spawn_mob(102, 65, 93)
            server_timer("ledov_dungeon_trestik", 3, d.get_map_index())    
        end
        
        when ledov_dungeon_trestik.server_timer begin
            local settings = ledov_dungeon.settings()
            if d.select(get_server_timer_arg()) then
                if d.getf("ledov_dungeon_level") == 15 then
                    d.jump_all(244848, 244820)
                end
            end
        end
            
        
        when 102.kill with pc.in_dungeon() and d.getf("ledov_dungeon_level") == 15 begin
            server_timer("ledov_dungeon_lord", 10, d.get_map_index())
        end
        
        when ledov_dungeon_lord.server_timer begin
            local settings = ledov_dungeon.settings()
            if d.select(get_server_timer_arg()) then
                if d.getf("ledov_dungeon_level") == 15 then
                    d.jump_all(245124, 245095)
                end
            end
        end

        when kill with ledov_dungeon.is_ledoved() and not npc.is_pc() and npc.get_race() == 6191 begin
            local settings = ledov_dungeon.settings()
            if d.getf("ledov_dungeon_level") == 17 then                
                d.setf("ledov_dungeon_level", 18)
                d.notice("Úspěšně jsi dokončil dungeon")
                d.notice("Za dvě minuty budeš teleportován.")
                notice_all("Hráč ".. pc.get_name() .." dokázal projít Ledovou rokli!")
                server_timer("ledov_dungeon_final", 115, d.get_map_index())
            end
        end        
        
        when ledov_dungeon_30min_left.server_timer begin
            if d.select(get_server_timer_arg()) then
                d.notice("Zbývá 30 minut!")
                server_timer("ledov_dungeon_15min_left", 15*60, d.get_map_index())
            end
        end

        when ledov_dungeon_15min_left.server_timer begin
            if d.select(get_server_timer_arg()) then
                d.notice("Zbývá 15 minut!!")
                server_timer("ledov_dungeon_10min_left", 5*60, d.get_map_index())
            end
        end

        when ledov_dungeon_10min_left.server_timer begin
            if d.select(get_server_timer_arg()) then
                d.notice("Zbývá 10 minut!")
                server_timer("ledov_dungeon_5min_left", 5*60, d.get_map_index())
            end
        end

        when ledov_dungeon_5min_left.server_timer begin
            if d.select(get_server_timer_arg()) then
                d.notice("Zbývá 5 minut!")
                server_timer("ledov_dungeon_1min_left", 4*60, d.get_map_index())
            end
        end

        when ledov_dungeon_1min_left.server_timer begin
            if d.select(get_server_timer_arg()) then
                d.notice("Zbývá 1 minuta!")
                server_timer("ledov_dungeon_0min_left", 60, d.get_map_index())
            end
        end

        when ledov_dungeon_0min_left.server_timer begin
            if d.select(get_server_timer_arg()) then
                d.notice("Čas vypršel. Budeš teleportován.")
                server_timer("ledov_dungeon_final", 5, d.get_map_index())
            end
        end

        when ledov_dungeon_final.server_timer begin
            if d.select(get_server_timer_arg()) then                                
                d.exit_all()
            end
        end
        
        when logout with ledov_dungeon.is_ledoved() begin 
            pc.setf("ledov_dungeon","exit_ledov_dungeon_time", get_global_time())
            pc.setqf("ledov_dungeon", get_time() + 3600)
        end
        
    end
end

I think the problem is here with that index?

 

  Hide contents

    function is_ledoved()
        local pMapIndex = pc.get_map_index();
        local data = ledov_dungeon.settings();
        local map_index = data["ledov_dungeon_index"];

        return pc.in_dungeon() and pMapIndex >= map_index*10000 and pMapIndex < (map_index+1)*10000;

Thank you 🙂

The map index check are fine.

Maybe when it's not working you are trying to enter the dungeon from a different core.
create_dungeon function does a d.new_jump_party what will teleport, and right under it's do a d.regen_file("data/dungeon/ledov_dungeon/regen1.txt") what only works when you are in the same core. Like if the npc is in a map what is in channel1's game2 but the dungeon is in channel1's game1 core, it won't work. Simply move the map index to have the starting map (where the npc is) and the destination map (where the dungeon is) in the same core.

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now


×
×
  • Create New...

Important Information

Terms of Use / Privacy Policy / Guidelines / We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.