Aşamalı dungeon quest

  • Konuyu açan Konuyu açan NuganoMT
  • Açılış Tarihi Açılış Tarihi
  • Yanıt Yanıt 12
  • Gösterim Gösterim 264
Eline sağlık link gelir mi :D

Canın sağolsun

Deviltower:
Genişlet Daralt Kopyala
quest kule_dungeon begin
    state start begin
        when 20348.chat."Kule" begin
            if pc.get_level() < 40 then
                say("Karanlık güçler zayıfları kabul etmez. 40. seviye olmadan bu kapılar sana açılmaz.")
                return
            end
            if party.is_party() then
                say("Şeytan Kulesi yalnız kurtları sever. Yoldaşlarınla birlikte adım atamazsın.")
                return
            end
            say_title("Şeytan Kulesi")
            say("")
            say("Burası lanetli bir yer... Karanlık, acı ve ölüm kokar.")
            say("Yine de içeri girmek, kaderini sınamak istiyor musun?")
            if select("Evet, kaderimi sınayacağım!", "Hayır, henüz hazır değilim") == 2 then
                say("Akıllıca... Bir gün cesaretin olursa geri dön.")
                return
            end
            d.new_jump(66, special.devil_tower[3][1]*100, special.devil_tower[3][2]*100)
            d.setf("stage", 1)
            d.setf("kill", 0)
            d.spawn_mob(8027, 390, 666)
            d.spawn_mob(8027, 405, 661)
            d.spawn_mob(8027, 400, 645)
            d.spawn_mob(8027, 385, 651)
        end
        when login begin
            if pc.get_map_index() >= 660000 and pc.get_map_index() < 669999 then
                if d.getf("stage") == 1 then
                    d.notice("Karanlık koridorlar seni bekliyor... 4 kadim metin taşını yok et, yoksa buraya sonsuza dek hapsolursun.")
                end
            end
        end
        when kill with npc.get_race() == 8027 begin
            local stage = d.getf("stage")
            if stage == 1 then
                local c = d.getf("kill") + 1
                d.setf("kill", c)
                if c < 4 then
                    d.notice("Kalan kadim metin: "..(4-c)..". Gölgeler yaklaşıyor...")
                    return
                end
                d.setf("stage", 2)
                d.setf("kill", 0)
                d.notice("Metinler parçalandı... Zemin çatırdıyor. Daha büyük bir karanlık uyanmak üzere.")
                server_timer("kule_stage2", 7, d.get_map_index())
            end
            if stage == 4 then
                local c = d.getf("kill") + 1
                d.setf("kill", c)
                if c < 4 then
                    d.notice("Kalan son metin: "..(4-c)..". Karanlık seni yutmak üzere...")
                    return
                end
                d.setf("stage", 5)
                d.setf("kill", 0)
                d.notice("Son metinler yok oldu... Kapılar ardına kadar açılıyor. Şeytan Lordu'nun nefesini hissediyor musun?")
                server_timer("kule_stage5", 7, d.get_map_index())
            end
        end
        when kule_stage2.server_timer begin
            if d.select(get_server_timer_arg()) then
                d.jump_all(special.devil_tower[3][1], special.devil_tower[3][2])
                d.spawn_mob_dir(113, 399, 647, 1)
                d.notice("Şeytan Komutanı karanlığın içinden doğdu. Lanetli kılıcı ölüm vaat ediyor...")
            end
        end
        
        when kill with npc.get_race() == 113 begin
            if d.getf("stage") ~= 2 then return end
            d.setf("stage", 3)
            d.setf("kill", 0)
            d.notice("Komutan devrildi... Ama bu sadece bir nefeslik rahatlama. Kule daha fazlasını salacak.")
            server_timer("kule_stage3", 7, d.get_map_index())
        end
        when kule_stage3.server_timer begin
            if d.select(get_server_timer_arg()) then
                d.jump_all(special.devil_tower[3][1], special.devil_tower[3][2])
                d.notice("Duvarlar çatladı... 10 lanetli slot karanlığa karışmış halde üzerine geliyor. Kaçış yok.")
                for i=1,10 do
                    local rx = 370 + number(0,50)
                    local ry = 630 + number(0,50)
                    d.spawn_mob(114, rx, ry)
                end
            end
        end
        
        when kill with npc.get_race() == 114 begin
            if d.getf("stage") ~= 3 then return end
            local c = d.getf("kill") + 1
            d.setf("kill", c)
            if c < 10 then
                d.notice("Yok edilen lanetli slot: "..c.."/10. Çığlıkları duyuyor musun?")
            else
                d.setf("stage", 4)
                d.setf("kill", 0)
                d.notice("Slotlar dağıldı... Ölüm sessizliği çöktü. Ama bu, en kötüsünün habercisi.")
                server_timer("kule_stage4", 7, d.get_map_index())
            end
        end
        when kule_stage4.server_timer begin
            if d.select(get_server_timer_arg()) then
                d.jump_all(special.devil_tower[3][1], special.devil_tower[3][2])
                d.notice("Son kadim metinler yükseldi. Hepsini yok et... Çünkü ardından gelen şey ruhunu parçalayacak.")
                d.spawn_mob(8027, 390, 666)
                d.spawn_mob(8027, 405, 661)
                d.spawn_mob(8027, 400, 645)
                d.spawn_mob(8027, 385, 651)
            end
        end
        when kule_stage5.server_timer begin
            if d.select(get_server_timer_arg()) then
                d.jump_all(special.devil_tower[3][1], special.devil_tower[3][2])
                d.spawn_mob_dir(1092, 389, 669, 1)
                d.notice("Şeytan Lordu karanlığın ta kendisi olarak karşında. Bu son savaşın... Ya zafer, ya sonsuz lanet.")
            end
        end
        
        when kill with npc.get_race() == 1092 begin
            if d.getf("stage") ~= 5 then return end
            d.notice("İmkânsız gerçekleşti... Şeytan Lordu yenildi.")
            d.notice("Kule sustu. Sen kazandın, cesur savaşçı. Adın karanlıkta bile korkuyla anılacak.")
        end
    end
end
 
Canın sağolsun

Deviltower:
Genişlet Daralt Kopyala
quest kule_dungeon begin
    state start begin
        when 20348.chat."Kule" begin
            if pc.get_level() < 40 then
                say("Karanlık güçler zayıfları kabul etmez. 40. seviye olmadan bu kapılar sana açılmaz.")
                return
            end
            if party.is_party() then
                say("Şeytan Kulesi yalnız kurtları sever. Yoldaşlarınla birlikte adım atamazsın.")
                return
            end
            say_title("Şeytan Kulesi")
            say("")
            say("Burası lanetli bir yer... Karanlık, acı ve ölüm kokar.")
            say("Yine de içeri girmek, kaderini sınamak istiyor musun?")
            if select("Evet, kaderimi sınayacağım!", "Hayır, henüz hazır değilim") == 2 then
                say("Akıllıca... Bir gün cesaretin olursa geri dön.")
                return
            end
            d.new_jump(66, special.devil_tower[3][1]*100, special.devil_tower[3][2]*100)
            d.setf("stage", 1)
            d.setf("kill", 0)
            d.spawn_mob(8027, 390, 666)
            d.spawn_mob(8027, 405, 661)
            d.spawn_mob(8027, 400, 645)
            d.spawn_mob(8027, 385, 651)
        end
        when login begin
            if pc.get_map_index() >= 660000 and pc.get_map_index() < 669999 then
                if d.getf("stage") == 1 then
                    d.notice("Karanlık koridorlar seni bekliyor... 4 kadim metin taşını yok et, yoksa buraya sonsuza dek hapsolursun.")
                end
            end
        end
        when kill with npc.get_race() == 8027 begin
            local stage = d.getf("stage")
            if stage == 1 then
                local c = d.getf("kill") + 1
                d.setf("kill", c)
                if c < 4 then
                    d.notice("Kalan kadim metin: "..(4-c)..". Gölgeler yaklaşıyor...")
                    return
                end
                d.setf("stage", 2)
                d.setf("kill", 0)
                d.notice("Metinler parçalandı... Zemin çatırdıyor. Daha büyük bir karanlık uyanmak üzere.")
                server_timer("kule_stage2", 7, d.get_map_index())
            end
            if stage == 4 then
                local c = d.getf("kill") + 1
                d.setf("kill", c)
                if c < 4 then
                    d.notice("Kalan son metin: "..(4-c)..". Karanlık seni yutmak üzere...")
                    return
                end
                d.setf("stage", 5)
                d.setf("kill", 0)
                d.notice("Son metinler yok oldu... Kapılar ardına kadar açılıyor. Şeytan Lordu'nun nefesini hissediyor musun?")
                server_timer("kule_stage5", 7, d.get_map_index())
            end
        end
        when kule_stage2.server_timer begin
            if d.select(get_server_timer_arg()) then
                d.jump_all(special.devil_tower[3][1], special.devil_tower[3][2])
                d.spawn_mob_dir(113, 399, 647, 1)
                d.notice("Şeytan Komutanı karanlığın içinden doğdu. Lanetli kılıcı ölüm vaat ediyor...")
            end
        end
       
        when kill with npc.get_race() == 113 begin
            if d.getf("stage") ~= 2 then return end
            d.setf("stage", 3)
            d.setf("kill", 0)
            d.notice("Komutan devrildi... Ama bu sadece bir nefeslik rahatlama. Kule daha fazlasını salacak.")
            server_timer("kule_stage3", 7, d.get_map_index())
        end
        when kule_stage3.server_timer begin
            if d.select(get_server_timer_arg()) then
                d.jump_all(special.devil_tower[3][1], special.devil_tower[3][2])
                d.notice("Duvarlar çatladı... 10 lanetli slot karanlığa karışmış halde üzerine geliyor. Kaçış yok.")
                for i=1,10 do
                    local rx = 370 + number(0,50)
                    local ry = 630 + number(0,50)
                    d.spawn_mob(114, rx, ry)
                end
            end
        end
       
        when kill with npc.get_race() == 114 begin
            if d.getf("stage") ~= 3 then return end
            local c = d.getf("kill") + 1
            d.setf("kill", c)
            if c < 10 then
                d.notice("Yok edilen lanetli slot: "..c.."/10. Çığlıkları duyuyor musun?")
            else
                d.setf("stage", 4)
                d.setf("kill", 0)
                d.notice("Slotlar dağıldı... Ölüm sessizliği çöktü. Ama bu, en kötüsünün habercisi.")
                server_timer("kule_stage4", 7, d.get_map_index())
            end
        end
        when kule_stage4.server_timer begin
            if d.select(get_server_timer_arg()) then
                d.jump_all(special.devil_tower[3][1], special.devil_tower[3][2])
                d.notice("Son kadim metinler yükseldi. Hepsini yok et... Çünkü ardından gelen şey ruhunu parçalayacak.")
                d.spawn_mob(8027, 390, 666)
                d.spawn_mob(8027, 405, 661)
                d.spawn_mob(8027, 400, 645)
                d.spawn_mob(8027, 385, 651)
            end
        end
        when kule_stage5.server_timer begin
            if d.select(get_server_timer_arg()) then
                d.jump_all(special.devil_tower[3][1], special.devil_tower[3][2])
                d.spawn_mob_dir(1092, 389, 669, 1)
                d.notice("Şeytan Lordu karanlığın ta kendisi olarak karşında. Bu son savaşın... Ya zafer, ya sonsuz lanet.")
            end
        end
       
        when kill with npc.get_race() == 1092 begin
            if d.getf("stage") ~= 5 then return end
            d.notice("İmkânsız gerçekleşti... Şeytan Lordu yenildi.")
            d.notice("Kule sustu. Sen kazandın, cesur savaşçı. Adın karanlıkta bile korkuyla anılacak.")
        end
    end
end
adam ya geldi adam
 
Eline sağlık kankam, konuyu görünce dungeon ları elden geçirmem gerektiğini hatırladım 😂
 
Lua (Quest):
Genişlet Daralt Kopyala
when kill with npc.get_race() == x
Trigger'larınızda, questiniz start state'inde olduğu için eğer aynı mobdan dungeon dışında herhangi bir mapte varsa bu trigger çalışacaktır. Nacizane tavsiyem trigger'ınızın devamına pc.is_in_dungeon veya quest içine local function ile mapidx * 10000 >= (mapIdx+1)*10000 < sorgularını eklerseniz + olarak en sona da stage kontrolü eklerseniz; Lua gibi script dillerinde boş call'ları engellemiş olursunuz.

+ Olarak dungeonlarda kullandığınız mobların aynısı haritalarda varsa bu mobları çoğaltıp sadece dungeon'da kullanılacak şekilde düzenlerseniz bu dediklerimi yapmaya hiç gerek yok
 
Lua (Quest):
Genişlet Daralt Kopyala
when kill with npc.get_race() == x
Trigger'larınızda, questiniz start state'inde olduğu için eğer aynı mobdan dungeon dışında herhangi bir mapte varsa bu trigger çalışacaktır. Nacizane tavsiyem trigger'ınızın devamına pc.is_in_dungeon veya quest içine local function ile mapidx * 10000 >= (mapIdx+1)*10000 < sorgularını eklerseniz + olarak en sona da stage kontrolü eklerseniz; Lua gibi script dillerinde boş call'ları engellemiş olursunuz.

+ Olarak dungeonlarda kullandığınız mobların aynısı haritalarda varsa bu mobları çoğaltıp sadece dungeon'da kullanılacak şekilde düzenlerseniz bu dediklerimi yapmaya hiç gerek yok
Teşekkür ederim değerli yorumun için öylesine questi düzenlemiştim sadece . düşüncem alan bossu vs gibi bossların dungeonda olması yani tamam iyi hoş otoboss yanına çağırma vs güzel ama gözümde bossların değeri kalmıyo. Bunu için otobos + bazı ek dungeonlar ekleyerek katlı el ile dönme tarzında bi düşüncem var.
 
Geri
Üst