Update Makefile, aim.c, and 4 more files...

This commit is contained in:
Wizzard 2025-04-04 18:48:09 -04:00
parent cbea54c5ce
commit 5bf0dfce70
6 changed files with 59 additions and 79 deletions

@ -9,7 +9,7 @@ IMGUI_INCLUDES=-I$(IMGUI_DIR)
IMGUI_SRCS=$(IMGUI_DIR)/imgui.cpp $(IMGUI_DIR)/imgui_draw.cpp $(IMGUI_DIR)/imgui_tables.cpp $(IMGUI_DIR)/imgui_widgets.cpp $(IMGUI_DIR)/backends/imgui_impl_opengl2.cpp
IMGUI_OBJS=$(patsubst %.cpp,%.o,$(IMGUI_SRCS))
OBJS=obj/main.c.o obj/globals.c.o obj/settings.c.o obj/hooks.c.o obj/detour.c.o obj/util.c.o obj/features/movement.c.o obj/features/anti_aim.c.o obj/features/fov.c.o obj/features/namechanger.c.o obj/features/esp.c.o obj/features/chams.c.o obj/features/aim.c.o obj/features/misc.c.o obj/features/thirdperson.c.o obj/game_detection.c.o obj/menu.c.o $(IMGUI_OBJS)
OBJS=obj/main.c.o obj/globals.c.o obj/settings.c.o obj/hooks.c.o obj/detour.c.o obj/util.c.o obj/features/movement.c.o obj/features/anti_aim.c.o obj/features/fov.c.o obj/features/namechanger.c.o obj/features/esp.c.o obj/features/chams.c.o obj/features/aim.c.o obj/features/misc.c.o obj/features/thirdperson.c.o obj/features/no_recoil.c.o obj/game_detection.c.o obj/menu.c.o $(IMGUI_OBJS)
BIN=libhlcheat.so
.PHONY: clean all inject

@ -123,10 +123,6 @@ bool is_hitbox_visible(vec3_t eye_pos, hitbox_t* hitbox) {
pmtrace_t* trace = i_engine->PM_TraceLine(eye_pos, hitbox->origin, PM_TRACELINE_PHYSENTSONLY, 2, -1);
if (g_settings.aimbot_rage_mode && trace->fraction > 0.5f) {
return true;
}
if (trace->fraction < 1.0f && trace->ent <= 0)
return false;
@ -136,7 +132,7 @@ bool is_hitbox_visible(vec3_t eye_pos, hitbox_t* hitbox) {
return true;
}
return false;
return trace->fraction >= 1.0f;
}
typedef struct {
@ -152,10 +148,6 @@ int get_target_priority(cl_entity_t* ent) {
if (!ent)
return PRIORITY_NONE;
if (g_settings.aimbot_rage_mode) {
return PRIORITY_HIGH;
}
return PRIORITY_MEDIUM;
}
@ -199,17 +191,13 @@ static target_t get_best_target(vec3_t viewangles, vec3_t eye_pos) {
float best_score = 0.0f;
float max_fov = g_settings.aimbot_fov;
if (g_settings.aimbot_rage_mode && max_fov < 90.0f) {
max_fov = 90.0f;
}
for (int i = 1; i <= i_engine->GetMaxClients(); i++) {
cl_entity_t* ent = get_player(i);
if (!ent || !is_alive(ent))
continue;
if (!g_settings.aimbot_friendly_fire && is_friend(ent))
if (!g_settings.aimbot_team_attack && is_friend(ent))
continue;
hitbox_t target_hitbox;
@ -236,16 +224,10 @@ static target_t get_best_target(vec3_t viewangles, vec3_t eye_pos) {
float fov_score = 1.0f - (fov_distance / max_fov);
float priority_score = 0.0f;
if (g_settings.aimbot_rage_mode) {
int priority = get_target_priority(ent);
priority_score = priority / (float)PRIORITY_HIGH;
}
int priority = get_target_priority(ent);
float priority_score = priority / (float)PRIORITY_HIGH;
float final_score = fov_score;
if (g_settings.aimbot_rage_mode) {
final_score = (fov_score * 0.5f) + (priority_score * 0.5f);
}
float final_score = (fov_score * 0.5f) + (priority_score * 0.5f);
if (final_score > best_score) {
best_score = final_score;
@ -253,7 +235,7 @@ static target_t get_best_target(vec3_t viewangles, vec3_t eye_pos) {
best_target.fov = fov_distance;
vec_copy(best_target.aim_point, target_hitbox.origin);
best_target.is_visible = true;
best_target.priority = get_target_priority(ent);
best_target.priority = priority;
best_target.distance = distance;
}
}
@ -265,29 +247,13 @@ void aimbot(usercmd_t* cmd) {
if (!g_settings.aimbot_enabled)
return;
bool should_run_aimbot = true;
bool should_autoshoot = g_settings.aimbot_autoshoot;
bool fire_button_pressed = (cmd->buttons & IN_ATTACK) != 0;
bool should_autoshoot = g_settings.aimbot_autoshoot;
switch (0) {
case 0:
should_run_aimbot = true;
break;
case 1:
should_run_aimbot = (cmd->buttons & IN_ATTACK) != 0;
break;
case 2:
should_run_aimbot = (cmd->buttons & IN_ATTACK2) != 0;
break;
default:
should_run_aimbot = true;
}
if (!should_run_aimbot && !g_settings.aimbot_rage_mode)
// Only run aimbot when actually firing
if (!fire_button_pressed) {
return;
if (g_settings.aimbot_rage_mode)
should_run_aimbot = true;
}
bool can_fire = can_shoot();
@ -298,14 +264,7 @@ void aimbot(usercmd_t* cmd) {
vec3_t engine_viewangles;
i_engine->GetViewAngles(engine_viewangles);
vec3_t adjusted_viewangles = engine_viewangles;
if (g_settings.aimbot_norecoil) {
adjusted_viewangles.x += g_punchAngles.x * AIM_PUNCH_MULT;
adjusted_viewangles.y += g_punchAngles.y * AIM_PUNCH_MULT;
adjusted_viewangles.z += g_punchAngles.z * AIM_PUNCH_MULT;
}
target_t best_target = get_best_target(adjusted_viewangles, eye_pos);
target_t best_target = get_best_target(engine_viewangles, eye_pos);
if (best_target.entity && best_target.is_visible) {
vec3_t to_target = vec_sub(best_target.aim_point, eye_pos);
@ -316,22 +275,25 @@ void aimbot(usercmd_t* cmd) {
ang_clamp(&delta);
if (g_settings.aimbot_silent) {
cmd->viewangles.x = engine_viewangles.x + delta.x;
cmd->viewangles.y = engine_viewangles.y + delta.y;
cmd->viewangles.z = engine_viewangles.z + delta.z;
// Silent aim - just modify cmd->viewangles directly
cmd->viewangles.x = aim_angles.x;
cmd->viewangles.y = aim_angles.y;
cmd->viewangles.z = aim_angles.z;
} else {
float smoothing = SMOOTHING_FACTOR;
// Get smoothing from settings - a value of 0 means instant aim
float smoothing = g_settings.aimbot_smooth;
smoothing = g_settings.aimbot_smooth > 0 ? g_settings.aimbot_smooth : SMOOTHING_FACTOR;
if (g_settings.aimbot_rage_mode) {
smoothing = 1.2f;
// If smoothing is set to 0 or very small, aim instantly
if (smoothing <= 0.1f) {
engine_viewangles.x = aim_angles.x;
engine_viewangles.y = aim_angles.y;
engine_viewangles.z = aim_angles.z;
} else {
engine_viewangles.x += delta.x / smoothing;
engine_viewangles.y += delta.y / smoothing;
engine_viewangles.z += delta.z / smoothing;
}
engine_viewangles.x += delta.x / smoothing;
engine_viewangles.y += delta.y / smoothing;
engine_viewangles.z += delta.z / smoothing;
ang_clamp(&engine_viewangles);
i_engine->SetViewAngles(engine_viewangles);
@ -343,13 +305,9 @@ void aimbot(usercmd_t* cmd) {
if (should_autoshoot && can_fire) {
if (!g_settings.aimbot_require_key || fire_button_pressed) {
if (g_settings.aimbot_rage_mode) {
float aim_error = sqrtf(delta.x * delta.x + delta.y * delta.y);
if (aim_error < 5.0f) {
cmd->buttons |= IN_ATTACK;
} else {
float aim_error = sqrtf(delta.x * delta.x + delta.y * delta.y);
if (aim_error < 5.0f) {
cmd->buttons |= IN_ATTACK;
}
}
}
}

@ -33,6 +33,9 @@ bool chams(void* this_ptr);
/* src/features/aim.c */
void aimbot(usercmd_t* cmd);
/* src/features/no_recoil.c */
void no_recoil(usercmd_t* cmd);
/* src/features/misc.c */
void custom_crosshair(void);
void bullet_tracers(usercmd_t* cmd);

@ -2,23 +2,41 @@
#include "../include/settings.h"
#include "../include/util.h"
#include "../include/globals.h"
#include <stdio.h> // For printf
#include <time.h> // For time
#include "../features/features.h"
#include <stdio.h>
#include <time.h>
static time_t last_log_time = 0;
void no_recoil(usercmd_t* cmd) {
if (!g_settings.aimbot_norecoil || !is_alive(localplayer)) {
if (!is_alive(localplayer) || (!g_settings.aimbot_norecoil && !g_settings.aimbot_recoil_comp)) {
return;
}
if (!(cmd->buttons & IN_ATTACK)) {
return;
}
time_t current_time = time(NULL);
if (current_time - last_log_time >= 5) {
printf("Applying anti-recoil: Punch Angles (X: %f, Y: %f)\n", g_punchAngles[0], g_punchAngles[1]);
printf("Recoil control active: Punch Angles (X: %f, Y: %f)\n", g_punchAngles[0], g_punchAngles[1]);
last_log_time = current_time;
}
float anti_recoil_value = 100.0f;
cmd->viewangles[0] -= (g_punchAngles[0] * anti_recoil_value);
cmd->viewangles[1] -= (g_punchAngles[1] * anti_recoil_value);
if (g_settings.aimbot_norecoil) {
float multiplier = 200.0f;
cmd->viewangles[0] -= (g_punchAngles[0] * multiplier);
cmd->viewangles[1] -= (g_punchAngles[1] * multiplier);
printf("Applied no_recoil: %f, %f\n", -g_punchAngles[0] * multiplier, -g_punchAngles[1] * multiplier);
}
else if (g_settings.aimbot_recoil_comp) {
float multiplier = 5.0f;
cmd->viewangles[0] -= (g_punchAngles[0] * multiplier);
cmd->viewangles[1] -= (g_punchAngles[1] * multiplier);
printf("Applied recoil_comp: %f, %f\n", -g_punchAngles[0] * multiplier, -g_punchAngles[1] * multiplier);
}
}

@ -3,6 +3,6 @@
#include "../include/sdk.h"
void aim_no_recoil(usercmd_t* cmd);
void no_recoil(usercmd_t* cmd);
#endif

@ -215,6 +215,7 @@ void h_CL_CreateMove(float frametime, usercmd_t* cmd, int active) {
}
bhop(cmd);
no_recoil(cmd); // Apply recoil control before aimbot
aimbot(cmd);
bullet_tracers(cmd);
anti_aim(cmd);