Çözüldü MT2GE 4.ÜNİTE BÖLÜM 56 QUEST YAZDIRMA

Bu konu çözüme ulaştırılmıştır. Çözüm için konuya yazılan tüm yorumları okumayı unutmayın. Eğer konudaki yorumlar sorununuzu çözmediyse yeni bir konu açabilirsiniz.

snrby57

Üye
Üye
Merhaba

Arkadaşlar ben bir quest yazdım ve fazlasınıda yapmak istiyorum
Lua (Quest):
quest yaratik_kesme_gorevi begin
    state start begin
        when login or enter or levelup with pc.get_level()  >= 15 begin
            set_state(gorevi_baslat)
        end
    end

    state gorevi_baslat begin
        when letter begin
            send_letter("Demircinin Ricası")
         
            local find_npc_vnum = 0
            if pc.get_empire() == 1 then
                find_npc_vnum = 11000
            elseif pc.get_empire() == 2 then
                find_npc_vnum = 11002
            elseif pc.get_empire == 3 then
                find_npc_vnum = 11004
            end
         
            local v = find_npc_by_vnum(find_npc_vnum)
         
            if v != 0 then
                target.vid("__TARGET__", v, "Köy Gardiyanına Git.")
            end
        end

        when button or info begin
            say_title("Demircinin Ricasi: ")
            say("Kadim dostum demircinin senden bir isteği var.")
            say("Bir görev için seni vazifelendirdi")
            say("Hemen gidip Köy Gardiyanını gör.")
        end
     
        when __TARGET__.target.click or 11000.chat."Orklar Sorun Çıkarıyor"
            or 11102.chat."Orklar Sorun Çıkarıyor"
            or 11004.chat."Orklar Sorun Çıkarıyor" begin
     
            target.delete("__TARGET__")
            say_title("Köy Gardiyanı: ")
            say("Arkadaşım Demircinin sana mesajı var")
            say("Biliyorum bana kızgınsınız")
            say("Sizlerden çok özür dilerim")
            say("Ancak kendimi affetirmek için senden son bir şey istiyorum")
            say("Eğer benim için 30 tane Ork Öldürürsen seni şereflendireceğim.")
            set_state(orkları_oldur)
    end
end

    state orkları_oldur begin
        when letter begin
            send_letter("Orkları Öldür")
        end
     
        when button or info begin
            say_title("Orkları Öldür: ")
            say("Demircinin son isteğini yerine getir.")
            say("Seni şereflendirmesi için orklardan bir kaç tanesini öldür.")
            say("")
            say_reward("string.format("Şuana kadar %s ork öldürdün.", 30, 30-pc.getqf("oldurulen_ork")))
            q.set_counter ("Ork: ", 30-pc.getqf("oldurulen_ork"))
        end
     
        when 601.kill begin
            if pc.getqf("oldurulen_ork") == 29 then
                set_state(demirciye_don)
            else
                pc.setqf("oldurulen_ork", pc.getqf("oldurulen_ork")+1)
                q.set_counter("Ork: ", 20-pc.getqf("oldurulen_ork"))
        end
    end
end

    state gardiyana_don begin
        when letter begin
            send_letter("Köy Gardiyanına dön")
         
            local find_npc_vnum = 0
            if pc.get_empire () == 1 then
                find_npc_vnum = 11000
            elseif pc.get_empire() == 2 then
                find_npc_vnum = 11102
            elseif pc.get_empire() == 3 then
                find_npc_vnum = 11104
            end
         
            local v = find_npc_by_vnum(find_npc_vnum)
         
            if v != 0 then
                target.vid("__TARGET__", v, "Köy Gardiyanına Git.")
            end
        end
     
        when button or info begin
            say_title("Köy Gardiyanına dön: ")
            say("Yeteri kadar ork öldürdün geri dön.")
        end
     
     
        when  __TARGET__.target.click begin
            say_title("Köy Gardiyanı: ")
            say("Güzel! Artık Ork tehlikesi geçti.")
            say("Seni şereflendiriyorum lütfen bunları kabul et.")
            pc.change_gold(1000000)
            pc.give_item2(25041)
            set_state(__COMPLATE__)
            clear_letter()
        end
    end
 
    state __COMPLATE__ begin
    end
lakin bir konuda sorunum var kodu atıyorum. Oyunda aktif ettim ancak görevin başlangıcını 10 levelda yaptım 15 levelda yaptım solda çıkmadı gardiyana gidiyorum oradada sadece lonca kur butonu var. Bunu nasıl çözebilirim?


Saygılar.
 
Çözüm
Sizin kodlarınızı inceledim. Şu satır hatalı olmuş;
Lua (Quest):
say_reward("string.format("Şuana kadar %s ork öldürdün.", 30, 30-pc.getqf("oldurulen_ork")))

Şöyle değiştirin;
Lua (Quest):
say_reward(string.format("Şuana kadar %s ork öldürdün.", 30, 30-pc.getqf("oldurulen_ork")))
Sizin kodlarınızı inceledim. Şu satır hatalı olmuş;
Lua (Quest):
say_reward("string.format("Şuana kadar %s ork öldürdün.", 30, 30-pc.getqf("oldurulen_ork")))

Şöyle değiştirin;
Lua (Quest):
say_reward(string.format("Şuana kadar %s ork öldürdün.", 30, 30-pc.getqf("oldurulen_ork")))
 
Çözüm
Evet gerçekten işe yarıyor hocama çok teşekkür ediyorum bu dersinde üzerinden geçmiş oldum :):):)
yaratık quest.jpg
 
En son bir moderatör tarafından düzenlenmiş:
Derlerken hata gözükmesi gerekiyordu ama kodlama ANSI olarak yaptınız sanırsam. :) UTF-8 olursa questi ./qc'den geçirirken hangi satırda hata olduğu normalde yazıyor. Tek sıkıntısı quest içinde ki türkçe karakterlerin oyunda bozuk gözükmesi :(
Yazdığınız questler doğru çalışmıyorsa bu dediğim yöntemi uygulayabilirsiniz. Lua dilinden midir nedir bende kod yazarken çok yazım hatası yapıyorum. Zaten videolarımı izlediğinizde de bol bol yazım hatası yaptığımı görmüşsünüzdür. :D

En son nesne market itemi için quest yazmıştım. Kodların bi kısmı;
Yazdigim lua kodlari.jpg


Göze karışık gelebilir ama zor değil. Zamanla kod yazmaya alıştığınızı fark edeceksiniz. 4. ünitenin sonlarına doğru dinamik quest yazmayı da anlattım..
 
Geri