DrPolitica 354 Report post Posted September 22, 2021 src Cliente/Gamelib/ActorInstanceBattle.cpp Buscar: Quote void CActorInstance::__HitGreate(CActorInstance& rVictim) { Agregar abajo: Quote if (IS_HUGE_RACE(rVictim.GetRace())) { return; } Una pequeña contribución a la comunidad. 2 [D]ELARO ✓ and Kronixer™ reacted to this Quote Share this post Link to post Share on other sites
CHELO 683 Report post Posted September 25, 2021 Que hace esto disculpa la pregunta Quote Share this post Link to post Share on other sites
Enju 38 Report post Posted September 25, 2021 hace 1 hora, CHELO dijo: Que hace esto disculpa la pregunta Que no empujes a los bosses cuando los golpeas. Quote Share this post Link to post Share on other sites
MiGueLiT0 1,745 Report post Posted October 20, 2021 Buena Quote Share this post Link to post Share on other sites
[D]ELARO ✓ 1,663 Report post Posted October 22, 2021 Este cambio de código lo que hace es que a ti no te empujen los jefes, pero si buscan la linea que voy a dejar abajo ahí ustedes agregan 1 a 1 los jefes que no podrás empujar al tu atacarlos, por ejemplo normalmente viene el dragón beran y yo agregue el jefe orco para testear, probado por mi ya no empujas al jefe que agregues en cada case. Esto se busca en el mismo ActorInstanceBattle.cpp bool IS_HUGE_RACE(unsigned int vnum) { switch (vnum) { case 691: // Jefe Orco case 2493: // Beran return true; } return false; } Quote Share this post Link to post Share on other sites
caanmasu 716 Report post Posted October 22, 2021 void CActorInstance::__HitGreate(CActorInstance& rVictim) { Cuando un actor del juego (puerta, metin, personaje, mob, construccion, etc) recibe un "golpe bien dado" Llámese golpe bien dado a los golpes básicos que generan empuje (golpes de caballo o el último golpe de un combo). El parámetro que llega es el actor que recibe el golpe. if (IS_HUGE_RACE(rVictim.GetRace())) { return; } IS_HUGE_RACE es una función que sirve como una bandera, que clasifica a los monstruos como "raza enorme", llámese mobs en el mob_proto que tienen rank 4 (jefe) o mayor. Aquí pregunta que si el actor que recibe daño es un jefe, entonces no ejecutará las siguientes líneas de un "golpe bien dado". PD: no es necesario poner los vnum de los jefes en este bloque porque IS_HUGE_RACE ya los clasifica. Si un personaje jugador recibe el golpe, por supuesto que va a ser empujado porque un personaje no es un jefe mob. Y los jefes no empujan con golpes básicos. Esto no funciona para habilidades. Si se fijan en los enum: enum EHitType { HIT_TYPE_NONE, HIT_TYPE_GREAT, HIT_TYPE_GOOD, }; Solo existen dos tipos de golpe. Ese none es que es no identificado y pues dará error. Los otros dos son el golpe bueno (normal) y el "golpe bien dado" (que empuja). Ya si van a poner lo de que no empuje cuando pegue el jefe una skill, creo que el enum es este: enum EAttackType { ATTACK_TYPE_SPLASH, ATTACK_TYPE_SNIPE, }; No estoy muy seguro si splash es aplastar y snipe es como "tipo francotirador" :v supongo que golpes lejanos Sería probar entrando a la función: void CActorInstance::__ProcessDataAttackSuccess y comentar la línea: __PushCircle(rVictim); para ver si vuelve a empujar. Porque la función es así: void CActorInstance::__PushCircle(CActorInstance & rVictim) { const TPixelPosition& c_rkPPosAtk=NEW_GetAtkPixelPositionRef(); D3DXVECTOR3 v3SrcPos(c_rkPPosAtk.x, -c_rkPPosAtk.y, c_rkPPosAtk.z); const D3DXVECTOR3& c_rv3SrcPos = v3SrcPos; const D3DXVECTOR3& c_rv3DstPos = rVictim.GetPosition(); D3DXVECTOR3 v3Direction; v3Direction.x = c_rv3DstPos.x - c_rv3SrcPos.x; v3Direction.y = c_rv3DstPos.y - c_rv3SrcPos.y; v3Direction.z = 0.0f; D3DXVec3Normalize(&v3Direction, &v3Direction); rVictim.__SetFallingDirection(v3Direction.x, v3Direction.y); } Me parece que esto hace el personaje se desplace al realizar el golpe y de una vez lo derriba. No sé si esté equivocado en alguna parte, me puse a investigar un rato. 1 [D]ELARO ✓ reacted to this Quote Share this post Link to post Share on other sites