Çözüldü Bot kontrol questine ekleme yapmak

  • Konuyu açan Konuyu açan Whiterose
  • Açılış Tarihi Açılış Tarihi
  • Yanıt Yanıt 9
  • Gösterim Gösterim 446
  • Etiketler Etiketler
    quest
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.

Whiterose

Sanane be kardeş...
Grafiker
MT Üye
Editör
Mesaj
384
Çözümler
7
Beğeni
1.707
Puan
1.049
Ticaret Puanı
0
Merhabalar, benim için büyük sizin içinse ufak bir konuyla karşınızdayım. :loveya:

Lua (Quest):
Genişlet Daralt Kopyala
quest lykeen_sifrelipelerin begin
    state start begin
        when 70038.use begin -- 70038 yazan yeri serverinizdeki cesaret pelerini kodu ile değiştirin.
            local sifreolustur = number( 10000 , 99999 ) --DOKUNMAYIN..
            local serverismi = ("Test2") --SERVERADI YAZAN KISIMI SERVERINIZIN ADI ILE DEĞIŞTIRIN.
            if pc.getqf("lykeen_pelerin") < 3 then
                pc.setqf("lykeen_pelerin", pc.getqf("lykeen_pelerin") + 1)
                pc.aggregate_monster()
            elseif pc.getqf("lykeen_pelerin") == 3 then
                pc.setqf("lykeen_pelerin",4)
            elseif pc.getqf("lykeen_pelerin") > 4 then
                pc.setqf("lykeen_pelerin",4)
                setstate(start)
            elseif pc.getqf("lykeen_pelerin") == 4 then
                say_title(""..serverismi)
                say_reward("Pelerin Kontrol Sistemi")
                say("")
                say("Merhaba "..pc.get_name().." !")
                say("Sunucumuzdaki botları engelleme amaçlı,")
                say("Bu sistemi kullanıyoruz.")
                say("Lütfen devam etmek için şifreyi gir.")
                say("Bir kere hakkın olduğunu unutma !")
                say_reward("Yazman gereken şifre; "..sifreolustur )
                local sifrekutusu = tonumber(input())
                    if sifrekutusu == nil then
                        say_title(""..serverismi)
                        say_reward("Pelerin Kontrol Sistemi")
                        say("")
                        say("Şifreyi yanlış girdin !")
                        pc.setqf("lykeen_pelerin",0)
                        pc . warp ( 969600 , 278400 )
                    end    --Şifre yazılmadı
                    if sifrekutusu < 10000 or sifrekutusu > 99999 or sifrekutusu == nil then
                        say_title(""..serverismi)
                        say_reward("Pelerin Kontrol Sistemi")
                        say("")
                        say("Şifreyi yanlış girdin !")
                        pc.setqf("lykeen_pelerin",0)
                        pc . warp ( 969600 , 278400 )
                    end --Şifre hatalı yazıldı.
                    if sifrekutusu == sifreolustur then
                        say_title(""..serverismi)
                        say_reward("Pelerin Kontrol Sistemi")
                        say("")
                        say("Şifre doğru !")
                        say("İyi oyunlar "..pc.get_name().." !")
                        pc.setqf("lykeen_pelerin",0)
                        pc.aggregate_monster()
                    end --Şifre doğru.
            end   
        end --When sonu
    end --State sonu
end    --Quest bitti.

Sizden ricam, quest devreye girdiği zaman şifre girilmezse 60 saniye sonra şehre ışınlanmasını sağlayacak eklemeyi yapmanız.
Chatgpt üzerinden ve farklı bir kaç quest'den bakarak fonksiyonları denedim, ancak başarılı olamadım.
 
şuan attığınız çalışır halde mi? attığınız halini dediğiniz şekilde pc.warp ile ışınlanmasını sağlıyorum fakat ne attığınız ne de yaptığım ikiside çalışmıyor :D yine de atayım siz bir deneyin.


bot_kontrol.lua:
Genişlet Daralt Kopyala
quest lykeen_sifrelipelerin begin
    state start begin
        when 70038.use begin
            local sifreolustur = number(10000, 99999)
            local serverismi = ("Test2")
            if pc.getqf("lykeen_pelerin") < 3 then
                pc.setqf("lykeen_pelerin", pc.getqf("lykeen_pelerin") + 1)
                pc.aggregate_monster()
            elseif pc.getqf("lykeen_pelerin") == 3 then
                pc.setqf("lykeen_pelerin", 4)
            elseif pc.getqf("lykeen_pelerin") > 4 then
                pc.setqf("lykeen_pelerin", 4)
                setstate(start)
            elseif pc.getqf("lykeen_pelerin") == 4 then
                say_title(""..serverismi)
                say_reward("Pelerin Kontrol Sistemi")
                say("")
                say("Merhaba "..pc.get_name().." !")
                say("Sunucumuzdaki botları engelleme amaçlı,")
                say("Bu sistemi kullanıyoruz.")
                say("Lütfen devam etmek için şifreyi gir.")
                say("Bir kere hakkın olduğunu unutma !")
                say_reward("Yazman gereken şifre; "..sifreolustur)

                pc.setqf("sifre_zamani", get_time())

                local sifrekutusu = tonumber(input())
                
                if sifrekutusu == nil then
                    say_title(""..serverismi)
                    say_reward("Pelerin Kontrol Sistemi")
                    say("")
                    say("Şifreyi yanlış girdin !")
                    pc.setqf("lykeen_pelerin", 0)
                    pc.warp(969600, 278400)
                    return
                end

                if sifrekutusu < 10000 or sifrekutusu > 99999 or sifrekutusu == nil then
                    say_title(""..serverismi)
                    say_reward("Pelerin Kontrol Sistemi")
                    say("")
                    say("Şifreyi yanlış girdin !")
                    pc.setqf("lykeen_pelerin", 0)
                    pc.warp(969600, 278400)
                    return
                end

                if sifrekutusu == sifreolustur then
                    say_title(""..serverismi)
                    say_reward("Pelerin Kontrol Sistemi")
                    say("")
                    say("Şifre doğru !")
                    say("İyi oyunlar "..pc.get_name().." !")
                    pc.setqf("lykeen_pelerin", 0)
                    pc.delqf("sifre_zamani")
                    pc.aggregate_monster()
                end
            end
        end

        when login with pc.getqf("sifre_zamani") > 0 begin
            local sifre_zamani = pc.getqf("sifre_zamani")
            if get_time() - sifre_zamani > 30 then
                say_title(""..serverismi)
                say_reward("Pelerin Kontrol Sistemi")
                say("")
                say("30 saniye içinde şifre girilmedi!")
                pc.setqf("lykeen_pelerin", 0)
                pc.warp(969600, 278400)
            end
        end
    end
end
 
Son düzenleme:
Bot için sıfırdan quest yazmıştım gracia2 serveri için ancak bot yapımcıları tamamen ekarte etmişti questi bilginiz olsun yani bir işe yaramıyor yapacağınız işlemi c++ taraflı yapmanız daha mantıklı olur. Botun çözmesi zor olcak bir algoritma kullanmalısın
 
şuan attığınız çalışır halde mi? attığınız halini dediğiniz şekilde pc.warp ile ışınlanmasını sağlıyorum fakat ne attığınız ne de yaptığım ikiside çalışmıyor :D yine de atayım siz bir deneyin.


bot_kontrol.lua:
Genişlet Daralt Kopyala
quest lykeen_sifrelipelerin begin
    state start begin
        when 70038.use begin
            local sifreolustur = number(10000, 99999)
            local serverismi = ("Test2")
            if pc.getqf("lykeen_pelerin") < 3 then
                pc.setqf("lykeen_pelerin", pc.getqf("lykeen_pelerin") + 1)
                pc.aggregate_monster()
            elseif pc.getqf("lykeen_pelerin") == 3 then
                pc.setqf("lykeen_pelerin", 4)
            elseif pc.getqf("lykeen_pelerin") > 4 then
                pc.setqf("lykeen_pelerin", 4)
                setstate(start)
            elseif pc.getqf("lykeen_pelerin") == 4 then
                say_title(""..serverismi)
                say_reward("Pelerin Kontrol Sistemi")
                say("")
                say("Merhaba "..pc.get_name().." !")
                say("Sunucumuzdaki botları engelleme amaçlı,")
                say("Bu sistemi kullanıyoruz.")
                say("Lütfen devam etmek için şifreyi gir.")
                say("Bir kere hakkın olduğunu unutma !")
                say_reward("Yazman gereken şifre; "..sifreolustur)

                pc.setqf("sifre_zamani", get_time())

                local sifrekutusu = tonumber(input())
              
                if sifrekutusu == nil then
                    say_title(""..serverismi)
                    say_reward("Pelerin Kontrol Sistemi")
                    say("")
                    say("Şifreyi yanlış girdin !")
                    pc.setqf("lykeen_pelerin", 0)
                    pc.warp(969600, 278400)
                    return
                end

                if sifrekutusu < 10000 or sifrekutusu > 99999 or sifrekutusu == nil then
                    say_title(""..serverismi)
                    say_reward("Pelerin Kontrol Sistemi")
                    say("")
                    say("Şifreyi yanlış girdin !")
                    pc.setqf("lykeen_pelerin", 0)
                    pc.warp(969600, 278400)
                    return
                end

                if sifrekutusu == sifreolustur then
                    say_title(""..serverismi)
                    say_reward("Pelerin Kontrol Sistemi")
                    say("")
                    say("Şifre doğru !")
                    say("İyi oyunlar "..pc.get_name().." !")
                    pc.setqf("lykeen_pelerin", 0)
                    pc.delqf("sifre_zamani")
                    pc.aggregate_monster()
                end
            end
        end

        when login with pc.getqf("sifre_zamani") > 0 begin
            local sifre_zamani = pc.getqf("sifre_zamani")
            if get_time() - sifre_zamani > 30 then
                say_title(""..serverismi)
                say_reward("Pelerin Kontrol Sistemi")
                say("")
                say("30 saniye içinde şifre girilmedi!")
                pc.setqf("lykeen_pelerin", 0)
                pc.warp(969600, 278400)
            end
        end
    end
end

Yardımın için teşekkür ederim, ama olmadı bu arada bende sorunsuz işliyor herşey.
Sizin yazdığınız kod kısmı da işliyor ancak oyuna girince 30 saniye de bir questi önüme çıkartıyor,
ama ışınlama yapmıyor.
Oyuna girince değil de bot kontrol çıkınca süre başlatmasını istiyorum bunun için hangi fonksiyonu kullanmalıyım?
 
Son düzenleme:
Bot için sıfırdan quest yazmıştım gracia2 serveri için ancak bot yapımcıları tamamen ekarte etmişti questi bilginiz olsun yani bir işe yaramıyor yapacağınız işlemi c++ taraflı yapmanız daha mantıklı olur. Botun çözmesi zor olcak bir algoritma kullanmalısın
Bir kaç sisteme baktım ama doğru dürüst bir şey bulamadım.
Alternatif olarak pelerin questini kullanmaya karar verdim.
Oto çekme ve vurma buttonu ekledim, buna karşılık hile kullanırlarsa ne diyim. :D
Teşekkür ederim, tavsiyeniz için güzel bir sistem bulursam ekleyeceğim.
 

Yardımın için teşekkür ederim, ama olmadı bu arada bende sorunsuz işliyor herşey.
Sizin yazdığınız kod kısmı da işliyor ancak oyuna girince 30 saniye de bir questi önüme çıkartıyor,
ama ışınlama yapmıyor.
Oyuna girince değil de bot kontrol çıkınca süre başlatmasını istiyorum bunun için hangi fonksiyonu kullanmalıyım?

State ile timer başlatman gerekiyor dediğim gibi quest olayı saçma olur
 
Bot için sıfırdan quest yazmıştım gracia2 serveri için ancak bot yapımcıları tamamen ekarte etmişti questi bilginiz olsun yani bir işe yaramıyor yapacağınız işlemi c++ taraflı yapmanız daha mantıklı olur. Botun çözmesi zor olcak bir algoritma kullanmalısın
++


Yardımın için teşekkür ederim, ama olmadı bu arada bende sorunsuz işliyor herşey.
Sizin yazdığınız kod kısmı da işliyor ancak oyuna girince 30 saniye de bir questi önüme çıkartıyor,
ama ışınlama yapmıyor.
Oyuna girince değil de bot kontrol çıkınca süre başlatmasını istiyorum bunun için hangi fonksiyonu kullanmalıyım?

merhaba yeni test etme şansım oldu, return eklemediğimiz için fonksiyondan çıkış yapmıyordu ve fonksiyon dönmeye devam ediyordu bundan dolayı ışınlamıyordu. gerekli düzenlemeleri yaptım cesaret pelerini kullanmak yerine mob öldürmek olarak düzenledim yani mob öldürdüğü zaman doğrulama alacak ardından 5 dakika aralıklarla bu döngü devam edecek, şifreyi doğru yazmadığında ise belirttiğimiz kordinata ışınlanacak. ayrıca metinlerde mob kategorisi içerisinde olduğu için metin kestiği zaman da aynı şekilde 5 dakika aralıklarla doğrulama yapması gerekecek.

bot_kontrol.lua:
Genişlet Daralt Kopyala
quest lykeen_sifrelipelerin begin
    state start begin
        when login begin
            if pc.getqf("son_kontrol_zamani") == 0 then
                pc.setqf("son_kontrol_zamani", get_time())
            end
        end

        when logout begin
            pc.setqf("son_kontrol_zamani", get_time())
        end

        when kill begin
            local simdi = get_time()
            local son_kontrol_zamani = pc.getqf("son_kontrol_zamani")

            if simdi - son_kontrol_zamani >= 300 then -- zaman sayacı (saniye cinsinden)
                pc.setqf("son_kontrol_zamani", simdi)
                local sifreolustur = number(10000, 99999)
                local serverismi = "Test2"

                say_title(""..serverismi)
                say_reward("Pelerin Kontrol Sistemi")
                say("")
                say("Merhaba "..pc.get_name().." !")
                say("Sunucumuzdaki botları engelleme amaçlı,")
                say("Bu sistemi kullanıyoruz.")
                say("Lütfen devam etmek için şifreyi gir.")
                say("Bir kere hakkın olduğunu unutma !")
                say_reward("Yazman gereken şifre; "..sifreolustur)

                local sifrekutusu = tonumber(input())

                if sifrekutusu == nil or sifrekutusu < 10000 or sifrekutusu > 99999 then
                    say_title(""..serverismi)
                    say_reward("Pelerin Kontrol Sistemi")
                    say("")
                    say("Şifreyi yanlış girdin !")
                    pc.setqf("son_kontrol_zamani", 0)
                    pc.warp(969600, 278400)
                    return
                elseif sifrekutusu == sifreolustur then
                    say_title(""..serverismi)
                    say_reward("Pelerin Kontrol Sistemi")
                    say("")
                    say("Şifre doğru !")
                    say("İyi oyunlar "..pc.get_name().." !")
                end
            end
        end
    end
end
 
++


merhaba yeni test etme şansım oldu, return eklemediğimiz için fonksiyondan çıkış yapmıyordu ve fonksiyon dönmeye devam ediyordu bundan dolayı ışınlamıyordu. gerekli düzenlemeleri yaptım cesaret pelerini kullanmak yerine mob öldürmek olarak düzenledim yani mob öldürdüğü zaman doğrulama alacak ardından 5 dakika aralıklarla bu döngü devam edecek, şifreyi doğru yazmadığında ise belirttiğimiz kordinata ışınlanacak. ayrıca metinlerde mob kategorisi içerisinde olduğu için metin kestiği zaman da aynı şekilde 5 dakika aralıklarla doğrulama yapması gerekecek.

bot_kontrol.lua:
Genişlet Daralt Kopyala
quest lykeen_sifrelipelerin begin
    state start begin
        when login begin
            if pc.getqf("son_kontrol_zamani") == 0 then
                pc.setqf("son_kontrol_zamani", get_time())
            end
        end

        when logout begin
            pc.setqf("son_kontrol_zamani", get_time())
        end

        when kill begin
            local simdi = get_time()
            local son_kontrol_zamani = pc.getqf("son_kontrol_zamani")

            if simdi - son_kontrol_zamani >= 300 then -- zaman sayacı (saniye cinsinden)
                pc.setqf("son_kontrol_zamani", simdi)
                local sifreolustur = number(10000, 99999)
                local serverismi = "Test2"

                say_title(""..serverismi)
                say_reward("Pelerin Kontrol Sistemi")
                say("")
                say("Merhaba "..pc.get_name().." !")
                say("Sunucumuzdaki botları engelleme amaçlı,")
                say("Bu sistemi kullanıyoruz.")
                say("Lütfen devam etmek için şifreyi gir.")
                say("Bir kere hakkın olduğunu unutma !")
                say_reward("Yazman gereken şifre; "..sifreolustur)

                local sifrekutusu = tonumber(input())

                if sifrekutusu == nil or sifrekutusu < 10000 or sifrekutusu > 99999 then
                    say_title(""..serverismi)
                    say_reward("Pelerin Kontrol Sistemi")
                    say("")
                    say("Şifreyi yanlış girdin !")
                    pc.setqf("son_kontrol_zamani", 0)
                    pc.warp(969600, 278400)
                    return
                elseif sifrekutusu == sifreolustur then
                    say_title(""..serverismi)
                    say_reward("Pelerin Kontrol Sistemi")
                    say("")
                    say("Şifre doğru !")
                    say("İyi oyunlar "..pc.get_name().." !")
                end
            end
        end
    end
end
pc.aggregate_monster() kullanmalısın ki arkadaşın kafasındaki sistem olmuş olsun yan
 
Konuyu açtığım için pişmanlık hissediyorum.
Öncelikle yardımlarınız ve tavsiyeleriniz için teşekkür ederim.

@CalvinGiorgio önerin için de minnettarım, ve bahsettiğin konuda haklısın quest zaten çalışıyor zaman fonksiyonu ekleyerek belirtilen sürede işlem yapılmazsa oyundan atsın istiyorum. Tek sorunum buydu verdiğin öneride çok doğru şuan bakınca quest çok gereksiz geliyor.

@allien yardımların için çok teşekkür ederim. Emek verdin helal et hakkını uğraştırdım seni :loveya: ancak en son verdiğin quest yine istediğimi yapmıyor, mob'a vurunca belirten saniyede devreye giriyor ancak işlem yapmayınca ışınlama yapmıyor. Ben şifre yazılmayınca belirtilen süre de karakteri şehire ışınlanmasını istiyorum.

Tartışma konusuna gelirsek yapmayın üzülüyorum. Sevdiğim ve değer verdiğim bir platformda sizler gibi değerli insanların tartışması ne bileyim ters geliyor bana.
 
Tartışma yaratan tüm yorumlar silinmiştir, tekrarı olması durumunda ilgili kişilere uyarı verilecektir.

Konuya konu dışında yorum yapmayın, hünerlerinizi laflarınızla değil icraatiniz ile gösteriniz.

İyi forumlar.
 
Geri
Üst