Solo usuarios registrados pueden comentar y agradecer, Logueate o Registrate

Autor Topic: StuckRate de personaje al recibir daño MuEmu Season 6  (Visto 587 veces)

0 Miembros and 1 Guest are viewing this topic.

Offline 2str0kE Posteado: March 11, 2023, 06:06:21 AM | Modificado: March 12, 2023, 10:03:46 PM by 2str0kE

  • 0 puntos por ventas
  • *
  • Rank: Heroe
  • Posts: 176
  • Gracias recibida: 38
  • ar
Hola gente de TSM!

Tengo las sources MuEmu Season 6 de Louis Update 15. Y quiero modificar que cuando un jugador reciba daño, haga su respectivo cabeceo, ya configure el StuckRate y funciona pero solo cuando recibe daño por el "Reflec", yo quiero que el pj "cabeceé" (en base al StuckRate) siempre que reciba daño ya sea por skills o por "palazos".

Si alguien es tan amable de darme una mano lo re agradecería!

Dejo un video que muestra a lo que me refiero:


Saludos gente de TSM!

Gracias:


Marcado como mejor respuesta por: 2str0kE Posteado March 12, 2023, 06:03:37 PM

Offline 2str0kE #1 Posteado: March 12, 2023, 10:02:39 PM

  • 0 puntos por ventas
  • *
  • Rank: Heroe
  • Posts: 176
  • Gracias recibida: 38
  • ar
Encontré la solución.

En Attack.cpp

Buscar #pragma region ATTACK_FINISH

Y agregar lo siguiente:

Spoiler for Hiden:
if(damage > 0)
   {
      gEffectManager.DelEffect(lpTarget,EFFECT_SLEEP);

      if(effect != 4 && lpTarget->Type == OBJECT_USER)
      {
         if((GetLargeRand()%100) < gServerInfo.m_DamageStuckRate[lpTarget->Class])  // inicio tropezón
            {
               flag = 1;
            }                                          // fin tropezón


         if((GetLargeRand()%100) < lpTarget->FullDamageReflectRate)
         {
            gObjAddMsgSendDelay(lpTarget,10,lpObj->Index,10,damage);
         }
                 ....
                 ....
         }

Saludos!


Offline kayito #2 Posteado: March 12, 2023, 10:52:06 PM

  • MAESTRO

  • C++ Coder
  • 0 puntos por ventas
  • *
  • Rank: Puto amo
  • Posts: 1.039
  • Gracias recibida: 15821
  • ar
Esto ya fue publicado y le dieron solución en otro post. De igual manera te comparto la región completa para que veas cómo armar correctamente el if

Code: [Select]
#pragma region ATTACK_FINISH

if (damage > 0)
{
if (lpTarget->Type == OBJECT_USER)
{
if (effect != 4)
{
if ((GetLargeRand() % 100) < lpTarget->FullDamageReflectRate)
{
gObjAddMsgSendDelay(lpTarget, 10, lpObj->Index, 10, damage);
}
else if ((lpTarget->DamageReflect + lpTarget->EffectOption.AddDamageReflect) > 0)
{
gObjAddMsgSendDelay(lpTarget, 10, lpObj->Index, 10, ((damage*(lpTarget->DamageReflect + lpTarget->EffectOption.AddDamageReflect)) / 100));
}

if ((GetLargeRand() % 100) < lpTarget->DefensiveFullHPRestoreRate)
{
lpTarget->Life = lpTarget->MaxLife + lpTarget->AddLife;
GCLifeSend(lpTarget->Index, 0xFF, (int)lpTarget->Life, lpTarget->Shield);
}

if ((GetLargeRand() % 100) < lpTarget->DefensiveFullSDRestoreRate)
{
lpTarget->Shield = lpTarget->MaxShield + lpTarget->AddShield;
GCLifeSend(lpTarget->Index, 0xFF, (int)lpTarget->Life, lpTarget->Shield);
}

if ((GetLargeRand() % 100) < lpTarget->DefensiveFullMPRestoreRate)
{
lpTarget->Mana = lpTarget->MaxMana + lpTarget->AddMana;
GCManaSend(lpTarget->Index, 0xFF, (int)lpTarget->Mana, lpTarget->BP);
}

if ((GetLargeRand() % 100) < lpTarget->DefensiveFullBPRestoreRate)
{
lpTarget->BP = lpTarget->MaxBP + lpTarget->AddBP;
GCManaSend(lpTarget->Index, 0xFF, (int)lpTarget->Mana, lpTarget->BP);
}
}

if (lpTarget->Inventory[8].IsItem() == 0 // Stuck if has no pet
|| (lpTarget->Inventory[8].m_Index == GET_ITEM(13, 2) && gServerInfo.m_PetUniriaEnableStuck != 0) // Stuck if has Uniria
|| (lpTarget->Inventory[8].m_Index == GET_ITEM(13, 3) && gServerInfo.m_PetDinorantEnableStuck != 0) // Stuck if has Dinorant
|| (lpTarget->Inventory[8].m_Index == GET_ITEM(13, 4) && gServerInfo.m_PetDarkHorseEnableStuck != 0) // Stuck if has Dark Horse
|| (lpTarget->Inventory[8].m_Index == GET_ITEM(13, 37) && gServerInfo.m_PetFenrirEnableStuck != 0)) // Stuck if has Fenrir
{
if ((GetLargeRand() % 100) < gServerInfo.m_DamageStuckRate[lpTarget->Class])
{
flag = 1;
}
}
}

gObjectManager.CharacterLifeCheck(lpObj, lpTarget, (damage - ShieldDamage), 0, flag, effect, skill, ShieldDamage);
}
else
{
GCDamageSend(lpObj->Index, lpTarget->Index, 0, 0, effect, 0);
}

if (lpObj->Type == OBJECT_USER && lpObj->Life <= 0 && lpObj->CheckLifeTime <= 0)
{
lpObj->AttackObj = lpTarget;
lpObj->AttackerKilled = ((lpTarget->Type == OBJECT_USER) ? 1 : 0);
lpObj->CheckLifeTime = 3;
}

#pragma endregion


Solo usuarios registrados pueden comentar y agradecer, Logueate o Registrate


 

Related Topics

  Subject / Started by Replies Last post
1 Replies
1267 Views
Last post May 16, 2018, 11:44:08 AM
by ghostx
4 Replies
4106 Views
Last post August 18, 2018, 01:07:57 PM
by FreeStyle
3 Replies
1377 Views
Last post May 18, 2019, 11:17:34 PM
by darwinv91
2 Replies
1202 Views
Last post January 26, 2020, 09:12:32 PM
by denny785
0 Replies
544 Views
Last post September 09, 2020, 11:58:02 PM
by Ratablanca