Fix for offline traders after server restart.

This commit is contained in:
MobiusDev 2018-04-05 02:51:19 +00:00
parent abf364f1d0
commit b5a8fae87a
12 changed files with 102 additions and 18 deletions

View File

@ -557,12 +557,23 @@ public class LoginServerThread extends Thread
* Kick player for the given account.
* @param account the account
*/
public void doKickPlayer(String account)
private void doKickPlayer(String account)
{
final L2GameClient client = _accountsInGameServer.get(account);
if (client != null)
{
ACCOUNTING_LOGGER.info("Kicked by login, " + client);
if (client.isDetached())
{
if (client.getActiveChar() != null)
{
client.getActiveChar().deleteMe();
}
sendLogout(account);
}
else
{
ACCOUNTING_LOGGER.info("Kicked by login, " + client);
}
client.close(SystemMessage.getSystemMessage(SystemMessageId.YOU_ARE_LOGGED_IN_TO_TWO_PLACES_IF_YOU_SUSPECT_ACCOUNT_THEFT_WE_RECOMMEND_CHANGING_YOUR_PASSWORD_SCANNING_YOUR_COMPUTER_FOR_VIRUSES_AND_USING_AN_ANTI_VIRUS_SOFTWARE));
}
}

View File

@ -528,7 +528,10 @@ public final class L2GameClient extends ChannelInboundHandler<L2GameClient>
if (player != null)
{
// exploit prevention, should not happens in normal way
LOGGER.severe("Attempt of double login: " + player.getName() + "(" + objectId + ") " + getAccountName());
if (player.isOnlineInt() == 1)
{
LOGGER.severe("Attempt of double login: " + player.getName() + "(" + objectId + ") " + getAccountName());
}
Disconnection.of(player).defaultSequence(false);
return null;
}

View File

@ -557,12 +557,23 @@ public class LoginServerThread extends Thread
* Kick player for the given account.
* @param account the account
*/
public void doKickPlayer(String account)
private void doKickPlayer(String account)
{
final L2GameClient client = _accountsInGameServer.get(account);
if (client != null)
{
ACCOUNTING_LOGGER.info("Kicked by login, " + client);
if (client.isDetached())
{
if (client.getActiveChar() != null)
{
client.getActiveChar().deleteMe();
}
sendLogout(account);
}
else
{
ACCOUNTING_LOGGER.info("Kicked by login, " + client);
}
client.close(SystemMessage.getSystemMessage(SystemMessageId.YOU_ARE_LOGGED_IN_TO_TWO_PLACES_IF_YOU_SUSPECT_ACCOUNT_THEFT_WE_RECOMMEND_CHANGING_YOUR_PASSWORD_SCANNING_YOUR_COMPUTER_FOR_VIRUSES_AND_USING_AN_ANTI_VIRUS_SOFTWARE));
}
}

View File

@ -528,7 +528,10 @@ public final class L2GameClient extends ChannelInboundHandler<L2GameClient>
if (player != null)
{
// exploit prevention, should not happens in normal way
LOGGER.severe("Attempt of double login: " + player.getName() + "(" + objectId + ") " + getAccountName());
if (player.isOnlineInt() == 1)
{
LOGGER.severe("Attempt of double login: " + player.getName() + "(" + objectId + ") " + getAccountName());
}
Disconnection.of(player).defaultSequence(false);
return null;
}

View File

@ -560,12 +560,23 @@ public class LoginServerThread extends Thread
* Kick player for the given account.
* @param account the account
*/
public void doKickPlayer(String account)
private void doKickPlayer(String account)
{
final L2GameClient client = _accountsInGameServer.get(account);
if (client != null)
{
ACCOUNTING_LOGGER.info("Kicked by login, " + client);
if (client.isDetached())
{
if (client.getActiveChar() != null)
{
client.getActiveChar().deleteMe();
}
sendLogout(account);
}
else
{
ACCOUNTING_LOGGER.info("Kicked by login, " + client);
}
client.close(SystemMessage.getSystemMessage(SystemMessageId.YOU_ARE_LOGGED_IN_TO_TWO_PLACES_IF_YOU_SUSPECT_ACCOUNT_THEFT_WE_RECOMMEND_CHANGING_YOUR_PASSWORD_SCANNING_YOUR_COMPUTER_FOR_VIRUSES_AND_USING_AN_ANTI_VIRUS_SOFTWARE));
}
}

View File

@ -528,7 +528,10 @@ public final class L2GameClient extends ChannelInboundHandler<L2GameClient>
if (player != null)
{
// exploit prevention, should not happens in normal way
LOGGER.severe("Attempt of double login: " + player.getName() + "(" + objectId + ") " + getAccountName());
if (player.isOnlineInt() == 1)
{
LOGGER.severe("Attempt of double login: " + player.getName() + "(" + objectId + ") " + getAccountName());
}
Disconnection.of(player).defaultSequence(false);
return null;
}

View File

@ -560,12 +560,23 @@ public class LoginServerThread extends Thread
* Kick player for the given account.
* @param account the account
*/
public void doKickPlayer(String account)
private void doKickPlayer(String account)
{
final L2GameClient client = _accountsInGameServer.get(account);
if (client != null)
{
ACCOUNTING_LOGGER.info("Kicked by login, " + client);
if (client.isDetached())
{
if (client.getActiveChar() != null)
{
client.getActiveChar().deleteMe();
}
sendLogout(account);
}
else
{
ACCOUNTING_LOGGER.info("Kicked by login, " + client);
}
client.close(SystemMessage.getSystemMessage(SystemMessageId.YOU_ARE_LOGGED_IN_TO_TWO_PLACES_IF_YOU_SUSPECT_ACCOUNT_THEFT_WE_RECOMMEND_CHANGING_YOUR_PASSWORD_SCANNING_YOUR_COMPUTER_FOR_VIRUSES_AND_USING_AN_ANTI_VIRUS_SOFTWARE));
}
}

View File

@ -528,7 +528,10 @@ public final class L2GameClient extends ChannelInboundHandler<L2GameClient>
if (player != null)
{
// exploit prevention, should not happens in normal way
LOGGER.severe("Attempt of double login: " + player.getName() + "(" + objectId + ") " + getAccountName());
if (player.isOnlineInt() == 1)
{
LOGGER.severe("Attempt of double login: " + player.getName() + "(" + objectId + ") " + getAccountName());
}
Disconnection.of(player).defaultSequence(false);
return null;
}

View File

@ -560,12 +560,23 @@ public class LoginServerThread extends Thread
* Kick player for the given account.
* @param account the account
*/
public void doKickPlayer(String account)
private void doKickPlayer(String account)
{
final L2GameClient client = _accountsInGameServer.get(account);
if (client != null)
{
ACCOUNTING_LOGGER.info("Kicked by login, " + client);
if (client.isDetached())
{
if (client.getActiveChar() != null)
{
client.getActiveChar().deleteMe();
}
sendLogout(account);
}
else
{
ACCOUNTING_LOGGER.info("Kicked by login, " + client);
}
client.close(SystemMessage.getSystemMessage(SystemMessageId.YOU_ARE_LOGGED_IN_TO_TWO_PLACES_IF_YOU_SUSPECT_ACCOUNT_THEFT_WE_RECOMMEND_CHANGING_YOUR_PASSWORD_SCANNING_YOUR_COMPUTER_FOR_VIRUSES_AND_USING_AN_ANTI_VIRUS_SOFTWARE));
}
}

View File

@ -528,7 +528,10 @@ public final class L2GameClient extends ChannelInboundHandler<L2GameClient>
if (player != null)
{
// exploit prevention, should not happens in normal way
LOGGER.severe("Attempt of double login: " + player.getName() + "(" + objectId + ") " + getAccountName());
if (player.isOnlineInt() == 1)
{
LOGGER.severe("Attempt of double login: " + player.getName() + "(" + objectId + ") " + getAccountName());
}
Disconnection.of(player).defaultSequence(false);
return null;
}

View File

@ -560,12 +560,23 @@ public class LoginServerThread extends Thread
* Kick player for the given account.
* @param account the account
*/
public void doKickPlayer(String account)
private void doKickPlayer(String account)
{
final L2GameClient client = _accountsInGameServer.get(account);
if (client != null)
{
ACCOUNTING_LOGGER.info("Kicked by login, " + client);
if (client.isDetached())
{
if (client.getActiveChar() != null)
{
client.getActiveChar().deleteMe();
}
sendLogout(account);
}
else
{
ACCOUNTING_LOGGER.info("Kicked by login, " + client);
}
client.close(SystemMessage.getSystemMessage(SystemMessageId.YOU_ARE_LOGGED_IN_TO_TWO_PLACES_IF_YOU_SUSPECT_ACCOUNT_THEFT_WE_RECOMMEND_CHANGING_YOUR_PASSWORD_SCANNING_YOUR_COMPUTER_FOR_VIRUSES_AND_USING_AN_ANTI_VIRUS_SOFTWARE));
}
}

View File

@ -528,7 +528,10 @@ public final class L2GameClient extends ChannelInboundHandler<L2GameClient>
if (player != null)
{
// exploit prevention, should not happens in normal way
LOGGER.severe("Attempt of double login: " + player.getName() + "(" + objectId + ") " + getAccountName());
if (player.isOnlineInt() == 1)
{
LOGGER.severe("Attempt of double login: " + player.getName() + "(" + objectId + ") " + getAccountName());
}
Disconnection.of(player).defaultSequence(false);
return null;
}