run task lar

Yechwon

Marangoz
Mesajlar
52
En iyi cevaplar
0
Beğeniler
26
Puanları
150
ben bukkit runnable ın her x saniyede olay gerçekleşmesini istiyorum, ancak sınırı olması gerek yani y mesela 5dk 300 sn vs. gibi sinden her x saniye boyunca çalışsın sınırı y olsun gibi bişi var mı varsa TAM adını söyler misiniz .-.
 


Personinblack

YASAKLANDI
Mesajlar
1,876
En iyi cevaplar
0
Beğeniler
1,237
Puanları
90
Kod:
new BukkitRunnable() {
                            @Override
                            public void run() {
                                //kod
                            }
                        }.runTaskTimer(Main.plugin, 0, 20);

Şeklinde de kullanılabilir. Sınır dan kastın belirli bir süre sonra cancel lamak ise for loop ile yapabilirsin.
 

Yechwon

Marangoz
Mesajlar
52
En iyi cevaplar
0
Beğeniler
26
Puanları
150
Bunu mu demek istediniz ? :D
Kod:
        Bukkit.getScheduler().scheduleSyncRepeatingTask(this, new Runnable(){
            public void run()
            {
                patates();
            }
        }, 2L, 2L);

Kendimi şanslı hissediyorum
o ancak ben yapınca aynısını şöyle oluyor, mesela 300 yaptım diyelim 300 tick geçtikten sonra 20 tick çalışıyor sonra 300 tick bekliyor 20 tick çalışıyor ben yapınca böyle oluyor ;(
 

Personinblack

YASAKLANDI
Mesajlar
1,876
En iyi cevaplar
0
Beğeniler
1,237
Puanları
90
o ancak ben yapınca aynısını şöyle oluyor, mesela 300 yaptım diyelim 300 tick geçtikten sonra 20 tick çalışıyor sonra 300 tick bekliyor 20 tick çalışıyor ben yapınca böyle oluyor ;(
2 alternatifin var ya BukkitRunnable'ı önceden tanımlayıp Runnable dışında bir for loop açıcaksın ve for loop tamamlanınca Runnable'ı cancellayacaksın. Yada Runnable'ın dışarısında bir sayısal değer belirleyip Runnable her bittiğinde bunu bir eksilteceksin ve bu sıfıra ulaştığında Runnable'ı kendi içerisinde cancel layacaksın.
 

Yechwon

Marangoz
Mesajlar
52
En iyi cevaplar
0
Beğeniler
26
Puanları
150
a.timer--;
if(a.timer == 0){
if(a.getBluescore() > a.getRedscore()){
a.stop("blue");
}
if(a.getBluescore() < a.getRedscore()){
a.stop("red");
}
if(a.getBluescore() == a.getRedscore()){
a.stop("draw");
}
a.stop();
}
 

Personinblack

YASAKLANDI
Mesajlar
1,876
En iyi cevaplar
0
Beğeniler
1,237
Puanları
90
a.timer--;
if(a.timer == 0){
if(a.getBluescore() > a.getRedscore()){
a.stop("blue");
}
if(a.getBluescore() < a.getRedscore()){
a.stop("red");
}
if(a.getBluescore() == a.getRedscore()){
a.stop("draw");
}
a.stop();
}
Tam kodu hastebin içinde paylaşın ki bi fikir belirtebileyim şu an pek bir şey anladığımı söyleyemeyeceğim :)
 

Üst