Fix HelpCommand not working without static CommandsExecutor

This commit is contained in:
P0nk
2023-03-31 07:57:31 +02:00
parent 699da37f06
commit 785f74ed21
7 changed files with 33 additions and 13 deletions

View File

@@ -346,13 +346,17 @@ public class AbstractPlayerInteraction {
}
public void openNpc(int npcid, String script) {
openNpc(npcid, script, Collections.emptyMap());
}
public void openNpc(int npcId, String script, Map<String, Object> additionalBindings) {
if (c.getCM() != null) {
return;
}
c.removeClickedNPC();
NPCScriptManager.getInstance().dispose(c);
NPCScriptManager.getInstance().start(c, npcid, script);
NPCScriptManager.getInstance().startWithBindings(c, npcId, script, additionalBindings);
}
public int getQuestStatus(int id) {

View File

@@ -37,6 +37,8 @@ import java.util.HashMap;
import java.util.List;
import java.util.Map;
import static java.util.Collections.emptyMap;
/**
* @author Matze
*/
@@ -65,19 +67,24 @@ public class NPCScriptManager extends AbstractScriptManager {
}
public boolean start(Client c, int npc, int oid, Character chr) {
return startNpcScript(c, npc, oid, null, chr);
return startNpcScript(c, npc, oid, null, chr, emptyMap());
}
public boolean start(Client c, int npc, String fileName) {
return startNpcScript(c, npc, -1, fileName, null);
return startNpcScript(c, npc, -1, fileName, null, emptyMap());
}
public boolean startNpcScript(Client c, int npc, int oid, String fileName, Character chr) {
return startWithBindings(c, npc, oid, fileName, chr, false, "cm");
public void startWithBindings(Client c, int npc, String fileName, Map<String, Object> bindings) {
startNpcScript(c, npc, -1, fileName, null, bindings);
}
private boolean startNpcScript(Client c, int npc, int oid, String fileName, Character chr,
Map<String, Object> additionalBindings) {
return startWithBindings(c, npc, oid, fileName, chr, false, "cm", additionalBindings);
}
public boolean startItemScript(Client c, ScriptedItem scriptItem) {
return startWithBindings(c, scriptItem.getNpc(), -1, scriptItem.getScript(), null, true, "im");
return startWithBindings(c, scriptItem.getNpc(), -1, scriptItem.getScript(), null, true, "im", emptyMap());
}
public void startCpqScript(String filename, Client c, int npc, List<PartyCharacter> chrs) {
@@ -111,7 +118,8 @@ public class NPCScriptManager extends AbstractScriptManager {
}
}
private boolean startWithBindings(Client c, int npc, int oid, String fileName, Character chr, boolean itemScript, String engineName) {
private boolean startWithBindings(Client c, int npc, int oid, String fileName, Character chr, boolean itemScript,
String engineName, Map<String, Object> bindings) {
try {
final NPCConversationManager cm = new NPCConversationManager(c, npc, oid, fileName, itemScript);
if (cms.containsKey(c)) {
@@ -138,6 +146,7 @@ public class NPCScriptManager extends AbstractScriptManager {
return false;
}
engine.put(engineName, cm);
bindings.forEach(engine::put);
Invocable iv = (Invocable) engine;
scripts.put(c, iv);