diff --git a/src/services/chat/ChatService.java b/src/services/chat/ChatService.java index 1fb011a8a..c48e5a8a3 100644 --- a/src/services/chat/ChatService.java +++ b/src/services/chat/ChatService.java @@ -6,6 +6,7 @@ import network.packets.Packet; import network.packets.swg.zone.ChatRequestRoomList; import network.packets.swg.zone.chat.ChatInstantMessageToCharacter; import network.packets.swg.zone.chat.ChatInstantMessageToClient; +import network.packets.swg.zone.chat.ChatOnSendInstantMessage; import network.packets.swg.zone.object_controller.ObjectController; import network.packets.swg.zone.object_controller.SpatialChat; import resources.control.Intent; @@ -74,9 +75,20 @@ public class ChatService extends Service { } private void handleInstantMessage(PlayerManager playerMgr, Player sender, ChatInstantMessageToCharacter request) { - String sReceiver = request.getCharacter(); - String sSender = sender.getCreatureObject().getName(); + String strReceiver = request.getCharacter(); + String strSender = sender.getCreatureObject().getName(); + Player receiver = playerMgr.getPlayerByCreatureFirstName(strReceiver); + + int errorCode = 0; // 0 = No issue, 4 = "strReceiver is not online" + if (receiver == null) + errorCode = 4; + ChatOnSendInstantMessage response = new ChatOnSendInstantMessage(errorCode, request.getSequence()); + sender.sendPacket(response); + if (errorCode == 4) + return; + + receiver.sendPacket(new ChatInstantMessageToClient(request.getGalaxy(), strSender, request.getMessage())); } } diff --git a/src/services/player/PlayerManager.java b/src/services/player/PlayerManager.java index e045e4e5d..e55c8e62e 100644 --- a/src/services/player/PlayerManager.java +++ b/src/services/player/PlayerManager.java @@ -66,7 +66,7 @@ public class PlayerManager extends Manager { public Player getPlayerByCreatureName(String name) { synchronized (players) { for (Player p : players.values()) { - if (p.getCreatureObject() != null && p.getCreatureObject().getName().equals(name)) + if (p.getCreatureObject() != null && p.getCreatureObject().getName().equalsIgnoreCase(name)) return p; } } @@ -74,10 +74,11 @@ public class PlayerManager extends Manager { } public Player getPlayerByCreatureFirstName(String name) { + name = name.toLowerCase(); synchronized (players) { for (Player p : players.values()) { if (p.getCreatureObject() != null) { - String cName = p.getCreatureObject().getName(); + String cName = p.getCreatureObject().getName().toLowerCase(); if (cName.startsWith(name) && (cName.length() == name.length() || cName.charAt(name.length()) == ' ')) { return p; }