Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include "Anti-aim.hpp"
- #include "../../menu/menu.hpp"
- #include "../../sdk/interfaces/engineTrace.hpp"
- CAntiAim2 g_AntiAim2;
- bool Swtich = false;
- enum MovingAAType {
- Standing = 0,
- Moving,
- Air
- };
- int ReturnMovementType() {
- if (Globals::localPlayer->flags() & FL_ONGROUND)
- {
- if (Globals::localPlayer->velocity().Length2D() < 32)
- {
- return MovingAAType::Standing;
- }
- else if (Globals::localPlayer->velocity().Length2D() > 32)
- {
- return MovingAAType::Moving;
- }
- }
- else
- {
- return MovingAAType::Air;
- }
- }
- void FreeStanding()
- {
- static float FinalAngle;
- bool bside1 = false;
- bool bside2 = false;
- bool autowalld = false;
- for (int i = 0; i <= g_Interfaces->globalVars->maxClients; ++i)
- {
- CBaseEntity* pPlayerEntity = g_Interfaces->clientEntity->GetClientEntity(i);
- if (!pPlayerEntity
- || !pPlayerEntity->alive()
- || pPlayerEntity->IsDormant()
- || pPlayerEntity == Globals::localPlayer
- || pPlayerEntity->team() == Globals::localPlayer->team())
- continue;
- float angToLocal = g_Math.calcAngle(Globals::localPlayer->GetOrigin(), pPlayerEntity->GetOrigin()).y;
- Vector3 ViewPoint = pPlayerEntity->GetOrigin() + Vector3(0, 0, 90);
- Vector2 Side1 = { (45 * sin(g_Math.GRD_TO_BOG(angToLocal))),(45 * cos(g_Math.GRD_TO_BOG(angToLocal))) };
- Vector2 Side2 = { (45 * sin(g_Math.GRD_TO_BOG(angToLocal + 180))) ,(45 * cos(g_Math.GRD_TO_BOG(angToLocal + 180))) };
- Vector2 Side3 = { (50 * sin(g_Math.GRD_TO_BOG(angToLocal))),(50 * cos(g_Math.GRD_TO_BOG(angToLocal))) };
- Vector2 Side4 = { (50 * sin(g_Math.GRD_TO_BOG(angToLocal + 180))) ,(50 * cos(g_Math.GRD_TO_BOG(angToLocal + 180))) };
- Vector3 Origin = Globals::localPlayer->GetOrigin();
- Vector2 OriginLeftRight[] = { Vector2(Side1.x, Side1.y), Vector2(Side2.x, Side2.y) };
- Vector2 OriginLeftRightLocal[] = { Vector2(Side3.x, Side3.y), Vector2(Side4.x, Side4.y) };
- for (int side = 0; side < 2; side++)
- {
- Vector3 OriginAutowall = { Origin.x + OriginLeftRight[side].x, Origin.y - OriginLeftRight[side].y , Origin.z + 80 };
- Vector3 OriginAutowall2 = { ViewPoint.x + OriginLeftRightLocal[side].x, ViewPoint.y - OriginLeftRightLocal[side].y , ViewPoint.z };
- if (g_Autowall.CanHitFloatingPoint(OriginAutowall, ViewPoint))
- {
- if (side == 0)
- {
- bside1 = true;
- FinalAngle = angToLocal + 90;
- }
- else if (side == 1)
- {
- bside2 = true;
- FinalAngle = angToLocal - 90;
- }
- autowalld = true;
- }
- else
- {
- for (int side222 = 0; side222 < 2; side222++)
- {
- Vector3 OriginAutowall222 = { Origin.x + OriginLeftRight[side222].x, Origin.y - OriginLeftRight[side222].y , Origin.z + 80 };
- if (g_Autowall.CanHitFloatingPoint(OriginAutowall222, OriginAutowall2))
- {
- if (side222 == 0)
- {
- bside1 = true;
- FinalAngle = angToLocal + 90;
- }
- else if (side222 == 1)
- {
- bside2 = true;
- FinalAngle = angToLocal - 90;
- }
- autowalld = true;
- }
- }
- }
- }
- }
- if (!autowalld || (bside1 && bside2)) {
- switch (ReturnMovementType()) {
- case MovingAAType::Standing: {
- switch (config->get_int("aaStandingYaw")) {
- case 1: Globals::oCmd->viewAngles.y += 180; break;
- case 2: Globals::oCmd->viewAngles.y = 0; break;
- case 3: Globals::oCmd->viewAngles.y += g_Interfaces->globalVars->curtime * 3000; break;
- }
- }break;
- case MovingAAType::Moving: {
- switch (config->get_int("aaMovingYaw")) {
- case 1: Globals::oCmd->viewAngles.y += 180; break;
- case 2: Globals::oCmd->viewAngles.y = 0; break;
- case 3: Globals::oCmd->viewAngles.y += g_Interfaces->globalVars->curtime * 3000; break;
- }
- }break;
- case MovingAAType::Air: {
- switch (config->get_int("aaInAirYaw")) {
- case 1: Globals::oCmd->viewAngles.y += 180; break;
- case 2: Globals::oCmd->viewAngles.y = 0; break;
- case 3: Globals::oCmd->viewAngles.y += g_Interfaces->globalVars->curtime * 3000; break;
- }
- }break;
- }
- }
- else
- Globals::oCmd->viewAngles.y = FinalAngle;
- if (config->get_int("jitterAdd"))
- {
- float Offset = config->get_int("jitterAdd");
- Swtich ? Globals::oCmd->viewAngles.y -= Offset : Globals::oCmd->viewAngles.y += Offset;
- }
- }
- //#include "..\..\SDK\IVModelInfo.h"
- mstudiobbox_t* get_hitboxv2(CBaseEntity* entity, int hitbox_index)
- {
- if (entity->IsDormant() || entity->health() <= 0)
- return NULL;
- const auto pModel = entity->GetModel();
- if (!pModel)
- return NULL;
- auto pStudioHdr = g_Interfaces->modelInfo->getStudiomodel(pModel);
- if (!pStudioHdr)
- return NULL;
- auto pSet = pStudioHdr->getHitboxSet(0);
- if (!pSet)
- return NULL;
- if (hitbox_index >= pSet->numhitboxes || hitbox_index < 0)
- return NULL;
- return pSet->getHitbox(hitbox_index);
- }
- Vector3 GetHitboxPositionv2(CBaseEntity* entity, int hitbox_id)
- {
- auto hitbox = get_hitboxv2(entity, hitbox_id);
- if (!hitbox)
- return Vector3(0, 0, 0);
- auto bone_matrix = entity->GetBonesMatrix(hitbox->bone);
- Vector3 bbmin, bbmax;
- g_Math.vectorTransform(hitbox->min, bone_matrix, bbmin);
- g_Math.vectorTransform(hitbox->max, bone_matrix, bbmax);
- return (bbmin + bbmax) * 0.5f;
- }
- float m_bestthreat = 0.f;
- void NormalizeNum(Vector3& vIn, Vector3& vOut)
- {
- float flLen = vIn.Length();
- if (flLen == 0) {
- vOut.Init(0, 0, 1);
- return;
- }
- flLen = 1 / flLen;
- vOut.Init(vIn.x * flLen, vIn.y * flLen, vIn.z * flLen);
- }
- void VectorSubtractv2(const Vector3& a, const Vector3& b, Vector3& c)
- {
- c.x = a.x - b.x;
- c.y = a.y - b.y;
- c.z = a.z - b.z;
- }
- float fov_player(Vector3 ViewOffSet, Vector3 View, CBaseEntity* entity, int hitbox)
- {
- // Anything past 180 degrees is just going to wrap around
- CONST FLOAT MaxDegrees = 180.0f;
- // Get local angles
- Vector3 Angles = View;
- // Get local view / eye position
- Vector3 Origin = ViewOffSet;
- // Create and intiialize vectors for calculations below
- Vector3 Delta(0, 0, 0);
- //Vector Origin(0, 0, 0);
- Vector3 Forward(0, 0, 0);
- // Convert angles to normalized directional forward vector
- g_Math.angleVectors(Angles, &Forward);
- Vector3 AimPos = GetHitboxPositionv2(entity, hitbox); //pvs fix disabled
- Vector3Subtract(AimPos, Origin, Delta);
- //Delta = AimPos - Origin;
- // Normalize our delta vector
- NormalizeNum(Delta, Delta);
- // Get dot product between delta position and directional forward vectors
- FLOAT DotProduct = Forward.Dot(Delta);
- // Time to calculate the field of view
- return (acos(DotProduct) * (MaxDegrees / M_PI));
- }
- int closest_to_crosshair()
- {
- int index = -1;
- float lowest_fov = INT_MAX;
- auto local_player = Globals::localPlayer;
- if (!local_player)
- return -1;
- Vector3 local_position = local_player->vecOrigin() + local_player->viewOffset();
- Vector3 angles;
- g_Interfaces->gameEngine->getViewAngles(angles);
- for (int i = 1; i <= g_Interfaces->globalVars->maxClients; i++)
- {
- auto entity = g_Interfaces->clientEntity->GetClientEntity(i);
- if (!entity || !entity->alive() || entity->team() == local_player->team() || entity->IsDormant() || entity == local_player)
- continue;
- float fov = fov_player(local_position, angles, entity, 0);
- if (fov < lowest_fov)
- {
- lowest_fov = fov;
- index = i;
- }
- }
- return index;
- }
- int closest_to_local_player()
- {
- int index = -1;
- float lowest_distance = INT_MAX;
- auto local_player = Globals::localPlayer;
- if (!local_player)
- return -1;
- Vector3 local_position = local_player->vecOrigin() + local_player->viewOffset();
- Vector3 angles;
- g_Interfaces->gameEngine->getViewAngles(angles);
- for (int i = 1; i <= g_Interfaces->globalVars->maxClients; i++)
- {
- auto entity = g_Interfaces->clientEntity->GetClientEntity(i);
- if (!entity || !entity->alive() || entity->team() == local_player->team() || entity->IsDormant() || entity == local_player)
- continue;
- float distance = g_Math.Distance(Vector2(local_player->GetOrigin().x, local_player->GetOrigin().y), Vector2(entity->GetOrigin().x, entity->GetOrigin().y));
- if (distance < lowest_distance)
- {
- lowest_distance = distance;
- index = i;
- }
- }
- return index;
- }
- int BestTargetByThreat() {
- for (int i = 0; i <= g_Interfaces->globalVars->maxClients; i++)
- {
- auto Entity = g_Interfaces->clientEntity->GetClientEntity(i);
- auto LocalPlayer = Globals::localPlayer;
- if (!Entity || !LocalPlayer || !Entity->alive() || Entity->IsDormant())
- continue;
- m_bestthreat = 0.f;
- float dist = g_Math.Distance(Vector2(LocalPlayer->GetOrigin().x, LocalPlayer->GetOrigin().y), Vector2(Entity->GetOrigin().x, Entity->GetOrigin().y));
- float health = (float)Entity->health();
- float threat = health / dist;
- if (threat > m_bestthreat)
- {
- return Entity->EntIndex();
- }
- return 0;
- }
- }
- void freestand(CUserCmd* cmd)
- {
- auto local_player = Globals::localPlayer;
- if (!local_player)
- return;
- static float last_real;
- bool no_active = true;
- float bestrotation = 0.f;
- float highestthickness = 0.f;
- Vector3 besthead;
- m_bestthreat = 0.f;
- auto leyepos = local_player->vecOrigin() + local_player->viewOffset();
- auto headpos = GetHitboxPositionv2(local_player, 0);
- auto origin = local_player->GetAbsOrigin();
- auto checkWallThickness = [&](CBaseEntity* pPlayer, Vector3 newhead) -> float
- {
- Vector3 endpos1, endpos2;
- Vector3 eyepos = pPlayer->vecOrigin() + pPlayer->viewOffset();
- CTraceFilterSkipTwoEntities filter(pPlayer, local_player);
- C_Trace trace1, trace2;
- g_Interfaces->trace->TraceRay2(C_Ray(newhead, eyepos), mask_shot_brushonly, &filter, &trace1);
- if (trace1.DidHit())
- endpos1 = trace1.end;
- else
- return 0.f;
- g_Interfaces->trace->TraceRay2(C_Ray(eyepos, newhead), mask_shot_brushonly, &filter, &trace2);
- if (trace2.DidHit())
- endpos2 = trace2.end;
- float add = newhead.DistTo(eyepos) - leyepos.DistTo(eyepos) + 3.f;
- return endpos1.DistTo(endpos2) + add / 3;
- };
- int index = -1;
- switch (config->get_int("aaAutoDirType")) {
- case 1: { index = closest_to_crosshair(); } break;
- case 2: { index = closest_to_local_player(); } break;
- }
- static CBaseEntity* entity;
- if (index != -1)
- entity = g_Interfaces->clientEntity->GetClientEntity(index);
- float step = (2 * M_PI) / 18.f; // One PI = half a circle ( for stacker cause low iq :sunglasses: ), 28
- float radius = fabs(Vector3(headpos - origin).Length2D());
- if (index == -1)
- {
- no_active = true;
- }
- else
- {
- for (float rotation = 0; rotation < (M_PI * 2.0); rotation += step)
- {
- Vector3 newhead(radius * cos(rotation) + leyepos.x, radius * sin(rotation) + leyepos.y, leyepos.z);
- float totalthickness = 0.f;
- no_active = false;
- totalthickness += checkWallThickness(entity, newhead);
- if (totalthickness > highestthickness)
- {
- highestthickness = totalthickness;
- bestrotation = rotation;
- besthead = newhead;
- }
- }
- }
- if (no_active)
- switch (ReturnMovementType()) {
- case MovingAAType::Standing: {
- switch (config->get_int("aaStandingYaw")) {
- case 1: Globals::oCmd->viewAngles.y += 180; break;
- case 2: Globals::oCmd->viewAngles.y = 0; break;
- case 3: Globals::oCmd->viewAngles.y += g_Interfaces->globalVars->curtime * 3000; break;
- }
- }break;
- case MovingAAType::Moving: {
- switch (config->get_int("aaMovingYaw")) {
- case 1: Globals::oCmd->viewAngles.y += 180; break;
- case 2: Globals::oCmd->viewAngles.y = 0; break;
- case 3: Globals::oCmd->viewAngles.y += g_Interfaces->globalVars->curtime * 3000; break;
- }
- }break;
- case MovingAAType::Air: {
- switch (config->get_int("aaInAirYaw")) {
- case 1: Globals::oCmd->viewAngles.y += 180; break;
- case 2: Globals::oCmd->viewAngles.y = 0; break;
- case 3: Globals::oCmd->viewAngles.y += g_Interfaces->globalVars->curtime * 3000; break;
- }
- }break;
- }
- else
- cmd->viewAngles.y = RAD2DEG(bestrotation);
- last_real = cmd->viewAngles.y;
- }
- bool Left_AA = false;
- bool Right_AA = false;
- bool Back_AA = false;
- static float next_lby_update_time = 0;
- float get_curtime(CUserCmd* ucmd) {
- auto local_player = Globals::localPlayer;
- if (!local_player)
- return 0;
- int g_tick = 0;
- CUserCmd* g_pLastCmd = nullptr;
- if (!g_pLastCmd || g_pLastCmd->hasbeenPredicted) {
- g_tick = (float)local_player->tickBase();
- }
- else {
- ++g_tick;
- }
- g_pLastCmd = ucmd;
- float curtime = g_tick * g_Interfaces->globalVars->intervalPerTick;
- return curtime;
- }
- bool next_lby_update(const float yaw_to_break, CUserCmd* cmd)
- {
- auto local_player = Globals::localPlayer;
- if (!local_player)
- return false;
- static float next_lby_update_time = 0;
- float curtime = get_curtime(cmd);
- auto animstate = local_player->animState();
- if (!animstate)
- return false;
- if (!(local_player->flags() & FL_ONGROUND))
- return false;
- if (animstate->speed_2d > 0.1)
- next_lby_update_time = curtime + 0.22f;
- if (next_lby_update_time < curtime)
- {
- next_lby_update_time = curtime + 1.1f;
- return true;
- }
- return false;
- }
- bool m_bAutomaticDir = false;
- int m_iAutoDirection = 0;
- int m_iJitter = 0;
- int m_iJitterIteration = 0;
- float m_flCurrentFeetYaw = 0.0f;
- float m_flPreviousFeetYaw = 0.0f;
- void Real()
- {
- //if (!g::bSendPacket && g::pLocalEntity->AnimState() && g_Menu.Config.DesyncAngle)
- //g::pCmd->viewangles.y = g_Math.NormalizeYaw(g::pLocalEntity->AnimState()->m_flGoalFeetYaw + 180.f);
- //else {
- // freestanding soon
- //}
- static bool Swtich2 = false;
- Swtich2 = !Swtich2;
- static float test = 0.f;
- if (Swtich2)
- test += 90.f;
- test = g_Math.normalizeYaw(test);
- if (config->get_int("aaDesync") > 0) {
- Globals::desyncEnabledSpecialChecks = true;
- }
- else {
- Globals::desyncEnabledSpecialChecks = false;
- }
- if (config->get_int("aaDesyncType") == 2 && Globals::localPlayer->animState()) { // balance
- float desync = Globals::localPlayer->calculateDesyncValue();
- float balance = 1.0f;
- int type = 2;
- if (type == 2)
- balance = -1.0f;
- if (g_Interfaces->globalVars->curtime <= next_lby_update(Globals::oCmd->viewAngles.y, Globals::oCmd)) {
- auto net_channel = g_Interfaces->gameEngine->getNetChannel();
- if (!net_channel)
- return;
- if (net_channel->m_nChokedPackets >= 2) {
- Globals::oCmd->viewAngles.y = g_Math.normalizeYaw(Globals::oCmd->viewAngles.y);
- return;
- }
- if (type == 1)
- Globals::oCmd->viewAngles.y -= 100.0f;
- else
- Globals::oCmd->viewAngles.y += (balance * 120.0f);
- }
- else if (type != 1) {
- Globals::oCmd->viewAngles.y -= (desync + 30.0f) * balance;
- }
- }
- if (config->get_int("aaDesyncType") == 3) { //jitter
- int jitter_side = 1;
- Globals::oCmd->viewAngles.y += 180.0f;
- float desync = Globals::localPlayer->calculateDesyncValue();
- float lby_delta = 180.0f - desync + 10.0f;
- float desync_length = 180.0f - lby_delta * 0.5f;
- float jitter = 90.0f * jitter_side;
- if (jitter_side == 1)
- Globals::oCmd->viewAngles.y += desync_length;
- else if (jitter_side == -1)
- Globals::oCmd->viewAngles.y -= desync_length;
- int v19 = 0;
- if (g_Interfaces->globalVars->curtime < g_Interfaces->globalVars->curtime <= next_lby_update(Globals::oCmd->viewAngles.y, Globals::oCmd)) {
- v19 = m_iJitter;
- }
- else {
- m_iJitter = 0;
- }
- int v20 = v19 - 1;
- if (v20) {
- if (v20 == 1) {
- if (jitter_side == 1)
- Globals::oCmd->viewAngles.y += lby_delta;
- else
- Globals::oCmd->viewAngles.y += desync - 190.0f;
- }
- }
- else {
- if (jitter_side == 1)
- Globals::oCmd->viewAngles.y += desync - 190.0;
- else
- Globals::oCmd->viewAngles.y += lby_delta;
- Globals::bSendPacket = true;
- }
- if (++m_iJitter >= 3)
- m_iJitter = 0;
- Globals::oCmd->viewAngles.y = g_Math.normalizeYaw(Globals::oCmd->viewAngles.y);
- }
- if (!Globals::bSendPacket && Globals::localPlayer->animState() && config->get_int("aaDesyncType") > 0) {
- /*if (c_config::get().desync == 1) {
- Globals::oCmd->viewAngles.y = g_Math.normalizeYaw(Globals::realAngle.y + 90 + test);
- }*/
- if (config->get_int("aaDesyncType") == 1) {
- Globals::oCmd->viewAngles.y += Globals::localPlayer->calculateDesyncValue();
- }
- }
- else {
- if (!config->get_bool("aaAutoDir"))
- {
- switch (ReturnMovementType()) {
- case MovingAAType::Standing: {
- switch (config->get_int("aaStandingYaw")) {
- case 1: Globals::oCmd->viewAngles.y += 180; break;
- case 2: Globals::oCmd->viewAngles.y = 0; break;
- case 3: Globals::oCmd->viewAngles.y += g_Interfaces->globalVars->curtime * 3000; break;
- }
- }break;
- case MovingAAType::Moving: {
- switch (config->get_int("aaMovingYaw")) {
- case 1: Globals::oCmd->viewAngles.y += 180; break;
- case 2: Globals::oCmd->viewAngles.y = 0; break;
- case 3: Globals::oCmd->viewAngles.y += g_Interfaces->globalVars->curtime * 3000; break;
- }
- }break;
- case MovingAAType::Air: {
- switch (config->get_int("aaInAirYaw")) {
- case 1: Globals::oCmd->viewAngles.y += 180; break;
- case 2: Globals::oCmd->viewAngles.y = 0; break;
- case 3: Globals::oCmd->viewAngles.y += g_Interfaces->globalVars->curtime * 3000; break;
- }
- }break;
- }
- }
- else {
- if (config->get_int("aaAutoDirType") == 0) {
- FreeStanding();
- }
- else {
- freestand(Globals::oCmd);
- }
- }
- }
- }
- void CAntiAim2::OnMoveAA()
- {
- if (!Globals::localPlayer || !g_Interfaces->gameEngine->inGame() || !Globals::localPlayer->activeWeapon() || !config->get_bool("aaEnable")) {
- Globals::desyncEnabledSpecialChecks = false;
- return;
- }
- if (!Globals::localPlayer->alive() || Globals::localPlayer->isNade()) {
- Globals::desyncEnabledSpecialChecks = false;
- return;
- }
- if (Globals::localPlayer->moveType() == movetype_ladder) {
- Globals::desyncEnabledSpecialChecks = false;
- return;
- }
- if (Globals::oCmd->buttons & IN_USE)
- {
- Globals::desyncEnabledSpecialChecks = false;
- return;
- }
- float flServerTime = Globals::localPlayer->tickBase() * g_Interfaces->globalVars->intervalPerTick;
- bool canShoot = (Globals::localPlayer->activeWeapon()->nextPrimaryAttack() <= flServerTime);
- if ((canShoot && (Globals::oCmd->buttons & IN_ATTACK)) && Globals::localPlayer->activeWeapon()->GetItemDefinitionIndex() != item_definition_indexes::weapon_revolver) {
- Globals::desyncEnabledSpecialChecks = false;
- return;
- }
- if (Globals::bSendPacket)
- Swtich = !Swtich;
- switch (ReturnMovementType()) {
- case MovingAAType::Standing:
- switch (config->get_int("aaStandingPitch"))
- {
- case 1: Globals::oCmd->viewAngles.x = 89.9f; break; // DOWN
- case 2: Globals::oCmd->viewAngles.x = -89.9f; break; // UP
- case 3: Globals::oCmd->viewAngles.x = 0; break; // ZERO
- case 4: Globals::oCmd->viewAngles.x = -991; break; // FAKEDOWN
- case 5: Globals::oCmd->viewAngles.x = 991; break; // FAKEUP
- }
- break;
- case MovingAAType::Moving:
- switch (config->get_int("aaMovingPitch"))
- {
- case 1: Globals::oCmd->viewAngles.x = 89.9f; break; // DOWN
- case 2: Globals::oCmd->viewAngles.x = -89.9f; break; // UP
- case 3: Globals::oCmd->viewAngles.x = 0; break; // ZERO
- case 4: Globals::oCmd->viewAngles.x = -991; break; // FAKEDOWN
- case 5: Globals::oCmd->viewAngles.x = 991; break; // FAKEUP
- }
- break;
- case MovingAAType::Air:
- switch (config->get_int("aaInAirPitch"))
- {
- case 1: Globals::oCmd->viewAngles.x = 89.9f; break; // DOWN
- case 2: Globals::oCmd->viewAngles.x = -89.9f; break; // UP
- case 3: Globals::oCmd->viewAngles.x = 0; break; // ZERO
- case 4: Globals::oCmd->viewAngles.x = -991; break; // FAKEDOWN
- case 5: Globals::oCmd->viewAngles.x = 991; break; // FAKEUP
- }
- break;
- }
- Real();
- }
- //
- #pragma once
- #include "../../utilities/includes.h"
- #include "../Aimbot/Autowall.hpp"
- class CAntiAim2
- {
- public:
- void OnMoveAA();
- private:
- }; extern CAntiAim2 g_AntiAim2;
- //mstudiobbox_t* get_hitboxv2(CBaseEntity* entity, int hitbox_index);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement