Çözüldü State??? ( Quest )

  • Konuyu açan Konuyu açan SinopLu57
  • Açılış Tarihi Açılış Tarihi
  • Yanıt Yanıt 8
  • Gösterim Gösterim 154
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.
Durum
İçerik kilitlendiği için mesaj gönderimine kapatıldı.

SinopLu57

Üye
Üye
Mesaj
76
Çözümler
2
Beğeni
64
Puan
699
Ticaret Puanı
0
Arkadaşlar birisi bana state nin kullanımı hakkında detaylı açıklama yapabilirmi, az kaldı kafayı sıyırdım sıyırıcam :D

Yazdığım questin bir parçasını koparıp buraya bırakıyorum.


Lua (Quest):
Genişlet Daralt Kopyala
quest at_gorevi_2 begin
    state start begin
        when letter begin
            local v = find_npc_by_vnum(20349)
            local currentLevel = horse.get_level()
            if v != 0 then
                if currentLevel == 10 then
                    target.vid("seyis1", v, "Seyis")
                end
            send_letter("At Zırhlama")
            end
        end --when end
        when button or info begin
            local isim = pc.get_name()
            say_title("                                                Köyden Mektup")
            say("")
            say_title("Seyis:")
            say_reward("Atına zırh takıp savaşlara katılmak istediğini duydum.")
            say_reward("Senin için bir görevim var yanıma uğra.")
            say("")
        end --when end
        when seyis1.target.click or 20349.chat."Zırhlı At ( Görev )" begin
            target.delete("seyis1")
            local currentLevel = horse.get_level()
            if currentLevel == 10 then
            say_title("Seyis:")
            say_reward("Hoşgeldin Genç Kahraman")
            say("Atını güzel eğitmişsin fakat bir at ile")
            say("muharebenin içine girmek kolay değildir.")
            say("Bunun için atını zırhlaman gerekir.")
            say("")
            say("At zırhlamak için, parçalarını elde etmen gerekiyor.")
            say("Bu parçaları nereden bulabileceğini Demirci söyleyebilir.")
            say("")
            say_reward("At Zırhını demirciye yaptırdıktan sonra bana geri gel.")
            say("")
            local atistiyorum = select("Kabul Ediyorum", "Vazgeçtim")
                if atistiyorum == 1 then
                say_title("Seyis:")
                say_reward("Görev listen güncellendi!")
                say("")
                say("Demirciye git ve parçaları nereden bulabileceğini sor.")
                say("")
                local atistiyorum2 = select("Tamam")
                set_state("collect")
                end
            end
        end --when end
    end --state end
  
    state collect begin
        when letter begin
            local v = find_npc_by_vnum(20016)
            if v != 0 then
                target.vid("demirci", v, "Demirci")
            end
            send_letter("Demirciye Git!")
        end --when end
        when button or info begin
            say_title("                                        At Zırhlama Görevi")
            say("")
            say_reward("Demirciye git ve at zırhı için malzemeleri nereden")
            say_reward("bulabileceğini sor.")
            say("")
        end --when end
        when demirci.target.click or 20016.chat."At Zırhı ( Görev )" begin
            target.delete("demirci")
            say_title("Demirci:")
            say("Demek at zırhı üretmemi istiyorsun.")
            say("Bunun için bana bir kaç malzeme getirmen gerekiyor.")
            say("Malzemeleri Satıcıdan bulabilirsin. Biraz tuzludur bilesin.")
            say("")
        end --when end
    end --state end

Bu attığım kod parçasında 45. ve 51. satırlarda state geçişini görüyorsunuz.
Ben 51. satırdaki stateye farklı takma bir isim vermek istiyorum mesela diyorumki state ismi demirci olsun, aynı zamanda 45. satırdaki state geçişinede demirci yazdırıyorum ve sonra oyundaki aktif questi kaldırıyorum ftp alanındaki quest yerini tamamen temizliyorum ve reboot atıyorum sonra questimi okutuyorum ve tekrar reboot atıyorum bir bakıyorum a ah okumuş ama görev aktif değil.

Sonra ilginç bir şekilde 45. ve 51. satırdaki state olaylarını collect yapıyorum ve aynı işlemleri tekrar ediyorum ve a ah inanılmaz derecede görev aktif oluyor.

Sonra 1 2 gün boyunca araştırma yapıyorum questleri inceliyorum bir bakıyorum a ah stateye adamlar farklı isimler tanımlamış hani bi düşünüyorum diyorumki acaba collect falan bunların bir mantığımı var biryerdenmi çekiyor falan diyorum ama yok en son yine yolumuz düştü buralara :D

Varsa bilgisi olan paylaşırsa sevinirim <3

EK Soru: MartySama altyapısı kullanıyorum questlerde aldığım hataların loglarını nereden bulabilirim?
 
Çözüm
Arkadaşlar sorunu çözdüm.

Questte ilk başta state geçişini collect olarak tanımlamıştım bildiğiniz üzere, sonrasında state geçişini demirci olarak değiştirdiğimde hata alıyordum.
İşin özü şu ki state geçişleri bir karaktere tanımlandığı zaman questte state geçişlerini değiştirdikten sonra o tanımlı karakterde quest çalışmıyor.
Kısacası state geçişlerini değiştirdikten sonra yeni bir karakter üzerinde deneme yapmak lazımmış, yeni karakter oluşturup denediğimde sorun çözüldü.

Şimdiden yardımcı olan herkese teşekkürler <3
Arkadaşlar birisi bana state nin kullanımı hakkında detaylı açıklama yapabilirmi, az kaldı kafayı sıyırdım sıyırıcam :D

Yazdığım questin bir parçasını koparıp buraya bırakıyorum.


Lua (Quest):
Genişlet Daralt Kopyala
quest at_gorevi_2 begin
    state start begin
        when letter begin
            local v = find_npc_by_vnum(20349)
            local currentLevel = horse.get_level()
            if v != 0 then
                if currentLevel == 10 then
                    target.vid("seyis1", v, "Seyis")
                end
            send_letter("At Zırhlama")
            end
        end --when end
        when button or info begin
            local isim = pc.get_name()
            say_title("                                                Köyden Mektup")
            say("")
            say_title("Seyis:")
            say_reward("Atına zırh takıp savaşlara katılmak istediğini duydum.")
            say_reward("Senin için bir görevim var yanıma uğra.")
            say("")
        end --when end
        when seyis1.target.click or 20349.chat."Zırhlı At ( Görev )" begin
            target.delete("seyis1")
            local currentLevel = horse.get_level()
            if currentLevel == 10 then
            say_title("Seyis:")
            say_reward("Hoşgeldin Genç Kahraman")
            say("Atını güzel eğitmişsin fakat bir at ile")
            say("muharebenin içine girmek kolay değildir.")
            say("Bunun için atını zırhlaman gerekir.")
            say("")
            say("At zırhlamak için, parçalarını elde etmen gerekiyor.")
            say("Bu parçaları nereden bulabileceğini Demirci söyleyebilir.")
            say("")
            say_reward("At Zırhını demirciye yaptırdıktan sonra bana geri gel.")
            say("")
            local atistiyorum = select("Kabul Ediyorum", "Vazgeçtim")
                if atistiyorum == 1 then
                say_title("Seyis:")
                say_reward("Görev listen güncellendi!")
                say("")
                say("Demirciye git ve parçaları nereden bulabileceğini sor.")
                say("")
                local atistiyorum2 = select("Tamam")
                set_state("collect")
                end
            end
        end --when end
    end --state end
 
    state collect begin
        when letter begin
            local v = find_npc_by_vnum(20016)
            if v != 0 then
                target.vid("demirci", v, "Demirci")
            end
            send_letter("Demirciye Git!")
        end --when end
        when button or info begin
            say_title("                                        At Zırhlama Görevi")
            say("")
            say_reward("Demirciye git ve at zırhı için malzemeleri nereden")
            say_reward("bulabileceğini sor.")
            say("")
        end --when end
        when demirci.target.click or 20016.chat."At Zırhı ( Görev )" begin
            target.delete("demirci")
            say_title("Demirci:")
            say("Demek at zırhı üretmemi istiyorsun.")
            say("Bunun için bana bir kaç malzeme getirmen gerekiyor.")
            say("Malzemeleri Satıcıdan bulabilirsin. Biraz tuzludur bilesin.")
            say("")
        end --when end
    end --state end

Bu attığım kod parçasında 45. ve 51. satırlarda state geçişini görüyorsunuz.
Ben 51. satırdaki stateye farklı takma bir isim vermek istiyorum mesela diyorumki state ismi demirci olsun, aynı zamanda 45. satırdaki state geçişinede demirci yazdırıyorum ve sonra oyundaki aktif questi kaldırıyorum ftp alanındaki quest yerini tamamen temizliyorum ve reboot atıyorum sonra questimi okutuyorum ve tekrar reboot atıyorum bir bakıyorum a ah okumuş ama görev aktif değil.

Sonra ilginç bir şekilde 45. ve 51. satırdaki state olaylarını collect yapıyorum ve aynı işlemleri tekrar ediyorum ve a ah inanılmaz derecede görev aktif oluyor.

Sonra 1 2 gün boyunca araştırma yapıyorum questleri inceliyorum bir bakıyorum a ah stateye adamlar farklı isimler tanımlamış hani bi düşünüyorum diyorumki acaba collect falan bunların bir mantığımı var biryerdenmi çekiyor falan diyorum ama yok en son yine yolumuz düştü buralara :D

Varsa bilgisi olan paylaşırsa sevinirim <3

EK Soru: MartySama altyapısı kullanıyorum questlerde aldığım hataların loglarını nereden bulabilirim?

Yaptığın işlemlerde bir yanlışlık yok questinin sonunda 1 tane end eksik.
 
Kod:
Genişlet Daralt Kopyala
quest at_gorevi_2 begin
    state start begin
        when letter begin
            local v = find_npc_by_vnum(20349)
            local currentLevel = horse.get_level()
            if v != 0 and currentLevel == 10 then
                target.vid("seyis1", v, "Seyis")
                send_letter("At Zırhlama")
            end
        end
        
        when button or info begin
            local isim = pc.get_name()
            say_title("                                                Köyden Mektup")
            say("")
            say_title("Seyis:")
            say_reward("Atına zırh takıp savaşlara katılmak istediğini duydum.")
            say_reward("Senin için bir görevim var yanıma uğra.")
            say("")
        end
        
        when seyis1.target.click or 20349.chat."Zırhlı At ( Görev )" begin
            target.delete("seyis1")
            if horse.get_level() == 10 then
                say_title("Seyis:")
                say_reward("Hoşgeldin Genç Kahraman")
                say("Atını güzel eğitmişsin fakat bir at ile")
                say("muharebenin içine girmek kolay değildir.")
                say("Bunun için atını zırhlaman gerekir.")
                say("")
                say("At zırhlamak için, parçalarını elde etmen gerekiyor.")
                say("Bu parçaları nereden bulabileceğini Demirci söyleyebilir.")
                say("")
                say_reward("At Zırhını demirciye yaptırdıktan sonra bana geri gel.")
                say("")
                local atistiyorum = select("Kabul Ediyorum", "Vazgeçtim")
                if atistiyorum == 1 then
                    say_title("Seyis:")
                    say_reward("Görev listen güncellendi!")
                    say("")
                    say("Demirciye git ve parçaları nereden bulabileceğini sor.")
                    say("")
                    set_state("collect")
                end
            end
        end
    end
 
    state collect begin
        when letter begin
            local v = find_npc_by_vnum(20016)
            if v != 0 then
                target.vid("demirci", v, "Demirci")
            end
            send_letter("Demirciye Git!")
        end
        
        when button or info begin
            say_title("                                        At Zırhlama Görevi")
            say("")
            say_reward("Demirciye git ve at zırhı için malzemeleri nereden")
            say_reward("bulabileceğini sor.")
            say("")
        end
        
        when demirci.target.click or 20016.chat."At Zırhı ( Görev )" begin
            target.delete("demirci")
            say_title("Demirci:")
            say("Demek at zırhı üretmemi istiyorsun.")
            say("Bunun için bana bir kaç malzeme getirmen gerekiyor.")
            say("Malzemeleri Satıcıdan bulabilirsin. Biraz tuzludur bilesin.")
            say("")
        end
    end
end






hocam bunu dener misiniz.
 
Kod:
Genişlet Daralt Kopyala
quest at_gorevi_2 begin
    state start begin
        when letter begin
            local v = find_npc_by_vnum(20349)
            local currentLevel = horse.get_level()
            if v != 0 and currentLevel == 10 then
                target.vid("seyis1", v, "Seyis")
                send_letter("At Zırhlama")
            end
        end
       
        when button or info begin
            local isim = pc.get_name()
            say_title("                                                Köyden Mektup")
            say("")
            say_title("Seyis:")
            say_reward("Atına zırh takıp savaşlara katılmak istediğini duydum.")
            say_reward("Senin için bir görevim var yanıma uğra.")
            say("")
        end
       
        when seyis1.target.click or 20349.chat."Zırhlı At ( Görev )" begin
            target.delete("seyis1")
            if horse.get_level() == 10 then
                say_title("Seyis:")
                say_reward("Hoşgeldin Genç Kahraman")
                say("Atını güzel eğitmişsin fakat bir at ile")
                say("muharebenin içine girmek kolay değildir.")
                say("Bunun için atını zırhlaman gerekir.")
                say("")
                say("At zırhlamak için, parçalarını elde etmen gerekiyor.")
                say("Bu parçaları nereden bulabileceğini Demirci söyleyebilir.")
                say("")
                say_reward("At Zırhını demirciye yaptırdıktan sonra bana geri gel.")
                say("")
                local atistiyorum = select("Kabul Ediyorum", "Vazgeçtim")
                if atistiyorum == 1 then
                    say_title("Seyis:")
                    say_reward("Görev listen güncellendi!")
                    say("")
                    say("Demirciye git ve parçaları nereden bulabileceğini sor.")
                    say("")
                    set_state("collect")
                end
            end
        end
    end
 
    state collect begin
        when letter begin
            local v = find_npc_by_vnum(20016)
            if v != 0 then
                target.vid("demirci", v, "Demirci")
            end
            send_letter("Demirciye Git!")
        end
       
        when button or info begin
            say_title("                                        At Zırhlama Görevi")
            say("")
            say_reward("Demirciye git ve at zırhı için malzemeleri nereden")
            say_reward("bulabileceğini sor.")
            say("")
        end
       
        when demirci.target.click or 20016.chat."At Zırhı ( Görev )" begin
            target.delete("demirci")
            say_title("Demirci:")
            say("Demek at zırhı üretmemi istiyorsun.")
            say("Bunun için bana bir kaç malzeme getirmen gerekiyor.")
            say("Malzemeleri Satıcıdan bulabilirsin. Biraz tuzludur bilesin.")
            say("")
        end
    end
end






hocam bunu dener misiniz.
Teşekkür ederim ama bu kodlamada istediğim bir değişiklik göremedim başındada bahsettiğim gibi 45. ve 51. satırlardaki state collect yerine demirci veya başka bir takma isim kullanılarak questi çalıştırmayı deniyorum.

Sondaki endi koymanıza gerek yok tekrar dediğim gibi questin parçasını verdim buraya devamında zaten end leri düzgün şekilde yerleştirdim.

Tekrar belirteyim bu questte state collect olduğunda sorunsuz çalışırken farklı bir state ismi kullandığımda çalışmıyor.
 
state aşama demek. Eğer oyunun görev questlerini incelerseniz görevlerin aşama aşama statelere ayrıldığını görürsünüz.
 
state çağrısını set_state("state_ismi") şeklinde değil,
set_state(state_ismi) şeklinde yapman gerekiyor.
Denendi ve sonuç yine aynı, set_state(demirci) olarak değiştirdim ve 51. satırdaki state isminide ona göre düzenledim deneme yaptım yine görev göstermedi.

Sonra set_state(collect) yazarak denedim görev göstermeye başladı ben hala bu gizemi çözemedim :D
 
Arkadaşlar sorunu çözdüm.

Questte ilk başta state geçişini collect olarak tanımlamıştım bildiğiniz üzere, sonrasında state geçişini demirci olarak değiştirdiğimde hata alıyordum.
İşin özü şu ki state geçişleri bir karaktere tanımlandığı zaman questte state geçişlerini değiştirdikten sonra o tanımlı karakterde quest çalışmıyor.
Kısacası state geçişlerini değiştirdikten sonra yeni bir karakter üzerinde deneme yapmak lazımmış, yeni karakter oluşturup denediğimde sorun çözüldü.

Şimdiden yardımcı olan herkese teşekkürler <3
 
Çözüm
Durum
İçerik kilitlendiği için mesaj gönderimine kapatıldı.
Üst