Merge branch 'master' of https://github.com/nullworks/cathook
This commit is contained in:
commit
5e0492058b
@ -103,69 +103,41 @@ static void doBacktrackStab()
|
|||||||
CachedEntity *ent;
|
CachedEntity *ent;
|
||||||
if (hacks::shared::backtrack::iBestTarget < 1)
|
if (hacks::shared::backtrack::iBestTarget < 1)
|
||||||
return;
|
return;
|
||||||
|
// Get the best ent decided by backtrack (no reason to do work twice)
|
||||||
ent = ENTITY(hacks::shared::backtrack::iBestTarget);
|
ent = ENTITY(hacks::shared::backtrack::iBestTarget);
|
||||||
if (!ent->m_bEnemy() || !player_tools::shouldTarget(ent))
|
if (!ent->m_bEnemy() || !player_tools::shouldTarget(ent))
|
||||||
return;
|
return;
|
||||||
|
// Get the ent's backtrack ticks
|
||||||
auto &btd = hacks::shared::backtrack::headPositions[ent->m_IDX];
|
auto &btd = hacks::shared::backtrack::headPositions[ent->m_IDX];
|
||||||
Vector newangle = g_pLocalPlayer->v_OrigViewangles;
|
|
||||||
std::vector<float> yangles;
|
|
||||||
float best_scr = FLT_MAX;
|
|
||||||
hacks::shared::backtrack::BacktrackData *best_tick;
|
|
||||||
for (int ii = 0; ii < 66; ii++)
|
|
||||||
{
|
|
||||||
std::vector<float> yangles_tmp;
|
|
||||||
auto &i = btd[ii];
|
|
||||||
|
|
||||||
Vector distcheck = i.entorigin;
|
for (int i = 0; i < 66; i++)
|
||||||
|
{
|
||||||
|
auto &btp = btd[i];
|
||||||
|
// Check if the backtrack positions are valid
|
||||||
|
if (!hacks::shared::backtrack::ValidTick(btp, ent))
|
||||||
|
continue;
|
||||||
|
Vector distcheck = btp.entorigin;
|
||||||
distcheck.z = g_pLocalPlayer->v_Eye.z;
|
distcheck.z = g_pLocalPlayer->v_Eye.z;
|
||||||
if (distcheck.DistTo(g_pLocalPlayer->v_Eye) < best_scr && distcheck.DistTo(g_pLocalPlayer->v_Eye) > 20.0f)
|
if (distcheck.DistTo(g_pLocalPlayer->v_Eye) < 20.0f)
|
||||||
{
|
|
||||||
for (newangle.y = -180.0f; newangle.y < 180.0f; newangle.y += 5.0f)
|
|
||||||
{
|
|
||||||
if (!hacks::shared::backtrack::ValidTick(i, ent))
|
|
||||||
continue;
|
continue;
|
||||||
if (!angleCheck(ent, i.entorigin, newangle))
|
// Get and calculate an angle to use to backstab the ent
|
||||||
|
Vector newangle = GetAimAtAngles(g_pLocalPlayer->v_Eye, btp.hitboxes.at(spine_1).center);
|
||||||
|
if (!angleCheck(ent, btp.entorigin, newangle))
|
||||||
continue;
|
continue;
|
||||||
|
Vector &min = btp.collidable.min;
|
||||||
Vector &min = i.collidable.min;
|
Vector &max = btp.collidable.max;
|
||||||
Vector &max = i.collidable.max;
|
|
||||||
|
|
||||||
// Get the min and max for the hitbox
|
|
||||||
Vector minz(fminf(min.x, max.x), fminf(min.y, max.y), fminf(min.z, max.z));
|
|
||||||
Vector maxz(fmaxf(min.x, max.x), fmaxf(min.y, max.y), fmaxf(min.z, max.z));
|
|
||||||
|
|
||||||
// Shrink the hitbox here
|
|
||||||
Vector size = maxz - minz;
|
|
||||||
Vector smod = { size.x * 0.20f, size.y * 0.20f, 0 };
|
|
||||||
|
|
||||||
// Save the changes to the vectors
|
|
||||||
minz += smod;
|
|
||||||
maxz -= smod;
|
|
||||||
maxz.z += 20.0f;
|
|
||||||
|
|
||||||
Vector hit;
|
Vector hit;
|
||||||
if (hacks::shared::triggerbot::CheckLineBox(minz, maxz, g_pLocalPlayer->v_Eye, GetForwardVector(g_pLocalPlayer->v_Eye, newangle, swingrange), hit))
|
if (hacks::shared::triggerbot::CheckLineBox(min, max, g_pLocalPlayer->v_Eye, GetForwardVector(g_pLocalPlayer->v_Eye, newangle, swingrange), hit))
|
||||||
yangles_tmp.push_back(newangle.y);
|
|
||||||
}
|
|
||||||
if (!yangles_tmp.empty())
|
|
||||||
{
|
{
|
||||||
yangles.clear();
|
current_user_cmd->tick_count = btp.tickcount;
|
||||||
best_scr = distcheck.DistTo(g_pLocalPlayer->v_Eye);
|
|
||||||
best_tick = &i;
|
|
||||||
yangles = yangles_tmp;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (!yangles.empty() && best_tick)
|
|
||||||
{
|
|
||||||
newangle.y = yangles.at(std::floor((float) yangles.size() / 2));
|
|
||||||
current_user_cmd->tick_count = best_tick->tickcount;
|
|
||||||
current_user_cmd->viewangles = newangle;
|
current_user_cmd->viewangles = newangle;
|
||||||
current_user_cmd->buttons |= IN_ATTACK;
|
current_user_cmd->buttons |= IN_ATTACK;
|
||||||
g_pLocalPlayer->bUseSilentAngles = true;
|
g_pLocalPlayer->bUseSilentAngles = true;
|
||||||
}
|
|
||||||
if (!*bSendPackets)
|
if (!*bSendPackets)
|
||||||
*bSendPackets = true;
|
*bSendPackets = true;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void doLegitBacktrackStab() // lol
|
static void doLegitBacktrackStab() // lol
|
||||||
|
@ -375,7 +375,7 @@ void initThread()
|
|||||||
lvldir.append("/.steam/steam/steamapps/common/Team Fortress 2/tf/");
|
lvldir.append("/.steam/steam/steamapps/common/Team Fortress 2/tf/");
|
||||||
lvldir.append(lvlname);
|
lvldir.append(lvlname);
|
||||||
lvldir.append(".nav");
|
lvldir.append(".nav");
|
||||||
logging::Info(format("Pathing: Nav File location: ", lvldir).c_str());
|
logging::Info("Pathing: Nav File location: %s", lvldir.c_str());
|
||||||
|
|
||||||
navfile = std::make_unique<CNavFile>(lvldir.c_str());
|
navfile = std::make_unique<CNavFile>(lvldir.c_str());
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user