Finished chat.md

This commit is contained in:
debiankaios 2022-08-27 23:15:25 +02:00
parent c1299491f9
commit 3f195de1bf
2 changed files with 68 additions and 66 deletions

View File

@ -7,20 +7,20 @@ description: Registrierung eines Chatbefehls und Behandlung von Chatnachrichten
redirect_from: /de/chapters/chat.html
cmd_online:
level: warning
title: Offline players can run commands
message: <p>A player name is passed instead of a player object because mods
can run commands on behalf of offline players. For example, the IRC
bridge allows players to run commands without joining the game.</p>
title: Offline-Spieler können Befehle ausführen
message: <p>Ein Spielername wird anstelle eines Spielerobjekts übergeben, da Mods
Befehle im Namen von Offline-Spielern ausführen können. Zum Beispiel erlaubt die IRC-
Brücke den Spielern, Befehle auszuführen, ohne dem Spiel beizutreten.</p>
<p>So make sure that you don't assume that the player is online.
You can check by seeing if <pre>minetest.get_player_by_name</pre> returns a player.</p>
<p>Stellen Sie also sicher, dass Sie nicht davon ausgehen, dass der Spieler online ist.
Du kannst überprüfen, ob <pre>minetest.get_player_by_name</pre> einen Spieler liefert.</p>
cb_cmdsprivs:
level: warning
title: Privileges and Chat Commands
message: The shout privilege isn't needed for a player to trigger this callback.
This is because chat commands are implemented in Lua, and are just
chat messages that begin with a /.
title: Privilegien und Chat-Befehle
message: Das "Shout"-Privileg ist für einen Spieler nicht erforderlich, um diesen Callback auszulösen.
Das liegt daran, dass Chat-Befehle in Lua implementiert sind, und nur
Chat-Nachrichten sind, die mit einem / beginnen.
---
@ -30,10 +30,10 @@ Mods können mit dem Spielerchat interagieren, einschließlich
Senden von Nachrichten, Abfangen von Nachrichten und Registrieren von Chat-Befehlen.
- [Senden von Nachrichten an alle Spieler](#senden-von-nachrichten-an-alle-spieler)
- [Sending Messages to Specific Players](#sending-messages-to-specific-players)
- [Chat Commands](#chat-commands)
- [Nachrichten an bestimmte Spieler senden](#nachrichten-an-bestimmte-spieler-senden)
- [Chat-Befehle](#chat-befehle)
- [Complex Subcommands](#complex-subcommands)
- [Intercepting Messages](#intercepting-messages)
- [Abfangen von Nachrichten](#abfangen-von-nachrichten)
## Senden von Nachrichten an alle Spieler
@ -51,20 +51,20 @@ Hier ist ein Beispiel dafür, wie dies im Spiel aussieht:
Die Nachricht erscheint in einer separaten Zeile, um sie vom Spieler-Chat im Spiel zu unterscheiden.
## Sending Messages to Specific Players
## Nachrichten an bestimmte Spieler senden
To send a message to a specific player, call the chat_send_player function:
Um eine Nachricht an einen bestimmten Spieler zu senden, rufen Sie die Funktion chat_send_player auf:
```lua
minetest.chat_send_player("player1", "This is a chat message for player1")
minetest.chat_send_player("Spieler1", "Dies ist eine Chat-Nachricht für Spieler1")
```
This message displays in the same manner as messages to all players, but is
only visible to the named player, in this case, player1.
Diese Nachricht wird auf dieselbe Weise angezeigt wie die Nachrichten an alle Spieler, ist aber
nur für den benannten Spieler sichtbar, in diesem Fall für Spieler1.
## Chat Commands
## Chat-Befehle
To register a chat command, for example `/foo`, use `register_chatcommand`:
Um einen Chat-Befehl zu registrieren, zum Beispiel `/foo`, verwenden Sie `register_chatcommand`:
```lua
minetest.register_chatcommand("foo", {
@ -72,93 +72,93 @@ minetest.register_chatcommand("foo", {
interact = true,
},
func = function(name, param)
return true, "You said " .. param .. "!"
return true, "Sie sagten " .. param .. "!"
end,
})
```
In the above snippet, `interact` is listed as a required
[privilege](privileges.html) meaning that only players with the `interact` privilege can run the command.
Im obigen Ausschnitt ist "interact" als erforderliches
[Privileg](privileges.html) aufgeführt, was bedeutet, dass nur Spieler mit dem Privileg "interact" den Befehl ausführen können.
Chat commands can return up to two values,
the first being a Boolean indicating success, and the second being a
message to send to the user.
Chat-Befehle können bis zu zwei Werte zurückgeben,
Der erste ist ein boolescher Wert, der den Erfolg anzeigt, und der zweite ist eine
Nachricht, die an den Benutzer gesendet wird.
{% include notice.html notice=page.cmd_online %}
## Complex Subcommands
## Komplexe Unterbefehle
It is often required to make complex chat commands, such as:
Es wird oft benötigt, komplexe Chat-Befehle zu bereitzustellen, wie z.B.:
* `/msg <to> <message>`
* `/team join <teamname>`
* `/team leave <teamname>`
* `/msg <zu> <Nachricht>`
* `/team join <Teamname>`
* `/team leave <Teamname>`
* `/team list`
This is usually done using [Lua patterns](https://www.lua.org/pil/20.2.html).
Patterns are a way of extracting stuff from text using rules.
Dies geschieht normalerweise mit [Lua-Mustern] (https://www.lua.org/pil/20.2.html).
Patterns sind eine Methode, um anhand von Regeln Dinge aus Text zu extrahieren.
```lua
local to, msg = string.match(param, "^([%a%d_-]+) (*+)$")
local zu, msg = string.match(param, "^([%a%d_-]+) (*+)$")
```
The above code implements `/msg <to> <message>`. Let's go through left to right:
Der obige Code implementiert `/msg <zu> <Nachricht>`. Lassen Sie uns von links nach rechts vorgehen:
* `^` means match the start of the string.
* `()` is a matching group - anything that matches stuff in here will be
returned from string.match.
* `[]` means accept characters in this list.
* `%a` means accept any letter and `%d` means accept any digit.
* `[%a%d_-]` means accept any letter or digit or `_` or `-`.
* `+` means match the thing before one or more times.
* `*` means match any character in this context.
* `$` means match the end of the string.
* `^` bedeutet, dass der Anfang der Zeichenkette übereinstimmt.
* `()` ist eine übereinstimmende Gruppe - alles, was hier drin steht, wird
von string.match zurückgegeben.
* `[]` bedeutet, dass die Zeichen in dieser Liste akzeptiert werden.
* `%a` bedeutet, jeden Buchstaben zu akzeptieren und `%d` bedeutet, eine beliebige Ziffer zu akzeptieren.
* `[%a%d_-]` bedeutet, einen beliebigen Buchstaben, eine beliebige Ziffer, `_` oder `-` zu akzeptieren.
* `+` bedeutet, dass die Sache ein oder mehrere Male übereinstimmt.
* `*` bedeutet, dass ein beliebiges Zeichen in diesem Zusammenhang übereinstimmt.
* `$` bedeutet, das Ende der Zeichenkette zu finden.
Put simply, the pattern matches the name (a word with only letters/numbers/-/_),
then a space, then the message (one or more of any character). The name and
message are returned, because they're surrounded by parentheses.
Einfach ausgedrückt: Das Muster entspricht dem Namen (ein Wort mit nur Buchstaben/Zahlen/-/_),
dann ein Leerzeichen, dann die Nachricht (ein oder mehrere beliebige Zeichen). Der Name und die
werden zurückgegeben, da sie von Klammern umgeben sind.
That's how most mods implement complex chat commands. A better guide to Lua
Patterns would probably be the
Das ist die Art und Weise, wie die meisten Mods komplexe Chat-Befehle implementieren. Eine bessere Anleitung für Lua
Patterns wäre wahrscheinlich das
[lua-users.org tutorial](http://lua-users.org/wiki/PatternsTutorial)
or the [PIL documentation](https://www.lua.org/pil/20.2.html).
oder die [PIL-Dokumentation](https://www.lua.org/pil/20.2.html).
<p class="book_hide">
There is also a library written by the author of this book which can be used
to make complex chat commands without patterns called
Es gibt auch eine vom Autor dieses Buches geschriebene Bibliothek, mit der man benutzen
kann um komplexe Chat-Befehle ohne Muster zu erstellen, den
<a href="https://gitlab.com/rubenwardy/ChatCmdBuilder">Chat Command Builder</a>.
</p>
## Intercepting Messages
## Abfangen von Nachrichten
To intercept a message, use register_on_chat_message:
Um eine Nachricht abzufangen, verwenden Sie register_on_chat_message:
```lua
minetest.register_on_chat_message(function(name, message)
print(name .. " said " .. message)
print(name .. " sagte " .. message)
return false
end)
```
By returning false, you allow the chat message to be sent by the default
handler. You can actually remove the line `return false` and it would still
work the same, because `nil` is returned implicitly and is treated like false.
Wenn Sie false zurückgeben, erlauben Sie, dass die Chat-Nachricht vom Standard
Handler gesendet wird. Sie können die Zeile `return false` sogar entfernen und es würde immer noch
funktionieren, da `nil` implizit zurückgegeben wird und wie false behandelt wird.
{% include notice.html notice=page.cb_cmdsprivs %}
You should make sure you take into account that it may be a chat command,
or the user may not have `shout`.
Sie sollten berücksichtigen, dass es sich um einen Chat-Befehl handeln könnte,
oder der Benutzer vielleicht kein `shout` hat.
```lua
minetest.register_on_chat_message(function(name, message)
if message:sub(1, 1) == "/" then
print(name .. " ran chat command")
print(name .. " hat einen Chat-Befehl ausgeführt")
elseif minetest.check_player_privs(name, { shout = true }) then
print(name .. " said " .. message)
print(name .. " sagte " .. message)
else
print(name .. " tried to say " .. message ..
" but doesn't have shout")
print(name .. " versucht zu sagen " .. message ..
" hat aber kein shout")
end
return false

View File

@ -8,7 +8,7 @@ bulk = bulk
Chapter = Kapitel
chat message = Chat-Nachricht
child = Kind
Command = Command
Command = Befehl
Cubic Nodes = Würfelförmiger Block
craft slots = Handwerksplätze
Damage = Schaden
@ -74,9 +74,11 @@ priv = priv
privilege = Privileg
punch = schlagen
Radians = Radiant
shout = shout
small data = kleine Daten
Stack = Stack
storage = Storage
Subcommand = Unterbefehl
table = Tabelle
tile = Kachel
tiles = Kacheln