Let scripts access Java classes
Fix script attempting to schedule with non-long (double) time value
This commit is contained in:
@@ -60,7 +60,9 @@ function takeoff() {
|
|||||||
|
|
||||||
em.setProperty("docked","false");
|
em.setProperty("docked","false");
|
||||||
|
|
||||||
if(Math.random() < 0.42) em.schedule("approach", (invasionStartTime + (Math.random() * invasionDelayTime)));
|
if (Math.random() < 0.42) {
|
||||||
|
em.schedule("approach", (invasionStartTime + Math.trunc((Math.random() * invasionDelayTime))));
|
||||||
|
}
|
||||||
em.schedule("arrived", rideTime);
|
em.schedule("arrived", rideTime);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -24,10 +24,7 @@ package scripting;
|
|||||||
import client.MapleClient;
|
import client.MapleClient;
|
||||||
import tools.FilePrinter;
|
import tools.FilePrinter;
|
||||||
|
|
||||||
import javax.script.ScriptEngine;
|
import javax.script.*;
|
||||||
import javax.script.ScriptEngineFactory;
|
|
||||||
import javax.script.ScriptEngineManager;
|
|
||||||
import javax.script.ScriptException;
|
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.io.FileReader;
|
import java.io.FileReader;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
@@ -49,7 +46,10 @@ public abstract class AbstractScriptManager {
|
|||||||
if (!scriptFile.exists()) {
|
if (!scriptFile.exists()) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
ScriptEngine engine = sef.getScriptEngine();
|
ScriptEngine engine = sef.getScriptEngine();
|
||||||
|
applyLooserGraalSecurity(engine);
|
||||||
|
|
||||||
try (FileReader fr = new FileReader(scriptFile)) {
|
try (FileReader fr = new FileReader(scriptFile)) {
|
||||||
engine.eval(fr);
|
engine.eval(fr);
|
||||||
} catch (final ScriptException | IOException t) {
|
} catch (final ScriptException | IOException t) {
|
||||||
@@ -70,6 +70,12 @@ public abstract class AbstractScriptManager {
|
|||||||
return engine;
|
return engine;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void applyLooserGraalSecurity(ScriptEngine scriptEngine) {
|
||||||
|
Bindings bindings = scriptEngine.getBindings(ScriptContext.ENGINE_SCOPE);
|
||||||
|
bindings.put("polyglot.js.allowHostAccess", true);
|
||||||
|
bindings.put("polyglot.js.allowHostClassLookup", true);
|
||||||
|
}
|
||||||
|
|
||||||
protected void resetContext(String path, MapleClient c) {
|
protected void resetContext(String path, MapleClient c) {
|
||||||
c.removeScriptEngine("scripts/" + path);
|
c.removeScriptEngine("scripts/" + path);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user