O maior portal de MU Online do Brasil — desde 2003
Tutorial Avançado Administração

Como gerenciar guildas e alianças pelo banco no MU Online

Aprenda a administrar guildas, cargos, membros e alianças diretamente pelas tabelas do banco de dados do seu servidor de MU Online, com SQL seguro e boas práticas de backup.

BR Bruno · Atualizado em 10 jul 2026 · ⏱ 12 de leitura
Resposta rápida

Gerenciar guildas e alianças diretamente pelo banco de dados é uma das tarefas mais delicadas na administração de um servidor de MU Online. A interface do jogo cobre o dia a dia dos jogadores, mas quando você precisa transferir a liderança de uma guilda abandonada, recuperar uma guilda apagada por e

Gerenciar guildas e alianças diretamente pelo banco de dados é uma das tarefas mais delicadas na administração de um servidor de MU Online. A interface do jogo cobre o dia a dia dos jogadores, mas quando você precisa transferir a liderança de uma guilda abandonada, recuperar uma guilda apagada por engano, corrigir uma marca corrompida ou dissolver uma aliança que trava a Guild War, o caminho é o SQL. Este tutorial mostra, passo a passo, como identificar as tabelas certas, escrever consultas seguras e evitar os erros que corrompem dados de guilda de forma permanente.

O ponto central que você precisa entender desde já: guildas não vivem em uma única tabela. Existe a tabela da guilda (nome, mestre, marca, notice), a tabela de membros (relacionando cada personagem à guilda e ao seu cargo), e frequentemente uma tabela de alianças que liga guildas entre si. Mexer em uma sem considerar as outras é a causa número um de guildas "fantasma" que aparecem na lista mas não carregam. Todos os nomes de tabelas e colunas aqui são exemplos comuns — a nomenclatura exata varia por season/emulador (IGCN, MuEmu, Season 6 clássica, X-Files etc.), então sempre confirme o schema real do seu servidor antes de rodar qualquer comando.

Pré-requisitos

Antes de tocar em qualquer tabela de guilda, garanta que você tem o ambiente e o conhecimento mínimos abaixo:

  • Acesso administrativo ao SQL Server (SSMS - SQL Server Management Studio) com login sa ou um usuário com permissão de escrita no banco do jogo, normalmente chamado MuOnline.
  • Backup completo e recente do banco. Nunca execute UPDATE ou DELETE em produção sem um .bak feito minutos antes.
  • Janela de manutenção ou horário de baixo movimento. O GameServer mantém guildas em cache; editar com muitos jogadores online gera inconsistência.
  • Conhecimento do schema do seu emulador. Abra o SSMS, expanda o banco MuOnline e localize as tabelas de guilda antes de começar.
  • Um ambiente de testes (servidor local ou VM) para validar cada query antes de aplicar em produção. Isso não é opcional em operações avançadas.
  • Familiaridade básica com SQL (SELECT, UPDATE, DELETE, JOIN, transações). Se você ainda não montou seu servidor, comece pelo guia de como criar servidor de MU Online antes de administrar guildas.

Entendendo as tabelas de guilda

O modelo de dados de guildas no MU Online segue uma estrutura relacional bem definida. Conhecer o papel de cada tabela é o que separa uma edição segura de um desastre. Veja o mapeamento típico (nomes de exemplo, variam por season/emulador):

Tabela (exemplo)FunçãoColunas-chave típicas
GuildCadastro da guildaG_Name, G_Master, G_Score, G_Mark, G_Notice
GuildMemberRelaciona personagens à guildaName, G_Name, G_Level (cargo), G_Status
GuildMatching / G_AllianceVínculo de alianças e hostilidadeG_Name, Number, Type

O campo de cargo (aqui chamado G_Level) costuma usar códigos numéricos. Um esquema muito comum é: 0 para membro comum, 32 para Battle Master (subchefe), 128 para o mestre da guilda. Alguns emuladores usam também 48 para assistente. Novamente: confirme os valores no seu emulador, pois eles mudam entre versões.

O relacionamento essencial é: cada linha em GuildMember aponta para uma guilda em Guild pelo nome (G_Name) e para um personagem pela coluna Name. Já a tabela Character (dos personagens) frequentemente possui um campo próprio indicando a guilda atual. Manter esses três pontos sincronizados é a base de tudo.

Consultando guildas e membros

Antes de alterar, sempre inspecione. Comece listando as guildas ativas e a contagem de membros para entender o cenário:

-- Lista guildas com número de membros (nomes de exemplo)
SELECT g.G_Name,
       g.G_Master,
       g.G_Score,
       COUNT(m.Name) AS Membros
FROM Guild g
LEFT JOIN GuildMember m ON g.G_Name = m.G_Name
GROUP BY g.G_Name, g.G_Master, g.G_Score
ORDER BY Membros DESC;

Para investigar uma guilda específica e ver todos os seus integrantes com seus cargos:

SELECT m.Name,
       m.G_Level AS Cargo,
       m.G_Status
FROM GuildMember m
WHERE m.G_Name = 'NomeDaGuilda'
ORDER BY m.G_Level DESC;

O membro com o maior valor de cargo (por exemplo 128) deve coincidir com o campo G_Master da tabela Guild. Se não coincidir, você achou uma guilda inconsistente que precisa de correção.

Transferindo a liderança de uma guilda

Este é o caso mais comum: o mestre parou de jogar e a guilda ficou travada. A transferência exige duas atualizações coordenadas — mudar o mestre na tabela Guild e ajustar o cargo do novo líder em GuildMember. Faça sempre dentro de uma transação:

BEGIN TRANSACTION;

-- 1. Rebaixa o antigo mestre a membro comum
UPDATE GuildMember
SET G_Level = 0
WHERE G_Name = 'NomeDaGuilda' AND Name = 'AntigoMestre';

-- 2. Promove o novo líder ao cargo de mestre
UPDATE GuildMember
SET G_Level = 128
WHERE G_Name = 'NomeDaGuilda' AND Name = 'NovoMestre';

-- 3. Atualiza o campo de mestre na tabela da guilda
UPDATE Guild
SET G_Master = 'NovoMestre'
WHERE G_Name = 'NomeDaGuilda';

-- Confira o resultado antes de confirmar
SELECT G_Name, G_Master FROM Guild WHERE G_Name = 'NomeDaGuilda';

COMMIT TRANSACTION;
-- Se algo estiver errado, use ROLLBACK TRANSACTION em vez de COMMIT

Passos numerados para executar com segurança:

  1. Faça o backup do banco.
  2. Confirme que o NovoMestre realmente pertence à guilda (rode o SELECT de membros).
  3. Execute o bloco dentro de BEGIN TRANSACTION.
  4. Rode o SELECT de verificação antes do COMMIT.
  5. Reinicie o GameServer ou peça para os membros relogarem para o cache atualizar.

Removendo membros e guildas órfãs

Para retirar um membro individual, remova a linha em GuildMember e limpe o vínculo no personagem, se o seu emulador armazenar guilda na tabela Character:

DELETE FROM GuildMember
WHERE G_Name = 'NomeDaGuilda' AND Name = 'MembroSaindo';

Para dissolver uma guilda inteira, a ordem importa. Remova primeiro os membros, depois as alianças e só então a guilda, evitando registros pendurados:

BEGIN TRANSACTION;
DELETE FROM GuildMember WHERE G_Name = 'GuildaMorta';
DELETE FROM GuildMatching WHERE G_Name = 'GuildaMorta';
DELETE FROM Guild WHERE G_Name = 'GuildaMorta';
COMMIT TRANSACTION;

Nunca apague a linha da Guild deixando membros em GuildMember. Isso cria personagens que "acham" que estão em uma guilda inexistente, o que trava o painel de guilda no cliente.

Gerenciando alianças

Alianças ligam duas ou mais guildas sob uma guilda líder. No modelo típico, existe uma tabela dedicada onde cada linha relaciona a guilda líder da aliança a uma guilda membro, além de um campo de tipo que distingue aliança de hostilidade (Guild War declarada). Estrutura de exemplo:

Campo (exemplo)Significado
G_NameGuilda líder da aliança
NumberGuilda membro/aliada
Type0 = aliança, 1 = hostilidade

Para criar uma aliança manualmente, insira o vínculo apontando a guilda líder para a aliada:

INSERT INTO GuildMatching (G_Name, Number, Type)
VALUES ('GuildaLider', 'GuildaAliada', 0);

Para dissolver uma aliança problemática que está travando a Guild War ou impedindo uma guilda de entrar em outra aliança:

DELETE FROM GuildMatching
WHERE (G_Name = 'GuildaLider' AND Number = 'GuildaAliada')
   OR (G_Name = 'GuildaAliada' AND Number = 'GuildaLider');

Lembre-se de que muitos emuladores limitam o número de guildas por aliança (geralmente 5). Forçar mais linhas do que o limite pode gerar comportamento imprevisível no cliente.

Corrigindo a marca (logo) da guilda

A marca da guilda é armazenada como um campo binário (G_Mark) de tamanho fixo, normalmente 32 bytes, representando o desenho de 16x16 pixels. Uma marca corrompida faz a guilda sumir da lista ou o cliente travar ao renderizá-la. Para zerar uma marca defeituosa e forçar o jogador a redesenhá-la:

UPDATE Guild
SET G_Mark = 0x0000000000000000000000000000000000000000000000000000000000000000
WHERE G_Name = 'NomeDaGuilda';

O tamanho exato do binário varia por emulador. Confirme com SELECT DATALENGTH(G_Mark) FROM Guild quantos bytes o campo espera antes de sobrescrever.

Sincronizando o cache do GameServer

O erro conceitual mais frequente de administradores iniciantes é editar o banco e esperar que o jogo mude na hora. O GameServer carrega guildas e alianças em memória, geralmente na inicialização, e escreve de volta no banco periodicamente ou ao ocorrerem eventos. Isso significa duas coisas:

  1. Suas alterações podem ser sobrescritas pelo servidor se um membro daquela guilda estiver online e o servidor gravar o estado antigo por cima.
  2. Suas alterações só aparecem depois que o cache é recarregado.

A prática segura: faça edições de guilda com o GameServer desligado ou em manutenção, e ligue-o depois. Assim o servidor lê o estado já corrigido diretamente do banco.

Erros comuns e soluções

ErroCausa provávelSolução
Guilda aparece na lista mas não carrega membrosGuild existe sem linhas em GuildMemberRecadastre os membros ou apague a guilda órfã
Mestre não consegue expulsar/convidarG_Master diverge do cargo 128 em GuildMemberSincronize os dois campos com o bloco de transferência de liderança
Alterações somem após reiniciarGameServer sobrescreveu o cache antigoEdite com o servidor em manutenção e reinicie depois
Cliente trava ao abrir painel de guildaMarca (G_Mark) com tamanho/binário inválidoZere o campo G_Mark com o tamanho correto
Guild War não iniciaRegistro de hostilidade duplicado ou órfão em aliançasLimpe as linhas inconsistentes na tabela de alianças
Personagem "preso" em guilda apagadaVínculo residual na tabela CharacterAtualize/limpe o campo de guilda no personagem

Checklist de lançamento

Antes de considerar uma operação de guilda concluída em produção, percorra esta lista:

  • Backup completo do banco MuOnline feito e verificado
  • Schema real das tabelas de guilda confirmado no seu emulador
  • Query testada em ambiente local antes de produção
  • Operação executada dentro de BEGIN TRANSACTION
  • SELECT de verificação rodado antes do COMMIT
  • Campo G_Master sincronizado com o cargo em GuildMember
  • Nenhuma linha órfã em GuildMember ou na tabela de alianças
  • GameServer reiniciado ou cache recarregado após as edições
  • Membros afetados avisados para relogar
  • Registro da alteração anotado no seu log de administração

Gerenciar guildas pelo banco dá um controle que a interface do jogo nunca oferece, mas cobra disciplina em troca. Trate cada tabela como parte de um conjunto relacionado, nunca edite em produção sem backup e sempre respeite o cache do GameServer. Com essas práticas, você resolve desde guildas abandonadas até alianças corrompidas sem arriscar a integridade do seu servidor.

Perguntas frequentes

Posso editar guildas com o servidor online?

Sim, mas o GameServer mantém dados de guilda em cache. Alterações diretas no banco só aparecem de forma confiável após o membro relogar ou após reiniciar o GameServer. Para operações críticas, prefira agendar manutenção.

O que acontece se eu apagar o mestre de uma guilda?

A guilda fica órfã e pode causar erro ao carregar a lista de membros. Sempre transfira a liderança para outro personagem antes de remover o mestre, atualizando o campo de mestre e o cargo do novo líder.

Como forço a atualização da lista de guildas no jogo?

Reinicie o GameServer ou use o comando de recarga do seu emulador, quando existir. Muitos emuladores carregam guildas na inicialização e mantêm em memória durante toda a sessão.

Alianças ficam em qual tabela?

Depende do emulador. Em muitos, existe uma tabela dedicada a alianças (por exemplo GuildMatching ou G_Alliance) que relaciona a guilda líder da aliança com as guildas membros. Confirme o schema do seu emulador antes de editar.

Preciso de backup para essas operações?

Sim, sempre. Guildas envolvem múltiplas tabelas relacionadas (guilda, membros, marca/logo, alianças). Um backup completo antes de qualquer UPDATE ou DELETE é obrigatório em produção.

BR
Editor de eventos, mapas e itens

Bruno é especialista em eventos, mapas, bosses e economia de itens do MU Online. Documenta cada detalhe com base em jogo real.

Continue lendo

Artigos relacionados