Skip to content

Commit

Permalink
improved auto-head?
Browse files Browse the repository at this point in the history
  • Loading branch information
nullifiedcat committed Mar 1, 2017
1 parent ef9c4bb commit c7f4987
Show file tree
Hide file tree
Showing 3 changed files with 46 additions and 40 deletions.
6 changes: 2 additions & 4 deletions src/entitycache.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -9,10 +9,7 @@
#include "sdk.h"

#include <time.h>

#if ENTITY_CACHE_PROFILER == true
CatVar* g_vEntityCacheProfiling = 0;
#endif
#include "profiler.h"

CachedEntity::CachedEntity() {
m_pEntity = nullptr;
Expand Down Expand Up @@ -157,6 +154,7 @@ void CachedEntity::Update(int idx) {
}

bool CachedEntity::IsVisible() {
PROF_SECTION(CE_IsVisible);
if (m_bVisCheckComplete) return m_bAnyHitboxVisible;

bool vischeck0 = false;
Expand Down
73 changes: 39 additions & 34 deletions src/hacks/Aimbot.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -192,25 +192,6 @@ void Aimbot::ProcessUserCmd(CUserCmd* cmd) {
m_bHeadOnly = false;

m_iPreferredHitbox = this->v_eHitbox->GetInt();
if (v_eHitboxMode->GetInt() == 0) {
int ci = g_pLocalPlayer->weapon()->m_iClassID;
if (ci == g_pClassID->CTFSniperRifle ||
ci == g_pClassID->CTFSniperRifleDecap) {
m_bHeadOnly = CanHeadshot();
} else if (ci == g_pClassID->CTFCompoundBow) {
m_bHeadOnly = true;
} else if (ci == g_pClassID->CTFRevolver) {
m_bHeadOnly = IsAmbassador(g_pLocalPlayer->weapon());
} else if (ci == g_pClassID->CTFRocketLauncher ||
ci == g_pClassID->CTFRocketLauncher_AirStrike ||
ci == g_pClassID->CTFRocketLauncher_DirectHit ||
ci == g_pClassID->CTFRocketLauncher_Mortar) {
m_iPreferredHitbox = hitbox_t::foot_L;
} else {
m_iPreferredHitbox = hitbox_t::pelvis;
}
}

if (g_pLocalPlayer->weapon()->m_iClassID == g_pClassID->CTFGrapplingHook) return;

m_bProjectileMode = (GetProjectileData(g_pLocalPlayer->weapon(), m_flProjSpeed, m_flProjGravity));
Expand Down Expand Up @@ -316,11 +297,39 @@ void Aimbot::ProcessUserCmd(CUserCmd* cmd) {
if (this->v_bSilent->GetBool()) g_pLocalPlayer->bUseSilentAngles = true;
return;
}
// FIXME move
int ClosestHitbox(CachedEntity* target) {
int closest = -1;
float closest_fov = 256;
for (int i = 0; i < target->m_pHitboxCache->GetNumHitboxes(); i++) {
float fov = GetFov(g_pLocalPlayer->v_OrigViewangles, g_pLocalPlayer->v_Eye, target->m_pHitboxCache->GetHitbox(i)->center);
if (fov < closest_fov || closest == -1) {
closest = i;
closest_fov = fov;
}
}
return closest;
}

int Aimbot::BestHitbox(CachedEntity* target, int preferred) {
switch (v_eHitboxMode->GetInt()) {
case 0: { // AUTO-HEAD
if (m_bHeadOnly) return hitbox_t::head;
int ci = g_pLocalPlayer->weapon()->m_iClassID;
if (ci == g_pClassID->CTFSniperRifle ||
ci == g_pClassID->CTFSniperRifleDecap) {
m_bHeadOnly = CanHeadshot();
} else if (ci == g_pClassID->CTFCompoundBow) {
m_bHeadOnly = true;
} else if (ci == g_pClassID->CTFRevolver) {
m_bHeadOnly = IsAmbassador(g_pLocalPlayer->weapon());
} else if (ci == g_pClassID->CTFRocketLauncher ||
ci == g_pClassID->CTFRocketLauncher_AirStrike ||
ci == g_pClassID->CTFRocketLauncher_DirectHit ||
ci == g_pClassID->CTFRocketLauncher_Mortar) {
preferred = hitbox_t::foot_L;
} else {
preferred = hitbox_t::pelvis;
}
int flags = CE_INT(target, netvar.iFlags);
bool ground = (flags & (1 << 0));
if (!ground) {
Expand All @@ -330,31 +339,27 @@ int Aimbot::BestHitbox(CachedEntity* target, int preferred) {
}
}
}
if (LOCAL_W->m_iClassID == g_pClassID->CTFSniperRifle || LOCAL_W->m_iClassID == g_pClassID->CTFSniperRifleDecap) {
float cdmg = CE_FLOAT(LOCAL_W, netvar.flChargedDamage);
if (CanHeadshot() && cdmg > target->m_iHealth) {
preferred = ClosestHitbox(target);
m_bHeadOnly = false;
}
}
if (m_bHeadOnly) return hitbox_t::head;
if (target->m_pHitboxCache->VisibilityCheck(preferred)) return preferred;
for (int i = m_bProjectileMode ? 1 : 0; i < target->m_pHitboxCache->GetNumHitboxes(); i++) {
if (target->m_pHitboxCache->VisibilityCheck(i)) return i;
}
} break;
case 1: { // AUTO-CLOSEST
int closest = -1;
float closest_fov = 256;
for (int i = 0; i < target->m_pHitboxCache->GetNumHitboxes(); i++) {
float fov = GetFov(g_pLocalPlayer->v_OrigViewangles, g_pLocalPlayer->v_Eye, target->m_pHitboxCache->GetHitbox(i)->center);
if (fov < closest_fov || closest == -1) {
closest = i;
closest_fov = fov;
}
}
return closest;
return ClosestHitbox(target);
} break;
case 2: { // STATIC
return v_eHitbox->GetInt();;
} break;
}
return -1;


return -1;
}

int Aimbot::ShouldTarget(CachedEntity* entity) {
Expand Down Expand Up @@ -384,7 +389,7 @@ int Aimbot::ShouldTarget(CachedEntity* entity) {
if (GetRelation(entity) == relation::FRIEND) return 11;
Vector resultAim;
int hitbox = BestHitbox(entity, m_iPreferredHitbox);
if (m_bHeadOnly && hitbox) return 12;
//if (m_bHeadOnly && hitbox) return 12;
if (m_bProjectileMode) {
if (v_bProjPredFOV->GetBool()) {
if (v_bProjPredVisibility->GetBool()) {
Expand Down
7 changes: 5 additions & 2 deletions src/helpers.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@
#include "common.h"
#include "hooks.h"
#include "sdk.h"
#include "profiler.h"

#include <pwd.h>
#include <sys/mman.h>
Expand Down Expand Up @@ -323,8 +324,10 @@ bool IsEntityVectorVisible(CachedEntity* entity, Vector endpos) {
Ray_t ray;
trace::g_pFilterDefault->SetSelf(RAW_ENT(g_pLocalPlayer->entity));
ray.Init(g_pLocalPlayer->v_Eye, endpos);
interfaces::trace->TraceRay(ray, MASK_SHOT_HULL, trace::g_pFilterDefault, &trace_object);
//logging::Info("%.2f expected %s got %s", trace_object.fraction, RAW_ENT(entity)->GetClientClass()->GetName(), trace_object.m_pEnt ? ((IClientEntity*)trace_object.m_pEnt)->GetClientClass()->GetName() : "NULL");
{
PROF_SECTION(IEVV_TraceRay);
interfaces::trace->TraceRay(ray, MASK_SHOT, trace::g_pFilterDefault, &trace_object);
}
return (trace_object.fraction >= 0.99f || (((IClientEntity*)trace_object.m_pEnt)) == RAW_ENT(entity));
}

Expand Down

0 comments on commit c7f4987

Please sign in to comment.