3.4 KiB
title | layout | root | idx | description | redirect_from |
---|---|---|---|---|---|
Privilegi | default | ../.. | 4.1 | Tu, non puoi, passareee! (Tu invece sì) | /it/chapters/privileges.html |
Introduzione
I privilegi (privileges, solitamente abbreviati in privs), danno ai giocatori l'abilità di eseguire certe azioni. I proprietari dei server possono assegnare e revocare i privilegi per controllare quali cose un giocatore può o non può fare.
- Privilegi sì e privilegi no
- Dichiarazione
- Controlli
- Ottenere e impostare privilegi
- Aggiungere privilegi a basic_privs
Privilegi sì e privilegi no
I privilegi non sono fatti per indicare classi o status.
Privilegi corretti:
- interact
- shout
- noclip
- fly
- kick
- ban
- vote
- worldedit
- area_admin - admin functions of one mod is ok
Privilegi sbagliati:
- moderatore
- amministratore
- elfo
- nano
Dichiarazione
Usa register_privilege
per dichiarare un nuovo privilegio:
minetest.register_privilege("voto", {
description = "Può votare nei sondaggi",
give_to_singleplayer = false
})
give_to_singleplayer
è di base true, quindi non c'è bisogno di specificarlo se non lo si vuole mettere false.
Controlli
Per controllare velocemente se un giocatore ha tutti i privilegi necessari o meno:
local celo, manca = minetest.check_player_privs(player_or_name, {
interact = true,
voto = true })
In quest'esempio, celo
è true se il giocatore ha sia interact
che voto
.
Se celo
è false, allora manca
conterrà una tabella con i privilegi mancanti.
local celo, manca = minetest.check_player_privs(name, {
interact = true,
voto = true })
if celo then
print("Il giocatore ha tutti i privilegi!")
else
print("Al giocatore mancano i seguenti privilegi: " .. dump(manca))
end
Se non hai bisogno di controllare i privilegi mancanti, puoi inserire check_player_privs
direttamente nel costrutto if:
if not minetest.check_player_privs(name, { interact=true }) then
return false, "Hai bisogno del privilegio 'interact' per eseguire quest'azione!"
end
Ottenere e impostare privilegi
Si può accedere o modificare i privilegi di un giocatore anche se quest'ultimo non risulta online.
local privs = minetest.get_player_privs(name)
print(dump(privs))
privs.voto = true
minetest.set_player_privs(name, privs)
I privilegi sono sempre specificati come una tabella chiave-valore, con il loro nome come chiave e true/false come valore.
{
fly = true,
interact = true,
shout = true -- per poter scrivere in chat
}
Aggiungere privilegi a basic_privs
I giocatori con il privilegio basic_privs
sono in grado di assegnare e revocare un set limitato di privilegi.
È cosa comune assegnarlo ai moderatori in modo che possano mettere o togliere interact
e shout
agli altri giocatori, ma che al tempo stesso non possano assegnare privilegi (a loro stessi o ad altri giocatori) con maggiori possibilità di abuso - come give
e server
.
Per modificare quali sono i privilegi contenuti in basic_privs
, va cambiata l'omonima opzione.
Se di base si ha infatti:
basic_privs = interact, shout
Per aggiungere vote
, basta fare:
basic_privs = interact, shout, vote