Partes privadas
Notas do mestre, o segredo do personagem, a ficha verdadeira do NPC disfarçado: algumas partes do documento não podem chegar aos jogadores. Uma parte privada é guardada na mesa, mas o servidor do RPG Desk só a entrega a quem pode ver. Para os outros, ela não existe: nem na tela, nem nos dados.
Nas fichas: o manifesto
Seção intitulada “Nas fichas: o manifesto”Declare as partes no manifesto, na ficha:
"sheets": [ { "type": "com.seunome.sistema.ficha", "title": "Personagem", "private": { "mestre": "gm", "segredos": "owner" } }]| Valor | Quem recebe a parte |
|---|---|
"gm" |
só os mestres |
"owner" |
o dono da ficha e os mestres |
O nome é o caminho da parte: "mestre" vale para mestre.notas, mestre.tesouro e tudo o mais
dentro do grupo mestre. Quem não recebe a parte também não escreve nela.
Na página, mostre a parte só para quem a recebe, com data-role:
<nav data-tabs> <button data-tab="principal">Principal</button> <button data-tab="mestre" data-role="gm">Mestre</button></nav><section data-tab-panel="mestre"> <textarea data-field="mestre.notas" placeholder="Só os mestres veem isto"></textarea></section>O data-role sozinho só esconde o botão; quem garante o segredo é o private do manifesto. Teste
no modo de teste, trocando o Papel para Outro jogador: a aba some, e
RPGDesk.doc.get('mestre') dá undefined.
Nas tabelas: doc.restrict
Seção intitulada “Nas tabelas: doc.restrict”As tabelas da sala não têm dono, e o private do manifesto não vale nelas (o verificador avisa).
Numa tabela, o mestre esconde partes pelo código, na hora:
await doc.restrict(['npcs', '#' + id], 'gm'); // este NPC passa a ser só dos mestresawait doc.restrict(['npcs', '#' + id], null); // volta a ser de todosdoc.restrict(caminho, 'gm' | 'owner' | null) só funciona para os mestres. É o que a tabela de NPCs
dos exemplos faz com a caixa Oculto dos jogadores: veja Tabelas da sala.