From ff707a2ae31feecd4b7cc6199f693b810ab317c9 Mon Sep 17 00:00:00 2001 From: AconiteGodOfSWG Date: Wed, 14 Apr 2021 00:38:47 -0400 Subject: [PATCH] Refactor and fix /forceCommand --- .../compiled/game/script/gm/cmd.java | 52 +++++++++++-------- 1 file changed, 29 insertions(+), 23 deletions(-) diff --git a/sku.0/sys.server/compiled/game/script/gm/cmd.java b/sku.0/sys.server/compiled/game/script/gm/cmd.java index d867af555..c0e76426b 100755 --- a/sku.0/sys.server/compiled/game/script/gm/cmd.java +++ b/sku.0/sys.server/compiled/game/script/gm/cmd.java @@ -62,34 +62,40 @@ public class cmd extends script.base_script } public int cmdForceCommand(obj_id self, obj_id target, String params, float defaultTime) throws InterruptedException { - if (!isIdValid(target) || !isPlayer(target) || params == null || params.equalsIgnoreCase("")) - { - sendSystemMessageTestingOnly(self, "[Syntax] /forceCommand -target (with lookat target)"); - return SCRIPT_CONTINUE; - } - if (params.contains(gm.KEYWORD_TARGET)) - { - params = gm.removeKeyword(params, gm.KEYWORD_TARGET); - } - else - { - sendSystemMessageTestingOnly(self, "[Syntax] /forceCommand -target (with lookat target)"); + if(!isGod(self)) { return SCRIPT_CONTINUE; } StringTokenizer st = new StringTokenizer(params); - String cmd = st.nextToken(); - obj_id cmdTarget = null; - String cmdParams = ""; - while (st.hasMoreTokens()) - { - String tmp = st.nextToken(); - if (tmp != null && !tmp.equalsIgnoreCase("")) - { - cmdParams += tmp + " "; + if(!st.hasMoreTokens()) { + sendSystemMessageTestingOnly(self, "Syntax: /forceCommand <-target OR > "); + sendSystemMessageTestingOnly(self, "Example: /forceCommand 9248492842 /tell aconite hi"); + } else { + String focus = st.nextToken(); + if(focus.contains("target")) { + target = getLookAtTarget(self); + } else { + if (focus.matches(".*\\d.*")) { + target = obj_id.getObjId(Long.parseLong(focus)); + } else { + sendSystemMessageTestingOnly(self, "Syntax: /forceCommand <-target OR objId> "); + sendSystemMessageTestingOnly(self, "Example: /forceCommand 9248492842 tell aconite hi"); + return SCRIPT_CONTINUE; + } } + if(!isIdValid(target) || !isPlayer(target)) { + sendSystemMessageTestingOnly(self, "forceCommand: Error: Target was not valid. Target must be a player."); + return SCRIPT_CONTINUE; + } + if(!st.hasMoreTokens()) { + sendSystemMessageTestingOnly(self, "Syntax: /forceCommand <-target OR objId> "); + sendSystemMessageTestingOnly(self, "Example: /forceCommand 9248492842 tell aconite hi"); + } else { + String cmd = st.nextToken("").replaceFirst(" ", "/"); + sendConsoleCommand(cmd, target); + sendSystemMessageTestingOnly(self, "forceCommand: Successfully sent forceful command "+cmd+" request to "+getPlayerName(target)+ "("+target+")."); + } + return SCRIPT_CONTINUE; } - cmdParams.trim(); - sendSystemMessageTestingOnly(self, "/forceCommand: attempting to queue command: '" + cmd + " " + cmdParams + "' for (" + target + ")" + getName(target)); return SCRIPT_CONTINUE; } public int cmdMoney(obj_id self, obj_id target, String params, float defaultTime) throws InterruptedException