SteamWar/BauSystem
Archiviert
13
0

ScriptSystemImprovements #209

Manuell gemergt
YoyoNow hat 6 Commits von ScriptSystemImprovements nach master 2021-04-01 18:31:31 +02:00 zusammengeführt
2 geänderte Dateien mit 33 neuen und 0 gelöschten Zeilen
Nur Änderungen aus Commit 944009a17a werden angezeigt - Alle Commits anzeigen

Datei anzeigen

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

Datei anzeigen

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