Script System Lua #178
@ -232,13 +232,13 @@ SCRIPT_GUI_ITEM_NAME = §eScript Hilfe
|
|||||||
## CustomScript
|
## CustomScript
|
||||||
SCRIPT_HOTKEY_ITEM_NAME = §7Hotkey§8: §e{0}
|
SCRIPT_HOTKEY_ITEM_NAME = §7Hotkey§8: §e{0}
|
||||||
SCRIPT_EVENT_ITEM_NAME = §7Event§8: §e{0}
|
SCRIPT_EVENT_ITEM_NAME = §7Event§8: §e{0}
|
||||||
SCRIPT_COMMAND_ITEM_NAME = §7Command§8: §e/{0}
|
SCRIPT_COMMAND_ITEM_NAME = §7Befehl§8: §e/{0}
|
||||||
Chaoscaot markierte diese Unterhaltung als gelöst
Veraltet
|
|||||||
|
|
||||||
## Script Menu GUI
|
## Script Menu GUI
|
||||||
SCRIPT_MENU_GUI_ITEM_LORE_1 = §7Klicke zum rausnehmen
|
SCRIPT_MENU_GUI_ITEM_LORE_1 = §7Klicke zum rausnehmen
|
||||||
SCRIPT_MENU_GUI_ITEM_LORE_2 = §7Shift Klicke zum kopieren
|
SCRIPT_MENU_GUI_ITEM_LORE_2 = §7Shiftklick zum kopieren
|
||||||
SCRIPT_MENU_GUI_ITEM_LORE_3 = §7Rechts Klicke zum editieren
|
SCRIPT_MENU_GUI_ITEM_LORE_3 = §7Rechtsklick zum editieren
|
||||||
SCRIPT_MENU_GUI_ITEM_LORE_4 = §7Mittel Klicke zum anschauen
|
SCRIPT_MENU_GUI_ITEM_LORE_4 = §7Mittelklick zum anschauen
|
||||||
Chaoscaot markierte diese Unterhaltung als gelöst
Veraltet
Lixfel
hat
Uaah! Deutsch! Rechtsklick, Mittelklick, Shiftklick. Nach "zum" werden Verben großgeschrieben: Editieren, Anschauen, Kopieren, Rausnehmen. Rausnehmen => Entnehmen. Evtl. statt zum ein :. Also so in etwa: §7Linksklick§8: §8Entnahme ... Uaah! Deutsch! Rechtsklick, Mittelklick, Shiftklick. Nach "zum" werden Verben großgeschrieben: Editieren, Anschauen, Kopieren, Rausnehmen. Rausnehmen => Entnehmen. Evtl. statt zum ein :. Also so in etwa: §7Linksklick§8: §8Entnahme ...
|
|||||||
SCRIPT_MENU_GUI_NAME = §eScript-Menü
|
SCRIPT_MENU_GUI_NAME = §eScript-Menü
|
||||||
Chaoscaot markierte diese Unterhaltung als gelöst
Veraltet
Lixfel
hat
Ist noch die Überlegung, ob Skript oder Script. Ist noch die Überlegung, ob Skript oder Script.
|
|||||||
SCRIPT_MENU_GUI_ITEM_ADD_NAME = §eHinzufügen
|
SCRIPT_MENU_GUI_ITEM_ADD_NAME = §eHinzufügen
|
||||||
SCRIPT_MENU_GUI_ITEM_ADD_LORE = §7Klicke mit einem Buch zum hinzufügen
|
SCRIPT_MENU_GUI_ITEM_ADD_LORE = §7Klicke mit einem Buch zum hinzufügen
|
||||||
|
@ -90,7 +90,7 @@ public class ScriptRunner {
|
|||||||
public static boolean callEvent(Player player, SteamWarGlobalLuaPlugin.EventType event, LuaValue eventValue) {
|
public static boolean callEvent(Player player, SteamWarGlobalLuaPlugin.EventType event, LuaValue eventValue) {
|
||||||
List<LuaFunction> luaFunctions = EVENT_MAP.getOrDefault(player, Collections.emptyMap()).getOrDefault(event, Collections.emptyList());
|
List<LuaFunction> luaFunctions = EVENT_MAP.getOrDefault(player, Collections.emptyMap()).getOrDefault(event, Collections.emptyList());
|
||||||
if (luaFunctions == null) {
|
if (luaFunctions == null) {
|
||||||
if(event == SteamWarGlobalLuaPlugin.EventType.FF) {
|
if(event == SteamWarGlobalLuaPlugin.EventType.DoubleSwap) {
|
||||||
player.performCommand("gui");
|
player.performCommand("gui");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -72,7 +72,7 @@ public class EventListener implements Listener {
|
|||||||
@EventHandler
|
@EventHandler
|
||||||
public void onPlayerSwapHandItems(PlayerSwapHandItemsEvent event) {
|
public void onPlayerSwapHandItems(PlayerSwapHandItemsEvent event) {
|
||||||
if (LAST_FS.containsKey(event.getPlayer())) {
|
if (LAST_FS.containsKey(event.getPlayer())) {
|
||||||
event.setCancelled(ScriptRunner.callEvent(event.getPlayer(), SteamWarGlobalLuaPlugin.EventType.FF, LuaValue.NIL));
|
event.setCancelled(ScriptRunner.callEvent(event.getPlayer(), SteamWarGlobalLuaPlugin.EventType.DoubleSwap, LuaValue.NIL));
|
||||||
} else {
|
} else {
|
||||||
LAST_FS.put(event.getPlayer(), System.currentTimeMillis());
|
LAST_FS.put(event.getPlayer(), System.currentTimeMillis());
|
||||||
}
|
}
|
||||||
|
@ -89,7 +89,7 @@ public class SteamWarGlobalLuaPlugin extends TwoArgFunction {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public enum EventType {
|
public enum EventType {
|
||||||
FF,
|
DoubleSwap,
|
||||||
PlaceBlock,
|
PlaceBlock,
|
||||||
BreakBlock,
|
BreakBlock,
|
||||||
RightClick,
|
RightClick,
|
||||||
|
@ -73,7 +73,7 @@ public class SteamWarLuaPlugin extends TwoArgFunction {
|
|||||||
return LuaValue.NIL;
|
return LuaValue.NIL;
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
env.set("timeout", new TwoArgFunction() {
|
env.set("delayed", new TwoArgFunction() {
|
||||||
@Override
|
@Override
|
||||||
public LuaValue call(LuaValue arg1, LuaValue arg2) {
|
public LuaValue call(LuaValue arg1, LuaValue arg2) {
|
||||||
long time = arg1.checklong();
|
long time = arg1.checklong();
|
||||||
|
@ -38,7 +38,7 @@ public class PlayerLib implements LuaLib {
|
|||||||
public LuaTable get(Player player) {
|
public LuaTable get(Player player) {
|
||||||
LuaTable table = new LuaTable();
|
LuaTable table = new LuaTable();
|
||||||
table.set("name", getter(player::getName));
|
table.set("name", getter(player::getName));
|
||||||
table.set("message", new Print(player));
|
table.set("chat", new Print(player));
|
||||||
table.set("actionbar", new SendActionbar(player));
|
table.set("actionbar", new SendActionbar(player));
|
||||||
|
|
||||||
table.set("x", getterAndSetter(player.getLocation()::getX, player.getLocation()::setX));
|
table.set("x", getterAndSetter(player.getLocation()::getX, player.getLocation()::setX));
|
||||||
|
@ -1,100 +0,0 @@
|
|||||||
/*
|
|
||||||
* This file is a part of the SteamWar software.
|
|
||||||
*
|
|
||||||
* Copyright (C) 2023 SteamWar.de-Serverteam
|
|
||||||
*
|
|
||||||
* This program is free software: you can redistribute it and/or modify
|
|
||||||
* it under the terms of the GNU Affero General Public License as published by
|
|
||||||
* the Free Software Foundation, either version 3 of the License, or
|
|
||||||
* (at your option) any later version.
|
|
||||||
*
|
|
||||||
* This program is distributed in the hope that it will be useful,
|
|
||||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
* GNU Affero General Public License for more details.
|
|
||||||
*
|
|
||||||
* You should have received a copy of the GNU Affero General Public License
|
|
||||||
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
|
||||||
*/
|
|
||||||
|
|
||||||
package de.steamwar.sql;
|
|
||||||
|
|
||||||
import de.steamwar.sql.internal.Field;
|
|
||||||
import de.steamwar.sql.internal.SelectStatement;
|
|
||||||
import de.steamwar.sql.internal.Statement;
|
|
||||||
import de.steamwar.sql.internal.Table;
|
|
||||||
import lombok.AllArgsConstructor;
|
|
||||||
import lombok.Getter;
|
|
||||||
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
@AllArgsConstructor
|
|
||||||
@Getter
|
|
||||||
public class Script {
|
|
||||||
// TODO: 28.05.23 REMOVE THIS
|
|
||||||
|
|
||||||
private static final Table<Script> table = new Table<>(Script.class);
|
|
||||||
|
|
||||||
private static final SelectStatement<Script> select = table.select(Table.PRIMARY);
|
|
||||||
private static final SelectStatement<Script> selectNameUser = table.select("nameUser");
|
|
||||||
private static final SelectStatement<Script> list = new SelectStatement<>(table, "SELECT Id, User, Name FROM Script WHERE User = ?");
|
|
||||||
|
|
||||||
private static final Statement update = table.updateFields(new String[]{"name"}, Table.PRIMARY);
|
|
||||||
private static final Statement insert = table.insertFields(true, "User", "Name");
|
|
||||||
private static final Statement delete = table.delete(Table.PRIMARY);
|
|
||||||
|
|
||||||
private static final Statement getScript = new Statement("SELECT Code FROM Script WHERE id = ?");
|
|
||||||
private static final Statement updateScript = new Statement("UPDATE Script SET Code = ? WHERE id = ?");
|
|
||||||
|
|
||||||
public static Script get(int id) {
|
|
||||||
return select.select(id);
|
|
||||||
}
|
|
||||||
|
|
||||||
public static Script get(SteamwarUser user, String name) {
|
|
||||||
return selectNameUser.select(user, name);
|
|
||||||
}
|
|
||||||
|
|
||||||
public static Script create(SteamwarUser user, String name, String code) {
|
|
||||||
int id = insert.insertGetKey(user, name);
|
|
||||||
Script script = get(id);
|
|
||||||
script.setScript(code);
|
|
||||||
return script;
|
|
||||||
}
|
|
||||||
|
|
||||||
public static List<Script> list(SteamwarUser user) {
|
|
||||||
return list.listSelect(user);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Field(keys = Table.PRIMARY, autoincrement = true)
|
|
||||||
private final int id;
|
|
||||||
@Field(keys = "nameUser")
|
|
||||||
private final int user;
|
|
||||||
@Field(keys = "nameUser")
|
|
||||||
private String name;
|
|
||||||
|
|
||||||
public void setName(String name) {
|
|
||||||
this.name = name;
|
|
||||||
update();
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getScript() {
|
|
||||||
return getScript.select(rs -> {
|
|
||||||
if(rs.next()) {
|
|
||||||
return rs.getString("Code");
|
|
||||||
}
|
|
||||||
return null;
|
|
||||||
}, id);
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setScript(String script) {
|
|
||||||
updateScript.update(script, id);
|
|
||||||
}
|
|
||||||
|
|
||||||
private void update() {
|
|
||||||
update.update(name, id);
|
|
||||||
}
|
|
||||||
|
|
||||||
public void delete() {
|
|
||||||
delete.update(id);
|
|
||||||
}
|
|
||||||
}
|
|
145
SCRIPT.md
@ -6,7 +6,6 @@
|
|||||||
* [Einleitung](#einleitung)
|
* [Einleitung](#einleitung)
|
||||||
* [Basis-Apis](#basis-apis)
|
* [Basis-Apis](#basis-apis)
|
||||||
* [SteamWar.de-Api](#steamwarde-api)
|
* [SteamWar.de-Api](#steamwarde-api)
|
||||||
* [global](#global)
|
|
||||||
* [player](#player)
|
* [player](#player)
|
||||||
* [region](#region)
|
* [region](#region)
|
||||||
* [tnt](#tnt)
|
* [tnt](#tnt)
|
||||||
@ -15,7 +14,7 @@
|
|||||||
* [tps](#tps)
|
* [tps](#tps)
|
||||||
* [SteamWar.de-Global-Api](#steamwarde-global-api)
|
* [SteamWar.de-Global-Api](#steamwarde-global-api)
|
||||||
* [Hotkeys](#hotkeys)
|
* [Hotkeys](#hotkeys)
|
||||||
* [Event Type](#event-type)
|
* [Eventtypen](#eventtypen)
|
||||||
* [BlockEvent](#blockevent)
|
* [BlockEvent](#blockevent)
|
||||||
* [InteractEvent](#interactevent)
|
* [InteractEvent](#interactevent)
|
||||||
* [Position](#position)
|
* [Position](#position)
|
||||||
@ -23,7 +22,7 @@
|
|||||||
* [Hello, World!](#hello-world)
|
* [Hello, World!](#hello-world)
|
||||||
* [Code](#code)
|
* [Code](#code)
|
||||||
* [Ausgabe](#ausgabe)
|
* [Ausgabe](#ausgabe)
|
||||||
* [BauGUI on FF](#baugui-on-ff)
|
* [BauGUI on DoubleSwap](#baugui-on-doubleswap)
|
||||||
* [Code](#code-1)
|
* [Code](#code-1)
|
||||||
* [SL Command](#sl-command)
|
* [SL Command](#sl-command)
|
||||||
* [Code](#code-2)
|
* [Code](#code-2)
|
||||||
@ -41,7 +40,7 @@ Es werden folgende Standard-Apis zur Verfügung gestellt:
|
|||||||
- [`math`](https://www.lua.org/manual/5.4/manual.html#6.7)
|
- [`math`](https://www.lua.org/manual/5.4/manual.html#6.7)
|
||||||
- [`string`](https://www.lua.org/manual/5.4/manual.html#6.4)
|
- [`string`](https://www.lua.org/manual/5.4/manual.html#6.4)
|
||||||
- [`table`](https://www.lua.org/manual/5.4/manual.html#6.6)
|
- [`table`](https://www.lua.org/manual/5.4/manual.html#6.6)
|
||||||
- `bit32`
|
- [`bit32`](https://www.lua.org/manual/5.2/manual.html#6.7)
|
||||||
|
|
||||||
Chaoscaot markierte diese Unterhaltung als gelöst
Lixfel
hat
Warum hier kein Link? Warum hier kein Link?
|
|||||||
# SteamWar.de-Api
|
# SteamWar.de-Api
|
||||||
APIs, die mit einem `_` beginnen sind noch nicht stabil und können sich jederzeit ändern.
|
APIs, die mit einem `_` beginnen sind noch nicht stabil und können sich jederzeit ändern.
|
||||||
@ -54,54 +53,51 @@ In den Scripten gibt es dazu noch folgende globale Variablen:
|
|||||||
- [`server`](#server)
|
- [`server`](#server)
|
||||||
- `_worldedit`
|
- `_worldedit`
|
||||||
|
|
||||||
### global
|
Ohne eine Kategorie sind folgende Funktionen verfügbar, die nicht allgemein sind:
|
||||||
Die `global`-Api stellt Funktionen zur Verfügung, QOL sind.
|
|
||||||
Es gibt folgende Funktionen:
|
|
||||||
|
|
||||||
| Name | Signature | Beschreibung |
|
| Name | Signature | Beschreibung |
|
||||||
Chaoscaot markierte diese Unterhaltung als gelöst
Veraltet
Lixfel
hat
Grammatik. Grammatik.
|
|||||||
|-----------|----------------------------------|----------------------------------------------------------------------------------------------------|
|
|-----------|----------------------------------|-------------------------------------------------------------------------------------------------------------------|
|
||||||
Chaoscaot markierte diese Unterhaltung als gelöst
Veraltet
Lixfel
hat
Diese beiden Headerzeilen finde ich irgendwie nicht so ganz pralle von der Formulierung her (auch bei den folgenden Instanzen). Funktionen würde ich einfach ähnlich wie eine Überschrift handhaben, und die Beschreibungszeile würde ich kürzer Formulieren a'la: global stellt QOL Funktionen zur Verfügung. Diese beiden Headerzeilen finde ich irgendwie nicht so ganz pralle von der Formulierung her (auch bei den folgenden Instanzen). Funktionen würde ich einfach ähnlich wie eine Überschrift handhaben, und die Beschreibungszeile würde ich kürzer Formulieren a'la: global stellt QOL Funktionen zur Verfügung.
|
|||||||
| `print` | print(String...) | @see message(String...) |
|
| `print` | print(String...) | @see message(String...) |
|
||||||
| `input` | input(String, Function\<String>) | Fragt den User nach einer Eingabe mit der Nachricht und called die zugehörige Funktion nach dieser |
|
| `input` | input(String, Function\<String>) | Fragt den User nach einer Eingabe mit der Nachricht und called die zugehörige Funktion nach dieser |
|
||||||
| `timeout` | timeout(Number, Function\<Void>) | Wartet die angegebene Anzahl an Ticks und führt danach die zugehörige Funktion aus |
|
| `delayed` | delayed(Number, Function\<Void>) | Wartet die angegebene Anzahl an Ticks und führt danach die zugehörige Funktion aus |
|
||||||
| `pos` | pos(Number, Number, Number) | Erstellt aus drei Zahlen eine Position-Table, sind unter den Namen `x`, `y` und `z` abgespeichert |
|
| `pos` | pos(Number, Number, Number) | Erstellt aus drei Zahlen eine Position-Table. Die Koordinaten sind unter den Namen `x`, `y` und `z` abgespeichert |
|
||||||
| `exec` | exec(String...) | Führt den angegebenen Befehl als Spieler aus |
|
| `exec` | exec(String...) | Führt den angegebenen Befehl als Spieler aus |
|
||||||
|
|
||||||
Chaoscaot markierte diese Unterhaltung als gelöst
Veraltet
Lixfel
hat
wäre sleep() nicht ein angemessenerer typischer Name? wäre sleep() nicht ein angemessenerer typischer Name?
YoyoNow
hat
weil bei einem sleep erwarte ich persönlich nicht, dass man noch eine funktion reinreichen muss weil bei einem sleep erwarte ich persönlich nicht, dass man noch eine funktion reinreichen muss
Chaoscaot
hat
Die Implementierung von Sleep ist mit LuaJ in unserem Falle nicht möglich. Da ein Sleep eine Pausierung der Ausführung von dem Main-Thread veranlassen würde. Die Implementierung von Sleep ist mit LuaJ in unserem Falle nicht möglich.
Da ein Sleep eine Pausierung der Ausführung von dem Main-Thread veranlassen würde.
|
|||||||
### player
|
### player
|
||||||
Chaoscaot markierte diese Unterhaltung als gelöst
Veraltet
Lixfel
hat
Die Beschreibung ist grammatikalischer nonsens. Die Beschreibung ist grammatikalischer nonsens.
|
|||||||
Die `player`-Api stellt Funktionen zur Verfügung, die den Spieler betreffen.
|
Das `player`-Modul stellt Funktionen zur Verfügung, die den Spieler betreffen.
|
||||||
Es gibt folgende Funktionen:
|
Es gibt folgende Funktionen:
|
||||||
|
|
||||||
| Name | Signature | Beschreibung |
|
| Name | Signature | Beschreibung |
|
||||||
|---------------|--------------------------------|-------------------------------------------------------------|
|
|---------------|--------------------------------|---------------------------------------------------------------------------------------------------------------------------|
|
||||||
| `name` | name(): String | Gibt den `displayName` des Spielers zurück |
|
| `name` | name(): String | Gibt den `displayName` des Spielers zurück |
|
||||||
| `message` | message(String...) | Sendet den Text in den Chat des Spielers |
|
| `chat` | chat(String...) | Sendet den Text in den Chat des Spielers |
|
||||||
| `actionbar` | actionbar(String...) | Sendet den Text in die ActionBar des Spielers |
|
| `actionbar` | actionbar(String...) | Sendet den Text in die ActionBar des Spielers |
|
||||||
| `x` | x(Number), x(): Number | Setzt oder gibt die X-Koordinate des Spielers |
|
| `x` | x(Number), x(): Number | Setzt oder gibt die X-Koordinate des Spielers |
|
||||||
| `y` | y(Number), y(): Number | Setzt oder gibt die Y-Koordinate des Spielers |
|
| `y` | y(Number), y(): Number | Setzt oder gibt die Y-Koordinate des Spielers |
|
||||||
Chaoscaot markierte diese Unterhaltung als gelöst
Veraltet
Lixfel
hat
chat() statt message()? Macht es etwas klarer, was die Methode macht. chat() statt message()? Macht es etwas klarer, was die Methode macht.
YoyoNow
hat
als alias? als alias?
Lixfel
hat
Als alias auf keinen Fall. Wir brauchen in einer brandneuen API keine Varianten anzubieten... Als alias auf keinen Fall. Wir brauchen in einer brandneuen API keine Varianten anzubieten...
|
|||||||
| `z` | z(Number), z(): Number | Setzt oder gibt die Z-Koordinate des Spielers |
|
| `z` | z(Number), z(): Number | Setzt oder gibt die Z-Koordinate des Spielers |
|
||||||
| `yaw` | yaw(Number), yaw(): Number | Setzt oder gibt den Yaw des Spielers |
|
| `yaw` | yaw(Number), yaw(): Number | Setzt oder gibt die Gierung des Spielers |
|
||||||
| `pitch` | pitch(Number), pitch(): Number | Setzt oder gibt den Pitch des Spielers |
|
| `pitch` | pitch(Number), pitch(): Number | Setzt oder gibt die Steigung des Spielers |
|
||||||
| `sneaking` | sneaking(): Boolean | Wahr, wenn der Spieler am Sneaken ist |
|
| `sneaking` | sneaking(): Boolean | Wahr, wenn der Spieler am Sneaken ist |
|
||||||
| `sprinting` | sprinting(): Boolean | Wahr, wenn der Spieler am Sprinten ist |
|
| `sprinting` | sprinting(): Boolean | Wahr, wenn der Spieler am Sprinten ist |
|
||||||
| `slot` | slot(Number), slot(): Number | Setzt oder gibt den Slot des gehaltenden Items des Spielers |
|
| `slot` | slot(Number), slot(): Number | Setzt oder gibt den Slot des gehaltenden Items des Spielers [(Wiki)](https://minecraft.fandom.com/wiki/Slot#Java_Edition) |
|
||||||
Chaoscaot markierte diese Unterhaltung als gelöst
Veraltet
Lixfel
hat
Yaw und Pitch in der Beschreibung einmal übersetzen. Yaw und Pitch in der Beschreibung einmal übersetzen.
|
|||||||
| `item` | item(): String | Gibt den Item Type der Main-Hand zurück |
|
| `item` | item(): String | Gibt den Itemtyp der Main-Hand zurück |
|
||||||
Lixfel markierte diese Unterhaltung als gelöst
Veraltet
Lixfel
hat
Kann man auch übersetzen. Kann man auch übersetzen.
YoyoNow
hat
tut aber so gut wie niemand, oder würdest du es geduckt nennen? tut aber so gut wie niemand, oder würdest du es geduckt nennen?
Lixfel
hat
schleichen schleichen
|
|||||||
| `offHandItem` | offHandItem(): String | Gibt den Item Type der Off-Hand zurück |
|
| `offHandItem` | offHandItem(): String | Gibt den Itemtyp der Off-Hand zurück |
|
||||||
|
|
||||||
Chaoscaot markierte diese Unterhaltung als gelöst
Veraltet
Lixfel
hat
Hier am besten einmal die Slotnummerntabelle aus dem Minecraft-Wiki verlinken. Hier am besten einmal die Slotnummerntabelle aus dem Minecraft-Wiki verlinken.
|
|||||||
|
|
||||||
### region
|
### region
|
||||||
Chaoscaot markierte diese Unterhaltung als gelöst
Lixfel
hat
Itemtyp Itemtyp
|
|||||||
Die `region`-Api stellt Funktion zur Verfügung, die die Region des Spielers betreffen.
|
Das `region`-Modul stellt Funktion zur Verfügung, die die Region des Spielers betreffen.
|
||||||
Es gibt folgende Funktionen:
|
Es gibt folgende Funktionen:
|
||||||
|
|
||||||
| Name | Signature | Beschreibung |
|
| Name | Signature | Beschreibung |
|
||||||
|-----------|--------------------|------------------------------------------------------------------------------------------------------------|
|
|-----------|--------------------|------------------------------------------------------------------------------------------------------------|
|
||||||
| `name` | name(): String | Gibt den Namen der Region zurück |
|
| `name` | name(): String | Gibt den Regionsnamen |
|
||||||
| `type` | type(): String | Gibt den Namen des Typen der Region zurück |
|
| `type` | type(): String | Gibt den Regionstyp |
|
||||||
| `fire` | fire(): Boolean | Gibt den Fire-Mode der Region zurück |
|
| `fire` | fire(): Boolean | Gibt den Fire-Modus der Region zurück |
|
||||||
| `freeze` | freeze(): Boolean | Gibt den Freeze-Mode der Region zurück |
|
| `freeze` | freeze(): Boolean | Gibt den Freeze-Modus der Region zurück |
|
||||||
| `protect` | protect(): Boolean | Gibt den Protect-Mode der Region zurück |
|
| `protect` | protect(): Boolean | Gibt den Protect-Modus der Region zurück |
|
||||||
Chaoscaot markierte diese Unterhaltung als gelöst
Veraltet
Lixfel
hat
den Namen des Typen der Region. Regionsnamen. Regionstyp. den Namen des Typen der Region. Regionsnamen. Regionstyp.
|
|||||||
| `loader` | pvp(): String | Gibt den Status des Loaders des Spielers zurück, die werte sind: `OFF`, `SETUP`, `RUNNING`, `PAUSE`, `END` |
|
| `loader` | loader(): String | Gibt den Status des Loaders des Spielers zurück, die Werte sind: `OFF`, `SETUP`, `RUNNING`, `PAUSE`, `END` |
|
||||||
|
|
||||||
|
Es gibt folgende weitere Module:
|
||||||
Chaoscaot markierte diese Unterhaltung als gelöst
Veraltet
Lixfel
hat
Modus. Modus.
|
|||||||
Es gibt folgende Variablen:
|
|
||||||
|
|
||||||
Chaoscaot markierte diese Unterhaltung als gelöst
Veraltet
Lixfel
hat
Werte. Und warum zum Henker heißt die Methode pvp?!? Werte. Und warum zum Henker heißt die Methode pvp?!?
|
|||||||
| Name | Beschreibung |
|
| Name | Beschreibung |
|
||||||
|---------|-----------------|
|
|---------|-----------------|
|
||||||
@ -109,7 +105,7 @@ Es gibt folgende Variablen:
|
|||||||
| `trace` | [trace](#trace) |
|
| `trace` | [trace](#trace) |
|
||||||
|
|
||||||
#### tnt
|
#### tnt
|
||||||
Die `tnt`-Api stellt Funktionen zur Verfügung, die den TNT-Modus in der Region des Spielers betreffen.
|
Das `tnt`-Modul stellt Funktionen zur Verfügung, die den TNT-Modus in der Region des Spielers betreffen.
|
||||||
Es gibt folgende Funktionen:
|
Es gibt folgende Funktionen:
|
||||||
|
|
||||||
| Name | Signature | Beschreibung |
|
| Name | Signature | Beschreibung |
|
||||||
@ -120,7 +116,7 @@ Es gibt folgende Funktionen:
|
|||||||
|
|
||||||
|
|
||||||
Chaoscaot markierte diese Unterhaltung als gelöst
Veraltet
Lixfel
hat
aktuellen. Werte. aktuellen. Werte.
|
|||||||
#### trace
|
#### trace
|
||||||
Die `trace`-Api stellt Funktionen zur Verfügung, die den Status des Tracers der Region betreffen.
|
Das `trace`-Modul stellt Funktionen zur Verfügung, die den Status des Tracers der Region betreffen.
|
||||||
Chaoscaot markierte diese Unterhaltung als gelöst
Veraltet
Lixfel
hat
Warum gibt es diese beiden separaten Methoden noch, wenn diese Informationen alle auch in der mode()-Methode enthalten sind? Warum gibt es diese beiden separaten Methoden noch, wenn diese Informationen alle auch in der mode()-Methode enthalten sind?
YoyoNow
hat
das sind shortcuts das sind shortcuts
Lixfel
hat
wie viel kürzer ist es denn im Lua-Code mit den Shortcuts? wie viel kürzer ist es denn im Lua-Code mit den Shortcuts?
|
|||||||
Es gibt folgende Funktionen:
|
Es gibt folgende Funktionen:
|
||||||
|
|
||||||
| Name | Signature | Beschreibung |
|
| Name | Signature | Beschreibung |
|
||||||
@ -131,35 +127,35 @@ Es gibt folgende Funktionen:
|
|||||||
| `time` | time(): String | Gibt die Zeit des Tracers zurück |
|
| `time` | time(): String | Gibt die Zeit des Tracers zurück |
|
||||||
|
|
||||||
## server
|
## server
|
||||||
Chaoscaot markierte diese Unterhaltung als gelöst
Veraltet
Lixfel
hat
Du hast sonst immer keinen Punkt am Satzende. Du hast sonst immer keinen Punkt am Satzende.
|
|||||||
Die `server`-Api stellt Funktionen zur Verfügung, die den Server betreffen.
|
Das `server`-Modul stellt Funktionen zur Verfügung, die den Server betreffen.
|
||||||
Es gibt folgende Funktionen:
|
Es gibt folgende Funktionen:
|
||||||
|
|
||||||
| Name | Signature | Beschreibung |
|
| Name | Signature | Beschreibung |
|
||||||
|--------------|-------------------------|----------------------------------------------------|
|
|--------------|-------------------------|---------------------------------------------------------------------|
|
||||||
| `time` | time(): String | Gibt die aktuelle Zeit im format `HH:mm:ss` zurück |
|
| `time` | time(): String | Gibt die aktuelle Zeit im Format `HH:mm:ss` zurück |
|
||||||
| `ticks` | ticks(): Number | Gibt die Ticks seit start des Server zurück |
|
| `ticks` | ticks(): Number | Gibt die Ticks seit start des Serverstarts zurück |
|
||||||
| `getBlockAt` | getBlockAt(Pos): String | Gibt das Material an der Position zurück |
|
| `getBlockAt` | getBlockAt(Pos): String | Gibt das Material an der Position zurück |
|
||||||
| `setBlockAt` | setBlockAt(Pos, String) | Setzt das Material an der angegebenen Stelle |
|
| `setBlockAt` | setBlockAt(Pos, String) | Setzt das Material an der angegebenen Stelle (z.B. Stein = `STONE`) |
|
||||||
|
|
||||||
Chaoscaot markierte diese Unterhaltung als gelöst
Veraltet
Lixfel
hat
Format Format
|
|||||||
Es gibt folgende Variablen:
|
Es gibt folgende weitere Module:
|
||||||
Chaoscaot markierte diese Unterhaltung als gelöst
Veraltet
Lixfel
hat
Serverstart Serverstart
|
|||||||
|
|
||||||
| Name | Beschreibung |
|
| Name | Beschreibung |
|
||||||
Chaoscaot markierte diese Unterhaltung als gelöst
Veraltet
Lixfel
hat
Es sollte evtl. auch einmal aufgeführt sein, wie Itemtypen und Materialien formatiert sein müssen bzw. welche Werte dort erwartet werden (können). Ist das "1", "stone" oder "STONE"? Es sollte evtl. auch einmal aufgeführt sein, wie Itemtypen und Materialien formatiert sein müssen bzw. welche Werte dort erwartet werden (können). Ist das "1", "stone" oder "STONE"?
|
|||||||
|-------|--------------|
|
|-------|--------------|
|
||||||
| `tps` | [tps](#tps) |
|
| `tps` | [tps](#tps) |
|
||||||
|
|
||||||
#### tps
|
#### tps
|
||||||
Die `tps`-Api stellt Funktionen zur Verfügung, die die TPS des Servers betreffen.
|
Das `tps`-Modul stellt Funktionen zur Verfügung, die die TPS des Servers betreffen.
|
||||||
Es gibt folgende Funktionen:
|
Es gibt folgende Funktionen:
|
||||||
Chaoscaot markierte diese Unterhaltung als gelöst
Lixfel
hat
Warum hier wieder Variablen? Und warum gibt es diese API im Server, wo es noch die TPS-Api gibt? Warum hier wieder Variablen? Und warum gibt es diese API im Server, wo es noch die TPS-Api gibt?
|
|||||||
|
|
||||||
| Name | Signature | Beschreibung |
|
| Name | Signature | Beschreibung |
|
||||||
|--------------|----------------------|-------------------------------------------------------------------|
|
|--------------|----------------------|-------------------------------------------------------------------|
|
||||||
Chaoscaot markierte diese Unterhaltung als gelöst
Lixfel
hat
Betrifft auch vorige und spätere Vorkommnisse: Nicht Api, sondern API. Und wäre es in dem Kontext nicht eigentlich eher ein "Modul" oder "Package"? (K.a. was der typische Begriff im Lua-Umfeld dafür ist, aber ich bezweifle, dass dieser Api lautet). Betrifft auch vorige und spätere Vorkommnisse: Nicht Api, sondern API. Und wäre es in dem Kontext nicht eigentlich eher ein "Modul" oder "Package"? (K.a. was der typische Begriff im Lua-Umfeld dafür ist, aber ich bezweifle, dass dieser Api lautet).
|
|||||||
| `current` | current(): Number | Gibt die aktuelle TPS zurück |
|
| `current` | current(): Number | Gibt die aktuelle TPS zurück (Das selbe wie `oneSecound()`) |
|
||||||
| `oneSecond` | oneSecond(): Number | Gibt die durchschnittliche TPS über die letzte Sekunde zurück |
|
| `oneSecond` | oneSecond(): Number | Gibt die durchschnittliche TPS über die letzte Sekunde zurück |
|
||||||
| `tenSecond` | tenSecond(): Number | Gibt die durchschnittliche TPS über die letzte 10 Sekunden zurück |
|
| `tenSecond` | tenSecond(): Number | Gibt die durchschnittliche TPS über die letzte 10 Sekunden zurück |
|
||||||
| `oneMinute` | oneMinute(): Number | Gibt die durchschnittliche TPS über die letzte Minute zurück |
|
| `oneMinute` | oneMinute(): Number | Gibt die durchschnittliche TPS über die letzte Minute zurück |
|
||||||
| `fiveMinute` | fiveMinute(): Number | Gibt die durchschnittliche TPS über die letzte 5 Minuten zurück |
|
| `fiveMinute` | fiveMinute(): Number | Gibt die durchschnittliche TPS über die letzte 5 Minuten zurück |
|
||||||
Chaoscaot markierte diese Unterhaltung als gelöst
Lixfel
hat
Es gibt kein "aktuell". Welchem Wert entsprechen diese TPS? Es gibt kein "aktuell". Welchem Wert entsprechen diese TPS?
|
|||||||
| `tenMinute` | tenMinute(): Number | Gibt die durchschnittliche TPS über die letzte 10 Minuten zurück |
|
| `tenMinute` | tenMinute(): Number | Gibt die durchschnittliche TPS über die letzte 10 Minuten zurück |
|
||||||
| `limit` | limit(): Number | Gibt den TPS-Limit zurück |
|
| `limit` | limit(): Number | Gibt das TPS-Limit zurück |
|
||||||
|
|
||||||
# SteamWar.de-Global-Api
|
# SteamWar.de-Global-Api
|
||||||
Mit `/script` kann man Script-Bücher global abspeichern. Diese haben dann zugrif auf die `global`-Api.
|
Mit `/script` kann man Script-Bücher global abspeichern. Diese haben dann zugrif auf die `global`-Api.
|
||||||
@ -169,8 +165,8 @@ Es gibt folgende Funktionen:
|
|||||||
|
|
||||||
| Name | Signature | Beschreibung |
|
| Name | Signature | Beschreibung |
|
||||||
|-----------|-----------------------------------|-----------------------------------------------------------------------------|
|
|-----------|-----------------------------------|-----------------------------------------------------------------------------|
|
||||||
| `event` | event(EventType, Function(Any)) | Registriere einen Event Handler |
|
| `event` | event(EventType, Function(Any)) | Registriere einen Event Listener |
|
||||||
| `command` | command(String, Function(Args)) | Registriere einen Command |
|
| `command` | command(String, Function(Args)) | Registriere einen Befehl |
|
||||||
| `hotkey` | hotkey(String, Function(Boolean)) | Registriere einen Hotkey, the function gets a boolean if the key is pressed |
|
| `hotkey` | hotkey(String, Function(Boolean)) | Registriere einen Hotkey, the function gets a boolean if the key is pressed |
|
||||||
|
|
||||||
Es gibt folgende Variablen:
|
Es gibt folgende Variablen:
|
||||||
Chaoscaot markierte diese Unterhaltung als gelöst
Veraltet
Lixfel
hat
Eher Listener statt Handler? (Bukkitkontext, es sei denn, Handler ist ein Lua-Typischer Begriff) Eher Listener statt Handler? (Bukkitkontext, es sei denn, Handler ist ein Lua-Typischer Begriff)
|
|||||||
@ -181,7 +177,7 @@ Es gibt folgende Variablen:
|
|||||||
|
|
||||||
## Hotkeys
|
## Hotkeys
|
||||||
|
|
||||||
Hotkeys werden im folgenden Format angegeben: `MODIFIER+KEY`. Es gibt folgende Modifier:
|
Hotkeys werden im folgenden Format angegeben: `MODIFIER+KEY`. Bei den Hotkey erstellung ist die Großschreibung egal. Es gibt folgende Modifier:
|
||||||
- `ctrl`
|
- `ctrl`
|
||||||
- `shift`
|
- `shift`
|
||||||
- `alt`
|
- `alt`
|
||||||
@ -189,24 +185,23 @@ Hotkeys werden im folgenden Format angegeben: `MODIFIER+KEY`. Es gibt folgende M
|
|||||||
|
|
||||||
Chaoscaot markierte diese Unterhaltung als gelöst
Lixfel
hat
Jetzt großgeschrieben oder kleingeschrieben? Unklar. Jetzt großgeschrieben oder kleingeschrieben? Unklar.
|
|||||||
Es können auch mehrere Modifier angegeben werden, z.B. `ctrl+shift+alt+c`. Die Reihenfolge der Modifier und des Keys ist egal.
|
Es können auch mehrere Modifier angegeben werden, z.B. `ctrl+shift+alt+c`. Die Reihenfolge der Modifier und des Keys ist egal.
|
||||||
|
|
||||||
## Event Type
|
## Eventtypen
|
||||||
Einige Events sind auch cancelbar, dazu muss die Funktion `setCanceled()` aufgerufen werden.
|
Einige Events sind auch abbrechbar, dazu muss die Funktion `setCanceled()` aufgerufen werden.
|
||||||
Es gibt folgende Event-Typen:
|
|
||||||
|
|
||||||
| Name | Wenn | Parameter | Cancelbar |
|
| Name | Wenn | Parameter | Abbrechbar |
|
||||||
|---------------------|-----------------------------------------------------|---------------------------------|-----------|
|
|---------------------|-----------------------------------------------------|---------------------------------|------------|
|
||||||
Chaoscaot markierte diese Unterhaltung als gelöst
Veraltet
Lixfel
hat
Eventtypen Eventtypen
|
|||||||
| `FF` | Beim Doppelten Drücken der Swap-Hands taste | NIL | false |
|
| `DoubleSwap` | Beim Doppelten Drücken der Swap-Hands taste | NIL | false |
|
||||||
Chaoscaot markierte diese Unterhaltung als gelöst
Veraltet
Lixfel
hat
Abbrechbar. Diesen Satz am besten unter die Tabelle. Abbrechbar. Diesen Satz am besten unter die Tabelle.
|
|||||||
| `PlaceBlock` | Beim Platzieren von Blöcken | [BlockEvent](#blockevent) | true |
|
| `PlaceBlock` | Beim Platzieren von Blöcken | [BlockEvent](#blockevent) | true |
|
||||||
Chaoscaot markierte diese Unterhaltung als gelöst
Veraltet
Lixfel
hat
Dopplung mit Überschrift. Dopplung mit Überschrift.
|
|||||||
| `BreakBlock` | Beim Zerstören von Blöcken | [BlockEvent](#blockevent) | true |
|
| `BreakBlock` | Beim Zerstören von Blöcken | [BlockEvent](#blockevent) | true |
|
||||||
| `RightClick` | Beim Rechts klicken | [InteractEvent](#interactevent) | true |
|
| `RightClick` | Beim Rechtsklick | [InteractEvent](#interactevent) | true |
|
||||||
| `LeftClick` | Beim Links Klicken | [InteractEvent](#interactevent) | true |
|
| `LeftClick` | Beim Linksklick | [InteractEvent](#interactevent) | true |
|
||||||
| `TNTSpawn` | Wenn ein TNT in der aktuellen Region spawnt | NIL | false |
|
| `TNTSpawn` | Wenn ein TNT in der aktuellen Region spawnt | NIL | false |
|
||||||
Chaoscaot markierte diese Unterhaltung als gelöst
Veraltet
Lixfel
hat
Lieber DoubleSwap statt FF nennen. Lieber DoubleSwap statt FF nennen.
YoyoNow
hat
Würde ich nicht machen, weil wir es so schon eingeführt hatten vorher. Würde ich nicht machen, weil wir es so schon eingeführt hatten vorher.
Lixfel
hat
Das macht es dennoch nicht klarer verständlich für neue, und wenn man das sowieso einmal komplett neu macht, sollte man es richtig machen. Das macht es dennoch nicht klarer verständlich für neue, und wenn man das sowieso einmal komplett neu macht, sollte man es richtig machen.
|
|||||||
| `TNTExplode` | Wenn ein TNT in der aktuellen Region explodiert | [Position](#position) | true |
|
| `TNTExplode` | Wenn ein TNT in der aktuellen Region explodiert | [Position](#position) | true |
|
||||||
| `TNTExplodeInBuild` | Wenn ein TNT in der aktuellen Bau Region explodiert | [Position](#position) | true |
|
| `TNTExplodeInBuild` | Wenn ein TNT in der aktuellen Bau Region explodiert | [Position](#position) | true |
|
||||||
| `SelfJoin` | Wenn man selbst den Server betritt | NIL | false |
|
| `SelfJoin` | Wenn man selbst den Server betritt | NIL | false |
|
||||||
Chaoscaot markierte diese Unterhaltung als gelöst
Veraltet
Lixfel
hat
Rechtsklick Rechtsklick
|
|||||||
| `SelfLeave` | Wenn man den Server verlässt | NIL | false |
|
| `SelfLeave` | Wenn man den Server verlässt | NIL | false |
|
||||||
Chaoscaot markierte diese Unterhaltung als gelöst
Veraltet
Lixfel
hat
Linksklick Linksklick
|
|||||||
| `DropItem` | Wenn man ein item Droppt | (type: Material) | true |
|
| `DropItem` | Wenn man ein Item droppt | (type: Material) | true |
|
||||||
| `EntityDeath` | Wenn ein Entity Stirbt | (type: Entity Type) | false |
|
| `EntityDeath` | Wenn ein Entity stirbt | (type: Entity Type) | false |
|
||||||
|
|
||||||
### BlockEvent
|
### BlockEvent
|
||||||
Das übergebene Objekt an den Handler hat folgende Variablen:
|
Das übergebene Objekt an den Handler hat folgende Variablen:
|
||||||
@ -263,8 +258,8 @@ print("Hello, World!")
|
|||||||
Hello, World!
|
Hello, World!
|
||||||
```
|
```
|
||||||
|
|
||||||
## BauGUI on FF
|
## BauGUI on DoubleSwap
|
||||||
Das default Script für das Öffnen des BauGUIs
|
Das Standardskript für das Öffnen des BauGUIs
|
||||||
|
|
||||||
#### Code
|
#### Code
|
||||||
```lua
|
```lua
|
||||||
@ -288,7 +283,7 @@ command("sl", handler)
|
|||||||
```
|
```
|
||||||
|
|
||||||
## Paste Hotkey
|
## Paste Hotkey
|
||||||
Ein Hotkey zum pasten des Clipboard-Inhalts.
|
Ein Hotkey zum Pasten des Clipboard-Inhalts.
|
||||||
|
|
||||||
#### Code
|
#### Code
|
||||||
```lua
|
```lua
|
||||||
|
Befehl