Cómo Configurar las Tasas de EXP por Nivel en el Servidor de MU Online
Aprende a configurar tasas de EXP diferenciadas por rango de nivel en tu servidor de MU Online usando archivos .ini y comandos de SQL Server.
Configurar tasas de EXP de forma granular — diferentes para rangos de nivel, mapas o períodos de tiempo — es uno de los ajustes más impactantes en la experiencia de juego de tu servidor privado de MU Online. Esta guía cubre el proceso completo para MuServer Season 6 (el más común en servidores privados), con referencias para Season 2/3 y Season 12+.
Entendiendo la Arquitectura de EXP en MuServer
Antes de editar cualquier archivo, es fundamental entender cómo GameServer calcula la EXP otorgada a un personaje:
- El monstruo eliminado tiene un valor de EXP base definido en la base de datos
- GameServer aplica el multiplicador global (
ExpRate) configurado en el.ini - El resultado se compara con la tabla de experiencia por nivel para determinar si ocurrió un nivel arriba
- Los bonificadores adicionales (VIP, eventos, ítems) se suman por encima
Conociendo esta cadena, puedes intervenir en cualquier punto para ajustar la progresión.
Paso 1: Localizar y Editar GameServer.ini
El archivo principal de configuración de GameServer se encuentra en:
GameServer/GameServer.ini
Ábrelo con Notepad++ o cualquier editor de texto sin formato. Localiza la sección [GameServer] o [Exp] según tu versión:
[GameServer]
ExpRate=10
MasterExpRate=5
MasterLevel=400
MaxLevel=400
Significado de los parámetros:
| Parámetro | Función | Valor típico |
|---|---|---|
ExpRate | Multiplicador global de EXP (1 = normal, 10 = 10x) | 5–100 |
MasterExpRate | Multiplicador de EXP para Master Level (por encima del nivel máximo base) | 3–50 |
MasterLevel | Nivel a partir del cual se activa el sistema Master Level | 400 |
MaxLevel | Nivel máximo que puede alcanzar un personaje regular | 400 |
ExpRate entre 5 y 20. Para servidores de corta duración o fun servers, valores entre 100 y 9999 son comunes.Paso 2: Configurar EXP Diferenciada por Rango de Nivel via SQL
El enfoque más poderoso para controlar la curva de progresión es ajustar directamente la tabla de experiencia por nivel en la base de datos. Esto permite que los primeros niveles sean muy rápidos y que los niveles altos sean gradualmente más lentos.
Conéctate al SQL Server Management Studio y ejecuta en la base MuOnline:
-- Verificar la estructura actual de la tabla de experiencia por nivel
USE MuOnline;
SELECT TOP 20 Level, Experience
FROM LevelExperience
ORDER BY Level ASC;
Para reducir la EXP requerida en los niveles 1 a 150 (fase inicial acelerada):
-- Reducir la EXP requerida en los primeros 150 niveles en un 50%
UPDATE MuOnline.dbo.LevelExperience
SET Experience = Experience * 0.5
WHERE Level BETWEEN 1 AND 150;
Para que los niveles 151 a 300 demanden más esfuerzo (fase intermedia):
-- Aumentar la EXP requerida en los niveles 151-300 en un 20%
UPDATE MuOnline.dbo.LevelExperience
SET Experience = Experience * 1.2
WHERE Level BETWEEN 151 AND 300;
Para hacer los niveles 301 al máximo significativamente más desafiantes (fase avanzada):
-- Duplicar la EXP requerida en los niveles por encima de 300
UPDATE MuOnline.dbo.LevelExperience
SET Experience = Experience * 2.0
WHERE Level > 300;
SELECT * INTO LevelExperience_backup FROM LevelExperience antes de comenzar las modificaciones. Si algo sale mal, restaura con: UPDATE le SET le.Experience = bkp.Experience FROM LevelExperience le JOIN LevelExperience_backup bkp ON le.Level = bkp.Level.Paso 3: Configurar EXP de Monstruos Individualmente
La EXP de cada monstruo está definida en la tabla Monster (o MonsterAttr dependiendo de la versión). Para ver y ajustar:
-- Listar los 20 monstruos con más EXP
USE MuOnline;
SELECT TOP 20 Number, Name, Experience
FROM Monster
ORDER BY Experience DESC;
-- Aumentar la EXP de todos los monstruos de Tarkan en un 30%
-- (asumiendo que los IDs de Tarkan van del 45 al 62 en tu versión)
UPDATE MuOnline.dbo.Monster
SET Experience = Experience * 1.3
WHERE Number BETWEEN 45 AND 62;
Para identificar el rango de IDs de monstruos por mapa, consulta el archivo:
GameServer/Data/Maps/MapName.bmd
O usa esta consulta:
-- Consultar monstruos de un mapa específico via tabla de spawn
SELECT m.Number, m.Name, m.Experience, s.MapNumber
FROM Monster m
JOIN MonsterSetBase s ON m.Number = s.Type
WHERE s.MapNumber = 9 -- 9 = Tarkan en la mayoría de las versiones S6
ORDER BY m.Experience DESC;
Paso 4: Configurar EXP por Evento (Blood Castle, Devil Square)
Los eventos otorgan bonificaciones de EXP que pueden configurarse en archivos .ini separados o vía tabla en la base de datos. En Season 6 estándar:
Blood Castle — edita GameServer/Data/Events/BloodCastle.ini:
[BloodCastle]
ExpBonus=200
; Bonificación en % añadida a la EXP durante el evento
; 200 = los personajes ganan 200% más EXP dentro de Blood Castle
Devil Square — edita GameServer/Data/Events/DevilSquare.ini:
[DevilSquare]
ExpBonus=150
ExpBonusPerRound=50
; ExpBonus: bonificación base
; ExpBonusPerRound: bonificación extra por ronda completada (acumulativa)
EventConfig o EventSchedule. Ejecuta SELECT * FROM EventConfig WHERE EventType IN ('BloodCastle', 'DevilSquare') para localizar los campos correctos en tu versión.Paso 5: Implementar EXP Diferenciada por Período (Happy Hour)
Para crear períodos de EXP aumentada (ej.: fines de semana con 2x EXP), el enfoque más limpio es usar un script de base de datos programado en SQL Server Agent.
Crear el stored procedure de control de EXP:
USE MuOnline;
GO
CREATE PROCEDURE sp_SetExpRate
@NewRate INT
AS
BEGIN
-- Actualizar variable de configuración en tiempo de ejecución
-- (funciona en GameServers que consultan esta tabla dinámicamente)
UPDATE ServerConfig
SET Value = CAST(@NewRate AS VARCHAR(10))
WHERE ConfigKey = 'ExpRate';
-- Registrar el log del cambio
INSERT INTO AdminLog (Action, Value, ExecutedAt)
VALUES ('ExpRateChange', CAST(@NewRate AS VARCHAR(10)), GETDATE());
END;
GO
-- Activar EXP doble cada viernes a las 20h
EXEC sp_SetExpRate @NewRate = 20; -- Si la base es 10, esto duplica la tasa
-- Volver a la normalidad el lunes a medianoche
EXEC sp_SetExpRate @NewRate = 10;
ExpRate solo del .ini en el momento del arranque, el método anterior no funcionará sin reiniciar el servidor. En esos casos, usa el comando de GM in-game /setexp 20 (disponible en algunos packs) o crea un script .bat que edite el .ini y reinicie automáticamente GameServer.exe mediante el Programador de Tareas de Windows.Script .bat para cambio automático de ExpRate:
@echo off
REM Script: toggle_exp.bat
REM Ruta: C:\MuServer\scripts\toggle_exp.bat
SET INIFILE=C:\MuServer\GameServer\GameServer.ini
SET NEWRATE=%1
REM Reemplazar el valor de ExpRate en el ini usando PowerShell
powershell -Command "(Get-Content '%INIFILE%') -replace 'ExpRate=\d+', 'ExpRate=%NEWRATE%' | Set-Content '%INIFILE%'"
REM Reiniciar el GameServer (ajusta el nombre del proceso según corresponda)
taskkill /F /IM GameServer.exe
timeout /T 3
start "" "C:\MuServer\GameServer\GameServer.exe"
echo ExpRate cambiada a %NEWRATE% el %DATE% %TIME%
Para programarlo: Programador de Tareas de Windows → Nueva Tarea → Acción: toggle_exp.bat 20 (para aumentar) y toggle_exp.bat 10 (para volver al valor normal).
Paso 6: Verificar y Probar la Configuración
Después de aplicar los cambios, sigue esta lista de verificación:
- Reinicia
GameServer.exepara cargar el nuevoGameServer.ini - Conéctate con una cuenta de GM (Game Master) al servidor
- Usa el comando
/addexp 1000000(o el equivalente de tu pack) para probar que la EXP se aplica correctamente - Revisa los logs de GameServer en
GameServer/Logs/en busca de errores de configuración - Prueba con un personaje nivel 1 y verifica que la progresión en los primeros niveles sea la esperada
-- Consulta de diagnóstico: verificar la EXP actual de un personaje
SELECT Name, Level, Experience, Resets
FROM MuOnline.dbo.Character
WHERE Name = 'NombreDelPersonaje';
LevelExperience con personajes conectados. Personajes con EXP acumulada cerca del umbral de subida de nivel pueden tener comportamiento inesperado si el umbral cambia mientras su sesión está activa. Realiza el mantenimiento de la base de datos con el servidor offline o en ventanas de baja actividad.Solución de Problemas Comunes
Problema: ExpRate cambiado en .ini pero sin efecto después de reiniciar Solución: Verifica si otro archivo de configuración lo está sobrescribiendo — algunos packs usan GameServer.cfg o Config.ini en subcarpetas. Ejecuta: findstr /S /I "ExpRate" C:\MuServer\GameServer\*.ini *.cfg para localizar todos los archivos que contengan el parámetro.
Problema: Los personajes no reciben EXP en ningún mapa Solución: Verifica que ExpRate no esté definido como 0. Comprueba también que el servicio del DataServer esté activo — sin DataServer, GameServer no puede guardar la progresión de EXP.
Problema: La EXP del evento (Blood Castle) parece igual a la EXP normal Solución: Es posible que el archivo BloodCastle.ini no se esté cargando. Confirma la ruta exacta — algunos packs usan GameServer/Data/Events/bc_config.ini o leen los valores directamente de una tabla SQL llamada EventPrize o BCConfig.
Perguntas frequentes
¿Puedo tener tasas de EXP diferentes por mapa?
Sí. En GameServer/Data/Maps/ cada mapa tiene un archivo de configuración donde puedes definir un multiplicador de EXP local que sobrepone la tasa global definida en GameServer.ini. Combina el parámetro ExpMultiplier en el archivo del mapa con la tasa base para crear progresiones distintas por región.
¿Qué ocurre si pongo ExpRate=0 por error?
El servidor trata ExpRate=0 como tasa nula y ningún personaje gana experiencia. Mantén siempre un valor mínimo de 1. Después de corregir el valor, reinicia GameServer para aplicar el cambio — los cambios en .ini solo tienen efecto durante la inicialización del proceso.
¿Cómo reinicio la EXP acumulada de un personaje via SQL?
Ejecuta: UPDATE MuOnline.dbo.Character SET Experience = 0, Level = 1 WHERE Name = 'NombreDelChar'. Asegúrate de que el personaje esté desconectado antes de ejecutar el comando para evitar conflictos de datos entre la base y la sesión activa en GameServer.
¿Cuál es la diferencia entre ExpRate en el .ini y la tabla LevelExperience en la base de datos?
ExpRate es el multiplicador global aplicado sobre la EXP base de cada monstruo. La tabla LevelExperience (o su equivalente en tu versión) define cuánta EXP total se requiere para pasar de un nivel al siguiente. Ambos trabajan juntos: aumenta ExpRate para que los jugadores suban más rápido y ajusta LevelExperience para controlar el total requerido por nivel.