|
|
@ -23,7 +23,6 @@ import engine.net.client.Protocol; |
|
|
|
import engine.net.client.msg.ClientNetMsg; |
|
|
|
import engine.net.client.msg.ClientNetMsg; |
|
|
|
import engine.net.client.msg.login.*; |
|
|
|
import engine.net.client.msg.login.*; |
|
|
|
import engine.objects.Account; |
|
|
|
import engine.objects.Account; |
|
|
|
import engine.objects.GuildStatusController; |
|
|
|
|
|
|
|
import engine.objects.PlayerCharacter; |
|
|
|
import engine.objects.PlayerCharacter; |
|
|
|
import engine.server.MBServerStatics; |
|
|
|
import engine.server.MBServerStatics; |
|
|
|
import engine.session.CSSession; |
|
|
|
import engine.session.CSSession; |
|
|
@ -72,9 +71,6 @@ public class LoginServerMsgHandler implements NetMsgHandler { |
|
|
|
try { |
|
|
|
try { |
|
|
|
|
|
|
|
|
|
|
|
switch (protocolMsg) { |
|
|
|
switch (protocolMsg) { |
|
|
|
case REMOVECHAR: |
|
|
|
|
|
|
|
this.DeleteCharacter((DeleteCharacterMsg) clientNetMsg, origin); |
|
|
|
|
|
|
|
break; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
case SELECTCHAR: |
|
|
|
case SELECTCHAR: |
|
|
|
this.RequestGameServer((GameServerIPRequestMsg) clientNetMsg, origin); |
|
|
|
this.RequestGameServer((GameServerIPRequestMsg) clientNetMsg, origin); |
|
|
@ -133,61 +129,6 @@ public class LoginServerMsgHandler implements NetMsgHandler { |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
private void DeleteCharacter(DeleteCharacterMsg msg, ClientConnection origin) { |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
try { |
|
|
|
|
|
|
|
PlayerCharacter playerCharacter; |
|
|
|
|
|
|
|
Session session; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
session = SessionManager.getSession(origin); |
|
|
|
|
|
|
|
playerCharacter = PlayerCharacter.getPlayerCharacter(msg.getCharacterUUID()); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (playerCharacter == null) { |
|
|
|
|
|
|
|
Logger.error("Delete Error: PlayerID=" + msg.getCharacterUUID() + " not found."); |
|
|
|
|
|
|
|
this.sendCharacterSelectScreen(session); |
|
|
|
|
|
|
|
return; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (session.getAccount() == null) { |
|
|
|
|
|
|
|
Logger.error("Delete Error: Account not found."); |
|
|
|
|
|
|
|
this.sendCharacterSelectScreen(session); |
|
|
|
|
|
|
|
return; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (playerCharacter.getAccount().equals(session.getAccount()) == false) { |
|
|
|
|
|
|
|
Logger.error("Delete Error: Character " + playerCharacter.getName() + " does not belong to account " + origin.getAccount().getUname()); |
|
|
|
|
|
|
|
this.sendCharacterSelectScreen(session); |
|
|
|
|
|
|
|
return; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//Can't delete as Guild Leader
|
|
|
|
|
|
|
|
//TODO either find an error or just gdisband.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (GuildStatusController.isGuildLeader(playerCharacter.getGuildStatus())) { |
|
|
|
|
|
|
|
this.KickToLogin(MBServerStatics.LOGINERROR_UNABLE_TO_LOGIN, "Cannot delete a guild leader.", origin); |
|
|
|
|
|
|
|
return; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// check for active banes
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (LoginServer.getActiveBaneQuery(playerCharacter)) { |
|
|
|
|
|
|
|
Logger.info("Character " + playerCharacter.getName() + " has unresolved bane"); |
|
|
|
|
|
|
|
this.KickToLogin(MBServerStatics.LOGINERROR_UNABLE_TO_LOGIN, "Player has unresolved bane.", origin); |
|
|
|
|
|
|
|
return; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
playerCharacter.getAccount().characterMap.remove(playerCharacter.getObjectUUID()); |
|
|
|
|
|
|
|
playerCharacter.deactivateCharacter(); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// TODO Delete Equipment
|
|
|
|
|
|
|
|
// Resend Character Select Screen.
|
|
|
|
|
|
|
|
this.sendCharacterSelectScreen(session); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
} catch (Exception e) { |
|
|
|
|
|
|
|
Logger.error(e); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
private void RequestGameServer(GameServerIPRequestMsg gameServerIPRequestMessage, ClientConnection conn) { |
|
|
|
private void RequestGameServer(GameServerIPRequestMsg gameServerIPRequestMessage, ClientConnection conn) { |
|
|
|
|
|
|
|
|
|
|
|
Session session; |
|
|
|
Session session; |
|
|
|