O maior portal de MU Online do Brasil — desde 2003
Tutorial Avançado Economia

Como gerar relatórios automáticos de economia para o seu servidor de MU Online

Monte um pipeline de relatórios automáticos que monitora Zen em circulação, inflação de itens, drop de jewels e saúde da economia do seu servidor de MU Online, com queries SQL prontas e alertas configuráveis.

BR Bruno · Atualizado em 1 ago 2025 · ⏱ 17 min de leitura
Resposta rápida

Toda economia de servidor de MU Online tende à inflação se ninguém estiver observando os números — Zen se acumula, jewels se acumulam, e o item que era raro no lançamento vira commodity poucos meses depois. A diferença entre um servidor que mantém a economia saudável por anos e um que "morre" de inf

Toda economia de servidor de MU Online tende à inflação se ninguém estiver observando os números — Zen se acumula, jewels se acumulam, e o item que era raro no lançamento vira commodity poucos meses depois. A diferença entre um servidor que mantém a economia saudável por anos e um que "morre" de inflação em poucos meses geralmente não é a taxa de drop configurada inicialmente, mas sim a capacidade de detectar o desequilíbrio cedo e agir. Relatórios automáticos de economia são exatamente essa capacidade: um conjunto de queries e alertas que rodam sozinhos e avisam o administrador antes que o problema vire visível para todos os jogadores. Este tutorial monta esse pipeline do zero.

Por que automatizar relatórios de economia

Olhar a economia "no olho" — via feedback de jogadores no Discord ou impressão pessoal do administrador — sempre chega tarde. Quando os jogadores começam a reclamar que "o preço de tudo subiu", a inflação já está em estágio avançado e a correção (reduzir drop, adicionar sink de Zen) causa mais atrito do que se tivesse sido feita cedo. Relatórios automáticos, rodando diariamente ou semanalmente, dão visibilidade contínua e permitem ajustes pequenos e graduais em vez de correções bruscas e impopulares.

Métricas essenciais de uma economia de MU saudável

MétricaO que medeSinal de alerta
Zen total em circulaçãoSoma do Zen em todas as contas + personagensCrescimento muito acima do número de jogadores ativos
Zen médio por conta ativaZen total / contas ativasSubida constante indica pouco "sink" de Zen no jogo
Jewels em circulação (por tipo)Soma de Bless, Soul, Life, Chaos, etc.Crescimento desproporcional ao número de jogadores
Preço médio de item-chave no mercadoPreço de venda observado (loja de jogador/marketplace)Alta constante = inflação; queda brusca = saturação
Distribuição de riqueza (top 1% vs. resto)Zen/itens concentrados nas contas mais ricasConcentração extrema afasta jogador novo do mercado
Taxa de sink de ZenZen gasto em NPC, reparo, taxas / Zen gerado por dropSink muito abaixo da geração = inflação garantida

Fontes de dados: onde os números moram

A maioria dos emuladores de MU (IGCN, MuEMU, X-Team) guarda essas informações em tabelas relativamente previsíveis, embora os nomes variem:

DadoTabela típicaColuna relevante
Zen do personagemCharacterMoney
Zen guardado no armazém/bancoWarehouse ou AccountWarehouseMoney
Inventário de itensCharacter_Inventory / Warehouse_ItemsItemIndex, ItemLevel
Log de dropMonsterDropLog (se existir)ItemId, Timestamp
Log de transação de mercadoMarketLog / PersonalShopLogPrice, ItemId

Se o seu emulador não mantém log de drop ou transação por padrão, vale a pena habilitar esse log via configuração (a maioria tem a opção, mesmo que desativada por padrão) antes de precisar dele — sem histórico, você só consegue analisar o estado atual, não a tendência.

Passo 1 — Query de Zen total em circulação

SELECT
    (SELECT COALESCE(SUM(Money), 0) FROM Character) +
    (SELECT COALESCE(SUM(Money), 0) FROM Warehouse) AS zen_total_circulacao,
    (SELECT COUNT(DISTINCT AccountID) FROM Character WHERE LastLogin > NOW() - INTERVAL 7 DAY) AS contas_ativas_7d;

Rode essa query diariamente e grave o resultado em uma tabela histórica própria (não nas tabelas do jogo), para poder comparar a evolução ao longo do tempo:

CREATE TABLE eco_report_daily (
    report_date DATE PRIMARY KEY,
    zen_total BIGINT,
    contas_ativas INT,
    zen_medio_por_conta DECIMAL(20,2)
);

Passo 2 — Query de jewels em circulação por tipo

SELECT
    ItemIndex,
    CASE ItemIndex
        WHEN 14 THEN 'Jewel of Bless'
        WHEN 15 THEN 'Jewel of Soul'
        WHEN 22 THEN 'Jewel of Life'
        WHEN 31 THEN 'Jewel of Chaos'
        ELSE 'Outro'
    END AS jewel_nome,
    COUNT(*) AS quantidade_total
FROM Character_Inventory
WHERE ItemIndex IN (14, 15, 22, 31)
GROUP BY ItemIndex
ORDER BY quantidade_total DESC;

Ajuste os ItemIndex conforme a tabela de itens do seu emulador — os valores acima são ilustrativos e variam por season/cliente.

Passo 3 — Detectando concentração de riqueza

SELECT AccountID, SUM(Money) AS zen_conta
FROM Character
GROUP BY AccountID
ORDER BY zen_conta DESC
LIMIT 20;

Compare a soma dessas 20 contas com o zen_total_circulacao calculado no Passo 1. Se as 20 contas mais ricas concentram, por exemplo, mais de 40% do Zen total, isso já é sinal de desequilíbrio que vale investigar — pode ser farm legítimo de jogadores muito dedicados, ou pode ser sinal de exploit/bot em escala.

Passo 4 — Calculando a taxa de sink de Zen

O "sink" é o Zen que sai de circulação (gasto em NPC, reparo de item, taxa de mercado). Se o seu emulador não loga isso diretamente, uma aproximação é comparar o Zen total em dois pontos no tempo contra uma estimativa de geração (drop médio × jogadores ativos):

-- Comparação simples entre dois relatórios diários
SELECT
    d2.report_date,
    d2.zen_total - d1.zen_total AS variacao_zen,
    d2.contas_ativas
FROM eco_report_daily d1
JOIN eco_report_daily d2 ON d2.report_date = d1.report_date + INTERVAL 1 DAY
ORDER BY d2.report_date DESC
LIMIT 30;

Uma variação positiva constante e crescente, sem correspondência em novos jogadores, é o sinal mais direto de inflação em andamento.

Passo 5 — Automatizando a execução (cron/agendador)

Em Linux, agende as queries via cron chamando um script (PHP, Python ou até um .sql via mysql -e) que roda as consultas e grava o resultado na tabela de histórico:

# crontab -e
0 6 * * * /usr/bin/php /var/www/scripts/eco_report_daily.php >> /var/log/mu_eco_report.log 2>&1

O script (eco_report_daily.php) deve: conectar ao banco, rodar as queries do Passo 1 a 4, gravar o resultado em eco_report_daily, e opcionalmente enviar um resumo para um webhook do Discord administrativo.

Passo 6 — Alertas automáticos por limiar

Configure o script para disparar um alerta (webhook do Discord, e-mail) quando algum indicador ultrapassar um limiar definido:

IndicadorLimiar de alerta sugerido
Variação de Zen total+15% em 7 dias sem aumento de jogadores ativos
Concentração nas top 20 contasAcima de 40% do Zen total
Jewel específica em circulaçãoCrescimento de +25% em 7 dias
Contas ativas caindoQueda de 20%+ na semana
if ($variacao_percentual_zen > 0.15 && $crescimento_jogadores < 0.05) {
    enviarAlertaDiscord("Alerta de inflação: Zen cresceu {$variacao_percentual_zen}% sem crescimento proporcional de jogadores.");
}

Passo 7 — Transformando dados em decisão

Um relatório só tem valor se leva a uma ação. Estabeleça respostas padrão para cada sinal:

Sinal detectadoAção recomendada
Inflação de Zen constanteAdicionar sink (taxa de NPC, custo de reset/reforma maior)
Jewel específica em excessoReduzir taxa de drop daquela jewel em 10-20%
Concentração de riqueza extremaInvestigar contas do topo (farm legítimo vs. exploit)
Queda de jogadores ativosRevisar causa antes de mexer na economia (pode não ser econômico)

Passo 8 — Relatório semanal consolidado para a equipe

Além dos alertas diários automáticos, monte um resumo semanal (mesmo que manual, copiando os números do histórico) com gráfico simples de evolução de Zen total, jewels em circulação e contas ativas. Compartilhar esse resumo com toda a equipe de administração — não só quem cuida da economia — ajuda decisões relacionadas (eventos, drop de itens novos) a considerar o estado atual da economia.

Erros comuns e soluções

SintomaCausa provávelSolução
Relatório não roda automaticamenteCron mal configurado ou permissão de arquivoTeste o script manualmente e revise o crontab
Números não batem com percepção dos jogadoresLog de mercado/drop desativado, faltando dadosHabilite os logs relevantes na configuração do emulador
Alertas disparando demais (falso positivo)Limiares configurados baixos demaisCalibre os limiares observando 2-4 semanas de histórico primeiro
Inflação identificada mas sem açãoFalta de processo de resposta definidoDocumente ação padrão para cada tipo de alerta
Histórico incompleto após queda de servidorTabela de relatório sem tratamento de falhaAdicione log de erro e reexecução manual do dia perdido

Checklist de implementação do pipeline de relatórios

  • Tabela histórica de relatórios (eco_report_daily ou equivalente) criada.
  • Queries de Zen total, jewels em circulação e concentração de riqueza validadas.
  • Logs de drop/mercado habilitados no emulador, se ainda não estavam.
  • Script de automação agendado via cron (ou equivalente no Windows).
  • Alertas configurados com limiares calibrados após período de observação.
  • Processo de resposta documentado para cada tipo de alerta.
  • Resumo semanal compartilhado com a equipe de administração.

Com os relatórios automáticos monitorando a saúde da economia, o próximo passo é usar esses dados para calibrar diretamente as taxas de drop e os sistemas de itens do servidor, fechando o ciclo entre monitoramento e configuração — um bom ponto de partida é revisar as taxas gerais no tutorial de criação de servidor de MU Online.

Perguntas frequentes

Com que frequência devo gerar relatórios de economia?

Um relatório diário resumido (Zen total em circulação, jewels dropados, top farmadores) e um relatório semanal mais completo (comparativo de inflação, distribuição de riqueza) cobrem bem a maioria dos servidores. Em períodos de lançamento ou evento grande, vale acompanhar diariamente por pelo menos duas semanas.

Preciso de uma ferramenta de BI cara para isso?

Não. A maior parte do valor vem de queries SQL bem desenhadas rodando periodicamente, com o resultado exportado para uma planilha ou um dashboard simples (Grafana com conector MySQL, por exemplo, que é gratuito). Ferramentas de BI pagas só compensam em servidores muito grandes com equipe dedicada de dados.

O que é considerado 'inflação' no contexto de MU Online?

É o aumento da quantidade de Zen e itens de valor (jewels, itens excellent/ancient) em circulação sem aumento proporcional de demanda, resultando em queda do poder de compra de cada unidade. Se o preço médio de uma Jewel of Bless em Zen sobe consistentemente mês a mês, é sinal de inflação.

Relatórios de economia ajudam a identificar bots e duplicação de item?

Sim, indiretamente. Picos anormais de Zen ou item em uma conta específica, ou crescimento de circulação muito acima do número de jogadores ativos, costumam ser os primeiros sinais visíveis de bot farmando em escala ou de um exploit de duplicação sendo usado ativamente.

Vale a pena compartilhar esses relatórios com a comunidade?

Uma versão resumida e sem dados sensíveis (ex.: 'ajustamos o drop de jewel porque a inflação passou de X%') gera transparência e confiança. Não compartilhe dados de contas individuais ou números que exponham vulnerabilidades exploráveis por jogadores mal-intencionados.

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