Çözüldü Yüksek java bilgisi olan yardım edebilirmi ? [Date & Time Belirleme]

Durum
Üzgünüz bu konu cevaplar için kapatılmıştır...

| BeyazPolis |

Yaratık Tuzağı: Çalışıyor
Katılım
1 Haziran 2018
Mesajlar
723
Elmaslar
533
Puan
15.325
Yaş
26
Minecraft
BeyazPolis

Discord:

BeyazPolis#1044

bir dailyrewads eklentisi yaptım ve herşeyi bitmişti ilk eklentim olucak kendisi ama zamanı ayarlayamıyorum oyuncu 24 saatte bir almasını istiyorum nasıl yapabilirim
 
bir dailyrewads eklentisi yaptım ve herşeyi bitmişti ilk eklentim olucak kendisi ama zamanı ayarlayamıyorum oyuncu 24 saatte bir almasını istiyorum nasıl yapabilirim
Time eventleri için ayrı bir worker açıp oradan işlemleri devam ettirmeni öneririm. En basitini anlatacak olursam oyuncuları bir kümeye al ve küme içindeki oyuncuların değerine her saat 1 eklettir. En basiti bu fakat pek optimize bir işlem değil.
 
scheduler kullanabilirsin, bi dosyada bir sonra ki ödülü alacağı gün saat vs. yazar, her dakikada da o zamanı geçmiş mi geçmemiş mi kontrol edersin, geçmişse eğer bir sonra ki ödül saatini hesaplattırıp dosyaya tekrar yazdırırsın ve scheduler tekrar o saatte kadar her dakika çalışır.
 
Aldığı zamanın 1 gün fazlasını yaml olarak kaydet sonra ödül almaya çalışınca onu kontrol etsin o anki zamanla aldığı zamanın 1 gün fazlası aynı ise yenilensin hak.
 
bi tane yml acıyorum



oyuncu 1 kez aldığında kaydediyor mesela 13;00 da aldı



bidaha 13;00 olduğunda tekrar alabilcek



15;00 da aldı



bidaha saat 15;00 olursa alabilcek


bu şekilde olurmu?
 
Scheduler kullanmanı pek önermem uzun süreli timingslerde onun yerine Date format ile günü register et confige örneğin:
"MON" Bildiğin üzere date formatlarda istediğin gibi yapabiliyorsun MONDAY - MON - MOND - MO vs. vs.
- Altında playerList: olsun boş olsun.
- Komuta hashmap ayarı ekle ve hashmapi listen et
- Hashmap'e kaydet oyuncuları.
- Disable kısmına hashMapi confige kaydetme ayarla
- Eğer sunucu kapanmazsa gün değişimi listen event sonucunda hashmap temizlensin ve config temizlenip yeniden oluşturulsun.
Örneğin:
'MON' ise gün, 'TUE'ye geçerse config ve hashmap clear olsun ve oyuncular tekrardan komutu gerçekleştirebilsin.

Ayrıca günü listen etmek için checktask diye bir loop ekle her saniye listen etsin.
Bu şekilde bişey:
Kod:
public void checkTask()
    {
       getServer().getScheduler().scheduleSyncRepeatingTask(this,new Runnable()
        {
            public void run()
            {
                if(Task.hasTime()){
                        Task.run();}
            }
        },20L,20L);
    }

Ayrıca yukardaki arkadaşın dediği gibi saati listen da edebilirsin ama her saat dakika için bir configuration section oluşturmuş olursun bu da daha fazla memory harcar. Ben bu sistemi belirli saat ve günde boss veya savaş başlatmak için kullanıyorum.
 
Scheduler kullanmanı pek önermem uzun süreli timingslerde onun yerine Date format ile günü register et confige örneğin:
"MON" Bildiğin üzere date formatlarda istediğin gibi yapabiliyorsun MONDAY - MON - MOND - MO vs. vs.
- Altında playerList: olsun boş olsun.
- Komuta hashmap ayarı ekle ve hashmapi listen et
- Hashmap'e kaydet oyuncuları.
- Disable kısmına hashMapi confige kaydetme ayarla
- Eğer sunucu kapanmazsa gün değişimi listen event sonucunda hashmap temizlensin ve config temizlenip yeniden oluşturulsun.
Örneğin:
'MON' ise gün, 'TUE'ye geçerse config ve hashmap clear olsun ve oyuncular tekrardan komutu gerçekleştirebilsin.

Ayrıca günü listen etmek için checktask diye bir loop ekle her saniye listen etsin.
Bu şekilde bişey:
Kod:
public void checkTask()
    {
       getServer().getScheduler().scheduleSyncRepeatingTask(this,new Runnable()
        {
            public void run()
            {
                if(Task.hasTime()){
                        Task.run();}
            }
        },20L,20L);
    }

Ayrıca yukardaki arkadaşın dediği gibi saati listen da edebilirsin ama her saat dakika için bir configuration section oluşturmuş olursun bu da daha fazla memory harcar. Ben bu sistemi belirli saat ve günde boss veya savaş başlatmak için kullanıyorum.
Bana ders verebilirmisin cünkü bu konuyu anlamadım discordda ekran acıp 5 10 dk anlatsan harika olur anlatabilicek birisi varmı
 
Durum
Üzgünüz bu konu cevaplar için kapatılmıştır...

Hala Discord sunucumuza katılmadın mı?

Büyük bir topluluğun parçası ol, etkinliklere katıl ve özel hediyeler kazanma şansı yakala!

Şimdi Katıl
Üst