Ping yüksek atma skript

TheDewiLSTaR

Kömür Madencisi
Mesajlar
112
En iyi cevaplar
0
Beğeniler
11
Puanları
410
arkadaşlar adamın ping 250 geçince oyundan kick atmasını istiyorum nedeni ise ping çok yüksek demesini istiyorum
skript varsa oda olur
 


Son düzenleme:

IRFN

Sonoyuncu.Network
Mesajlar
1,043
En iyi cevaplar
0
Beğeniler
1,314
Puanları
3,230
Aşağıda yazdığım kodu derlersen, kodda saniye yazan yerdeki sürede bir online oyuncuların pingini kontrol eder, pingi 250 üstünde olanları oyundan atar. Bunu her saniye yapmak sağlıklı değildir, saniye kısmına en az 20-30 yazmanı öneririm. Ben default olarak 60, yani 1 dakika yaptım.
Kodu notepad++ ile yazdım, iş yerinde eclipse yok, bu nedenle tüm importları yapamadım. Muhtemelen Schedule importu isteyecektir, eksik importları kendin tamamlarsın.

PHP:
package so.irfn.pingcontrol;

import org.bukkit.Bukkit;
import org.bukkit.entity.Player;
import org.bukkit.plugin.java.JavaPlugin;

public class PingControl extends JavaPlugin {

    private int saniye = 60;
  
    @Override
    public void onEnable() {
      
        Bukkit.getScheduler().scheduleSyncRepeatingTask((Plugin) this, new Runnable() {
            @Override
            public void run() {
             for (Player p : Bukkit.getOnlinePlayers()){
                if (getPing(p) > 250)
                    p.kickPlayer("§4Yüksek ping nedeniyle sunucudan atıldınız. Pinginiz 250'nin altında olmalıdır.");
             }           
            }
       }, 30 * 20L,   saniye * 20L);
      
    }

    Class<?> CPClass;
    String serverName  = Bukkit.getServer().getClass().getPackage().getName(),
    serverVersion = serverName.substring(serverName.lastIndexOf(".") + 1, serverName.length());
    public int getPing(Player p) {
        try {
            CPClass = Class.forName("org.bukkit.craftbukkit." + serverVersion + ".entity.CraftPlayer");
            Object CraftPlayer = CPClass.cast(p);

            Method getHandle = CraftPlayer.getClass().getMethod("getHandle", new Class[0]);
            Object EntityPlayer = getHandle.invoke(CraftPlayer, new Object[0]);

            Field ping = EntityPlayer.getClass().getDeclaredField("ping");

            return ping.getInt(EntityPlayer);
        } catch (Exception e) {
                e.printStackTrace();
        }
        return 0;
    }

}
 

Üst