Fix: Efectos de Habilidades Rage Fighter - Source Pegasus/Mudream - Source Mu - Mu Server Files
 

Fix: Efectos de Habilidades Rage Fighter - Source Pegasus/Mudream

Publicado por Dakosmu, Mar 17, 2026, 05:54 PM

Tema anterior - Siguiente tema

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

Dakosmu

Fix: Efectos de Habilidades Rage Fighter - Source Pegasus/Mudream

Si estás trabajando con los files Source 5.2 Pegasus o Mudream, es probable que hayas notado errores visuales en las habilidades del Rage Fighter. Esta corrección soluciona el renderizado de efectos para el RF Skill System.

Este fix afecta directamente al lado del Cliente (Main/Source), específicamente en la gestión del sistema de monjes (CMonkSystem).

Pasos para la instalación:

  • Abre tu proyecto de Source en Visual Studio.
  • Busca el archivo donde se encuentra la lógica del Rage Fighter (generalmente relacionado con CMonkSystem).
  • Localiza la función: bool CMonkSystem::RageCreateEffect(OBJECT* _pObj, int _nSkill)
  • Reemplaza todo el bloque de la función por el código que se presenta a continuación.

Asegúrate de realizar una copia de seguridad de tus archivos antes de aplicar cualquier cambio en la lógica del sistema de efectos.

bool CMonkSystem::RageCreateEffect(OBJECT* _pObj, int _nSkill)
{
switch (_nSkill)
{
case AT_SKILL_THRUST:
case MASTER_SKILL_ADD_LARGE_RING_BLOWER_IMPROVED:
case MASTER_SKILL_ADD_LARGE_RING_BLOWER_ENHANCED:
{
if (m_bUseEffectOnce)
return false;

  m_bUseEffectOnce = true;
  vec3_t vPosition;
  VectorCopy(CharactersClient[_pObj->m_sTargetIndex].Object.Position, vPosition);
  _pObj->Angle[2] = CreateAngle2D(_pObj->Position, vPosition);
  CreateEffect(MODEL_WOLF_HEAD_EFFECT, _pObj->Position, _pObj->Angle, _pObj->Light, 0, _pObj);
  CreateEffect(BITMAP_SBUMB, vPosition, _pObj->Angle, _pObj->Light, 0, _pObj, -1, 0, 0, 0, 2.1f);

  PlayBuffer(SOUND_RAGESKILL_THRUST);
}
return true;
case AT_SKILL_STAMP:
case MASTER_SKILL_ADD_UPPER_BEAST_IMPROVED:
{
if (m_bUseEffectOnce)
return false;

  m_bUseEffectOnce = true;
  CreateEffect(MODEL_DOWN_ATTACK_DUMMY_R, _pObj->Position, _pObj->Angle, _pObj->Light, 0, _pObj);

  PlayBuffer(SOUND_RAGESKILL_STAMP);
}
return true;
case AT_SKILL_GIANTSWING:
case MASTER_SKILL_ADD_CHAIN_DRIVER_IMPROVED:
case MASTER_SKILL_ADD_CHAIN_DRIVER_ENHANCED:
{
CreateEffect(BITMAP_SWORDEFF, _pObj->Position, _pObj->Angle, _pObj->Light, 0, _pObj);

  PlayBuffer(SOUND_RAGESKILL_GIANTSWING);
}
return true;
case AT_SKILL_ATT_UP_OURFORCES:
{
if (m_bUseEffectOnce)
return false;

  m_bUseEffectOnce = true;

  vec3_t vLight;
  Vector(0.2f, 0.4f, 1.0f, vLight);

  vec3_t _vAngle;
  VectorCopy(_pObj->Angle, _vAngle);
  CreateEffect(BITMAP_SWORD_EFFECT_MONO, _pObj->Position, _pObj->Angle, vLight, 0, _pObj, -1, 0, 0, 0, 1.0f);

  for (int i = 0; i < 3; ++i)
  {
     Vector(0.6f, 0.65f, 1.0f, vLight);
     CreateEffect(MODEL_SHOCKWAVE_GROUND01, _pObj->Position, _pObj->Angle, vLight, 0, _pObj, -1, 0, 0, 0, 1.0f - (i * 0.15f));

     Vector(0.65f, 0.8f, 1.0f, vLight);
     CreateEffect(BITMAP_EVENT_CLOUD, _pObj->Position, _pObj->Angle, vLight, 0, _pObj, -1, 0, 0, 0, 1.0f);
  }
  Vector(0.5f, 0.55f, 1.0f, vLight);
  CreateEffect(MODEL_WINDFOCE, _pObj->Position, _pObj->Angle, vLight, 1, _pObj, -1, 0, 0, 0, 1.0f);

  Vector(0.5f, 0.55f, 0.9f, vLight);
  CreateEffect(BITMAP_MAGIC, _pObj->Position, _pObj->Angle, vLight, 13);
}
return true;
case AT_SKILL_HP_UP_OURFORCES:
case MASTER_SKILL_ADD_FITNESS_IMPROVED:
{
if (m_bUseEffectOnce)
return false;

  m_bUseEffectOnce = true;

  vec3_t vLight;
  Vector(0.5f, 0.28f, 1.0f, vLight);
  vec3_t _vAngle;
  VectorCopy(_pObj->Angle, _vAngle);
  CreateEffect(BITMAP_SWORD_EFFECT_MONO, _pObj->Position, _pObj->Angle, vLight, 1, _pObj, -1, 0, 0, 0, 1.0f);
  for (int i = 0; i < 3; ++i)
  {
     Vector(1.0f, 0.35f, 1.0f, vLight);
     CreateEffect(MODEL_SHOCKWAVE_GROUND01, _pObj->Position, _pObj->Angle, vLight, 0, _pObj, -1, 0, 0, 0, 1.0f - (i * 0.15f));

     Vector(0.8f, 0.4f, 1.0f, vLight);
     CreateEffect(BITMAP_EVENT_CLOUD, _pObj->Position, _pObj->Angle, vLight, 0, _pObj, -1, 0, 0, 0, 1.0f);
  }
  Vector(0.85f, 0.2f, 1.0f, vLight);
  CreateEffect(MODEL_WINDFOCE, _pObj->Position, _pObj->Angle, vLight, 4, _pObj, -1, 0, 0, 0, 1.0f);

  Vector(0.78f, 0.2f, 1.0f, vLight);
  CreateEffect(BITMAP_MAGIC, _pObj->Position, _pObj->Angle, vLight, 13);
}
return true;
case AT_SKILL_DEF_UP_OURFORCES:
case MASTER_SKILL_ADD_GREATER_DEFENSE_SUCCESS_RATE_IMPROVED:
case MASTER_SKILL_ADD_GREATER_DEFENSE_SUCCESS_RATE_ENHANCED:
{
if (m_bUseEffectOnce)
return false;

  m_bUseEffectOnce = true;

  vec3_t vLight;
  Vector(1.0f, 0.15f, 0.0f, vLight);
  vec3_t _vAngle;
  VectorCopy(_pObj->Angle, _vAngle);
  CreateEffect(BITMAP_SWORD_EFFECT_MONO, _pObj->Position, _pObj->Angle, vLight, 2, _pObj, -1, 0, 0, 0, 1.0f);

  for (int i = 0; i < 3; ++i)
  {
     Vector(1.0f, 0.1f, 0.0f, vLight);
     CreateEffect(MODEL_SHOCKWAVE_GROUND01, _pObj->Position, _pObj->Angle, vLight, 0, _pObj, -1, 0, 0, 0, 1.0f - (i * 0.15f));

     Vector(1.0f, 0.3f, 0.2f, vLight);
     CreateEffect(BITMAP_EVENT_CLOUD, _pObj->Position, _pObj->Angle, vLight, 0, _pObj, -1, 0, 0, 0, 1.0f);
  }
  Vector(1.0f, 0.2f, 0.0f, vLight);
  CreateEffect(MODEL_WINDFOCE, _pObj->Position, _pObj->Angle, vLight, 5, _pObj, -1, 0, 0, 0, 1.0f);

  Vector(1.0f, 0.15f, 0.0f, vLight);
  CreateEffect(BITMAP_MAGIC, _pObj->Position, _pObj->Angle, vLight, 13);
}
return true;

case AT_SKILL_DRAGON_KICK:
{
if (m_bUseEffectOnce)
return false;

  m_bUseEffectOnce = true;

  vec3_t vLight;
  Vector(0.7f, 0.7f, 1.0f, vLight);
  CreateEffect(MODEL_DRAGON_KICK_DUMMY, _pObj->Position, _pObj->Angle, vLight, 0, _pObj, -1, 0, 0, 0, 1.0f);

  vec3_t Light, Position, P, dp, vAngle;

  if (_pObj->m_sTargetIndex < 0)
     return true;

  VectorCopy(CharactersClient[_pObj->m_sTargetIndex].Object.Position, Position);
  VectorCopy(_pObj->Angle, vAngle);
  vAngle[2] = CreateAngle2D(_pObj->Position, Position);

  float Matrix[3][4];
  Vector(0.f, 20.f, 0.f, P);
  AngleMatrix(vAngle, Matrix);
  VectorRotate(P, Matrix, dp);
  VectorAdd(dp, _pObj->Position, Position);
  Vector(0.8f, 0.9f, 1.6f, Light);
  CreateEffect(MODEL_MULTI_SHOT3, Position, vAngle, Light, 0);
  CreateEffect(MODEL_MULTI_SHOT3, Position, vAngle, Light, 0);

  Vector(0.f, 0.f, 0.f, P);
  AngleMatrix(vAngle, Matrix);
  VectorRotate(P, Matrix, dp);
  VectorAdd(dp, _pObj->Position, Position);

  CreateEffect(MODEL_MULTI_SHOT1, Position, vAngle, Light, 0);
  CreateEffect(MODEL_MULTI_SHOT1, Position, vAngle, Light, 0);
  CreateEffect(MODEL_MULTI_SHOT1, Position, vAngle, Light, 0);

  Vector(0.f, 20.f, 0.f, P);
  AngleMatrix(vAngle, Matrix);
  VectorRotate(P, Matrix, dp);
  VectorAdd(dp, _pObj->Position, Position);
  CreateEffect(MODEL_MULTI_SHOT2, Position, vAngle, Light, 0);
  CreateEffect(MODEL_MULTI_SHOT2, Position, vAngle, Light, 0);

  PlayBuffer(SOUND_RAGESKILL_DRAGONKICK);
}
return true;

case AT_SKILL_DRAGON_LOWER:
case MASTER_SKILL_ADD_DRAGON_LORE_IMPROVED:
case MASTER_SKILL_ADD_DRAGON_LORE_ENHANCED:
{
if (m_bUseEffectOnce)
return false;

  m_bUseEffectOnce = true;

  vec3_t vLight;
  Vector(1.0f, 1.0f, 1.0f, vLight);
  CreateEffectFpsChecked(BITMAP_LAVA, _pObj->Position, _pObj->Angle, vLight, 0, _pObj, -1, 0, 0, 0, 1.0f);

  CreateEffect(MODEL_BLOW_OF_DESTRUCTION, _pObj->Position, _pObj->Angle, vLight, 2, _pObj);

  InitLower();

  PlayBuffer(SOUND_RAGESKILL_DRAGONLOWER);
}
break;
case AT_SKILL_DARKSIDE:
case MASTER_SKILL_ADD_DARK_SIDE_IMPROVED:

case MASTER_SKILL_ADD_DARK_SIDE_ENHANCED:

{
if (m_bUseEffectOnce)
return false;

  m_bUseEffectOnce = true;

  vec3_t vLight;
  Vector(1.0f, 0.6f, 0.6f, vLight);
  CreateEffect(BITMAP_EVENT_CLOUD, _pObj->Position, _pObj->Angle, vLight, 1, _pObj, -1, 0, 0, 0, 1.0f);

  Vector(1.0f, 0.4f, 0.0f, vLight);
  CreateEffect(BITMAP_MAGIC, _pObj->Position, _pObj->Angle, vLight, 14);

  Vector(1.0f, 0.5f, 0.2f, vLight);
  CreateEffect(MODEL_WINDFOCE, _pObj->Position, _pObj->Angle, vLight, 2, _pObj, -1, 0, 0, 0, 1.0f);

  InitDummyCal();

  PlayBuffer(SOUND_RAGESKILL_DARKSIDE);
}
break;
case AT_SKILL_OCCUPY:
{
vec3_t Light, Position, P, dp;

  float Matrix[3][4];
  Vector(0.f, 20.f, 0.f, P);
  AngleMatrix(_pObj->Angle, Matrix);
  VectorRotate(P, Matrix, dp);
  VectorAdd(dp, _pObj->Position, Position);
  Vector(0.8f, 0.9f, 1.6f, Light);
  CreateEffect(MODEL_MULTI_SHOT3, Position, _pObj->Angle, Light, 0);
  CreateEffect(MODEL_MULTI_SHOT3, Position, _pObj->Angle, Light, 0);

  Vector(0.f, 0.f, 0.f, P);
  AngleMatrix(_pObj->Angle, Matrix);
  VectorRotate(P, Matrix, dp);
  VectorAdd(dp, _pObj->Position, Position);

  CreateEffect(MODEL_MULTI_SHOT1, Position, _pObj->Angle, Light, 0);
  CreateEffect(MODEL_MULTI_SHOT1, Position, _pObj->Angle, Light, 0);
  CreateEffect(MODEL_MULTI_SHOT1, Position, _pObj->Angle, Light, 0);

  Vector(0.f, 20.f, 0.f, P);
  AngleMatrix(_pObj->Angle, Matrix);
  VectorRotate(P, Matrix, dp);
  VectorAdd(dp, _pObj->Position, Position);
  CreateEffect(MODEL_MULTI_SHOT2, Position, _pObj->Angle, Light, 0);
  CreateEffect(MODEL_MULTI_SHOT2, Position, _pObj->Angle, Light, 0);
}
break;
default:
break;
}
return false;
}

Una vez reemplazado el código, compila tu proyecto y verifica en el juego que las habilidades como Dragon Kick, Darkside y los Buffs muestren sus texturas correctamente.

Si el compilador arroja errores de alineación o caracteres extraños, asegúrate de guardar el archivo con codificación UTF-8 (sin BOM) o ANSI.

¿Te ha servido este fix o tienes problemas con alguna habilidad específica? ¡Déjanos tu comentario abajo!
Bon Dia

🡱 🡳
Real Time Web Analytics