
Equipe organizada é equipe com cargo para cada função: quem modera, quem constrói, quem cuida dos eventos. No jogo isso é o cargo (o rank), e dá para criar e afinar tudo pelo banco do hotel.
Antes de começar
- Faça um backup (painel, aba Servidor).
- Abra o Gerenciador do banco de dados (painel, Configurar) e clique em Comando SQL.
Onde o emulador guarda os cargos
Rode isto para ver o que o seu hotel tem:
SHOW TABLES LIKE 'permission%';
permission_groups (+ permission_group_rights e permission_group_commands): o sistema atual, que o Arcturus usa. É o que usamos abaixo.
permission_ranks: o equivalente no Polaris mais novo.
permissions: a tabela antiga, que o site lê para montar a lista da equipe.
Em cada direito e cada comando existe uma linha com setting_type: 0 é proibido, 1 é liberado.
Passo 1: criar o cargo
A ideia é copiar um cargo que já existe — assim você herda nível, prefixo, cor e todos os poderes de uma vez — e depois tirar o que não é da função.
-- 1) Cria o cargo copiando nível e estilo do Moderador
SET @ref = (SELECT id FROM permission_groups WHERE name = 'Moderador');
INSERT INTO permission_groups (name, description, level, prefix, prefix_color, badge, room_effect, log_enabled)
SELECT 'Construtor', 'Monta e decora os quartos do hotel', level, 'CON', '#7c3aed', badge, room_effect, log_enabled
FROM permission_groups WHERE id = @ref;
SET @novo = LAST_INSERT_ID();
-- 2) Herda todos os direitos e comandos do cargo de referência
INSERT INTO permission_group_rights (group_id, right_name, setting_type)
SELECT @novo, right_name, setting_type FROM permission_group_rights WHERE group_id = @ref;
INSERT INTO permission_group_commands (group_id, command_name, setting_type)
SELECT @novo, command_name, setting_type FROM permission_group_commands WHERE group_id = @ref;
-- 3) Tira o que não é do cargo (0 = proibido, 1 = liberado)
UPDATE permission_group_commands SET setting_type = '0'
WHERE group_id = @novo AND command_name IN ('cmd_ban', 'cmd_mute', 'cmd_alert', 'cmd_shutdown');
-- 4) Dá o cargo para um jogador
UPDATE users SET `rank` = @novo WHERE username = 'Bia';

O que ele fez, linha por linha: criou o Construtor com o mesmo nível do Moderador, copiou os 48 direitos e os 109 comandos dele e depois proibiu banir, mutar, alertar e desligar o hotel. @ref e @novo são variáveis da própria sessão do SQL — rode o bloco inteiro de uma vez.

Prefere um cargo que já comece vazio? Diga INSERT INTO permission_groups (name, level, prefix) VALUES ('Construtor', 5, 'CON'); e libere só o que quiser com UPDATE permission_group_commands SET setting_type = '1' WHERE group_id = @novo AND command_name = 'cmd_room_kick';.
Passo 2: dar o cargo a alguém
Pelo jogo é mais fácil: :giverank Bia Construtor (ou :setrank). Pelo banco, é o passo 4 acima: UPDATE users SET rank = 8 WHERE username = 'Bia'; — troque o 8 pelo id do seu cargo.
Passo 3: o site também precisa saber
O site lê a tabela antiga permissions para montar a lista da equipe (e para saber quem entra no housekeeping dele). Crie o mesmo cargo lá:
INSERT INTO permissions (rank_name, level, badge, prefix, prefix_color)
SELECT 'Construtor', level, badge, 'CON', '#7c3aed'
FROM permissions WHERE rank_name = 'Moderador';
Conferindo
SELECT id, name, level, prefix FROM permission_groups ORDER BY id;

Detalhes que evitam dor de cabeça
- Mudou permissão de quem está online? Rode
:update_permissions no jogo (se não pegar, a pessoa precisa sair e entrar).
- Direitos que a equipe costuma usar:
acc_fullrooms (mexer em qualquer quarto), acc_anyroomowner, acc_floorplan_editor (editor de planta do quarto), acc_modtool_user_ban, acc_chat_no_flood e acc_staff_pick. Veja todos com SELECT name FROM permission_rights;.
- Para saber o que um comando faz e como digitá-lo:
SELECT name, description, keys FROM permission_commands WHERE name LIKE 'cmd_ban%';.
- Rebaixar alguém:
UPDATE users SET rank = 1 WHERE username = 'Fulano'; (1 costuma ser "Membro"). No jogo, :giverank Fulano Membro.
- Depois de mexer em cargo, teste com uma conta comum antes de divulgar o hotel.
🇬🇧 English
Staff ranks and permissions from the database
An organised team is a team with a rank for every job: who moderates, who builds, who runs events. In game that is the rank, and you can create and tune everything from the hotel database.
Before you start
- Take a backup (panel, Server tab).
- Open the Database manager (panel, Configure) and click SQL command.
Where the emulator keeps ranks
SHOW TABLES LIKE 'permission%';
permission_groups (plus permission_group_rights and permission_group_commands): the current system used by Arcturus. We use it below.
permission_ranks: the equivalent on newer Polaris.
permissions: the old table the website reads to build the staff list.
Each right and each command has a row with setting_type: 0 denied, 1 allowed.
Step 1: create the rank
Copy a rank that already exists — you inherit level, prefix, colour and every power at once — then remove what the job does not need.
-- 1) Creates the rank copying level and style from Moderator
SET @ref = (SELECT id FROM permission_groups WHERE name = 'Moderador');
INSERT INTO permission_groups (name, description, level, prefix, prefix_color, badge, room_effect, log_enabled)
SELECT 'Construtor', 'Monta e decora os quartos do hotel', level, 'CON', '#7c3aed', badge, room_effect, log_enabled
FROM permission_groups WHERE id = @ref;
SET @novo = LAST_INSERT_ID();
-- 2) Inherits every right and command from the reference rank
INSERT INTO permission_group_rights (group_id, right_name, setting_type)
SELECT @novo, right_name, setting_type FROM permission_group_rights WHERE group_id = @ref;
INSERT INTO permission_group_commands (group_id, command_name, setting_type)
SELECT @novo, command_name, setting_type FROM permission_group_commands WHERE group_id = @ref;
-- 3) Removes what is not part of the job (0 = denied, 1 = allowed)
UPDATE permission_group_commands SET setting_type = '0'
WHERE group_id = @novo AND command_name IN ('cmd_ban', 'cmd_mute', 'cmd_alert', 'cmd_shutdown');
-- 4) Gives the rank to a player
UPDATE users SET `rank` = @novo WHERE username = 'Bia';

The block created Construtor with Moderator's level, copied its 48 rights and 109 commands, then denied ban, mute, alert and shutdown. @ref and @novo are session variables — run the whole block at once.

Step 2: give the rank to someone
In game it is easier: :giverank Bia Construtor. From the database, it is step 4 above — swap the id for your rank's.
Step 3: the website needs it too
The website reads the old permissions table for its staff list:
INSERT INTO permissions (rank_name, level, badge, prefix, prefix_color)
SELECT 'Construtor', level, badge, 'CON', '#7c3aed'
FROM permissions WHERE rank_name = 'Moderador';
Checking
SELECT id, name, level, prefix FROM permission_groups ORDER BY id;

Details that save you trouble
- Changed permissions while someone is online? Run
:update_permissions in game.
- Rights teams use:
acc_fullrooms, acc_anyroomowner, acc_floorplan_editor, acc_modtool_user_ban, acc_chat_no_flood, acc_staff_pick. List all with SELECT name FROM permission_rights;.
- What a command does:
SELECT name, description, keys FROM permission_commands WHERE name LIKE 'cmd_ban%';.
- Demoting:
UPDATE users SET rank = 1 WHERE username = 'Someone'; (1 is usually "Member").
🇪🇸 Español
Cargos y permisos del equipo desde la base de datos
Un equipo organizado es un equipo con un cargo para cada función: quien modera, quien construye, quien lleva los eventos. En el juego eso es el cargo (el rank), y todo se puede crear y ajustar desde la base de datos del hotel.
Antes de empezar
- Haz un backup (panel, pestaña Servidor).
- Abre el Gestor de base de datos (panel, Configurar) y entra en Comando SQL.
Dónde guarda el emulador los cargos
SHOW TABLES LIKE 'permission%';
permission_groups (más permission_group_rights y permission_group_commands): el sistema actual que usa Arcturus. Es el que usamos abajo.
permission_ranks: el equivalente en el Polaris más nuevo.
permissions: la tabla antigua que el sitio lee para armar la lista del equipo.
Cada derecho y cada comando tiene una fila con setting_type: 0 prohibido, 1 permitido.
Paso 1: crear el cargo
Copia un cargo que ya existe — heredas nivel, prefijo, color y todos los poderes de una vez — y después quita lo que no es de la función.
-- 1) Crea el cargo copiando nivel y estilo del Moderador
SET @ref = (SELECT id FROM permission_groups WHERE name = 'Moderador');
INSERT INTO permission_groups (name, description, level, prefix, prefix_color, badge, room_effect, log_enabled)
SELECT 'Construtor', 'Monta e decora os quartos do hotel', level, 'CON', '#7c3aed', badge, room_effect, log_enabled
FROM permission_groups WHERE id = @ref;
SET @novo = LAST_INSERT_ID();
-- 2) Hereda todos los derechos y comandos del cargo de referencia
INSERT INTO permission_group_rights (group_id, right_name, setting_type)
SELECT @novo, right_name, setting_type FROM permission_group_rights WHERE group_id = @ref;
INSERT INTO permission_group_commands (group_id, command_name, setting_type)
SELECT @novo, command_name, setting_type FROM permission_group_commands WHERE group_id = @ref;
-- 3) Quita lo que no es del cargo (0 = prohibido, 1 = permitido)
UPDATE permission_group_commands SET setting_type = '0'
WHERE group_id = @novo AND command_name IN ('cmd_ban', 'cmd_mute', 'cmd_alert', 'cmd_shutdown');
-- 4) Da el cargo a un jugador
UPDATE users SET `rank` = @novo WHERE username = 'Bia';

El bloque creó Construtor con el nivel del Moderador, copió sus 48 derechos y 109 comandos y luego prohibió banear, mutear, alertar y apagar el hotel. @ref y @novo son variables de la sesión: ejecuta el bloque completo de una vez.

Paso 2: dar el cargo a alguien
En el juego es más fácil: :giverank Bia Construtor. Desde la base es el paso 4 de arriba.
Paso 3: el sitio también lo necesita
El sitio lee la tabla antigua permissions para su lista del equipo:
INSERT INTO permissions (rank_name, level, badge, prefix, prefix_color)
SELECT 'Construtor', level, badge, 'CON', '#7c3aed'
FROM permissions WHERE rank_name = 'Moderador';
Comprobar
SELECT id, name, level, prefix FROM permission_groups ORDER BY id;

Detalles que evitan dolores de cabeza
- ¿Cambiaste permisos con alguien en línea? Ejecuta
:update_permissions en el juego.
- Derechos que el equipo usa:
acc_fullrooms, acc_anyroomowner, acc_floorplan_editor, acc_modtool_user_ban, acc_chat_no_flood, acc_staff_pick. Todos con SELECT name FROM permission_rights;.
- Qué hace un comando:
SELECT name, description, keys FROM permission_commands WHERE name LIKE 'cmd_ban%';.
- Bajar de cargo:
UPDATE users SET rank = 1 WHERE username = 'Fulano';.
📚 Leia também