WhatsApp Discord
[FIX] Visualización de Daño en Golpes Letales - Source 5.2 Pegasus / Mudream - Source Mu - Mu Server Files
 

[FIX] Visualización de Daño en Golpes Letales - Source 5.2 Pegasus / Mudream

Publicado por Dakosmu, Abr 02, 2026, 05:11 AM

Tema anterior - Siguiente tema

0 Miembros y 1 Visitante están viendo este tema.

Keywords Source 5.2 PegasusSource 5.2 Pegasus

Dakosmu

[FIX] Visualización de Daño en Golpes Letales - Source 5.2 Pegasus / Mudream

Este fix soluciona el problema visual donde el número de daño no aparece cuando matas a un monstruo de nivel bajo de un solo golpe o con daño excesivo. El error ocurre porque el servidor procesa la muerte antes de enviar el paquete de daño al cliente.

Descripción del Problema:
En muchas versiones de las sources Pegasus, el cliente deja de mostrar los puntos de daño cuando el golpe es letal. Al mover el envío del paquete GCDamageSend antes de la comprobación de vida (lpTarget->Life <= 0), obligamos al servidor a informar el impacto antes de finalizar el estado del objeto.

Instrucciones para el GameServer:

  • Localiza el archivo ObjectManager.cpp (o donde se encuentre la lógica de combate).
  • Busca la función: void CObjectManager::CharacterLifeCheck
  • Debes mover los bloques de envío de paquetes de daño (DamageType 0 al 4) arriba de la condicional de muerte.
  • Reemplaza o organiza tu función con el siguiente código optimizado:

void CObjectManager::CharacterLifeCheck(LPOBJ lpObj,LPOBJ lpTarget,int damage,int DamageType,int flag,int type,int skill,int ShieldDamage)
{
if(lpObj->Connected != OBJECT_ONLINE) { return; }

// ... (Validaciones de Kalima y SummonIndex) ...

// ENVIAR PAQUETE DE DAÑO ANTES DE COMPROBAR LA MUERTE
if (DamageType == 0)
{
    GCDamageSend(SummonIndex, lpTarget->Index, flag, damage, type, ShieldDamage);
}
else if (DamageType == 1)
{
    GCMonsterDamageSend(lpTarget->Index, damage, ShieldDamage);
}
else if (DamageType == 2)
{
    GCDamageSend(SummonIndex, lpTarget->Index, flag, damage, 5, ShieldDamage);
}
else if (DamageType == 3)
{
    GCDamageSend(SummonIndex, lpTarget->Index, flag, damage, 6, ShieldDamage);
}

// AHORA PROCEDER CON LA VERIFICACIÓN DE VIDA
if(lpTarget->Life <= 0 && lpTarget->Live != 0)
{
    // ... (Lógica de KillerType, Quests, Invasiones, Experiencia) ...
}
}

Al realizar este cambio, el cliente recibirá siempre el paquete GCDamageSend o GCMonsterDamageSend independientemente de si el monstruo muere en ese instante, garantizando que los puntos de daño se rendericen en pantalla.

Asegúrate de no duplicar las llamadas a GCDamageSend. Si ya existían dentro de la función, bórralas de su posición original después de moverlas al inicio.

Keywords:
MuOnline, Pegasus, Mudream, Fix Damage, CharacterLifeCheck, GameServer, Bug Visual, Monsters, GCDamageSend, Source Code, C++, Desarrollo, Dexign.

¿Probaste el fix? Esto debería solucionar la falta de "Damage Numbers" en mapas de inicio como Lorencia o Noria cuando usas personajes de alto nivel.

Créditos: Dexign
Bon Dia

🡱 🡳
Real Time Web Analytics