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 270
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
 
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