diff --git a/src/services/player/PlayerManager.java b/src/services/player/PlayerManager.java index b37aef6e2..166b599f1 100644 --- a/src/services/player/PlayerManager.java +++ b/src/services/player/PlayerManager.java @@ -1,5 +1,9 @@ package services.player; +import java.sql.PreparedStatement; +import java.sql.ResultSet; +import java.sql.SQLException; + import network.packets.Packet; import network.packets.swg.login.ClientIdMsg; import intents.GalacticPacketIntent; @@ -70,6 +74,21 @@ public class PlayerManager extends Manager { } } + public boolean doesPlayerNameExisit(String characterName) { + try { + PreparedStatement statement = getLocalDatabase().prepareStatement("SELECT * FROM characters WHERE name = ?"); + statement.setString(1, characterName); + + ResultSet results = statement.executeQuery(); + return results.next(); + + } catch (SQLException e) { + e.printStackTrace(); + } + + return false; + } + private void transitionLoginToZone(final long networkId, final int galaxyId, ClientIdMsg clientId) { final byte [] nToken = clientId.getSessionToken(); players.traverse(new Traverser() { diff --git a/src/services/player/ZoneService.java b/src/services/player/ZoneService.java index 2d5e2cf3a..4679647af 100644 --- a/src/services/player/ZoneService.java +++ b/src/services/player/ZoneService.java @@ -76,7 +76,7 @@ public class ZoneService extends Service { if (p instanceof RandomNameRequest) handleRandomNameRequest(player, (RandomNameRequest) p); if (p instanceof ClientVerifyAndLockNameRequest) - handleApproveNameRequest(player, (ClientVerifyAndLockNameRequest) p); + handleApproveNameRequest(intent.getPlayerManager(), player, (ClientVerifyAndLockNameRequest) p); if (p instanceof ClientCreateCharacter) handleCharCreation(intent.getObjectManager(), player, (ClientCreateCharacter) p); if (p instanceof GalaxyLoopTimesRequest) @@ -105,9 +105,12 @@ public class ZoneService extends Service { sendPacket(player.getNetworkId(), response); } - private void handleApproveNameRequest(Player player, ClientVerifyAndLockNameRequest request) { - // TODO: Add error checking here... can't approve everybody's name - sendPacket(player.getNetworkId(), new ClientVerifyAndLockNameResponse(request.getName(), ErrorMessage.NAME_APPROVED)); + private void handleApproveNameRequest(PlayerManager playerMgr, Player player, ClientVerifyAndLockNameRequest request) { + // TODO: Lore reserved name checks + if (!playerMgr.doesPlayerNameExisit(request.getName())) + sendPacket(player.getNetworkId(), new ClientVerifyAndLockNameResponse(request.getName(), ErrorMessage.NAME_APPROVED)); + else + sendPacket(player.getNetworkId(), new ClientVerifyAndLockNameResponse(request.getName(), ErrorMessage.NAME_DECLINED_IN_USE)); } private void handleCharCreation(ObjectManager objManager, Player player, ClientCreateCharacter create) {