forked from SteamWar/SteamWar
Format code
This commit is contained in:
+90
-50
@@ -2,67 +2,75 @@
|
||||
|
||||
---
|
||||
<!-- TOC -->
|
||||
|
||||
* [SteamWar.de - Script System](#steamwarde---script-system)
|
||||
* [Einleitung](#einleitung)
|
||||
* [Nutzung mit einer IDE](#nutzung-mit-einer-ide)
|
||||
* [Einleitung](#einleitung)
|
||||
* [Nutzung mit einer IDE](#nutzung-mit-einer-ide)
|
||||
* [Basis-Apis](#basis-apis)
|
||||
* [SteamWar.de-Api](#steamwarde-api)
|
||||
* [player](#player)
|
||||
* [random](#random)
|
||||
* [region](#region)
|
||||
* [tnt](#tnt)
|
||||
* [trace](#trace)
|
||||
* [server](#server)
|
||||
* [tps](#tps)
|
||||
* [storage](#storage)
|
||||
* [inventory](#inventory)
|
||||
* [tnt](#tnt)
|
||||
* [trace](#trace)
|
||||
* [server](#server)
|
||||
* [tps](#tps)
|
||||
* [storage](#storage)
|
||||
* [inventory](#inventory)
|
||||
* [SteamWar.de-Global-Api](#steamwarde-global-api)
|
||||
* [Commands](#commands)
|
||||
* [Hotkeys](#hotkeys)
|
||||
* [Eventtypen](#eventtypen)
|
||||
* [BlockEvent](#blockevent)
|
||||
* [InteractEvent](#interactevent)
|
||||
* [Position](#position)
|
||||
* [Commands](#commands)
|
||||
* [Hotkeys](#hotkeys)
|
||||
* [Eventtypen](#eventtypen)
|
||||
* [BlockEvent](#blockevent)
|
||||
* [InteractEvent](#interactevent)
|
||||
* [Position](#position)
|
||||
* [Instabile APIs](#instabile-apis)
|
||||
* [_worldedit](#worldedit)
|
||||
* [_worldedit](#worldedit)
|
||||
* [Beispiele](#beispiele)
|
||||
* [Hello, World!](#hello-world)
|
||||
* [Code](#code)
|
||||
* [Ausgabe](#ausgabe)
|
||||
* [BauGUI on DoubleSwap](#baugui-on-doubleswap)
|
||||
* [Code](#code-1)
|
||||
* [SL Command](#sl-command)
|
||||
* [Code](#code-2)
|
||||
* [Paste Hotkey](#paste-hotkey)
|
||||
* [Code](#code-3)
|
||||
* [Inventory](#inventory-1)
|
||||
* [Code](#code-4)
|
||||
* [Hello, World!](#hello-world)
|
||||
* [Code](#code)
|
||||
* [Ausgabe](#ausgabe)
|
||||
* [BauGUI on DoubleSwap](#baugui-on-doubleswap)
|
||||
* [Code](#code-1)
|
||||
* [SL Command](#sl-command)
|
||||
* [Code](#code-2)
|
||||
* [Paste Hotkey](#paste-hotkey)
|
||||
* [Code](#code-3)
|
||||
* [Inventory](#inventory-1)
|
||||
* [Code](#code-4)
|
||||
|
||||
<!-- TOC -->
|
||||
|
||||
|
||||
## Einleitung
|
||||
Das Script System auf SteamWar.de basiert auf [Lua](https://www.lua.org/docs.html).
|
||||
|
||||
Das Script System auf SteamWar.de basiert auf [Lua](https://www.lua.org/docs.html).
|
||||
Der Code wird einfach in ein Minecraft Buch geschrieben und kann mit einem Links-Klick ausgeführt werden.
|
||||
|
||||
## Nutzung mit einer IDE
|
||||
Im Repository liegen [Lua-Definitionen](sw.def.lua) für [Luanalysis](https://plugins.jetbrains.com/plugin/14698-luanalysis).
|
||||
Diese können in der IDE genutzt werden, um die APIs zu nutzen.
|
||||
|
||||
Im Repository liegen [Lua-Definitionen](sw.def.lua)
|
||||
für [Luanalysis](https://plugins.jetbrains.com/plugin/14698-luanalysis).
|
||||
Diese können in der IDE genutzt werden, um die APIs zu nutzen.
|
||||
|
||||
Einfach die `sw.def.lua` in denselben Ordner wie das Script legen und die IDE sollte die APIs erkennen.
|
||||
|
||||
# Basis-Apis
|
||||
|
||||
Es werden folgende Standard-Apis zur Verfügung gestellt:
|
||||
|
||||
- [`math`](https://www.lua.org/manual/5.4/manual.html#6.7)
|
||||
- [`string`](https://www.lua.org/manual/5.4/manual.html#6.4)
|
||||
- [`table`](https://www.lua.org/manual/5.4/manual.html#6.6)
|
||||
- [`bit32`](https://www.lua.org/manual/5.2/manual.html#6.7)
|
||||
|
||||
# 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.
|
||||
Sie sollten daher nicht verwendet werden, da sie sich noch in der Entwicklung befinden.
|
||||
Diese können auch undokumentierte Funktionen enthalten, die nicht in der Dokumentation aufgeführt sind.
|
||||
|
||||
In den Scripten gibt es dazu noch folgende globale Variablen:
|
||||
|
||||
- [`player`](#player)
|
||||
- [`random`](#random)
|
||||
- [`region`](#region)
|
||||
@@ -84,6 +92,7 @@ Ohne eine Kategorie sind folgende Funktionen verfügbar, die nicht allgemein sin
|
||||
| `join` | length(String, String...): String | Füge die Texte mit den ersten Parameter zusammen |
|
||||
|
||||
### player
|
||||
|
||||
Das `player`-Modul stellt Funktionen zur Verfügung, die den Spieler betreffen.
|
||||
Es gibt folgende Funktionen:
|
||||
|
||||
@@ -105,6 +114,7 @@ Es gibt folgende Funktionen:
|
||||
| `closeInventory` | closeInventory() | Schließe das aktuell geöffnete Inventar des Spielers |
|
||||
|
||||
### random
|
||||
|
||||
Das `random`-Modul stellt Funktionen zur Verfügung, die Zufallszahlen betreffen.
|
||||
Es gibt folgende Funktionen:
|
||||
|
||||
@@ -119,8 +129,9 @@ Es gibt folgende Funktionen:
|
||||
| nextBool | nextBool(): Boolean | Gibt true oder false zurück |
|
||||
|
||||
### region
|
||||
|
||||
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 |
|
||||
|-----------|---------------------|------------------------------------------------------------------------------------------------------------|
|
||||
@@ -141,6 +152,7 @@ Es gibt folgende weitere Module:
|
||||
| `trace` | [trace](#trace) |
|
||||
|
||||
#### tnt
|
||||
|
||||
Das `tnt`-Modul stellt Funktionen zur Verfügung, die den TNT-Modus in der Region des Spielers betreffen.
|
||||
Es gibt folgende Funktionen:
|
||||
|
||||
@@ -151,8 +163,8 @@ Es gibt folgende Funktionen:
|
||||
| `onlyTb` | onlyTb(): Boolean | Gibt zurück, ob der TNT-Modus auf Only-Tb ist |
|
||||
| `onlyBuild` | onlyBuild(): Boolean | Gibt zurück, ob der TNT-Modus auf Only-Build ist |
|
||||
|
||||
|
||||
#### trace
|
||||
|
||||
Das `trace`-Modul stellt Funktionen zur Verfügung, die den Status des Tracers der Region betreffen.
|
||||
Es gibt folgende Funktionen:
|
||||
|
||||
@@ -164,6 +176,7 @@ Es gibt folgende Funktionen:
|
||||
| `time` | time(): String | Gibt die Zeit des Tracers zurück |
|
||||
|
||||
## server
|
||||
|
||||
Das `server`-Modul stellt Funktionen zur Verfügung, die den Server betreffen.
|
||||
Es gibt folgende Funktionen:
|
||||
|
||||
@@ -181,6 +194,7 @@ Es gibt folgende weitere Module:
|
||||
| `tps` | [tps](#tps) |
|
||||
|
||||
#### tps
|
||||
|
||||
Das `tps`-Modul stellt Funktionen zur Verfügung, die die TPS des Servers betreffen.
|
||||
Es gibt folgende Funktionen:
|
||||
|
||||
@@ -195,6 +209,7 @@ Es gibt folgende Funktionen:
|
||||
| `limit` | limit(): Number | Gibt das TPS-Limit zurück |
|
||||
|
||||
## storage
|
||||
|
||||
Das `storage`-Modul stellt Funktionen zur Verfügung, mit welchen man Werte speichern kann.
|
||||
|
||||
Es gibt folgende Module:
|
||||
@@ -217,6 +232,7 @@ Alle Module haben folgende Funktionen:
|
||||
|
||||
Ein Accessor ist ein Objekt, womit du direkt auf einen Wert zugreifen kannst und es ändern kannst.
|
||||
Es geht wie folgt:
|
||||
|
||||
```lua
|
||||
keyAccessor = storage.player.accessor("key")
|
||||
|
||||
@@ -225,12 +241,13 @@ print(keyAccessor()) -- Gibt den Wert zurück
|
||||
```
|
||||
|
||||
## inventory
|
||||
|
||||
Das `inventory`-Modul stellt Funktionen zur Verfügung, um ein Inventar zu öffnen.
|
||||
Es gibt folgende Funktionen:
|
||||
|
||||
| Name | Signature | Beschreibung |
|
||||
|----------|-----------------------------------|-------------------------------------------------------------------|
|
||||
| `create` | create(String, Number): Inventory | Erstellt ein Inventar mit dem Title und der Anzahl an Zeilen |
|
||||
| Name | Signature | Beschreibung |
|
||||
|----------|-----------------------------------|--------------------------------------------------------------|
|
||||
| `create` | create(String, Number): Inventory | Erstellt ein Inventar mit dem Title und der Anzahl an Zeilen |
|
||||
|
||||
Das `Inventory`-Objekt hat folgende Funktionen:
|
||||
|
||||
@@ -256,6 +273,7 @@ Wenn eine Barrier statt des richtigen Items angezeigt wird, dann ist das angegeb
|
||||
```
|
||||
|
||||
# SteamWar.de-Global-Api
|
||||
|
||||
Mit `/script` kann man Script-Bücher global abspeichern. Diese haben dann zugrif auf die `global`-Api.
|
||||
Die `global`-Api stellt Funktionen zur Verfügung um auf Events, Commands und Hotkeys mit einem Script zu reagieren.
|
||||
|
||||
@@ -274,20 +292,28 @@ Es gibt folgende Variablen:
|
||||
| `events` | Siehe: [Event Type](#eventtypen) |
|
||||
|
||||
## Commands
|
||||
Der Command Handler kriegt eine Liste aller angegeben argumenten. Die Argumente sind vom Typ `String`. Mit dem Wert gespeichert unter `args.alias` oder `args["alias"]` erhältst du, welcher command eingegeben wurde. Wenn ein handler für mehrere Befehle registriert wurde kannst du es hiermit erkennen.
|
||||
Du kannst `args.hasShortFlag(String)` um herauszufinden ob eine Flag angegeben wurde wie zum Beispiel `-f`. Mit `args.removeShortFlag(String)` kannst du die Flag entfernen und erhältst ob sie angegeben wurde.
|
||||
|
||||
Der Command Handler kriegt eine Liste aller angegeben argumenten. Die Argumente sind vom Typ `String`. Mit dem Wert
|
||||
gespeichert unter `args.alias` oder `args["alias"]` erhältst du, welcher command eingegeben wurde. Wenn ein handler für
|
||||
mehrere Befehle registriert wurde kannst du es hiermit erkennen.
|
||||
Du kannst `args.hasShortFlag(String)` um herauszufinden ob eine Flag angegeben wurde wie zum Beispiel `-f`. Mit
|
||||
`args.removeShortFlag(String)` kannst du die Flag entfernen und erhältst ob sie angegeben wurde.
|
||||
|
||||
## Hotkeys
|
||||
|
||||
Hotkeys werden im folgenden Format angegeben: `MODIFIER+KEY`. Bei den Hotkey erstellung ist die Großschreibung egal. 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`
|
||||
- `shift`
|
||||
- `alt`
|
||||
- `meta`
|
||||
|
||||
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.
|
||||
|
||||
## Eventtypen
|
||||
|
||||
Einige Events sind auch abbrechbar, dazu muss die Funktion `setCancelled()` aufgerufen werden.
|
||||
|
||||
| Name | Wenn | Parameter | Abbrechbar |
|
||||
@@ -306,6 +332,7 @@ Einige Events sind auch abbrechbar, dazu muss die Funktion `setCancelled()` aufg
|
||||
| `EntityDeath` | Wenn ein Entity stirbt | (type: Entity Type) | false |
|
||||
|
||||
### BlockEvent
|
||||
|
||||
Das übergebene Objekt an den Handler hat folgende Variablen:
|
||||
|
||||
| Name | Beschreibung |
|
||||
@@ -316,6 +343,7 @@ Das übergebene Objekt an den Handler hat folgende Variablen:
|
||||
| `type` | Das Material des Blocks |
|
||||
|
||||
### InteractEvent
|
||||
|
||||
Das übergebene Objekt an den Handler hat folgende Variablen:
|
||||
|
||||
| Name | Beschreibung |
|
||||
@@ -334,8 +362,8 @@ Wenn `hasBlock` wahr ist, gibt es folgende Variablen:
|
||||
| `blockZ` | Die Z-Koordinate des Blocks |
|
||||
| `blockFace` | Die Seite des Blocks die geklickt wurde |
|
||||
|
||||
|
||||
### Position
|
||||
|
||||
Die Position ist ein Objekt mit folgenden Variablen:
|
||||
|
||||
| Name | Beschreibung |
|
||||
@@ -345,6 +373,7 @@ Die Position ist ein Objekt mit folgenden Variablen:
|
||||
| `z` | Die Z-Koordinate |
|
||||
|
||||
# Instabile APIs
|
||||
|
||||
Hier sind einige APIs aufgelistet, die nicht stabil sind und sich jederzeit ändern können.
|
||||
|
||||
## _worldedit
|
||||
@@ -353,67 +382,78 @@ Hier sind einige APIs aufgelistet, die nicht stabil sind und sich jederzeit änd
|
||||
|-------------|-----------------------------------------------------------|-----------------------------------|
|
||||
| `selection` | selection(Liste\<Pos>), selection(): {min: Pos, max: Pos} | Die aktuelle auswahl des Spielers |
|
||||
|
||||
|
||||
|
||||
# Beispiele
|
||||
|
||||
## Hello, World!
|
||||
|
||||
Ein einfaches Hello, World!-Script.
|
||||
|
||||
#### Code
|
||||
|
||||
```lua
|
||||
print("Hello, World!")
|
||||
```
|
||||
|
||||
#### Ausgabe
|
||||
|
||||
```
|
||||
Hello, World!
|
||||
```
|
||||
|
||||
## BauGUI on DoubleSwap
|
||||
|
||||
Das Standardskript für das Öffnen des BauGUIs
|
||||
|
||||
#### Code
|
||||
|
||||
```lua
|
||||
function handler(event)
|
||||
exec("gui")
|
||||
function handler(event)
|
||||
exec("gui")
|
||||
end
|
||||
|
||||
event(events.DoubleSwap, handler)
|
||||
```
|
||||
|
||||
## SL Command
|
||||
|
||||
Ein einfacher Command Redefiner.
|
||||
|
||||
#### Code
|
||||
|
||||
```lua
|
||||
function handler(args)
|
||||
exec("stoplag")
|
||||
exec("stoplag")
|
||||
end
|
||||
|
||||
command("sl", handler)
|
||||
```
|
||||
|
||||
## Paste Hotkey
|
||||
|
||||
Ein Hotkey zum Pasten des Clipboard-Inhalts.
|
||||
|
||||
#### Code
|
||||
|
||||
```lua
|
||||
function handler(pressed)
|
||||
if pressed then
|
||||
exec("/paste -o")
|
||||
end
|
||||
if pressed then
|
||||
exec("/paste -o")
|
||||
end
|
||||
end
|
||||
|
||||
hotkey("ctrl+v", handler)
|
||||
```
|
||||
|
||||
## Inventory
|
||||
|
||||
Ein Beispiel für ein Inventar.
|
||||
|
||||
#### Code
|
||||
|
||||
```lua
|
||||
inv = inventory.create("Test Inv", 3)
|
||||
inv.item(13, "STONE", "Ich bin ein Stein", function(e) player.chat(e) end, {"Die Lore", "Die Zweite Zeile"}, true)
|
||||
inv.item(13, "STONE", "Ich bin ein Stein", function(e)
|
||||
player.chat(e)
|
||||
end, { "Die Lore", "Die Zweite Zeile" }, true)
|
||||
inv.open()
|
||||
```
|
||||
Reference in New Issue
Block a user