Como Configurar a Loja de Ruud e NPCs de Evento no Servidor MU
Aprenda a configurar a loja de Ruud, definir preços de itens, posicionar NPCs de evento e ajustar recompensas via SQL e arquivos .ini no MuServer.
A moeda Ruud foi introduzida a partir da Season 12 do MU Online e representa uma das principais formas de progressão de personagens em servidores modernos. Configurar corretamente a loja de Ruud e posicionar os NPCs de evento garante uma economia saudável e jogadores engajados no seu servidor.
Este guia cobre a configuração completa: desde a tabela SQL de itens até o posicionamento físico dos NPCs no mapa.
Pré-requisitos
- MuServer Season 12 ou superior (a loja de Ruud não existe em S6 vanilla)
- Acesso ao SQL Server Management Studio com permissão de escrita no banco
MuOnline - Acesso à pasta
GameServer/Data/no servidor - Servidor parado (GameServer.exe encerrado) para edição de arquivos .txt de monstros
Passo 1: Entender a Estrutura do Sistema Ruud
O sistema de Ruud opera em três camadas:
- Ganho de Ruud — configurado por evento (Arca do Ruud, mapas específicos, recompensas de quest)
- Armazenamento — coluna
Ruudna tabelaCharacterdo bancoMuOnline - Loja de Ruud — tabela
T_MN_PointShopListdefine os itens disponíveis e preços
Verifique se a coluna Ruud existe no seu banco:
-- Verificar se a coluna Ruud existe na tabela Character
SELECT COLUMN_NAME, DATA_TYPE, COLUMN_DEFAULT
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME = 'Character'
AND COLUMN_NAME = 'Ruud';
Se a coluna não existir, adicione-a:
ALTER TABLE MuOnline..Character
ADD Ruud INT NOT NULL DEFAULT 0;
Passo 2: Configurar a Tabela de Itens da Loja
A tabela T_MN_PointShopList define cada item disponível na loja. Abra o SSMS e execute:
-- Ver estrutura atual da loja de Ruud
SELECT TOP 20
ShopCode,
ItemCode,
ItemIndex,
ItemLevel,
ItemOpt,
Price,
ClassFlag,
LimitBuy,
SaleFlag
FROM MuOnline..T_MN_PointShopList
ORDER BY ShopCode;
Para adicionar um novo item (exemplo: Wings of Ruin nível 3 por 15.000 Ruud):
-- Inserir item na loja de Ruud
-- ItemCode 12 = Wings, ItemIndex 36 = Wings of Ruin, ItemLevel 3
INSERT INTO MuOnline..T_MN_PointShopList
(ShopCode, ItemCode, ItemIndex, ItemLevel, ItemOpt, Price, ClassFlag, LimitBuy, SaleFlag)
VALUES
(1, 12, 36, 3, 0, 15000, 255, 0, 1);
ClassFlag usa bitmask: 1=DW, 2=DK, 4=Elf, 8=MG, 16=DL, 32=Summoner, 64=RF, 128=GL. Some os valores para liberar múltiplas classes. Valor 255 libera todas.Para atualizar o preço de um item existente:
-- Alterar preço de item específico na loja
UPDATE MuOnline..T_MN_PointShopList
SET Price = 8000
WHERE ItemCode = 13 AND ItemIndex = 0 AND ShopCode = 1;
-- ItemCode 13 = Archangel set (exemplo)
Para remover um item da loja:
-- Remover item da loja de Ruud
DELETE FROM MuOnline..T_MN_PointShopList
WHERE ShopCode = 1 AND ItemCode = 12 AND ItemIndex = 36;
Passo 3: Configurar Limites de Compra e Restrições
O campo LimitBuy define quantas vezes por conta/personagem o item pode ser comprado:
-- Definir limite de 1 compra por personagem para item especial
UPDATE MuOnline..T_MN_PointShopList
SET LimitBuy = 1
WHERE ShopCode = 1 AND ItemCode = 12 AND ItemIndex = 36;
-- Remover limite (0 = ilimitado)
UPDATE MuOnline..T_MN_PointShopList
SET LimitBuy = 0
WHERE ShopCode = 1;
Para rastrear compras com limite, verifique a tabela de histórico:
-- Ver histórico de compras na loja de Ruud
SELECT TOP 50
AccountID,
CharName,
ItemCode,
ItemIndex,
Price,
BuyDate
FROM MuOnline..T_MN_PointShopBuyList
ORDER BY BuyDate DESC;
Passo 4: Posicionar o NPC de Loja no Mapa
O NPC que abre a loja de Ruud (geralmente chamado Lugard no S12+, MonsterIndex 658) precisa ser posicionado via arquivo de texto.
Abra o arquivo GameServer/Data/Monster/MonsterSetBase.txt e adicione a linha:
// Ruud Shop NPC - Lorencia
658 0 136 140 0 0 50
// Formato: MonsterIndex MapNumber X Y Dir Action ViewRange
Para múltiplos NPCs de loja em mapas diferentes:
// Ruud Shop NPC - Noria (mapa 3)
658 3 170 100 0 0 50
// Ruud Shop NPC - Elbeland (mapa 51)
658 51 215 45 0 0 50
Passo 5: Configurar Recompensas de Ruud por Evento
As recompensas de Ruud concedidas ao completar eventos são configuradas em arquivos .ini ou diretamente via SQL, dependendo da versão do servidor.
Via arquivo .ini (GameServer/Config/):
; Arquivo: GameServer/Config/EventRuudReward.ini
[BloodCastle]
BC1_Ruud=200
BC2_Ruud=300
BC3_Ruud=400
BC4_Ruud=500
BC5_Ruud=600
BC6_Ruud=700
BC7_Ruud=1000
[DevilSquare]
DS1_Ruud=150
DS2_Ruud=250
DS3_Ruud=350
DS4_Ruud=500
DS5_Ruud=700
[ChaosCastle]
CC1_Ruud=100
CC7_Ruud=500
Via SQL (se o servidor usar tabela de configuração):
-- Ver configuração de Ruud por evento
SELECT EventType, EventLevel, RuudReward
FROM MuOnline..T_MN_EventRuudConfig
ORDER BY EventType, EventLevel;
-- Atualizar recompensa do Blood Castle nível 7
UPDATE MuOnline..T_MN_EventRuudConfig
SET RuudReward = 1500
WHERE EventType = 1 AND EventLevel = 7;
-- EventType: 1=BloodCastle, 2=DevilSquare, 3=ChaosCastle
Passo 6: Configurar NPCs de Evento Adicionais
Além da loja de Ruud, os NPCs de evento (porteiros de Blood Castle, Devil Square, etc.) são configurados no mesmo arquivo MonsterSetBase.txt:
// Archangel Michael - Blood Castle NPC (mapa 9 = BC Entrance)
131 9 014 025 0 0 1
// Charon - Blood Castle Entry Portal
132 0 016 014 0 0 1
// Wizard - Devil Square NPC
120 34 210 070 0 0 1
GameServer/Data/Monster/Monster.txt para encontrar o MonsterIndex correto de cada NPC. Busque por nomes como "Lugard", "Charon", "Michael" ou "Gatekeeper" para identificar os índices.Passo 7: Verificar e Testar as Configurações
Após todas as alterações, siga esta sequência de verificação:
Verificação SQL → Confirme que os itens aparecem na tabela
-- Confirmar itens cadastrados na loja
SELECT COUNT(*) AS TotalItens,
SUM(CASE WHEN SaleFlag = 1 THEN 1 ELSE 0 END) AS ItensAtivos
FROM MuOnline..T_MN_PointShopList
WHERE ShopCode = 1;
Verificação de Ruud do personagem → Confirme saldo de teste
-- Adicionar Ruud de teste a um personagem
UPDATE MuOnline..Character
SET Ruud = Ruud + 50000
WHERE Name = 'SeuCharGM';
-- Verificar saldo
SELECT Name, Ruud FROM MuOnline..Character WHERE Name = 'SeuCharGM';
Reiniciar o GameServer → As alterações em .txt e .ini só têm efeito após restart
Inicie o servidor e faça login com o personagem de teste → caminhe até o NPC posicionado → abra a loja → confirme que os itens aparecem com os preços configurados → tente uma compra → verifique no banco se o Ruud foi debitado corretamente.
Solução de Problemas Comuns
NPC não aparece no mapa:
- Confirme que o MonsterIndex existe em
Monster.txt - Verifique se as coordenadas estão dentro dos limites do mapa
- Certifique-se de que o arquivo
MonsterSetBase.txtnão tem erros de formatação (use tabulação, não espaços)
Loja abre mas mostra itens errados:
-- Verificar se ShopCode do NPC bate com a tabela
SELECT NpcIndex, ShopCode FROM MuOnline..T_MN_NpcShopInfo WHERE NpcIndex = 658;
Ruud não é debitado após compra:
- Verifique se a stored procedure
WZ_BuyPointShopItemexiste no banco - Confirme que a coluna
Ruudna tabelaCharactertem tipo INT (não BIGINT)
MuOnline e MuOnline_Account) antes de executar qualquer UPDATE ou DELETE na tabela da loja. Um erro no WHERE pode limpar todos os preços configurados.Perguntas frequentes
Onde fica o arquivo de configuração dos NPCs de evento no MuServer S6?
Os NPCs de evento são definidos em GameServer/Data/Monster/Monster.txt (posicionamento no mundo) e na tabela T_MN_PointShopList do banco de dados MuOnline, que armazena os itens disponíveis na loja de Ruud.
Como altero o preço de um item na loja de Ruud via SQL?
Execute UPDATE MuOnline..T_MN_PointShopList SET Price = 5000 WHERE ItemCode = 13 AND ItemIndex = 0; substituindo ItemCode e ItemIndex pelo código do item desejado e Price pelo novo valor em Ruud.
O NPC de Ruud não aparece no mapa — o que verificar?
Confirme que o NPC está listado em GameServer/Data/Monster/MonsterSetBase.txt com as coordenadas corretas do mapa, que o MonsterIndex corresponde ao NPC de loja (geralmente 658 para o Lugard no S6+), e que o servidor foi reiniciado após a alteração.
Posso limitar quais classes podem comprar na loja de Ruud?
Sim, na tabela T_MN_PointShopList existe a coluna ClassFlag onde você define um bitmask de classes permitidas. Por exemplo, valor 255 permite todas as classes; valor 1 restringe apenas a Dark Wizards (classe 0).