Fix issues with master update and staticize default filters

This commit is contained in:
BenCat07 2020-05-12 22:09:44 +02:00
parent 3ae111912c
commit a61290188b
4 changed files with 22 additions and 24 deletions

View File

@ -97,8 +97,8 @@ public:
void updateDatagram();
void resetData(int);
bool isGoodTick(BacktrackData &);
bool defaultTickFilter(CachedEntity *, BacktrackData);
bool defaultEntFilter(CachedEntity *);
static bool defaultTickFilter(CachedEntity *, BacktrackData);
static bool defaultEntFilter(CachedEntity *);
// Various functions for getting backtrack ticks
std::vector<BacktrackData> getGoodTicks(int);

View File

@ -275,34 +275,26 @@ bool shouldMeleeCrit()
{
if (!melee || g_pLocalPlayer->weapon_mode != weapon_melee)
return false;
namespace bt = hacks::shared::backtrack;
if (bt::isBacktrackEnabled)
if (hacks::tf2::backtrack::backtrack.isBacktrackEnabled)
{
int target = bt::iBestTarget;
// Closest tick for melee (default filter carry)
auto closest_tick = hacks::tf2::backtrack::backtrack.getClosestTick(LOCAL_E->m_vecOrigin(), hacks::tf2::backtrack::backtrack.defaultEntFilter, hacks::tf2::backtrack::backtrack.defaultTickFilter);
// Valid backtrack target
if (target > 1)
if (closest_tick)
{
// Closest tick for melee
int besttick = bt::BestTick;
// Out of range, don't crit
if (bt::headPositions[target][besttick].entorigin.DistTo(LOCAL_E->m_vecOrigin()) >= re::C_TFWeaponBaseMelee::GetSwingRange(RAW_ENT(LOCAL_W)) + 150.0f)
{
if ((*closest_tick).second.m_vecOrigin.DistTo(LOCAL_E->m_vecOrigin()) >= re::C_TFWeaponBaseMelee::GetSwingRange(RAW_ENT(LOCAL_W)) + 150.0f)
return false;
}
}
else
{
return false;
}
}
// Normal check, get closest entity and check distance
else
{
auto ent = getClosestEntity(LOCAL_E->m_vecOrigin());
if (!ent || ent->m_flDistance() >= re::C_TFWeaponBaseMelee::GetSwingRange(RAW_ENT(LOCAL_W)) + 150.0f)
{
return false;
}
}
return true;
}

View File

@ -23,7 +23,7 @@ int prevent = -1;
static Timer previous_entity_delay{};
// TODO: Refactor this jank
std::pair<CachedEntity *, Vector> FindBestEnt(bool teammate, bool Predict, bool zcheck, bool fov_check, float range)
std::pair<CachedEntity *, Vector> FindBestEnt(bool teammate, bool Predict, bool zcheck, bool demoknight_mode, float range)
{
CachedEntity *bestent = nullptr;
float bestscr = FLT_MAX;
@ -49,19 +49,22 @@ std::pair<CachedEntity *, Vector> FindBestEnt(bool teammate, bool Predict, bool
target = ProjectilePrediction(ent, 1, sandwich_speed, grav, PlayerGravityMod(ent));
else
target = ent->hitboxes.GetHitbox(1)->center;
if (!IsEntityVectorVisible(ent, target))
if (!hacks::tf2::backtrack::backtrack.isBacktrackEnabled && !IsEntityVectorVisible(ent, target))
continue;
if (zcheck && (ent->m_vecOrigin().z - LOCAL_E->m_vecOrigin().z) > 200.0f)
continue;
float scr = ent->m_flDistance();
if (hacks::tf2::backtrack::backtrack.isBacktrackEnabled && demoknight_mode)
{
auto data = hacks::tf2::backtrack::backtrack.getClosestEntTick(ent, LOCAL_E->m_vecOrigin(), std::bind(&hacks::tf2::backtrack::Backtrack::defaultTickFilter, &hacks::tf2::backtrack::backtrack, std::placeholders::_1, std::placeholders::_2));
auto data = hacks::tf2::backtrack::backtrack.getClosestEntTick(ent, LOCAL_E->m_vecOrigin(), hacks::tf2::backtrack::Backtrack::defaultTickFilter);
// No entity
if (!data)
scr = FLT_MAX;
else
scr = (*data).m_vecOrigin.DistTo(LOCAL_E->m_vecOrigin());
{
target = (*data).m_vecOrigin;
scr = (*data).m_vecOrigin.DistTo(LOCAL_E->m_vecOrigin());
}
}
// Demoknight
if (demoknight_mode)
@ -104,19 +107,22 @@ std::pair<CachedEntity *, Vector> FindBestEnt(bool teammate, bool Predict, bool
target = ProjectilePrediction(ent, 1, sandwich_speed, grav, PlayerGravityMod(ent));
else
target = ent->hitboxes.GetHitbox(1)->center;
if (!IsEntityVectorVisible(ent, target))
if (!hacks::tf2::backtrack::backtrack.isBacktrackEnabled && !IsEntityVectorVisible(ent, target))
continue;
if (zcheck && (ent->m_vecOrigin().z - LOCAL_E->m_vecOrigin().z) > 200.0f)
continue;
float scr = ent->m_flDistance();
if (hacks::tf2::backtrack::backtrack.isBacktrackEnabled && demoknight_mode)
{
auto data = hacks::tf2::backtrack::backtrack.getClosestEntTick(ent, LOCAL_E->m_vecOrigin(), std::bind(&hacks::tf2::backtrack::Backtrack::defaultTickFilter, &hacks::tf2::backtrack::backtrack, std::placeholders::_1, std::placeholders::_2));
auto data = hacks::tf2::backtrack::backtrack.getClosestEntTick(ent, LOCAL_E->m_vecOrigin(), hacks::tf2::backtrack::Backtrack::defaultTickFilter);
// No entity
if (!data)
scr = FLT_MAX;
else
scr = (*data).m_vecOrigin.DistTo(LOCAL_E->m_vecOrigin());
{
target = (*data).m_vecOrigin;
scr = (*data).m_vecOrigin.DistTo(LOCAL_E->m_vecOrigin());
}
}
// Demoknight
if (demoknight_mode)
@ -125,7 +131,7 @@ std::pair<CachedEntity *, Vector> FindBestEnt(bool teammate, bool Predict, bool
continue;
scr = GetFov(g_pLocalPlayer->v_OrigViewangles, g_pLocalPlayer->v_Eye, ent->m_vecOrigin());
// Don't turn too harshly
if (scr >= 140.0f)
if (scr >= 90.0f)
continue;
}
if (g_pPlayerResource->GetClass(ent) == tf_medic)

View File

@ -115,7 +115,7 @@ void CreateMove()
forward = forward * EffectiveTargetingRange() + g_pLocalPlayer->v_Eye;
// Call closest tick with our Tick filter func
auto closest_data = hacks::tf2::backtrack::backtrack.getClosestTick(g_pLocalPlayer->v_Eye, std::bind(&hacks::tf2::backtrack::Backtrack::defaultEntFilter, &hacks::tf2::backtrack::backtrack, std::placeholders::_1), tick_filter);
auto closest_data = hacks::tf2::backtrack::backtrack.getClosestTick(g_pLocalPlayer->v_Eye, hacks::tf2::backtrack::backtrack.defaultEntFilter, tick_filter);
// No results, try to grab a building
if (!closest_data)