BungeeCord çevrimiçi oyuncuları çekme

Crosevice

Demir Madencisi
En iyi cevaplar
0
Merhaba plugin yazmaktayım ve lobi eklentimde bungeecord üzerinde bulununan oyuncuların sayısını çekmek istiyorum fakat bunu nasıl yapacağımı bilmiyorum ve ayrıyetten bir menü içinde 2. bir menü nasıl yapa bilirim bunu ise sg sunucuları için yapacağım fakat daha temel bilgileri bildiğim için pek bunları kavrayamadım yardım edenlere şimdiden teşşekürler.
bide şunu incelerseniz sevinirim bir türlü çalıştıramadım bunu
Linki görebilmek için üye olmanız gerekiyor. Giriş yap veya üye ol.
 
Son düzenleme:

ShortPallMall

AtinaSaga.Com Türkiyenin ilk MMOSurvival sunucusu
En iyi cevaplar
2
yani oyuncu çekme derken kaç kişi oldugunun sayısını çekmemi
 

ShortPallMall

AtinaSaga.Com Türkiyenin ilk MMOSurvival sunucusu
En iyi cevaplar
2
hd plugini ile {online: faction} bu şekilde factiondaki onlileleri çekebilirsin menü olayı ise chescommands ise
Kod:
  # command - OPTIONAL (you can remove this or set it to '')
  command: 'oyunlar'

  # open-with-item - OPTIONAL (you can remove this or
  # set the item-id/data-value to 0)
  # In this case it will open with a book (right click)
  open-with-item:
    item-id: 340
    left-click: True
    right-click: true
#   data-value: 0

######################
#+                  +#
#       ITEMS        #
#+                  +#
######################
oyun1:
  NAME: '&e&lOyun1'
  LORE:
  ID: 266
  POSITION-X: 7
  POSITION-Y: 1
  COMMAND: 'open:oyun1.yml'
bu ana menü dersek oyun1 deki nesneye tıkladıgında oyun1 menüsünü açıcaktır yani bunu siz ana menünüz yapın oyun1.yml ismini sizin 2.menünün ismi neyse onu yazın​
 

Crosevice

Demir Madencisi
En iyi cevaplar
0
Ben direkt plugin yazmadan bahsetmiştim xD eklenti yazıyorum ve sadece bu 2 si kaldı.
 

java10

kız çava bana kahve yap
En iyi cevaplar
0
server messaging ile yapabilirsin fakat önermem, daha kaliteli ve stabil bir veri gönderme alma(oyuncu sayısı alma gibi) için socket4mc eklentisi ni api olarak kullanabilirsin;
Linki görebilmek için üye olmanız gerekiyor. Giriş yap veya üye ol.

örnek olarak; (kesin çözüm budur diğerleri ile uğraşırsan kafayı yeme ihtimalin var demedi deme .-.)
öncelikle bi class ı listener olarak belirle, sonra onenable dan listener ı register et biliyorsundur sanırım bu aşamayı, artdından 2 tane event var socket4mc nin
PHP:
@EventHandler
    public void onHandshake(BukkitSocketHandshakeEvent e) {
        this.client = e.getClient();
    }
bu kod bungeecord spigot sunucuna bağlanınca aktif olan şey client i e.getclient() ile yaptım ileride kullanıcan onu,
bu yazdığım kod bukkit e koyucan zaten belli oluyor BukkitSocket ten ardından veri isteyelim bungeeden;
PHP:
client.writeJSON("BungeeCord", "Get Oyuncu: " + p.getUniqueId().toString());
işte o client burda devreye giriyor, ben mesela burda "BungeeCord" channel ından göndermişim bu bungeecord channel illa bungeecord olmak zorunda değil yani onu istediğin gibi bir özel isim koyabilirsin ama bungeecord eklentindede ona göre düzenliycek, mesela ben get oyuncu: oyuncunun uuid demişim yani ben bi veri çekmek için oyuncunun uuid sini yazmışım fakat senin ihtiyacın olan şey direk şu;
PHP:
client.writeJSON("BungeeCord", "onlineplayercount");
b
bu şekilde bi veri iste bungee den nerede istediğin önemli değil istedikten sonra bi bungeecord eklentimiz vardır sanırım, yoksa buyur burdan ufak bilgiler al;
Linki görebilmek için üye olmanız gerekiyor. Giriş yap veya üye ol.

yardımcı olur bende pek bungee kullanmam ama bu link baya yardımcı oluyor ardından bungeecord class larımıza geçelim;
bukkit teki gibi listener ı register et bukkit ile aynı şekilde yapılıyor;
PHP:
        getProxy().getPluginManager().registerListener(this,this);
ben bu şekilde yaptım hemen main class a koydum listener ı nereye koyduğunun bi önemi yok ardından;
PHP:
    @EventHandler
    public void onHandShake(BungeeSocketHandshakeEvent e){
        messenger = e.getMessenger();
    }
bi Messenger belirleyelim sunucular bağlanınca messager ve üstteki client ın classları sırasıyla,"SocketClient", "SocketMessenger" bu şekilde ardından niye bungeecord umuza spigot tan gelen veriyi kullanmak için yani onunla işlem yapmak için bi event açalım;
PHP:
@EventHandler
    public void onJSON(BungeeSocketJSONEvent e) {
        String channel = e.getChannel();
        String data = e.getData();
        if (channel.equals("BungeeCord") && data.startsWith("onlineplayercount")) {
            e.write("");
        }
    }
gördüğün gibi "BungeeCord" channel ı burda devreye giriyor veri karmaşası olmasın diye böyle i sistem yapmışlar şimdi açıklıyım tek tek sana,
data.startsWith("onlineplayercount"))
bu kısım dikkatini çekmiştir burası bukkit te veri isteği yolladığımızda ne istediğimizi yazdık fakat onlineplayercount diyince sana online player ları vermez bu bi string yani eğer onlineplayercount verisini istiyorsan ifin altına bişiler daha yazmalıyız
e.write("");
bu kısım dan bahsediyorum yani şimdi biz veri alma isteği yolladık bukkit ten sonra bungee bunu listener ile algıladı filtreledi ki veri karmaşası olmasın diye şimdi bi geri bildirim yapmalıyız buda işte;
e.write(""); bunun ile olucak peki nasıl oluca;
zaten hali hazırda bungeecord un içinde olan(Apisinin) bi online count alma methodu var;
getProxy().getOnlineCount()
bu method ee bunu nasıl yollıycam şu şekilde;
e.write("onlineplayercount: " + getProxy().getOnlineCount());
dediğinde bukkit e geri bildirim atmış olursun şimdi ne olucak peki? bukkit class larımıza dönüyoruz(bukkit projemize yani)
bi event lazım bize bungee den gelenleri almak için oda bu;
PHP:
@EventHandler
    public void onJSON(BukkitSocketJSONEvent e) {
        String data = e.getData();
        if(data.startsWith("onlineplayercount: ")){
            //eğer bungee den gelen daha onlineplayercount: ile başlıyorsa dedik ve artık verimiz geldi
            // artık bu kısım sana kalmış mesela split ile onlineplayercount: ı ayırırsın ve sadece online oyuncuların sayısı kalır elinde
            // sonra işte veriyi bi yere atarsın sign ile orda kullanırsın ya da arraylist-hashmap vs. atıp scoreboard da gösterirsin burası sana kalmış
        }
    }

socket4mc bu kadar :)
peki başka yollar var mı?
elbette var orijinal bungee nin kendisine ait bir veri konuşma olayı var ama sağlıklı değil ben pek beceremedim sadece tutorial ını atıyım yani ben bu tut. dan yapamadığım için bana da yetersiz geldiği için socket4mc kullandım ama başka eklentiler de var api leri vs. var rahat cidden onlarıda Google amcaya sorup soruşturup bulabilirsin, bungee nin tutorial ı:
Linki görebilmek için üye olmanız gerekiyor. Giriş yap veya üye ol.

bu tut. da gayet ayrıntılı fakat ben yapamadım bide sen dene :)
Linki görebilmek için üye olmanız gerekiyor. Giriş yap veya üye ol.

bu linktede biraz daha geliştirilmiş orijinal bungee yi kullanan bi arkadaşın açtığı konu oda yardımcı olur bana biraz yardımcı olmuştu mantığı anlama konusunda
 
Üst