WhatsApp Discord
Fix: Rotación Automática y Animación Stand - Source Pegasus/Mudream - Source Mu - Mu Server Files
 

Fix: Rotación Automática y Animación Stand - Source Pegasus/Mudream

Publicado por Dakosmu, Mar 17, 2026, 06:15 PM

Tema anterior - Siguiente tema

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

Dakosmu

Fix: Rotación Automática y Animación Stand - Source Pegasus/Mudream

Si utilizas las sources Pegasus o Mudream (5.2), habrás notado que a veces el personaje no gira correctamente hacia el cursor o tiene problemas con el tiempo de espera para las animaciones en reposo. Este fix, desarrollado originalmente por Louis, optimiza la lógica de StandTime y la rotación del personaje.

Esta modificación mejora la sincronización del personaje con los frames por segundo (FPS) y asegura que no intente rotar mientras realiza habilidades específicas o está muerto.

Instrucciones de implementación:

  • Abre tu solución en Visual Studio y busca en el proyecto del Cliente.
  • Utiliza la búsqueda global para localizar la línea:

StandTime += FPS_ANIMATION_FACTOR;
  • Reemplaza esa línea y el bloque condicional siguiente por el código que se detalla a continuación:

StandTime++;
if (StandTime >= (40+(40*FPS_ANIMATION_FACTOR)) && !MouseOnWindow && !Hero->Dead &&
o->CurrentAction != PLAYER_POSE1 && o->CurrentAction != PLAYER_POSE_FEMALE1 &&
o->CurrentAction != PLAYER_SIT1 && o->CurrentAction != PLAYER_SIT_FEMALE1 && NoAutoAttacking &&
o->CurrentAction != PLAYER_ATTACK_TELEPORT &&
o->CurrentAction != PLAYER_ATTACK_RIDE_TELEPORT &&
o->CurrentAction != PLAYER_FENRIR_ATTACK_DARKLORD_TELEPORT &&
o->CurrentAction != PLAYER_SKILL_ATT_UP_OURFORCES &&
o->CurrentAction != PLAYER_SKILL_HP_UP_OURFORCES &&
Hero->AttackTime == 0)
{
StandTime = 0;
HeroAngle = -(int)(CreateAngle((float)MouseX, (float)MouseY, (float)(HeroX+DisplayWinExt), (float)(HeroY+DisplayHeightExt))) + 360 + 45;
HeroAngle %= 360;
BYTE Angle1 = ((BYTE)((o->Angle[2] + 22.5f) / 360.f * 8.f + 1.f) % 8);
BYTE Angle2 = ((BYTE)(((float)HeroAngle + 22.5f) / 360.f * 8.f + 1.f) % 8);
if (Angle1 != Angle2)
{
if (o->CurrentAction != PLAYER_ATTACK_SKILL_SWORD2)
{
Hero->Object.Angle[2] = (float)HeroAngle;
}
SendRequestAction(AT_STAND1, ((BYTE)((HeroAngle + 22.5f) / 360.f * 8.f + 1.f) % 8));
}
}
UseSkillRagePosition(c);

Este código incluye validaciones para las nuevas habilidades del Rage Fighter. Si no tienes definidos los macros como PLAYER_SKILL_ATT_UP_OURFORCES, asegúrate de revisarlos en tus headers de animaciones.

Con este cambio, el personaje tendrá un movimiento de rotación más fluido y no interrumpirá las animaciones de buff o sentado accidentalmente.

Créditos: Louis

Recuerda que para evitar errores de compilación por caracteres ocultos, es recomendable guardar el archivo con codificación UTF-8 (sin BOM) o ANSI.

¿Has notado alguna otra irregularidad en las animaciones de movimiento de estas sources? ¡Cuéntanos en la sección de comentarios!
Bon Dia

🡱 🡳
Real Time Web Analytics