minetest_modding_book/_de/players/privileges.md

3.9 KiB

title layout root idx description redirect_from
Privilegien default ../.. 4.1 Privs registrieren. /de/chapters/privileges.html

Einleitung

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?

Ein Privileg sollte einem Spieler die Möglichkeit geben, etwas zu tun(siehe Gute Privilegien). Privilegien sind nicht dazu da, Klassen- oder Statusangaben zu machen(siehe Schlechte Privilegien).

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:

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:

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.

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.

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.

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.

{
    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.