Autor Topic: Fix para el reflect no enviando el "tropezón" al atacante files MuEmu  (Visto 1125 veces)

0 Miembros and 1 Guest are viewing this topic.

Offline webmonkey on: June 02, 2018, 02:03:53 PM

  • *
  • Rank: Principiante
  • Posts: 16
  • Gracias recibida: 14
Como varios saben, los archivos mu emu no envian el "flinch/tropezón/etc" al personaje que ataca a alguien con reflect, esto es uno de los principales beneficios de tener reflect. Para agregar el efecto busquen en attack.cpp la linea
Code: [Select]
gObjectManager.CharacterLifeCheck(lpObj,lpTarget,(damage-ShieldDamage),0,flag,effect,((lpSkill==0)?0:lpSkill->m_index),ShieldDamage);

y agreguen arriba el check del skill del reflect para que quede así:
Code: [Select]
		else if (lpTarget->Inventory[8].IsItem() == 0 || (lpTarget->Inventory[8].m_Index != GET_ITEM(13, 2) && lpTarget->Inventory[8].m_Index != GET_ITEM(13, 3) && lpTarget->Inventory[8].m_Index != GET_ITEM(13, 4) && lpTarget->Inventory[8].m_Index != GET_ITEM(13, 37)))
{
if ((GetLargeRand() % 100) < gServerInfo.m_DamageStuckRate[lpTarget->Class])
{
flag = 1;
}

}

gObjectManager.CharacterLifeCheck(lpObj,lpTarget,(damage-ShieldDamage),0,flag,effect,((lpSkill==0)?0:lpSkill->m_index),ShieldDamage);

Gracias:


Offline seedmaker #1 on: June 03, 2018, 12:08:57 AM

  • *
  • Rank: Dedicado
  • Posts: 52
  • Gracias recibida: 87

Offline INFIERNO #2 on: June 03, 2018, 02:39:39 PM

  • *
  • Rank: Puto amo
  • Posts: 216
  • Gracias recibida: 1738
No Funca :V,Por lo que vi solo agregaste else if pero no lo toma a los tropesones siendo full stat :V

Offline Ryuno #3 on: June 03, 2018, 02:57:53 PM

  • C++ Coder
  • *
  • Rank: Puto amo
  • Posts: 365
  • Gracias recibida: 506
eso no es que controla el Reflect  en Webzen es asi:
Code: [Select]
int atd_reflect;
atd_reflect = (int)((float)AttackDamage*lpTargetObj->DamageReflect/100);

if( atd_reflect )
{
//LogAdd("µ¥¹ÌÁö ¹Ý»ç %x ", atd_reflect);

gObjAddMsgSendDelay(lpTargetObj, 10, lpObj->m_Index, 10, atd_reflect);
}

if( rand()%100 < lpObj->SetOpReflectionDamage )
{ // ¼¼Æ® ¿É¼Ç 100% µ¥¹ÌÁö ¹Ý»ç
gObjAddMsgSendDelay(lpTargetObj, 10, lpObj->m_Index, 10, AttackDamage);
}

En referencia encontre esto en mu emu:
Code: [Select]

if(damage > 0)
{
gEffectManager.DelEffect(lpTarget,EFFECT_SLEEP);

if(effect != 4 && lpTarget->Type == OBJECT_USER)
{
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));
}

con eso dejo que analisen las 2 funcionen y encuentren el problema dejo mis observaciones. Ando sin Servidor para test XD-

la solucion creo yo es que el codigo solo esta dejando que solo cumpla 1 condicion a la vez lo digo por el if y else en webzen se dejan las 2 para que sean cumplidas
Code: [Select]

if((GetLargeRand()%100) < lpTarget->FullDamageReflectRate)
{
gObjAddMsgSendDelay(lpTarget,10,lpObj->Index,10,damage);
}
if((lpTarget->DamageReflect+lpTarget->EffectOption.AddDamageReflect) > 0)
{
gObjAddMsgSendDelay(lpTarget,10,lpObj->Index,10,((damage*(lpTarget->DamageReflect+lpTarget->EffectOption.AddDamageReflect))/100));
}
Seria cuestion de testiar

Offline webmonkey #4 on: June 03, 2018, 07:48:16 PM

  • *
  • Rank: Principiante
  • Posts: 16
  • Gracias recibida: 14
funciona, pruebenlo, lo estoy usando y otro usuario de otro foro en el que publiqué el fix ya lo está usando sin problemas. lo que pusiste Ryuno pasa el ataque del reflect al statemachine gSMMsg, y este cuando corre ejecuta de nuevo la función atttack, el ¨tropezón" no está atado a esa función, si no al damage send que envía desde la función de ataque. básicamente es un else if porque en el código original hace if(effect != 4...), lo que significa que ignora todo el código cuando el statemachine envía el ataque del reflect.

Paso en limpio, la parte del código que pegó Ryuno funciona como corresponde y corre la función que modifiqué.


Es lógico que prueben con gServerInfo.m_DamageStuckRate en 100 en el gameserver.
« Ultima edicion: June 03, 2018, 08:35:46 PM by webmonkey »

Offline pavon7 #5 on: June 04, 2018, 12:57:47 AM

  • *
  • Rank: Principiante
  • Posts: 10
  • Gracias recibida: 1
Hola buenas noches hay alguna guia de comer editar dicho archivo,disculpen aun no entiendo esto!

Offline webmonkey #6 on: June 04, 2018, 04:26:12 AM

  • *
  • Rank: Principiante
  • Posts: 16
  • Gracias recibida: 14
agregá lo que está en rojo en attack.cpp

if(lpTarget->Inventory[8].IsItem() == 0 || (lpTarget->Inventory[8].m_Index != GET_ITEM(13,2) && lpTarget->Inventory[8].m_Index != GET_ITEM(13,3) && lpTarget->Inventory[8].m_Index != GET_ITEM(13,4) && lpTarget->Inventory[8].m_Index != GET_ITEM(13,37)))
         {
            if((GetLargeRand()%100) < gServerInfo.m_DamageStuckRate[lpTarget->Class])
            {
               flag = 1;
            }

         }
      }
      else if (lpTarget->Inventory[8].IsItem() == 0 || (lpTarget->Inventory[8].m_Index != GET_ITEM(13, 2) && lpTarget->Inventory[8].m_Index != GET_ITEM(13, 3) && lpTarget->Inventory[8].m_Index != GET_ITEM(13, 4) && lpTarget->Inventory[8].m_Index != GET_ITEM(13, 37)))
      {
         if ((GetLargeRand() % 100) < gServerInfo.m_DamageStuckRate[lpTarget->Class])
         {
            flag = 1;
         }

      }


      gObjectManager.CharacterLifeCheck(lpObj,lpTarget,(damage-ShieldDamage),0,flag,effect,((lpSkill==0)?0:lpSkill->m_index),ShieldDamage);

Online louis #7 on: June 04, 2018, 08:08:09 AM

  • C++ Coder
  • *
  • *
  • Rank: Puto amo
  • Posts: 228
  • Gracias recibida: 1966
¿Qué fuente da muemu ustedes tienen? ahi ya tiene iso agregado ...

otra cosa,
si está usando asa o pet de montaje no es correcto enviando el "tropezón" como en lo video...

Offline INFIERNO #8 on: June 04, 2018, 08:24:36 AM

  • *
  • Rank: Puto amo
  • Posts: 216
  • Gracias recibida: 1738
¿Qué fuente da muemu ustedes tienen? ahi ya tiene iso agregado ...

otra cosa,
si está usando asa o pet de montaje no es correcto enviando el "tropezón" como en lo video...
yo uso los tuyos...por eso decia que se me hacia raro por que ya lo vi agregado...

para habilitarle el tropeson tienen que ir al lado files y configurar esto

;==================================================
; Character Stuck Rate Settings
;==================================================
DWDamageStuckRate = 0
DKDamageStuckRate = 0
FEDamageStuckRate = 0
MGDamageStuckRate = 0
DLDamageStuckRate = 0
SUDamageStuckRate = 0
RFDamageStuckRate = 0

En mi caso lo puse en 100 bueno depende lo que ustedes quieran :)
« Ultima edicion: June 04, 2018, 09:36:00 AM by martin226 »

Gracias:


Online louis #9 on: June 04, 2018, 10:06:03 AM

  • C++ Coder
  • *
  • *
  • Rank: Puto amo
  • Posts: 228
  • Gracias recibida: 1966
¿Qué fuente da muemu ustedes tienen? ahi ya tiene iso agregado ...

otra cosa,
si está usando asa o pet de montaje no es correcto enviando el "tropezón" como en lo video...
yo uso los tuyos...por eso decia que se me hacia raro por que ya lo vi agregado...

para habilitarle el tropeson tienen que ir al lado files y configurar esto

;==================================================
; Character Stuck Rate Settings
;==================================================
DWDamageStuckRate = 0
DKDamageStuckRate = 0
FEDamageStuckRate = 0
MGDamageStuckRate = 0
DLDamageStuckRate = 0
SUDamageStuckRate = 0
RFDamageStuckRate = 0

En mi caso lo puse en 100 bueno depende lo que ustedes quieran :)

Si correcto ^^

Offline webmonkey #10 on: June 04, 2018, 01:13:28 PM

  • *
  • Rank: Principiante
  • Posts: 16
  • Gracias recibida: 14
Como me hacen renegar. el source de luis tampoco lo tiene, lo acabo de descargar para comprobar. creo que lo que los confunde es que el código se repite. Vamos de nuevo, más despacio.

Código original:


Código que publiqué:


Alternativa, más simple:



yo uso los tuyos...por eso decia que se me hacia raro por que ya lo vi agregado...
para habilitarle el tropeson tienen que ir al lado files y configurar esto..
en el reflect(reflect = effect ==4) el código original no ejecuta esa verificación. lo podes poner en un millón, que no lo va a correr. if effect !=4, ya lo dije arriba. 100 es una mala configuración, debería ser azar.


si está usando asa o pet de montaje no es correcto enviando el "tropezón" como en lo video...
solo las monturas. por eso el if clause. es básico. al menos que webzen lo haya modificado desde la última vez que vi el código. desconozco si la verificación del cliente sigue existiendo después de .97.

PD: ya me acordé por qué no publico código.
« Ultima edicion: June 04, 2018, 01:17:04 PM by webmonkey »

Online louis #11 on: June 04, 2018, 01:27:41 PM

  • C++ Coder
  • *
  • *
  • Rank: Puto amo
  • Posts: 228
  • Gracias recibida: 1966
se ha modificado, hasta por qué no tropeza si está volando jaja, pero va del gusto del adm, lo aporte es bueno solo quero dicer que estas ok en los server muemu ^^


"PD: ya me acordé por qué no publico código."

No entiendo mal amigo, no estamos criticando, sólo estamos hablando, relaja xD
« Ultima edicion: June 04, 2018, 01:29:26 PM by louis »

Offline webmonkey #12 on: June 04, 2018, 01:36:16 PM

  • *
  • Rank: Principiante
  • Posts: 16
  • Gracias recibida: 14
no, no está ok. así estes parado en la configuración original no manda el flinch con el reflect, el flag nunca se setea en 1. No es nada personal, me refiero a que no publico código porque hay demasiada gente que no entiende como funciona y no se molesta en aprender.

si quieren evitar que el tropezón afecte a los que tienen alas, agreguen dentro de la clausa if
Code: [Select]
lpTarget->Inventory[7].IsItem() == 0
« Ultima edicion: June 04, 2018, 01:42:11 PM by webmonkey »

Gracias:


Offline nxx #13 on: June 05, 2018, 02:15:38 AM

  • *
  • Rank: Principiante
  • Posts: 11
  • Gracias recibida: 1
@webmonkey  tiene razón la función no se cumple probé colocar numero altos en los codigo fuente originales y no funciona, sale alzar como el dice.

Offline Ryuno #14 on: June 06, 2018, 02:35:18 PM

  • C++ Coder
  • *
  • Rank: Puto amo
  • Posts: 365
  • Gracias recibida: 506
no, no está ok. así estes parado en la configuración original no manda el flinch con el reflect, el flag nunca se setea en 1. No es nada personal, me refiero a que no publico código porque hay demasiada gente que no entiende como funciona y no se molesta en aprender.

si quieren evitar que el tropezón afecte a los que tienen alas, agreguen dentro de la clausa if
Code: [Select]
lpTarget->Inventory[7].IsItem() == 0
la forma que usted como la hace no es la correcta. lo mejor y recomendable es conocer el index effect del tropezon y hacer una condicion que solo entre con ese numero

para que usted pueda averigurarlo agrege en esa condicion que usas un AddLog(LOG_RED,"EffectIndex:",effect); lo mejor es conocer el index correcto yo actualmente tengo el codigo de webzen del gameserver y ps es demaseado des ordenado.  no lo hago yo porque ando alejado del mu

igual gracias por publicar con esto debatimos temas de desarrollo y pues no se vuelve monotono esto.

con esto me dio ganas de armar un OffTopic de lo que le falta mu emu respecto a Webzen
« Ultima edicion: June 06, 2018, 02:43:34 PM by Ryuno »

Offline webmonkey #15 on: June 06, 2018, 05:15:48 PM

  • *
  • Rank: Principiante
  • Posts: 16
  • Gracias recibida: 14
no, no está ok. así estes parado en la configuración original no manda el flinch con el reflect, el flag nunca se setea en 1. No es nada personal, me refiero a que no publico código porque hay demasiada gente que no entiende como funciona y no se molesta en aprender.

si quieren evitar que el tropezón afecte a los que tienen alas, agreguen dentro de la clausa if
Code: [Select]
lpTarget->Inventory[7].IsItem() == 0
la forma que usted como la hace no es la correcta. lo mejor y recomendable es conocer el index effect del tropezon y hacer una condicion que solo entre con ese numero

para que usted pueda averigurarlo agrege en esa condicion que usas un AddLog(LOG_RED,"EffectIndex:",effect); lo mejor es conocer el index correcto yo actualmente tengo el codigo de webzen del gameserver y ps es demaseado des ordenado.  no lo hago yo porque ando alejado del mu

igual gracias por publicar con esto debatimos temas de desarrollo y pues no se vuelve monotono esto.

con esto me dio ganas de armar un OffTopic de lo que le falta mu emu respecto a Webzen

lo puse en posts anteriores, 2 veces. effect = 0x04;

Code: [Select]
if(skill != SKILL_EXPLOSION)
{
effect = 0x04;
damage = (damage*((lpObj->Type==OBJECT_USER&&lpTarget->Type==OBJECT_USER)?gServerInfo.m_ReflectDamageRatePvP:gServerInfo.m_ReflectDamageRatePvM))/100;
}
« Ultima edicion: June 06, 2018, 05:17:19 PM by webmonkey »

Offline Keko #16 on: July 31, 2018, 05:19:07 PM

  • *
  • Rank: Destacado
  • Posts: 84
  • Gracias recibida: 1
Muy pero muy bueno, ha habido confusión entre los usuarios, pero al final está en lo cierto, se agradece este aporte a la comunidad. Me gustaría saber como arreglar el % de reflect para el RF, solo te toma un % de una sola parte del equipamiento. Yo puedo tener todo el set Sacred +Reflect pero solo refleja el 5% del daño recibido. Si alguien se anima a testearlo por si cuenta para que vea de que hablo y puede aportar un dato genial. Muchas gracias

Offline Nexus #17 on: August 18, 2018, 12:31:17 AM

  • *
  • Rank: Puto amo
  • Posts: 265
  • Gracias recibida: 209
Bueno estuve probando y excelente, pero he notado que ahora los personajes hacen dmg en rojo normalmente cuando deberia ser amarillo, a veces el dmg critico tambien se ve rojo, es normal?

Offline Keko #18 on: November 05, 2018, 02:20:33 PM

  • *
  • Rank: Destacado
  • Posts: 84
  • Gracias recibida: 1
Bueno estuve probando y excelente, pero he notado que ahora los personajes hacen dmg en rojo normalmente cuando deberia ser amarillo, a veces el dmg critico tambien se ve rojo, es normal?

Me pasa lo mismo, se arregla el stuck pero cuando pegas a los bichos salen dmgs en rojo a veces, esto solo pasa en el GS Normal, ya que en el GSCS no salen daños en rojo, por lo cual debe haber un conflicto por algún otro lado
« Ultima edicion: November 05, 2018, 02:53:49 PM by Keko »

 

Related Topics

  Subject / Started by Replies Last post
50 Replies
6076 Views
Last post November 16, 2018, 05:03:03 AM
by SkullDs
6 Replies
802 Views
Last post September 29, 2017, 08:11:26 AM
by Marote
6 Replies
960 Views
Last post June 30, 2017, 05:34:22 PM
by hardpower
13 Replies
1125 Views
Last post September 04, 2018, 08:14:56 PM
by ZabiinoOo
7 Replies
449 Views
Last post November 08, 2018, 05:35:02 PM
by Alexander