Autosapper
This commit is contained in:
parent
c773bc3494
commit
186d6dc3b2
@ -71,6 +71,7 @@ weaponmode GetWeaponMode();
|
||||
|
||||
void FixMovement(CUserCmd &cmd, Vector &viewangles);
|
||||
void VectorAngles(Vector &forward, Vector &angles);
|
||||
void AngleVectors2(const QAngle &angles, Vector *forward);
|
||||
extern std::mutex trace_lock;
|
||||
bool IsEntityVisible(CachedEntity *entity, int hb);
|
||||
bool IsEntityVectorVisible(CachedEntity *entity, Vector endpos);
|
||||
@ -124,6 +125,14 @@ void WhatIAmLookingAt(int *result_eindex, Vector *result_pos);
|
||||
|
||||
void Patch(void *address, void *patch, size_t length);
|
||||
|
||||
inline Vector GetAimAtAngles(Vector origin, Vector target)
|
||||
{
|
||||
Vector angles, tr;
|
||||
tr = (target - origin);
|
||||
VectorAngles(tr, angles);
|
||||
fClampAngle(angles);
|
||||
return angles;
|
||||
}
|
||||
void AimAt(Vector origin, Vector target, CUserCmd *cmd);
|
||||
void AimAtHitbox(CachedEntity *ent, int hitbox, CUserCmd *cmd);
|
||||
bool IsProjectileCrit(CachedEntity *ent);
|
||||
|
@ -1276,7 +1276,7 @@ float EffectiveTargetingRange()
|
||||
if (GetWeaponMode() == weapon_melee)
|
||||
return (float) re::C_TFWeaponBaseMelee::GetSwingRange(RAW_ENT(LOCAL_W));
|
||||
if (g_pLocalPlayer->weapon()->m_iClassID() == CL_CLASS(CTFFlameThrower))
|
||||
return 185.0f; // Pyros only have so much untill their flames hit
|
||||
return 185.0f; // Pyros only have so much until their flames hit
|
||||
|
||||
return (float) max_range;
|
||||
}
|
||||
|
@ -19,17 +19,6 @@ namespace backtrack = hacks::shared::backtrack;
|
||||
static settings::Bool enable{ "autobackstab.enable", "0" };
|
||||
static settings::Bool silent{ "autobackstab.silent", "1" };
|
||||
void testingFunc();
|
||||
void AngleVectors2(const QAngle &angles, Vector *forward)
|
||||
{
|
||||
float sp, sy, cp, cy;
|
||||
|
||||
SinCos(DEG2RAD(angles[YAW]), &sy, &cy);
|
||||
SinCos(DEG2RAD(angles[PITCH]), &sp, &cp);
|
||||
|
||||
forward->x = cp * cy;
|
||||
forward->y = cp * sy;
|
||||
forward->z = -sp;
|
||||
}
|
||||
|
||||
// Not required anymore, keeping for future reference
|
||||
Vector rotateVector(Vector center, float radianAngle, Vector p)
|
||||
|
@ -3,13 +3,15 @@
|
||||
//
|
||||
|
||||
#include "common.hpp"
|
||||
#include <settings/Bool.hpp>
|
||||
#include <settings/Int.hpp>
|
||||
#include <settings/Key.hpp>
|
||||
#include <PlayerTools.hpp>
|
||||
static settings::Bool enable{ "sandwichaim.enable", "false" };
|
||||
static settings::Button aimkey{ "sandwichaim.aimkey", "<null>" };
|
||||
static settings::Int aimkey_mode{ "sandwichaim.aimkey-mode", "0" };
|
||||
#include "settings/Bool.hpp"
|
||||
#include "settings/Int.hpp"
|
||||
#include "settings/Key.hpp"
|
||||
#include "PlayerTools.hpp"
|
||||
#include "hacks/Trigger.hpp"
|
||||
|
||||
static settings::Bool sandwichaim_enabled{ "sandwichaim.enable", "false" };
|
||||
static settings::Button sandwichaim_aimkey{ "sandwichaim.aimkey", "<null>" };
|
||||
static settings::Int sandwichaim_aimkey_mode{ "sandwichaim.aimkey-mode", "0" };
|
||||
|
||||
float sandwich_speed = 350.0f;
|
||||
float grav = 0.25f;
|
||||
@ -156,20 +158,20 @@ void DoSlowAim(Vector &input_angle)
|
||||
|
||||
static HookedFunction
|
||||
SandwichAim(HookedFunctions_types::HF_CreateMove, "SandwichAim", 1, []() {
|
||||
if (!*enable)
|
||||
if (!*sandwichaim_enabled)
|
||||
return;
|
||||
if (CE_BAD(LOCAL_E) || !LOCAL_E->m_bAlivePlayer())
|
||||
return;
|
||||
if (aimkey)
|
||||
if (sandwichaim_aimkey)
|
||||
{
|
||||
switch (*aimkey_mode)
|
||||
switch (*sandwichaim_aimkey_mode)
|
||||
{
|
||||
case 1:
|
||||
if (!aimkey.isKeyDown())
|
||||
if (!sandwichaim_aimkey.isKeyDown())
|
||||
return;
|
||||
break;
|
||||
case 2:
|
||||
if (aimkey.isKeyDown())
|
||||
if (sandwichaim_aimkey.isKeyDown())
|
||||
return;
|
||||
break;
|
||||
default:
|
||||
@ -225,10 +227,11 @@ static HookedFunction
|
||||
charge_aimbotted = true;
|
||||
}
|
||||
});
|
||||
|
||||
static settings::Bool charge_control{ "chargecontrol.enable", "false" };
|
||||
static settings::Float charge_float{ "chargecontrol.strength", "3.0f" };
|
||||
static HookedFunction
|
||||
ChargeControl(HookedFunctions_types::HF_CreateMove, "ChargeControl", 1,
|
||||
ChargeControl(HookedFunctions_types::HF_CreateMove, "chargecontrol", 1,
|
||||
[]() {
|
||||
if (!*charge_control || charge_aimbotted)
|
||||
return;
|
||||
@ -243,3 +246,44 @@ static HookedFunction
|
||||
offset = -*charge_float;
|
||||
current_user_cmd->viewangles.y += offset;
|
||||
});
|
||||
|
||||
static settings::Bool autosapper_enabled( "autosapper.enabled", "false");
|
||||
static settings::Bool autosapper_silent( "autosapper.silent", "true");
|
||||
|
||||
static HookedFunction SapperAimbot(HF_CreateMove, "sapperaimbot", 5, [](){
|
||||
if (!autosapper_enabled)
|
||||
return;
|
||||
if (CE_BAD(LOCAL_E) || CE_BAD(LOCAL_W) || !g_pLocalPlayer->holding_sapper)
|
||||
return;
|
||||
|
||||
CachedEntity *target = nullptr;
|
||||
float fov = FLT_MAX;
|
||||
float range = re::C_TFWeaponBaseMelee::GetSwingRange(RAW_ENT(LOCAL_W));
|
||||
for (int i = 0; i < entity_cache::max; i++)
|
||||
{
|
||||
CachedEntity *ent = ENTITY(i);
|
||||
if (CE_BAD(ent))
|
||||
continue;
|
||||
if (ent->m_Type() != ENTITY_BUILDING)
|
||||
continue;
|
||||
if (!ent->m_bEnemy())
|
||||
continue;
|
||||
if (CE_BYTE(ent, netvar.m_bHasSapper))
|
||||
continue;
|
||||
if (GetBuildingPosition(ent).DistTo(g_pLocalPlayer->v_Eye) > range)
|
||||
continue;
|
||||
float new_fov = GetFov(g_pLocalPlayer->v_OrigViewangles, g_pLocalPlayer->v_Eye, GetBuildingPosition(ent));
|
||||
if (fov <= new_fov)
|
||||
continue;
|
||||
|
||||
fov = new_fov;
|
||||
target = ent;
|
||||
}
|
||||
if (target)
|
||||
{
|
||||
AimAt(g_pLocalPlayer->v_Eye, GetBuildingPosition(target), current_user_cmd);
|
||||
if (autosapper_silent)
|
||||
g_pLocalPlayer->bUseSilentAngles = true;
|
||||
current_user_cmd->buttons |= IN_ATTACK;
|
||||
}
|
||||
});
|
||||
|
@ -600,6 +600,19 @@ void VectorAngles(Vector &forward, Vector &angles)
|
||||
angles[2] = 0;
|
||||
}
|
||||
|
||||
// Get forward vector
|
||||
void AngleVectors2(const QAngle &angles, Vector *forward)
|
||||
{
|
||||
float sp, sy, cp, cy;
|
||||
|
||||
SinCos(DEG2RAD(angles[YAW]), &sy, &cy);
|
||||
SinCos(DEG2RAD(angles[PITCH]), &sp, &cp);
|
||||
|
||||
forward->x = cp * cy;
|
||||
forward->y = cp * sy;
|
||||
forward->z = -sp;
|
||||
}
|
||||
|
||||
char GetUpperChar(ButtonCode_t button)
|
||||
{
|
||||
switch (button)
|
||||
@ -1282,11 +1295,7 @@ Vector QAngleToVector(QAngle in)
|
||||
|
||||
void AimAt(Vector origin, Vector target, CUserCmd *cmd)
|
||||
{
|
||||
Vector angles, tr;
|
||||
tr = (target - origin);
|
||||
VectorAngles(tr, angles);
|
||||
fClampAngle(angles);
|
||||
cmd->viewangles = angles;
|
||||
cmd->viewangles = GetAimAtAngles(origin, target);
|
||||
}
|
||||
|
||||
void AimAtHitbox(CachedEntity *ent, int hitbox, CUserCmd *cmd)
|
||||
|
Reference in New Issue
Block a user