Finished chat.md
This commit is contained in:
parent
c1299491f9
commit
3f195de1bf
@ -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
|
||||
<a href="https://gitlab.com/rubenwardy/ChatCmdBuilder">Chat Command Builder</a>.
|
||||
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
|
||||
|
@ -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
|
||||
|
Loading…
Reference in New Issue
Block a user