[C++] Fix Mob Direction

Aici poți găsi sisteme complete, verificate și recomandate de echipa 4Metin.
Conectat
Avatar utilizator
RazVan
Administrator
Administrator
Mesaje: 970
Membru din: Mie Oct 19, 2022 5:25 pm
Localitate: München
Status: Activ
Multumiri acordate: 12
Multumiri primite: 63
Contact:

[C++] Fix Mob Direction

Mesaj de RazVan »

Mobii si bossii vin drept la tine cand ii atragi.
Video:
https://gyazo.com/03080e487ecf998c744c1ff7787454b2

Cod: Selectaţi tot

/// CommonDefines.h
#define METGUIDE_ENABLE_MOB_DIRECT_CHASE					// Direct mob chase on players; no flank or stale path

==================================================================================================


/// char.cpp

// Cauta:
	if (pkChr->IsState(pkChr->m_stateMove) &&
		GetMobBattleType() != BATTLE_TYPE_RANGE &&
		GetMobBattleType() != BATTLE_TYPE_MAGIC &&
		false == IsPet())

// Modifica:
	if (pkChr->IsState(pkChr->m_stateMove) &&
		GetMobBattleType() != BATTLE_TYPE_RANGE &&
		GetMobBattleType() != BATTLE_TYPE_MAGIC &&
		false == IsPet()
#ifdef METGUIDE_ENABLE_MOB_DIRECT_CHASE
		&& !pkChr->IsPC()
#endif
		)


// Cauta:
	if (IsChangeAttackPosition(pkChr) && GetMobRank() < MOB_RANK_BOSS)

// Modifica:
#ifdef METGUIDE_ENABLE_MOB_DIRECT_CHASE
	if (IsChangeAttackPosition(pkChr) && GetMobRank() < MOB_RANK_BOSS && !pkChr->IsPC())
#else
	if (IsChangeAttackPosition(pkChr) && GetMobRank() < MOB_RANK_BOSS)
#endif

==================================================================================================


/// char_state.cpp

// Cauta:
	else
	{
		// XXX AGGRO
		if (IsMonster() && GetVictim())
		{
			LPCHARACTER victim = GetVictim();


// Adauga:
#ifdef METGUIDE_ENABLE_MOB_DIRECT_CHASE
			if (victim->IsPC())
			{
				const int iStaleDest = DISTANCE_APPROX(
					m_posDest.x - victim->GetX(),
					m_posDest.y - victim->GetY());

				if (iStaleDest > 400)
				{
					if (__CHARACTER_GotoNearTarget(this, victim))
						return;
				}
			}
#endif

==================================================================================================


/// char_battle.cpp

// Cauta:
void CHARACTER::ChangeVictimByAggro(int iNewAggro, LPCHARACTER pNewVictim)
{
	if (get_dword_time() - m_dwLastVictimSetTime < 3000)
		return;

// Adauga:
#ifdef METGUIDE_ENABLE_MOB_DIRECT_CHASE
	if (GetVictim() && GetVictim()->IsPC() && pNewVictim && pNewVictim->IsPC() && pNewVictim != GetVictim())
		return;
#endif
Credite MetGuide
Imagine
Scrie răspuns