temporary fix for #457 new system messages: Index: C:/eclipse-31m7/workspace/L2_GameServer/java/net/sf/l2j/gameserver/serverpackets/SystemMessage.java =================================================================== --- C:/eclipse-31m7/workspace/L2_GameServer/java/net/sf/l2j/gameserver/serverpackets/SystemMessage.java (revision 831) +++ C:/eclipse-31m7/workspace/L2_GameServer/java/net/sf/l2j/gameserver/serverpackets/SystemMessage.java (working copy) @@ -270,6 +270,9 @@ public static final int SELECT_ITEM_TO_ENCHANT = 303; public static final int INAPPROPRIATE_ENCHANT_CONDITION = 355; + //combta-related + public static final int CANNOT_LOGOUT_IN_COMBAT = 101; + public static final int CANNOT_RESTART_IN_COMBAT = 102; /** * @param _characters */ Logout handler: Index: C:/eclipse-31m7/workspace/L2_GameServer/java/net/sf/l2j/gameserver/clientpackets/Logout.java =================================================================== --- C:/eclipse-31m7/workspace/L2_GameServer/java/net/sf/l2j/gameserver/clientpackets/Logout.java (revision 831) +++ C:/eclipse-31m7/workspace/L2_GameServer/java/net/sf/l2j/gameserver/clientpackets/Logout.java (working copy) @@ -24,6 +24,7 @@ import net.sf.l2j.gameserver.ClientThread; import net.sf.l2j.gameserver.model.L2PcInstance; import net.sf.l2j.gameserver.serverpackets.LeaveWorld; +import net.sf.l2j.gameserver.serverpackets.SystemMessage; /** * This class ... @@ -51,17 +52,26 @@ // normally the server would send serveral "delete object" before "leaveWorld" // we skip that for now - LeaveWorld ql = new LeaveWorld(); - sendPacket(ql); + L2PcInstance activeChar = getClient().getActiveChar(); + if(!activeChar.isAttackingNow()) + { + LeaveWorld ql = new LeaveWorld(); + sendPacket(ql); - // removing player from the world - L2PcInstance player = getClient().getActiveChar(); - if (player != null) - { - player.deleteMe(); - //save character - ClientThread.saveCharToDisk(player); - } + //removing player from the world + L2PcInstance player = getClient().getActiveChar(); + if (player != null) + { + player.deleteMe(); + //save character + ClientThread.saveCharToDisk(player); + } + } + else + { + SystemMessage s = new SystemMessage(101); + activeChar.sendPacket(s); + } } /* (non-Javadoc) restart handler: Index: C:/eclipse-31m7/workspace/L2_GameServer/java/net/sf/l2j/gameserver/clientpackets/RequestRestart.java =================================================================== --- C:/eclipse-31m7/workspace/L2_GameServer/java/net/sf/l2j/gameserver/clientpackets/RequestRestart.java (revision 831) +++ C:/eclipse-31m7/workspace/L2_GameServer/java/net/sf/l2j/gameserver/clientpackets/RequestRestart.java (working copy) @@ -25,6 +25,7 @@ import net.sf.l2j.gameserver.model.L2PcInstance; import net.sf.l2j.gameserver.serverpackets.CharSelectInfo; import net.sf.l2j.gameserver.serverpackets.RestartResponse; +import net.sf.l2j.gameserver.serverpackets.SystemMessage; /** * This class ... @@ -48,24 +49,35 @@ void runImpl() { - // removing player from the world - L2PcInstance player = getClient().getActiveChar(); + + L2PcInstance activeChar = getClient().getActiveChar(); + if(!activeChar.isAttackingNow()) + { + // removing player from the world + L2PcInstance player = getClient().getActiveChar(); - if (player != null) - { - player.deleteMe(); + if (player != null) + { + player.deleteMe(); - RestartResponse response = new RestartResponse(); - sendPacket(response); - //save character - ClientThread.saveCharToDisk(getClient().getActiveChar()); - } + RestartResponse response = new RestartResponse(); + sendPacket(response); + //save character + ClientThread.saveCharToDisk(getClient().getActiveChar()); + } - getClient().setActiveChar(null); - // send char list - CharSelectInfo cl = new CharSelectInfo(getClient().getLoginName(), getClient().getSessionId()); - sendPacket(cl); - getClient().setCharSelection(cl.getCharInfo()); + getClient().setActiveChar(null); + // send char list + CharSelectInfo cl = new CharSelectInfo(getClient().getLoginName(), getClient().getSessionId()); + sendPacket(cl); + getClient().setCharSelection(cl.getCharInfo()); + } + else + { + SystemMessage s = new SystemMessage(102); + activeChar.sendPacket(s); + } + } /* (non-Javadoc) maybe we need to send ActionFailed packet in restart handler?