Cómo Crear y Editar NPCs en tu Servidor de MU Online
Aprende a crear, posicionar y configurar NPCs en tu servidor privado de MU Online editando los archivos correctos y entendiendo su estructura de datos.
Los NPCs (Non-Player Characters o personajes no jugadores) son el eje central de la interacción de los jugadores en cualquier servidor privado de MU Online. Se encargan de las tiendas, las misiones, la teletransportación, la creación de objetos y mucho más. Entender cómo crearlos y editarlos correctamente te permitirá personalizar la experiencia de juego sin comprometer la estabilidad del servidor.
Esta guía cubre los archivos principales involucrados, la estructura de datos de las definiciones de NPC, cómo colocarlos en los mapas y cómo resolver los problemas más comunes.
Entendiendo la Arquitectura del Sistema de NPCs
Antes de modificar cualquier archivo, conviene entender cómo el servidor procesa los datos de NPCs al iniciarse.
Cuando el GameServer arranca, lee un conjunto de archivos de configuración en formato de texto y carga cada definición de NPC en memoria. Cada NPC tiene dos responsabilidades separadas que residen en archivos distintos:
- Identidad y aparición — qué tipo de NPC es y dónde aparece en el mapa.
- Comportamiento e inventario — qué hace el NPC (vende objetos, entrega misiones, teletransporta jugadores, etc.).
Los archivos con los que trabajarás con mayor frecuencia son:
| Archivo | Función |
|---|---|
MonsterSetBase.txt | Posiciones de aparición, mapa, dirección, cantidad |
MonsterInfo.txt | Nombre del NPC, estadísticas, banderas de tipo |
ShopItemList.txt | Objetos vendidos por NPCs mercaderes |
MerchantList.txt (algunas temporadas) | Tablas alternativas de objetos para mercaderes |
Los emuladores basados en código fuente de Temporada 6 y Temporada 9 siguen este patrón de cerca. Las temporadas superiores a 12 pueden utilizar un enfoque basado en base de datos en lugar de archivos de texto plano; consulta la documentación de tu emulador para conocer los nombres exactos de los archivos.
Data/ de tu GameServer y busca archivos que coincidan con los patrones mencionados arriba. Algunas versiones los prefijan con el número de temporada (p. ej., S6_MonsterSetBase.txt).Editando MonsterSetBase.txt para Colocar un NPC
El archivo MonsterSetBase.txt es donde se declara cada aparición en el servidor. Ábrelo con un editor de texto plano (se recomienda Notepad++ con codificación UTF-8 para evitar corrupción de caracteres).
Cada línea que no es un comentario sigue este formato de columnas:
// Mapa Tipo X Y Dir Suelo Distancia Cantidad IntervaloReapar
0 226 125 125 1 0 0 1 0
// → Mapa 0 = Lorencia
// → Tipo 226 = David (Vendedor de pociones)
// → X=125, Y=125 → coordenadas en la cuadrícula del mapa
// → Dir=1 → el NPC mira hacia el sur
// → Suelo=0 → aparición estándar en el suelo
// → Distancia=0 → sin radio de patrulla (NPC estático)
// → Cantidad=1 → una sola instancia
// → IntervaloReapar=0 → los NPCs estáticos no reaparecen; usar 0
Para agregar un NPC nuevo, añade una línea al final del archivo con valores válidos:
// Agregando un NPC personalizado (tipo 540) en Noria en la posición 170, 100
33 540 170 100 2 0 0 1 0
// → Mapa 33 = Noria
// → Tipo 540 → debe coincidir con una entrada en MonsterInfo.txt
// → Dir=2 → el NPC mira hacia el oeste
// → Los demás campos permanecen en su valor por defecto para un NPC estático
> [!ATENCION] > Nunca uses las mismas coordenadas que un NPC existente del mismo tipo. Las apariciones superpuestas causan errores visuales en el cliente y pueden activar lógica de colisión que hace que uno de los NPCs no sea seleccionable. Desplaza las nuevas entradas al menos 2 casillas en cualquier dirección.
Las direcciones siguen una numeración en sentido horario en la mayoría de los emuladores:
// Valores de dirección
// 0 → Norte
// 1 → Sur
// 2 → Oeste
// 3 → Este
// 4 → Noreste
// 5 → Noroeste
// 6 → Sureste
// 7 → Suroeste
Definiendo la Identidad del NPC en MonsterInfo.txt
Cada ID de tipo referenciado en MonsterSetBase.txt debe tener una entrada correspondiente en MonsterInfo.txt. Si el ID de tipo no existe, el servidor ignorará la aparición o se bloqueará durante la inicialización, dependiendo de la versión del emulador.
Una entrada típica en MonsterInfo.txt tiene este aspecto:
// ID Nombre Nivel HP MP Ataque Defensa VelMov VelAtaque Banderas
540 "Guardia Especial" 1 9999 0 0 9999 0 0 NPC
// → ID=540 → debe coincidir con la columna Tipo en MonsterSetBase.txt
// → Nivel=1 → los NPCs suelen usar nivel 1 sin importar su función
// → HP=9999 → HP alto los hace prácticamente invencibles en la mayoría de configuraciones
// → Ataque=0, Defensa=9999 → típico de NPCs sin combate
// → VelMov=0 → NPC estático sin movimiento
// → Banderas=NPC → marca la entidad como amistosa, no agresiva e interactuable
El campo Banderas es fundamental. Los valores más comunes son:
// Valores de banderas (pueden combinarse con | según el emulador)
// NPC → Amistoso, no agresivo, interactuable por el jugador
// MONSTER → Agresivo, entidad de combate
// GUARD → Ataca a los monstruos cercanos a los jugadores (guardias de ciudad)
// MERCHANT → Abre la interfaz de tienda al interactuar
// QUEST → Abre el diálogo de misión al interactuar
> [!CONSEJO] > Si tu emulador utiliza banderas numéricas en lugar de constantes con nombre, consulta el código fuente o la documentación del emulador para obtener la tabla de bits. Un patrón común es: 0 = monstruo, 1 = NPC, 2 = mercader. Usar la bandera incorrecta hace que el cliente trate a tu tranquilo vendedor como si fuera un enemigo agresivo.
Configurando la Tienda de un NPC Mercader
Una vez que el NPC está colocado en el mapa y su identidad está definida, puedes configurar lo que vende. Abre ShopItemList.txt y ubica la sección correspondiente al ID de tipo de tu NPC (algunos archivos agrupan los objetos por ID de NPC como encabezado de sección).
// Estructura de ShopItemList.txt
// Tipo_NPC Ranura GrupoObj NumeroObj DurNivel Habilidad Suerte Opcion Precio
540 0 0 0 0 0 0 0 2000
// → NPC 540, Ranura 0 → vende Poción de Curación Pequeña (Grupo 0, Número 0)
// → DurNivel=0 → durabilidad/nivel base
// → Todas las banderas de mejora = 0 → objeto normal, sin habilidad/suerte/opción
// → Precio=2000 → costo en Zen para el jugador
540 1 0 1 0 0 0 0 3000
// → Ranura 1 → vende Poción de Curación Mediana (Grupo 0, Número 1)
540 2 0 2 0 0 0 0 5000
// → Ranura 2 → Poción de Curación Grande (Grupo 0, Número 2)
Mantén los números de ranura de forma secuencial comenzando desde 0. Los espacios en los números de ranura pueden hacer que la tienda muestre celdas vacías, lo que se ve defectuoso para los jugadores. El número máximo de ranuras de tienda varía según la versión del cliente; los clientes de Temporada 6 suelen admitir hasta 40 objetos por mercader.
Recargando y Verificando los Cambios
Después de guardar todos los archivos editados, el servidor necesita cargarlos. El procedimiento estándar es:
- Detén el proceso del GameServer de forma limpia usando su comando de apagado o el gestor del servidor.
- Verifica que los archivos editados estén guardados con la codificación correcta (UTF-8 sin BOM para la mayoría de los emuladores, ANSI para los más antiguos).
- Inicia el GameServer y observa la salida del registro de arranque. Las líneas con formato incorrecto en
MonsterSetBase.txtoMonsterInfo.txtimprimirán un error o advertencia con el número de línea. - Conéctate con un cliente de juego y navega al mapa donde colocaste el NPC.
- Abre la consola del servidor y usa el comando de visualización de posición (generalmente
/posen el juego o un comando de GM) para confirmar que estás cerca de las coordenadas correctas.
> [!CONSEJO] > Muchos emuladores incluyen un comando GM que revela todos los NPCs cercanos mostrando sus IDs de tipo sobre ellos. Activa esta opción durante las pruebas para confirmar visualmente que tu NPC apareció con el ID correcto antes de avanzar a la configuración del inventario.
Los problemas más comunes y lo que significan:
- El NPC es invisible — el ID de tipo en
MonsterSetBase.txtno existe enMonsterInfo.txt, o los archivos de criaturas del cliente no contienen un modelo para ese ID. - El NPC aparece como un monstruo rojo en vez de un NPC — el campo
Banderases incorrecto; el cliente lo está tratando como una entidad agresiva. - La tienda se abre pero está vacía — el ID de tipo del NPC en
ShopItemList.txtno coincide con el ID de tipo enMonsterSetBase.txt, o la combinación de grupo/número de objeto no es válida. - El servidor se bloquea al iniciarse — existe una línea con formato incorrecto en uno de los archivos editados; revisa el registro del servidor para ver el número de línea exacto y corrige la sintaxis.
Resumen
Crear y editar NPCs en un servidor de MU Online es un proceso que involucra múltiples archivos. Defines las posiciones de aparición en MonsterSetBase.txt, declaras la identidad del NPC en MonsterInfo.txt y configuras el comportamiento de mercader en ShopItemList.txt. Cada archivo hace referencia al mismo ID de tipo de NPC, por lo que la coherencia entre los tres archivos es esencial.
Comienza con un único NPC de prueba en un mapa de fácil acceso como Lorencia, verifica cada paso antes de pasar al siguiente archivo y mantén siempre copias de seguridad de los archivos originales antes de realizar cambios. Este enfoque sistemático te ahorrará horas de diagnóstico y te dará plena confianza al desplegar configuraciones de NPC más complejas en un servidor en producción.
Perguntas frequentes
¿Qué archivo controla las posiciones de aparición de los NPCs?
El archivo principal es MonsterSetBase.txt (o su equivalente según la temporada del emulador), ubicado en la carpeta Data del GameServer. Cada línea define una entrada de NPC o monstruo con el ID del mapa, coordenadas, dirección y configuración de reaparición.
¿Puedo agregar un NPC personalizado que venda objetos específicos?
Sí. Primero debes definir el NPC en MonsterSetBase.txt con el ID de tipo correcto, luego configurar el inventario de su tienda en los archivos ShopItemList (o MerchantList), vinculando el ID de tipo del NPC con la tabla de objetos que deseas que venda.
¿Qué sucede si uso coordenadas fuera de los límites del mapa?
El NPC no aparecerá de forma silenciosa o aparecerá en la posición 0,0. Siempre verifica tus coordenadas contra el área caminable del mapa usando un editor de mapas o la salida del registro de depuración del servidor.
¿Necesito reiniciar el servidor después de editar los archivos de NPC?
En la mayoría de los emuladores de Temporada 6 en adelante, se requiere como mínimo reiniciar el GameServer para que los cambios en NPCs surtan efecto. Algunos emuladores admiten un comando de recarga parcial (/reloadnpc u otro comando de consola similar), pero un reinicio completo es la opción más segura.