--- title: Privilegien layout: default root: ../.. idx: 4.1 description: Privs registrieren. redirect_from: /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?](#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(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: ```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.