2023-05-19 19:29:38 +02:00
# 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 )
2023-05-21 11:27:36 +02:00
* [trace ](#trace )
2023-05-19 19:29:38 +02:00
* [server ](#server )
2023-05-21 11:27:36 +02:00
* [tps ](#tps )
2023-05-19 19:29:38 +02:00
* [SteamWar.de-Global-Api ](#steamwarde-global-api )
2023-05-21 11:27:36 +02:00
* [Hotkeys ](#hotkeys )
2023-05-19 19:29:38 +02:00
* [Event Type ](#event-type )
* [BlockEvent ](#blockevent )
* [InteractEvent ](#interactevent )
* [Position ](#position )
* [Beispiele ](#beispiele )
* [Hello, World! ](#hello-world )
* [Code ](#code )
* [Ausgabe ](#ausgabe )
2023-05-21 11:27:36 +02:00
* [BauGUI on FF ](#baugui-on-ff )
* [Code ](#code-1 )
* [SL Command ](#sl-command )
* [Code ](#code-2 )
* [Paste Hotkey ](#paste-hotkey )
* [Code ](#code-3 )
2023-05-19 19:29:38 +02:00
<!-- 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 |
2023-05-21 11:27:36 +02:00
| `pos` | pos(Number, Number, Number) | Erstellt aus drei Zahlen eine Position-Table, sind unter den Namen `x` , `y` und `z` abgespeichert |
2023-05-19 19:29:38 +02:00
| `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:
2023-05-21 11:27:36 +02:00
| 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 |
| `fire` | fire(): Boolean | Gibt den Fire-Mode der Region zurück |
| `freeze` | freeze(): Boolean | Gibt den Freeze-Mode der Region zurück |
| `protect` | protect(): Boolean | Gibt den Protect-Mode der Region zurück |
| `loader` | pvp(): String | Gibt den Status des Loaders des Spielers zurück, die werte sind: `OFF` , `SETUP` , `RUNNING` , `PAUSE` , `END` |
2023-05-19 19:29:38 +02:00
Es gibt folgende Variablen:
2023-05-21 11:27:36 +02:00
| Name | Beschreibung |
|---------|-----------------|
| `tnt` | [tnt ](#tnt ) |
| `trace` | [trace ](#trace ) |
2023-05-19 19:29:38 +02:00
#### tnt
2023-05-21 11:27:36 +02:00
Die `tnt` -Api stellt Funktionen zur Verfügung, die den TNT-Modus in der Region des Spielers betreffen.
Es gibt folgende Funktionen:
| Name | Signature | Beschreibung |
|-----------|--------------------|-------------------------------------------------------------------------------------|
| `mode` | mode(): String | Gibt den Aktuellen TNT-Modus zurück, die werte sind: `ALLOW` , `DENY` oder `ONLY_TB` |
| `enabled` | enabled(): Boolean | Gibt zurück, ob der TNT-Modus in der Region des Spielers aktiviert ist oder nicht |
| `onlyTb` | onlyTb(): Boolean | Gibt zurück, ob der TNT-Modus auf Only-Tb ist |
2023-05-19 19:29:38 +02:00
2023-05-21 11:27:36 +02:00
#### trace
Die `trace` -Api stellt Funktionen zur Verfügung, die den Status des Tracers der Region betreffen.
Es gibt folgende Funktionen:
| Name | Signature | Beschreibung |
|----------|-------------------|--------------------------------------------------------------------------------|
| `active` | active(): Boolean | Gibt zurück, ob der Tracer in der Region des Spielers aktiviert ist oder nicht |
| `auto` | auto(): Boolean | Gibt zurück, ob der Tracer in der Region ein Auto-Tracer ist. |
| `status` | status(): String | Gibt den Status des Tracers zurück |
| `time` | time(): String | Gibt die Zeit des Tracers zurück |
2023-05-19 19:29:38 +02:00
## server
2023-05-21 11:27:36 +02:00
Die `server` -Api stellt Funktionen zur Verfügung, die den Server betreffen.
Es gibt folgende Funktionen:
| Name | Signature | Beschreibung |
|--------------|-------------------------|----------------------------------------------------|
| `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 |
| `getBlockAt` | getBlockAt(Pos): String | Gibt das Material an der Position zurück |
| `setBlockAt` | setBlockAt(Pos, String) | Setzt das Material an der angegebenen Stelle |
Es gibt folgende Variablen:
| Name | Beschreibung |
|-------|--------------|
| `tps` | [tps ](#tps ) |
#### tps
Die `tps` -Api stellt Funktionen zur Verfügung, die die TPS des Servers betreffen.
Es gibt folgende Funktionen:
| Name | Signature | Beschreibung |
|--------------|----------------------|-------------------------------------------------------------------|
| `current` | current(): Number | Gibt die aktuelle TPS 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 |
| `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 |
| `tenMinute` | tenMinute(): Number | Gibt die durchschnittliche TPS über die letzte 10 Minuten zurück |
| `limit` | limit(): Number | Gibt den TPS-Limit zurück |
2023-05-19 19:29:38 +02:00
# 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:
2023-05-21 13:02:15 +02:00
| Name | Signature | Beschreibung |
|-----------|-----------------------------------|-----------------------------------------------------------------------------|
| `event` | event(EventType, Function(Any)) | Registriere einen Event Handler |
| `command` | command(String, Function(Args)) | Registriere einen Command |
| `hotkey` | hotkey(String, Function(Boolean)) | Registriere einen Hotkey, the function gets a boolean if the key is pressed |
2023-05-19 19:29:38 +02:00
Es gibt folgende Variablen:
2023-05-21 11:27:36 +02:00
| Name | Beschreibung |
|----------|----------------------------------|
| `events` | Siehe: [Event Type ](#event-type ) |
## Hotkeys
Hotkeys werden im folgenden Format angegeben: `MODIFIER+KEY` . 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.
2023-05-19 19:29:38 +02:00
## 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!
```
2023-05-21 11:27:36 +02:00
## BauGUI on FF
Das default Script für das Öffnen des BauGUIs
#### Code
```lua
function handler(event)
exec("gui")
end
event(events.FF, handler)
```
## SL Command
Ein einfacher Command Redefiner.
#### Code
```lua
2023-05-21 13:02:15 +02:00
function handler(args)
2023-05-21 11:27:36 +02:00
exec("stoplag")
end
command("sl", handler)
```
## Paste Hotkey
Ein Hotkey zum pasten des Clipboard-Inhalts.
#### Code
```lua
2023-05-21 13:02:15 +02:00
function handler(pressed)
if pressed then
exec("/paste -o")
end
2023-05-21 11:27:36 +02:00
end
hotkey("ctrl+v", handler)
```