ScriptSystemImprovements #209
@ -47,11 +47,13 @@ public class CommandScript implements CommandExecutor {
|
|||||||
pages.add("§6Variablen§8\n\nMit Variablen kann man sich Zahlen speichern. Man definiert diese mit 'var <NAME> <VALUE>'.\n\nBeispiel:\n§9# Setze i zu 0\nvar i 0§8\n\nEs gibt einige spezial values. Dazu zählen");
|
pages.add("§6Variablen§8\n\nMit Variablen kann man sich Zahlen speichern. Man definiert diese mit 'var <NAME> <VALUE>'.\n\nBeispiel:\n§9# Setze i zu 0\nvar i 0§8\n\nEs gibt einige spezial values. Dazu zählen");
|
||||||
pages.add("§8'true', 'yes', 'false' und 'no', welche für 1, 1, 0 und 0 stehen.\n\nMan kann eine Variable auch um einen erhöhen oder verkleinern. Hierfür schreibt man statt einer Zahl '++', 'inc' oder '--', 'dec'.\n\nBeispiel:\n§9var i ++");
|
pages.add("§8'true', 'yes', 'false' und 'no', welche für 1, 1, 0 und 0 stehen.\n\nMan kann eine Variable auch um einen erhöhen oder verkleinern. Hierfür schreibt man statt einer Zahl '++', 'inc' oder '--', 'dec'.\n\nBeispiel:\n§9var i ++");
|
||||||
pages.add("§8Variablen kann man referenzieren\ndurch '<' vor dem Variablennamen und '>' nach diesem. Diese kann man in jedem Befehl verwenden.\n\nBeispiel:\n§9# Stacked um 10\nvar stacks 10\n/stack <stacks>");
|
pages.add("§8Variablen kann man referenzieren\ndurch '<' vor dem Variablennamen und '>' nach diesem. Diese kann man in jedem Befehl verwenden.\n\nBeispiel:\n§9# Stacked um 10\nvar stacks 10\n/stack <stacks>");
|
||||||
|
pages.add("§8Man kann auch explizit eine globale, locale, oder konstante variable referenzieren, indem 'global.', 'local.' oder 'const.' vor den Namen in die Klammern zu schreiben.");
|
||||||
pages.add("§8Um Variablen über das Script ausführen zu speichern gibt es 'global' und 'unglobal' als Befehle. Der erste speichert eine locale Variable global und das zweite löscht eine globale wieder.");
|
pages.add("§8Um Variablen über das Script ausführen zu speichern gibt es 'global' und 'unglobal' als Befehle. Der erste speichert eine locale Variable global und das zweite löscht eine globale wieder.");
|
||||||
pages.add("§8Des weiteren kann man Lokale Variablen mit 'unvar' löschen. Nach dem verlassen einer Welt werden alle Globalen Variablen gelöscht. Globale Variablen kann man mit '/scriptvars' einsehen.");
|
pages.add("§8Des weiteren kann man Lokale Variablen mit 'unvar' löschen. Nach dem verlassen einer Welt werden alle Globalen Variablen gelöscht. Globale Variablen kann man mit '/scriptvars' einsehen.");
|
||||||
pages.add("§6Konstanten§8\n\nNeben den variablen gibt es noch 5 Konstante Werte, welche nicht mit dem 'var' Befehl verändert werden können.\n\nDiese sind:\n- trace/autotrace\n- tnt\n- freeze\n- fire");
|
pages.add("§6Konstanten§8\n\nNeben den variablen gibt es noch 5 Konstante Werte, welche nicht mit dem 'var' Befehl verändert werden können.\n\nDiese sind:\n- trace/autotrace\n- tnt\n- freeze\n- fire");
|
||||||
pages.add("§8Des weiteren gibt es 3 weitere Variablen, welche explizit Spieler gebunden sind\n\nDiese sind:\n- x\n- y\n- z");
|
pages.add("§8Des weiteren gibt es 3 weitere Variablen, welche explizit Spieler gebunden sind\n\nDiese sind:\n- x\n- y\n- z");
|
||||||
pages.add("§6Abfragen§8\n\nMit Abfragen kann man nur Gleichheit von 2 Werten überprüft werden. Hierfür verwendet man\n'if <VAL> <VAL>'.\nNach den zwei Werten kann man ein oder 2 Jump-Points schreiben\n'if [...] <JP> (JP)'.");
|
pages.add("§6Abfragen§8\n\nMit Abfragen kann man nur Gleichheit von 2 Werten überprüft werden. Hierfür verwendet man\n'if <VAL> <VAL>'.\nNach den zwei Werten kann man ein oder 2 Jump-Points schreiben\n'if [...] <JP> (JP)'.");
|
||||||
|
pages.add("§8Des weiteren kann man überprüfen, ob eine Variable existiert mit 'if <VAL> exists' wonach dann wieder 1 oder 2 Jump-Points sein müssen.");
|
||||||
pages.add("§8Ein Jump-Point ist eine Zeile Script, wohin man springen kann. Dieser wird mit einem '.' am Anfang der Zeile beschrieben und direkt danach der Jump-Point Namen ohne Leerzeichen.\n\nBeispiel:\n§9# Jump-Point X\n.X§8");
|
pages.add("§8Ein Jump-Point ist eine Zeile Script, wohin man springen kann. Dieser wird mit einem '.' am Anfang der Zeile beschrieben und direkt danach der Jump-Point Namen ohne Leerzeichen.\n\nBeispiel:\n§9# Jump-Point X\n.X§8");
|
||||||
pages.add("§8Um zu einem Jump-Point ohne Abfrage zu springen kann man den\n'jump <JP>' Befehl verwenden.");
|
pages.add("§8Um zu einem Jump-Point ohne Abfrage zu springen kann man den\n'jump <JP>' Befehl verwenden.");
|
||||||
pages.add("§6Schleifen§8\n\nSchleifen werden mit Jump-Points, if Abfragen und Jumps gebaut.\n\nBeispiel:\n§9var i 0\n.JUMP\nvar i ++\nif i 10 END JUMP\n.END§8");
|
pages.add("§6Schleifen§8\n\nSchleifen werden mit Jump-Points, if Abfragen und Jumps gebaut.\n\nBeispiel:\n§9var i 0\n.JUMP\nvar i ++\nif i 10 END JUMP\n.END§8");
|
||||||
|
@ -284,6 +284,15 @@ public class ScriptListener implements Listener {
|
|||||||
for (String variable : variables) {
|
for (String variable : variables) {
|
||||||
s = s.replace("<" + variable + ">", getValue(scriptExecutor, variable) + "");
|
s = s.replace("<" + variable + ">", getValue(scriptExecutor, variable) + "");
|
||||||
}
|
}
|
||||||
|
for (String constVariable : CONSTANTS.keySet()) {
|
||||||
|
s = s.replace("<const." + constVariable + ">", getConstantValue(scriptExecutor, constVariable) + "");
|
||||||
|
}
|
||||||
|
for (String localVariable : scriptExecutor.variables.keySet()) {
|
||||||
|
s = s.replace("<local." + localVariable + ">", getLocalValue(scriptExecutor, localVariable) + "");
|
||||||
|
}
|
||||||
|
for (String globalVariable : GLOBAL_VARIABLES.getOrDefault(scriptExecutor.player, new HashMap<>()).keySet()) {
|
||||||
|
s = s.replace("<global." + globalVariable + ">", getGlobalValue(scriptExecutor, globalVariable) + "");
|
||||||
|
}
|
||||||
return s.split(" ");
|
return s.split(" ");
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -364,6 +373,13 @@ public class ScriptListener implements Listener {
|
|||||||
int jumpTruePoint = scriptExecutor.jumpPoints.getOrDefault(args[2], -1);
|
int jumpTruePoint = scriptExecutor.jumpPoints.getOrDefault(args[2], -1);
|
||||||
int jumpFalsePoint = args.length > 3 ? scriptExecutor.jumpPoints.getOrDefault(args[3], -1) : -1;
|
int jumpFalsePoint = args.length > 3 ? scriptExecutor.jumpPoints.getOrDefault(args[3], -1) : -1;
|
||||||
|
|
||||||
|
if (args[1].equals("exists")) {
|
||||||
|
if (isVariable(scriptExecutor, args[0])) {
|
||||||
|
return jumpTruePoint;
|
||||||
|
} else {
|
||||||
|
return jumpFalsePoint;
|
||||||
|
}
|
||||||
|
}
|
||||||
int firstValue = getValueOrParse(scriptExecutor, args[0]);
|
int firstValue = getValueOrParse(scriptExecutor, args[0]);
|
||||||
int secondValue = getValueOrParse(scriptExecutor, args[1]);
|
int secondValue = getValueOrParse(scriptExecutor, args[1]);
|
||||||
if (firstValue == secondValue) {
|
if (firstValue == secondValue) {
|
||||||
@ -470,6 +486,21 @@ public class ScriptListener implements Listener {
|
|||||||
return scriptExecutor.variables.getOrDefault(key, 0);
|
return scriptExecutor.variables.getOrDefault(key, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private static int getConstantValue(ScriptExecutor scriptExecutor, String key) {
|
||||||
|
return CONSTANTS.getOrDefault(key, player -> 0).apply(scriptExecutor.player);
|
||||||
|
}
|
||||||
|
|
||||||
|
private static int getGlobalValue(ScriptExecutor scriptExecutor, String key) {
|
||||||
|
if (!GLOBAL_VARIABLES.containsKey(scriptExecutor.player)) {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
return GLOBAL_VARIABLES.get(scriptExecutor.player).getOrDefault(key, 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
private static int getLocalValue(ScriptExecutor scriptExecutor, String key) {
|
||||||
|
return scriptExecutor.variables.getOrDefault(key, 0);
|
||||||
|
}
|
||||||
|
|
||||||
private static boolean isVariable(ScriptExecutor scriptExecutor, String key) {
|
private static boolean isVariable(ScriptExecutor scriptExecutor, String key) {
|
||||||
if (CONSTANTS.containsKey(key)) {
|
if (CONSTANTS.containsKey(key)) {
|
||||||
return true;
|
return true;
|
||||||
|
In neuem Issue referenzieren
Einen Benutzer sperren