2020-04-27 16:11:54 +03:00
---
2020-07-03 17:12:23 +03:00
title: Privilegi
2020-04-27 16:11:54 +03:00
layout: default
root: ../..
idx: 4.1
2020-07-03 17:12:23 +03:00
description: Tu, non puoi, passareee! (Tu invece sì)
redirect_from: /it/chapters/privileges.html
2020-04-27 16:11:54 +03:00
---
2020-07-03 17:12:23 +03:00
## Introduzione <!-- omit in toc -->
2020-04-27 16:11:54 +03:00
2020-07-03 17:12:23 +03:00
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.
2020-04-27 16:11:54 +03:00
2020-07-03 17:12:23 +03:00
- [Privilegi sì e privilegi no ](#privilegi-si-e-privilegi-no )
- [Dichiarazione ](#dichiarazione )
- [Controlli ](#controlli )
- [Ottenere e impostare privilegi ](#ottenere-e-impostare-privilegi )
- [Aggiungere privilegi a basic_privs ](#aggiungere-privilegi-a-basicprivs )
2020-04-27 16:11:54 +03:00
2020-07-03 17:12:23 +03:00
## Privilegi sì e privilegi no
2020-04-27 16:11:54 +03:00
2020-07-03 17:12:23 +03:00
I privilegi non sono fatti per indicare classi o status.
2020-04-27 16:11:54 +03:00
2020-07-03 17:12:23 +03:00
**Privilegi corretti:**
2020-04-27 16:11:54 +03:00
* interact
* shout
* noclip
* fly
* kick
* ban
* vote
* worldedit
2020-08-20 01:49:39 +03:00
* area_admin - se si tratta di un privilegio per gli amministratori è ok
2020-04-27 16:11:54 +03:00
2020-07-03 17:12:23 +03:00
**Privilegi sbagliati:**
2020-04-27 16:11:54 +03:00
2020-07-03 17:12:23 +03:00
* moderatore
* amministratore
* elfo
* nano
2020-04-27 16:11:54 +03:00
2020-07-03 17:12:23 +03:00
## Dichiarazione
2020-04-27 16:11:54 +03:00
2020-07-03 17:12:23 +03:00
Usa `register_privilege` per dichiarare un nuovo privilegio:
2020-04-27 16:11:54 +03:00
```lua
2024-10-23 02:39:22 +03:00
core.register_privilege("voto", {
2020-07-03 17:12:23 +03:00
description = "Può votare nei sondaggi",
give_to_singleplayer = false
2020-04-27 16:11:54 +03:00
})
```
2020-07-03 17:12:23 +03:00
`give_to_singleplayer` è di base true, quindi non c'è bisogno di specificarlo se non lo si vuole mettere false.
2020-04-27 16:11:54 +03:00
2020-07-03 17:12:23 +03:00
## Controlli
2020-04-27 16:11:54 +03:00
2020-07-03 17:12:23 +03:00
Per controllare velocemente se un giocatore ha tutti i privilegi necessari o meno:
2020-04-27 16:11:54 +03:00
```lua
2024-10-23 02:39:22 +03:00
local celo, manca = core.check_player_privs(player_or_name, {
2020-04-27 16:11:54 +03:00
interact = true,
2020-07-03 17:12:23 +03:00
voto = true })
2020-04-27 16:11:54 +03:00
```
2020-07-03 17:12:23 +03:00
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.
2020-04-27 16:11:54 +03:00
```lua
2024-10-23 02:39:22 +03:00
local celo, manca = core.check_player_privs(name, {
2020-04-27 16:11:54 +03:00
interact = true,
2020-07-03 17:12:23 +03:00
voto = true })
2020-04-27 16:11:54 +03:00
2020-07-03 17:12:23 +03:00
if celo then
print("Il giocatore ha tutti i privilegi!")
2020-04-27 16:11:54 +03:00
else
2020-07-03 17:12:23 +03:00
print("Al giocatore mancano i seguenti privilegi: " .. dump(manca))
2020-04-27 16:11:54 +03:00
end
```
2020-07-03 17:12:23 +03:00
Se non hai bisogno di controllare i privilegi mancanti, puoi inserire `check_player_privs` direttamente nel costrutto if:
2020-04-27 16:11:54 +03:00
```lua
2024-10-23 02:39:22 +03:00
if not core.check_player_privs(name, { interact=true }) then
2020-07-03 17:12:23 +03:00
return false, "Hai bisogno del privilegio 'interact' per eseguire quest'azione!"
2020-04-27 16:11:54 +03:00
end
```
2020-07-03 17:12:23 +03:00
## Ottenere e impostare privilegi
2020-04-27 16:11:54 +03:00
2020-07-03 17:12:23 +03:00
Si può accedere o modificare i privilegi di un giocatore anche se quest'ultimo non risulta online.
2020-04-27 16:11:54 +03:00
```lua
2024-10-23 02:39:22 +03:00
local privs = core.get_player_privs(name)
2020-04-27 16:11:54 +03:00
print(dump(privs))
2020-07-03 17:12:23 +03:00
privs.voto = true
2024-10-23 02:39:22 +03:00
core.set_player_privs(name, privs)
2020-04-27 16:11:54 +03:00
```
2020-07-03 17:12:23 +03:00
I privilegi sono sempre specificati come una tabella chiave-valore, con il loro nome come chiave e true/false come valore.
2020-04-27 16:11:54 +03:00
```lua
{
fly = true,
interact = true,
2020-07-03 17:12:23 +03:00
shout = true -- per poter scrivere in chat
2020-04-27 16:11:54 +03:00
}
```
2020-07-03 17:12:23 +03:00
## Aggiungere privilegi a basic_privs
2020-04-27 16:11:54 +03:00
2020-07-03 17:12:23 +03:00
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` .
2020-04-27 16:11:54 +03:00
2020-07-03 17:12:23 +03:00
Per modificare quali sono i privilegi contenuti in `basic_privs` , va cambiata l'omonima opzione.
Se di base si ha infatti:
2020-04-27 16:11:54 +03:00
basic_privs = interact, shout
2020-07-03 17:12:23 +03:00
Per aggiungere `vote` , basta fare:
2020-04-27 16:11:54 +03:00
basic_privs = interact, shout, vote