### Eclipse Workspace Patch 1.0
#P L2jFrozen_GameServer
Index: head-src/com/l2jfrozen/Config.java
===================================================================
--- head-src/com/l2jfrozen/Config.java (revision 1004)
+++ head-src/com/l2jfrozen/Config.java (working copy)
@@ -3418,6 +3418,9 @@
public static int ALLOWED_BOXES;
public static boolean ALLOW_DUALBOX_OLY;
public static boolean ALLOW_DUALBOX_EVENT;
+
+ public static int LEAVEBURSTER_TIME_KICK;
+
//============================================================
public static void loadPOtherConfig()
{
@@ -3453,6 +3456,8 @@
BOT_PROTECTOR_FIRST_CHECK = Integer.parseInt(POtherSetting.getProperty("BotProtectFirstCheck", "15"));
BOT_PROTECTOR_NEXT_CHECK = Integer.parseInt(POtherSetting.getProperty("BotProtectNextCheck", "60"));
BOT_PROTECTOR_WAIT_ANSVER = Integer.parseInt(POtherSetting.getProperty("BotProtectAnsver", "180"));
+
+ LEAVEBURSTER_TIME_KICK = Integer.parseInt(POtherSetting.getProperty("LeaveBursterTimeKick", "10"));
}
catch(Exception e)
{
Index: head-src/com/l2jfrozen/gameserver/network/clientpackets/RequestRestartPoint.java
===================================================================
--- head-src/com/l2jfrozen/gameserver/network/clientpackets/RequestRestartPoint.java (revision 1004)
+++ head-src/com/l2jfrozen/gameserver/network/clientpackets/RequestRestartPoint.java (working copy)
@@ -230,6 +230,8 @@
if (activeChar == null)
return;
+ activeChar.setLastActionMillis(System.currentTimeMillis());
+
if (activeChar.isFakeDeath())
{
activeChar.stopFakeDeath(null);
Index: head-src/com/l2jfrozen/gameserver/model/entity/LeaveBuster.java
===================================================================
--- head-src/com/l2jfrozen/gameserver/model/entity/LeaveBuster.java (revision 0)
+++ head-src/com/l2jfrozen/gameserver/model/entity/LeaveBuster.java (working copy)
@@ -0,0 +1,66 @@
+/* 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 com.l2jfrozen.gameserver.model.entity;
+
+import java.util.concurrent.ScheduledFuture;
+import java.util.logging.Logger;
+
+import javolution.util.FastMap;
+
+import com.l2jfrozen.Config;
+import com.l2jfrozen.gameserver.model.actor.instance.L2PcInstance;
+
+/**
+ * @author Anarchy
+ */
+public class LeaveBuster implements Runnable
+{
+ public static FastMap<L2PcInstance, ScheduledFuture<?>> _players = new FastMap<L2PcInstance, ScheduledFuture<?>>();
+
+ 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() == 0)
+ {
+ if (_p != null)
+ {
+ _players.get(_p).cancel(true);
+ _players.remove(_p);
+ }
+
+ return;
+ }
+
+ if ((System.currentTimeMillis() - _p.getLastActionMillis()) / 1000 / 60 >= Config.LEAVEBURSTER_TIME_KICK)
+ {
+ _log.info("Leave Buster: " + _p.getName() + " was kicked out of game.");
+ _players.get(_p).cancel(true);
+ _players.remove(_p);
+ _p.logout();
+ }
+ }
+}
Index: head-src/com/l2jfrozen/gameserver/network/clientpackets/Say2.java
===================================================================
--- head-src/com/l2jfrozen/gameserver/network/clientpackets/Say2.java (revision 1004)
+++ head-src/com/l2jfrozen/gameserver/network/clientpackets/Say2.java (working copy)
@@ -170,6 +170,8 @@
_type = PETITION_GM;
}
+ activeChar.setLastActionMillis(System.currentTimeMillis());
+
if(_text.length() > Config.MAX_CHAT_LENGTH)
{
if(Config.DEBUG)
Index: head-src/com/l2jfrozen/gameserver/network/clientpackets/RequestRestart.java
===================================================================
--- head-src/com/l2jfrozen/gameserver/network/clientpackets/RequestRestart.java (revision 1004)
+++ head-src/com/l2jfrozen/gameserver/network/clientpackets/RequestRestart.java (working copy)
@@ -27,6 +27,7 @@
import com.l2jfrozen.gameserver.model.Inventory;
import com.l2jfrozen.gameserver.model.L2Party;
import com.l2jfrozen.gameserver.model.actor.instance.L2PcInstance;
+import com.l2jfrozen.gameserver.model.entity.LeaveBuster;
import com.l2jfrozen.gameserver.model.entity.olympiad.Olympiad;
import com.l2jfrozen.gameserver.model.entity.sevensigns.SevenSignsFestival;
import com.l2jfrozen.gameserver.network.L2GameClient;
@@ -60,6 +61,8 @@
return;
}
+ player.setLastActionMillis(System.currentTimeMillis());
+
// Check if player is enchanting
if(player.getActiveEnchantItem() != null)
{
@@ -165,6 +168,9 @@
{
player.removeSkill(SkillTable.getInstance().getInfo(4289, 1));
}
+
+ LeaveBuster._players.get(player).cancel(true);
+ LeaveBuster._players.remove(player);
if(player.getInventory().getPaperdollItem(Inventory.PAPERDOLL_RHAND)!=null
&& player.getInventory().getPaperdollItem(Inventory.PAPERDOLL_RHAND).isAugmented()){
Index: head-src/com/l2jfrozen/gameserver/network/clientpackets/TradeRequest.java
===================================================================
--- head-src/com/l2jfrozen/gameserver/network/clientpackets/TradeRequest.java (revision 1004)
+++ head-src/com/l2jfrozen/gameserver/network/clientpackets/TradeRequest.java (working copy)
@@ -49,7 +49,9 @@
if (player == null)
return;
- if (!player.getAccessLevel().allowTransaction())
+ player.setLastActionMillis(System.currentTimeMillis());
+
+ if (!player.getAccessLevel().allowTransaction())
{
player.sendMessage("Transactions are disable for your Access Level");
player.sendPacket(ActionFailed.STATIC_PACKET);
Index: head-src/com/l2jfrozen/gameserver/network/clientpackets/MoveBackwardToLocation.java
===================================================================
--- head-src/com/l2jfrozen/gameserver/network/clientpackets/MoveBackwardToLocation.java (revision 1004)
+++ head-src/com/l2jfrozen/gameserver/network/clientpackets/MoveBackwardToLocation.java (working copy)
@@ -76,6 +76,8 @@
if (activeChar == null)
return;
+ activeChar.setLastActionMillis(System.currentTimeMillis());
+
// Move flood protection
if (!getClient().getFloodProtectors().getMoveAction().tryPerformAction("MoveBackwardToLocation"))
{
Index: head-src/com/l2jfrozen/gameserver/network/clientpackets/Logout.java
===================================================================
--- head-src/com/l2jfrozen/gameserver/network/clientpackets/Logout.java (revision 1004)
+++ head-src/com/l2jfrozen/gameserver/network/clientpackets/Logout.java (working copy)
@@ -22,6 +22,7 @@
import com.l2jfrozen.gameserver.model.L2Character;
import com.l2jfrozen.gameserver.model.L2Party;
import com.l2jfrozen.gameserver.model.actor.instance.L2PcInstance;
+import com.l2jfrozen.gameserver.model.entity.LeaveBuster;
import com.l2jfrozen.gameserver.model.entity.olympiad.Olympiad;
import com.l2jfrozen.gameserver.model.entity.sevensigns.SevenSignsFestival;
import com.l2jfrozen.gameserver.network.SystemMessageId;
@@ -47,6 +48,8 @@
if (player == null)
return;
+ player.setLastActionMillis(System.currentTimeMillis());
+
if (player.isInFunEvent() && !player.isGM())
{
player.sendMessage("You cannot Logout while in registered in an Event.");
@@ -118,6 +121,9 @@
if (player.isFlying())
player.removeSkill(SkillTable.getInstance().getInfo(4289, 1));
+ LeaveBuster._players.get(player).cancel(true);
+ LeaveBuster._players.remove(player);
+
if (Config.OFFLINE_LOGOUT && player.isSitting())
{
if ((player.isInStoreMode() && Config.OFFLINE_TRADE_ENABLE) || (player.isInCraftMode() && Config.OFFLINE_CRAFT_ENABLE))
Index: config/protected/other.properties
===================================================================
--- config/protected/other.properties (revision 1004)
+++ config/protected/other.properties (working copy)
@@ -60,4 +60,7 @@
# The time interval, which will take place from the previous question until the next (minutes).
BotProtectNextCheck = 60
# Amount of time allowed for giving the answer (seconds).
-BotProtectAnsver = 200
\ No newline at end of file
+BotProtectAnsver = 200
+
+# Time to kick afkers. Default = 0 (Disabled)
+LeaveBursterTimeKick = 10
\ No newline at end of file
Index: head-src/com/l2jfrozen/gameserver/network/clientpackets/UseItem.java
===================================================================
--- head-src/com/l2jfrozen/gameserver/network/clientpackets/UseItem.java (revision 1004)
+++ head-src/com/l2jfrozen/gameserver/network/clientpackets/UseItem.java (working copy)
@@ -64,6 +64,8 @@
if (activeChar == null)
return;
+ activeChar.setLastActionMillis(System.currentTimeMillis());
+
L2ItemInstance item = activeChar.getInventory().getItemByObjectId(_objectId);
if (item == null)
Index: head-src/com/l2jfrozen/gameserver/network/clientpackets/EnterWorld.java
===================================================================
--- head-src/com/l2jfrozen/gameserver/network/clientpackets/EnterWorld.java (revision 1004)
+++ head-src/com/l2jfrozen/gameserver/network/clientpackets/EnterWorld.java (working copy)
@@ -56,6 +56,7 @@
import com.l2jfrozen.gameserver.model.entity.Announcements;
import com.l2jfrozen.gameserver.model.entity.ClanHall;
import com.l2jfrozen.gameserver.model.entity.Hero;
+import com.l2jfrozen.gameserver.model.entity.LeaveBuster;
import com.l2jfrozen.gameserver.model.entity.Wedding;
import com.l2jfrozen.gameserver.model.entity.event.CTF;
import com.l2jfrozen.gameserver.model.entity.event.DM;
@@ -133,6 +134,9 @@
// Set lock at login
activeChar.setLocked(true);
+ activeChar.setLastActionMillis(System.currentTimeMillis());
+ LeaveBuster._players.put(activeChar, ThreadPoolManager.getInstance().scheduleGeneralAtFixedRate(new LeaveBuster(activeChar), 5000, 5000));
+
// Register in flood protector
//FloodProtector.getInstance().registerNewPlayer(activeChar.getObjectId());
Index: head-src/com/l2jfrozen/gameserver/model/actor/instance/L2PcInstance.java
===================================================================
--- head-src/com/l2jfrozen/gameserver/model/actor/instance/L2PcInstance.java (revision 1004)
+++ head-src/com/l2jfrozen/gameserver/model/actor/instance/L2PcInstance.java (working copy)
@@ -455,6 +455,8 @@
/** The active_boxes_characters. */
public List<String> active_boxes_characters = new ArrayList<String>();
+ private long _lastAction = 0;
+
/** UPDATE characters SET level=?,maxHp=?,curHp=?,maxCp=?,curCp=?,maxMp=?,curMp=?,str=?,con=?,dex=?,_int=?,men=?,wit=? ,face=?,hairStyle=?,hairColor =?,heading=?,x=?,y=?,z=?,exp=?,expBeforeDeath=?,sp=?,karma=?,pvpkills=?,pkkills=?,rec_have =?,rec_left=?,clanid=?,maxload =?,race=?,classid=?,deletetime=?,title=?,accesslevel=?,online=?,isin7sdungeon=?,clan_privs =?,wantspeace=?,base_class =?,onlinetime=?,in_jail=?,jail_timer=?,newbie=?,nobless=?,power_grade=?,subpledge=?,last_recom_date =?,lvl_joined_academy =?,apprentice=?,sponsor=?,varka_ketra_ally=?,clan_join_expiry_time=?,clan_create_expiry_time=? ,char_name=?,death_penalty_level=?,good=?,evil=?,gve_kills=? WHERE obj_id=?. */
private static final String UPDATE_CHARACTER = "UPDATE characters SET level=?,maxHp=?,curHp=?,maxCp=?,curCp=?,maxMp=?,curMp=?,str=?,con=?,dex=?,_int=?,men=?,wit=?,face=?,hairStyle=?,hairColor=?,heading=?,x=?,y=?,z=?,exp=?,expBeforeDeath=?,sp=?,karma=?,pvpkills=?,pkkills=?,rec_have=?,rec_left=?,clanid=?,maxload=?,race=?,classid=?,deletetime=?,title=?,accesslevel=?,online=?,isin7sdungeon=?,clan_privs=?,wantspeace=?,base_class=?,onlinetime=?,punish_level=?,punish_timer=?,newbie=?,nobless=?,power_grade=?,subpledge=?,last_recom_date=?,lvl_joined_academy=?,apprentice=?,sponsor=?,varka_ketra_ally=?,clan_join_expiry_time=?,clan_create_expiry_time=?,char_name=?,death_penalty_level=?,pc_point=?,name_color=?,title_color=?,aio=?,aio_end=? WHERE obj_id=?";
@@ -19299,6 +19301,16 @@
}
*/
}
+
+ public long getLastActionMillis()
+ {
+ return _lastAction;
+ }
+
+ public void setLastActionMillis(long val)
+ {
+ _lastAction = val;
+ }
/**
* Aio System Start.
@@ -20376,5 +20388,4 @@
_currentPetSkill = new SkillDat(currentSkill, ctrlPressed, shiftPressed);
}
-
}
\ No newline at end of file
Index: head-src/com/l2jfrozen/gameserver/network/clientpackets/RequestSocialAction.java
===================================================================
--- head-src/com/l2jfrozen/gameserver/network/clientpackets/RequestSocialAction.java (revision 1004)
+++ head-src/com/l2jfrozen/gameserver/network/clientpackets/RequestSocialAction.java (working copy)
@@ -45,6 +45,8 @@
L2PcInstance activeChar = getClient().getActiveChar();
if(activeChar == null)
return;
+
+ activeChar.setLastActionMillis(System.currentTimeMillis());
// You cannot do anything else while fishing
if(activeChar.isFishing())
Créditos: Anarchy