Skocz do zawartości
  • 👋 Witaj na MPCForum!

    Przeglądasz forum jako gość, co oznacza, że wiele świetnych funkcji jest jeszcze przed Tobą! 😎

    • Pełny dostęp do działów i ukrytych treści
    • Możliwość pisania i odpowiadania w tematach
    • System prywatnych wiadomości
    • Zbieranie reputacji i rozwijanie swojego profilu
    • Członkostwo w jednej z największych społeczności graczy

    👉 Dołączenie zajmie Ci mniej niż minutę – a zyskasz znacznie więcej!

    Zarejestruj się teraz

[Poprawa] questa DT


Rekomendowane odpowiedzi

Opublikowano

Witam, prosiłbym o poprawę questa na DT tak aby:

- Kamień otwarcia wpadał prosto do eq i wyświetlało " ... podniósł kamień otwarcia "

- Po ubiciu Ripka pojawiał się npc X na którego trzeba przeciągnąć Szkatę Ripa, która później znika i przenosi na niebieską śmierć i po jej ubiciu pojawiają się 3 kowale. Z góry dzięki:)

 

quest deviltower_zone begin
    state start begin
    when login begin
        if pc.get_map_index() == 66 then
        -- ¨Ă«D¦b1ĽÓ®É, °eŞđĄ~­±.
        -- ĽhĽĆ ˝dłň
        -- 1ĽÓ  88  577  236 737
        -- 2ĽÓ  91  343  238 504
        -- 3ĽÓ 104  107  248 269
        if pc.get_x() < 2048+88 or pc.get_y() < 6656+577 or pc.get_x() > 2048+236 or pc.get_y() > 6656+737 then
            pc.warp((5376+532)*100, (512+596+4)*100, 65)
        end
        pc.set_warp_location(65, 5376+532, 512+596+4)
        elseif pc.get_map_index() >= 660000 and pc.get_map_index() < 670000 then
        pc.set_warp_location(65, 5376+532, 512+596+4)
        end
    end
    when deviltower_man.chat."Wieża Demonów" begin
        if pc.get_level() < 40 then
        say(locale.deviltower_man_say_you_cant)
        else
        say(locale.deviltower_man_say)
        local s = select(locale.deviltower_enter,locale.deviltower_no_enter)
        if s == 1 then
            -- warp into!
            pc.warp(216500,727000)
        end
        end
    end
    when kill with npc.get_race() == 8015 and pc.get_map_index() == 66 begin
        timer("devil_stone1_1", 6)
    end
    when devil_stone1_1.timer  begin
        local mapto7= pc.count_item(30302)  -- ®ř·Ŕ¤ŁŞľ¬O§_¦s¦bŞşŻu¤`ĆF¶đ
        pc.remove_item(30302,mapto7)
 
        local boxto7= pc.count_item(30300)  -- ®ř·Ŕ¤ŁŞľ¬O§_¦s¦bŞş¤ŁŞľ¦WŞş˝c¤l
        pc.remove_item(30300,boxto7)
 
        d.new_jump_all(66, special.devil_tower[1][1], special.devil_tower[1][2])
        d.regen_file("data/dungeon/deviltower2_regen.txt")
        d.set_warp_at_eliminate(4, d.get_map_index(), special.devil_tower[2][1], special.devil_tower[2][2], "data/dungeon/deviltower3_regen.txt")
    end
    --when devil_stone2.kill begin
    --d.jump_all_local(special.devil_tower[2][1], special.devil_tower[2][2])
    --end
    when devil_stone3.kill begin
        --d.jump_all_local(special.devil_tower[3][1], special.devil_tower[3][2])
        --d.set_exit_all_at_eliminate(6)
        --d.set_warp_at_eliminate(6, d.get_map_index(), 100, 100)
        --d.set_warp_at_eliminate(4, 65, 5376+532, 512+596+4)
        d.set_warp_at_eliminate(4, d.get_map_index(), special.devil_tower[3][1], special.devil_tower[3][2], "data/dungeon/deviltower4_regen.txt")
        d.check_eliminated()
        --d.exit_all()
    end
    function get_4floor_stone_pos()
        local positions = {
        {368, 629},
        {419, 630},
        {428, 653},
        {422, 679},
        {395, 689},
        {369, 679},
        {361, 658},
        }
        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
        --for i = 1, 7 do
    --    positions[i][1] = positions[i][1] * 100
    --    positions[i][2] = positions[i][2] * 100
     --   end
        return positions
    end
    when kill with npc.get_race() == 8016 and pc.in_dungeon() and pc.get_map_index() >= 660000 and pc.get_map_index() < 670000 begin
        d.setf("level", 4)
        -- ¦A˛{¤j¶q©ÇŞ«¤Î»słyŻuĄŰŔY©M°˛ĄŰŔY
        --d.regen_file("data/dungeon/deviltower4_regen.txt")
        local positions = deviltower_zone.get_4floor_stone_pos()
        for i = 1, 6 do
        chat(positions[i][1], positions[i][2])
        d.set_unique("fake" .. i , d.spawn_mob(8017, positions[i][1], positions[i][2]))
        end
        chat(positions[7][1], positions[7][2])
        local vid = d.spawn_mob(8017, positions[7][1], positions[7][2])
        chat(vid)
        d.set_unique("real", vid)
        server_loop_timer('devil_stone4_update', 10, pc.get_map_index())
        server_timer('devil_stone4_fail1', 5*60, pc.get_map_index())
 
        d.notice("<Informacja> Brawo, Udało się Tobie");
        d.notice("<Informacja> zniszczyc kamien metin!");
        d.notice("<Informacja> Macie 15 minut na nastepnym pietrzezanim zostaniecie wylogowani.");
        d.notice("<Informacja> Spieszcie się!");
    end
 
    when devil_stone4_fail1.server_timer begin
        if d.select(get_server_timer_arg()) then
        d.notice("<Informacja> Pozostało 10 minut!")
        server_timer('devil_stone4_fail2', 5*60, get_server_timer_arg())
        end
    end
 
    when devil_stone4_fail2.server_timer begin
        if d.select(get_server_timer_arg()) then
        d.notice("<Informacja> Pozostało 5 minut!")
        server_timer('devil_stone4_fail', 5*60, get_server_timer_arg())
        end
    end
 
    when devil_stone4_fail.server_timer begin
        if d.select(get_server_timer_arg()) then
        d.notice("<Informacja> Nie udało się, zostaniecie wylogowani!")
        d.exit_all()
        clear_server_timer('devil_stone4_update', get_server_timer_arg())
        end
    end
 
    when devil_stone4_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) < 50 then
                d.purge_unique("fake" .. i)
                d.setf("fakedead" .. i, 1)
                d.notice("<Informacja> To nie ten kamien!");
                end
            end
            end
        else
            --d.clear_regen()
            --d.regen_file("data/dungeon/deviltower5_regen.txt")
            server_timer("devil_stone4_end", 5, get_server_timer_arg())
            d.notice("<Informacja> Udało się! Zabij wszystkie potwory na nastepnym");
            d.notice("<Informacja> pietrze, aby zdobyc kamien otwarcia!")
            clear_server_timer('devil_stone4_fail1', get_server_timer_arg())
            clear_server_timer('devil_stone4_fail2', get_server_timer_arg())
            clear_server_timer('devil_stone4_fail', get_server_timer_arg())
        end
        else
        server_timer('devil_stone4_stop_timer', 1, get_server_timer_arg())
        end
    end
 
    when devil_stone4_stop_timer.server_timer begin
        clear_server_timer('devil_stone4_update', get_server_timer_arg())
    end
 
    when devil_stone4_end.server_timer begin
        if d.select(get_server_timer_arg()) then
        d.setf("level", 5)
        d.setf("stone_count", 5)
        d.notice("<Informacja> Brawo, jesteś na 5 piętrze!")
        d.notice("<Informacja> Aby przejść na 6 pietro musisz zabić ")
        d.notice("<Informacja> wszystkie potwory tutaj, zdobyć Kamień ")
        d.notice("<Informacja> Otwarcia i otworzyć pieczęcie przed czasem!")
        d.jump_all(special.devil_tower[4][1], special.devil_tower[4][2])
        server_timer('devil_stone5_fail1', 5*60, get_server_timer_arg())
        clear_server_timer('devil_stone4_update', get_server_timer_arg())
 
        -- 5ĽÓÄ~Äň¦A˛{
        d.set_regen_file("data/dungeon/deviltower5_regen.txt")
 
        -- 5ĽÓ«Ę¦LĄŰ¦A˛{
        d.spawn_mob(20073, 421, 452)
        d.spawn_mob(20073, 380, 460)
        d.spawn_mob(20073, 428, 414)
        d.spawn_mob(20073, 398, 392)
        d.spawn_mob(20073, 359, 426)
        end
    end
    when devil_stone5_fail1.server_timer begin
        if d.select(get_server_timer_arg()) then
        d.notice("<Informacja> Pozostało 15 minut!")
        server_timer('devil_stone5_fail2', 5*60, get_server_timer_arg())
        end
    end
 
    when devil_stone5_fail2.server_timer begin
        if d.select(get_server_timer_arg()) then
        d.notice("<Informacja> Pozostało 10 minut!")
        server_timer('devil_stone5_fail3', 5*60, get_server_timer_arg())
        end
    end
 
    when devil_stone5_fail3.server_timer begin
        if d.select(get_server_timer_arg()) then
        d.notice("<Informacja> Pozostało 5 minut!")
        server_timer('devil_stone5_fail', 5*60, get_server_timer_arg())
        end
    end
 
    when devil_stone5_fail.server_timer begin
        if d.select(get_server_timer_arg()) then
        d.notice("<Informacja> Nie udało się, zostaniecie wylogowani!")
        d.exit_all()
        end
    end
 
    --when devil_stone4.kill begin
        --d.setf("level", 5)
        --d.setf("stone_count", 4)
        --d.clear_regen()
        --d.regen_file("data/dungeon/deviltower5_regen.txt")
        --d.jump_all_local(special.devil_tower[4][1], special.devil_tower[4][2])
    --end
 
    when kill with npc.get_race() == 1062 and pc.in_dungeon() and d.getf("level") == 5 begin
        local KILL_COUNT_FOR_DROP_KEY = 50
        --if is_test_server() then
        --KILL_COUNT_FOR_DROP_KEY = 1
        --end
        local n =d.getf("count") + 1
        d.setf("count", n) 
        if n == KILL_COUNT_FOR_DROP_KEY then
        -- ±Ľ¤UÂę°Í
        pc.give_item2(50084, 1)
        d.notice("<Informacja> "..pc.get_name().." podniósł Kamień Otwarcia.")
        d.setf("count", 0)
        end
    end
    when devil_stone5.take with item.vnum == 50084 begin
        npc.purge()
        item.remove()
        d.setf("stone_count", d.getf("stone_count") - 1)
        if d.getf("stone_count") <= 0 then
        d.setf("level", 6)
        d.clear_regen()
        d.regen_file("data/dungeon/deviltower6_regen.txt")
 
        d.notice("<Informacja> Brawo udało się! Jesteś na 6 piętrze!")
        d.notice("<Informacja> Zabij wszystkie potwory!")
        d.jump_all(special.devil_tower[5][1], special.devil_tower[5][2])
        clear_server_timer('devil_stone5_fail1', get_server_timer_arg())
        clear_server_timer('devil_stone5_fail2', get_server_timer_arg())
        clear_server_timer('devil_stone5_fail3', get_server_timer_arg())
        clear_server_timer('devil_stone5_fail', get_server_timer_arg())
        else
        d.notice("<Informacja> Pozostałe pieczęcie: "..d.getf("stone_count"))
        end
    end
 
    when devil_stone6.kill begin
        -- ¶Ç°e¨ě·Ň¸t©Ň¦bŞş¦aąĎ
        -- §_«hˇA¶}ł]¤@­Ó·s·Ň¸t
        --d.jump_all(special.devil_tower[6][1], special.devil_tower[6][2])
        d.kill_all()
       -- d.set_warp_at_eliminate(3*60, 65, 5376+532, 512+596+4)
        d.check_eliminated()
        local reward_alchemist = {20074, 20075, 20076}
        d.spawn_mob(reward_alchemist[number(1,3)], 425, 216);
        d.setqf("can_refine", 1)
    end
 
    --------------------------------------
    -- ĄŃ¶i¤J7ĽÓ¦Ü¨ěąF8ĽÓ¤§«e
    --------------------------------------
 
    when 20074.chat."Chcę przejść dalej." with pc.in_dungeon() and pc.get_map_index() >= 660000 and pc.get_map_index() < 670000 and d.getf("level") == 6 begin
        say_title(""..mob_name(20074).."")
        say("Zostaniesz przeniesiony")
        say("na 7 pietro Wieży Demonów!")
        say("Lecz uważaj...")
        say("Tam nie będzie tak łatwo jak wczesniej!")
        wait()
        if pc.level >=75 then
            say("Kazdy z graczy zostanie przeniesiony!")
            timer("devil_jump_7", 6)
            return
        end
        say("Mozesz przejsc dalej!")
        say("")
        say("")
        wait()
        pc.warp(590500, 110500)
        return
    end
    when 20075.chat."Chcę przejść dalej." with pc.in_dungeon() and pc.get_map_index() >= 660000 and pc.get_map_index() < 670000 and d.getf("level") == 6 begin
        say_title(""..mob_name(20075).."")
        say("Zostaniesz przeniesiony")
        say("na 7 pietro Wieży Demonów!")
        say("Lecz uważaj...")
        say("Tam nie będzie tak łatwo jak wczesniej!")
        wait()
        if pc.level >=75 then
            say("Kazdy z graczy zostanie przeniesiony!")
            timer("devil_jump_7", 6)
            return
        end
        say("Mozesz przejsc dalej!")
        say("")
        say("")
        wait()
        pc.warp(590500, 110500)
        return
    end
    when 20076.chat."Chcę przejść dalej." with pc.in_dungeon() and pc.get_map_index() >= 660000 and pc.get_map_index() < 670000 and d.getf("level") == 6 begin
        say_title(""..mob_name(20076).."")
        say("Zostaniesz przeniesiony")
        say("na 7 pietro Wieży Demonów!")
        say("Lecz uważaj...")
        say("Tam nie będzie tak łatwo jak wczesniej!")
        wait()
        if pc.level >=75 then
            say("Kazdy z graczy zostanie przeniesiony!")
            timer("devil_jump_7", 6)
            return
        end
        say("Mozesz przejsc dalej!")
        say("")
        say("")
        wait()
        pc.warp(590500, 110500)
        return
    end
 
   when devil_jump_7.timer begin
        d.clear_regen()
 
        d.spawn_mob(8018, 639, 658)
        d.spawn_mob(8018, 611, 637)
        d.spawn_mob(8018, 596, 674)
        d.spawn_mob(8018, 629, 670)
 
        d.setf("level", 7)
 
        d.jump_all(2048+590, 6656+638)
    end
    
    when kill with npc.get_race() == 8018 and pc.in_dungeon() and pc.get_map_index() >= 660000 and pc.get_map_index() < 670000 begin
        local cont = d.getf("7_stone_kill") + 1
        d.setf("7_stone_kill", cont)
 
        if cont >= 4 then
            d.setf("7_stone_kill", 0)
            d.set_regen_file("data/dungeon/deviltower7_regen.txt")
        end    
    end
 
    when kill with npc.get_race() == 8019 and pc.in_dungeon() and pc.get_map_index() >= 660000 and pc.get_map_index() < 670000 begin
        game.drop_item(30300, 1)
    end
 
    when 30300.use with pc.in_dungeon() and pc.get_map_index() >= 660000 and pc.get_map_index() < 670000 begin
        pc.remove_item("30300", 1)
 
        local pct = number(1,10)
 
        if pct == 1 then
            -- ±Ľ¤UŻu¦aąĎ
            game.drop_item(30302, 1)
            d.notice("<Informacja> Mapa Zin-Sa-Gui wyleciala na ziemie");
            d.clear_regen()
        else
            -- ±Ľ¤U°˛¦aąĎ
            game.drop_item(30301, 1)
            
        end
    end
 
    when 30302.use with pc.in_dungeon() and pc.get_map_index() >= 660000 and pc.get_map_index() < 670000 begin
        -- ¶Ç°e¨ě8ĽÓ
        say("Przeniesiesz się na 8 pietro!")
        pc.remove_item("30302", 1)
        timer("devil_jump_8", 6)
        d.clear_regen()
    end
                        
    --------------------------------------------
    -- ĄŃ¶i¤J8ĽÓ¦Ü¨ěąF9ĽÓ¤§«e
    --------------------------------------------
    when devil_jump_8.timer begin
        d.setf("level", 8)
        d.jump_all(2048+590, 6656+403)
        d.set_regen_file("data/dungeon/deviltower8_regen.txt")
        d.spawn_mob(20366, 640, 460)
        local _count= pc.count_item(30302)-- ®ř·ŔŻu¤`ĆF¶đ
        pc.remove_item(30302,_count)
        
    end
 
    when kill with npc.get_race() == 1040 and pc.in_dungeon() and pc.get_map_index() >= 660000 and pc.get_map_index() < 670000 and d.getf("level") == 8 begin
        local pct1 = number(1, 5)
        if pct1 == 1 then
            local pct2 = number(1, 10)
            if pct2 == 1 then
                -- ±Ľ¤UŻuÂę°Í
                game.drop_item(30304, 1)
            else
                -- ±Ľ¤U°˛Âę°Í
                game.drop_item(30303, 1)
            end
        else
            return
        end
    end
 
    when 20366.take with item.vnum == 30304 begin
        -- 9ĽÓ«Ę¦L¸Ń°Ł
        d.notice("<Informacja> Zostaniecie przeniesieni na 9 pietro!")
        npc.purge()
        item.remove()
        timer("devil_jump_9", 6)
    end
 
    ---------------------------------------------
    -- ĄŃ¶i¤J9ĽÓ¦Üµ˛§ô
    ---------------------------------------------
    when devil_jump_9.timer begin
        d.setf("level", 9)
        d.jump_all(2048+590, 6656+155)
        d.spawn_mob(1093, 608, 220)
        d.regen_file("data/dungeon/deviltower9_regen.txt")
    end
 
    when kill with npc.get_race() == 1093 and pc.in_dungeon() and pc.get_map_index() >= 660000 and pc.get_map_index() < 670000 begin
        d.kill_all()
        d.notice("<Informacja> Zaraz przeniesiecie się na 10 poziom.")
        timer("devil_end_jump", 30)
    end
 
    when devil_end_jump.timer begin
        d.setf("level", 10)
        d.jump_all(2048+590, 6656+155)
        d.spawn_mob(1093, 608, 220)
        d.regen_file("data/dungeon/deviltower9_regen.txt")
        end
    end
    when kill with npc.get_race() == 1095 and pc.in_dungeon() and pc.get_map_index() >= 660000 and pc.get_map_index() < 670000 begin
        d.kill_all()
        d.notice("<Informacja> Za 60 sekund zostaniecie wyrzuceni z Wieży!")
        timer("devil_end_jumpx", 60)
    end
    
    when devil_end_jumpx.timer begin
        d.exit_all()
    end
end
end

 

 

Opublikowano

Wpadanie kamienia otwarcia do eq przecież masz zrobione:

        pc.give_item2(50084, 1)

d.notice("<Informacja> "..pc.get_name().." podniósł Kamień Otwarcia.")

Co do ripera to zapomniałeś sobie tutaj zmienić jedynie id:
    when devil_end_jump.timer begin

d.setf("level", 10)

d.jump_all(2048+590, 6656+155)

d.spawn_mob(1093, 608, 220)

d.regen_file("data/dungeon/deviltower9_regen.txt")

end

end

Masz pomysł na ciekawego questa? Wejdź na mój profil by poznać szczegóły!


Opublikowano

@up właśnie widziałem,że niby jest to wpadanie do eq ale on wypada na ziemie i nie wiem co jest grane.

 

zmieniłem to ID ale mam błąd przy wgrywaniu questa :

post-200999-0-19358800-1373302809.png

Opublikowano

    when devil_end_jump.timer begin

d.setf("level", 10)

d.jump_all(2048+590, 6656+155)

d.spawn_mob(1093, 608, 220)

d.regen_file("data/dungeon/deviltower9_regen.txt")

end

end

Usuń jednego enda

Masz pomysł na ciekawego questa? Wejdź na mój profil by poznać szczegóły!


Opublikowano

dzieki Lua, tylko powiedz mi jeszcze co może być ,że Kamień nie wpada do eq ? w queście jest napisane,że powinien a on wypada na ziemie..

Opublikowano

Być może zabrzmi to głupio ale robiłeś /reload q będąc w DT bądź restartowałeś serwer? Nie widzę tam żadnego błędu a wygląda tak, jakby quest korzystał z jakichś innych plików.

 

Jeszcze jedno pytanie, wyświetla się komunikat kto podniósł kamień?

Masz pomysł na ciekawego questa? Wejdź na mój profil by poznać szczegóły!


Opublikowano

robiłem właśnie reload q i wszystko inne działa jak zmieniłem a tamto nie chce. Zaraz sprawdze jeszcze w ' object ' czy coś nie gryzie się z nim i dam znać.

 

właśnie też nie wyświetla. po prostu wypada na ziemie.

Zarchiwizowany

Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.

×
×
  • Dodaj nową pozycję...