Expose methods to execute scripts

This commit is contained in:
Max Weber
2018-03-28 00:42:20 -06:00
committed by Adam
parent 0c04804d1a
commit 6e80cff926
4 changed files with 28 additions and 0 deletions

View File

@@ -352,4 +352,6 @@ public interface Client extends GameEngine
World createWorld();
SpritePixels drawInstanceMap(int z);
void runScript(int id, Object... args);
}

View File

@@ -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);
}
}

View File

@@ -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);
}

View File

@@ -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);
}