mirror of
https://github.com/ProjectSWGCore/NGECore2.git
synced 2026-10-13 03:13:26 -04:00
Delete char now logs it out & removes it from game
- Incase they are logged onto the character with another client when it's deleted. - Ensures removal from the quadtree.
This commit is contained in:
@@ -55,8 +55,10 @@ import protocol.swg.LoginEnumCluster;
|
||||
import protocol.swg.ServerNowEpochTime;
|
||||
import protocol.swg.StationIdHasJediSlot;
|
||||
import resources.common.*;
|
||||
import resources.datatables.PlayerFlags;
|
||||
|
||||
import resources.objects.creature.CreatureObject;
|
||||
import resources.objects.player.PlayerObject;
|
||||
|
||||
@SuppressWarnings("unused")
|
||||
|
||||
@@ -181,21 +183,40 @@ public class LoginService implements INetworkDispatch{
|
||||
packet.deserialize(data);
|
||||
Client client = core.getClient(session);
|
||||
|
||||
PreparedStatement preparedStatement;
|
||||
|
||||
preparedStatement = databaseConnection1.preparedStatement("DELETE FROM characters WHERE \"id\"=? AND \"galaxyId\"=? AND \"accountId\"=?");
|
||||
preparedStatement.setLong(1, packet.getcharId());
|
||||
preparedStatement.setInt(2, packet.getgalaxyId());
|
||||
preparedStatement.setInt(3, (int) client.getAccountId());
|
||||
boolean resultSet = preparedStatement.execute();
|
||||
//TODO: send deletecharacter failed
|
||||
if(!resultSet) {
|
||||
core.getCreatureODB().delete(new Long(packet.getcharId()), Long.class, CreatureObject.class);
|
||||
DeleteCharacterReplyMessage reply = new DeleteCharacterReplyMessage(0);
|
||||
session.write(reply.serialize());
|
||||
}
|
||||
preparedStatement.close();
|
||||
|
||||
PreparedStatement preparedStatement;
|
||||
|
||||
preparedStatement = databaseConnection1.preparedStatement("DELETE FROM characters WHERE \"id\"=? AND \"galaxyId\"=? AND \"accountId\"=?");
|
||||
preparedStatement.setLong(1, packet.getcharId());
|
||||
preparedStatement.setInt(2, packet.getgalaxyId());
|
||||
preparedStatement.setInt(3, (int) client.getAccountId());
|
||||
boolean resultSet = preparedStatement.execute();
|
||||
|
||||
//TODO: send deletecharacter failed
|
||||
if(!resultSet) {
|
||||
CreatureObject object = core.objectService.getObject(packet.getcharId());
|
||||
|
||||
if (object != null) {
|
||||
PlayerObject player = object.getSlottedObject("ghost");
|
||||
|
||||
|
||||
if (player != null && !player.isSet(PlayerFlags.LD) && object.getClient()) {
|
||||
core.connectionService.disconnect(object.getClient().getSession());
|
||||
}
|
||||
|
||||
if (object.isInQuadtree()) {
|
||||
core.simulationService.remove(object, object.getPosition().x, object.getPosition().z, true);
|
||||
}
|
||||
|
||||
destroyObject(object);
|
||||
}
|
||||
|
||||
core.getCreatureODB().delete(new Long(packet.getcharId()), Long.class, CreatureObject.class);
|
||||
DeleteCharacterReplyMessage reply = new DeleteCharacterReplyMessage(0);
|
||||
session.write(reply.serialize());
|
||||
}
|
||||
|
||||
preparedStatement.close();
|
||||
|
||||
}
|
||||
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user