Skocz do zawartości
Opublikowano

@Rain94

No to jak juz się zaoferowałeś ze jesteś w stanie napisać questa i wrzucisz go tutaj za free, w pełni sprawnego i działającego (najlepiej jakbyś jeszcze nagrał jak ty go piszesz)

No to dungeon.

Pierwsze Piętro = wybicie metinów resp 30 metków na losowych koordynatach, czyli z kazdym wejściem na dunga, są w innych pozycjach oraz musi zostać zabity prawidłowy, w momencie zabicia fałszywego metina, rozpoczynasz zadanie od nowa.
Czyli respi się ponownie ten zabity fałszywy metin przez Ciebie.

Drugie Piętro = Ubicie Wszystkich mobów łącznie w regenie ma być ich 2000 i to zadanie czasowe, gracz ma posiadać minutę na wykonanie tego zadania = jeśli nie wykona, zostaje wyrzucony z dunga oraz nalicza czas blokady na ponowne jego wejście

Trzecie piętro = Walka z mini bossami, respią się 4 minibossy w momencie ich respawnu, gracz otrzymuje debuffy, Nie mozesz uzywać skilli, nie mozesz wypić zadnej rosy, mikstury, czegokolwiek oraz usuwa obecne affecty aury miecza, silnego ciała itp (łącznie z buffami)
Walka ma trwać na zasadzie hitów, wraz z zadaniem 100 hit'boxów ABS miniboss'a ma się zwiększać o x % zadanych obrazen, czyli po 100 hitach abs bossa zwiększa się o 5% (nie nie bazujemy na hp i jego spadku, bazujemy na hitach)

Czwarte piętro = Insygnia przetrwania, co 30 sekund respi się boss z nowym id i jego damage ma być zwiększony kilkukrotnie, w tym czasie gracz musi ubijać potwory jak i metiny aby dropnąć pieczęcie do aktywacji. Jeśli boss zrespi się po 30 sekundach, zada skill a następnie ten boss ma być purgowany, za kazdym razem po upływie 30 sekund, ma się pojawić, zadać ogromne obrazenia, i zniknąć, a w przypadku gdy gracz się wypierdoli, cofa go o jeden poziom dungeonu, (nie wyrzuca całkiem) tylko znaczyna od nowa od etapu trzeciego.

Piąte Piętro = Wszystkie potwory zyskują zwiększone absy kilkukrotnie, i z potworów wypada przedmiot, i po jego uzyciu absy mobów maleja jakaś mikstura czy coś, Dopiero gdy dropnie 10 takich mikstur = wtedy moby na dungu stracą całkiem absy po uzyciu 10 mikstur

Po zabiciu wszystkich mobów jest boss końcowy i boss wraz z spadkiem jego % hp ma otrzymywać losowe bonusy w stylu jeśli poziom jego hp osiągnie 80% wtedy jego skill obszarowy który zadaje dmg, zwiększa się. Jeśli poziom hp spadnie do 60% wtedy boss ma przywoływać swoich podopiecznych = moby, może się wykonać regen specjalny który aktywuje się dopiero gdy boss ma 60% hp.
jesli % bossa hp spadnie do 40% wtedy respią się metiny, i dopóki gracz ich nie zabije, zadaje 0 dmg w boss'a oraz całkowicie blokuje się regeneracja hp bossa, zostaje na 40%.

Dopiero po ubiciu metinów, mozesz kontynuować walkę z bossem, i teraz najlepsze = jeśli % hp bossa spadnie do 10% to automatycznie na graczach nie działają autopoty, zwykłe poty, gracz nie może regenerować swojego hp w zaden inny sposób niz poza bonusem w eq "Regeneracja Pz"

Dodatkowe Warunki:
W zalezności od tego jaka jest pora dzien/noc tym dungeon i wszystkie jego % są inne, jeśli wchodzisz za dnia, jest łatwiej, jeśli w nocy, jest trudniej

Featured Replies

Opublikowano

Ale bym przygarnął taki queścior.

Opublikowano

A to kolega gdzieś się deklarował? bo nie jestem w temacie. 😁

Opublikowano
2 minuty temu, Sevence napisał(a):

A to kolega gdzieś się deklarował? bo nie jestem w temacie. 😁

image.png

Opublikowano

O kurde no to robi się ciekawie, aż muszę go zobaczyć.

Opublikowano

Kreatywne

Opublikowano

Czekam na tego questa.

Opublikowano

Przyznam szczerze, że jeszcze takiego nie pisałem. Ale podejmuje rękawice, od jutra zaczynam po pracy

Opublikowano

ciekawy dung powstanie

Opublikowano

ChatGPT dołączył do czatu.

Opublikowano
9 minut temu, YeeeY napisał(a):

ChatGPT dołączył do czatu.

GENEROWANIE... XD


quest dungeon_quest begin
    state start begin
        when 9001.chat("Wejście do dungeonu") with pc.get_level() >= 30 begin
            say("Czy chcesz wejść do dungeonu?")
            local s = select("Tak", "Nie")
            if s == 2 then
                return
            end

            if party.is_party() and not party.is_leader() then
                say("Tylko lider grupy może rozpocząć dungeon!")
                return
            end
            
            if party.is_party() and party.get_near_count() < 2 then
                say("W grupie musi być co najmniej 2 graczy!")
                return
            end
            
            d.new_jump(5001, 100, 100) -- ID mapy dungeonu
            d.setf("stage", 1)
            d.setf("fail_count", 0)
            d.notice("Pierwsze piętro: Znajdź i zniszcz właściwy metin!")
            dungeon_spawn_metins()
        end

        function dungeon_spawn_metins()
            for i = 1, 30 do
                local x = math.random(50, 150)
                local y = math.random(50, 150)
                local metin_id = (math.random(1, 30) == 1) and 8001 or 8002
                d.spawn_mob(metin_id, x, y)
            end
        end

        when kill with d.getf("stage") == 1 and npc.is_metin() begin
            if npc.get_race() == 8001 then -- Prawidłowy metin
                d.notice("Znalazłeś prawidłowy metin! Przechodzisz dalej.")
                d.setf("stage", 2)
                d.set_regen_file("data/dungeon_mob.txt")
                d.set_warp_location(5001, 200, 200)
                d.jump_all(5001, 200, 200)
                d.notice("Drugie piętro: Masz minutę na zabicie 2000 potworów!")
                d.setf("timer", d.getf("timer") + 60)
            else
                d.notice("Zły metin! Musisz zacząć od nowa!")
                dungeon_spawn_metins()
            end
        end

        when kill with d.getf("stage") == 2 begin
            if d.get_kill_count() >= 2000 then
                d.notice("Wszystkie potwory zabite! Przechodzisz dalej.")
                d.setf("stage", 3)
                d.jump_all(5001, 300, 300)
                d.notice("Trzecie piętro: Pokonaj 4 mini bossy!")
                dungeon_spawn_minibosses()
            end
        end

        when timer.end with d.getf("stage") == 2 begin
            d.notice("Nie zdążyłeś! Zostajesz wyrzucony i masz blokadę.")
            d.exit_all()
        end

        function dungeon_spawn_minibosses()
            for i = 1, 4 do
                d.spawn_mob(9001, 320, 320)
            end
            d.setf("hit_count", 0)
        end

        when hit with d.getf("stage") == 3 begin
            d.setf("hit_count", d.getf("hit_count") + 1)
            if d.getf("hit_count") % 100 == 0 then
                d.notice("Mini bossy wzmacniają się o 5%!")
            end
        end

        when kill with d.getf("stage") == 3 begin
            if d.get_kill_count() >= 4 then
                d.notice("Mini bossy pokonane! Przechodzisz dalej.")
                d.setf("stage", 4)
                d.jump_all(5001, 400, 400)
                d.notice("Czwarte piętro: Przetrwaj ataki bossów!")
            end
        end

        when kill with d.getf("stage") == 5 begin
            if d.get_kill_count() >= 100 then
                d.notice("Przechodzisz do ostatniego piętra!")
                d.setf("stage", 6)
                d.jump_all(5001, 500, 500)
                d.notice("Piąte piętro: Pokonaj bossa końcowego!")
                d.spawn_mob(9999, 500, 500)
            end
        end
    end
end
Opublikowano
Godzinę temu, Arta napisał(a):

GENEROWANIE... XD


quest dungeon_quest begin
    state start begin
        when 9001.chat("Wejście do dungeonu") with pc.get_level() >= 30 begin
            say("Czy chcesz wejść do dungeonu?")
            local s = select("Tak", "Nie")
            if s == 2 then
                return
            end

            if party.is_party() and not party.is_leader() then
                say("Tylko lider grupy może rozpocząć dungeon!")
                return
            end
            
            if party.is_party() and party.get_near_count() < 2 then
                say("W grupie musi być co najmniej 2 graczy!")
                return
            end
            
            d.new_jump(5001, 100, 100) -- ID mapy dungeonu
            d.setf("stage", 1)
            d.setf("fail_count", 0)
            d.notice("Pierwsze piętro: Znajdź i zniszcz właściwy metin!")
            dungeon_spawn_metins()
        end

        function dungeon_spawn_metins()
            for i = 1, 30 do
                local x = math.random(50, 150)
                local y = math.random(50, 150)
                local metin_id = (math.random(1, 30) == 1) and 8001 or 8002
                d.spawn_mob(metin_id, x, y)
            end
        end

        when kill with d.getf("stage") == 1 and npc.is_metin() begin
            if npc.get_race() == 8001 then -- Prawidłowy metin
                d.notice("Znalazłeś prawidłowy metin! Przechodzisz dalej.")
                d.setf("stage", 2)
                d.set_regen_file("data/dungeon_mob.txt")
                d.set_warp_location(5001, 200, 200)
                d.jump_all(5001, 200, 200)
                d.notice("Drugie piętro: Masz minutę na zabicie 2000 potworów!")
                d.setf("timer", d.getf("timer") + 60)
            else
                d.notice("Zły metin! Musisz zacząć od nowa!")
                dungeon_spawn_metins()
            end
        end

        when kill with d.getf("stage") == 2 begin
            if d.get_kill_count() >= 2000 then
                d.notice("Wszystkie potwory zabite! Przechodzisz dalej.")
                d.setf("stage", 3)
                d.jump_all(5001, 300, 300)
                d.notice("Trzecie piętro: Pokonaj 4 mini bossy!")
                dungeon_spawn_minibosses()
            end
        end

        when timer.end with d.getf("stage") == 2 begin
            d.notice("Nie zdążyłeś! Zostajesz wyrzucony i masz blokadę.")
            d.exit_all()
        end

        function dungeon_spawn_minibosses()
            for i = 1, 4 do
                d.spawn_mob(9001, 320, 320)
            end
            d.setf("hit_count", 0)
        end

        when hit with d.getf("stage") == 3 begin
            d.setf("hit_count", d.getf("hit_count") + 1)
            if d.getf("hit_count") % 100 == 0 then
                d.notice("Mini bossy wzmacniają się o 5%!")
            end
        end

        when kill with d.getf("stage") == 3 begin
            if d.get_kill_count() >= 4 then
                d.notice("Mini bossy pokonane! Przechodzisz dalej.")
                d.setf("stage", 4)
                d.jump_all(5001, 400, 400)
                d.notice("Czwarte piętro: Przetrwaj ataki bossów!")
            end
        end

        when kill with d.getf("stage") == 5 begin
            if d.get_kill_count() >= 100 then
                d.notice("Przechodzisz do ostatniego piętra!")
                d.setf("stage", 6)
                d.jump_all(5001, 500, 500)
                d.notice("Piąte piętro: Pokonaj bossa końcowego!")
                d.spawn_mob(9999, 500, 500)
            end
        end
    endend
Godzinę temu, YeeeY napisał(a):

ChatGPT dołączył do czatu.

Cloude też dołączył, generowanie.... https://pastebin.com/sZ8H1Lwp

Edytowane przez kris006

Opublikowano
4 minuty temu, kris006 napisał(a):

Cloude też dołączył, generowanie....

quest piekielny_dungeon begin
    state start begin
        -- Definicja konfiguracji w tablicy: mapa, ID i dane pięter
        local config = {
            map = 666, -- Indeks mapy dungeonu (zmień na swój)
            ids = {npc = 9001, metin = 8001, mob = 1001, miniboss = 2001, boss = 4001, seal = 50001, potion = 50002, reward = 50003}, -- ID NPC, mobów, przedmiotów
            floors = {
                [1] = {metins = 30}, -- Piętro 1: 30 metinów
                [2] = {mobs = 2000, time = 60}, -- Piętro 2: 2000 mobów, 60 sekund
                [3] = {minibosses = 4, abs_increase = 5}, -- Piętro 3: 4 minibossy, ABS +5%
                [4] = {seals = 5, boss_timer = 30}, -- Piętro 4: 5 pieczęci, boss co 30 sekund
                [5] = {potions = 10, boss_stages = {80, 60, 40, 10}} -- Piętro 5: 10 mikstur, etapy bossa
            }
        }

        -- Sprawdzenie, czy gracz jest w dungeonie po zalogowaniu/awansie
        when login or levelup with pc.getqf("active") == 1 and pc.get_map_index() == config.map begin
            piekielny_dungeon.progress() -- Kontynuacja postępu
        end

        -- Rozmowa z NPC do wejścia (pierwsze wywołanie questa)
        when config.ids.npc.chat."Wejdź do Dungeonu" begin
            say("Gotów na Piekielny Dungeon?") -- Dialog NPC
            if select("Tak", "Nie") == 1 then -- Wybór gracza
                if pc.getqf("block") > os.time() then -- Sprawdzenie blokady czasowej
                    say("Poczekaj " .. (pc.getqf("block") - os.time()) .. " sekund.")
                    return
                end
                pc.setqf("active", 1) -- Aktywacja dungeonu
                pc.setqf("floor", 1) -- Start od 1. piętra
                pc.setqf("day_night", piekielny_dungeon.get_bonus()) -- Ustawienie mnożnika dzień/noc
                pc.warp(config.map * 10000, config.map * 10000) -- Teleport na mapę dungeonu
                piekielny_dungeon.progress() -- Rozpoczęcie postępu
            end
        end

        -- Funkcja obliczająca bonus dzień/noc (0.8 za dnia, 1.2 w nocy)
        function get_bonus() 
            return (tonumber(os.date("%H")) >= 6 and tonumber(os.date("%H")) < 18) and 0.8 or 1.2 
        end

        -- Główna funkcja postępu, wybiera aktualne piętro
        function progress()
            local f = pc.getqf("floor") -- Pobranie aktualnego piętra
            if f == 1 then piekielny_dungeon.floor_1(config.floors[1]) -- Piętro 1
            elseif f == 2 then piekielny_dungeon.floor_2(config.floors[2]) -- Piętro 2
            elseif f == 3 then piekielny_dungeon.floor_3(config.floors[3]) -- Piętro 3
            elseif f == 4 then piekielny_dungeon.floor_4(config.floors[4]) -- Piętro 4
            elseif f == 5 then piekielny_dungeon.floor_5(config.floors[5]) -- Piętro 5
            end
        end

        -- Piętro 1: Metiny
        function floor_1(data)
            if not d.getf("spawned") then -- Jeśli metiny nie zrespione
                d.setf("spawned", 1) -- Oznaczenie respawnu
                for i = 1, data.metins do -- Respawn 30 metinów
                    d.spawn_mob(config.ids.metin, math.random(100, 900) * 100, math.random(100, 900) * 100) -- Losowe koordynaty
                end
                d.setf("correct", math.random(1, data.metins)) -- Losowy prawidłowy metin
            end
            when config.ids.metin.kill begin -- Po zabiciu metina
                if d.get_unique_vid() == d.getf("correct") then -- Jeśli prawidłowy
                    pc.setqf("floor", 2) -- Przejście na 2. piętro
                    d.purge() -- Czyszczenie mapy
                    piekielny_dungeon.progress() -- Kontynuacja
                else -- Jeśli fałszywy
                    d.kill_unique(d.get_unique_vid()) -- Usunięcie zabitego metina
                    d.spawn_mob(config.ids.metin, math.random(100, 900) * 100, math.random(100, 900) * 100) -- Respawn nowego
                end
            end
        end

        -- Piętro 2: 2000 mobów z limitem czasowym
        function floor_2(data)
            if not d.getf("spawned") then -- Jeśli moby nie zrespione
                d.setf("spawned", 1) -- Oznaczenie respawnu
                d.setf("killed", 0) -- Licznik zabitych mobów
                for i = 1, data.mobs do -- Respawn 2000 mobów
                    d.spawn_mob(config.ids.mob, math.random(100, 900) * 100, math.random(100, 900) * 100) -- Losowe koordynaty
                end
                timer("time_up", data.time) -- Timer 60 sekund
            end
            when config.ids.mob.kill begin -- Po zabiciu moba
                d.setf("killed", d.getf("killed") + 1) -- Zwiększenie licznika
                if d.getf("killed") >= data.mobs then -- Jeśli wszystkie zabite
                    pc.setqf("floor", 3) -- Przejście na 3. piętro
                    d.purge() -- Czyszczenie mapy
                    piekielny_dungeon.progress() -- Kontynuacja
                end
            end
            when time_up.timer begin -- Po upływie czasu
                pc.setqf("active", 0) -- Dezaktywacja dungeonu
                pc.setqf("block", os.time() + 300) -- Blokada na 5 minut
                pc.warp(10000, 10000) -- Wyrzucenie do miasta
            end
        end

        -- Piętro 3: Minibossy z debuffami i ABS na hity
        function floor_3(data)
            if not d.getf("spawned") then -- Jeśli minibossy nie zrespione
                d.setf("spawned", 1) -- Oznaczenie respawnu
                d.setf("killed", 0) -- Licznik zabitych minibossów
                for i = 1, data.minibosses do -- Respawn 4 minibossów
                    d.spawn_mob(config.ids.miniboss, math.random(100, 900) * 100, math.random(100, 900) * 100) -- Losowe koordynaty
                end
                affect.remove_all() -- Usunięcie wszystkich affectów (buffów)
                pc.setqf("no_skills", 1) -- Blokada skilli
                pc.setqf("no_potions", 1) -- Blokada mikstur
            end
            when config.ids.miniboss.kill begin -- Po zabiciu minibossa
                local hits = pc.getqf("hits") + 1 -- Licznik hitów
                pc.setqf("hits", hits)
                if hits % 100 == 0 then -- Co 100 hitów
                    d.setf("abs", d.getf("abs") + data.abs_increase) -- Zwiększenie ABS o 5%
                end
                d.setf("killed", d.getf("killed") + 1) -- Zwiększenie licznika zabitych
                if d.getf("killed") >= data.minibosses then -- Jeśli wszystkie zabite
                    pc.setqf("floor", 4) -- Przejście na 4. piętro
                    pc.setqf("no_skills", 0) -- Odblokowanie skilli
                    pc.setqf("no_potions", 0) -- Odblokowanie mikstur
                    pc.setqf("hits", 0) -- Reset licznika hitów
                    d.purge() -- Czyszczenie mapy
                    piekielny_dungeon.progress() -- Kontynuacja
                end
            end
        end

        -- Piętro 4: Insygnia przetrwania, boss co 30 sekund
        function floor_4(data)
            if not d.getf("spawned") then -- Jeśli mapa nie zainicjowana
                d.setf("spawned", 1) -- Oznaczenie startu
                d.setf("boss_count", 0) -- Licznik bossów
                timer("boss_spawn", data.boss_timer) -- Timer bossa co 30 sekund
                d.regen_file("data/dungeon/floor4_regen.txt") -- Regen mobów i metinów
            end
            when config.ids.mob.kill or config.ids.metin.kill begin -- Drop pieczęci z mobów/metinów
                if math.random(1, 10) == 1 then pc.give_item2(config.ids.seal, 1) end -- 10% szansy
            end
            when boss_spawn.timer begin -- Respawn bossa co 30 sekund
                d.spawn_mob(config.ids.boss + d.getf("boss_count"), 500 * 100, 500 * 100) -- Nowy boss z kolejnym ID
                d.setf("boss_count", d.getf("boss_count") + 1) -- Zwiększenie licznika bossów
                timer("boss_purge", 5) -- Timer na purgovanie bossa po 5 sekundach
                timer("boss_spawn", data.boss_timer) -- Kolejny boss za 30 sekund
            end
            when boss_purge.timer begin -- Usunięcie bossa po ataku
                d.purge() -- Czyszczenie mapy z bossa
            end
            when config.ids.seal.use begin -- Użycie pieczęci
                if pc.count_item(config.ids.seal) >= data.seals then -- Jeśli gracz ma 5 pieczęci
                    pc.remove_item(config.ids.seal, data.seals) -- Usunięcie pieczęci
                    pc.setqf("floor", 5) -- Przejście na 5. piętro
                    d.purge() -- Czyszczenie mapy
                    piekielny_dungeon.progress() -- Kontynuacja
                end
            end
            when kill with pc.get_hp() <= 0 begin -- Śmierć gracza
                pc.setqf("floor", 3) -- Cofnięcie na 3. piętro
                pc.warp(config.map * 10000, config.map * 10000) -- Powrót na start dungeonu
            end
        end

        -- Piętro 5: Moby z ABS, boss z etapami
        function floor_5(data)
            if not d.getf("spawned") then -- Jeśli mapa nie zainicjowana
                d.setf("spawned", 1) -- Oznaczenie startu
                d.setf("potions", 0) -- Licznik mikstur
                d.setf("boss_spawned", 0) -- Flaga bossa
                d.regen_file("data/dungeon/floor5_regen.txt") -- Regen mobów z wysokim ABS
            end
            when config.ids.mob.kill begin -- Drop mikstur z mobów
                if math.random(1, 20) == 1 then -- 5% szansy
                    pc.give_item2(config.ids.potion, 1) -- Dodanie mikstury
                    d.setf("potions", d.getf("potions") + 1) -- Zwiększenie licznika
                end
                if d.getf("potions") >= data.potions and not d.getf("boss_spawned") then -- Jeśli 10 mikstur
                    d.purge() -- Czyszczenie mobów
                    d.spawn_mob(config.ids.boss, 500 * 100, 500 * 100) -- Respawn bossa
                    d.setf("boss_spawned", 1) -- Oznaczenie bossa
                end
            end
            when config.ids.boss.hit begin -- Etapy bossa na podstawie % HP
                local hp = d.get_hp_percent() -- Procent HP bossa
                if hp <= data.boss_stages[1] and not d.getf("s1") then -- 80% HP
                    d.setf("s1", 1) -- Zwiększony skill obszarowy (dostosuj w regen)
                elseif hp <= data.boss_stages[2] and not d.getf("s2") then -- 60% HP
                    d.setf("s2", 1)
                    d.spawn_mob(config.ids.mob, 500 * 100, 500 * 100, 10) -- Przywołanie 10 mobów
                elseif hp <= data.boss_stages[3] and not d.getf("s3") then -- 40% HP
                    d.setf("s3", 1)
                    for i = 1, 5 do -- Respawn 5 metinów
                        d.spawn_mob(config.ids.metin, math.random(100, 900) * 100, math.random(100, 900) * 100)
                    end
                    d.set_regen_stop(true) -- Blokada regeneracji HP bossa
                elseif hp <= data.boss_stages[4] and not d.getf("s4") then -- 10% HP
                    d.setf("s4", 1)
                    pc.setqf("no_potions", 1) -- Blokada regeneracji HP gracza
                end
            end
            when config.ids.metin.kill with d.getf("s3") == 1 begin -- Zniszczenie metinów na 40% HP bossa
                if d.count_monster() == 0 then -- Jeśli wszystkie metiny zabite
                    d.set_regen_stop(false) -- Odblokowanie regeneracji HP bossa
                    d.setf("s3", 0) -- Reset flagi
                end
            end
            when config.ids.boss.kill begin -- Po zabiciu bossa
                pc.setqf("active", 0) -- Zakończenie dungeonu
                pc.give_item2(config.ids.reward, 1) -- Nagroda
                pc.warp(10000, 10000) -- Powrót do miasta
            end
        end
    endend

wygląda mega dobrze jak wojna w 25tym

Opublikowano

@Arta

@kris006

Jak możecie dajcie w spojler kod bo scrollowania od chu`ya xD

Opublikowano

Czemu się tak na gościa uwzięliście? Widziałem jakieś posty, ale w sumie żadnych konkretnych info

Opublikowano

quest mocarny czekam na wstawkę :D

Dołącz do dyskusji

Możesz dodać zawartość już teraz a zarejestrować się później. Jeśli posiadasz już konto, zaloguj się aby dodać zawartość za jego pomocą.

Gość
Dodaj odpowiedź do tematu...