Çözüldü Questte Hata var ama bulamadım?

  • Konuyu açan Konuyu açan Yusty
  • Açılış Tarihi Açılış Tarihi
  • Yanıt Yanıt 36
  • Gösterim Gösterim 3K
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ı.

Yusty

Üye
Üye
Mesaj
98
Çözümler
5
Beğeni
38
Puan
676
Ticaret Puanı
0
Lua (Quest):
Genişlet Daralt Kopyala
quest yd_oto_event begin
    state start begin
        when login with pc.is_gm() begin
            clear_server_timer("oto_event")
            server_loop_timer("oto_event",1)
        end
        when oto_event.server_timer begin
            local saat = tonumber(os.date("%H"))
            local time = os.date("%X")
            local gun = tostring(os.date("%A"))
            if gun == "Monday" then
                if time == "20:00:00" then
                    if game.get_event_flag("ayisigi") == 0 then
                        game.set_event_flag("ayisigi",1)
                        notice_all("Ayisigi Define Sandığı eventi 1 saat süreyle başlamıştır.")
                        notice_all("Seviyenize göre kestiğiniz bütün canavarlardan elde edebilirsiniz.")
                        notice_all("Etkinlik Süresi : 1 Saat")
                    end
                elseif time == "21:00:00" then
                    if game.get_event_flag("ayisigi") == 1 then
                        game.set_event_flag("ayisigi",0)
                        notice_all("Ayisigi Define Sandığı eventi sona ermiştir.")
                    end
                end
            end
            elseif gun == "Tuesday" then
                if time == "21:00:00" then
                    if game.get_event_flag("ayisigi") == 0 then
                        game.set_event_flag("ayisigi",1)
                        notice_all("Ayisigi Define Sandığı eventi 1 saat süreyle başlamıştır.")
                    end
                elseif time == "22:00:00" then
                    if game.get_event_flag("ayisigi") == 1 then
                        game.set_event_flag("ayisigi",0)
                        notice_all("Ayisigi Define Sandığı eventi sona ermiştir.")
                    end
                end
            elseif gun == "Thursday" then
                if time == "20:00:00" then
                    if game.get_event_flag("futboltopu") == 0 then
                        game.set_event_flag("futboltopu",1)
                        notice_all("Futbol Topu eventi 1 saat süreyle başlamıştır.")
                        notice_all("Seviyenize göre kestiğiniz bütün canavarlardan elde edebilirsiniz.")
                        notice_all("Futbol Topu eventi 1 saat süreyle başlamıştır.")
                    end
                    elseif time == "21:00:00" then
                    if game.get_event_flag("futboltopu") == 1 then
                        game.set_event_flag("futboltopu",0)
                        notice_all("Futbol Topu eventi sona ermiştir.")
                    end
                end   
        end
    end
end
Hata nerede bulamadım yardımcı olur musunuz?
 
İstediğiniz kadar soru sorabilirsiniz. Sizdeki futboltopu ise onu top_ac'a ekleyeceksiniz. Yalnız filesinizdeki event flagları bilmeniz gerek.
 
Event flaglere /get ile gm çarından eriştim fakat sadece "futboltopu" var "top_ac" yok. "top_ac"'a nasıl eklenir bilmiyorum.
 
Ülkemizdeki files yapımcıları genelde bu tür eventleri questler üzerinden ekliyor. Yani ayrı bir quest ile atıyorun top_ac 1 ise 1 ila 300 arasındaki bir şans ile oyuncuya futbol topu atsın gibi. Diğer bir seçenekte sourceye eklenerek yapılabilir.
 
Onu büyük ihtimalle yapamam ama kodlarda şunu denedim. Zamanı ve günü notice_all("") ile yazdırmak istedim fakat yazmadı o saat ve gün çekmekte sorun var gibi?
 
Questte sıkıntı var gibi. Çünkü timerleri login olunca başlatılmasını belirtmişsiniz. Her oyuncu için ayrı ayrı işleyebilir. notice("") deneyebilir misiniz?

Lua (Quest):
Genişlet Daralt Kopyala
when login with pc.is_gm() begin
            clear_server_timer("oto_event")
            server_loop_timer("oto_event",1)
        end
Birde server timerlerini bu şekilde yaparsanız her oyuncu oyuna girdiğinde timer temizlenip tekrarda açacağı anlamına gelir.
Queste bir kontrolcü ekleyin. Elinizle timerların açıp kapatılmasını sağlayın. Birde reboot ve reload durumlarında da ek kontrolcü eklemeniz gerekli.

Kısacası oyuncuya özel timer değil global bir timer kullanmanız gerekli.
 
Bir sitede gezinirken sunucunun tarihin kontrol edin demesiyle kontrol etmem bir oldu ve sonuç içler acısı.
Kod:
Genişlet Daralt Kopyala
Sat Nov 18 18:04:35 EET 2017
Şimdi questi deneyeceğim.
 
Konuda sunucu saatini sormuştum. Sizde güncel olduğunu söylemiştiniz. Lakin quest gene stabil çalışmayabilir. Timerleri dediğim gibi yapmanız gerek.
sysinstall freebsd güncelse bsdinstall yazıp timezone ayarlayın.
 
Konuda sunucu saatini sormuştum. Sizde güncel olduğunu söylemiştiniz. Lakin quest gene stabil çalışmayabilir. Timerleri dediğim gibi yapmanız gerek.
sysinstall freebsd güncelse bsdinstall yazıp timezone ayarlayın.
Haklısınız sordunuz gelişmiş bilgim olmadığı için oyunda harita altında gösteren saati sunucudan çektiğini zennederek cevaplamıştım fakat değilmiş.
sysinstall freebsd güncelse bsdinstall yazıp timezone ayarlayın.
Dediniz fakat ben anlamadım nasıl kontrol edeceğim ne yapacağım açabilir misiniz?
 
Sıkıntı belkide zamanı yanlış sorgulattırıyoruzdur. Günü Cumartesi olarak kabul ediyor ama zamana gelince
Kod:
Genişlet Daralt Kopyala
if time == "11:46:00" then
Program işlerken bu kodun içine giremiyor bir türlü timerda bir sıkıntı yok kontrol ettim hem global hem özel çalışıyor.
 
Haklısınız sordunuz gelişmiş bilgim olmadığı için oyunda harita altında gösteren saati sunucudan çektiğini zennederek cevaplamıştım fakat değilmiş.
O sistemin yapımcıları işletim sistemini saatini kullanarak yapmış. Sunucu saatini yansıtmaz yani. :)
Dediniz fakat ben anlamadım nasıl kontrol edeceğim ne yapacağım açabilir misiniz?
Freebsd sürümünüzü öğrenebilir miyim?
Sıkıntı belkide zamanı yanlış sorgulattırıyoruzdur. Günü Cumartesi olarak kabul ediyor ama zamana gelince
Kod:
Genişlet Daralt Kopyala
if time == "11:46:00" then
Program işlerken bu kodun içine giremiyor bir türlü timerda bir sıkıntı yok kontrol ettim hem global hem özel çalışıyor.
notice(time) ile time değerini yazdırır mısınız?
 
Son düzenleme:
O sistemin yapımcıları işletim sistemini saatini kullanarak yapmış. Sunucu saatini yansıtmaz yani. :)

Freebsd sürümünüzü öğrenebilir miyim?

notice(time) ile time değerini yazdırır mısınız?
FreeBSD 10.1 Release Sürümü
dediğiniz gibi yazdırdım time'ı "00:00:00" uzun şekilde yazıyor saat'i ise "12" tam sayı şeklinde yazıyor.
 
O zaman çalışması lazım questin. Player.quest tablosundan flaglara bakabilir misin
 
Questi üzerinde değişiklik yapıp yeniden derlediğiniz zaman diyelim önceki questte sureler diye fonksiyon olsun bunda da onu kaldırdın. Oyunun object dosyasında yer alır. Bu gibi timerli questlerde objectteki kalıntıları temizleyip tekrardan derlemek mantıklı olabilir.

Timer açma ve kapama işini dediğim gibi yaparsanız daha sağlıklı olur. :)
 
Durum
İçerik kilitlendiği için mesaj gönderimine kapatıldı.
Geri
Üst