Spigot - Tabela Ayarlama / Minigames İçin Tabela Ayarları

Leqo

MineKnight MMORPG
Mesajlar
139
En iyi cevaplar
0
Beğeniler
115
Puanları
490
Ruh hali
Merhaba arkadaşlar bugün size tabela kullanımı hakkında ufak ve basit bir bilgi vereceğim.Lafı fazla uzatmadan anlatıma geçeyim. :)

1) Tabelanın Otomatik Değiştirilmesi
Öncelikli olarak tekrar bir etkinlik oluşturalım ve if li bir method kullanarak tabelamızı oluşturalım.Burada önemli olan yer tabelanın ilk kısmına ne yazacağımızdır.Bunu kod da daha iyi bir şekilde anlayabilirsiniz.
Kod:
@EventHandler
public void onSignChange(SignChangeEvent e)
    {
     if (e.getLine(0).equalsIgnoreCase("test")) { 
       e.setLine(0, "Merhaba"); 
       e.setLine(1, "Bu");
       e.setLine(2, "bir");
       e.setLine(3, "denemedir.");
     }
    }
Gördüğünüz kodda eğer tabelanın ilk satırında test yazıyorsa o yazıyı otomatik değiştirip setline metodundaki yazılan değerlere atar.Üstünde oynama yapıp renklendirebilrisiniz.
Görünümü ;

2) Tabelaya Tıklayınca Mesaj Göndermesi
Bu bölümde tabelaya tıklandığı an yapılacak olan etkinliği belirteceğiz.Öncelikli olarak kısaca koddan bahsedeyim.İlk olarak yapacağımız ilk şey
etkinliği belirtmek.

1) Oyuncu bloğa tıkladığı zaman,
2) Tıklanan blok tabela ise
3) Tabelayı s olarak tanımladık.
4) ilk satırda 1 yazıyor ise
5) Oyuncuya mesaj yollama işlemini tanımladık.

6) Oyuncuya "Deneme" mesajını gönder
Kod:
@EventHandler
    public void onPlayerInteract(PlayerInteractEvent e2){
        Player p = e2.getPlayer();
                 if (e2.getAction() != Action.RIGHT_CLICK_BLOCK) return;
                   if ((e2.getClickedBlock().getState() instanceof Sign)) {
                     Sign s = (Sign)e2.getClickedBlock().getState();
                     if (s.getLine(0).equalsIgnoreCase("1")) {
                         p.getPlayer().sendMessage("Deneme");
                       }
                     }
    }
Görünümü;


3)Tabela Güncelleme

Bu bölüm tabelalar için önemli bir bölümdür.Veri kaybı yaşanmaması için kullanılması önemlidir.Biz tabelayı "s" olarak tanımladığımız için bu tanım üzerinden devam ediyorum..
Kod:
s.update();
4) Minigames Tabelaları
Arkadaşlar bu bölümde yapacağımız şey aslında çok basit burada yapmamız gereken mesela oyunların tabelasında 0/20 böyle bir şey görürsünüz.Bizde bu teoriye dayanarak şöyle bir uygulama yapacağız.Tabelaya tıklayınca 1/8 olacak ve oyuncular bastıkça artacak bir uygulama yapacağız.Hemen başlayalım
Öncelikli olarak tabelanın ilk satırına "Minigame" yazınca otomatik değiştirilmesi etkinliğini yazalım..
Kod:
@EventHandler
    public void onSignChange(SignChangeEvent e)
    {
     if (e.getLine(0).equalsIgnoreCase("Minigame")) { 
       e.setLine(0, "[Minigame]"); 
       e.setLine(1, "Deneme"); 
     }
    }
Ardından bu işlemi uyguladıktan sonra oyuncu sayısı belirleyeceğimiz bir uygulama yazacağız.Ben oyuncu sayısını sayi olarak tanimladım ve int veri tipimde sayımı belirtiyorum.
Kod:
int sayi = 0;
Burada 0 yapmamızın sebebi ilk değerin 0 olmasıdır.3.satıra bu değeri atıyorum.Burada 3. satır dediğimden kastım 0,1,2 yani setLine(2, "") olandır.
Kod:
int number = 0;
@EventHandler
    public void onSignChange(SignChangeEvent e)
    {
     if (e.getLine(0).equalsIgnoreCase("Minigame")) {
       e.setLine(0, "[Minigame]");
       e.setLine(1, "Deneme");
       e.setLine(2, sayi + "/8");
     }
    }
Not : Sadece sayinizin gözükmesini istiyorsanız bu kodu deneyin.
Kod:
e.setLine(2, sayi + "");
Şimdi bu bölüme geldiğimizde bir oyuncu tabelaya tıklayınca 1/8 olmasını ayarlıyacağız.
Bu bölümü sıra sıra açıklayacağım.
1) Verimizin adını sayi ve değerini 0 olarak belirttik.
2) Sağ tıklama etkinliğini belirttik.
3) Bloğun bulunduğu noktayı belirttik.
4) Tabelamız s olarak tanımladık ve bulunduğu bölgeyi ise bs olarak tanımladık.
5) Tabelamızın ikinci satırı "Deneme" ise.(Bu bölümü anlamadıysanız bir üst koda bakınız.)
6) sayi değerimiz 9'dan küçük ise sayı değerini 1 arttır dedik ve tabelaya uygula dedik.
7) sayi değerimiz 8'e eşitlendiği zaman ise sayi değerini 0 la dedik.
8) Tekrardan tabelaya 0/8 yazdırmasını sağladık.0 olmasının nedeni sayi değerini sıfırlamamızdır.
9) Tabelayı yenile
10) Else alanında ise tabela 8'i geçerse ne yapılmasını gerektiğini istedik.Ancak böyle bir şey yapmanıza gerek yok çünkü tabela 8'i geçtiği an 0'lanmasını istemiştik.
Kod:
@EventHandler
    public void onPlayerInteract(PlayerInteractEvent e) {
       if (e.getAction() != Action.RIGHT_CLICK_BLOCK) return;
       if ((e.getClickedBlock().getState() instanceof Sign)) {
        BlockState bs = e.getClickedBlock().getState();
         Sign s = (Sign) bs;
            if (s.getLine(1).equalsIgnoreCase("Deneme")) {
          if (sayi < 9) {
          sayi = sayi + 1;
          s.setLine(2, sayi + "/8");
          s.update();
           if (sayi == 8) {          
              sayi=0; 
               s.setLine(2, sayi + "/8");
               s.update();
           } else {
             //BURAYA KOD YAZMANIZA GEREK YOKTUR
           }
          }
         }
        }
       }
Tam kodumuzun hali ise şu durumda..
Kod:
int sayi = 0;
    @EventHandler
        public void onSignChange(SignChangeEvent e3)
    {
     if (e3.getLine(0).equalsIgnoreCase("Minigame")) {
       e3.setLine(0, "[Minigame]");
       e3.setLine(1, "Deneme");
       e3.setLine(2, sayi + "/8");
     }
    }
   
    @EventHandler
    public void onPlayerInteract(PlayerInteractEvent e) {
       if (e.getAction() != Action.RIGHT_CLICK_BLOCK) return;
       if ((e.getClickedBlock().getState() instanceof Sign)) {
        BlockState bs = e.getClickedBlock().getState();
         Sign s = (Sign) bs;
            if (s.getLine(1).equalsIgnoreCase("Deneme")) {
          if (sayi < 9) {
          sayi = sayi + 1;
          s.setLine(2, sayi + "/8");
          s.update();
           if (sayi == 8) {          
              sayi=0; 
               s.setLine(2, sayi + "/8");
               s.update();
           } else {
             //BURAYA KOD YAZMANIZA GEREK YOKTUR
           }
          }
         }
        }
       }
Görünümü ;

Arkadaşlar umarım istediğiniz gibi olur bu kodlamalar sadece eklenti yapımları için basit olan kısımlarıdır.Ben sizin için daha detaylı veremem elimden bu kadar geliyor.Ancak daha iyi bir tabela tabi ki yapabilirsiniz herkes farklı farklı algoritmalar uygulayabilir ve bu çok daha iyi olacaktır.Umarım beğenirsiniz.İyi Forumlar..


 


Son düzenleme:

byTıtanıum

π÷¥$¢£-℅®*#¶∆×
Özel Üye
Mesajlar
359
En iyi cevaplar
0
Beğeniler
147
Puanları
340
Böyle bilgiler için uğraşman güzel bir şey tebrikler.
 

SlayerR

Toss a coin to your Witcher
Genel Moderatör
Mesajlar
1,051
En iyi cevaplar
15
Beğeniler
2,083
Puanları
3,200
Ruh hali
Bayım siz bu işi biliyorsunuz :şapka:
 

PandaBey

Kızıltaş Madencisi
Mesajlar
637
En iyi cevaplar
0
Beğeniler
359
Puanları
630
Forumda sizin gibi yararlı üyeleri görmek gurur verici.
 

Y3K

Kömür Madencisi
Mesajlar
133
En iyi cevaplar
0
Beğeniler
54
Puanları
0
peki skriptemi pluginemi uygun
 

Leqo

MineKnight MMORPG
Mesajlar
139
En iyi cevaplar
0
Beğeniler
115
Puanları
490
Ruh hali
Edit : Silindi..
 
Son düzenleme:

Üst