Cómo Configurar el Castle Siege Detalladamente en el Servidor de MU
Guía completa para configurar el Castle Siege en tu servidor MU Online: SQL, archivos .ini, horarios, guilds y solución de problemas avanzada.
El Castle Siege es uno de los eventos más complejos y competitivos de MU Online. Configurarlo correctamente requiere atención a múltiples capas: base de datos SQL Server, archivos de configuración del GameServer y sincronización de horarios. Esta guía cubre cada paso con comandos y valores específicos para servidores Season 6.
Requisitos previos
Antes de comenzar, confirma que tu entorno cuenta con:
- SQL Server 2008 o superior con la base de datos
MuOnlinerestaurada - GameServer Season 6 Episode 3 (o compilación compatible)
- Acceso de administrador en Windows Server
- DataServer en ejecución y conectado a SQL Server
Paso 1 — Verificar y preparar las tablas SQL
El Castle Siege depende de tablas específicas en la base de datos MuOnline. Ejecuta las siguientes consultas en SQL Server Management Studio para confirmar su existencia:
USE MuOnline;
GO
-- Verificar tablas esenciales del Castle Siege
SELECT TABLE_NAME
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_NAME IN (
'CastleSiegeSync',
'CastleSiegeNPC',
'CastleSiegeTax',
'CastleGuild',
'CastleSiegeRegist'
);
Si falta alguna tabla, localiza el script SQL de creación en la carpeta GameServer/SQL/ de tu paquete de instalación y ejecútalo.
Inicializar el estado base del Castle Siege
USE MuOnline;
GO
-- Definir estado inicial: 0 = Castle Siege inactivo
UPDATE CastleSiegeSync
SET CS_State = 0,
GuildMark = 0,
GuildName = '',
OwnerGuild = '',
CS_RegStartDate = GETDATE(),
CS_RegEndDate = DATEADD(DAY, 7, GETDATE())
WHERE CastleIndex = 0;
Paso 2 — Configurar el archivo CastleSiege.ini
Navega a GameServer/Data/CastleSiege/ y abre CastleSiege.ini con un editor de texto (Notepad++ recomendado, codificación ANSI).
[CastleSiege]
CastleSiegeStart = 1 ; 1 = habilitado, 0 = deshabilitado
MaxGuildCount = 8 ; máximo de guilds registradas
MinGuildMemberCount = 5 ; miembros mínimos para registrar
MaxGuildMemberCount = 50 ; miembros máximos participantes
RegPeriodDay = 7 ; días del período de registro
SiegeTime = 60 ; duración de la batalla en minutos
CastleSiegeWeekDay = 6 ; día de la semana (0=Dom, 6=Sáb)
CastleSiegeHour = 21 ; hora de inicio (formato 24h)
CastleSiegeMinute = 0 ; minuto de inicio
TaxMoney = 30 ; tasa de impuesto de dinero en % (0-100)
TaxChaos = 20 ; tasa en el Chaos Goblin en %
TaxStore = 10 ; tasa en la tienda personal en %
MinGuildMemberCount a 3 y MaxGuildCount a 4. Esto garantiza que el evento se realice incluso con menos guilds activas.Paso 3 — Configurar los NPCs del Castle Siege
Los NPCs del castillo (Guardias, Arqueros, Puertas) están definidos en la tabla CastleSiegeNPC y en el archivo CastleSiegeNPC.txt ubicado en GameServer/Data/CastleSiege/.
Verificar NPCs por SQL
USE MuOnline;
GO
-- Listar todos los NPCs del Castle Siege y su estado actual
SELECT NpcIndex, NpcClass, NpcLevel, NpcHp, NpcMaxHp, Life
FROM CastleSiegeNPC
ORDER BY NpcIndex;
Restaurar los NPCs al estado predeterminado (post-evento)
USE MuOnline;
GO
-- Restaurar HP completo a todos los NPCs del castillo
UPDATE CastleSiegeNPC
SET NpcHp = NpcMaxHp,
Life = 1
WHERE CastleIndex = 0;
Paso 4 — Configurar el sistema de impuestos
La guild dueña del castillo recauda impuestos del Chaos Goblin y de las tiendas personales. Esto se controla mediante SQL y CastleSiege.ini.
USE MuOnline;
GO
-- Verificar la configuración actual de impuestos
SELECT CastleIndex, TaxChaos, TaxStore, TaxMoney, GuildName
FROM CastleSiegeTax
WHERE CastleIndex = 0;
-- Ajustar tasas manualmente (si es necesario)
UPDATE CastleSiegeTax
SET TaxChaos = 20,
TaxStore = 10,
TaxMoney = 30
WHERE CastleIndex = 0;
MoneyAmount de CastleSiegeSync y puede ser retirado por el Guild Master propietario a través del NPC Elf Soldier.Paso 5 — Configurar la programación automática
El Castle Siege debe ejecutarse semanalmente. Usa SQL Server Agent o un stored procedure programado para actualizar los períodos del evento de forma automática.
Stored procedure de programación
USE MuOnline;
GO
CREATE PROCEDURE dbo.sp_ProgramarCastleSiege
AS
BEGIN
SET NOCOUNT ON;
DECLARE @ProxSiege DATETIME;
DECLARE @InicioReg DATETIME;
DECLARE @FinReg DATETIME;
-- Calcular el próximo sábado a las 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 @FinReg = DATEADD(HOUR, -1, @ProxSiege);
UPDATE CastleSiegeSync
SET CS_State = 1,
CS_RegStartDate = @InicioReg,
CS_RegEndDate = @FinReg
WHERE CastleIndex = 0;
PRINT 'Castle Siege programado para: ' + CAST(@ProxSiege AS VARCHAR);
END;
GO
-- Ejecutar el procedimiento de programación
EXEC dbo.sp_ProgramarCastleSiege;
Paso 6 — Configurar ConnectServer y DataServer
El Castle Siege requiere que el DataServer sincronice correctamente con el GameServer. Revisa DataServer/DataServer.ini:
[DataServer]
ServerCode = 0
ConnectIP = 127.0.0.1
ConnectPort = 55557
DBServerIP = 127.0.0.1
DBName = MuOnline
DBUser = sa
DBPassword = tu_contrasena_aqui
En GameServer/GameServer.ini, confirma la sección de eventos:
[EventServer]
CastleSiege = 1
CastleSiegeServer = 0 ; código del servidor (debe coincidir con DataServer.ini)
Paso 7 — Probar el Castle Siege
Para probar sin esperar el horario programado, fuerza el inicio del período de registro de inmediato via SQL:
USE MuOnline;
GO
-- Forzar inicio del período de registro de inmediato
UPDATE CastleSiegeSync
SET CS_State = 1,
CS_RegStartDate = DATEADD(MINUTE, -1, GETDATE()),
CS_RegEndDate = DATEADD(HOUR, 1, GETDATE())
WHERE CastleIndex = 0;
Después de aplicar, reinicia el GameServer y verifica en GameServer/Log/GameServer_YYYYMMDD.log líneas como:
[Castle Siege] State changed to: REGISTRATION
[Castle Siege] Registration period: START
/castlestate para verificar el estado actual del evento sin necesidad de consultar la base de datos.Solución de problemas
El evento no inicia en el horario
- Verifica que Windows Server tenga la zona horaria correcta: Panel de Control → Fecha y Hora
- Confirma que SQL Server Agent está en ejecución:
Services.msc→ SQL Server Agent - Ejecuta
SELECT GETDATE()en SSMS y compara con el reloj del servidor
Las guilds no pueden registrarse
-- Verificar si el período de registro está activo en este momento
SELECT CS_State, CS_RegStartDate, CS_RegEndDate, GETDATE() AS Ahora
FROM CastleSiegeSync
WHERE CastleIndex = 0;
-- CS_State debe ser 1 y GETDATE() debe estar entre RegStartDate y RegEndDate
El GameServer se cae durante el Castle Siege
Revisa GameServer/Log/Error_YYYYMMDD.log. Errores comunes:
NPC not found→ Ejecuta el UPDATE de restauración de NPCs del Paso 3Guild data corrupted→ EjecutaDBCC CHECKDB('MuOnline')para verificar la integridad de la base de datos
BACKUP DATABASE MuOnline TO DISK = 'C:\Backup\MuOnline_pre_cs.bak'Perguntas frequentes
¿Qué tabla SQL controla el estado del Castle Siege?
La tabla principal es CastleSiegeSync en la base de datos MuOnline. Las columnas CS_State (0=inactivo, 1=registro, 2=batalla), CS_RegStartDate y CS_RegEndDate controlan los períodos del evento.
El Castle Siege no inicia automáticamente, ¿qué debo verificar?
Verifica que GameServer.exe se ejecute con privilegios de administrador, que CastleSiege.ini tenga CastleSiegeStart=1 y que la fecha/hora del servidor coincida con la programación almacenada en la tabla CastleSiegeSync.
¿Cómo reinicio el dueño del castillo por SQL?
Ejecuta UPDATE MuOnline..CastleSiegeSync SET GuildMark=0, GuildName='', OwnerGuild='' WHERE CastleIndex=0; para limpiar el propietario actual sin afectar el historial.
¿Cuántas guilds pueden registrarse para el Castle Siege?
El límite predeterminado es 8 guilds por servidor Season 6. Ajusta el campo MaxGuildCount en GameServer/Data/CastleSiege/CastleSiege.ini para cambiar este límite.