Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include "Resolver.h"
- #include "..\Aimbot\Aimbot.h"
- #include "..\Aimbot\Autowall.h"
- #include "..\Aimbot\LagComp.h"
- #include "..\..\Utils\Utils.h"
- #include "..\..\SDK\IVEngineClient.h"
- #include "..\..\SDK\Hitboxes.h"
- #include "..\..\SDK\PlayerInfo.h"
- #include "..\..\Utils\Math.h"
- #include "..\..\Menu\Menu.h"
- #include "..\..\SDK\IMemAlloc.h"
- #include "..\..\Utils\Interfaces.h""
- #include "..\AntiAim\Animations.h"
- #define clamp(val, min, max) (((val) > (max)) ? (max) : (((val) < (min)) ? (min) : (val)))
- Resolver g_Resolver;
- IMemAlloc* uwuwuw = nullptr;
- float GetDesync(C_BaseEntity* target)
- {
- auto* animstate = target->AnimState();
- float flRunningSpeed = clamp(animstate->m_flFeetSpeedForwardsOrSideWays, 0.f, 1.f);
- float flYawModifier = ((animstate->m_flStopToFullRunningFraction * -0.3f) - 0.2f) * flRunningSpeed;
- float flYawModifier2 = flYawModifier + 1.f;
- if (animstate->m_fDuckAmount > 0.f)
- {
- float maxVelocity = clamp(animstate->m_flFeetSpeedForwardsOrSideWays, 0.f, 1.f);
- float duckSpeed = animstate->m_fDuckAmount * maxVelocity;
- flYawModifier2 += (duckSpeed * (0.5f - flYawModifier2));
- }
- return *(float*)((uintptr_t)animstate + 0x334) * flYawModifier2;
- }
- template <class T>
- constexpr const T& Max(const T& x, const T& y)
- {
- return (x < y) ? y : x;
- }
- Vector TraceToEnd(Vector start, Vector end)
- {
- C_Trace trace;
- CTraceWorldOnly* filter;
- g_pTrace->TraceRay(C_Ray(start, end), mask_all, filter, &trace);
- return trace.end;
- }
- bool Resolver::AntiPener(C_BaseEntity* entity, float &yaw, int damage_tolerance)
- {
- Autowall* wall = nullptr;
- if (!(entity->GetFlags() & FL_ONGROUND))
- return false;
- auto local_player = g::pLocalEntity;
- if (!local_player || local_player->GetLifeState() != 0)
- return false;
- if (!wall) return false;
- std::vector<C_BaseEntity*> enemies;
- const float height = 64;
- float leftdamage = 0.f, rightdamage = 0.f, backdamage = 0.f;
- std::vector<Vector> last_eye_positions;
- last_eye_positions.insert(last_eye_positions.begin(), local_player->GetOrigin() + local_player->GetViewOffset());
- if (last_eye_positions.size() > 128)
- last_eye_positions.pop_back();
- auto nci = g_pEngine->GetNetChannelInfo();
- if (!nci)
- return false;
- const int latency_ticks = TIME_TO_TICKS(nci->GetLatency(FLOW_OUTGOING));
- const auto latency_based_eye_pos = last_eye_positions.size() <= latency_ticks ? last_eye_positions.back() : last_eye_positions[latency_ticks];
- float lpos = 0.f;
- Vector direction_1, direction_2, direction_3;
- g_Math.AngleVectors(Vector(0.f, g_Math.CalcAngle(local_player->GetOrigin(), entity->GetOrigin()).y + 90.f, 0.f), &direction_1);
- g_Math.AngleVectors(Vector(0.f, g_Math.CalcAngle(local_player->GetOrigin(), entity->GetOrigin()).y - 90.f, 0.f), &direction_2);
- g_Math.AngleVectors(Vector(0.f, g_Math.CalcAngle(local_player->GetOrigin(), entity->GetOrigin()).y + 180.f, 0.f), &direction_3);
- const auto left_eye_pos = entity->GetOrigin() + Vector(0, 0, height) + (direction_1 * 16.f);
- const auto right_eye_pos = entity->GetOrigin() + Vector(0, 0, height) + (direction_2 * 16.f);
- const auto back_eye_pos = entity->GetOrigin() + Vector(0, 0, height) + (direction_3 * 16.f);
- leftdamage = wall->CanHitFloatingPoint(latency_based_eye_pos, left_eye_pos);
- rightdamage = wall->CanHitFloatingPoint(latency_based_eye_pos, right_eye_pos);
- backdamage = wall->CanHitFloatingPoint(latency_based_eye_pos, back_eye_pos);
- int right_damage = rightdamage;
- int left_damage = leftdamage;
- int back_damage = backdamage;
- float at_target_yaw = g_Math.CalcAngle(local_player->GetOrigin(), entity->GetOrigin()).y;
- const float right_yaw = at_target_yaw - 90.f;
- const float left_yaw = at_target_yaw + 90.f;
- auto head_position = entity->GetOrigin() + Vector(0, 0, 64.f);
- float calculated_yaw;
- /// Find the lowest fov enemy
- C_BaseEntity* closest_enemy = nullptr;
- float lowest_fov = 360.f;
- for (int i = 0; i <= 64; i++)
- {
- auto ent = g_pEntityList->GetClientEntity(i);
- if (!ent || ent->IsDormant() || ent->GetTeam() == entity->GetTeam() || ent->GetHealth() <= 0 || !ent->IsAlive())
- continue;
- const float current_fov = fabs(g_Math.NormalizeYaw(g_Math.CalcAngle(entity->GetOrigin(), ent->GetOrigin()).y - at_target_yaw));
- if (current_fov < lowest_fov)
- {
- lowest_fov = current_fov;
- closest_enemy = ent;
- }
- enemies.push_back(ent);
- }
- if (closest_enemy == nullptr)
- return false;
- auto RotateAndExtendPosition = [](Vector position, float yaw, float distance) -> Vector
- {
- Vector direction;
- g_Math.AngleVectors(Vector(0, yaw, 0), &direction);
- return position + (direction * distance);
- };
- auto right_head_position = RotateAndExtendPosition(head_position, right_yaw, 16.f);
- auto left_head_position = RotateAndExtendPosition(head_position, left_yaw, 16.f);
- auto CalcDamage = [wall, entity, enemies](Vector point) -> int
- {
- int damage = 0;
- for (auto& enemy : enemies)
- {
- damage += Max<int>(wall->CanHitFloatingPoint(enemy->GetOrigin() + Vector(0, 0, 64.f), point),
- wall->CanHitFloatingPoint(enemy->GetOrigin() + Vector(0, 0, 64.f), point));
- }
- return damage;
- };
- auto RotateLBYAndYaw = [right_yaw, left_yaw, entity](int right_damage, int left_damage, float& yaw, bool prefect_angle = false) -> bool
- {
- bool prefer_right = right_damage < left_damage;
- yaw = prefer_right ? right_yaw : left_yaw;
- /// If not moving
- if (prefect_angle)
- yaw = g_Math.GetLBYRotatedYaw(entity->GetLowerBodyYaw(), yaw);
- return true;
- };
- if (left_damage >= damage_tolerance && right_damage >= damage_tolerance && back_damage >= damage_tolerance)
- return false;
- if (left_damage >= damage_tolerance && right_damage >= damage_tolerance && back_damage < damage_tolerance)
- calculated_yaw = at_target_yaw + 180.f;
- else if (right_damage == left_damage)
- {
- if (g_Math.NormalizePitch(g_Math.CalcAngle(entity->GetOrigin(), local_player->GetOrigin()).x) > 15.f && back_damage < damage_tolerance)
- calculated_yaw = at_target_yaw + 180.f;
- else
- {
- right_head_position = RotateAndExtendPosition(head_position, right_yaw, 16.f);
- left_head_position = RotateAndExtendPosition(head_position, left_yaw, 16.f);
- right_damage = CalcDamage(right_head_position), left_damage = CalcDamage(left_head_position);
- if (right_damage == left_damage)
- {
- /// just return the side closest to a wall
- right_head_position = TraceToEnd(head_position, RotateAndExtendPosition(head_position, right_yaw, 16.f));
- left_head_position = TraceToEnd(head_position, RotateAndExtendPosition(head_position, left_yaw, 16.f));
- float distance_1, distance_2;
- C_Trace trace;
- CTraceWorldOnly* filter;
- auto end_pos = local_player->GetOrigin() + Vector(0, 0, 64.f);
- /// right position
- g_pTrace->TraceRay(C_Ray(right_head_position, end_pos), mask_all, filter, &trace);
- distance_1 = (right_head_position - trace.end).Length();
- /// left position
- g_pTrace->TraceRay(C_Ray(left_head_position, end_pos), mask_all, filter, &trace);
- distance_2 = (left_head_position - trace.end).Length();
- if (fabs(distance_1 - distance_2) > 15.f)
- RotateLBYAndYaw(distance_1, distance_2, calculated_yaw);
- else
- calculated_yaw = at_target_yaw + 180;
- }
- else
- RotateLBYAndYaw(right_damage, left_damage, calculated_yaw);
- }
- }
- else
- {
- if (g_Math.NormalizePitch(g_Math.CalcAngle(entity->GetOrigin(), local_player->GetOrigin()).x) > 15.f && back_damage < damage_tolerance)
- calculated_yaw = at_target_yaw + 180.f;
- else
- {
- bool prefer_right = (right_damage < left_damage);
- calculated_yaw = prefer_right ? right_yaw : left_yaw;
- }
- }
- yaw = calculated_yaw;
- return true;
- }
- //float m_flRunningSpeed = max(0, min(*reinterpret_cast<float*>(AnimationState + 0xF8), 1)); // excuse my cringy variable naming LOL
- float Resolver::get_server_yaw()
- {
- auto AnimationState = g::pLocalEntity->AnimState();
- float ground_fraction = *(float*)(AnimationState + 0x11C);
- float fDuckAmount = *(float*)(AnimationState + 0xA4);
- float bDuckSpeed = max(0, min(1, *reinterpret_cast<float*> (AnimationState + 0xFC)));
- auto backup_eflags = g::pLocalEntity->m_iEFlags();
- g::pLocalEntity->m_iEFlags() = (1 << 12);
- Vector abs_velocity = g::pLocalEntity->m_vecAbsVelocity();
- g::pLocalEntity->m_iEFlags() = backup_eflags;
- float speed = std::fmin(abs_velocity.Length(), 260.0f);
- float goal_feet_yaw = AnimationState->m_flGoalFeetYaw;
- float eye_feet_delta = g_Math.AngleDiff(AnimationState->m_flEyeYaw, goal_feet_yaw);
- float flYawModifier = (((ground_fraction * -0.3f) - 0.2f) * bDuckSpeed) + 1.0f;
- if (fDuckAmount > 0.0f)
- flYawModifier = flYawModifier + ((fDuckAmount * bDuckSpeed) * (0.5f - flYawModifier));
- float flMaxYawModifier = flYawModifier * 58.f;
- float flMinYawModifier = flYawModifier * -58.f;
- if (eye_feet_delta <= flMaxYawModifier)
- {
- if (flMinYawModifier > eye_feet_delta)
- goal_feet_yaw = fabs(flMinYawModifier) + AnimationState->m_flEyeYaw;
- else
- goal_feet_yaw = AnimationState->m_flEyeYaw - fabs(flMaxYawModifier); //a
- }
- g_Math.NormalizeYaw(goal_feet_yaw);
- if (speed > 0.1f || fabs(abs_velocity.z) > 100.0f)
- {
- goal_feet_yaw = g_Math.ApproachAngle(
- AnimationState->m_flEyeYaw,
- goal_feet_yaw,
- ((ground_fraction * 20.0f) + 30.0f)
- * AnimationState->m_flLastClientSideAnimationUpdateTime);
- }
- else
- {
- goal_feet_yaw = g_Math.ApproachAngle(
- g::pLocalEntity->GetLowerBodyYaw(),
- goal_feet_yaw,
- AnimationState->m_flLastClientSideAnimationUpdateTime * 100.0f);
- }
- return g_Math.NormalizeYaw(goal_feet_yaw);
- }
- float Resolver::GetEntityAbsYaw(C_BaseEntity* entity)
- {
- auto* animstate = entity->GetPlayerAnimationState();
- float v94;
- float ground_fraction = *(float *)(animstate + 0x11C);
- float duck_ammount = *(float *)(animstate + 0xA4);
- float ducking_speed = max(0, min(1, *reinterpret_cast<float*> (animstate + 0xFC)));
- float running_speed = max(0, min(*reinterpret_cast<float*>(animstate + 0xF8), 1));
- int backup_eflags = entity->m_iEFlags();
- //credits: tommy and denishack
- entity->SetFlags((1 << 12));
- Vector abs_velocity = entity->m_vecAbsVelocity();
- entity->m_iEFlags() = backup_eflags;
- float speed = std::fmin(abs_velocity.Length(), 260.0f);
- float goal_feet_yaw = animstate->goal_feet_yaw;
- float eye_feet_delta = g_Math.angle_diff(animstate->eye_angles_y, goal_feet_yaw);
- float flYawModifier = (((ground_fraction * -0.3f) - 0.2f) * running_speed) + 1.0f;
- if (duck_ammount > 0.0f)
- flYawModifier = flYawModifier + ((duck_ammount * ducking_speed) * (0.5f - flYawModifier));
- float flMaxYawModifier = flYawModifier * 58.f;
- float flMinYawModifier = flYawModifier * -58.f;
- if (eye_feet_delta <= flMaxYawModifier)
- if (flMinYawModifier > eye_feet_delta)
- goal_feet_yaw = fabs(flMinYawModifier) + animstate->eye_angles_y;
- else
- goal_feet_yaw = animstate->eye_angles_y - fabs(flMaxYawModifier);
- g_Math.NormalizeYaw(goal_feet_yaw);
- if (speed > 0.1f || fabs(abs_velocity.z) > 100.0f)
- {
- goal_feet_yaw = g_Math.fl_approach_angle(
- animstate->eye_angles_y,
- goal_feet_yaw,
- ((ground_fraction * 20.0f) + 30.0f)
- * animstate->last_client_side_animation_update_time);
- }
- else
- {
- goal_feet_yaw = g_Math.fl_approach_angle(
- entity->GetLowerBodyYaw(),
- goal_feet_yaw,
- animstate->last_client_side_animation_update_time * 100.0f);
- }
- g_Math.NormalizeYaw(goal_feet_yaw);
- v94 = goal_feet_yaw;
- return v94;
- }
- void Resolver::AnimationFix(C_BaseEntity* pEnt)
- {
- if (!g::pLocalEntity->IsAlive())
- & CAnimations::LocalPlayerAnimfix;
- *reinterpret_cast<int*>(uintptr_t(pEnt) + 0xA30) = g_pGlobalVars->framecount;
- *reinterpret_cast<int*>(uintptr_t(pEnt) + 0xA28) = 0;
- }
- void HandleHits(C_BaseEntity* pEnt)
- {
- auto NetChannel = g_pEngine->GetNetChannelInfo();
- if (!NetChannel)
- return;
- static float predTime[65];
- static bool init[65];
- if (g::Shot[pEnt->EntIndex()])
- {
- if (init[pEnt->EntIndex()])
- {
- g_Resolver.pitchHit[pEnt->EntIndex()] = pEnt->GetEyeAngles().x;
- predTime[pEnt->EntIndex()] = g_pGlobalVars->curtime + NetChannel->GetAvgLatency(FLOW_INCOMING) + NetChannel->GetAvgLatency(FLOW_OUTGOING) + TICKS_TO_TIME(1) + TICKS_TO_TIME(g_pEngine->GetNetChannel()->m_nChokedPackets);
- init[pEnt->EntIndex()] = false;
- }
- if (g_pGlobalVars->curtime > predTime[pEnt->EntIndex()] && !g::Hit[pEnt->EntIndex()])
- {
- g::MissedShots[pEnt->EntIndex()] += 1;
- g::Shot[pEnt->EntIndex()] = false;
- }
- else if (g_pGlobalVars->curtime <= predTime[pEnt->EntIndex()] && g::Hit[pEnt->EntIndex()])
- g::Shot[pEnt->EntIndex()] = false;
- }
- else
- init[pEnt->EntIndex()] = true;
- g::Hit[pEnt->EntIndex()] = false;
- }
- void Resolver::OnCreateMove() // cancer v2
- {
- if (!g_Menu.Config.Resolver)
- return;
- if (!g::pLocalEntity->IsAlive())
- return;
- if (!g::pLocalEntity->GetActiveWeapon() || g::pLocalEntity->IsKnifeorNade())
- return;
- }
- C_BaseEntity* UTIL_PlayerByIndex(int index)
- {
- typedef C_BaseEntity*(__fastcall* PlayerByIndex)(int);
- static PlayerByIndex UTIL_PlayerByIndex = (PlayerByIndex)Utils::FindSignature("server.dll", "85 C9 7E 2A A1");
- if (!UTIL_PlayerByIndex)
- return false;
- return UTIL_PlayerByIndex(index);
- }
- float GetLBYRotatedYaw(float lby, float yaw)
- {
- float delta = g_Math.NormalizeYaw(yaw - lby);
- if (fabs(delta) < 25.f)
- return lby;
- if (delta > 0.f)
- return yaw + 25.f;
- return yaw;
- }
- void Resolver::FrameStage(ClientFrameStage_t stage)
- {
- if (!g::pLocalEntity || !g_pEngine->IsInGame())
- return;
- static bool wasDormant[65];
- for (int i = 1; i < g_pEngine->GetMaxClients(); ++i)
- {
- C_BaseEntity* pPlayerEntity = g_pEntityList->GetClientEntity(i);
- if (!pPlayerEntity || pPlayerEntity == g::pLocalEntity || pPlayerEntity->GetTeam() == g::pLocalEntity->GetTeam())
- continue;
- if (pPlayerEntity->IsDormant())
- {
- wasDormant[i] = true;
- continue;
- }
- if (stage == FRAME_NET_UPDATE_END)
- {
- static bool flip;
- flip = !flip;
- int index = pPlayerEntity->EntIndex();
- auto* animstate = pPlayerEntity->AnimState();
- if (!animstate) return;
- auto delta = std::remainderf(animstate->m_flGoalFeetYaw, 360.f) - pPlayerEntity->GetLowerBodyYaw();
- float resolved_angle = pPlayerEntity->GetEyeAnglesPointer()->y + delta < 0.f ? delta : -delta;
- int missed[65];
- missed[pPlayerEntity->EntIndex()] = g::shots_fired[pPlayerEntity->EntIndex()] - g::shots_hit[index]; // getting missed shots
- float relative = g_Math.CalcAngle(pPlayerEntity->GetOrigin(), g::pLocalEntity->GetOrigin()).y;
- ///lawliet being autistic
- //if (g_Aimbot.ShotBacktrack[index] || g_Aimbot.Backtrack[index] || pPlayerEntity->GetVelocity().Length2D() > 0.1) return; //if bt or move
- if (g_Menu.Config.Resolver)
- {
- //leaving this in because its garbage anyways
- if (missed[pPlayerEntity->EntIndex() > 1])
- {
- switch (missed[pPlayerEntity->EntIndex()] % 4)
- {
- case 2:
- pPlayerEntity->GetEyeAnglesPointer()->y += pPlayerEntity->max_desync(); break;
- case 3:
- pPlayerEntity->GetEyeAnglesPointer()->y -= pPlayerEntity->max_desync(); break;
- case 4:
- pPlayerEntity->GetEyeAnglesPointer()->y += pPlayerEntity->max_desync() * 2; break; // aimware max desync is 116 so uh idk
- case 5:
- pPlayerEntity->GetEyeAnglesPointer()->y -= pPlayerEntity->max_desync() * 2; break;
- }
- }
- else
- {
- float lby_delta = 0;
- lby_delta = std::remainderf(lby_delta, 360.f);
- lby_delta = clamp(lby_delta, -60.f, 60.f);
- float feet_yaw = std::remainderf(pPlayerEntity->GetEyeAngles().y + lby_delta, 360.f);
- if (feet_yaw < 0.f)
- feet_yaw += 360.f;
- animstate->m_flGoalFeetYaw = feet_yaw;
- if (g_Math.YawDistance(pPlayerEntity->AnimState()->m_flGoalFeetYaw, animstate->m_flGoalFeetYaw + pPlayerEntity->max_desync()) < pPlayerEntity->max_desync())
- {
- switch (missed[pPlayerEntity->EntIndex()])
- {
- case 0:
- pPlayerEntity->AnimState()->m_flGoalFeetYaw = animstate->m_flGoalFeetYaw - pPlayerEntity->max_desync(); break;
- case 1:
- pPlayerEntity->AnimState()->m_flGoalFeetYaw = animstate->m_flGoalFeetYaw + pPlayerEntity->max_desync(); break;
- }
- }
- else
- {
- switch (missed[pPlayerEntity->EntIndex()])
- {
- case 0:
- pPlayerEntity->AnimState()->m_flGoalFeetYaw = animstate->m_flGoalFeetYaw + pPlayerEntity->max_desync(); break;
- case 1:
- pPlayerEntity->AnimState()->m_flGoalFeetYaw = animstate->m_flGoalFeetYaw - pPlayerEntity->max_desync(); break;
- }
- }
- }
- }
- }
- wasDormant[i] = false;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement