Magyar Devils Katakomba quest. (K)

Indította Smilley, 2014-02-08, 18:18:37

2014-02-08, 18:18:37 Utolsó szerkesztés: 2014-02-16, 11:09:38 Szerző: [MOD]Aegist
quest devilscatacomb begin
    state start begin
   
        when logout begin
            pc.remove_item(30311, pc.count_item(30311))
            pc.remove_item(30312, pc.count_item(30312))
            pc.remove_item(30313, pc.count_item(30313))
        end
       
       
        when login begin
            if pc.get_map_index() == 90 then
                if devilscatacomb.getLevelByCord() > 1 or not next_time_is_now() then
               
                    pc.warp((5913)*100, (993)*100, 65) -- 5913x993  591374x
                   
                end
               
                pc.set_warp_location(65, 5913, 993)
               
                say("Du musst den Seelenkristall-Schlüssel droppen")
                say("und dann auf die Statue des Kud ziehen, um in")
say("die 2. Ebene zu gelangen...")
say("")
say_item_vnum(30311)
say("")
               
            elseif pc.get_map_index() >= (90 * 10000) then           
                pc.set_warp_location(65, 5913, 993)
            end
        end
       
       
        when 20367.chat."The Devil's Catacomb" begin  --Enter the Devil Catacomb
            if pc.get_level() < 75 then
                say_title(mob_name(npc.get_race()) ..":")
say("Du möchtest in die Katakomben des Teufels?")
                say("")
                say("So einfach geht das nicht, denn du hast")
                say("nicht die nötige Erfahrung dazu.")
say("Komme am Besten wieder, wenn du Level 75")
                say("erreicht hast... ")
                    else
                        say_title(mob_name(npc.get_race()) ..":")
                        say("Du möchtest in die Katakomben des Teufels?")
                        say("")
say("Ich kann dich gerne teleportieren, doch")
say("ich möchte dich warnen: Es sind schon viele")
say("eingetreten aber nicht mehr zurück gekommen!")
say("")
say("Soll ich dich ernsthaft teleportieren?")
say("")
                        local s = select("Ja","Nein")
                        if s == 2 then
                            return
                        elseif s == 1 then
                            pc.warp(315300, 1209200)
                        end
                    end   
                end   
       
       
        when kill with pc.get_map_index() == 90 and pc.countitem(30311) < 1 begin
            local rnd = number(1,100)
            if rnd == 6 then
                game.drop_item_with_ownership(30311, 1)
            end
        end
       
       
        when 30101.take with item.vnum == 30311 begin --Teleport to 2nd Stage with the passenger ticket
       
            if party.is_party() then
           
                if party.is_leader() then
                    say("Das Eingangsportal wurde geöffnet.")
                    say("Geh schnell hindurch!")
                    wait()
                    say("Hier beginnt das wahre Abenteuer! Du hast")
                    say("jedoch nur eine Stunde Zeit, um die Devil's")
                    say("Catacomb zu erforschen.")
                    item.remove()
                    sys_log(0, "DC create try by "..pc.get_name())
                    d.join(90)
                else
                    say("Nur der Leiter der Gruppe darf bestimmen.")
                end
               
            else
                say("Ohne Gruppe kommst du nicht weiter.")
            end
           
        end
       
       
        when login with devilscatacomb.isInCatacomb() begin
            say("Zerstöre das Siegel dieses Tores, um die 3. Ebene")
            say("zu erreichen!")
            say("Du hast noch 60 Minute(n) Zeit.")
d.spawn_mob(30103, 740, 227)
            loop_timer("item_check", 10)
            if party.is_leader() then
                d.set_regen_file("data/dungeon/dc/dc_regen1.txt")
                d.regen_file("data/dungeon/dc/dc_doors.txt")
                d.setf("level", 2)
                server_timer("runtime", 6, pc.get_map_index())
            elseif pc.is_gm() and not party.is_party() then
                d.set_regen_file("data/dungeon/dc/dc_regen1.txt")
                d.regen_file("data/dungeon/dc/dc_doors.txt")
                d.setf("level", 2)
                server_timer("runtime", 6, pc.get_map_index())
            end
        end
       
       
        when item_check.timer with d.getf("level") == 3 begin
            if pc.countitem(30319) >= 1 then
                say("Du hast den Schrumpfkopf und wirst nun auf die")
                say("3. Ebene teleportiert.")
                pc.remove_item(30319, 1)
                timer("item_check_end", 2)
            else
                d.exit_all()
            end
        end
       
       
        when item_check_end.timer begin
            cleartimer("item_check")
        end
       
       
        when runtime.server_timer begin
            if d.select(get_server_timer_arg()) then
                d.setf("time", get_time()+60*60*1)
                devilscatacomb.getTimeLeft()
                server_timer("runtime_end", 60*60, get_server_timer_arg())
            end
        end
       
       
        when runtime_end.server_timer begin
            if d.select(get_server_timer_arg()) then
                d.notice("Die Zeit ist um.")
                d.exit_all()
            end
        end

       
        when 30103.click with devilscatacomb.isInCatacomb() and devilscatacomb.getLevelByCord() == 2 and npc.lock() begin
            say("Während du den Stein genauer untersuchst, kannst")
            say("du eine Gravur erkennen.")
            wait()
            say("Lediglich der Besitzer des Schrumpfkopfes")
            say("darf eintreten, nachdem die Siegel dreier Türen")
            say("aufgebrochen wurden.")
            say("Wenn du dieses Relikt nicht bei dir trägst,")
            say("wirst du aus der Devil's Catacomb teleportiert.")
say("")
            wait()
            local s = select("Ja, lass mich eintreten!", "Nein, ich möchte nicht eintreten.")
            if s == 2 then
                return
            elseif s == 1 then
                if pc.count_item(30319) >= 1 then
                    npc.purge()
                    d.setf("level", 3)
                    d.purge()
                    d.clear_regen()
                    timer("dc_jump_3", 6)
                else
                    say("Du hast keinen Schrumpfkopf und wirst nun")
                    say("aus der Höhle teleportiert ...")
                    pc.warp(591374, 99325, 65)
                end
            end
        end
       
       
        when dc_jump_3.timer begin
            d.set_regen_file("data/dungeon/dc/dc_regen2.txt")
            d.notice("Suche den richtigen Metinstein und zerstöre ihn!")
            devilscatacomb.getTimeLeft()
            d.jump_all(4451, 12282)
            local positions = devilscatacomb.get3FloorStonePositions()
            for i = 1, 6 do
                d.set_unique("fake" .. i , d.spawn_mob(8037, positions[i][1], positions[i][2]))
            end
            d.set_unique("real", d.spawn_mob(8037, positions[7][1], positions[7][2]))
            server_loop_timer('dc_stone3_update', 10, pc.get_map_index())

        end
       
       
        when dc_stone3_update.server_timer begin
            if d.select(get_server_timer_arg()) then
                if not d.is_unique_dead("real") then
                    for i = 1, 6 do
                        if d.getf("fakedead" .. i) == 0 then
                            if d.unique_get_hp_perc("fake" .. i) < 30 then
                                if not d.is_unique_dead("fake" .. i) then
                                    d.purge_unique("fake" .. i)
                                end
                                d.setf("fakedead" .. i, 1)
                                d.notice("Du hast den falschen Metinstein zerstört. Finde den richtigen!");
                            end
                        end
                    end
                else
                    server_timer("dc_stone_end3", 5, get_server_timer_arg())
                    d.notice("Der richtige Metinstein wurde zerstört. Du darfst nun die 4. Ebene betreten.")
                end
            else
                server_timer('dc_stone3_stop_timer', 1, get_server_timer_arg())
            end
        end

       
        when dc_stone3_stop_timer.server_timer begin
            clear_server_timer('dc_stone3_update', get_server_timer_arg())
        end
       
       
        when dc_stone_end3.server_timer begin
            if d.select(get_server_timer_arg()) then
                clear_server_timer('dc_stone3_update', get_server_timer_arg())
                d.setf("level", 4)
                d.jump_all(3347, 12810)       
                d.clear_regen()
                d.set_regen_file("data/dungeon/dc/dc_regen3.txt")
                d.regen_file("data/dungeon/dc/dc_warps.txt")
                d.spawn_mob(30104, 500, 716)
            end
        end
       
       
        when 30104.click with devilscatacomb.isInCatacomb() and devilscatacomb.getLevelByCord() == 4  and npc.lock() begin
            npc.purge()
            say_in_map(pc.get_map_index(),"Du hast es geschafft! Hier ist der Ausgang des[ENTER]Labyrinths. Steige nun in die 5. Ebene hinab.")
            server_timer("dc4_enter", 6, pc.get_map_index())
        end
       
       
        when dc4_enter.server_timer begin
            if d.select(get_server_timer_arg()) then
                d.jump_all(3918, 12939)
               
                d.set_regen_file("data/dungeon/dc/dc_regen4.txt")
                d.spawn_mob(30102, 848, 739)
               
                local mob_pos = { {1006, 649}, {979, 829}, {691, 822}, {714, 653}, {848, 593} }
                local rnd = number(1, 5)
                d.spawn_mob(2591, mob_pos[rnd][1], mob_pos[rnd][2])
               
                server_timer("dc4_message", 3, get_server_timer_arg())
            end
        end
       
       
        when dc4_message.server_timer begin
            if d.select(get_server_timer_arg()) then
                d.notice("Besiege die Dämonenwachen, um das Fratzen-Totem zu erhalten. Es dient dir als Schlüssel zur 6. Ebene.")
                devilscatacomb.getTimeLeft()
            end
        end
       
       
        when 30102.take with item.vnum == 30312 begin
say("Du hast das Fratze-Totem.")
            say("Nun kannst du in die nächste Ebene!")
say("")
wait()
say("Viel Glück!")
            item.remove()
npc.purge()
            d.clear_regen()
            timer("dc_level_5", 6)
        end
       
       
        when dc_level_5.timer begin
            d.jump_all(4312, 12799)
            timer("dc_level_5_start", 5)
        end
       
       
        when dc_level_5_start.timer begin
            d.setf("level", 5)
            d.notice("Besiege Charon und seine Schergen!")
            devilscatacomb.getTimeLeft()
            d.regen_file("data/dungeon/dc/dc_regen5.txt")
            d.spawn_mob(2597, 1301, 699)
        end
       
       
        when kill begin
            if devilscatacomb.isInCatacomb() then
                if npc.race == 2597 then
                    if d.count_monster() < 1000 then
                        d.setf("level", 6)
                        d.clear_regen()
                        timer("dc_level_5_end", 12)
                    else
                        if d.getf("charon_spawns") < 4 then
                            d.spawn_mob(2597, 1301, 699)
                            d.setf("charon_spawns", d.getf("charon_spawns") + 1)
                        else
                            d.notice("Du hast versagt Charon hat dich mit seinen Schergen")
                            d.notice("überlistet. Du verlässt nun die Höhle")
                            local nextTime=get_time()+time_min_to_sec(1)
                            d.setqf("__NEXT_TIME__", nextTime)
                            d.exit_all()
                        end
                    end
                end
               
                if npc.race == 2598 and  d.getf("level") == 6 then
                    clear_server_timer("runtime", pc.get_map_index())
                    clear_server_timer("runtime_end", pc.get_map_index())
                    notice_all(pc.get_name().." und "..tonumber(party.get_near_count()-1).." weitere Gruppenmitglieder haben Azrael besiegt!")
                    timer("glory_message", 6)
                end
               
                if npc.race == 2591 then
                    game.drop_item_with_ownership(30312, 1)
                end
            end
        end
       
       
        when dc_level_5_end.timer begin
            say_in_map(pc.get_map_index(),"Du hast Charon besiegt! Nun wirst du[ENTER]zur letzten Ebene der Devil's Catacomb[ENTER]teleportiert.")
            timer("dc_level_6", 3)
        end
       
       
        when dc_level_6.timer begin
            d.jump_all(3145, 13187)
            timer("dc_level_6_into", 3)
        end
       
        when dc_level_6_into.timer begin
            d.regen_file("data/dungeon/dc/dc_regen6.txt")
            d.spawn_mob(2598, 74, 1103)
            d.notice("Besiege Azrael!")
        end
       
        when glory_message.timer begin
            local text = "Azrael wurde besiegt. Endlich herrscht[ENTER]Frieden in der Devil's Catacomb. Du wirst nun[ENTER]an die Oberfläche teleportiert."
            say_in_map(pc.get_map_index(), text)
            timer("dc_end", 20)   
        end
       
       
        when dc_end.timer begin
            local nextTime=get_time()+time_min_to_sec(1)
            d.setqf("__NEXT_TIME__", nextTime)
            d.exit_all()
        end
       
    end
   
    state _FUNC_ begin
   
        function getLevelByCord()
       
            if pc.get_local_x() > 30 and pc.get_local_y() > 45 and pc.get_local_x() < 450 and pc.get_local_y() < 450 then
                return 1
               
            elseif pc.get_local_x() > 540 and pc.get_local_y() > 39 and pc.get_local_x() < 1000 and pc.get_local_y() < 462 then
                return 2
               
            elseif pc.get_local_x() > 1048 and pc.get_local_y() > 35 and pc.get_local_x() < 1455 and pc.get_local_y() < 458 then
                return 3
               
            elseif pc.get_local_x() > 31 and pc.get_local_y() > 541 and pc.get_local_x() < 564 and pc.get_local_y() < 1058 then
                return 4
               
            elseif pc.get_local_x() > 650 and pc.get_local_y() > 540 and pc.get_local_x() < 1050 and pc.get_local_y() < 955 then
                return 5
               
            elseif pc.get_local_x() > 1175 and pc.get_local_y() > 576 and pc.get_local_x() < 1420 and pc.get_local_y() < 810 then
                return 6
               
            else
                return 0
            end
           
        end
       
        function isInCatacomb()
       
            if pc.get_map_index() >= (90 * 10000) and pc.in_dungeon() then
                return true
            else
                return false
            end
           
        end
       
        function get3FloorStonePositions()
       
            local positions =
            {
                {1365, 352}, {1349, 150}, {1133, 167}, {1151, 364},
                {1234, 136}, {1255, 371}, {1132, 245},
            }
           
            for i = 1, 6 do
           
                local j = number(i, 7)
               
                if i != j then
               
                    local t = positions[i];
                    positions[i] = positions[j];
                    positions[j] = t;
                   
                end
               
            end
           
            return positions
           
        end
       
        function getTimeLeft()
       
            local secondsLeft = (d.getf("time") - get_time())
            local minutesLeft = math.ceil(secondsLeft / 60)
           
            d.notice("Du hast noch "..minutesLeft.." Minute(n) Zeit.")
       
        end
       
    end
end 

Ez kellene nekem magyarba, nincs valakinél véletlen el veszve a homályban?
És nem kutatná fel nekem?


Biztos helyes is lesz, de te legalább egy válaszra méltattál.:)

Csatoltam két fájlt. A devilscatacomb.quest amit kértél, a másik csak 30k vagy újabb game fájllal működik. Mindkettő magyar.


"Az a baj a világgal, hogy a hülyék  mindenben holtbiztosak, az okosak meg tele vannak kételyekkel."
              Bertrand Russel