Noticias:

Debes de estar registrado para poder ver el contenido indicado. Registrate o Conectate

Menú Principal

Sistema Anty-AFK

Iniciado por Swarlog, Ago 19, 2022, 12:51 AM

Tema anterior - Siguiente tema

Swarlog

### Eclipse Workspace Patch 1.0
#P l2jalpha_gameserver_mxc
Index: java/net/l2jalpha/gameserver/network/clientpackets/EnterWorld.java
===================================================================
--- java/net/l2jalpha/gameserver/network/clientpackets/EnterWorld.java (revision 31)
+++ java/net/l2jalpha/gameserver/network/clientpackets/EnterWorld.java (working copy)
@@ -27,6 +27,7 @@
 import net.l2jalpha.gameserver.Announcements;
 import net.l2jalpha.gameserver.GmListTable;
 import net.l2jalpha.gameserver.TaskPriority;
+import net.l2jalpha.gameserver.ThreadPoolManager;
 import net.l2jalpha.gameserver.cache.HtmCache;
 import net.l2jalpha.gameserver.communitybbs.Manager.RegionBBSManager;
 import net.l2jalpha.gameserver.datatables.sql.AdminCommandAccessRights;
@@ -45,6 +46,7 @@
 import net.l2jalpha.gameserver.model.base.PlayerClass;
 import net.l2jalpha.gameserver.model.entity.ClanHall;
 import net.l2jalpha.gameserver.model.entity.Hero;
+import net.l2jalpha.gameserver.model.entity.LeaveBuster;
 import net.l2jalpha.gameserver.model.entity.Siege;
 import net.l2jalpha.gameserver.model.olympiad.Olympiad;
 import net.l2jalpha.gameserver.model.quest.Quest;
@@ -281,6 +283,8 @@
 
  RegionBBSManager.getInstance().changeCommunityBoard();
 
+ activeChar.setLastActionMillis(System.currentTimeMillis());
+ LeaveBuster._players.put(activeChar, ThreadPoolManager.getInstance().scheduleGeneralAtFixedRate(new LeaveBuster(activeChar), 5000, 5000));
  }
 
  /**
Index: java/net/l2jalpha/gameserver/network/clientpackets/Logout.java
===================================================================
--- java/net/l2jalpha/gameserver/network/clientpackets/Logout.java (revision 31)
+++ java/net/l2jalpha/gameserver/network/clientpackets/Logout.java (working copy)
@@ -27,6 +27,7 @@
 import net.l2jalpha.gameserver.datatables.xml.SkillTable;
 import net.l2jalpha.gameserver.model.L2World;
 import net.l2jalpha.gameserver.model.actor.instance.L2PcInstance;
+import net.l2jalpha.gameserver.model.entity.LeaveBuster;
 import net.l2jalpha.gameserver.model.olympiad.OlympiadManager;
 import net.l2jalpha.gameserver.network.SystemMessageId;
 import net.l2jalpha.gameserver.network.serverpackets.ActionFailed;
@@ -56,6 +57,8 @@
 
  if (player == null)
  return;
+
+ player.setLastActionMillis(System.currentTimeMillis());
 
  player.getInventory().updateDatabase();
 
@@ -79,6 +82,9 @@
  {
  player.removeSkill(SkillTable.getInstance().getInfo(4289, 1));
  }
+
+ LeaveBuster._players.get(player).cancel(true);;
+        LeaveBuster._players.remove(player);
 
  RegionBBSManager.getInstance().changeCommunityBoard();
 
Index: java/net/l2jalpha/gameserver/network/clientpackets/Say2.java
===================================================================
--- java/net/l2jalpha/gameserver/network/clientpackets/Say2.java (revision 31)
+++ java/net/l2jalpha/gameserver/network/clientpackets/Say2.java (working copy)
@@ -113,6 +113,8 @@
  return;
  }
 
+ activeChar.setLastActionMillis(System.currentTimeMillis());
+
  if (_text.length() >= 100)
  {
  _log.warning("Say2: Max input exceeded.");
Index: java/net/l2jalpha/gameserver/model/actor/instance/L2PcInstance.java
===================================================================
--- java/net/l2jalpha/gameserver/model/actor/instance/L2PcInstance.java (revision 31)
+++ java/net/l2jalpha/gameserver/model/actor/instance/L2PcInstance.java (working copy)
@@ -196,6 +196,19 @@
  */
 public final class L2PcInstance extends L2Playable
 {
+ // LeaveBuster
+ private long _lastAction = 0;
+
+ public long getLastActionMillis()
+ {
+ return _lastAction;
+ }
+
+ public void setLastActionMillis(long val)
+ {
+ _lastAction = val;
+ }
+
  private static final String RESTORE_SKILLS_FOR_CHAR = "SELECT skill_id,skill_level FROM character_skills WHERE char_obj_id=? AND class_index=?";
  private static final String ADD_NEW_SKILL = "INSERT INTO character_skills (char_obj_id,skill_id,skill_level,skill_name,class_index) VALUES (?,?,?,?,?)";
  private static final String UPDATE_CHARACTER_SKILL_LEVEL = "UPDATE character_skills SET skill_level=? WHERE skill_id=? AND char_obj_id=? AND class_index=?";
Index: java/net/l2jalpha/gameserver/model/entity/LeaveBuster.java
===================================================================
--- java/net/l2jalpha/gameserver/model/entity/LeaveBuster.java (revision 0)
+++ java/net/l2jalpha/gameserver/model/entity/LeaveBuster.java (working copy)
@@ -0,0 +1,65 @@
+/* This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2, or (at your option)
+ * any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
+ * 02111-1307, USA.
+ *
+ * http://www.gnu.org/copyleft/gpl.html
+ */
+package net.l2jalpha.gameserver.model.entity;
+
+import java.util.concurrent.ScheduledFuture;
+import java.util.logging.Logger;
+
+import javolution.util.FastMap;
+import net.l2jalpha.gameserver.model.actor.instance.L2PcInstance;
+
+/**
+ *
+ * @author  Anarchy
+ */
+public class LeaveBuster implements Runnable
+{
+ public static FastMap<L2PcInstance, ScheduledFuture<?>> _players = new FastMap<>();
+
+ private static final Logger _log = Logger.getLogger(LeaveBuster.class.getName());
+
+ private L2PcInstance _p = null;
+
+ public LeaveBuster(L2PcInstance p)
+ {
+ _p = p;
+ }
+
+ @Override
+ public void run()
+ {
+ if (_p == null || !_p.isOnline())
+ {
+ if (_p != null)
+ {
+ _players.get(_p).cancel(true);
+ _players.remove(_p);
+ }
+
+ return;
+ }
+
+ if ((System.currentTimeMillis()-_p.getLastActionMillis())/1000/60 >= 30)
+ {
+ _log.info("Leave Buster: "+_p.getName()+" was kicked out of game.");
+ _players.get(_p).cancel(true);
+ _players.remove(_p);
+ _p.logout();
+ }
+ }
+}
Index: java/net/l2jalpha/gameserver/network/clientpackets/RequestRestart.java
===================================================================
--- java/net/l2jalpha/gameserver/network/clientpackets/RequestRestart.java (revision 31)
+++ java/net/l2jalpha/gameserver/network/clientpackets/RequestRestart.java (working copy)
@@ -22,6 +22,7 @@
 import net.l2jalpha.gameserver.communitybbs.Manager.RegionBBSManager;
 import net.l2jalpha.gameserver.datatables.xml.SkillTable;
 import net.l2jalpha.gameserver.model.actor.instance.L2PcInstance;
+import net.l2jalpha.gameserver.model.entity.LeaveBuster;
 import net.l2jalpha.gameserver.model.olympiad.OlympiadManager;
 import net.l2jalpha.gameserver.network.L2GameClient;
 import net.l2jalpha.gameserver.network.SystemMessageId;
@@ -56,6 +57,8 @@
             _log.warning("[RequestRestart] activeChar null!?");
             return;
         }
+       
+        player.setLastActionMillis(System.currentTimeMillis());
 
         if (player.isInOlympiadMode() || OlympiadManager.getInstance().isRegistered(player))
         {
@@ -92,6 +95,9 @@
         {
          player.removeSkill(SkillTable.getInstance().getInfo(4289, 1));
         }
+       
+        LeaveBuster._players.get(player).cancel(true);;
+        LeaveBuster._players.remove(player);
 
         L2GameClient client = getClient();
 
Index: java/net/l2jalpha/gameserver/network/clientpackets/MoveBackwardToLocation.java
===================================================================
--- java/net/l2jalpha/gameserver/network/clientpackets/MoveBackwardToLocation.java (revision 31)
+++ java/net/l2jalpha/gameserver/network/clientpackets/MoveBackwardToLocation.java (working copy)
@@ -91,6 +91,8 @@
  L2PcInstance activeChar = getClient().getActiveChar();
  if (activeChar == null)
  return;
+
+ activeChar.setLastActionMillis(System.currentTimeMillis());
 
  _curX = activeChar.getX();
         _curY = activeChar.getY();
Index: java/net/l2jalpha/gameserver/network/clientpackets/RequestRestartPoint.java
===================================================================
--- java/net/l2jalpha/gameserver/network/clientpackets/RequestRestartPoint.java (revision 31)
+++ java/net/l2jalpha/gameserver/network/clientpackets/RequestRestartPoint.java (working copy)
@@ -160,6 +160,8 @@
 
  if (activeChar == null)
  return;
+
+ activeChar.setLastActionMillis(System.currentTimeMillis());
 
  //SystemMessage sm2 = new SystemMessage(SystemMessage.S1_S2);
  //sm2.addString("type:"+requestedPointType);
Index: java/net/l2jalpha/gameserver/network/clientpackets/RequestSocialAction.java
===================================================================
--- java/net/l2jalpha/gameserver/network/clientpackets/RequestSocialAction.java (revision 31)
+++ java/net/l2jalpha/gameserver/network/clientpackets/RequestSocialAction.java (working copy)
@@ -49,6 +49,8 @@
  L2PcInstance activeChar = getClient().getActiveChar();
  if (activeChar == null)
      return;
+
+ activeChar.setLastActionMillis(System.currentTimeMillis());
 
         // check if its the actionId is allowed
         if (_actionId < 2 || _actionId > 13)
Index: java/net/l2jalpha/gameserver/network/clientpackets/TradeRequest.java
===================================================================
--- java/net/l2jalpha/gameserver/network/clientpackets/TradeRequest.java (revision 31)
+++ java/net/l2jalpha/gameserver/network/clientpackets/TradeRequest.java (working copy)
@@ -52,6 +52,8 @@
 
         if (player == null)
          return;
+       
+        player.setLastActionMillis(System.currentTimeMillis());
 
         if (!player.getAccessLevel().allowTransaction())
         {
Index: java/net/l2jalpha/gameserver/network/clientpackets/UseItem.java
===================================================================
--- java/net/l2jalpha/gameserver/network/clientpackets/UseItem.java (revision 31)
+++ java/net/l2jalpha/gameserver/network/clientpackets/UseItem.java (working copy)
@@ -63,6 +63,8 @@
 
  if (activeChar == null)
             return;
+
+ activeChar.setLastActionMillis(System.currentTimeMillis());
 
  // Flood protect UseItem
  if (!getClient().getFloodProtectors().getUseItem().tryPerformAction("use item"))