hierarchy.lua.
Para configurá-lo, abra a pasta do script (heyy_mdt), abra a pasta config e dentro dela, abra o arquivo hierarchy.lua.
Logo no topo do arquivo, você deve se deparar com algo parecido com isso:
heyy_mdt/config/hierarchy.lua
Police nunca verá o Sheriff no seletor, mesmo que ambos estejam configurados aqui.
Entendendo as posições
Antes de qualquer coisa, é importante entender como o script enxerga a hierarquia de um grupo. A hierarquia não é definida no tablet — ela é lida diretamente da sua base, através da funçãoFunctions.getGroupHierarchy (explicada mais abaixo). Ela retorna a lista de patentes do grupo, onde:
- A posição 1 é sempre a mais alta (o comandante, por exemplo).
- A última posição (o tamanho da lista) é sempre a mais baixa (o recruta, por exemplo).
Exemplo prático
Exemplo prático
Suponha que o grupo
Police da sua base tenha a seguinte hierarquia:Neste caso, um oficial na posição 2 (Capitão) é superior a um oficial na posição 4 (Soldado). Quanto menor o número, maior a patente.
Permissão de acesso
Diferente da lista de grupos, quem pode abrir a página de gerenciamento e realizar ações é definido noconfig.lua, dentro do seu departamento, pela permissão manageOfficers:
heyy_mdt/config/config.lua
Funções
Abaixo da tabelahierarchy, o arquivo contém as funções que conectam o tablet à sua base. Elas já vêm configuradas para bases vRP padrão, mas podem precisar de ajustes dependendo da base que você utiliza.
getAllUsersInGroup
getGroupHierarchy
getUserHierarchy
nil caso ele não faça parte dele.
promoteUser e demoteUser
true em caso de sucesso. Você também pode retornar false seguido de uma mensagem, que será exibida como notificação para quem realizou a ação:
addUser e removeUser
#hierarchy), ou seja, sempre na patente mais baixa do grupo.
Como o gerenciamento funciona
Com o arquivo configurado, o funcionamento dentro do tablet acontece assim:1
Seleção do departamento
Ao abrir a página de gerenciamento, o tablet monta a lista de departamentos disponíveis com todos os grupos da tabela
hierarchy dos quais o oficial faz parte.2
Listagem dos oficiais
Selecionado o departamento, o tablet busca todos os membros do grupo e exibe, para cada um: nome, patente, posição e status (offline, online ou em serviço), além da última vez que ele bateu o ponto.
3
Ações disponíveis
Os botões de promover, rebaixar e exonerar são liberados individualmente, de acordo com as regras da tabela abaixo.
Regras das ações
Mesmo tendo a permissãomanageOfficers, o tablet ainda aplica regras de hierarquia para cada ação. Considere você como quem está realizando a ação e alvo como o oficial selecionado:
Contratação
A contratação funciona de forma um pouco diferente das demais ações, porque envolve o jogador que está sendo contratado:- O oficial informa o ID do jogador que deseja contratar.
- O jogador precisa estar na cidade. Caso contrário, a ação é cancelada com a mensagem “O alvo não está na cidade!”.
- Uma confirmação é enviada para o jogador, que tem 15 segundos para aceitar.
- Aceitando, ele é adicionado ao grupo na patente mais baixa e um webhook de contratação é disparado.
Webhooks
Todas as ações de gerenciamento disparam webhooks, permitindo que você acompanhe pelo Discord quem contratou, promoveu, rebaixou ou exonerou cada oficial. Você pode configurá-los no arquivowebhooks.lua, como explicado na página de Webhooks.