diff --git a/src/hacks/Aimbot.cpp b/src/hacks/Aimbot.cpp index 07302359..09d0cf6d 100644 --- a/src/hacks/Aimbot.cpp +++ b/src/hacks/Aimbot.cpp @@ -430,8 +430,26 @@ bool IsTargetStateGood(CachedEntity *entity) // Distance if (EffectiveTargetingRange()) { - if (entity->m_flDistance() > EffectiveTargetingRange()) - return false; + if (g_pLocalPlayer->weapon_mode != weapon_melee) + { + if (entity->m_flDistance() > EffectiveTargetingRange()) + return false; + } + else + { + float swingrange = re::C_TFWeaponBaseMelee::GetSwingRange(RAW_ENT(LOCAL_W)); + int hb = BestHitbox(entity); + if (hb == -1) + return false; + Vector newangle = GetAimAtAngles(g_pLocalPlayer->v_Eye, entity->hitboxes.GetHitbox(hb)->center); + trace_t trace; + Ray_t ray; + trace::filter_default.SetSelf(RAW_ENT(g_pLocalPlayer->entity)); + ray.Init(g_pLocalPlayer->v_Eye, GetForwardVector(g_pLocalPlayer->v_Eye, newangle, swingrange)); + g_ITrace->TraceRay(ray, MASK_SHOT_HULL, &trace::filter_default, &trace); + if ((IClientEntity *) trace.m_pEnt != RAW_ENT(entity)) + return false; + } } // Rage only check if (rageonly) diff --git a/src/helpers.cpp b/src/helpers.cpp index 0a6f0dd2..e8aeadcb 100644 --- a/src/helpers.cpp +++ b/src/helpers.cpp @@ -893,6 +893,8 @@ bool VisCheckEntFromEntVector(Vector startVector, CachedEntity *startEnt, Cached Vector GetBuildingPosition(CachedEntity *ent) { + if (ent->hitboxes.GetHitbox(0)) + return ent->hitboxes.GetHitbox(0)->center; Vector res; res = ent->m_vecOrigin(); int classid = ent->m_iClassID();