Index: E:/Unreal/Lineage2/server/l2jfree/trunk/L2JFree_GameServer/src/main/java/net/sf/l2j/gameserver/ClientThread.java =================================================================== --- E:/Unreal/Lineage2/server/l2jfree/trunk/L2JFree_GameServer/src/main/java/net/sf/l2j/gameserver/ClientThread.java (revision 1144) +++ E:/Unreal/Lineage2/server/l2jfree/trunk/L2JFree_GameServer/src/main/java/net/sf/l2j/gameserver/ClientThread.java (working copy) @@ -135,6 +135,12 @@ player.deleteMe(); player.store(); + + _activeChar = null; + + try { Thread.sleep(1000); } catch (Throwable t) {} + + _connection.close(); } } catch (Exception e1) @@ -146,7 +152,6 @@ LoginServerThread.getInstance().removeWaitingClient(this); if(getLoginName() != null) LoginServerThread.getInstance().sendLogout(getLoginName()); - _activeChar = null; } } Index: E:/Unreal/Lineage2/server/l2jfree/trunk/L2JFree_GameServer/src/main/java/net/sf/l2j/gameserver/SelectorThread.java =================================================================== --- E:/Unreal/Lineage2/server/l2jfree/trunk/L2JFree_GameServer/src/main/java/net/sf/l2j/gameserver/SelectorThread.java (revision 1144) +++ E:/Unreal/Lineage2/server/l2jfree/trunk/L2JFree_GameServer/src/main/java/net/sf/l2j/gameserver/SelectorThread.java (working copy) @@ -369,8 +369,7 @@ { if(_log.isDebugEnabled()) _log.debug("Error on network write, player "+con.getClient().getActiveChar().getName()+" disconnected?"); - con.getClient().getActiveChar().deleteMe(); - con.getClient().getActiveChar().store(); + con.getClient().getActiveChar().closeNetConnection(); } catch(NullPointerException npe) { Index: E:/Unreal/Lineage2/server/l2jfree/trunk/L2JFree_GameServer/src/main/java/net/sf/l2j/gameserver/clientpackets/Logout.java =================================================================== --- E:/Unreal/Lineage2/server/l2jfree/trunk/L2JFree_GameServer/src/main/java/net/sf/l2j/gameserver/clientpackets/Logout.java (revision 1144) +++ E:/Unreal/Lineage2/server/l2jfree/trunk/L2JFree_GameServer/src/main/java/net/sf/l2j/gameserver/clientpackets/Logout.java (working copy) @@ -55,9 +55,7 @@ // normally the server would send serveral "delete object" before "leaveWorld" // we skip that for now sendPacket(new LeaveWorld()); - player.deleteMe(); - player.store(); - try { Thread.sleep(1000); } catch (Throwable t) {} + try { Thread.sleep(1000); } catch (Throwable t) {}; player.closeNetConnection(); } } Index: E:/Unreal/Lineage2/server/l2jfree/trunk/L2JFree_GameServer/src/main/java/net/sf/l2j/gameserver/clientpackets/EnterWorld.java =================================================================== --- E:/Unreal/Lineage2/server/l2jfree/trunk/L2JFree_GameServer/src/main/java/net/sf/l2j/gameserver/clientpackets/EnterWorld.java (revision 1144) +++ E:/Unreal/Lineage2/server/l2jfree/trunk/L2JFree_GameServer/src/main/java/net/sf/l2j/gameserver/clientpackets/EnterWorld.java (working copy) @@ -23,6 +23,8 @@ import java.nio.ByteBuffer; import net.sf.l2j.Config; +import net.sf.l2j.gameserver.util.IllegalPlayerAction; +import net.sf.l2j.gameserver.util.Util; import net.sf.l2j.gameserver.Announcements; import net.sf.l2j.gameserver.ClientThread; import net.sf.l2j.gameserver.LoginServerThread; @@ -118,16 +120,17 @@ } if(!getClient().getLoginName().equalsIgnoreCase(getClient().getAccountName(activeChar.getName()))) { - _log.fatal("Possible Hacker Account:"+getClient().getLoginName()+" tried to login with char: "+activeChar.getName() + "of Account:" + getClient().getAccountName(activeChar.getName())); - activeChar.deleteMe(); - activeChar.closeNetConnection(); + Util.handleIllegalPlayerAction(activeChar, "Possible Hacker Account:" + + getClient().getLoginName() + " tried to login with char: " + activeChar.getName() + + "of Account:" + getClient().getAccountName(activeChar.getName() + "."), + IllegalPlayerAction.PUNISH_KICK); return; } if(!getClient().isAuthed()) { - _log.fatal("Possible Hacker Account:"+getClient().getLoginName()+" is not authed"); - activeChar.deleteMe(); - activeChar.closeNetConnection(); + Util.handleIllegalPlayerAction(activeChar, "Possible Hacker Account:" + + getClient().getLoginName() + " is not authenticated.", + IllegalPlayerAction.PUNISH_KICK); return; } Index: E:/Unreal/Lineage2/server/l2jfree/trunk/L2JFree_GameServer/src/main/java/net/sf/l2j/gameserver/clientpackets/ClientBasePacket.java =================================================================== --- E:/Unreal/Lineage2/server/l2jfree/trunk/L2JFree_GameServer/src/main/java/net/sf/l2j/gameserver/clientpackets/ClientBasePacket.java (revision 1144) +++ E:/Unreal/Lineage2/server/l2jfree/trunk/L2JFree_GameServer/src/main/java/net/sf/l2j/gameserver/clientpackets/ClientBasePacket.java (working copy) @@ -29,6 +29,8 @@ import net.sf.l2j.gameserver.model.actor.instance.L2PcInstance; import net.sf.l2j.gameserver.serverpackets.ServerBasePacket; import net.sf.l2j.gameserver.serverpackets.LeaveWorld; +import net.sf.l2j.gameserver.util.IllegalPlayerAction; +import net.sf.l2j.gameserver.util.Util; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; @@ -50,17 +52,9 @@ { if(!client.checkFloodProtection()) { - try { - client.getActiveChar().sendMessage("Kicked for flooding"); - client.getActiveChar().sendPacket(new LeaveWorld()); - client.getActiveChar().deleteMe(); - client.getActiveChar().store(); - _log.warn("Warning : client " +client.getActiveChar().getName()+ " tryed to flood server !!!"); - } catch (Throwable t) {} - - try { - client.getActiveChar().closeNetConnection(); - } catch (Throwable t) {} + Util.handleIllegalPlayerAction(client.getActiveChar(), "Warning : client " + + client.getActiveChar().getName()+ " tryed to flood server !!!", + IllegalPlayerAction.PUNISH_KICK); } } // ends Index: E:/Unreal/Lineage2/server/l2jfree/trunk/L2JFree_GameServer/src/main/java/net/sf/l2j/gameserver/Shutdown.java =================================================================== --- E:/Unreal/Lineage2/server/l2jfree/trunk/L2JFree_GameServer/src/main/java/net/sf/l2j/gameserver/Shutdown.java (revision 1144) +++ E:/Unreal/Lineage2/server/l2jfree/trunk/L2JFree_GameServer/src/main/java/net/sf/l2j/gameserver/Shutdown.java (working copy) @@ -373,21 +373,10 @@ try { // inform client, that it has been logged out player.sendPacket(new LeaveWorld()); - player.deleteMe(); - player.store(); + try { Thread.sleep(1000); } catch (Throwable t2) {}; + player.closeNetConnection(); } catch (Throwable t) {} } - try { Thread.sleep(1000); } catch (Throwable t) {_log.info( "", t);} - - - for (L2PcInstance player : L2World.getInstance().getAllPlayers()) - { - try { - player.closeNetConnection(); - } catch (Throwable t) { - // just to make sure we try to kill the connection - } - } } } Index: E:/Unreal/Lineage2/server/l2jfree/trunk/L2JFree_GameServer/src/main/java/net/sf/l2j/gameserver/model/actor/instance/L2PetInstance.java =================================================================== --- E:/Unreal/Lineage2/server/l2jfree/trunk/L2JFree_GameServer/src/main/java/net/sf/l2j/gameserver/model/actor/instance/L2PetInstance.java (revision 1144) +++ E:/Unreal/Lineage2/server/l2jfree/trunk/L2JFree_GameServer/src/main/java/net/sf/l2j/gameserver/model/actor/instance/L2PetInstance.java (working copy) @@ -570,9 +570,6 @@ getOwner().removeReviving(); super.doRevive(); - - // stopDecay - DecayTaskManager.getInstance().cancelDecayTask(this); super.stopDecay(); startFeed(false); } Index: E:/Unreal/Lineage2/server/l2jfree/trunk/L2JFree_GameServer/src/main/java/net/sf/l2j/gameserver/model/L2World.java =================================================================== --- E:/Unreal/Lineage2/server/l2jfree/trunk/L2JFree_GameServer/src/main/java/net/sf/l2j/gameserver/model/L2World.java (revision 1144) +++ E:/Unreal/Lineage2/server/l2jfree/trunk/L2JFree_GameServer/src/main/java/net/sf/l2j/gameserver/model/L2World.java (working copy) @@ -30,6 +30,7 @@ import net.sf.l2j.gameserver.model.actor.instance.L2PcInstance; import net.sf.l2j.gameserver.model.actor.instance.L2PetInstance; import net.sf.l2j.gameserver.model.actor.instance.L2PlayableInstance; +import net.sf.l2j.gameserver.serverpackets.LeaveWorld; import net.sf.l2j.tools.geometry.Point3D; import net.sf.l2j.util.L2ObjectMap; @@ -346,9 +347,9 @@ if(tmp!= null) { _log.warn("Duplicate character!? Closing both characters ("+player.getName()+")"); - player.deleteMe(); + player.sendPacket(new LeaveWorld()); player.closeNetConnection(); - tmp.deleteMe(); + tmp.sendPacket(new LeaveWorld()); tmp.closeNetConnection(); return; } Index: E:/Unreal/Lineage2/server/l2jfree/trunk/L2JFree_GameServer/src/main/java/net/sf/l2j/gameserver/handler/admincommandhandlers/AdminMenu.java =================================================================== --- E:/Unreal/Lineage2/server/l2jfree/trunk/L2JFree_GameServer/src/main/java/net/sf/l2j/gameserver/handler/admincommandhandlers/AdminMenu.java (revision 1144) +++ E:/Unreal/Lineage2/server/l2jfree/trunk/L2JFree_GameServer/src/main/java/net/sf/l2j/gameserver/handler/admincommandhandlers/AdminMenu.java (working copy) @@ -32,6 +32,8 @@ import net.sf.l2j.gameserver.model.actor.instance.L2PcInstance; import net.sf.l2j.gameserver.serverpackets.LeaveWorld; import net.sf.l2j.gameserver.serverpackets.SystemMessage; +import net.sf.l2j.gameserver.util.IllegalPlayerAction; +import net.sf.l2j.gameserver.util.Util; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; @@ -126,10 +128,8 @@ SystemMessage sm = new SystemMessage(614); if (plyr != null) { - plyr.sendPacket(new LeaveWorld()); - plyr.deleteMe(); - plyr.store(); - plyr.closeNetConnection(); + plyr.sendPacket( new LeaveWorld()); + plyr.closeNetConnection(); sm.addString("You kicked " + plyr.getName() + " from the game."); } else Index: E:/Unreal/Lineage2/server/l2jfree/trunk/L2JFree_GameServer/src/main/java/net/sf/l2j/gameserver/handler/admincommandhandlers/AdminBan.java =================================================================== --- E:/Unreal/Lineage2/server/l2jfree/trunk/L2JFree_GameServer/src/main/java/net/sf/l2j/gameserver/handler/admincommandhandlers/AdminBan.java (revision 1144) +++ E:/Unreal/Lineage2/server/l2jfree/trunk/L2JFree_GameServer/src/main/java/net/sf/l2j/gameserver/handler/admincommandhandlers/AdminBan.java (working copy) @@ -82,8 +82,6 @@ account_name = plyr.getAccountName(); LoginServerThread.getInstance().sendAccessLevel(account_name, -100); plyr.sendPacket(new LeaveWorld()); - plyr.deleteMe(); - plyr.store(); plyr.closeNetConnection(); } } Index: E:/Unreal/Lineage2/server/l2jfree/trunk/L2JFree_GameServer/src/main/java/net/sf/l2j/gameserver/handler/admincommandhandlers/AdminKick.java =================================================================== --- E:/Unreal/Lineage2/server/l2jfree/trunk/L2JFree_GameServer/src/main/java/net/sf/l2j/gameserver/handler/admincommandhandlers/AdminKick.java (revision 1144) +++ E:/Unreal/Lineage2/server/l2jfree/trunk/L2JFree_GameServer/src/main/java/net/sf/l2j/gameserver/handler/admincommandhandlers/AdminKick.java (working copy) @@ -65,7 +65,7 @@ kickPlayer (player); } } - activeChar.sendMessage("Kicked "+counter+" players"); + activeChar.sendMessage("Kicked "+counter+" players."); } return true; } @@ -74,8 +74,6 @@ { try { player.sendPacket(new LeaveWorld()); - player.deleteMe(); - player.store(); player.closeNetConnection(); } catch (Throwable t) {} } Index: E:/Unreal/Lineage2/server/l2jfree/trunk/L2JFree_GameServer/src/main/java/net/sf/l2j/gameserver/util/IllegalPlayerAction.java =================================================================== --- E:/Unreal/Lineage2/server/l2jfree/trunk/L2JFree_GameServer/src/main/java/net/sf/l2j/gameserver/util/IllegalPlayerAction.java (revision 1144) +++ E:/Unreal/Lineage2/server/l2jfree/trunk/L2JFree_GameServer/src/main/java/net/sf/l2j/gameserver/util/IllegalPlayerAction.java (working copy) @@ -30,6 +30,7 @@ import net.sf.l2j.Config; import net.sf.l2j.gameserver.datatables.GmListTable; +import net.sf.l2j.gameserver.serverpackets.LeaveWorld; import net.sf.l2j.gameserver.model.actor.instance.L2PcInstance; import org.apache.commons.logging.Log; @@ -85,15 +86,13 @@ case PUNISH_BROADCAST: return; case PUNISH_KICK: - _actor.deleteMe(); - _actor.store(); + _actor.sendPacket(new LeaveWorld()); _actor.closeNetConnection(); break; case PUNISH_KICKBAN: + _actor.sendPacket(new LeaveWorld()); _actor.setAccessLevel(-100); _actor.setAccountAccesslevel(-100); - _actor.deleteMe(); - _actor.store(); _actor.closeNetConnection(); break; case PUNISH_JAIL: