SteamWar/BauSystem2.0
Archiviert
12
0
Dieses Repository wurde am 2024-08-05 archiviert. Du kannst Dateien ansehen und es klonen, aber nicht pushen oder Issues/Pull-Requests öffnen.
BauSystem2.0/SCRIPT.md
Chaoscaot 16a6d10472
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Script System Lua
Todo:
* /script and global script storage
* Code Cleanup
2023-05-19 19:29:38 +02:00

184 Zeilen
9.0 KiB
Markdown

# SteamWar.de - Script System
---
<!-- TOC -->
* [SteamWar.de - Script System](#steamwarde---script-system)
* [Einleitung](#einleitung)
* [Basis-Apis](#basis-apis)
* [SteamWar.de-Api](#steamwarde-api)
* [global](#global)
* [player](#player)
* [region](#region)
* [tnt](#tnt)
* [server](#server)
* [SteamWar.de-Global-Api](#steamwarde-global-api)
* [Event Type](#event-type)
* [BlockEvent](#blockevent)
* [InteractEvent](#interactevent)
* [Position](#position)
* [Beispiele](#beispiele)
* [Hello, World!](#hello-world)
* [Code](#code)
* [Ausgabe](#ausgabe)
<!-- TOC -->
## Einleitung
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.
# 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`
# SteamWar.de-Api
In den Scripten gibt es dazu noch folgende globale Variablen:
- [`player`](#player)
- [`region`](#region)
- [`server`](#server)
### global
Die `global`-Api stellt Funktionen zur Verfügung, QOL sind.
Es gibt folgende Funktionen:
| Name | Signature | Beschreibung |
|-----------|----------------------------------|----------------------------------------------------------------------------------------------------|
| `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 |
| `timeout` | timeout(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 |
| `exec` | exec(String...) | Führt den angegebenen Befehl als Spieler aus |
### player
Die `player`-Api stellt Funktionen zur Verfügung, die den Spieler betreffen.
Es gibt folgende Funktionen:
| Name | Signature | Beschreibung |
|---------------|--------------------------------|-------------------------------------------------------------|
| `name` | name(): String | Gibt den `displayName` des Spielers zurück |
| `message` | message(String...) | Sendet den Text in den Chat 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 |
| `y` | y(Number), y(): Number | Setzt oder gibt die Y-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 |
| `pitch` | pitch(Number), pitch(): Number | Setzt oder gibt den Pitch des Spielers |
| `sneaking` | sneaking(): Boolean | Wahr, wenn der Spieler am Sneaken 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 |
| `item` | item(): String | Gibt den Item Type der Main-Hand zurück |
| `offHandItem` | offHandItem(): String | Gibt den Item Type der Off-Hand zurück |
### region
Die `region`-Api stellt Funktion zur Verfügung, die die Region des Spielers betreffen.
Es gibt folgende Funktionen:
| Name | Signature | Beschreibung |
|--------|----------------|--------------------------------------------|
| `name` | name(): String | Gibt den Namen der Region zurück |
| `type` | type(): String | Gibt den Namen des Typen der Region zurück |
Es gibt folgende Variablen:
| Name | Beschreibung |
|--------|--------------|
| `tnt` | [tnt](#tnt) |
#### tnt
## server
# 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.
Es gibt folgende Funktionen:
| Name | Signature | Beschreibung |
|-----------|---------------------------------|---------------------------------|
| `event` | event(EventType, Function(Any)) | Registriere einen Event Handler |
| `command` | cmd(String, Function(Any)) | Registriere einen Command |
Es gibt folgende Variablen:
| Name | Beschreibung |
|--------|----------------------------------|
| `type` | Siehe: [Event Type](#event-type) |
## Event Type
Es gibt folgende Event-Typen:
| Name | Wenn | Parameter |
|---------------------|-----------------------------------------------------|---------------------------------|
| `FF` | Beim Doppelten Drücken der Swap-Hands taste | NIL |
| `PlaceBlock` | Beim Platzieren von Blöcken | [BlockEvent](#blockevent) |
| `BreakBlock` | Beim Zerstören von Blöcken | [BlockEvent](#blockevent) |
| `RightClick` | Beim Rechts klicken | [InteractEvent](#interactevent) |
| `LeftClick` | Beim Links Klicken | [InteractEvent](#interactevent) |
| `TNTSpawn` | Wenn ein TNT in der aktuellen Region spawnt | NIL |
| `TNTExplode` | Wenn ein TNT in der aktuellen Region explodiert | [Position](#position) |
| `TNTExplodeInBuild` | Wenn ein TNT in der aktuellen Bau Region explodiert | [Position](#position) |
| `SelfJoin` | Wenn man selbst den Server betritt | NIL |
| `SelfLeave` | Wenn man den Server verlässt | NIL |
| `DropItem` | Wenn man ein item Droppt | (type: Material) |
| `EntityDeath` | Wenn ein Entity Stirbt | (type: Entity Type) |
### BlockEvent
Das übergebene Objekt an den Handler hat folgende Variablen:
| Name | Beschreibung |
|--------|-----------------------------|
| `x` | Die X-Koordinate des Blocks |
| `y` | Die Y-Koordinate des Blocks |
| `z` | Die Z-Koordinate des Blocks |
| `type` | Das Material des Blocks |
### InteractEvent
Das übergebene Objekt an den Handler hat folgende Variablen:
| Name | Beschreibung |
|------------|-------------------------------------------------------------------------------------------------------------------------------|
| `action` | Die Action die ausgeführt wurde, Mögliche Werte: `RIGHT_CLICK_BLOCK`, `RIGHT_CLICK_AIR`, `LEFT_CLICK_BLOCK`, `LEFT_CLICK_AIR` |
| `hand` | Die Hand die zum ausführen genutzt wird, Mögliche Werte: `HAND`, `OFF_HAND` |
| `block` | Der Typ des Items mit dem geklickt wurde |
| `hasBlock` | Wahr, wenn auf einen Block geklickt wurde |
Wenn `hasBlock` wahr ist, gibt es folgende Variablen:
| Name | Beschreibung |
|-------------|-----------------------------------------|
| `blockX` | Die X-Koordinate des Blocks |
| `blockY` | Die Y-Koordinate des Blocks |
| `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 |
|------|------------------|
| `x` | Die X-Koordinate |
| `y` | Die Y-Koordinate |
| `z` | Die Z-Koordinate |
# Beispiele
## Hello, World!
Ein einfaches Hello, World!-Script.
#### Code
```lua
print("Hello, World!")
```
#### Ausgabe
```
Hello, World!
```