Autobackstab Rotate
This commit is contained in:
parent
d8806bde44
commit
a66cd9de86
@ -11,14 +11,13 @@ namespace hacks::tf2::autobackstab
|
|||||||
{
|
{
|
||||||
static CatVar enabled(CV_SWITCH, "autobackstab", "0", "Auto Backstab",
|
static CatVar enabled(CV_SWITCH, "autobackstab", "0", "Auto Backstab",
|
||||||
"Does not depend on triggerbot!");
|
"Does not depend on triggerbot!");
|
||||||
|
static CatVar silent(CV_SWITCH, "autobackstab_silent", "1", "Silent");
|
||||||
|
|
||||||
bool canBackstab(CachedEntity *tar)
|
bool canBackstab(CachedEntity *tar, float angleY)
|
||||||
{
|
{
|
||||||
float _viewangles =
|
float _viewangles = NET_VECTOR(RAW_ENT(tar), netvar.m_angEyeAngles).y;
|
||||||
NET_VECTOR(RAW_ENT(tar), netvar.m_angEyeAngles).y;
|
float viewangles = (_viewangles > 180) ? _viewangles - 360 : _viewangles;
|
||||||
float viewangles =
|
float scr = abs(angleY - viewangles);
|
||||||
(_viewangles > 180) ? _viewangles - 360 : _viewangles;
|
|
||||||
float scr = abs(g_pLocalPlayer->v_OrigViewangles.y - viewangles);
|
|
||||||
return (scr <= 90.0f);
|
return (scr <= 90.0f);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -30,6 +29,7 @@ void CreateMove()
|
|||||||
return;
|
return;
|
||||||
if (g_pLocalPlayer->weapon()->m_iClassID() != CL_CLASS(CTFKnife))
|
if (g_pLocalPlayer->weapon()->m_iClassID() != CL_CLASS(CTFKnife))
|
||||||
return;
|
return;
|
||||||
|
// Get melee range of knife
|
||||||
int meleeRange = re::C_TFWeaponBaseMelee::GetSwingRange(RAW_ENT(LOCAL_W));
|
int meleeRange = re::C_TFWeaponBaseMelee::GetSwingRange(RAW_ENT(LOCAL_W));
|
||||||
CachedEntity *besttarget = nullptr;
|
CachedEntity *besttarget = nullptr;
|
||||||
for (int i = 0; i < g_IEngine->GetMaxClients(); i++)
|
for (int i = 0; i < g_IEngine->GetMaxClients(); i++)
|
||||||
@ -40,18 +40,15 @@ void CreateMove()
|
|||||||
if (target == LOCAL_E || target->m_iTeam() == LOCAL_E->m_iTeam() ||
|
if (target == LOCAL_E || target->m_iTeam() == LOCAL_E->m_iTeam() ||
|
||||||
!target->m_bAlivePlayer() || target->m_Type() != ENTITY_PLAYER)
|
!target->m_bAlivePlayer() || target->m_Type() != ENTITY_PLAYER)
|
||||||
continue;
|
continue;
|
||||||
if (target
|
if (target->hitboxes.GetHitbox(spine_3)->center.DistTo(
|
||||||
->m_vecOrigin() /*target->hitboxes.GetHitbox(spine_3)->center*/
|
g_pLocalPlayer->v_Eye) <= meleeRange)
|
||||||
.DistTo(g_pLocalPlayer->v_Eye) <= meleeRange)
|
|
||||||
{
|
{
|
||||||
if (CE_GOOD(besttarget))
|
if (CE_GOOD(besttarget))
|
||||||
{
|
{
|
||||||
if (target
|
if (target->hitboxes.GetHitbox(spine_3)->center.DistTo(
|
||||||
->m_vecOrigin() /*target->hitboxes.GetHitbox(spine_3)->center*/
|
g_pLocalPlayer->v_Eye) >
|
||||||
.DistTo(g_pLocalPlayer->v_Eye) >
|
besttarget->hitboxes.GetHitbox(spine_3)->center.DistTo(
|
||||||
target
|
g_pLocalPlayer->v_Eye))
|
||||||
->m_vecOrigin() /* besttarget->hitboxes.GetHitbox(spine_3)->center*/
|
|
||||||
.DistTo(g_pLocalPlayer->v_Eye))
|
|
||||||
besttarget = target;
|
besttarget = target;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@ -60,10 +57,29 @@ void CreateMove()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (CE_GOOD(besttarget) && canBackstab(besttarget))
|
if (CE_GOOD(besttarget))
|
||||||
{
|
{
|
||||||
|
if (canBackstab(besttarget, g_pLocalPlayer->v_OrigViewangles.y))
|
||||||
|
{
|
||||||
g_pUserCmd->buttons |= IN_ATTACK;
|
g_pUserCmd->buttons |= IN_ATTACK;
|
||||||
besttarget = nullptr;
|
besttarget = nullptr;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
for (float i = -180.0f; i < 180.0f; i += 30.0f)
|
||||||
|
{
|
||||||
|
if (canBackstab(besttarget, i))
|
||||||
|
{
|
||||||
|
g_pUserCmd->viewangles.y = i;
|
||||||
|
g_pUserCmd->buttons |= IN_ATTACK;
|
||||||
|
besttarget = nullptr;
|
||||||
|
if (silent)
|
||||||
|
g_pLocalPlayer->bUseSilentAngles = true;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user