Cómo Agregar y Editar Ítems en el Servidor de MU Online
Guía paso a paso para agregar, editar y configurar ítems personalizados en tu servidor privado de MU Online usando SQL Server y archivos de configuración.
Cómo Agregar y Editar Ítems en el Servidor de MU Online
Agregar ítems personalizados es una de las modificaciones más poderosas que puedes hacer en tu servidor privado de MU Online. Esta guía cubre el proceso completo: identificar IDs disponibles en la base de datos, editar los archivos de configuración del GameServer, configurar drops y tiendas NPC, y sincronizar con el cliente.
GameServer/Data/ antes de cualquier modificación. Un ID de ítem incorrecto puede corromper los drops y los inventarios de tiendas NPC en todo el servidor.Conceptos Fundamentales: Cómo Funcionan los Ítems en MU Online
Cada ítem en MU Online se identifica con dos valores:
- Categoría (ItemSection): un valor de 0 a 15 que define el tipo de ítem (armas, armaduras, joyas, etc.)
- Índice (ItemIndex): un valor de 0 a 511 dentro de esa categoría
La combinación Categoría + Índice es única y debe ser consistente entre el servidor y el cliente.
| Categoría | Tipo |
|---|---|
| 0 | Espadas (Blades) |
| 2 | Arcos y Bastones |
| 4 | Armaduras (Cuerpo) |
| 5 | Pantalones |
| 6 | Guantes |
| 7 | Botas |
| 12 | Joyas |
| 13 | Ítems de Evento |
| 14 | Mascotas y Alas |
Parte 1 — Identificar IDs Disponibles en la Base de Datos
Antes de crear un ítem, confirma qué IDs están libres.
Paso 1: Conéctate a SQL Server Management Studio y selecciona la base de datos MuOnline.
Paso 2: Consulta los ítems existentes en la categoría objetivo:
-- Listar todos los ítems de la categoría 0 (espadas)
SELECT
ItemSection,
ItemIndex,
ItemName,
ItemWidth,
ItemHeight,
ItemDurability
FROM MuOnline..Item
WHERE ItemSection = 0
ORDER BY ItemIndex ASC;
Paso 3: Identifica los huecos en la secuencia de índices — esos slots están disponibles.
-- Verificar que un slot específico esté libre (ej: categoría 0, índice 45)
SELECT COUNT(*) AS EstaOcupado
FROM MuOnline..Item
WHERE ItemSection = 0 AND ItemIndex = 45;
-- Resultado 0 = slot libre
Item se encuentra en la base de datos MuOnline. En versiones más antiguas (S2/S3), puede estar en Game o GameDB.Parte 2 — Insertar el Ítem en la Base de Datos
Paso 4: Inserta el nuevo ítem en la tabla Item:
INSERT INTO MuOnline..Item (
ItemSection,
ItemIndex,
ItemName,
ItemWidth,
ItemHeight,
ItemDurability,
ItemBaseDmgMin,
ItemBaseDmgMax,
ItemDefense,
ItemSpeedAttack,
ItemMagicPower,
ItemMoney,
ClassReq,
LevelReq,
StrReq,
AgiReq,
VitReq,
EneReq,
CmdReq,
ItemDropLevel,
ItemSellPrice,
ItemBuyPrice,
ItemTwoHand
) VALUES (
0, -- Categoría: espadas
45, -- Índice libre identificado
'Hoja del Caos',
2, -- Ancho en el inventario (slots)
4, -- Alto en el inventario (slots)
100, -- Durabilidad base
120, -- Daño mínimo
180, -- Daño máximo
0, -- Defensa (0 para armas)
20, -- Velocidad de ataque
0, -- Poder mágico
500000, -- Valor base en oro
2, -- ClassReq = solo DK (máscara de bits)
300, -- Nivel mínimo requerido
250, -- Fuerza mínima requerida
0, -- Agilidad mínima
0, -- Vitalidad mínima
0, -- Energía mínima
0, -- Comando mínimo
80, -- Nivel mínimo del monstruo para dropear
250000, -- Precio de venta al NPC
1000000, -- Precio de compra en el NPC
0 -- 0=una mano, 1=dos manos
);
Paso 5: Configura las opciones adicionales del ítem (excellent, luck, skill):
INSERT INTO MuOnline..ItemAddOption (
ItemSection,
ItemIndex,
OptionType,
OptionValue
) VALUES
(0, 45, 1, 5), -- Tipo 1 = Luck habilitado
(0, 45, 2, 1); -- Tipo 2 = Skill habilitado
Parte 3 — Configurar los Drops del Ítem
Paso 6: Agrega el ítem a la tabla de drops de monstruos:
-- Agregar drop en Kundun (ID de monstruo 277)
INSERT INTO MuOnline..MonsterItemDrop (
MonsterID,
ItemSection,
ItemIndex,
MinLevel,
MaxLevel,
DropRate
) VALUES (
277, -- ID del Kundun
0, -- Categoría del ítem
45, -- Índice del ítem
0, -- Nivel mínimo del ítem al dropear
15, -- Nivel máximo del ítem al dropear
100 -- Tasa de drop (escala según versión; verifica MonDropRate)
);
Paso 7: Si tu servidor usa archivos .bmd para los drops en lugar de la base de datos, edita GameServer/Data/MonsterItemDrop.bmd con el editor oficial de MuServer o una herramienta como BMD Editor.
DropRate / 10000. Un valor de 100 equivale al 1% de probabilidad. Ajusta el valor según la rareza deseada del ítem.Parte 4 — Actualizar los Archivos de Configuración del GameServer
Paso 8: Localiza el archivo ItemList.bmd en:
GameServer/Data/Item/ItemList.bmd
Este archivo binario controla los atributos base validados por el GameServer. En algunas versiones de MuServer se edita con una herramienta específica; en otras, las definiciones provienen exclusivamente de la base de datos.
Paso 9: Si el servidor usa un archivo auxiliar .txt o .ini (común en versiones Season 2-4), edita GameServer/Data/ItemList.txt:
// Formato: Sección Índice Nombre DañoMin DañoMax Defensa Dur Ancho Alto NivReq FueReq AgiReq EneReq CmdReq ClassReq Precio DosManos MagPow VelAtq NivDrop
0 45 "Hoja del Caos" 120 180 0 100 2 4 300 250 0 0 0 2 500000 0 0 20 80
Paso 10: Reinicia el GameServer para cargar las nuevas definiciones:
:: Desde el directorio raíz del servidor
cd C:\MuServer
taskkill /F /IM GameServer.exe
timeout /T 3
start GameServer\GameServer.exe
Parte 5 — Sincronizar con el Cliente
Data/Item/ItemList.bmd del cliente no contiene el ítem, este aparecerá como desconocido (?) o causará la desconexión del cliente.Paso 11: Actualiza el archivo ItemList.bmd en la instalación del cliente (carpeta Data/Item/ del cliente).
Paso 12: Si el ítem tiene su propia textura o modelo, agrega los archivos correspondientes:
Client/Data/Item/Item0045.ozj -- Textura (ícono en el inventario)
Client/Data/3DEffect/Item0045.ozt -- Modelo 3D (solo si es un mesh nuevo)
Paso 13: Distribuye el parche del cliente a los jugadores a través del sistema de actualización del servidor (patcher Main.exe o launcher personalizado).
Parte 6 — Agregar el Ítem a una Tienda NPC
Paso 14: Para que el ítem esté disponible para compra en un NPC, inserta en la tabla de inventario NPC:
-- Agregar ítem a la tienda del Chaos Goblin (tipo NPC 8)
INSERT INTO MuOnline..NPCInventory (
NPCType,
ItemSection,
ItemIndex,
ItemLevel,
SlotIndex
) VALUES (
8, -- Tipo de NPC
0, -- Categoría del ítem
45, -- Índice del ítem
0, -- Nivel del ítem en la tienda
15 -- Posición en la cuadrícula de la tienda (índice 0)
);
SlotIndex controla la posición visual en la ventana de la tienda. Los slots 0-35 llenan la primera página. Valores superiores a 35 abren páginas adicionales; ten en cuenta que no todos los clientes soportan tiendas con múltiples páginas.Verificación y Solución de Problemas
Después de reiniciar el servidor, verifica lo siguiente:
1. Confirmar que el ítem existe en la base de datos:
SELECT * FROM MuOnline..Item
WHERE ItemSection = 0 AND ItemIndex = 45;
2. Probar el drop manualmente con comando GM (si tu versión del servidor lo soporta):
/item 0 45 15 28 28
-- Formato: /item Categoría Índice Nivel Opción1 Opción2
3. Revisar el log del GameServer en GameServer/Log/GameServer.log para errores de carga de ítems — busca líneas que contengan [Item Error] o Item load failed.
Resumen del Flujo Completo
- Identificar ID libre → consulta SQL en la tabla
Item - Insertar ítem →
INSERT INTO MuOnline..Item - Configurar opciones →
INSERT INTO MuOnline..ItemAddOption - Configurar drops →
INSERT INTO MuOnline..MonsterItemDrop - Actualizar
ItemList.bmden el GameServer y el cliente - Reiniciar el GameServer
- Distribuir el parche del cliente
- Probar con comando GM o verificación de drop en el juego
Perguntas frequentes
¿Dónde están los archivos de definición de ítems en el servidor?
Los archivos principales están en GameServer/Data/Item/ (ej: ItemList.bmd, ItemAddOption.bmd). En servidores Season 6, ItemList.bmd controla los atributos base y la tabla MuOnline..Item en la base de datos gestiona los drops y las tiendas.
¿Puedo agregar un ítem usando un ID ya existente sin generar conflictos?
No. Cada ítem tiene un índice único compuesto por Categoría (0-15) e Índice (0-511). Reutilizar un ID sobreescribe el ítem original. Siempre usa IDs vacíos — ejecuta SELECT * FROM Item WHERE ItemCategory = X AND ItemIndex = Y para verificar disponibilidad antes de insertar.
¿Por qué el ítem aparece como '?' en el cliente después de agregarlo al servidor?
El cliente también necesita sus archivos BMD/OZT actualizados (carpeta /Data/Item/ del cliente). El servidor y el cliente deben tener definiciones sincronizadas. Siempre distribuye un parche de cliente junto con cualquier actualización de ítems en el servidor.
¿Cómo restrinjo un ítem a una clase específica?
En ItemList.bmd (o la tabla Item de la base de datos), el campo ClassReq usa una máscara de bits: DW=1, DK=2, Elf=4, MG=8, DL=16, Sum=32, RF=64. Para restringir solo al Dark Knight, define ClassReq=2. Para DK y Elf combinados, usa ClassReq=6.