Noticias:

No tienes permiso para ver los enlaces. Para poder verlos Registrate o Conectate.

Menú Principal

Sistema Anty-AFK

Iniciado por Swarlog, Jul 25, 2025, 11:58 PM

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"))