Como Configurar o Castle Siege Detalhadamente no Servidor de MU
Guia completo para configurar o Castle Siege no seu servidor MU Online: SQL, arquivos .ini, horários, guilds e troubleshooting avançado.
O Castle Siege é um dos eventos mais complexos e competitivos do MU Online. Configurá-lo corretamente exige atenção a múltiplas camadas: banco de dados SQL Server, arquivos de configuração do GameServer e sincronização de horários. Este guia cobre cada etapa com comandos e valores específicos para servidores Season 6.
Pré-requisitos
Antes de iniciar, confirme que seu ambiente possui:
- SQL Server 2008 ou superior com banco
MuOnlinerestaurado - GameServer Season 6 Episode 3 (ou compatível)
- Acesso de administrador ao Windows Server
- DataServer rodando e conectado ao SQL Server
Passo 1 — Verificar e preparar as tabelas SQL
O Castle Siege depende de tabelas específicas no banco MuOnline. Execute as queries abaixo no SQL Server Management Studio para confirmar a existência delas:
USE MuOnline;
GO
-- Verificar tabelas essenciais do Castle Siege
SELECT TABLE_NAME
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_NAME IN (
'CastleSiegeSync',
'CastleSiegeNPC',
'CastleSiegeTax',
'CastleGuild',
'CastleSiegeRegist'
);
Se alguma tabela estiver faltando, localize o script SQL de criação na pasta GameServer/SQL/ do seu pacote de instalação e execute-o.
Inicializar o estado base do Castle Siege
USE MuOnline;
GO
-- Definir estado inicial: 0 = Castle Siege inativo
UPDATE CastleSiegeSync
SET CS_State = 0,
GuildMark = 0,
GuildName = '',
OwnerGuild = '',
CS_RegStartDate = GETDATE(),
CS_RegEndDate = DATEADD(DAY, 7, GETDATE())
WHERE CastleIndex = 0;
Passo 2 — Configurar o arquivo CastleSiege.ini
Navegue até GameServer/Data/CastleSiege/ e abra o arquivo CastleSiege.ini com um editor de texto (Notepad++ recomendado, encoding ANSI).
[CastleSiege]
CastleSiegeStart = 1 ; 1 = habilitado, 0 = desabilitado
MaxGuildCount = 8 ; máximo de guilds registradas
MinGuildMemberCount = 5 ; membros mínimos para registrar
MaxGuildMemberCount = 50 ; membros máximos participantes
RegPeriodDay = 7 ; dias de período de registro
SiegeTime = 60 ; duração da batalha em minutos
CastleSiegeWeekDay = 6 ; dia da semana (0=Dom, 6=Sáb)
CastleSiegeHour = 21 ; hora de início (formato 24h)
CastleSiegeMinute = 0 ; minuto de início
TaxMoney = 30 ; taxa de imposto em % (0-100)
TaxChaos = 20 ; taxa no Chaos Goblin em %
TaxStore = 10 ; taxa na loja pessoal em %
MinGuildMemberCount para 3 e MaxGuildCount para 4. Isso garante que o evento ocorra mesmo com menos guilds ativas.Passo 3 — Configurar os NPCs do Castle Siege
Os NPCs do castelo (Guardas, Arqueiros, Portões) são definidos na tabela CastleSiegeNPC e também no arquivo CastleSiegeNPC.txt localizado em GameServer/Data/CastleSiege/.
Verificar NPCs via SQL
USE MuOnline;
GO
-- Listar todos os NPCs do Castle Siege e seus status
SELECT NpcIndex, NpcClass, NpcLevel, NpcHp, NpcMaxHp, Life
FROM CastleSiegeNPC
ORDER BY NpcIndex;
Restaurar NPCs para estado padrão (pós-evento)
USE MuOnline;
GO
-- Restaurar vida de todos os NPCs do castelo
UPDATE CastleSiegeNPC
SET NpcHp = NpcMaxHp,
Life = 1
WHERE CastleIndex = 0;
Passo 4 — Configurar o sistema de impostos
O guild dona do castelo recebe impostos do Chaos Goblin e das lojas pessoais. Isso é controlado via SQL e pelo CastleSiege.ini.
USE MuOnline;
GO
-- Verificar configuração atual de impostos
SELECT CastleIndex, TaxChaos, TaxStore, TaxMoney, GuildName
FROM CastleSiegeTax
WHERE CastleIndex = 0;
-- Ajustar taxas manualmente (caso necessário)
UPDATE CastleSiegeTax
SET TaxChaos = 20,
TaxStore = 10,
TaxMoney = 30
WHERE CastleIndex = 0;
MoneyAmount da tabela CastleSiegeSync e pode ser retirado pelo Guild Master dona do castelo via NPC Elf Soldier.Passo 5 — Configurar agendamento automático
O Castle Siege deve ocorrer semanalmente. Use o SQL Server Agent ou uma stored procedure agendada para atualizar os períodos automaticamente.
Stored Procedure de agendamento
USE MuOnline;
GO
CREATE PROCEDURE dbo.sp_AgendarCastleSiege
AS
BEGIN
SET NOCOUNT ON;
DECLARE @ProxSiege DATETIME;
DECLARE @InicioReg DATETIME;
DECLARE @FimReg DATETIME;
-- Calcular próximo sábado às 21:00
SET @ProxSiege = DATEADD(
HOUR, 21,
DATEADD(
DAY,
(7 - DATEPART(WEEKDAY, GETDATE()) + 7) % 7,
CAST(CAST(GETDATE() AS DATE) AS DATETIME)
)
);
SET @InicioReg = DATEADD(DAY, -7, @ProxSiege);
SET @FimReg = DATEADD(HOUR, -1, @ProxSiege);
UPDATE CastleSiegeSync
SET CS_State = 1,
CS_RegStartDate = @InicioReg,
CS_RegEndDate = @FimReg
WHERE CastleIndex = 0;
PRINT 'Castle Siege agendado para: ' + CAST(@ProxSiege AS VARCHAR);
END;
GO
-- Executar o agendamento
EXEC dbo.sp_AgendarCastleSiege;
Passo 6 — Configurar o ConnectServer e DataServer
O Castle Siege requer que o DataServer esteja sincronizando corretamente com o GameServer. Verifique o arquivo DataServer/DataServer.ini:
[DataServer]
ServerCode = 0
ConnectIP = 127.0.0.1
ConnectPort = 55557
DBServerIP = 127.0.0.1
DBName = MuOnline
DBUser = sa
DBPassword = sua_senha_aqui
E no GameServer/GameServer.ini, confirme a seção de eventos:
[EventServer]
CastleSiege = 1
CastleSiegeServer = 0 ; código do servidor (deve bater com DataServer.ini)
Passo 7 — Testar o Castle Siege
Para testar sem esperar o horário programado, force o início via SQL:
USE MuOnline;
GO
-- Forçar início do período de registro imediatamente
UPDATE CastleSiegeSync
SET CS_State = 1,
CS_RegStartDate = DATEADD(MINUTE, -1, GETDATE()),
CS_RegEndDate = DATEADD(HOUR, 1, GETDATE())
WHERE CastleIndex = 0;
Após aplicar, reinicie o GameServer e verifique no log GameServer/Log/GameServer_YYYYMMDD.log por linhas como:
[Castle Siege] State changed to: REGISTRATION
[Castle Siege] Registration period: START
/castlestate para verificar o estado atual do evento in-game sem precisar consultar o banco de dados.Troubleshooting
O evento não inicia no horário
- Verifique se o Windows Server está com o fuso horário correto: Painel de Controle → Data e Hora
- Confirme que o SQL Server Agent está rodando:
Services.msc→ SQL Server Agent - Execute:
SELECT GETDATE()no SSMS e compare com o horário do servidor
Guilds não conseguem se registrar
-- Verificar se o período de registro está ativo
SELECT CS_State, CS_RegStartDate, CS_RegEndDate, GETDATE() AS Agora
FROM CastleSiegeSync
WHERE CastleIndex = 0;
-- CS_State deve ser 1 e GETDATE() deve estar entre RegStartDate e RegEndDate
Crash do GameServer durante o Castle Siege
Verifique o arquivo GameServer/Log/Error_YYYYMMDD.log. Erros comuns:
NPC not found→ Execute o UPDATE de restauração de NPCs do Passo 3Guild data corrupted→ ExecuteDBCC CHECKDB('MuOnline')para verificar integridade
BACKUP DATABASE MuOnline TO DISK = 'C:\Backup\MuOnline_pre_cs.bak'Perguntas frequentes
Qual tabela SQL controla o estado do Castle Siege?
A tabela principal é a CastleSiegeSync no banco MuOnline. As colunas CS_State (0=inativo, 1=registro, 2=batalha), CS_RegStartDate e CS_RegEndDate controlam os períodos.
O Castle Siege não inicia automaticamente, o que verificar?
Verifique se o GameServer.exe está rodando com permissões de administrador, se o arquivo CastleSiege.ini tem o campo CastleSiegeStart=1 e se a data/hora do servidor bate com o agendamento na tabela CastleSiegeSync.
Como resetar o dono do castelo via SQL?
Execute UPDATE MuOnline..CastleSiegeSync SET GuildMark=0, GuildName='', OwnerGuild='' WHERE CastleIndex=0; para limpar o dono atual sem afetar o histórico.
Quantas guilds podem se registrar para o Castle Siege?
Por padrão o limite é 8 guilds por servidor Season 6. Esse valor pode ser ajustado no campo MaxGuildCount dentro do arquivo GameServer/Data/CastleSiege/CastleSiege.ini.