Jump to content

como podría modificar estas quest ?


pruden

Mensajes recomendados

Quiero modificar el nivel de acceso a catacumbas para que enver de 75 pida que seamos nivel 90 para entrar  y el tiempo que puedes permanecer en el mapa por 360 minutos   también necesito saver que archivo tengo que modificar para hacer que el nivel de entrada a cape sea 75 enver de 90 uso los files maxmi 34k

 

Aquí dejo la quest de catas que estoy usando 

 
quest devilscatacomb begin
    state start begin
 
    function setting()
        return
        {
 
        ["base"]={["x"] = 3072  , ["y"]= 12032 ,},
        ["floor1_s"] = { ["x"] = 20, ["y"] = 20, },
        ["floor1_e"] = { ["x"] = 500, ["y"] = 470,},
        ["floor2_s"] = { ["x"] = 510, ["y"] = 18, },
        ["floor2_e"] = { ["x"] = 978, ["y"] = 470,},
        ["floor1_entry"] = {["x"] = 73, ["y"] = 63,},
        ["floor2_entry"] = {["x"] = 550, ["y"] = 45,},
        ["floor3_entry"] = {["x"] = 1378, ["y"] = 249,},
        ["floor4_entry"] = {["x"] = 70, ["y"] = 592,},
        ["floor5_entry"] = {["x"] = 846, ["y"] = 898},
        ["floor6_entry"] = {["x"] = 1362, ["y"] = 666},
        ["floor7_entry"] = {["x"] = 73, ["y"] = 1156},
 
        ["map_idx"] = 206,
        ["rag"] = 30311,
 
        ["devil_king"] = 2591,
 
        ["reapers_credit1"] = 30319,
        ["reapers_credit2"] = 30320,
        ["reapers_credit3"] = 76002,
        ["reapers_credit4"] = 79001,
 
        ["floor3_stone"] = 8038,  
        ["floor3_stone_pos"] = {
                {1366,    150},
                {1366,    351},
                {1234,    365},
                {1234,    140},
                {1150,    135},
                {1130,    365},
                {1135,    253}
        },
 
        ["mob_regen_file_path"] = "data/dungeon/devilcatacomb/",
        ["floor4_regen_file"] = {"devilcatacomb_floor4_regen1.txt",
                               "devilcatacomb_floor4_regen2.txt",
                               "devilcatacomb_floor4_regen3.txt",
                               "devilcatacomb_floor4_regen4.txt",
                               "devilcatacomb_floor4_regen5.txt"} ,
 
        ["credit_stone"] = 30101,
        ["credit_stone_pos"] = {307,323},
        ["floor2_stone"] = 30103,
        ["floor2_stone_pos"] = {741,217},
        ["floor2_merchant_npc"] = 20368,
        ["floor2_merchant_npc_pos"] = {734,214},
        
        ["floor4_npc"] = 30104,
        ["floor4_npc_pos"] = {500, 717},
 
        ["devil_king_pos"] = {{673,829},{691,638},{848,568},{1026,642},{1008,862}},
 
        ["unlock_stone"] = 30312,
        ["floor5_stone"] = 30102,
        ["floor5_stone_pos"] = {848, 735},
 
        ["devil_great_king"] = 2597 ,
        ["devil_great_king_pos"] = {1303,704},
        ["devil_emperor"] = 2598,
        ["devil_emperor_pos"] = {74,1103},
 
        ["dc2_door_set_size"] = {4,2,3,2},
        ["dc2_door_set1"] = {
                                {{30111,    566,    117,    5},{30112,  562,    311,    5,},{30118, 663,    434,    7},{30119,  881,    434,    7}},
                                {{30116,    743,    390,    3},{30119,  612,    251,    1,}},
                                {{30113,    654,    211,    5},{30111,  707,    338,    7,},{30112, 775,    336,    7}},
                                {{30117,    733,    294,    3},{30113,  694,    271,    1,}}
                            },
        ["dc2_door_set2"] = {
                                {{30115,    942,    141,    5},{30116,  942,    245,    5},{30117,  942,    321,    5},{30115,  763,    64, 7}},
                                {{30118,    643,    116,    3},{30114,  900,    167,    1}},
                                {{30114,    850,    293,    5},{30113,  715,    164,    7},{30114,  817,    162,    7}},
                                {{30111,    802,    277,    1},{30112,  800,    241,    1}}
                            },
        }
    end
        when login begin
            local setting = devilscatacomb.setting()
            local idx = pc.get_map_index()
            if idx >= (setting.map_idx * 10000) and idx < ((setting.map_idx + 1) * 10000) then
--                pc.set_warp_location(65, 5914, 992)         -----------아귀동굴 좌표로
                local level = d.getf("level")
                -- warp location이 0,0 이면 시스템 상으로, 종료 시, 종료 위치를 시작 위치로 저장한다.
                d.set_warp_location (0, 0, 0)
                    
                if level == 2 then
                    say("3. kata ulasmak i?n bu kapilarin m??lerini s?!")
                    say("60 dakikan daha var.")
                elseif level == pc.getqf ("level") then
--                    say ("낙오되지 않기 위해 동료들과 합류하십시오.")
                    --say (locale.devilcatacomb_follow_peer)
                else
--                    say (locale.devilcatacomb_dropout)
--                    say ("당신은 낙오되었습니다. 용신의 힘을 빌어 잠시 뒤 동굴 밖으로 이동합니다.")
--                    timer ("devilcatacomb_ban_timer", 5)
                end
            end
            if idx == setting.map_idx then
                pc.setf("devilscatacomb","last_exit_time", get_global_time())
                -- 2?이상이면, 쫓겨나
                if pc.get_x() < setting.floor1_s.x + setting.base.x
                    or pc.get_y() < setting.floor1_s.y + setting.base.y
                    or pc.get_x() > setting.floor1_e.x + setting.base.x
                    or pc.get_y() > setting.floor1_e.y + setting.base.y
                then
                    -- 아귀동굴 입구로
--                    if not is_test_server() then
                        --say (locale.devilcatacomb_dropout)
                        timer ("devilcatacomb_ban_timer", 5)
--                    end
                else 
                    -- 아귀동굴 입구로
--                    pc.set_warp_location(65, 5914, 992)
                    say("Ruh Kristali Anahtari'ni ele ge?rmek i?n ")
                    say("yaratiklari yok et. Bu ")
                    say("sana sonraki katin kapisini a?r. ")
                    pc.remove_item(30311, pc.count_item(30311))
                    pc.remove_item(30312, pc.count_item(30312))
                end
            end
        end
 
        when logout begin
            local idx = pc.get_map_index()
            local setting = devilscatacomb.setting()
            if idx == setting.map_idx or idx >= (setting.map_idx * 10000) and idx < ((setting.map_idx + 1) * 10000) then
                pc.setf("devilscatacomb","last_exit_time", get_global_time())
            end
        end
 
        when devilcatacomb_ban_timer.timer begin
            pc.warp((5914)*100, (992)*100, 65)
        end
 
        when warp_timer.timer begin
            local level = d.getf("level")
            local level_switch = {
                [3] = "Dogru Metin Tasi'ni bul ve onu yok et!",
                [4] = "5. asamaya ulasmak i?n labirentten ?kis yolunu bul!",
                [5] = "Tartarus'u yen ve Surat Totemi'ni al.",
                [6] = "Kharoon ve cellatlarini yen!",
            }
            local t = 3600 -(get_global_time() - d.getf("enter_time"))
            local t_r = math.mod (t, 60)
            local t_m = (t - t_r) / 60
            d.notice ( level_switch[level] )
            d.notice ( "" ..t_m.." dakikan daha var.")
            d.set_warp_location (0, 0, 0)
        end
 
        when 20367.chat."Seytan Katakombu'na gider" with pc.get_map_index() == 65 begin
            local setting = devilscatacomb.setting()
            if pc.get_level() < 75 then
                say_title("Katakomb Bek?si:")
                say("75. seviyenin altinda oldugun i?n ")
                say("Katakomb'a giremezsin...")
            --elseif pc.getf("deviltower_zone","9_done") == 0 then
            --    say(locale.devilcatacomb_man_say_deviltop_clear)
            --elseif ((get_global_time() - pc.getf("devilscatacomb","last_exit_time")) < 1800) then
            --    say(locale.devilcatacomb_man_say_see_you_later)
            else
                say("Seytan Katakombu'na girmek")
                say("istiyor musun?")
                local s = select("Evet, birak i?ri gireyim!","Hayir, girmek istemiyorum.")
                if s == 1 then
                    pc.warp ((setting.floor1_entry.x + setting.base.x )* 100, (setting.floor1_entry.y + setting.base.y) * 100)
                end
            end
        end
        
        when 20367.chat."Karanlik Tapinaga d?" with pc.get_map_index() == 206 begin
            say_title("Katakomb Bek?si:")
            say("")
            say("Savasmaktan vazge?p Karanlik Tapinaga d?mek")
            say("istedigine emin misin?")
            say("")
            local s = select("Evet, ?k g淮s??.", "Hayir, savasmaya devam edecegim!")
            if s == 1 then
                pc.warp(591400, 99900)
            end
        end
    
        -- 몬스터가 죽으면 발?하는 이벤트.
        when kill begin
            local setting = devilscatacomb.setting()
            -- 아귀동굴 1?이면 1% 확률로 ?시건을 드랍한다.
            if pc.get_x() > setting.floor1_s.x + setting.base.x
                    and pc.get_y() > setting.floor1_s.y + setting.base.y
                    and pc.get_x() < setting.floor1_e.x + setting.base.x
                    and pc.get_y() < setting.floor1_e.y + setting.base.y then
                local j = number(1, 100)
                if j == 1 then
                    game.drop_item (setting.rag, 1)
                end
            end
        end
 
    function spawn_doors ()
        local setting = devilscatacomb.setting()
        for i = 1, 4 do
            local mob_set = setting.dc2_door_set1
            local set_size = setting.dc2_door_set_size
            for j = 1, set_size do
                d.set_unique (i.."_1_"..j, d.spawn_mob_dir (mob_set[j][1], mob_set[j][2], mob_set[j][3], mob_set[j][4]))
            end
            mob_set = setting.dc2_door_set2
            for j = 1, set_size do
                d.set_unique (i.."_2_"..j, d.spawn_mob_dir (mob_set[j][1], mob_set[j][2], mob_set[j][3], mob_set[j][4]))
            end
        end
    end
        -- ?시건을 나찰인증석에 드래그하면 2?으로 보낸다. 2?부터는 던전이다.
        when 30101.take  begin
            local setting = devilscatacomb.setting()
        
            if item.vnum == setting.rag then 
                if not party.is_party() then
                    say("Katakombun daha alt asamalarina ge?ek i?n")
                    say("g淮l?bir gruba ihtiyacin var.")
                    say("")
                    return
                elseif party.is_in_dungeon() then
                    say("Senin grubun zaten zindanda.")
                    say("")
                    return
                end
 
                item.remove()
                say("M??l?kapi a?ldi. Acele et,")
                say("asagi iniyoruz.")
                wait()
                say("Asil macera simdi basliyor. Seytan ")
                say("Katakombu'nu kesfetmek i?n sadece")
                say("bir saatin var.")
                wait()
                d.new_jump_party (setting.map_idx, setting.floor2_entry.x + setting.base.x  , setting.floor2_entry.y + setting.base.y )
                d.setqf2("devilscatacomb","level", 2)
                d.setf ("level",2)
                --d.regen_file (setting.mob_regen_file_path.."dc_2f_regen.txt")
                d.regen_file(get_locale_base_path().."/map/metin2_map_dd/base2_regen.txt")
                --d.regen_file(get_locale_base_path().."/map/metin2_map_dd/base2_npc.txt")
                
                -- d.spawn_mob (setting.floor2_merchant_npc, setting.floor2_merchant_npc_pos[1], setting.floor2_merchant_npc_pos[2])
                d.spawn_mob (setting.floor2_stone, setting.floor2_stone_pos[1], setting.floor2_stone_pos[2])
                
                devilscatacomb.spawn_doors ()
                server_timer('devilcatacomb_45m_left_timer',60 * 15, d.get_map_index())
                d.setf("enter_time", get_global_time())
            end    
        end
    
        when devilcatacomb_45m_left_timer.server_timer begin
            if d.select(get_server_timer_arg()) then
                d.notice ("45 dakikan daha var.")
                server_timer('devilcatacomb_30m_left_timer', 60 * 15, get_server_timer_arg())
            end
        end
 
        when devilcatacomb_30m_left_timer.server_timer begin
            if d.select(get_server_timer_arg()) then
                d.notice ("30 dakikan daha var.")
                server_timer('devilcatacomb_15m_left_timer', 60 * 15, get_server_timer_arg())
            end
        end
    
        when devilcatacomb_15m_left_timer.server_timer begin
            if d.select(get_server_timer_arg()) then
                d.notice ("15 dakikan daha var.")
                server_timer('devilcatacomb_5m_left_timer', 60 * 10, get_server_timer_arg())
            end
        end
 
        when devilcatacomb_5m_left_timer.server_timer begin
            if d.select(get_server_timer_arg()) then
                d.notice ("5 dakikan daha var.")
                server_timer('devilcatacomb_1m_left_timer', 60 * 4, get_server_timer_arg())
            end
        end
        
        when devilcatacomb_1m_left_timer.server_timer begin
            if d.select(get_server_timer_arg()) then
                d.notice ("1 dakikan daha var.")
                server_timer ("devilcatacomb_0m_left_timer", 60 * 1, get_server_timer_arg())
            end
        end
        
        when devilcatacomb_0m_left_timer.server_timer begin
            if d.select(get_server_timer_arg()) then
                d.notice("S?e bitti. Kendi g?enligin i?n Devil's Catacomb'dan disari isinlanacaksin.")
                d.set_warp_location (65, 5914, 992)
                server_timer('devilcatacomb_exit_timer', 7, get_server_timer_arg())
            end
        end
    
    function is_dc2_doors_clear ()
        local setting = devilscatacomb.setting()
        local clear = true
        for i = 1, 4 do
            local set_clear = true
            local mob_set = setting.dc2_door_set1
            local set_size = setting.dc2_door_set_size
            for j = 1, set_size do
                set_clear = set_clear and d.is_unique_dead (i.."_1_"..j)
            end
            if not set_clear then
                set_clear = true
                mob_set = setting.dc2_door_set2
                for j = 1, set_size do
                    set_clear = set_clear and d.is_unique_dead (i.."_2_"..j)
                end
            end
            clear = clear and set_clear
        end
 
        return clear
    end
    
        -- 현황석을 클릭하면 3? 진입 여부를 선택할 수 있고
        -- 진입시 사신의증표를 검사한다.
        -- 사신의 증표가 없다면 밖으로 워프된다.
        when 30103.click begin
            local setting = devilscatacomb.setting()
            
            if d.getf("devilcatacomb_floor2_stone_clicked") == 0 then
                --if not devilscatacomb.is_dc2_doors_clear () and not is_test_server() then
                    --say_title ("The Devil? Catacomb:")
                    --say ("You first have to kill each door.")
                    --say ("")
                    --wait ()
                    --return
                --end
                say("Kaplumbaga Kayaligi'na yaklastik? ")
                say("bazi grav?ler dikkat ?kiyor... ")
                wait()
                say("...Sadece K淮?en Kafa'ya sahip olanlar")
                say("bir sonraki kademeye ge?bilirler. ")
                say("K淮?en Kafa'ya sahip degilsen yer y??e")
                say("isinlanacaksin.")
                wait()
                local s = select("Evet, ge?cegim!", "Hayir, ge?ek istemiyorum.")
                if s == 1 then
                    if d.getf("devilcatacomb_floor2_stone_clicked") == 0 then
                        d.setf("devilcatacomb_floor2_stone_clicked", 1)
                        d.setqf2("devilscatacomb","last_exit_time", get_global_time())
                        d.set_item_group ("reapers_credit", 4, setting.reapers_credit4, 1, setting.reapers_credit3, 1, setting.reapers_credit2, 1, setting.reapers_credit1, 1)
                        d.say_diff_by_item_group ("reapers_credit", "K淮?en Kafa'ya sahipsin ve artik 3. kata[ENTER]isinlanabilirsin.[ENTER][ENTER]", "K淮?en Kafa'ya sahip degilsin.[ENTER]Simdi Seytan Katakombunun disina[ENTER]isinlanacaksin.[ENTER][ENTER]")
                        timer ("devilcatacomb_floor3_enter_timer", 7)
                    end
                end
            else
                say_title("Devil? Catacomb:")
                say ("")
                say ("L?fen bekle.")
                say ("")
            end
        end
        
        when devilcatacomb_floor3_enter_timer.timer begin
            local setting = devilscatacomb.setting()
            d.set_warp_location (65, 5914, 992)
            d.exit_all_by_item_group ("reapers_credit")
            d.delete_item_in_item_group_from_all ("reapers_credit")
            d.purge ()
            d.jump_all (setting.floor3_entry.x + setting.base.x , setting.floor3_entry.y + setting.base.y)
            d.setf("level",3)
            d.setqf2("devilscatacomb","level", 3)
            --d.regen_file (setting.mob_regen_file_path.."dc_3f_regen.txt")
            d.regen_file(get_locale_base_path().."/map/metin2_map_dd/base3_regen.txt")
            
            timer("warp_timer",3)
            
            local position = setting.floor3_stone_pos
        
            local n = number(1,7)
            for i = 1, 7 do
                if (i != n)
                then
                    d.set_unique("fake"..i, d.spawn_mob( setting.floor3_stone, position[1], position[2]))
                end
            end
        
            local vid = d.spawn_mob( setting.floor3_stone, position[n][1], position[n][2])
            d.set_unique ("real",vid)
            if (is_test_server()) then
                -- real stone pos
                chat (position[n][1],position[n][2])
            end
    
        end
 
        when 8038.kill begin
            local setting = devilscatacomb.setting()
            -- 돌이 파괴되면 진짜가 죽었는지 확인해본다.
            -- 진짜가 죽었으면 4?으로 이동한다.
            if d.is_unique_dead("real") then
                d.notice ("Ger?k Metin Tasi'ni yok ettin! Sonraki kata ge?yorsun.")
                
                d.setf ("level",4)
                d.setqf2("devilscatacomb","level", 4)
                timer ("devilcatacomb_floor4_enter_timer", 3)
            else
                d.notice ("Yanlis Metin Tasi'ni yok ettin. Dogrusunu bul!")
            end
        end
 
        when devilcatacomb_floor4_enter_timer.timer begin
            local setting = devilscatacomb.setting()
            local i = number (1, 4)
            timer("warp_timer",3)
            d.purge ()
            d.jump_all (setting.floor4_entry.x + setting.base.x , setting.floor4_entry.y + setting.base.y)
            --d.regen_file (setting.mob_regen_file_path.."dc_4f_regen.txt")
            --d.regen_file (setting.mob_regen_file_path..setting.floor4_regen_file)
            d.regen_file(get_locale_base_path().."/map/metin2_map_dd/base4_regen.txt")
            d.spawn_goto_mob(70,673 , 94,844)
                if i == 1 then
                d.spawn_goto_mob(94,839 , 70,673)
                d.spawn_goto_mob(141,865 , 369,893)
                d.spawn_goto_mob(364,893 , 136,865)
                d.spawn_goto_mob(431,935 , 194,867)
                d.spawn_goto_mob(194,862 , 426,935)
                d.spawn_goto_mob(243,853 , 277,637)
                d.spawn_goto_mob(282,637 , 243,858)
                d.spawn_goto_mob(181,667 , 323,779)
                d.spawn_goto_mob(328,779 , 499,811)
                d.spawn_goto_mob(131,668, 345,560)
                d.spawn_goto_mob(345,55 , 131,663)
                d.spawn_goto_mob(180,566 , 401,563)
                d.spawn_goto_mob(401,558 , 185,566)
                d.spawn_goto_mob(296,568 , 67,810)
                d.spawn_goto_mob(67,815 , 291,568)
                d.spawn_goto_mob(140,822 , 356,717)
                d.spawn_goto_mob(351,717 , 140,817)
                d.spawn_goto_mob(189,711 , 414,712)
                d.spawn_goto_mob(419,712 , 189,716)
                d.spawn_goto_mob(274,712 , 369,776)
                d.spawn_goto_mob(364,776 , 274,717)
                d.spawn_goto_mob(224,779 , 366,814)
                d.spawn_goto_mob(366,809 , 229,779)
                d.spawn_goto_mob(274,842 , 352,839)
                d.spawn_goto_mob(347,839 , 274,837)
                d.spawn_goto_mob(429,841 , 70,577)
                d.spawn_goto_mob(55,864 , 55,920)
                d.spawn_goto_mob(50,920 , 60,864)
                d.spawn_goto_mob(144,919 , 90,943)
                d.spawn_goto_mob(90,948 , 139,919)
                d.spawn_goto_mob(312,852 , 406,876)
                d.spawn_goto_mob(406,871 , 312,857)
                elseif i == 2 then
                d.spawn_goto_mob(70,673 , 312,857)
                d.spawn_goto_mob(312,852 , 70,668)
                d.spawn_goto_mob(431,935 , 90,943)
                d.spawn_goto_mob(90,948 , 426,935)
                d.spawn_goto_mob(144,919 , 424,841)
                d.spawn_goto_mob(429,841 , 291,568)
                d.spawn_goto_mob(296,568 , 70,577)
                d.spawn_goto_mob(181,667 , 499,811)
                d.spawn_goto_mob(131,668, 345,560)
                d.spawn_goto_mob(345,55 , 131,663)
                d.spawn_goto_mob(180,566 , 401,563)
                d.spawn_goto_mob(401,558 , 185,566)
                d.spawn_goto_mob(282,637 , 67,810)
                d.spawn_goto_mob(67,815 , 277,637)
                d.spawn_goto_mob(140,822 , 189,716)
                d.spawn_goto_mob(189,711 , 140,817)
                d.spawn_goto_mob(274,712 , 229,779)
                d.spawn_goto_mob(224,779 , 274,717)
                d.spawn_goto_mob(328,779 , 274,837)
                d.spawn_goto_mob(274,842 , 323,779)
                d.spawn_goto_mob(351,717 , 194,867)
                d.spawn_goto_mob(194,862 , 356,717)
                d.spawn_goto_mob(419,712 , 243,858)
                d.spawn_goto_mob(243,853 , 414,712)
                d.spawn_goto_mob(364,776 , 366,814)
                d.spawn_goto_mob(366,809 , 369,776)
                d.spawn_goto_mob(347,839 , 70,673)
                d.spawn_goto_mob(94,839 , 60,864)
                d.spawn_goto_mob(55,864 , 94,844)
                d.spawn_goto_mob(141,865 , 55,920)
                d.spawn_goto_mob(50,920 , 136,865)
                d.spawn_goto_mob(364,893 , 406,876)
                d.spawn_goto_mob(406,871 , 369,893)
                elseif i == 3 then
                d.spawn_goto_mob(70,673 , 312,857)
                d.spawn_goto_mob(312,852 , 70,668)
                d.spawn_goto_mob(431,935 , 274,717)
                d.spawn_goto_mob(274,712 , 426,935)
                d.spawn_goto_mob(224,779 , 140,817)
                d.spawn_goto_mob(140,822 , 229,779)
                d.spawn_goto_mob(189,711 , 94,844)
                d.spawn_goto_mob(94,839 , 189,716)
                d.spawn_goto_mob(144,919 , 424,841)
                d.spawn_goto_mob(429,841 , 499,811)
                d.spawn_goto_mob(131,668 , 185,566)
                d.spawn_goto_mob(180,566 , 131,663)
                d.spawn_goto_mob(296,568 , 277,637)
                d.spawn_goto_mob(282,637 , 291,568)
                d.spawn_goto_mob(181,667 , 345,560)
                d.spawn_goto_mob(345,555 , 186,667)
                d.spawn_goto_mob(401,558 , 67,810)
                d.spawn_goto_mob(67,815 , 401,563)
                d.spawn_goto_mob(328,779 , 274,837)
                d.spawn_goto_mob(274,842 , 323,779)
                d.spawn_goto_mob(351,717 , 369,776)
                d.spawn_goto_mob(364,776 , 356,717)
                d.spawn_goto_mob(419,712 , 366,814)
                d.spawn_goto_mob(366,809 , 414,712)
                d.spawn_goto_mob(347,839 , 70,577)
                d.spawn_goto_mob(55,864 , 55,920)
                d.spawn_goto_mob(50,920 , 60,864)
                d.spawn_goto_mob(141,865 , 90,943)
                d.spawn_goto_mob(90,948 , 136,865)
                d.spawn_goto_mob(194,862 , 369,893)
                d.spawn_goto_mob(364,893 , 194,867)
                d.spawn_goto_mob(243,853 , 406,876)
                d.spawn_goto_mob(406,871 , 243,858)
                elseif i == 4 then
                d.spawn_goto_mob(131,668 , 67,810)
                d.spawn_goto_mob(67,815 , 185,566)
                d.spawn_goto_mob(282,637 , 274,717)
                d.spawn_goto_mob(274,712 , 277,637)
                d.spawn_goto_mob(274,842 , 94,844)
                d.spawn_goto_mob(94,839 , 274,837)
                d.spawn_goto_mob(144,919 , 499,811)
                d.spawn_goto_mob(70,673 , 345,560)
                d.spawn_goto_mob(345,555 , 70,668)
                d.spawn_goto_mob(401,558 , 70,577)
                d.spawn_goto_mob(296,568 , 186,667)
                d.spawn_goto_mob(181,667 , 291,568)
                d.spawn_goto_mob(140,822 , 189,716)
                d.spawn_goto_mob(189,711 , 140,817)
                d.spawn_goto_mob(224,779 , 323,779)
                d.spawn_goto_mob(328,779 , 229,779)
                d.spawn_goto_mob(351,717 , 352,839)
                d.spawn_goto_mob(347,839 , 356,617)
                d.spawn_goto_mob(419,712 , 424,841)
                d.spawn_goto_mob(429,841 , 414,712)
                d.spawn_goto_mob(364,776 , 366,814)
                d.spawn_goto_mob(366,809 , 369,776)
                d.spawn_goto_mob(55,864 , 194,867)
                d.spawn_goto_mob(194,862 , 60,864)
                d.spawn_goto_mob(141,865 , 90,943)
                d.spawn_goto_mob(90,948 , 136,865)
                d.spawn_goto_mob(50,920 , 369,893)
                d.spawn_goto_mob(364,893 , 55,920)
                d.spawn_goto_mob(243,853 , 406,876)
                d.spawn_goto_mob(406,871 , 243,858)
                d.spawn_goto_mob(312,852 , 426,935)
                d.spawn_goto_mob(431,935 , 312,857)
                end
            
            if (is_test_server()) then
                d.notice (setting.floor4_regen_file)
            end
            d.spawn_mob (setting.floor4_npc, setting.floor4_npc_pos[1], setting.floor4_npc_pos[2])
        end
 
        -- devilcatacomb_floor4_stone는 클릭 시 4?에? 5?으로 이동시키는 npc이다.
        when 30104.click begin
            local setting =devilscatacomb.setting()
            local n = number (1,5)
            say("Basardin! Labirentin ?kisi burada. 5. kata in.")
            wait()
            if (is_test_server()) then
                -- devil_king pos
                chat (setting.devil_king_pos[n][1], setting.devil_king_pos[n][2])
            end
            d.purge ()
            d.jump_all (setting.floor5_entry.x + setting.base.x, setting.floor5_entry.y + setting.base.y )
            d.setf ("level",5)
            d.setqf2("devilscatacomb","level", 5)
            timer("warp_timer",3)
            --d.regen_file (setting.mob_regen_file_path.."dc_5f_regen.txt")
            d.regen_file(get_locale_base_path().."/map/metin2_map_dd/base5_regen.txt")
            d.spawn_mob (setting.devil_king, setting.devil_king_pos[n][1], setting.devil_king_pos[n][2])
            d.spawn_mob (setting.floor5_stone, setting.floor5_stone_pos[1], setting.floor5_stone_pos[2])
        end
        
        -- 아귀왕(2591)이 죽으면 봉인해체석 드랍
        when 2591.kill begin
            local value = "1709862138"
            local a = get_quest_state("the_war_begins")
            local a_ = string.format("%d",  a)
                if   a_== value then
                set_quest_state("the_war_begins","rewards")
                end
            local setting = devilscatacomb.setting()
            game.drop_item (setting.unlock_stone, 1)
        end
 
        -- 사신?제비(30102)에 ?제해체석봉을 드래그하면 ?든 몬스터를 죽이고
        -- 6?으로 이동하는 타이머를 동작시킨다.
        when 30102.take with item.vnum == 30312 begin
            local setting = devilscatacomb.setting()
                item.remove ()
                d.notice("Seytan Katakombu'nun derinliklerinden t?ler ")
                d.notice("?perten bir ?glik duyuldu. Kharoon uyandi! ")
                -- 6?으로 이동
                d.clear_regen()
                d.purge()
                timer("devilcatacomb_floor6_timer",2)
        end
 
        when devilcatacomb_floor6_timer.timer begin
            local setting = devilscatacomb.setting()
            d.setf("level",6)
            d.setqf2("devilscatacomb","level", 6)
            d.jump_all (setting.floor6_entry.x + setting.base.x, setting.floor6_entry.y + setting.base.y )
            --d.regen_file (setting.mob_regen_file_path.."dc_6f_regen.txt")
            d.regen_file(get_locale_base_path().."/map/metin2_map_dd/base6_regen.txt")
            d.spawn_mob (setting.devil_great_king, setting.devil_great_king_pos[1], setting.devil_great_king_pos[2])
            timer("warp_timer",3)
        end
        
        -- 아걸(2597)이 죽으면, 6?의 타이머1이 동작한다.
        when 2597.kill begin
            local value = "-880201385"
            local b = get_quest_state("prince_kharoon")
            local b_ = string.format("%d",  b)
                if   b_== value then
                set_quest_state("prince_kharoon","finito")
                end
            server_timer ("floor6_eli_check_timer_1", 5,d.get_map_index())
        end
 
        -- 6?의 타이머1은 던전의 ?든 몬스터 ?자를 보고,
        -- 0이면 7?으로 워프하는 타이머를 동작한다.
        -- 바로 7?으로 가지 않는 이유는, 유저에게 준비할 시간을 주기 위해?이다.
        -- 1이면 타이머2를 동작시킨다.
        -- 타이머1을 recursive하게 동작시키지 않은 것은,
        -- 그럴 경우 reset한 타이머1이 동작하지 않았기 때문이다.
        when floor6_eli_check_timer_1.server_timer begin
            if d.select(get_server_timer_arg()) then
                if d.count_monster() == 0 then
                    say_in_map(get_server_timer_arg(), color256(255, 230, 186).."The Devil? Catacomb:[ENTER]"..color256(196, 196, 196).."Kharoon'u yendin! Simdi Seytan Katakombu'nun en[ENTER]son katina isinlanacaksin.")
                    server_timer ("devilcatacomb_floor7_timer", 3, get_server_timer_arg())
                else
                    server_timer ("floor6_eli_check_timer_2", 5, get_server_timer_arg())
                end
            end
        end
 
        when floor6_eli_check_timer_2.server_timer begin
            if d.select(get_server_timer_arg()) then
                if d.count_monster() == 0 then
                    say_in_map(get_server_timer_arg(), color256(255, 230, 186).."Kharoon'u yendin! Simdi Seytan Katakombu'nun en[ENTER]son katina isinlanacaksin.")
                    server_timer("devilcatacomb_floor7_timer", 3, get_server_timer_arg())
                else
                    server_timer ("floor6_eli_check_timer_1", 5, get_server_timer_arg())
                end
            end
        end
        
        when devilcatacomb_floor7_timer.server_timer begin
            if d.select(get_server_timer_arg()) then
                local setting = devilscatacomb.setting()
 
                d.setf("level",7)
                d.setqf2("devilscatacomb","level", 7)
                d.jump_all (setting.floor7_entry.x + setting.base.x, setting.floor7_entry.y + setting.base.y )
                --d.regen_file (setting.mob_regen_file_path.."dc_7f_regen.txt")
                d.regen_file(get_locale_base_path().."/map/metin2_map_dd/base7_regen.txt")
                d.spawn_mob (setting.devil_emperor, setting.devil_emperor_pos[1], setting.devil_emperor_pos[2])
                server_timer ("devilcatacomb_floor7_say_timer", 2, get_server_timer_arg())
            end    
        end
 
        when devilcatacomb_floor7_say_timer.server_timer begin
            if d.select(get_server_timer_arg()) then
 
                local t = 3600 -(get_global_time() - d.getf("enter_time"))
                local t_r = math.mod (t, 60)
                local t_m = (t - t_r) / 60
                d.notice("Azrail'i yen!")
                d.notice ("".. t_m.." dakikan daha var.")
                d.set_warp_location (0, 0, 0)
            end
        end
 
        -- 6?과 마찬가지로 사마휘(2598)이 죽으면
        -- 7?의 타이머가 작동한다.
        when 2598.kill begin
            --notice_all(pc.get_name().."'s party has defeated Lord Gahnasel!")
            server_timer ("floor7_eli_check_timer_1", 5, d.get_map_index())
        end
        
        -- 7?의 타이머는 6? 타이머와 비슷하며,
        -- 몬스터 ?자가 0이면 exit 타이머를 발?시킨다.
        -- 바로 exit하지 않는 이유는, 유저들에게 준비할 시간을 주기 위해?이다.
        when floor7_eli_check_timer_1.server_timer begin
            if d.select(get_server_timer_arg()) then
                if d.count_monster() == 0 then
                    d.set_warp_location (65, 5914, 992)
                    d.setqf2("devilscatacomb","done", 1)
                    say_in_map(get_server_timer_arg(),"Azrail yenildi. Seytan Katakombu'na nihayet[ENTER]huzur hakim. Simdi yer y??e isinlanacaksin. ")
 
                    clear_server_timer ("devilcatacomb_0m_left_timer", get_server_timer_arg())
                    server_timer("devilcatacomb_exit_timer", 60, get_server_timer_arg())
                else
                    server_timer ("floor7_eli_check_timer_2", 5, get_server_timer_arg())
                end
            end
        end
 
        when floor7_eli_check_timer_2.server_timer begin
            if d.select(get_server_timer_arg()) then
                if d.count_monster() == 0 then
                    d.set_warp_location (65, 5914, 992)
                    d.setqf2("devilscatacomb","done", 1)
                    say_in_map(get_server_timer_arg(),"Azrail yenildi. Seytan Katakombu'na nihayet[ENTER]huzur hakim. Simdi yer y??e isinlanacaksin. ")
    
                    clear_server_timer ("devilcatacomb_0m_left_timer", get_server_timer_arg())
                    server_timer("devilcatacomb_exit_timer", 30, get_server_timer_arg())
                else
                    server_timer ("floor7_eli_check_timer_1", 5, get_server_timer_arg())
                end
            end
        end
 
        when devilcatacomb_exit_timer.server_timer begin
            if d.select(get_server_timer_arg()) then
                d.setqf2("devilscatacomb","level", 0)
                d.setqf2("devilscatacomb","last_exit_time", get_global_time())
                clear_server_timer("devilcatacomb_5m_left_timer", get_server_timer_arg())
                clear_server_timer("devilcatacomb_1m_left_timer", get_server_timer_arg())
                clear_server_timer("devilcatacomb_0m_left_timer", get_server_timer_arg())
                clear_server_timer("floor6_eli_check_timer_1", get_server_timer_arg())
                clear_server_timer("floor6_eli_check_timer_2", get_server_timer_arg())
                clear_server_timer("floor7_eli_check_timer_1", get_server_timer_arg())
                clear_server_timer("floor7_eli_check_timer_2", get_server_timer_arg())
                clear_server_timer("devilcatacomb_floor7_say_timer", get_server_timer_arg())
                clear_server_timer("devilcatacomb_floor7_timer", 3, get_server_timer_arg())
                d.clear_regen()
                d.exit_all()
            end
        end
    end  --state
end   --quest
 
Enlace para comentar
Compartir en otros sitios

  • Dilong locked this tema
Guest
Este tema está cerrado a otras respuestas.
  • Recientemente navegando por este tema   0 miembros

    • No hay usuarios registrados visitando esta página.
×
×
  • Crear nuevo...