From 6e80cff926e3531ba49011c62c537e75b92f0f47 Mon Sep 17 00:00:00 2001 From: Max Weber Date: Wed, 28 Mar 2018 00:42:20 -0600 Subject: [PATCH] Expose methods to execute scripts --- .../src/main/java/net/runelite/api/Client.java | 2 ++ .../java/net/runelite/mixins/ScriptVMMixin.java | 13 +++++++++++++ .../src/main/java/net/runelite/rs/api/RSClient.java | 6 ++++++ .../java/net/runelite/rs/api/RSScriptEvent.java | 7 +++++++ 4 files changed, 28 insertions(+) diff --git a/runelite-api/src/main/java/net/runelite/api/Client.java b/runelite-api/src/main/java/net/runelite/api/Client.java index 39d2a6eab0..c8651ab162 100644 --- a/runelite-api/src/main/java/net/runelite/api/Client.java +++ b/runelite-api/src/main/java/net/runelite/api/Client.java @@ -352,4 +352,6 @@ public interface Client extends GameEngine World createWorld(); SpritePixels drawInstanceMap(int z); + + void runScript(int id, Object... args); } diff --git a/runelite-mixins/src/main/java/net/runelite/mixins/ScriptVMMixin.java b/runelite-mixins/src/main/java/net/runelite/mixins/ScriptVMMixin.java index d8cad4db5e..71bbac481a 100644 --- a/runelite-mixins/src/main/java/net/runelite/mixins/ScriptVMMixin.java +++ b/runelite-mixins/src/main/java/net/runelite/mixins/ScriptVMMixin.java @@ -91,4 +91,17 @@ public abstract class ScriptVMMixin implements RSClient currentScript = null; } } + + @Inject + @Override + public void runScript(int id, Object... args) + { + assert isClientThread(); + Object[] cargs = new Object[args.length + 1]; + cargs[0] = id; + System.arraycopy(args, 0, cargs, 1, args.length); + RSScriptEvent se = createScriptEvent(); + se.setArguments(cargs); + runScript(se, 200000); + } } diff --git a/runescape-api/src/main/java/net/runelite/rs/api/RSClient.java b/runescape-api/src/main/java/net/runelite/rs/api/RSClient.java index 5f88ffce59..9df2b26268 100644 --- a/runescape-api/src/main/java/net/runelite/rs/api/RSClient.java +++ b/runescape-api/src/main/java/net/runelite/rs/api/RSClient.java @@ -550,4 +550,10 @@ public interface RSClient extends RSGameEngine, Client @Import("drawObject") void drawObject(int z, int x, int y, int randomColor1, int randomColor2); + + @Construct + RSScriptEvent createScriptEvent(); + + @Import("runScript") + void runScript(RSScriptEvent ev, int ex); } diff --git a/runescape-api/src/main/java/net/runelite/rs/api/RSScriptEvent.java b/runescape-api/src/main/java/net/runelite/rs/api/RSScriptEvent.java index 91ecb4df76..f9edbdd985 100644 --- a/runescape-api/src/main/java/net/runelite/rs/api/RSScriptEvent.java +++ b/runescape-api/src/main/java/net/runelite/rs/api/RSScriptEvent.java @@ -24,6 +24,13 @@ */ package net.runelite.rs.api; +import net.runelite.mapping.Import; + public interface RSScriptEvent { + @Import("objs") + Object[] getArguments(); + + @Import("objs") + void setArguments(Object[] args); }