Помогите Анти-анти афк

  • Автор темы Автор темы Snezok
  • Дата начала Дата начала

Snezok

Активный участник
Пользователь
Баллы
76
Ник в Minecraft
Snez0k
Вообщем на серве стоит анти афк (есентайлс) он кикает если игрок стоит 10 мин без дела. НО есть дикий обход :
b3777a088f4562127cbb5aa2fbba2dfb.jpg

Игрока двигает вода. Как пофикс. ?
 
Анти афк ориентируется на бездействие игрока и его кординаты.
Если написать такой плагин который бы вычислял колибание кординат (например от 166,77,12 и до 170,90,12-14) то может и получилось.
 
Написал пример антиафк с проверкой дистанции. Если игрок 8 минут подряд не перемещался дальше 5 блоков в любую сторону, то кик.
Java:
public class AntiAFK extends JavaPlugin{
public void onEnable(){
    antiAFK();
}
public void onDisable(){
    this.afk.cancel();
}
private BukkitTask afk;
private HashMap<String,Integer> counter = new HashMap<String,Integer>();
private HashMap<String,Location> locs = new HashMap<String,Location>();
private void antiAFK()
{
   this.afk = Bukkit.getScheduler().runTaskTimer(this, new Runnable()
   {
     public void run()
     {
       for (Player s1 : Bukkit.getOnlinePlayers()) {
          Location last = locs.get(s1.getName());
          if(last==null){
              locs.put(s1.getName(), s1.getLocation());
          } else {
              Location cur = s1.getLocation();
              if(last.getWorld().equals(cur.getWorld())){
                  if(cur.distance(last)<5){
                      int old = counter.get(s1.getName())!=null ? counter.get(s1.getName()) : 0;
                      if(old==8){
                          counter.remove(s1.getName());
                          locs.remove(s1.getName());
                          s1.kickPlayer("АФК 8 минут!");
                          continue;
                      }
                      counter.put(s1.getName(), old+1);
                      locs.put(s1.getName(), cur);
                  } else {
                      counter.remove(s1.getName());
                      locs.put(s1.getName(), cur);
                  }
              } else {
                  counter.remove(s1.getName());
                  locs.put(s1.getName(), cur);
              }
          }
       }
     }
   }, 20*60, 20*60);
}
}
 
Последнее редактирование:
Написал пример антиафк с проверкой дистанции. Если игрок 8 минут подряд не перемещался дальше 5 блоков в любую сторону, то кик.
Java:
public void onEnable(){
    antiAFK();
}
public void onDisable(){
    this.afk.cancel();
}
private BukkitTask afk;
private HashMap<String,Integer> counter = new HashMap<String,Integer>();
private HashMap<String,Location> locs = new HashMap<String,Location>();
private void antiAFK()
{
   this.afk = Bukkit.getScheduler().runTaskTimer(this, new Runnable()
   {
     public void run()
     {
       for (Player s1 : Bukkit.getOnlinePlayers()) {
          Location last = locs.get(s1.getName());
          if(last==null){
              locs.put(s1.getName(), s1.getLocation());
          } else {
              Location cur = s1.getLocation();
              if(last.getWorld().equals(cur.getWorld())){
                  if(cur.distance(last)<5){
                      int old = counter.get(s1.getName())!=null ? counter.get(s1.getName()) : 0;
                      if(old==8){
                          counter.remove(s1.getName());
                          locs.remove(s1.getName());
                          s1.kickPlayer("АФК 8 минут!");
                          continue;
                      }
                      counter.put(s1.getName(), old+1);
                      locs.put(s1.getName(), cur);
                  } else {
                      counter.remove(s1.getName());
                      locs.put(s1.getName(), cur);
                  }
              } else {
                  counter.remove(s1.getName());
                  locs.put(s1.getName(), cur);
              }
          }
       }
     }
   }, 20*60, 20*60);
}
И как запилить плагин с этим кодом?))
P.S:Помги есть такой плагин:
Плагин должен редактировать прочность предмета.Например: у алмазной кирки 1500 ударов я пишу команду
/команда 5000 и у кирки становится 5000 ударов.
 
Написал пример антиафк с проверкой дистанции. Если игрок 8 минут подряд не перемещался дальше 5 блоков в любую сторону, то кик.
Java:
public class AntiAFK extends JavaPlugin{
public void onEnable(){
    antiAFK();
}
public void onDisable(){
    this.afk.cancel();
}
private BukkitTask afk;
private HashMap<String,Integer> counter = new HashMap<String,Integer>();
private HashMap<String,Location> locs = new HashMap<String,Location>();
private void antiAFK()
{
   this.afk = Bukkit.getScheduler().runTaskTimer(this, new Runnable()
   {
     public void run()
     {
       for (Player s1 : Bukkit.getOnlinePlayers()) {
          Location last = locs.get(s1.getName());
          if(last==null){
              locs.put(s1.getName(), s1.getLocation());
          } else {
              Location cur = s1.getLocation();
              if(last.getWorld().equals(cur.getWorld())){
                  if(cur.distance(last)<5){
                      int old = counter.get(s1.getName())!=null ? counter.get(s1.getName()) : 0;
                      if(old==8){
                          counter.remove(s1.getName());
                          locs.remove(s1.getName());
                          s1.kickPlayer("АФК 8 минут!");
                          continue;
                      }
                      counter.put(s1.getName(), old+1);
                      locs.put(s1.getName(), cur);
                  } else {
                      counter.remove(s1.getName());
                      locs.put(s1.getName(), cur);
                  }
              } else {
                  counter.remove(s1.getName());
                  locs.put(s1.getName(), cur);
              }
          }
       }
     }
   }, 20*60, 20*60);
}
}
Спасибо вам, мне б такой плагин, а то я нуб и не знаю как это всё собрать в filename.jar
 
Написал пример антиафк с проверкой дистанции. Если игрок 8 минут подряд не перемещался дальше 5 блоков в любую сторону, то кик.
Java:
public class AntiAFK extends JavaPlugin{
public void onEnable(){
    antiAFK();
}
public void onDisable(){
    this.afk.cancel();
}
private BukkitTask afk;
private HashMap<String,Integer> counter = new HashMap<String,Integer>();
private HashMap<String,Location> locs = new HashMap<String,Location>();
private void antiAFK()
{
   this.afk = Bukkit.getScheduler().runTaskTimer(this, new Runnable()
   {
     public void run()
     {
       for (Player s1 : Bukkit.getOnlinePlayers()) {
          Location last = locs.get(s1.getName());
          if(last==null){
              locs.put(s1.getName(), s1.getLocation());
          } else {
              Location cur = s1.getLocation();
              if(last.getWorld().equals(cur.getWorld())){
                  if(cur.distance(last)<5){
                      int old = counter.get(s1.getName())!=null ? counter.get(s1.getName()) : 0;
                      if(old==8){
                          counter.remove(s1.getName());
                          locs.remove(s1.getName());
                          s1.kickPlayer("АФК 8 минут!");
                          continue;
                      }
                      counter.put(s1.getName(), old+1);
                      locs.put(s1.getName(), cur);
                  } else {
                      counter.remove(s1.getName());
                      locs.put(s1.getName(), cur);
                  }
              } else {
                  counter.remove(s1.getName());
                  locs.put(s1.getName(), cur);
              }
          }
       }
     }
   }, 20*60, 20*60);
}
}
Да, пожалуйста, можете скомпилировать?
 
Александр , можешь скомпелировать плагин :
Прошу тебя ! Он почти всем нужен !
Ручки загнуты?
Учитесь , на чужих ошибках !
10/10

Алсо, смысл кикать афкшников? Если кикать афкшников при заходе на полный сервер - это другое дело.
 
Ручки загнуты?
10/10

Алсо, смысл кикать афкшников? Если кикать афкшников при заходе на полный сервер - это другое дело.
пытался в эклипсе, он ругался на ошибки. Если вы можете то помогите. У меня пиксельмон сервер а они так фармят яйца редких поков
 
Написал пример антиафк с проверкой дистанции. Если игрок 8 минут подряд не перемещался дальше 5 блоков в любую сторону, то кик.
Java:
public class AntiAFK extends JavaPlugin{
public void onEnable(){
    antiAFK();
}
public void onDisable(){
    this.afk.cancel();
}
private BukkitTask afk;
private HashMap<String,Integer> counter = new HashMap<String,Integer>();
private HashMap<String,Location> locs = new HashMap<String,Location>();
private void antiAFK()
{
   this.afk = Bukkit.getScheduler().runTaskTimer(this, new Runnable()
   {
     public void run()
     {
       for (Player s1 : Bukkit.getOnlinePlayers()) {
          Location last = locs.get(s1.getName());
          if(last==null){
              locs.put(s1.getName(), s1.getLocation());
          } else {
              Location cur = s1.getLocation();
              if(last.getWorld().equals(cur.getWorld())){
                  if(cur.distance(last)<5){
                      int old = counter.get(s1.getName())!=null ? counter.get(s1.getName()) : 0;
                      if(old==8){
                          counter.remove(s1.getName());
                          locs.remove(s1.getName());
                          s1.kickPlayer("АФК 8 минут!");
                          continue;
                      }
                      counter.put(s1.getName(), old+1);
                      locs.put(s1.getName(), cur);
                  } else {
                      counter.remove(s1.getName());
                      locs.put(s1.getName(), cur);
                  }
              } else {
                  counter.remove(s1.getName());
                  locs.put(s1.getName(), cur);
              }
          }
       }
     }
   }, 20*60, 20*60);
}
}
А если я буду перемещаться на 6 блоков вперед 😆😆😆
 
А если я буду перемещаться на 6 блоков вперед 😆😆😆
Именно. Легко обойти. У меня игрок с антиафк решил глобально - сделал водную лестницу в высоту 26 блоков. Ему норм.
У меня пиксельмон сервер а они так фармят яйца редких поков
А как они фармятся?
 
Именно. Легко обойти. У меня игрок с антиафк решил глобально - сделал водную лестницу в высоту 26 блоков. Ему норм.
А как они фармятся?
Ранчо ставь и просто афк стой пока поки спариваются. За день фармили до 10 иви (редкие поки) . Сейчас просто сделал так чтоб яйцо ооочень долго выводилось и норм вроде
 
сделать проверку по yaw и pitch положениям локации. Если сервер без читеров, то справиться такой метод должен на ура. А по поводу вагонетки, то просто записывать от момента его посадки по каким блокам он проехал и если их повторяется больше например 10-20 раз, то сначала предупредить, а потом через ещё 5-10 повторов кикать.
 
Алсо, смысл кикать афкшников? Если кикать афкшников при заходе на полный сервер - это другое дело.
Для случаев, когда ведется подсчет онлайна и он на что-то влияет.
сделать проверку по yaw и pitch положениям локации. Если сервер без читеров, то справиться такой метод должен на ура. А по поводу вагонетки, то просто записывать от момента его посадки по каким блокам он проехал и если их повторяется больше например 10-20 раз, то сначала предупредить, а потом через ещё 5-10 повторов кикать.
Кстати да, проверку по блокам можно легко обойти сидя в вагонетке, например. Нужно проверять активность мыши (yaw/pitch). Активный игрок не может не сдвинуть мышь хоть немного.
 
Кстати да, проверку по блокам можно легко обойти сидя в вагонетке, например. Нужно проверять активность мыши (yaw/pitch). Активный игрок не может не сдвинуть мышь хоть немного.
В движущейся вагонетке при поворотах постоянно меняется положение взора игрока, по этому способ не сработает. Как раз проверку по блокам обойти никак не получиться, так как засиживание в ней предусматривает постоянное кольцевание по рельсам.
Совершенно не понял вашей логики...
 
пытался в эклипсе, он ругался на ошибки. Если вы можете то помогите. У меня пиксельмон сервер а они так фармят яйца редких поков
Так запрети эти яйца раз они тебе так мешают. Ибо проверять все равно бесполезно, научатся юзать uopilot, и там можно будет накатать любые алгоритмы движения.
 
Назад
Верх Низ