139 lines
3.8 KiB
Markdown
139 lines
3.8 KiB
Markdown
|
---
|
||
|
title: Privilegien
|
||
|
layout: default
|
||
|
root: ../..
|
||
|
idx: 4.1
|
||
|
description: Privs registrieren.
|
||
|
redirect_from: /de/chapters/privileges.html
|
||
|
---
|
||
|
|
||
|
## Einleitung <!-- omit in toc -->
|
||
|
|
||
|
Privilegien, oft privs abgekürzt, geben Spielern die Möglichkeit,
|
||
|
bestimmte Aktionen durchzuführen. Serverbesitzer können Privilegien vergeben und entziehen, um zu kontrollieren
|
||
|
welche Fähigkeiten jeder Spieler hat.
|
||
|
|
||
|
- [Wann sollten Sie Privilegien nutzen?](#wann-sollten-sie-privilegien-nutzen)
|
||
|
- [Erklärung von Privilegien](#erklärung-von-privilegien)
|
||
|
- [Überprüfung der Privilegien](#überprüfung-der-privilegien)
|
||
|
- [Abrufen und Festlegen von Privilegien](#abrufen-und-festlegen-von-privilegien)
|
||
|
- [Privilegien zu basic_privs hinzufügen](#privilegien-zu-basicprivs-hinzufügen)
|
||
|
|
||
|
## Wann sollten Sie Privilegien nutzen?
|
||
|
|
||
|
Ein Privileg sollte einem Spieler die Möglichkeit geben, etwas zu tun.
|
||
|
Privilegien sind **nicht** dazu da, Klassen- oder Statusangaben zu machen.
|
||
|
|
||
|
**Gute Privilegien:**
|
||
|
|
||
|
* interact
|
||
|
* shout
|
||
|
* noclip
|
||
|
* fly
|
||
|
* kick
|
||
|
* ban
|
||
|
* vote
|
||
|
* worldedit
|
||
|
* area_admin - Adminfunktionen eines Mods sind in Ordnung
|
||
|
|
||
|
**Schlechte Privilegien:**
|
||
|
|
||
|
* moderator
|
||
|
* admin
|
||
|
* elf
|
||
|
* dwarf
|
||
|
|
||
|
## Erklärung von Privilegien
|
||
|
|
||
|
Verwenden Sie `register_privilege`, um ein neues Privileg zu deklarieren:
|
||
|
|
||
|
```lua
|
||
|
minetest.register_privilege("vote", {
|
||
|
description = "Kann über Themen abstimmen",
|
||
|
give_to_singleplayer = true
|
||
|
})
|
||
|
```
|
||
|
|
||
|
`give_to_singleplayer` steht standardmäßig auf true, wenn es nicht angegeben wird, so dass es
|
||
|
in der obigen Definition nicht wirklich benötigt wird.
|
||
|
|
||
|
## Überprüfung der Privilegien
|
||
|
|
||
|
Um schnell zu überprüfen, ob ein Spieler alle erforderlichen Rechte besitzt:
|
||
|
|
||
|
```lua
|
||
|
local has, missing = minetest.check_player_privs(player_or_name, {
|
||
|
interact = true,
|
||
|
vote = true })
|
||
|
```
|
||
|
|
||
|
In diesem Beispiel ist `has` wahr, wenn der Spieler alle benötigten Privilegien hat.
|
||
|
Wenn `has` falsch ist, dann enthält `missing` eine Schlüssel-Wert-Tabelle
|
||
|
mit den fehlenden Privilegien.
|
||
|
|
||
|
```lua
|
||
|
local has, missing = minetest.check_player_privs(name, {
|
||
|
interact = true,
|
||
|
vote = true })
|
||
|
|
||
|
if has then
|
||
|
print("Spieler hat alle Privilegien!")
|
||
|
else
|
||
|
print("Dem Spieler fehlen folgende Privilegien:" .. dump(missing))
|
||
|
end
|
||
|
```
|
||
|
|
||
|
Wenn Sie die fehlenden Privilegien nicht überprüfen müssen, können Sie
|
||
|
check_player_privs" direkt in die if-Anweisung einfügen.
|
||
|
|
||
|
```lua
|
||
|
if not minetest.check_player_privs(name, { interact=true }) then
|
||
|
return false, "Hierfür brauchen Sie Interaktion!"
|
||
|
end
|
||
|
```
|
||
|
|
||
|
## Abrufen und Festlegen von Privilegien
|
||
|
|
||
|
Auf die Spielerprivilegien kann unabhängig, ob der Spieler
|
||
|
online ist, zugegriffen werden.
|
||
|
|
||
|
|
||
|
```lua
|
||
|
local privs = minetest.get_player_privs(name)
|
||
|
print(dump(privs))
|
||
|
|
||
|
privs.vote = true
|
||
|
minetest.set_player_privs(name, privs)
|
||
|
```
|
||
|
|
||
|
Privilegien werden immer als Schlüssel-Wert-Tabelle angegeben, wobei der Schlüssel der
|
||
|
Name der Berechtigung und der Wert ein Boolescher Wert ist.
|
||
|
|
||
|
```lua
|
||
|
{
|
||
|
fly = true,
|
||
|
interact = true,
|
||
|
shout = true
|
||
|
}
|
||
|
```
|
||
|
|
||
|
## Privilegien zu basic_privs hinzufügen
|
||
|
|
||
|
Spieler mit dem Privileg `basic_privs` können eine begrenzte Anzahl von Privilegien gewähren und entziehen.
|
||
|
Es ist üblich, dieses Privileg an Moderatoren zu vergeben, so dass
|
||
|
sie `interact` und `shout` gewähren und entziehen können, aber nicht sich selbst oder anderen
|
||
|
Spieler Privilegien mit größerem Missbrauchspotential wie `give` und `server` gewähren können.
|
||
|
|
||
|
Um ein Privileg zu `basic_privs` hinzuzufügen, und um einzustellen, welche Privilegien Ihre Moderatoren
|
||
|
anderen Spielern gewähren und entziehen können, müssen Sie die Einstellung `basic_privs` ändern.
|
||
|
|
||
|
Standardmäßig hat `basic_privs` den folgenden Wert:
|
||
|
|
||
|
basic_privs = interact, shout
|
||
|
|
||
|
Um `vote` hinzuzufügen, aktualisieren Sie dies zu:
|
||
|
|
||
|
basic_privs = interact, shout, vote
|
||
|
|
||
|
Dies wird es Spielern mit `basic_privs` erlauben, das `vote` Privileg zu gewähren und zu entziehen.
|