El mayor portal de MU Online de Brasil — desde 2003
Tutorial Intermedio Servidor

Cómo Gestionar Cuentas y Guilds en tu Servidor de MU Online

Aprende a gestionar cuentas de jugadores y guilds en tu servidor privado de MU Online usando consultas SQL, comandos GM y panel de administración.

EQ Equipo ViciadosMU · Actualizado el 4 jul 2026 · ⏱ 18 min de lectura

Gestionar cuentas de jugadores y guilds es una de las tareas administrativas más frecuentes en cualquier servidor privado de MU Online. Ya sea para resolver un problema de acceso, limpiar guilds inactivos o ajustar el estado de un personaje, realizar estas operaciones de forma correcta evita la corrupción de datos y mantiene el funcionamiento estable de la comunidad. Esta guía cubre las técnicas principales usando acceso directo a SQL, comandos GM en el juego y paneles de administración web.

Comprender la Estructura de la Base de Datos

Antes de modificar cualquier dato es fundamental entender qué tablas almacenan qué información. La mayoría de los emuladores de MU Online (como MuEmu, Igcn o builds de Season 6/15) comparten un esquema de base de datos similar, dividido en dos o tres bases: una para cuentas, una para datos del juego y, en algunos casos, una separada para eventos o el sistema web.

Tablas clave para la gestión de cuentas y guilds:

Base de Datos de Cuentas
  MEMB_INFO        → credenciales de cuenta, estado, nivel, correo electrónico
  MEMB_STAT        → estado de conexión, última IP, tiempo conectado
  MEMB_CREDITS     → saldo de moneda premium o créditos

Base de Datos del Juego
  Character        → una fila por personaje; campos: AccountID, Name, Class, Level, MapNumber
  Inventory        → ranuras de inventario de cada personaje
  Warehouse        → almacén compartido por cuenta
  Guild            → cabecera del guild: GuildName, GuildMaster, Score, Mark
  GuildMember      → fila de cada miembro: AccountID, Name, GuildName, GuildStatus
  GuildMark        → datos binarios del logotipo vinculados a GuildName
Nota: Trabaja siempre sobre una copia de la base de datos cuando estés aprendiendo estas operaciones. Levanta una instancia local de SQL Server, restaura un backup y practica allí. Las bases de datos de producción solo deben modificarse con consultas probadas y revisadas.

Nunca ejecutes sentencias UPDATE o DELETE sin una cláusula WHERE. Usa transacciones (BEGIN TRANSACTION / ROLLBACK / COMMIT) para poder deshacer errores antes de que sean permanentes.

Gestión de Cuentas de Jugadores

Consultar y Editar Información de Cuenta

Para buscar una cuenta por nombre de usuario:

-- Ver detalles de la cuenta
SELECT memb___id, memb__pwd, mail_addr, AccountLevel, BlockCode, ConnectStat
FROM MEMB_INFO
WHERE memb___id = 'nombreusuario';

-- Verificar último estado de conexión conocido
SELECT memb___id, ConnectStat, ServerName, IP
FROM MEMB_STAT
WHERE memb___id = 'nombreusuario';

Significado de los campos más importantes:

  • AccountLevel → 0 = jugador normal, 1+ = niveles de staff (valores varían según el build)
  • BlockCode → 0 = activo, 1 = bloqueado/baneado
  • ConnectStat → 0 = desconectado, 1 = conectado

Para suspender temporalmente una cuenta:

BEGIN TRANSACTION;

UPDATE MEMB_INFO
SET BlockCode = 1
WHERE memb___id = 'nombreusuario';

-- Verificar antes de confirmar
SELECT memb___id, BlockCode FROM MEMB_INFO WHERE memb___id = 'nombreusuario';

COMMIT;

Para levantar la suspensión, establece BlockCode = 0 con el mismo patrón.

Restablecer Contraseñas

Si tu servidor almacena contraseñas en texto plano (común en builds más antiguos):

BEGIN TRANSACTION;

UPDATE MEMB_INFO
SET memb__pwd = 'ClaveTemporalNueva1'
WHERE memb___id = 'nombreusuario';

COMMIT;

Si tu build usa MD5 u otro hash personalizado, genera primero el hash con el mismo algoritmo que aplica tu servidor y luego inserta la cadena resultante en lugar de la contraseña en crudo. Revisa el código fuente o los archivos de configuración de tu servidor para confirmar el método utilizado.

> [!ATENCION] > Nunca almacenes ni envíes contraseñas en texto plano por Discord, correo electrónico o tickets de soporte. Genera una contraseña temporal, entrégala de forma privada e indica al jugador que la cambie en el primer inicio de sesión.

Mover o Eliminar un Personaje

Para transferir un personaje de una cuenta a otra:

BEGIN TRANSACTION;

UPDATE Character
SET AccountID = 'cuentadestino'
WHERE Name = 'NombrePersonaje';

-- Confirmar el cambio
SELECT Name, AccountID FROM Character WHERE Name = 'NombrePersonaje';

COMMIT;

Para eliminar un personaje limpiamente (quitar todos los datos relacionados):

BEGIN TRANSACTION;

DELETE FROM Inventory  WHERE Name = 'NombrePersonaje';
DELETE FROM Warehouse  WHERE AccountID = (SELECT AccountID FROM Character WHERE Name = 'NombrePersonaje');
DELETE FROM Character  WHERE Name = 'NombrePersonaje';

COMMIT;

La eliminación del almacén solo debe realizarse si ningún otro personaje de esa cuenta comparte el mismo almacén. Ajusta la consulta según corresponda para cuentas con varios personajes.

Gestión de Guilds

Consultar Información de Guilds

-- Listar todos los guilds con conteo de miembros
SELECT g.GuildName, g.GuildMaster, g.Score,
       COUNT(m.Name) AS CantidadMiembros
FROM Guild g
LEFT JOIN GuildMember m ON g.GuildName = m.GuildName
GROUP BY g.GuildName, g.GuildMaster, g.Score
ORDER BY CantidadMiembros DESC;

-- Listar todos los miembros de un guild específico
SELECT Name, AccountID, GuildStatus
FROM GuildMember
WHERE GuildName = 'NombreDelGuild'
ORDER BY GuildStatus DESC;

Valores típicos de GuildStatus:

  • 0 → Miembro regular
  • 1 → Battle Master
  • 2 → Guild Master

Cambiar el Guild Master

Si el master actual abandonó el servidor y dejó el guild sin liderazgo:

BEGIN TRANSACTION;

-- Degradar al antiguo master en GuildMember
UPDATE GuildMember
SET GuildStatus = 0
WHERE GuildName = 'NombreDelGuild' AND Name = 'NombreAntiguo';

-- Promover al nuevo master en GuildMember
UPDATE GuildMember
SET GuildStatus = 2
WHERE GuildName = 'NombreDelGuild' AND Name = 'NombreNuevo';

-- Actualizar la tabla cabecera Guild
UPDATE Guild
SET GuildMaster = 'NombreNuevo'
WHERE GuildName = 'NombreDelGuild';

COMMIT;

> [!CONSEJO] > Anuncia los cambios de liderazgo en el Discord o foro de tu servidor antes de realizar el cambio en la base de datos. Esto evita disputas y mantiene a la comunidad informada. Documenta la solicitud, el motivo y la fecha en un registro privado de administración.

Disolver un Guild Inactivo

Disolver un guild implica eliminar tres conjuntos de registros relacionados:

BEGIN TRANSACTION;

DELETE FROM GuildMark   WHERE GuildName = 'GuildInactivo';
DELETE FROM GuildMember WHERE GuildName = 'GuildInactivo';
DELETE FROM Guild       WHERE GuildName = 'GuildInactivo';

COMMIT;

Tras disolver el guild, revisa también las relaciones de alianza que pueda haber tenido. Consulta la tabla GuildAlliance o su equivalente en tu build y elimina las entradas obsoletas.

Ajustar el Score o Puntos de Alianza de un Guild

El score del guild afecta los rankings. Para corregir un valor manualmente tras un bug verificado:

BEGIN TRANSACTION;

UPDATE Guild
SET Score = 15000
WHERE GuildName = 'NombreDelGuild';

COMMIT;

Solo ajusta scores para corregir bugs comprobables, no para favorecer jugadores. Mantén un registro de cada cambio manual de score con el motivo y el nombre del administrador que lo realizó.

Uso de Comandos GM en el Juego

Las ediciones directas de la base de datos son potentes pero arriesgadas. Para las operaciones del día a día, los comandos GM en el juego son más rápidos y seguros. Comandos comunes en la mayoría de los builds:

/ban <AccountID> <Minutos>          → ban temporal de cuenta
/unban <AccountID>                  → levantar un ban
/kick <NombrePersonaje>             → desconectar un personaje
/move <NombrePersonaje> <Mapa> <X> <Y>  → reubicar un jugador bloqueado
/givitem <NombrePersonaje> <CodigoItem> <Nivel> <Cantidad>  → entregar ítem
/guilddisband <NombreGuild>         → disolver guild desde el juego
/addgm <AccountID> <Nivel>          → otorgar acceso GM

> [!CONSEJO] > Mantén un archivo de texto privado o una página de wiki con todos los comandos GM disponibles en tu build específico, con la sintaxis exacta. La sintaxis varía entre emuladores y seasons. Prueba los comandos nuevos en una cuenta de prueba antes de usarlos con jugadores reales.

Registros y Buenas Prácticas de Auditoría

Cada cambio que realices en cuentas o guilds debe quedar registrado. Como mínimo, mantén una hoja de cálculo o canal privado con:

  • Fecha y hora de la acción
  • Nombre de administrador que la realizó
  • Jugador o guild afectado
  • Motivo de la acción
  • Consulta SQL o comando utilizado

Muchos builds incluyen una tabla LogGM o AdminLog. Actívala y consúltala con regularidad:

SELECT TOP 100 *
FROM LogGM
ORDER BY LogDate DESC;

El registro consistente te protege de acusaciones falsas, ayuda a detectar patrones de abuso y permite deshacer errores al poder rastrear exactamente qué cambios se realizaron.

Consultas de Mantenimiento Periódico

Ejecuta estas consultas de forma regular para mantener la base de datos en buen estado:

-- Cuentas inactivas por más de 6 meses
SELECT memb___id, LastLoginDate
FROM MEMB_STAT
WHERE LastLoginDate < DATEADD(MONTH, -6, GETDATE())
ORDER BY LastLoginDate ASC;

-- Guilds sin miembros (registros huérfanos)
SELECT g.GuildName
FROM Guild g
LEFT JOIN GuildMember m ON g.GuildName = m.GuildName
WHERE m.Name IS NULL;

-- Personajes sin cuenta asociada (filas huérfanas)
SELECT c.Name, c.AccountID
FROM Character c
LEFT JOIN MEMB_INFO a ON c.AccountID = a.memb___id
WHERE a.memb___id IS NULL;

Limpiar registros huérfanos e inactivos mantiene la base de datos liviana y reduce el riesgo de conflictos cuando los jugadores crean nuevas cuentas o guilds con nombres que fueron usados anteriormente.

Una gestión sólida de cuentas y guilds es la base de un servidor privado bien administrado. Aplica cada cambio mediante transacciones SQL probadas, documenta tus acciones y comunícate con tu comunidad antes de tomar decisiones que afecten sus personajes o grupos.

Perguntas frequentes

¿Cómo restablezco la contraseña de un jugador desde la base de datos?

Conéctate a tu instancia de SQL Server, abre la tabla MEMB_INFO en tu base de datos de cuentas, localiza la fila por memb___id y actualiza el campo memb__pwd con el nuevo valor, en texto plano o hasheado según el método de autenticación de tu servidor. Siempre haz una copia de seguridad de la tabla antes de editar directamente.

¿Puedo transferir un personaje entre cuentas sin perder los ítems?

Sí. Actualiza el campo AccountID en la tabla Character para que apunte a la cuenta de destino, luego verifica que las filas del almacén e inventario del personaje en sus respectivas tablas sigan referenciando el nombre de personaje correcto. Prueba primero con un personaje de poco valor.

¿Cómo disuelvo un guild que está inactivo?

Usa el comando GM /guilddisband <NombreGuild> en el juego si tu emulador lo soporta, o elimina la fila del guild de la tabla Guild y las filas relacionadas en GuildMember y GuildMark. Informa a los jugadores afectados antes de ejecutar la acción.

¿Cuál es la forma más segura de otorgar privilegios GM a un miembro del staff?

Establece el campo AccountLevel en MEMB_INFO al nivel adecuado (comúnmente 3 para Helper, 5 para GM, 8 para Admin según el build), limita los comandos GM disponibles a lo estrictamente necesario para ese rol y audita su uso periódicamente mediante los logs del servidor.

EQ

Equipo ViciadosMU

Equipe editorial do ViciadosMU — portal de MU Online no ar desde 2003.

Sigue leyendo

Artículos relacionados