diff --git a/src/features/aim.c b/src/features/aim.c index cc6d328..abbd189 100644 --- a/src/features/aim.c +++ b/src/features/aim.c @@ -250,7 +250,6 @@ void aimbot(usercmd_t* cmd) { bool fire_button_pressed = (cmd->buttons & IN_ATTACK) != 0; bool should_autoshoot = g_settings.aimbot_autoshoot; - // Only run aimbot when actually firing if (!fire_button_pressed) { return; } @@ -280,18 +279,20 @@ void aimbot(usercmd_t* cmd) { cmd->viewangles.y = aim_angles.y; cmd->viewangles.z = aim_angles.z; } else { - // Get smoothing from settings - a value of 0 means instant aim - float smoothing = g_settings.aimbot_smooth; - - // 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 { + if (g_settings.aimbot_smoothing_enabled) { + float smoothing = g_settings.aimbot_smooth; + + if (smoothing <= 0.1f) { + smoothing = 0.1f; + } + engine_viewangles.x += delta.x / smoothing; engine_viewangles.y += delta.y / smoothing; engine_viewangles.z += delta.z / smoothing; + } else { + engine_viewangles.x = aim_angles.x; + engine_viewangles.y = aim_angles.y; + engine_viewangles.z = aim_angles.z; } ang_clamp(&engine_viewangles); diff --git a/src/include/settings.h b/src/include/settings.h index 3b3c89c..5dad88d 100644 --- a/src/include/settings.h +++ b/src/include/settings.h @@ -27,6 +27,7 @@ typedef struct { bool aimbot_enabled; float aimbot_fov; float aimbot_smooth; + bool aimbot_smoothing_enabled; bool aimbot_silent; bool aimbot_autoshoot; bool aimbot_require_key; @@ -67,6 +68,7 @@ inline void init_default_settings(void) { g_settings.aimbot_fov = 5.0f; g_settings.aimbot_smooth = 10.0f; + g_settings.aimbot_smoothing_enabled = true; g_settings.aimbot_hitbox = 0; g_settings.esp_mode = ESP_OFF; diff --git a/src/menu.c b/src/menu.c index 5bf46ac..64ab4df 100644 --- a/src/menu.c +++ b/src/menu.c @@ -190,7 +190,11 @@ extern "C" void menu_render(void) { if (ImGui::SliderFloat("FOV", &g_settings.aimbot_fov, 0.1f, 360.0f, "%.1f")) { } - if (ImGui::SliderFloat("Smoothing", &g_settings.aimbot_smooth, 1.0f, 100.0f, "%.1f")) { + ImGui::Checkbox("Enable Smoothing", &g_settings.aimbot_smoothing_enabled); + + if (g_settings.aimbot_smoothing_enabled) { + if (ImGui::SliderFloat("Smoothing", &g_settings.aimbot_smooth, 1.0f, 100.0f, "%.1f")) { + } } const char* hitbox_items[] = { "Head", "Chest", "Stomach", "Pelvis", "Nearest" }; @@ -529,9 +533,11 @@ static void render_fallback_menu(void) { i_engine->pfnDrawConsoleString(x1+30, y, buffer); y += 15; - snprintf(buffer, sizeof(buffer), "- Smoothing: %.1f", g_settings.aimbot_smooth); - i_engine->pfnDrawConsoleString(x1+30, y, buffer); - y += 15; + if (g_settings.aimbot_smoothing_enabled) { + snprintf(buffer, sizeof(buffer), "- Smoothing: %.1f", g_settings.aimbot_smooth); + i_engine->pfnDrawConsoleString(x1+30, y, buffer); + y += 15; + } } y += 10; diff --git a/src/settings.c b/src/settings.c index 182b99a..e2e4087 100644 --- a/src/settings.c +++ b/src/settings.c @@ -46,6 +46,7 @@ bool create_root_default_config(void) { preset.chams = true; preset.aimbot_enabled = true; preset.aimbot_fov = 5.0f; + preset.aimbot_smoothing_enabled = true; preset.bhop = true; preset.autostrafe = true; preset.thirdperson = false; @@ -152,6 +153,7 @@ void settings_reset(void) { g_settings.aimbot_friendly_fire = false; g_settings.aimbot_team_attack = false; g_settings.aimbot_require_key = false; + g_settings.aimbot_smoothing_enabled = true; g_settings.bhop = false; g_settings.autostrafe = false;