Jump to content

Snow_dungeon (Nemere) problem


Recommended Posts

Dear Devs,

I'm kinda struggling with snow_dungeon. I tried several quests and they "ends" with exact same result.

After I'm teleported into the snow dungeon map - which works well. Statue of Ice Lion is not spawn. I got npc done in mob_proto (both).

If I spawn it manually (or add it "hard" from npc.txt) it has quest content, but after you click it nothing happen, it just disappear and nothing else happen. (I got regen file also added)

 

The question is. What I'm missing, that this is happening.

Game rev. 40250 - by TMP and Mali

Thanks.

quest snow_dungeon begin
state start begin
    when 9010.chat."Spawn Statue" with snow_dungeon.is_nemeres_dungeon() == true begin
        d.purge()
        d.spawn_mob_dir(20397, 173,262,1)
        setskin(NOWINDOW)
    end
    when 9010.chat."TESTSERVER: SnowD Jump level 9" with snow_dungeon.is_nemeres_dungeon() == true    begin
        local set = snow_dungeon.get_settings()
        d.notice("Der Richtige Schlüssel wurde gefunden, in wenigen Sekunden geht es in den nächsten Stock.")
        server_timer("Jp_9",6,d.get_map_index())
        d.clear_regen()
        d.kill_all()
        d.regen_file("data/dungeon/ice_dungeon/zone_9.txt")
        setskin(NOWINDOW)
    end
    when 9010.chat."TESTSERVER: SnowD Jump level 10" with snow_dungeon.is_nemeres_dungeon() == true     begin
        local set = snow_dungeon.get_settings()
        server_timer("Jp_Boss",3,d.get_map_index())
        d.clear_regen()
        d.kill_all()
        d.regen_file("data/dungeon/ice_dungeon/zone_boss.txt")
        local v = set.BossVnumGroup
        d.spawn_group(v, 928, 335, 5 ,1, 1)
        setskin(NOWINDOW)
    end
    when 9010.chat."TESTSERVER: SnowD Spawn Boss" with snow_dungeon.is_nemeres_dungeon() == true  begin
        local set = snow_dungeon.get_settings()
        local v = set.BossVnumGroup
        d.spawn_group(v, 928, 335, 5 ,1, 1)
    end
    when 9010.chat."TESTSERVER: SnowD Ending" with snow_dungeon.is_nemeres_dungeon() == true  begin
        server_timer("Jp_OutAll",5,d.get_map_index())
        say("done")
    end
    when 9010.chat."TESTSERVER: SnowD Spawn create Cords Test level 5" with snow_dungeon.is_nemeres_dungeon() == true  begin
        snow_dungeon._Create_Stones_level5()
        setskin(NOWINDOW)
    end
    when 9010.chat."TESTSERVER: SnowD Create Key level 5" with snow_dungeon.is_nemeres_dungeon() == true  begin
        snow_dungeon._DropKeyOnLevel5()
        setskin(NOWINDOW)
    end
    when 9010.chat."TESTSERVER: SnowD Get Kords from Level" with snow_dungeon.is_nemeres_dungeon() == true begin
        local set = snow_dungeon.get_settings()
        local warp_to_level = set.Position_level_1
        local level = 2
        say("old: x: "..warp_to_level[1].." y:"..warp_to_level[2].."")
        local warp_to_level = set. _G[ "Position_level_"..level ]
        say("new: x: "..warp_to_level[1].." y:"..warp_to_level[2].."")
    end
    function get_settings()
        local snow_dungeon_settings = {}
        snow_dungeon_settings.map_index = 352
        snow_dungeon_settings.base_cord = {5120, 1536}
        snow_dungeon_settings.outside_entry_pos = {61,4329,1664}
        snow_dungeon_settings.need_level = 100
        snow_dungeon_settings.need_level_group = 100
        snow_dungeon_settings.WaitBeforOutAllOnExit = 60
        snow_dungeon_settings.NextJumpTime = 5
        snow_dungeon_settings.DurationLoopTimer = 45
        snow_dungeon_settings.wait_duration = 60*60
        snow_dungeon_settings.maxlife_time_on_dungeon = 60*60*1
        snow_dungeon_settings.DurationMaxOnReJoinGroup = 60*5
        snow_dungeon_settings.key_level_2 = 30331
        snow_dungeon_settings.NpcVnum_level_5 = 20398
        snow_dungeon_settings.StoneCount_level_5 = 6
        snow_dungeon_settings.Key_on_level_5 = 30332
        snow_dungeon_settings.StoneCords_level_5 = {
        {432,508},{437,493},{448,492},{448,476},{467,475},{466,464},
        {462,450},{458,428},{446,439},{431,431},{415,416},{402,427},
        {397,438},{375,434},{374,456},{390,468},{385,492},{402,505},
        {404,489},{386,482}
        }
        snow_dungeon_settings.MobVnum_level_6 = 8057
        snow_dungeon_settings.MobVnum_level_7 = 6151
        snow_dungeon_settings.SzelCords_level_7 = {
        {752,499},{758,479},{772,452},{763,444},{750,451},{728,441},
        {726,455},{718,482},{715,491},{731,473},{748,429}
        }
        snow_dungeon_settings.Key_on_level_8 = 30333
        snow_dungeon_settings.NpcVnum_level_9 = 20399
        snow_dungeon_settings.BossVnumGroup = 6062
        snow_dungeon_settings.BossVnum = 6191
        
        snow_dungeon_settings.Position_level_1 = { 171,271 } 
        snow_dungeon_settings.Position_level_2 = { 761,270 } 
        snow_dungeon_settings.Position_level_3 = { 187,491 } 
        snow_dungeon_settings.Position_level_4 = { 421,259 } 
        snow_dungeon_settings.Position_level_5 = { 419,530 } 
        snow_dungeon_settings.Position_level_6 = { 571,706 } 
        snow_dungeon_settings.Position_level_7 = { 746,534 } 
        snow_dungeon_settings.Position_level_8 = { 303,710 } 
        snow_dungeon_settings.Position_level_9 = { 848,693    }
        snow_dungeon_settings.Position_level_10 = { 927,391 }
        snow_dungeon_settings.Enable_TestServerMode = false     
        snow_dungeon_settings.IsNewga_me_re_vi_sion = false     
        return snow_dungeon_settings
    end
    function is_TestServerMode()
        local set = snow_dungeon.get_settings()
        return set.Enable_TestServerMode
    end
    function is_nemeres_dungeon()
        local set = snow_dungeon.get_settings()
        local map = pc.get_map_index()
        if map >= (set.map_index * 10000) and map < (set.map_index * 10000 + 9000) then
            return true
        else
            return false
        end
    end
    when 20395.chat."Nemeres Warte: Gruppe beitreten" with (party.is_party() and d.find(party.getf("ice_dungeon_map_index"))) begin
        local set = snow_dungeon.get_settings()
        local n = party.getf("ice_dungeon_map_index")
        local cord = set.base_cord
        local level = d.getf_from_map_index("level", n)
        if level == 0 then
            --say_npc_name()
            say("Deine Gruppe hat den Run bereits beendet.")
            return
        end
        if pc.getqf("out_party_time") < get_global_time() then
            --say_npc()
            say("")
            say("Du hast länger als     "..math.ceil(set.DurationMaxOnReJoinGroup    /60) .." Minute(n) vor dem")
            say("Eisberg verweilt und kannst jetzt nicht")
            say("mehr eintreten.")
            return
        end
        if n == 0 then
            setskin(NOWINDOW)
            return
        else
            --say_npc()
            say("")
            say("Möchtest du deiner Gruppe wieder beitreten?")
            if select("Beitreten","Abbrechen") == 1 then
                local warp_to_level = set.Position_level_1
                local level = d.getf_from_map_index("level", n)
                if level >= 1 and level <= 10 then
                    if level == 1 then           warp_to_level = set.Position_level_1
                    elseif level == 2 then      warp_to_level = set.Position_level_2
                    elseif level == 3 then      warp_to_level = set.Position_level_3
                    elseif level == 4 then      warp_to_level = set.Position_level_4
                    elseif level == 5 then      warp_to_level = set.Position_level_5
                    elseif level == 6 then      warp_to_level = set.Position_level_6
                    elseif level == 7 then      warp_to_level = set.Position_level_7
                    elseif level == 8 then      warp_to_level = set.Position_level_8
                    elseif level == 9 then      warp_to_level = set.Position_level_9
                    elseif level == 10 then       warp_to_level = set.Position_level_10
                    end
                    pc.warp((cord[1] + warp_to_level[1])*100,(cord[2] + warp_to_level[2])*100,n)
                else
                    return
                end
            end
        end
    end
    
    when 20395.chat."Nemeres Warte" begin
        local set = snow_dungeon.get_settings()
        local need_level = set.need_level
        say_title("Die Nemeres Warte ~ Dungeon")
        say("")
        say("Einen Kampf mit Nemeres aufnehmen.")
        say("")
        say_reward("Möchtest du die Nemeres Warte betreten?")
        if select("Die Nemeres Warte betreten", "Abbrechen") == 2 then
            return
        end
        if (pc.is_gm() and pc.getf("snow_dungeon","duration") >= get_global_time()) then
            say("Your are GameMaster, remove the duration?")
            if select("Yes","No") == 1 then
                pc.setf("snow_dungeon","duration",0)
                return
            end
        end
        if (is_test_server() and snow_dungeon.is_TestServerMode() == true ) then
            say("TestServer Mode is enable.")
            say("Join now")
            timer("make_dungeon",3)
            return
        end
        if not party.is_leader() then
            say_title("Die Nemeres Warte ~ Dungeon")
            say("")
            say_reward("Betreten fehlgeschlagen!")
            say("")
            say("Ich schätze deinen Mut, doch alleine wirst du in")
            say("der Nemeres-Warte in dein Verderben rennen.")
            say("Stelle eine starke Gruppe zusammen und ich werde")
            say("dir Einlass gewähren.")
            return
        end
        if pc.get_level() < 100 then
            say_title("Die Nemeres Warte ~ Dungeon")
            say("")
            say_reward("Betreten fehlgeschlagen!")
            say("")
            say("Ich schätze deinen Mut, doch um den Dungeon")
            say("betreten zu können, musst du level "..need_level.."")
            say("erreicht haben.")
            say("")
            say_reward("Bitte komme später nochmal vorbei.")
            return
        end
        if pc.getf("snow_dungeon","duration") >= get_global_time() then
            say_title("Die Nemeres Warte ~ Dungeon")
            say("")
            say_reward("Betreten fehlgeschlagen!")
            say("")
            say("Die Wartezeit für den Wiedereintritt in die")
            say("Nemeres-Warte ist noch nicht abgelaufen. ")
            --say("Verb. Zeit: "..LIB_duration(pc.getf("snow_dungeon","duration") - get_global_time()).."")
            return
        end
        if snow_dungeon._CheckMembersLevel() == false then      
            return
        else
            timer("make_dungeon",2)
        end
    end
    when 20397.chat."Die Schlacht beginnen" begin
        say_title("Die Nemeres Warte ~ Dungeon")
        say("")
        say_reward("Einen Kampf zu Nemeres beginnen.")
        say("")
        say("Möchtet Ihr den Kampf zu Nemeres beginnen?")
        if select("Beginnen","Abbrechen") == 1 then
            local set = snow_dungeon.get_settings()
            local loop_durr = set.DurationLoopTimer
            local wait_durations = set.wait_duration
            local t = get_global_time()
            d.setf("LastTimeGetOutPut",0)     
            server_loop_timer("CheckLevelAndCountKillOnMobs",loop_durr,d.get_map_index())
            d.regen_file("data/dungeon/ice_dungeon/zone_1.txt")
            d.setf("Start_Time",t + set.maxlife_time_on_dungeon)
            server_timer("Jp_OutAllFailNotice",(t + set.maxlife_time_on_dungeon) -    t,d.get_map_index())
            d.setqf2("snow_dungeon","duration",t + wait_durations)
            d.setf("level",1)
            d.notice("Die ersten Monster erscheinen, tötet alle um in den nächsten Stock zu gelangen.") 
            npc.purge()
            snow_dungeon._GetLastTime()
        end
        setskin(NOWINDOW)
    end
    when make_dungeon.timer begin
        local set = snow_dungeon.get_settings()
        local cord = set.base_cord
        local start_pos = set.Position_level_1
        local t = get_global_time()
        d.new_jump_party(set.map_index,(cord[1] + start_pos[1]), (cord[2] + start_pos[2]))
        snow_dungeon._ClearAlls()
        d.setf("party_leader_pid",party.get_leader_pid())
        party.setf("ice_dungeon_map_index",d.get_map_index())
        d.spawn_mob_dir(20397, 173,262,1)
    end
    function _ClearAlls()
        local d_index = d.get_map_index()
        clear_server_timer("CheckLevelAndCountKillOnMobs",d_index)
        clear_server_timer("Jp_1",d_index)
        clear_server_timer("Jp_2",d_index)
        clear_server_timer("Jp_3",d_index)
        clear_server_timer("Jp_4",d_index)
        clear_server_timer("Jp_5",d_index)
        clear_server_timer("Jp_6",d_index)
        clear_server_timer("Jp_7",d_index)
        clear_server_timer("Jp_8",d_index)
        clear_server_timer("Jp_9",d_index)
        clear_server_timer("Jp_10",d_index)
        clear_server_timer("Jp_OutAll",d_index)
        clear_server_timer("Jp_OutAllFail",d_index)
        clear_server_timer("Jp_OutAllFailNotice",d_index)
        d.setf("level",0)     
        d.setf("party_leader_pid",0)
        d.setf("Start_Time",0)
        d.setf("LastTimeGetOutPut",0)
        d.setf("Stone_5_count",0)
        d.setf("Stone_5_item_fail",0)
        d.clear_regen()
        d.kill_all()
    end
    
    function _CheckMembersLevel()
        local set = snow_dungeon.get_settings()
        local user_fail_level = {}
        local pids = {party.get_member_pids()}
        local need_level = set.need_level_group
        local have_ninja = true
        local have_shaman = true
        for i = 1, table.getn(pids), 1 do
            q.begin_other_pc_block(pids[i])
            if pc.get_level() < need_level then
                table.insert(user_fail_level, table.getn(user_fail_level) +1, pc.get_name())
            end
            local job = pc.get_job()
            if job == 1
            or job == 5
            then
                have_ninja = true
            end
            if job == 3
            or job == 7
            then
                have_shaman = true
            end
            q.end_other_pc_block()
        end
        if (is_test_server() and snow_dungeon.is_TestServerMode() == true ) then
            return true
        end
        if have_ninja == false then
            say("Ihr könnt diesen Dungeon nicht ohnen einen")
            say("Ninja betreten.")
            return false
        end
        if have_shaman == false then
            say("Ihr könnt diesen Dungeon nicht ohnen einen")
            say("Schamanen betreten.")
            return false
        end
        if table.getn(user_fail_level) >= 1 then
            --say_npc()
            say("")
            say("Einige Mitglieder einer Gruppe haben das")
            say("Level "..need_level.." noch nicht erreicht:")
            for x = 1, table.getn(user_fail_level), 1 do
                say(color(1,1,0), "       "..user_fail_level[x])
            end
            return false
        end
        if table.getn(user_fail_level) == 0 then
            return true
        end
    end
    when logout begin
        if snow_dungeon.is_nemeres_dungeon() == true then
        local set = snow_dungeon.get_settings()
        pc.setqf("out_party_time",get_global_time() + set.DurationMaxOnReJoinGroup)
        end
    end
    
    when login begin
        if snow_dungeon.is_nemeres_dungeon() == true then
            local set = snow_dungeon.get_settings()
            local backk = set.outside_entry_pos
            pc.set_warp_location(backk[1], backk[2],backk[3])
            if d.getf("party_leader_pid") != party.get_leader_pid() then
                chat("nemeres_wait_dungeon #RAUS:#    Outside, your Group is not on this Dungeon")
                chat("nemeres_wait_dungeon #RAUS:#debug -> "..d.getf("party_leader_pid").." != "..party.get_leader_pid().."")
                d.exit()
                return
            end
            if pc.get_level() < set.need_level_group then
                chat("nemeres_wait_dungeon #RAUS:#    My level is low")
                d.exit()
                return
            end
        end
    end
    
    function _GetLastTime()
        local c = get_global_time()
        local t = d.getf("Start_Time") - c
        local o = d.getf("LastTimeGetOutPut")
        if c >= o then
            if t >= 60 then
                d.notice("Verbleibende Zeit: "..math.ceil(t / 60).." Minute(n)")
                d.notice("Nach Ablauf der Zeit wird die Gruppe aus der Warte teleportiert.")
            else
                d.notice("Verbleibende Zeit: "..t .." Sekunde(n)")
            end
            if t >= (60*10) then
                d.setf("LastTimeGetOutPut",c + 60*5)
            elseif t >= (60*5) then
                d.setf("LastTimeGetOutPut",c + 60*2)
            else
                d.setf("LastTimeGetOutPut",c + 10)
            end
        end
    end
    
    when Jp_OutAllFailNotice.server_timer begin
        if d.select(get_server_timer_arg()) then
            d.notice("Dungeon fehlgeschlagen. Die Zeit ist abgelaufen")
            server_timer("Jp_OutAll",1,d.get_map_index())
        end
    end
    
    when CheckLevelAndCountKillOnMobs.server_timer begin
        if d.select(get_server_timer_arg()) then
            local set = snow_dungeon.get_settings()
            local level = d.getf("level")
            local mob_count = d.count_monster()
            d.notice("Information: Ebene "..level..". Verbleibende Monster: "..mob_count)
            local next_jump_time = set.NextJumpTime
            if level == 1 and mob_count <= 0 then
                d.notice("Ihr habt alle Monster besiegt, in wenigen Sekunden geht es in den nächsten Stock.")
                server_timer("Jp_2",next_jump_time,d.get_map_index())
                d.clear_regen()
                d.kill_all()
                d.set_regen_file("data/dungeon/ice_dungeon/zone_2.txt")
            elseif level == 3 and mob_count <= 0 then
                d.notice("Ihr habt alle Monster besiegt, in wenigen Sekunden geht es in den nächsten Stock.")
                server_timer("Jp_4",next_jump_time,d.get_map_index())
                d.clear_regen()
                d.kill_all()
                d.regen_file("data/dungeon/ice_dungeon/zone_4.txt")
            elseif level == 4 and mob_count <= 0 then
                d.notice("Ihr habt alle Monster besiegt, in wenigen Sekunden geht es in den nächsten Stock.")
                server_timer("Jp_5",next_jump_time,d.get_map_index())
                d.clear_regen()
                d.kill_all()
                d.set_regen_file("data/dungeon/ice_dungeon/zone_5.txt")
            elseif level == 6 and mob_count <= 0 then
                local MobStonelvl6 = set.MobVnum_level_6
                d.notice("Ihr habt alle Monster besiegt: Der "..mob_name(MobStonelvl6).." erscheint.")
                d.clear_regen()
                d.kill_all()
                d.regen_file("data/dungeon/ice_dungeon/zone_6.txt")
                d.spawn_mob(MobStonelvl6,570,649)
            elseif level == 7 and mob_count <= 0 then
                d.notice("Ihr habt alle Monster besiegt, in wenigen Sekunden geht es in den nächsten Stock.")
                server_timer("Jp_8",next_jump_time,d.get_map_index())
                d.clear_regen()
                d.kill_all()
                d.set_regen_file("data/dungeon/ice_dungeon/zone_8.txt")                   
            end
            snow_dungeon._GetLastTime()
        end
    end

    when Jp_2.server_timer begin
        if d.select(get_server_timer_arg()) then
            local set = snow_dungeon.get_settings()
            local v = set.key_level_2
            d.setf("level",2)
            local cord = set.base_cord
            local pos = set.Position_level_2
            d.jump_all((cord[1] + pos[1]), (cord[2] + pos[2]))
            d.notice("Findet den richtigen "..item_name(v).." um weiter zu gelangen.")
        end
    end
    when 30331.use with snow_dungeon.is_nemeres_dungeon() == true begin
        local set = snow_dungeon.get_settings()
        local next_jump_time = set.NextJumpTime
        local job = pc.get_job()
        local level = d.getf("level")
        if level == 2 then
            if (is_test_server() and snow_dungeon.is_TestServerMode() == true ) then
                job = 3
            end
                if number(1,3) == 1 then
                    d.notice("Der Richtige Schlüssel wurde gefunden, in wenigen Sekunden geht es in den nächsten Stock.")
                    server_timer("Jp_3",next_jump_time,d.get_map_index())
                    d.clear_regen()
                    d.kill_all()
                    d.regen_file("data/dungeon/ice_dungeon/zone_3.txt")
                    item.remove()
                else
                    d.notice("Das war der Falsche Schlüssel.")
                    item.remove()
                end
        end
    end
    
    when Jp_3.server_timer begin
        if d.select(get_server_timer_arg()) then
            local set = snow_dungeon.get_settings()
            d.setf("level",3)
            local cord_MQ = set.base_cord
            local pos = set.Position_level_3
            d.jump_all((cord_MQ[1] + pos[1]), (cord_MQ[2] + pos[2]))
            d.notice("Tötet auf dieser Ebene alle Monster, um in den nächsten Stock zu gelangen.")
        end
    end
    
    when Jp_4.server_timer begin
        if d.select(get_server_timer_arg()) then
            local set = snow_dungeon.get_settings()
            d.setf("level",4)
            local cord = set.base_cord
            local pos = set.Position_level_4
            d.jump_all((cord[1] + pos[1]), (cord[2] + pos[2]))
            d.notice("Tötet auf dieser Ebene alle Monster, um in den nächsten Stock zu gelangen.")
        end
    end
    
    when Jp_5.server_timer begin
        if d.select(get_server_timer_arg()) then
            local set = snow_dungeon.get_settings()
            local v = set.NpcVnum_level_5
            d.setf("level",5)
            local cord = set.base_cord
            local pos = set.Position_level_5
            d.jump_all((cord[1] + pos[1]), (cord[2] + pos[2]))
            d.notice("Öffnet in der richtigen Reihenfolge die Siegel um die "..mob_name(v).." zu zerstören.")
            if set.IsNewga_me_re_vi_sion == true then
                d.notice("Die Monster lassen die Schlüssel fallen.")
            else
                d.notice("Die Schlüssel wandern automatisch in dein Inventar.")
            end
            snow_dungeon._Create_Stones_level5()
        end
    end
    
    function _DropKeyOnLevel5()
        if number(500,1000) >= 666 then
            return
        end
        local set = snow_dungeon.get_settings()
        local count = set.StoneCount_level_5
        local vnum = set.Key_on_level_5
        local get_random_unique = d.get_unique_vid("stone5_"..number(1,count).."")
        local fail_count = d.getf("Stone_5_item_fail") +1
        local search = d.getf("Stone_5_count")
        local search2 = d.get_unique_vid("stone5_"..search.."")
        if search2 != get_random_unique then
            d.setf("Stone_5_item_fail",fail_count)
        end
        if set.IsNewga_me_re_vi_sion == true then
            --game.drop_item_and_select(vnum,1)
        else
            pc.give_item2_select(vnum,1)
        end
        if (is_test_server() and snow_dungeon.is_TestServerMode() == true ) then
            item.set_socket(1,search2)
            d.setf("Stone_5_item_fail",0)
        elseif fail_count > 6 then
            item.set_socket(1,search2)
            d.setf("Stone_5_item_fail",0)
        else    
            item.set_socket(1,get_random_unique)
        end
    end
    
    function _Create_Stones_level5()
        local set = snow_dungeon.get_settings()
        local stone_level5_count_MQ = set.StoneCount_level_5
        local c = set.StoneCords_level_5
        local v = set.NpcVnum_level_5
        for i = 1, stone_level5_count_MQ, 1 do
            local n = number(1,table.getn(c))
            d.set_unique("stone5_"..i.."", d.spawn_mob(v, c[n][1], c[n][2]))
            table.remove(c,n)
            if i == 1 then
                d.setf("Stone_5_count",1)
                d.setf("Stone_5_item_fail",0)
            end
        end
    end
    
    when 20398.take begin
        if snow_dungeon.is_nemeres_dungeon() == true then
            local set = snow_dungeon.get_settings()
            local stone_level5_count = set.StoneCount_level_5
            local next_jump_time = set.NextJumpTime
            local vnum = item.get_vnum()
            local key_level_5 = set.Key_on_level_5
            local unique_item = item.get_socket(1)
            if (is_test_server() and snow_dungeon.is_TestServerMode() == true ) then
                d.notice("TESTSERVERMODE, in wenigen Sekunden geht es in den nächsten Stock.")
                npc.purge()
                item.remove()
                server_timer("Jp_6",next_jump_time,d.get_map_index())
                d.clear_regen()
                d.kill_all()
                d.regen_file("data/dungeon/ice_dungeon/zone_6.txt")
                return
            end
            if vnum == key_level_5 then
                local npc_vid = npc.get_vid()
                local search = d.getf("Stone_5_count")
                local search2 = d.get_unique_vid("stone5_"..search.."")
                if npc_vid == search2 then
                    if unique_item == npc_vid then
                        local new = search +1 
                        if new > stone_level5_count then
                            d.notice("Der letzte Stein wurde endeckt, in wenigen Sekunden geht es in den nächsten Stock.")
                            npc.purge()
                            item.remove()
                            server_timer("Jp_6",next_jump_time,d.get_map_index())
                            d.clear_regen()
                            d.kill_all()
                            d.regen_file("data/dungeon/ice_dungeon/zone_6.txt")
                        else
                            d.notice("Der "..search..". Stein wurde endeckt. Es müssen noch weitere ".. stone_level5_count - search .." Steine gefunden werden.")
                            npc.purge()
                            item.remove()
                        end
                        d.setf("Stone_5_count",new)
                    else
                        chat("Das ist zwar der richtige Stein, aber der falsche Schlüssel.")
                        item.remove()
                    end
                else
                    chat("Das ist nicht der richtige Stein.")
                end
            end
        end 
    end
    
    when Jp_6.server_timer begin
        if d.select(get_server_timer_arg()) then
            local set = snow_dungeon.get_settings()
            local v = set.MobVnum_level_6
            d.setf("level",6)
            local cord = set.base_cord
            local pos = set.Position_level_6
            d.jump_all((cord[1] + pos[1]), (cord[2] + pos[2]))
            
            d.notice("Ihr habt alle Monster getötet.")
            d.notice("Tötet nun alle Monster und zerstört anschließend den "..mob_name(v).."")
            
        end
    end
    
    when Jp_7.server_timer begin
        if d.select(get_server_timer_arg()) then
            local set = snow_dungeon.get_settings()
            local v = set.MobVnum_level_7
            d.setf("level",7)
            local cord = set.base_cord
            local pos = set.Position_level_7
            d.jump_all((cord[1] + pos[1]), (cord[2] + pos[2]))
            d.notice("Ihr habt den Metinstein erfolgreich zerstört nun Tötet alle Monster und "..mob_name(v)..".")
        end
    end
    
    when Jp_8.server_timer begin
        if d.select(get_server_timer_arg()) then
            local set = snow_dungeon.get_settings()
            local v = set.Key_on_level_8
            d.setf("level",8)
            local cord = set.base_cord
            local pos = set.Position_level_8
            d.jump_all((cord[1] + pos[1]), (cord[2] + pos[2]))
            d.notice("Tötet solange Monster bis ihr den richtigen "..item_name(v).." habt.")
        end
    end
    
    when 30333.use with snow_dungeon.is_nemeres_dungeon() == true begin
        local set = snow_dungeon.get_settings()
        local next_jump_time = set.NextJumpTime
        local level = d.getf("level")
        local job = pc.get_job()
        if level == 8 then
            if (is_test_server() and snow_dungeon.is_TestServerMode() == true ) then
                job = 3
            end
            if number(1,3) == 1 then
                d.notice("Der Richtige Schlüssel wurde gefunden, in wenigen Sekunden geht es in den nächsten Stock.")
                server_timer("Jp_9",next_jump_time,d.get_map_index())
                d.clear_regen()
                d.kill_all()
                d.regen_file("data/dungeon/ice_dungeon/zone_9.txt")
                item.remove()
            else
                d.notice("Das war der falsche Schlüssel.")
                item.remove()
            end
        end
    end
    
    when Jp_9.server_timer begin
        if d.select(get_server_timer_arg()) then
            local set = snow_dungeon.get_settings()
            local v = set.NpcVnum_level_9
            d.setf("level",9)
            local cord = set.base_cord
            local pos = set.Position_level_9
            d.jump_all((cord[1] + pos[1]), (cord[2] + pos[2]))
            d.notice("Zerstört die "..mob_name(v).." ")
            d.spawn_mob(v,849,655)
        end
    end
    
    when Jp_Boss.server_timer begin
        if d.select(get_server_timer_arg()) then
            local set = snow_dungeon.get_settings()
            local v = set.BossVnum
            d.setf("level",10)
            local cord = set.base_cord
            local pos = set.Position_level_10
            d.jump_all((cord[1] + pos[1]), (cord[2] + pos[2]))
            d.notice("Besiegt "..mob_name(v)..", den König über Frost und Eis.")
        end
    end
    
    when kill begin
        if snow_dungeon.is_nemeres_dungeon() == true then
            local set = snow_dungeon.get_settings()
            local next_jump_time = set.NextJumpTime
            local level = d.getf("level")
            local stone_level_6 = set.MobVnum_level_6
            local stone_level_9 = set.NpcVnum_level_9
            local boss_vnum = set.BossVnum
            local wait_time = set.WaitBeforOutAllOnExit
            local mobvnum = npc.get_race()
            if level == 2 and mobvnum >= 6101 and mobvnum <= 6108 and 1 == number(1,10)     then
                local v = set.key_level_2
                game.drop_item(v,1)
            elseif level == 5 and mobvnum >= 6101 and mobvnum <= 6108 and 1 == number(1,15) then
                snow_dungeon._DropKeyOnLevel5()
            elseif level == 6 and mobvnum == stone_level_6 then
                d.notice("Der "..mob_name(stone_level_6).." wurde zerstört, in wenigen Sekunden geht es in den nächsten Stock.")
                server_timer("Jp_7",next_jump_time,d.get_map_index())
                d.clear_regen()
                d.kill_all()
                d.regen_file("data/dungeon/ice_dungeon/zone_7.txt")
                local v_MQv = set.MobVnum_level_7
                local c = set.SzelCords_level_7
                local n = number(1,table.getn(c))
                d.spawn_mob(v_MQv, c[n][1], c[n][2])
            elseif level == 8 and mobvnum >= 6101 and mobvnum <= 6108 and 1 == number(1,10) then
                local v = set.Key_on_level_8
                game.drop_item(v,1)       
            elseif level == 9 and mobvnum == stone_level_9 then
                d.notice("Der "..mob_name(stone_level_9).." wurde zerstört, in wenigen Sekunden geht es in den nächsten Stock.")
                server_timer("Jp_Boss",next_jump_time,d.get_map_index())
                d.clear_regen()
                d.kill_all()
                d.regen_file("data/dungeon/ice_dungeon/zone_boss.txt")
                local v = set.BossVnumGroup
                d.spawn_group(v, 928, 335, 5 ,1, 1)
            elseif level == 10 and mobvnum == boss_vnum then
                d.clear_regen()
                d.kill_all()
                game.drop_item_with_ownership(72000, 1)
                game.drop_item_with_ownership(81002, 1)
                game.drop_item_with_ownership(72000, 1)
                notice_all("Die Gruppe von ".. pc.get_name() .." haben "..mob_name(boss_vnum).." besiegt. Herzlichen Glückwunsch!")
                notice_all("Endlich herrscht Frieden in der Nemeres Warte.")
                d.notice("Alle Kämpfer werden in einer Minute aus der Nemeres-Warte teleportiert.")
                server_timer("Jp_OutAll",wait_time,d.get_map_index())
            end
        end
    end
    when Jp_OutAll.server_timer begin
        if d.select(get_server_timer_arg()) then
            snow_dungeon._ExitAll()
        end
    end
    function _ExitAll()
        d.exit_all()
    end
end
end     

 

 

 

Link to comment
Share on other sites

  • Replies 3
  • Created
  • Last Reply

Top Posters In This Topic

  • 3 weeks later...

Please sign in to comment

You will be able to leave a comment after signing in



Sign In Now

Announcements



×
×
  • 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.