Jump to content

Recommended Posts

  • 4 weeks later...
Posted

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;
}

 

Posted
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.

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...

Important Information

This site uses cookies to enhance your browsing experience and provide relevant content. By continuing to browse, you agree to our We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. and Terms of Use. For more information on how we protect your data, please check our Privacy Policy.