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

Como Implementar Loja In-Game Avançada no Servidor de MU Online

Aprenda a configurar uma loja in-game completa no seu servidor de MU Online S6, com NPCs, tabelas SQL e integração de sistemas de moeda.

EQ Equipe ViciadosMU · Atualizado em 4 jul 2026 · ⏱ 12 min de leitura

O que é a Loja In-Game e por que ela importa

No contexto de servidores privados de MU Online Season 6, a loja in-game é um NPC customizado que permite que jogadores troquem moedas internas — Zen, Créditos, Ruud, WCoin ou qualquer moeda personalizada — por itens, buffs temporários, consumíveis e serviços. Ela não é uma funcionalidade nativa do cliente MU S6, mas pode ser implementada através da edição de tabelas SQL, configuração de NPCs e integração com o GameServer.

Uma loja bem configurada melhora a retenção de jogadores, equilibra a economia do servidor e reduz a dependência de drops aleatórios nos primeiros níveis. Mal configurada, ela destrói a progressão e esvazia os mapas de farm.

Nota: Este tutorial é exclusivamente educacional. Todos os procedimentos descritos aplicam-se a ambientes de aprendizado e desenvolvimento local. Não abordamos serviços pagos, cobranças de jogadores reais ou operação comercial de servidores.

Pré-requisitos Técnicos

Antes de iniciar a configuração da loja, certifique-se de que você possui:

  • Servidor MU Online S6 funcional (GameServer, ConnectServer, DataServer ativos)
  • Acesso ao SQL Server com o banco de dados MuOnline configurado
  • Editor de texto (Notepad++ recomendado) e acesso às pastas do servidor
  • Conhecimento básico de SQL e das tabelas T_Item, T_ShopItem, T_Money
  • Cliente compatível com Season 6 Episode 3 configurado localmente

O MU Online S6 possui 6 classes jogáveis com árvores de evolução distintas:

Dark Knight    → Blade Knight    → Blade Master
Dark Wizard    → Soul Master     → Grand Master
Fairy Elf      → Muse Elf        → High Elf
Magic Gladiator → Duel Master    (sem 1ª/2ª quest, sem Wing L1)
Dark Lord      → Lord Emperor    (stat exclusiva: CMD)
Summoner       → Bloody Summoner → Dimension Master

Cada classe possui restrições de equipamento. A loja in-game precisa respeitar essas restrições para evitar conflitos de cliente.

Estrutura SQL da Loja

A loja in-game opera principalmente sobre a tabela T_ShopItem (ou equivalente no seu pacote de servidor). A estrutura básica é:

-- Exemplo de estrutura de tabela de loja customizada
CREATE TABLE [dbo].[CustomShop] (
    [ShopID]        INT           NOT NULL,
    [ItemCategory]  INT           NOT NULL,  -- 0=Armas, 1=Armaduras, 2=Joias, 3=Consumiveis
    [ItemIndex]     SMALLINT      NOT NULL,
    [ItemLevel]     TINYINT       DEFAULT 0,
    [ItemOption]    TINYINT       DEFAULT 0,  -- Luck, Skill, etc.
    [ItemExc]       TINYINT       DEFAULT 0,
    [PriceZen]      BIGINT        DEFAULT 0,
    [PriceCredit]   INT           DEFAULT 0,
    [RequireClass]  TINYINT       DEFAULT 0,  -- Bitmask de classe
    [RequireLevel]  SMALLINT      DEFAULT 0,
    [StockLimit]    INT           DEFAULT -1, -- -1 = ilimitado
    [Active]        BIT           DEFAULT 1,
    CONSTRAINT [PK_CustomShop] PRIMARY KEY ([ShopID])
);

Para popular a loja com itens iniciais voltados para novos jogadores:

-- Adicionar conjunto de itens iniciais para Dark Knight (RequireClass bitmask = 1)
INSERT INTO [dbo].[CustomShop]
    (ShopID, ItemCategory, ItemIndex, ItemLevel, PriceZen, PriceCredit, RequireClass, RequireLevel)
VALUES
    (1, 0, 0, 4, 500000, 0, 1, 150),   -- Espada Bronzina +4, DK, nível 150
    (2, 1, 5, 3, 300000, 0, 1, 100),   -- Armadura Escarlate +3, DK, nível 100
    (3, 2, 14, 0, 50000, 0, 0, 1),     -- Jóia da Bênção, qualquer classe
    (4, 2, 15, 0, 50000, 0, 0, 1),     -- Jóia da Alma, qualquer classe
    (5, 3, 0, 0, 10000, 0, 0, 1);      -- Poção de Vida Grande, qualquer classe
Atenção: Nunca insira Wings de Nível 3 diretamente na loja. As Wings L3 fazem parte do ciclo de progressão máxima: são criadas com Wing L2 + 3x Loch's Feather + Jóia da Criação. A Loch's Feather só é obtida de Balgass, que aparece apenas quando o evento Crywolf FALHA. Retirar esse item da progressão natural quebra o late-game do servidor.

Configuração do NPC de Loja

No MU Online S6, NPCs são definidos nos arquivos de configuração do servidor, tipicamente em Data\MonsterSetBase.txt (ou equivalente). O NPC de loja precisa de uma entrada específica:

// Formato: MapaID, NPC_ID, PosX, PosY, Dir, Respawn, Quest
// Lorencia = Mapa 0 — posição próxima ao centro (130, 135)
0   237   130   135   3   0   0

O NPC de índice 237 é comumente o Wandering Merchant ou um NPC customizado mapeado para a rotina de loja. Verifique no seu pacote de servidor qual índice está livre e configure o arquivo de texto correspondente no cliente para exibir o nome correto.

Para servidores que utilizam WebEngine ou sistemas similares, a configuração do NPC pode ser feita via painel administrativo web, sem edição manual de arquivos. Nesse caso, o formulário de criação de NPC já expõe os campos ShopID, MapID, PosX e PosY.

Integração com Sistemas de Moeda

A maioria dos pacotes S6 suporta múltiplas moedas simultâneas. A loja avançada deve aceitar pelo menos:

Zen — moeda base do MU. Gerada por drops de monstros em todos os mapas, de Lorencia ao Acheron. Alta disponibilidade no early-game, mas infla conforme o servidor envelhece.

Créditos / WCoin — moeda secundária, geralmente distribuída por tempo online, eventos automáticos como Blood Castle e Devil Square, ou recompensas de quests administrativas. Nunca associe créditos a pagamentos reais neste contexto educacional.

Ruud — presente em algumas versões do S6 e em seasons posteriores. Se o seu pacote suporta, configure a tabela T_Ruud e referencie o campo PriceRuud na loja.

-- Procedure para processar compra com validação de saldo
CREATE PROCEDURE [dbo].[usp_ShopPurchase]
    @AccountID  NVARCHAR(10),
    @CharName   NVARCHAR(10),
    @ShopID     INT
AS
BEGIN
    DECLARE @Price    BIGINT
    DECLARE @ZenAtual BIGINT

    SELECT @Price = PriceZen FROM CustomShop WHERE ShopID = @ShopID AND Active = 1
    SELECT @ZenAtual = Money FROM Character WHERE Name = @CharName

    IF @ZenAtual >= @Price
    BEGIN
        UPDATE Character SET Money = Money - @Price WHERE Name = @CharName
        -- Lógica de entrega do item via GameServer packet ou tabela de pendências
        INSERT INTO PendingItems (CharName, ShopID, RequestTime)
        VALUES (@CharName, @ShopID, GETDATE())
    END
    ELSE
        RAISERROR('Zen insuficiente.', 16, 1)
END
Dica: Implemente uma tabela de pendências (PendingItems) em vez de entregar itens diretamente via SQL. O GameServer lê essa tabela no login do personagem e entrega os itens de forma segura, evitando erros de duplicação ou perda de item em caso de desconexão durante a transação.

Balanceamento de Preços por Fase de Progressão

Uma loja desequilibrada é mais danosa que nenhuma loja. Use esta referência de faixas de nível do S6 como guia:

  • Nível 1–150: Itens de baixo nível, sem opções, preços em Zen acessível. Objetivo: facilitar o early-game sem eliminar o farm de Lorencia, Noria e Devias.
  • Nível 151–300: Consumíveis, Joias de Bênção e Alma, pergaminhos. Preços moderados. O farm em Dungeon (3 andares), Lost Tower (7 andares) e Atlans (3 andares) ainda deve ser mais eficiente para itens de equipamento.
  • Nível 301–400: Sets de segundo tier, opções básicas. Créditos como moeda preferencial. O farm em Tarkan, Icarus, Aida e Karutan deve continuar relevante.
  • Nível 400+: Apenas consumíveis e suporte. Itens de end-game como sets excelentes devem vir exclusivamente de drops em Raklion, Vulcanus, Acheron, Land of Trials e da mecânica de Chaos Castle / Kanturu / Kalima (mapas 1 a 7).

Logs e Auditoria

Toda transação de loja deve ser registrada. Implemente uma tabela de log:

CREATE TABLE [dbo].[ShopLog] (
    [LogID]       BIGINT IDENTITY(1,1) PRIMARY KEY,
    [LogDate]     DATETIME DEFAULT GETDATE(),
    [AccountID]   NVARCHAR(10),
    [CharName]    NVARCHAR(10),
    [ShopID]      INT,
    [ItemCategory] INT,
    [ItemIndex]   SMALLINT,
    [PricePaid]   BIGINT,
    [Currency]    NVARCHAR(10)  -- 'ZEN', 'CREDIT', 'RUUD'
);

Com o log ativo, o Game Master pode identificar abusos, duplicações e comportamentos anômalos. Use a procedure de compra para inserir nessa tabela a cada transação bem-sucedida.

Erros Comuns e Como Evitar

Item entregue com atributos errados: Verifique os campos ItemLevel, ItemOption e ItemExc na tabela. Um item com ItemExc = 63 tem todas as opções excelentes ativas — isso pode quebrar o balanceamento.

NPC sumindo após reinício: Certifique-se de que a entrada no MonsterSetBase.txt usa respawn desabilitado (Respawn = 0) para NPCs fixos. Alguns pacotes resetam NPCs dinâmicos ao reiniciar o GameServer.

Compra duplicada: Sempre use transações SQL (BEGIN TRAN / COMMIT / ROLLBACK) na procedure de compra. Sem controle transacional, duas requisições simultâneas podem debitar o Zen duas vezes ou entregar o item duas vezes.

Magic Gladiator sem acesso a itens: O MG não passa pela 1ª e 2ª quest e começa como Duel Master. Configure o RequireClass corretamente — o MG normalmente usa bitmask diferente do DK e DW puros. Consulte a documentação do seu pacote para os valores corretos.

Perguntas frequentes

Posso vender Wings de Nível 3 na loja in-game?

Tecnicamente é possível registrar o item na tabela, mas não é recomendado. As Wings L3 (Asa do Dragão, Asa da Alma, etc.) exigem o processo de criação com Loch's Feather — que só cai de Balgass quando o evento Crywolf FALHA — mais o Jóia da Criação, o que torna o item parte central da economia de progressão. Vendê-la desequilibra todo o mid e end-game.

O Magic Gladiator pode comprar itens de qualquer classe na loja?

O MG começa na terceira classe diretamente (Duel Master) e usa equipamentos de DK e DW. A loja deve filtrar por classe via a coluna de requisito — itens com RequireClass = 2 (DK) ou RequireClass = 8 (DW) podem ser tornados acessíveis ao MG conforme a configuração do servidor.

Como evitar que jogadores abusem da loja para farmar Zen infinito?

Configure preços de venda (SellPrice) muito baixos ou zero nos itens de loja. Desative a opção de revenda ao NPC padrão para itens comprados na loja customizada, usando uma flag de origem no item ou verificando via GameServer.exe a origem da transação.

O Dark Lord precisa de pontos em CMD para usar montura. A loja vende monturas?

O Dark Lord usa a stat exclusiva Comando (CMD) para invocar e fortalecer o Cavalo Escuro e o Águia Espírito. A loja pode oferecer Pergaminhos de Invocação ou itens relacionados, mas a montaria em si é vinculada ao personagem via quest — a loja não substitui o processo de conquista.

EQ

Equipe ViciadosMU

Equipe editorial do ViciadosMU — portal de MU Online no ar desde 2003.

Continue lendo

Artigos relacionados