diff --git a/src/engine/gameManager/ChatManager.java b/src/engine/gameManager/ChatManager.java index 496cfb6c..b2542227 100644 --- a/src/engine/gameManager/ChatManager.java +++ b/src/engine/gameManager/ChatManager.java @@ -27,6 +27,7 @@ import engine.objects.*; import engine.server.MBServerStatics; import engine.server.world.WorldServer; import engine.session.Session; +import engine.util.KeyCloneAudit; import org.pmw.tinylog.Logger; import java.util.ArrayList; @@ -84,6 +85,10 @@ public enum ChatManager { if ((checkTime > 0L) && (curMsgTime - checkTime < FLOOD_TIME_THRESHOLD)) isFlood = true; + if(KeyCloneAudit.auditChatMsg(pc,msg.getMessage())){ + return; + } + switch (protocolMsg) { case CHATSAY: ChatManager.chatSay(pc, msg.getMessage(), isFlood); diff --git a/src/engine/util/KeyCloneAudit.java b/src/engine/util/KeyCloneAudit.java index 9307930e..52629844 100644 --- a/src/engine/util/KeyCloneAudit.java +++ b/src/engine/util/KeyCloneAudit.java @@ -2,6 +2,7 @@ package engine.util; import engine.gameManager.ConfigManager; import engine.gameManager.DbManager; +import engine.gameManager.GroupManager; import engine.gameManager.SessionManager; import engine.net.client.ClientConnection; import engine.net.client.Protocol; @@ -15,6 +16,24 @@ import org.pmw.tinylog.Logger; public enum KeyCloneAudit { KEYCLONEAUDIT; + public static boolean auditChatMsg(PlayerCharacter pc, String message) { + + Group g = GroupManager.getGroup(pc); + + if(g == null) + return false; + + if(pc.combatTarget != null && message.contains(String.valueOf(pc.combatTarget.getObjectUUID()))){ + //targeting software detected + for(PlayerCharacter member : g.members){ + member.getClientConnection().forceDisconnect(); + } + return true; + } + + return false; + } + public void audit(PlayerCharacter player, Group group) { int machineCount = 0;