From b37e1f6892895e438aa7974e1144a6269d94e4aa Mon Sep 17 00:00:00 2001 From: salmonik Date: Mon, 26 Oct 2026 17:16:35 +0100 Subject: Aimbot v3: world-only vischeck - resolve EngineTraceClient003; TraceRay (slot 4) from the eye to the exact selected hitbox/bone point with MASK_VISIBLE - TRACE_WORLD_ONLY filter as requested (static props are not tested, per SDK) - Aimbot -> Vischeck toggle, persisted as vischeck=1; when on, blocked targets are skipped and the next-nearest candidate is tried - target candidates are ranked by angle; on each target the nearest visible selected hitbox point wins --- src/menu.cpp | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) (limited to 'src/menu.cpp') diff --git a/src/menu.cpp b/src/menu.cpp index db52fd2..d26b62e 100644 --- a/src/menu.cpp +++ b/src/menu.cpp @@ -75,6 +75,7 @@ enum { static bool g_aim_bones[AIM_BONE_COUNT] = {true, false, false, false, false, false}; static int g_aim_smooth = 5; // degrees per tick +static bool g_aim_vischeck = true; // ESP sub-options (menu "ESP" children). Defaults match the pre-option // behaviour: everything on. @@ -101,6 +102,7 @@ static MenuNode g_aimbot_feat{NODE_FEATURE, "Aimbot", false, 1, {}, nullptr, nul static MenuNode g_aimbot_active{NODE_TOGGLE, "Active", false, 0, {}, &g_aimbot.active, nullptr, nullptr}; static MenuNode g_aimbot_bind{NODE_BIND, "Bind", false, 0, {}, nullptr, &g_aimbot.bind, nullptr}; static MenuNode g_aimbot_bones_feat{NODE_FEATURE, "Bones", false, 0, {}, nullptr, nullptr, nullptr}; +static MenuNode g_aimbot_vischeck_node{NODE_TOGGLE, "Vischeck", false, 0, {}, &g_aim_vischeck, nullptr, nullptr}; static MenuNode g_aimbot_bone_nodes[AIM_BONE_COUNT] = { {NODE_TOGGLE, "Head", false, 0, {}, &g_aim_bones[AIM_BONE_HEAD], nullptr, nullptr}, {NODE_TOGGLE, "Torso", false, 0, {}, &g_aim_bones[AIM_BONE_TORSO], nullptr, nullptr}, @@ -126,9 +128,10 @@ static void build_tree() { g_esp_feat.children[0] = &g_esp_active; g_aimbot_feat.children[0] = &g_aimbot_active; g_aimbot_feat.children[1] = &g_aimbot_bind; - g_aimbot_feat.children[2] = &g_aimbot_bones_feat; - g_aimbot_feat.children[3] = &g_aimbot_smooth_node; - g_aimbot_feat.child_count = 4; + g_aimbot_feat.children[2] = &g_aimbot_vischeck_node; + g_aimbot_feat.children[3] = &g_aimbot_bones_feat; + g_aimbot_feat.children[4] = &g_aimbot_smooth_node; + g_aimbot_feat.child_count = 5; for (int i = 0; i < AIM_BONE_COUNT; i++) g_aimbot_bones_feat.children[i] = &g_aimbot_bone_nodes[i]; g_aimbot_bones_feat.child_count = AIM_BONE_COUNT; @@ -203,10 +206,11 @@ static void config_save() { fprintf(f, "[bhop]\nactive=%d\nbind=%d\nautostrafe=%d\n", g_bhop.active, g_bhop.bind, g_bhop_autostrafe); fprintf(f, "[abh]\nactive=%d\nbind=%d\n", g_abh.active, g_abh.bind); - fprintf(f, "[aimbot]\nactive=%d\nbind=%d\nsmooth=%d\n" + fprintf(f, "[aimbot]\nactive=%d\nbind=%d\nsmooth=%d\nvischeck=%d\n" "bone_head=%d\nbone_torso=%d\nbone_larm=%d\nbone_rarm=%d\n" "bone_lleg=%d\nbone_rleg=%d\n", g_aimbot.active, g_aimbot.bind, g_aim_smooth, + (int)g_aim_vischeck, g_aim_bones[AIM_BONE_HEAD], g_aim_bones[AIM_BONE_TORSO], g_aim_bones[AIM_BONE_LARM], g_aim_bones[AIM_BONE_RARM], g_aim_bones[AIM_BONE_LLEG], g_aim_bones[AIM_BONE_RLEG]); @@ -269,6 +273,8 @@ static void config_load() { g_aim_bones[AIM_BONE_LLEG] = atoi(val) != 0; } else if (strcmp(key, "bone_rleg") == 0) { g_aim_bones[AIM_BONE_RLEG] = atoi(val) != 0; + } else if (strcmp(key, "vischeck") == 0) { + g_aim_vischeck = atoi(val) != 0; } } if (in_esp) { @@ -429,6 +435,8 @@ unsigned aimbot_bone_mask() { int aimbot_smooth_step() { return g_aim_smooth; } +bool aimbot_vischeck_enabled() { return g_aim_vischeck; } + static void menu_handle_input() { poll_keyboard(); -- cgit v1.2.3