diff --git a/_de/players/formspecs.md b/_de/players/formspecs.md index 3f5f56b..bacc200 100644 --- a/_de/players/formspecs.md +++ b/_de/players/formspecs.md @@ -23,14 +23,14 @@ submit_vuln: -In diesem Kapitel werden wir lernen, wie man einen formspec erstellt und ihn dem Benutzer anzeigt. -Ein formspec ist der Spezifikationscode für ein Form. +In diesem Kapitel werden wir lernen, wie man einen Formspec erstellt und ihn dem Benutzer anzeigt. +Ein Formspec ist der Spezifikationscode für ein Form. In Minetest sind Forms Fenster wie das Spielerinventar und können eine eine Vielzahl von Elementen wie Beschriftungen, Schaltflächen und Felder enthalten. Beachten Sie, dass Sie, wenn Sie keine Benutzereingaben benötigen, zum Beispiel wenn Sie nur Informationen für den Spieler bereitstellen möchten, Sie die Verwendung von -[Heads Up Display (HUD)](hud.html)-Elemente anstelle von Formularen verwenden sollten, da +[Heads Up Display (HUD)](hud.html)-Elementen anstelle von Formspecs verwenden sollten, da unerwartete Fenster das Spielgeschehen stören können. - [Reale oder Legacy-Koordinaten](#reale-oder-legacy-koordinaten) @@ -49,11 +49,11 @@ unerwartete Fenster das Spielgeschehen stören können. ## Reale oder Legacy-Koordinaten -In älteren Versionen von Minetest waren die formspecs inkonsistent. Die Art und Weise, wie verschiedene -Elemente auf unerwartete Art und Weise positioniert wurden; es war schwierig, die -Platzierung der Elemente vorherzusagen und auszurichten. Minetest 5.1.0 enthält eine Funktion +In älteren Versionen von Minetest waren die Formspecs inkonsistent. Wegen der Art und Weise, wie verschiedene +Elemente auf unerwartete Art und Weise positioniert wurden war es schwierig, die +Platzierung der Elemente vorherzusagen und auszurichten. Minetest 5.1.0 enthält eine Funktion namens Koordinaten, die dieses Problem durch die Einführung eines konsistenten -Koordinatensystem. Die Verwendung von realen Koordinaten wird dringend empfohlen, und deshalb +Koordinatensystem beheben. Die Verwendung von realen Koordinaten wird dringend empfohlen, und deshalb dieses Kapitel ausschließlich diese verwenden. Die Verwendung einer formspec_version von 2 oder höher aktiviert reale Koordinaten. @@ -75,37 +75,37 @@ Sie besteht aus einer Reihe von Elementen mit der folgenden Form: bo[param1] -Elemente sind Elemente wie Textfelder oder Schaltflächen oder können Metadaten sein wie -wie Größe oder Hintergrund sein. Sie sollten nachschlagen in der -[lua_api.txt](https://minetest.gitlab.io/minetest/formspec/) +Elemente sind Elemente wie Textfelder oder Schaltflächen oder können Metadaten wie Größe +oder Hintergrund sein. Sie sollten nachschlagen in der +[lua_api.txt 🇬🇧](https://minetest.gitlab.io/minetest/formspec/) für eine Liste aller möglichen Elemente. ### Header -Der Header eines formspec enthält Informationen, die zuerst erscheinen müssen. Diese -umfasst die Größe des formspec, die Position, den Anker und ob das +Der Header eines Formspec enthält Informationen, die zuerst erscheinen müssen. Diese +umfasst die Größe des Formspec, die Position, den Anker und ob das spielweite Thema angewendet werden soll. Die Elemente im Header müssen in einer bestimmten Reihenfolge definiert werden, sonst -wird ein Fehler angezeigt. Diese Reihenfolge ist im obigen Absatz angegeben und, wie immer, +wird ein Fehler angezeigt. Diese Reihenfolge ist im obigen Absatz angegeben und - wie immer - in der Lua-API-Referenz dokumentiert. -Die Größe wird in formspec-Slots angegeben - eine Maßeinheit, die ungefähr -etwa 64 Pixel entspricht, jedoch abhängig von der Bildschirmdichte und den Skalierungs +Die Größe wird in Formspec-Slots angegeben - eine Maßeinheit, die etwa +64 Pixeln entspricht, jedoch abhängig von der Bildschirmdichte und den Skalierungs Einstellungen des Clients ist. Hier ist ein formspec mit der Größe "2,2": formspec_version[4] size[2,2] -Beachten Sie, dass wir die formspec-Sprachversion ausdrücklich definiert haben müssen. +Beachten Sie, dass wir die Formspec-Sprachversion ausdrücklich definiert haben müssen. Ohne dies wird stattdessen das Altsystem verwendet - was die Verwendung der konsistenten Elementpositionierung und anderer neuer Funktionen verhindert. -Die Elemente position und Anker werden verwendet, um das formspec auf dem Bildschirm zu platzieren. +Die Elemente position und anchor werden verwendet, um das Formspec auf dem Bildschirm zu platzieren. Die Position legt fest, wo auf dem Bildschirm das formspec sein wird, und ist standardmäßig auf die Mitte (`0,5,0,5`). Der Anker legt fest, wo auf dem formspec die Position ist, -so dass Sie das formspec mit dem Rand des Bildschirms ausrichten können. Das formspec +so dass Sie das Formspec mit dem Rand des Bildschirms ausrichten können. Das Formspec kann auf diese Weise links vom Bildschirm platziert werden: formspec_version[4] @@ -113,7 +113,7 @@ kann auf diese Weise links vom Bildschirm platziert werden: position[0,0.5] anchor[0,0.5] -Dadurch wird der Anker an den linken mittleren Rand des formspec-Feldes gesetzt, und die +Dadurch wird der Anker an den linken mittleren Rand des Formspec-Feldes gesetzt, und die Position dieses Ankers auf der linken Seite des Bildschirms. @@ -127,11 +127,11 @@ Position dieses Ankers auf der linken Seite des Bildschirms. Der beste Weg, etwas zu lernen, ist, etwas zu machen, also lasst uns ein Ratespiel machen. -Das Prinzip ist einfach: Der Mod entscheidet sich für eine Zahl, und die Spieler -errät die Zahl. Der Mod sagt dann, ob die erratene Zahl höher oder niedriger ist als +Das Prinzip ist einfach: Die Mod entscheidet sich für eine Zahl, und der Spieler +errät die Zahl. Die Mod sagt dann, ob die erratene Zahl höher oder niedriger ist als die tatsächliche Zahl. -Zunächst erstellen wir eine Funktion, die den formspec-Code erzeugt. Es ist gute Praxis, dies +Zunächst erstellen wir eine Funktion, die den Formspec-Code erzeugt. Es ist gute Praxis, dies zu tun, da es die Wiederverwendung an anderer Stelle erleichtert.
@@ -157,11 +157,11 @@ end ``` Im obigen Code platzieren wir ein Feld, eine Beschriftung und eine Schaltfläche. -Ein Feld erlaubt die Eingabe von Text Texteingabe, und eine Schaltfläche dient zum +Ein Feld erlaubt die Eingabe von Text und eine Schaltfläche dient zum Absenden des Forms. Sie werden feststellen, dass die Elemente sorgfältig positioniert sind, um Padding und Abstände hinzuzufügen, was später erklärt wird. -Als Nächstes wollen wir dem Spieler erlauben, den formspec anzuzeigen. Der beste Weg, dies zu tun +Als Nächstes wollen wir dem Spieler erlauben, den Formspec anzuzeigen. Der beste Weg, dies zu tun ist die Verwendung von `show_formspec`: ```lua @@ -176,8 +176,8 @@ minetest.register_chatcommand("game", { }) ``` -Die Funktion `show_formspec` akzeptiert einen Spielernamen, den Namen der formspec und die -formspec selbst. Der formspec-Name sollte ein gültiger Itemname sein, d.h. im Format +Die Funktion `show_formspec` akzeptiert einen Spielernamen, den Namen der Formspec und den +Formspec selbst. Der Formspec-Name sollte ein gültiger Itemname sein, d.h. im Format `Modname:Gegenstandsname`. @@ -190,7 +190,7 @@ formspec selbst. Der formspec-Name sollte ein gültiger Itemname sein, d.h. im F -Padding ist der Abstand zwischen dem Rand des formspec und seinem Inhalt oder zwischen nicht verwandten Elementen, +Padding ist der Abstand zwischen dem Rand des Formspec und seinem Inhalt oder zwischen nicht verwandten Elementen, dargestellt in Rot. Abstand ist der Abstand zwischen zusammenhängenden Elementen, der blau dargestellt wird. @@ -202,7 +202,7 @@ Ein Padding von `0,375` und ein Abstand von `0,25` sind üblich. ### Empfang von Formspec-Übermittlungen Wenn `show_formspec` aufgerufen wird, wird der formspec an den Client gesendet, um angezeigt zu werden. -Damit formspecs nützlich sind, müssen Informationen vom Client zum Server zurückgeschickt werden. +Damit Formspecs nützlich sind, müssen Informationen vom Client zum Server zurückgeschickt werden. Die Methode dafür heißt formspec field submission, und für `show_formspec` wird diese Übermittlung über einen globalen Callback empfangen: @@ -220,7 +220,7 @@ end) ``` Die in `minetest.register_on_player_receive_fields` angegebene Funktion wird -jedes Mal aufgerufen, wenn ein Benutzer ein Formular absendet. Die meisten Callbacks müssen den der Funktion übergebenen Formularnamen prüfen +jedes Mal aufgerufen, wenn ein Benutzer ein Formular absendet. Die meisten Callbacks müssen den an die Funktion übergebenen Formularnamen überprüfen und beenden, wenn es sich nicht um das richtige Form handelt; einige müssen jedoch möglicherweise für mehrere Formulare oder für alle Formulare funktionieren. @@ -290,8 +290,8 @@ function guessing.get_formspec(name, context) end ``` -Beachten Sie, dass es gute Praxis ist, wenn `get_formspec` den Context nur liest und nicht -überhaupt nicht zu aktualisieren. Dies kann die Funktion einfacher machen, und auch leichter zu testen. +Beachten Sie, dass es gute Praxis ist, wenn `get_formspec` den Context nur liest und +überhaupt nicht zu aktualisiert. Dies kann die Funktion einfacher machen, und auch leichter zu testen. Und schließlich müssen wir den Handler aktualisieren, um den Context mit der Vermutung zu aktualisieren: @@ -307,23 +307,23 @@ end ## Formspec-Quellen -Es gibt drei verschiedene Möglichkeiten, wie ein Formspec an den client übermittelt werden kann: +Es gibt drei verschiedene Möglichkeiten, wie ein Formspec an den Client übermittelt werden kann: * [show_formspec](#ratespiel): Bei der oben beschriebenen Methode werden die Felder durch `register_on_player_receive_fields` empfangen. * [Node Meta Formspecs](#node-meta-formspecs): der Node enthält in seinen Metadaten eine Formularvorgabe, und der Client zeigt es *sofort* an, wenn der Spieler mit der rechten Maustaste klickt. Felder werden durch eine Methode in der Node-Definition namens `on_receive_fields` empfangen. -* [Player Inventory Formspecs](#spieler-inventar-formspecs): der formspec wird irgendwann an den Client gesendet und dann - sofort angezeigt, wenn der Spieler auf "i" drückt. Felder werden empfangen durch +* [Player Inventory Formspecs](#spieler-inventar-formspecs): der Formspec wird irgendwann an den Client gesendet und dann + sofort angezeigt, wenn der Spieler auf "i" drückt. Felder werden durch `register_on_player_receive_fields` empfangen. ### Node Meta Formspecs -`minetest.show_formspec` ist nicht die einzige Möglichkeit, einen formspec anzuzeigen; Sie können auch -formspecs zu den Metadaten eines [Nodes](node_metadata.html) hinzufügen. Zum Beispiel, +`minetest.show_formspec` ist nicht die einzige Möglichkeit, einen Formspec anzuzeigen; Sie können auch +Formspecs zu den Metadaten eines [Nodes](node_metadata.html) hinzufügen. Zum Beispiel, wird dieses bei Truhen verwendet, um ein schnelleres Öffnen zu ermöglichen - -man muss nicht darauf warten, dass der Server dem Spieler den formspec für die Truhe schickt. +man muss nicht darauf warten, dass der Server dem Spieler den Formspec für die Truhe schickt. ```lua minetest.register_node("meinemod:rechtsclick", { @@ -352,25 +352,24 @@ minetest.register_node("meinemod:rechtsclick", { }) ``` -Auf diese Weise eingestellte formspecs lösen nicht denselben Callback aus. Um +Auf diese Weise eingestellte Formspecs lösen nicht denselben Callback aus. Um Formulareingaben für meta formspecs zu erhalten, müssen Sie einen `on_receive_fields`-Eintrag bei der Registrierung des Nodes enthalten. Diese Art von Callback wird ausgelöst, wenn Sie die Eingabetaste in einem Feld drücken, was mit `minetest.show_formspec` unmöglich ist; -allerdings kann diese Art von Formular nur durch Rechtsklick auf einen -Node. Sie kann nicht programmatisch ausgelöst werden. +diese Art von Formular kann jedoch nur durch Rechtsklick auf einen Knoten angezeigt werden. Sie kann nicht programmatisch ausgelöst werden. ### Spieler Inventar Formspecs -Der formspec für das Spielerinventar wird angezeigt, wenn der Spieler auf i drückt. -Der globale Callback wird verwendet, um Ereignisse von diesem formspec zu empfangen, und der +Der Formspec für das Spielerinventar wird angezeigt, wenn der Spieler auf i drückt. +Der globale Callback wird verwendet, um Ereignisse von diesem Formspec zu empfangen, und der formname ist `""`. Es gibt eine Reihe von verschiedenen Mods, die es ermöglichen, das das Spielerinventar anzupassen. Die offiziell empfohlene Mod ist [Simple Fast Inventory (sfinv)](https://github.com/rubenwardy/sfinv/blob/master/Tutorial.md), -und ist in Minetest Game enthalten. Ich als Übersetzer emphele jedoch +und ist in Minetest Game enthalten. Ich als Übersetzer empfehle jedoch eher [i3](https://github.com/minetest-mods/i3) oder [unified inventory](https://github.com/minetest-mods/unified_inventory) @@ -378,6 +377,6 @@ eher [i3](https://github.com/minetest-mods/i3) oder [unified inventory](https:// * Erweitern Sie das Ratespiel, um die höchste Punktzahl jedes Spielers zu ermitteln, wobei die höchste Punktzahl angibt, wie viele Ratschläge nötig waren. -* Erstellen Sie einen Node namens "Inbox", in dem Benutzer ein formspec öffnen und Nachrichten hinterlassen können. +* Erstellen Sie einen Node namens "Inbox", in dem Benutzer ein Formspec öffnen und Nachrichten hinterlassen können. Dieser Node sollte den Namen des Placers als `owner` in der Meta speichern, und sollte - `show_formspec` verwenden, um verschiedene formspecs für verschiedene Spieler anzuzeigen. + `show_formspec` verwenden, um verschiedene Formspecs für verschiedene Spieler anzuzeigen.