|
@@ -26,6 +26,11 @@ import java.security.KeyFactory;
|
|
|
import java.security.interfaces.RSAPublicKey;
|
|
|
import java.security.spec.RSAKeyGenParameterSpec;
|
|
|
import java.security.spec.RSAPublicKeySpec;
|
|
|
+import java.sql.Connection;
|
|
|
+import java.sql.PreparedStatement;
|
|
|
+import java.sql.ResultSet;
|
|
|
+import java.sql.SQLException;
|
|
|
+import java.util.ArrayList;
|
|
|
import java.util.Collection;
|
|
|
import java.util.List;
|
|
|
import java.util.Map;
|
|
@@ -37,6 +42,7 @@ import javolution.util.FastList;
|
|
|
import javolution.util.FastMap;
|
|
|
|
|
|
import com.l2jserver.Config;
|
|
|
+import com.l2jserver.L2DatabaseFactory;
|
|
|
import com.l2jserver.gameserver.model.L2World;
|
|
|
import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
|
|
|
import com.l2jserver.gameserver.network.L2GameClient;
|
|
@@ -49,12 +55,14 @@ import com.l2jserver.gameserver.network.gameserverpackets.PlayerAuthRequest;
|
|
|
import com.l2jserver.gameserver.network.gameserverpackets.PlayerInGame;
|
|
|
import com.l2jserver.gameserver.network.gameserverpackets.PlayerLogout;
|
|
|
import com.l2jserver.gameserver.network.gameserverpackets.PlayerTracert;
|
|
|
+import com.l2jserver.gameserver.network.gameserverpackets.ReplyCharacters;
|
|
|
import com.l2jserver.gameserver.network.gameserverpackets.ServerStatus;
|
|
|
import com.l2jserver.gameserver.network.loginserverpackets.AuthResponse;
|
|
|
import com.l2jserver.gameserver.network.loginserverpackets.InitLS;
|
|
|
import com.l2jserver.gameserver.network.loginserverpackets.KickPlayer;
|
|
|
import com.l2jserver.gameserver.network.loginserverpackets.LoginServerFail;
|
|
|
import com.l2jserver.gameserver.network.loginserverpackets.PlayerAuthResponse;
|
|
|
+import com.l2jserver.gameserver.network.loginserverpackets.RequestCharacters;
|
|
|
import com.l2jserver.gameserver.network.serverpackets.CharSelectionInfo;
|
|
|
import com.l2jserver.gameserver.network.serverpackets.LoginFail;
|
|
|
import com.l2jserver.gameserver.network.serverpackets.SystemMessage;
|
|
@@ -68,7 +76,7 @@ public class LoginServerThread extends Thread
|
|
|
protected static final Logger _logAccounting = Logger.getLogger("accounting");
|
|
|
|
|
|
/** {@see com.l2jserver.loginserver.LoginServer#PROTOCOL_REV } */
|
|
|
- private static final int REVISION = 0x0104;
|
|
|
+ private static final int REVISION = 0x0105;
|
|
|
private RSAPublicKey _publicKey;
|
|
|
private String _hostname;
|
|
|
private int _port;
|
|
@@ -334,6 +342,10 @@ public class LoginServerThread extends Thread
|
|
|
KickPlayer kp = new KickPlayer(decrypt);
|
|
|
doKickPlayer(kp.getAccount());
|
|
|
break;
|
|
|
+ case 0x05:
|
|
|
+ RequestCharacters rc = new RequestCharacters(decrypt);
|
|
|
+ getCharsOnServer(rc.getAccount());
|
|
|
+ break;
|
|
|
}
|
|
|
}
|
|
|
}
|
|
@@ -482,7 +494,48 @@ public class LoginServerThread extends Thread
|
|
|
}
|
|
|
}
|
|
|
|
|
|
-
|
|
|
+ private void getCharsOnServer(String account)
|
|
|
+ {
|
|
|
+ Connection con = null;
|
|
|
+ int chars = 0;
|
|
|
+ List<Long> charToDel = new ArrayList<Long>();
|
|
|
+ try
|
|
|
+ {
|
|
|
+ con = L2DatabaseFactory.getInstance().getConnection();
|
|
|
+ PreparedStatement statement = con.prepareStatement("SELECT deletetime FROM characters WHERE account_name=?");
|
|
|
+ statement.setString(1, account);
|
|
|
+ ResultSet rset = statement.executeQuery();
|
|
|
+ while (rset.next())
|
|
|
+ {
|
|
|
+ chars++;
|
|
|
+ long delTime = rset.getLong("deletetime");
|
|
|
+ if (delTime != 0)
|
|
|
+ charToDel.add(delTime);
|
|
|
+ }
|
|
|
+ rset.close();
|
|
|
+ statement.close();
|
|
|
+ }
|
|
|
+ catch (SQLException e)
|
|
|
+ {
|
|
|
+ _log.log(Level.WARNING, "Exception: getCharsOnServer: " + e.getMessage(), e);
|
|
|
+ }
|
|
|
+ finally
|
|
|
+ {
|
|
|
+ L2DatabaseFactory.close(con);
|
|
|
+ }
|
|
|
+
|
|
|
+ ReplyCharacters rec = new ReplyCharacters(account, chars, charToDel);
|
|
|
+ try
|
|
|
+ {
|
|
|
+ sendPacket(rec);
|
|
|
+ }
|
|
|
+ catch (IOException e)
|
|
|
+ {
|
|
|
+ if (Config.DEBUG)
|
|
|
+ _log.log(Level.WARNING, "", e);
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
|
|
|
/**
|
|
|
* @param sl
|