Вопрос Aim не работает за стеной

  • Автор темы Автор темы yovimi
  • Дата начала Дата начала
Забаненный
Забаненный
Статус
Оффлайн
Регистрация
5 Сен 2020
Сообщения
993
Реакции
275
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
У меня тут проблемка и я не понимаю в чём или в аиме или в автоволе ,но он не работает за стеной я хуй знает почему
helpp
C++:
Expand Collapse Copy
#include "aimbot.hpp"
#include "../helpers/math.hpp"
#include "../helpers/input.hpp"
#include "../menu/menu.hpp"
#include "../config.hpp"
#include "autowall.hpp"
#include "weapon_groups.hpp"
#include <cmath>
#include <random>
#include "../helpers/utils.hpp"

//--------------------------------------------------------------------------------
bool Aimbot::IsRcs() {
    return g_LocalPlayer->m_iShotsFired() >= settings.rcs_start + 1;
}
//--------------------------------------------------------------------------------
float GetRealDistanceFOV(float distance, QAngle angle, CUserCmd* cmd)
{
    Vector aimingAt;
    Math::AngleVectors(cmd->viewangles, aimingAt);
    aimingAt *= distance;
    Vector aimAt;
    Math::AngleVectors(angle, aimAt);
    aimAt *= distance;
    return aimingAt.DistTo(aimAt) / 5;
}
//--------------------------------------------------------------------------------
float Aimbot::GetFovToPlayer(QAngle viewAngle, QAngle aimAngle)
{
    QAngle delta = aimAngle - viewAngle;
    Math::FixAngles(delta);
    return sqrtf(powf(delta.pitch, 360.0f) + powf(delta.yaw, 360.0f));
}
//--------------------------------------------------------------------------------
bool Aimbot::IsLineGoesThroughSmoke(Vector vStartPos, Vector vEndPos) {
    static auto LineGoesThroughSmokeFn = (bool(*)(Vector vStartPos, Vector vEndPos))Utils::PatternScan(GetModuleHandleA("client.dll"), "55 8B EC 83 EC 08 8B 15 ? ? ? ? 0F 57 C0");
    return LineGoesThroughSmokeFn(vStartPos, vEndPos);
}
//--------------------------------------------------------------------------------
bool Aimbot::IsEnabled(CUserCmd* pCmd) {

    if (!g_Options.aimbot_enable || !g_EngineClient->IsConnected() || !g_LocalPlayer || !g_LocalPlayer->IsAlive()) {
        return false;
    }

    auto pWeapon = g_LocalPlayer->m_hActiveWeapon();
    if (!pWeapon || !pWeapon->GetCSWeaponData() || !pWeapon->IsGun()) {
        return false;
    }

    if ((pWeapon->m_Item().m_iItemDefinitionIndex() == WEAPON_AWP || pWeapon->m_Item().m_iItemDefinitionIndex() == WEAPON_SSG08) && settings.only_in_zoom && !g_LocalPlayer->m_bIsScoped()) {
        return false;
    }

    if (!pWeapon->HasBullets() || pWeapon->IsReloading() || !pWeapon->CanFire() || Menu::Get().IsVisible()) {
        return false;
    }

    if (g_Options.aimbot_on_key && g_Options.aimbot_key_pressed) return true;

    return pCmd->buttons & IN_ATTACK;
}
//bool Aimbot::IsEnabled(CUserCmd* pCmd)
//{
//    if (!g_EngineClient->IsConnected() || !g_LocalPlayer || !g_LocalPlayer->IsAlive()) {
//        return false;
//    }
//    auto pWeapon = g_LocalPlayer->m_hActiveWeapon();
//    if (!pWeapon || !(pWeapon->IsSniper() || pWeapon->IsPistol() || pWeapon->IsRifle())) {
//        return false;
//    }
//
//    if (!g_Options.aimbot_enable || !(pCmd->buttons & IN_ATTACK)) {
//        return false;
//    }
//    if ((pWeapon->m_Item().m_iItemDefinitionIndex() == WEAPON_AWP || pWeapon->m_Item().m_iItemDefinitionIndex() == WEAPON_SSG08) && settings.only_in_zoom && !g_LocalPlayer->m_bIsScoped()) {
//        return false;
//    }
//    if (settings.fov == 0 && settings.silent_fov == 0 && !settings.rcs) {
//        return false;
//    }
//    if (!pWeapon->HasBullets() || pWeapon->IsReloading()) {
//        return false;
//    }
//    return true;
//}
//--------------------------------------------------------------------------------
float Aimbot::GetSmooth()
{
    float smooth = IsRcs() && settings.rcs_smooth_enabled ? settings.rcs_smooth : settings.smooth;
    if (settings.humanize) {
        smooth += RandomFloat(-0, 0);
    }
    return smooth;
}
//--------------------------------------------------------------------------------
void Aimbot::Smooth(QAngle currentAngle, QAngle aimAngle, QAngle& angle)
{
    if (GetSmooth() <= 0) {
        return;
    }
    Vector vAimAngle;
    Math::AngleVectors(aimAngle, vAimAngle);
    Vector vCurrentAngle;
    Math::AngleVectors(currentAngle, vCurrentAngle);
    Vector delta = vAimAngle - vCurrentAngle;
    Vector smoothed = vCurrentAngle + delta / GetSmooth();
    Math::VectorAngles(smoothed, angle);
}
//--------------------------------------------------------------------------------
void Aimbot::RCS(QAngle& angle, C_BasePlayer* target)
{
    if (!settings.rcs || !IsRcs()) {
        return;
    }
    if (settings.rcs_x == 0 && settings.rcs_y == 0) {
        return;
    }
    if (target) {
        QAngle punch = g_LocalPlayer->m_aimPunchAngle();
        angle.pitch -= punch.pitch * (settings.rcs_x / 50.f);
        angle.yaw -= punch.yaw * (settings.rcs_y / 50.f);
    }
    else if (settings.rcs_type == 0) {
        QAngle NewPunch = { CurrentPunch.pitch - RCSLastPunch.pitch, CurrentPunch.yaw - RCSLastPunch.yaw, 0 };
        angle.pitch -= NewPunch.pitch * (settings.rcs_x / 50.f);
        angle.yaw -= NewPunch.yaw * (settings.rcs_y / 50.f);
    }
    Math::FixAngles(angle);
}
//--------------------------------------------------------------------------------
float Aimbot::GetFov()
{
    if (IsRcs() && settings.rcs && settings.rcs_fov_enabled) return settings.rcs_fov;
    if (!silent_enabled) return settings.fov;
    return settings.silent_fov > settings.fov ? settings.silent_fov : settings.fov;
}
//--------------------------------------------------------------------------------
//C_BasePlayer* Aimbot::GetClosestPlayer(CUserCmd* cmd, int& bestBone)(
//    QAngle ang;
//    Vector eVecTarget;
//    Vector pVecTarget = g_LocalPlayer->GetEyePos();
//    if (target && !kill_delay && settings.kill_delay > 0 && target->IsNotTarget()) {
//        target = NULL;
//        shot_delay = false;
//        kill_delay = true;
//        kill_delay_time = (int)GetTickCount() + settings.kill_delay;
//    }
//    if (kill_delay) {
//        if (kill_delay_time <= (int)GetTickCount()) kill_delay = false;
//        else return NULL;
//    }
//    C_BasePlayer* player;
//    target = NULL;
//    int bestHealth = 100.f;
//    float bestFov = 9999.f;
//    float bestDamage = 0.f;
//    float bestBoneFov = 9999.f;
//    float bestDistance = 9999.f;
//    int health;
//    float fov;
//    float damage;
//    float distance;
//    int fromBone = settings.aim_type == 1 ? 0 : settings.hitbox;
//    int toBone = settings.aim_type == 1 ? 7 : settings.hitbox;
//    for (int i = 1; i < g_EngineClient->GetMaxClients(); ++i)
//    {
//        damage = 0.f;
//        player = (C_BasePlayer*)g_EntityList->GetClientEntity(i);
//        if (player->IsNotTarget()) {
//            continue;
//        }
//        if (!g_Options.aimbot_deathmatch && player->m_iTeamNum() == g_LocalPlayer->m_iTeamNum()) {
//            continue;
//        }
//        for (int bone = fromBone; bone <= toBone; bone++) {
//            eVecTarget = player->GetHitboxPos(bone);
//            Math::VectorAngles(eVecTarget - pVecTarget, ang);
//            Math::FixAngles(ang);
//            distance = pVecTarget.DistTo(eVecTarget);
//            if (settings.fov_type == 1)
//                fov = GetRealDistanceFOV(distance, ang, cmd);
//            else
//                fov = GetFovToPlayer(cmd->viewangles, ang);
//            if (fov > GetFov()) {
//                continue;
//            }
//            if (!g_LocalPlayer->CanSeePlayer(player, eVecTarget)) {
//                if (!settings.autowall) {
//                    continue;
//                }
//                damage = Autowall::GetDamage(eVecTarget);
//                if (damage < settings.min_damage) {
//                    continue;
//                }
//            }
//            if ((settings.priority == 1 || settings.priority == 2) && damage == 0.f) {
//                damage = Autowall::GetDamage(eVecTarget);
//            }
//            health = player->m_iHealth() - damage;
//            if (settings.check_smoke && IsLineGoesThroughSmoke(pVecTarget, eVecTarget)) {
//                continue;
//            }
//            if (settings.aim_type == 1 && bestBoneFov < fov) {
//                continue;
//            }
//            bestBoneFov = fov;
//            if (
//                (settings.priority == 0 && bestFov > fov) ||
//                (settings.priority == 1 && bestHealth > health) ||
//                (settings.priority == 2 && bestDamage < damage) ||
//                (settings.priority == 3 && distance < bestDistance)
//                ) {
//                bestBone = bone;
//                target = player;
//                bestFov = fov;
//                bestHealth = health;
//                bestDamage = damage;
//                bestDistance = distance;
//            }
//        }
//    }
//    return target;
//}
C_BasePlayer* Aimbot::GetClosestPlayer(CUserCmd* cmd, int& bestBone) {
    QAngle ang;
    Vector eVecTarget;
    Vector pVecTarget = g_LocalPlayer->GetEyePos();

    if (target && !kill_delay && settings.kill_delay > 0 && target->IsNotTarget()) {
        target = NULL;
        shot_delay = false;
        kill_delay = true;
        kill_delay_time = (int)GetTickCount() + settings.kill_delay;
    }
    if (kill_delay) {
        if (kill_delay_time <= (int)GetTickCount()) kill_delay = false;
        else return NULL;
    }

    C_BasePlayer* player;
    target = NULL;
    aim_position = Vector{ 0, 0, 0 };
    int bestHealth = 100.f;
    float bestFov = 9999.f;
    float bestDamage = 0.f;
    float bestBoneFov = 9999.f;
    float bestDistance = 9999.f;
    int health;
    float fov = 9999.f;
    float damage;
    float distance = 9999.f;
    int fromBone = settings.aim_type == 1 ? 0 : settings.hitbox;
    int toBone = settings.aim_type == 1 ? 7 : settings.hitbox;
    QAngle backtrack_ang;
    Vector backtrack_bestpos;
    Vector backtrack_eVecTarget;
    Vector backtrack_pVecTarget = g_LocalPlayer->GetEyePos();
    float backtrack_fov = 100.f;
    float beastbacktrack_fov = 999999;

    for (int i = 1; i < g_EngineClient->GetMaxClients(); ++i) {
        damage = 100.f;
        player = (C_BasePlayer*)g_EntityList->GetClientEntity(i);
        if (player->IsNotTarget()) {
            continue;
        }
        if (!g_Options.aimbot_deathmatch && player->m_iTeamNum() == g_LocalPlayer->m_iTeamNum()) {
            continue;
        }
        for (int bone = fromBone; bone <= toBone; bone++) {
            eVecTarget = player->GetHitboxPos(bone);
            Math::VectorAngles(eVecTarget - pVecTarget, ang);
            Math::FixAngles(ang);
            distance = pVecTarget.DistTo(eVecTarget);
            if (settings.fov_type == 1)
                fov = GetRealDistanceFOV(distance, ang, cmd);
            else
                fov = GetFovToPlayer(cmd->viewangles + RCSLastPunch, ang);

            bool backtrack_enable = g_Backtrack->data.count(player->EntIndex()) > 0 && settings.enable_backtrack && settings.backtrack_ticks > 0;
            Vector local_bb_bone_pos = Vector{ 0,0,0 };

            if (backtrack_enable && !settings.autowall && fov > GetFov()) {
                auto& data = g_Backtrack->data.at(player->EntIndex());
                if (data.size() > 0) {
                    Vector best_bb_bone_pos = Vector{ 1,0,1 };

                    for (auto& record : data) {
                        auto hitbox_head = record.hitboxset->GetHitbox(bone);
                        auto hitbox_center = (hitbox_head->bbmin + hitbox_head->bbmax) * 0.5f;

                        Math::VectorTransform(hitbox_center, record.boneMatrix[hitbox_head->bone], best_bb_bone_pos);

                        backtrack_eVecTarget = best_bb_bone_pos;
                        Math::VectorAngles(backtrack_eVecTarget - backtrack_pVecTarget, backtrack_ang);
                        Math::FixAngles(backtrack_ang);

                        backtrack_fov = GetFovToPlayer(cmd->viewangles + RCSLastPunch, backtrack_ang);

                        if (backtrack_fov > (settings.silent_fov > settings.fov ? settings.silent_fov : settings.fov))
                            continue;

                        if (beastbacktrack_fov > backtrack_fov) {
                            beastbacktrack_fov = backtrack_fov;
                            local_bb_bone_pos = best_bb_bone_pos;
                        }
                    }

                    if (g_LocalPlayer->CanSeePlayered(player, local_bb_bone_pos) > 0.9f)
                        backtrack_bestpos = local_bb_bone_pos;
                }
            }

            if (fov > GetFov() && (backtrack_bestpos == Vector{ 0,0,0 } || !backtrack_enable || !backtrack_bestpos.IsValid()))
                continue;

            if (!g_LocalPlayer->CanSeePlayer(player, eVecTarget)) {

                if (!settings.autowall)
                    continue;

                damage = Autowall::GetDamage(eVecTarget);
                if (damage < settings.min_damage)
                    continue;

            }
            if ((settings.priority == 1 || settings.priority == 2) && damage == 0.f)
                damage = Autowall::GetDamage(eVecTarget);

            health = player->m_iHealth() - damage;
            if (settings.check_smoke && IsLineGoesThroughSmoke(pVecTarget, eVecTarget))
                continue;

            if (settings.aim_type == 1 && bestBoneFov < fov) {
                continue;
            }
            bestBoneFov = fov;

            if (backtrack_bestpos != Vector{ 0,0,0 } && backtrack_bestpos.IsValid()) {
                aim_position = backtrack_bestpos;
            }

            if (
                (settings.priority == 0 && bestFov > fov) ||
                (settings.priority == 1 && bestHealth > health) ||
                (settings.priority == 2 && bestDamage < damage) ||
                (settings.priority == 3 && distance < bestDistance)
                ) {
                bestBone = bone;
                target = player;
                bestFov = fov;
                bestHealth = health;
                bestDamage = damage;
                bestDistance = distance;
            }


        }
    }
    return target;
}

//--------------------------------------------------------------------------------
bool Aimbot::IsNotSilent(float fov)
{
    return IsRcs() || !silent_enabled || (silent_enabled && fov > settings.silent_fov);
}
//--------------------------------------------------------------------------------
//void Aimbot::OnMove(CUserCmd* pCmd, bool* bSendPacket) {
//    if (!g_LocalPlayer || !g_EngineClient->IsInGame() || !g_LocalPlayer->IsAlive() || !g_EngineClient->IsConnected()) return;
//
//    auto weapon = g_LocalPlayer->m_hActiveWeapon().Get();
//    if (!weapon)
//        return;
//
//    auto weapon_data = weapon->GetCSWeaponData();
//    if (!weapon_data)
//        return;
//   
//    short index = weapon->m_Item().m_iItemDefinitionIndex();
//    settings = *g_CustomWeaponGroups->GetSettings(index);
//
//    if (!IsEnabled(pCmd)) {
//        if (settings.rcs_type == 0) {
//            auto pWeapon = g_LocalPlayer->m_hActiveWeapon();
//            if (pWeapon && pWeapon->GetCSWeaponData() && (pWeapon->IsSniper() || pWeapon->IsPistol() || pWeapon->IsRifle())) {
//                RCS(pCmd->viewangles, target, false);
//                Math::FixAngles(pCmd->viewangles);
//                g_EngineClient->SetViewAngles(&pCmd->viewangles);
//            }
//        }
//        else {
//            RCSLastPunch = { 0, 0, 0 };
//        }
//
//        is_delayed = false;
//        shot_delay = false;
//        kill_delay = false;
//        silent_enabled = (settings.silent || settings.psilent) && settings.silent_fov > 0;
//        target = NULL;
//        return;
//    }
//    QAngle oldAngle;
//    g_EngineClient->GetViewAngles(&oldAngle);
//    RandomSeed(pCmd->command_number);
//
//    bool should_do_rcs = false;
//    QAngle angles = pCmd->viewangles;
//    QAngle current = angles;
//    float fov = 180.f;
//    int bestBone = -1;
//    if (!(settings.flash_check && g_LocalPlayer->IsFlashed())) {
//        C_BasePlayer* player = GetClosestPlayer(pCmd, bestBone);
//        if (player) {
//            Vector eVecTarget;
//            eVecTarget = target->GetHitboxPos(bestBone);
//            if (aim_position != Vector{ 0,0,0 })
//                eVecTarget = aim_position;
//            angles = Math::CalcAngle(g_LocalPlayer->GetEyePos(), eVecTarget);
//
//            if (settings.smooth > 2 && settings.humanize) {
//                float dist = Math::NormalizeYaw(angles.yaw - oldAngle.yaw);
//                if (dist > 180.0f) dist = 360.0f - dist;
//                eVecTarget += Vector(0, 0, settings.curve * dist);
//
//                angles = Math::CalcAngle(g_LocalPlayer->GetEyePos(), eVecTarget);
//            }
//
//            Math::FixAngles(angles);
//
//            if (settings.fov_type == 1)
//                fov = GetRealDistanceFOV(g_LocalPlayer->GetEyePos().DistTo(eVecTarget), angles, pCmd->viewangles);
//            else
//                fov = GetFovToPlayer(pCmd->viewangles, angles);
//
//            should_do_rcs = true;
//
//            if (!settings.silent && !is_delayed && !shot_delay && settings.shot_delay > 0 && !settings.psilent) {
//                is_delayed = true;
//                shot_delay = true;
//                shot_delay_time = GetTickCount() + settings.shot_delay;
//            }
//
//            if (shot_delay && shot_delay_time <= GetTickCount()) {
//                shot_delay = false;
//            }
//
//            if (shot_delay) {
//                pCmd->buttons &= ~IN_ATTACK;
//            }
//
//            if (settings.autostop) {
//                Vector Velocity = g_LocalPlayer->m_vecVelocity();
//
//                if (Velocity.Length2D() != 0) {
//
//                    static float Speed = 450.f;
//
//                    QAngle Direction;
//                    QAngle RealView;
//                    Math::VectorAngles(Velocity, Direction);
//                    g_EngineClient->GetViewAngles(&RealView);
//                    Direction.yaw = RealView.yaw - Direction.yaw;
//
//                    Vector Forward;
//                    Math::AngleVectors(Direction, Forward);
//                    Vector NegativeDirection = Forward * -Speed;
//
//                    pCmd->forwardmove = NegativeDirection.x;
//                    pCmd->sidemove = NegativeDirection.y;
//                }
//            }
//        }
//    }
//
//    if (IsNotSilent(fov) && (should_do_rcs || settings.rcs_type == 0)) {
//        RCS(angles, target, should_do_rcs);
//    }
//    if (target && IsNotSilent(fov)) {
//        Smooth(current, angles, angles);
//    }
//
//
//    Math::FixAngles(angles);
//    pCmd->viewangles = angles;
//
//    if (IsNotSilent(fov)) {
//        g_EngineClient->SetViewAngles(&angles);
//    }
//}
//
//    silent_enabled = false;
//    if (settings.autopistol) {
//        const auto activeWeapon = g_LocalPlayer->m_hActiveWeapon();
//        if (activeWeapon && pCmd->buttons & IN_ATTACK && activeWeapon->CanFire()) {
//            static bool fire = false;
//            if (fire)
//                pCmd->buttons &= ~IN_ATTACK;
//            else
//                pCmd->buttons |= IN_ATTACK;
//            fire = !fire;
//        }
//    }
//}

void Aimbot::OnMove(CUserCmd* pCmd)
{
    if (!g_LocalPlayer || !g_EngineClient->IsInGame() || !g_LocalPlayer->IsAlive() || !g_EngineClient->IsConnected()) return;
    
    auto weapon = g_LocalPlayer->m_hActiveWeapon().Get();
    if (!weapon)
        return;

    short index = weapon->m_Item().m_iItemDefinitionIndex();
    settings = *g_CustomWeaponGroups->GetSettings(index);

    if (!IsEnabled(pCmd)) {
        RCSLastPunch = { 0, 0, 0 };
        is_delayed = false;
        shot_delay = false;
        kill_delay = false;
        silent_enabled = settings.silent && settings.silent_fov > 0;
        target = NULL;
        return;
    }
    QAngle angles = pCmd->viewangles;
    QAngle current = angles;
    float fov = 180.f;
    if (!(settings.check_flash && g_LocalPlayer->IsFlashed())) {
        int bestBone = -1;
        if (GetClosestPlayer(pCmd, bestBone)) {
            Math::VectorAngles(target->GetHitboxPos(bestBone) - g_LocalPlayer->GetEyePos(), angles);
            Math::FixAngles(angles);
            if (settings.fov_type == 1)
                fov = GetRealDistanceFOV(g_LocalPlayer->GetEyePos().DistTo(target->GetHitboxPos(bestBone)), angles, pCmd);
            else
                fov = GetFovToPlayer(pCmd->viewangles, angles);
            if (!settings.silent && !is_delayed && !shot_delay && settings.shot_delay > 0) {
                is_delayed = true;
                shot_delay = true;
                shot_delay_time = GetTickCount() + settings.shot_delay;
            }
            if (shot_delay && shot_delay_time <= GetTickCount()) {
                shot_delay = false;
            }
            if (shot_delay) {
                pCmd->buttons &= ~IN_ATTACK;
            }
        }
    }
    CurrentPunch = g_LocalPlayer->m_aimPunchAngle();
    if (IsNotSilent(fov)) {
        RCS(angles, target);
    }
    RCSLastPunch = CurrentPunch;
    if (target && IsNotSilent(fov)) {
        Smooth(current, angles, angles);
    }
    Math::FixAngles(angles);
    pCmd->viewangles = angles;
    if (IsNotSilent(fov)) {
        g_EngineClient->SetViewAngles(&angles);
    }

    silent_enabled = false;
    if (g_LocalPlayer->m_hActiveWeapon()->IsPistol() && settings.autopistol) {
        float server_time = g_LocalPlayer->m_nTickBase() * g_GlobalVars->interval_per_tick;
        float next_shot = g_LocalPlayer->m_hActiveWeapon()->m_flNextPrimaryAttack() - server_time;
        if (next_shot > 0) {
            pCmd->buttons &= ~IN_ATTACK;
        }
    }
}

void Aimbot::SetupValues() {
    g_Config->PushItem(&g_Options.aimbot_enable, "aim", "enable", g_Options.aimbot_enable);
    g_Config->PushItem(&g_Options.aimbot_deathmatch, "aim", "deathmatch", g_Options.aimbot_deathmatch);
    g_Config->PushItem(&g_Options.aimbot_on_key, "aim", "on_key", g_Options.aimbot_on_key);
    g_Config->PushItem(&g_Options.aimbot_key, "aim", "key", g_Options.aimbot_key);
}

Aimbot g_Aimbot;
 
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Назад
Сверху Снизу