From ea163c157bd30e4c54fa917ffe0465f5a6d1c663 Mon Sep 17 00:00:00 2001 From: salmonik Date: Mon, 26 Oct 2026 16:15:22 +0100 Subject: ESP: skeleton ESP - render parent->child bone links from the SetupBones world matrices (ISurface DrawLine, projected once per bone) - menu option "Show skeleton" under ESP, persisted as skeleton=1 - skeletons use the same hostile/friendly/neutral colours as the boxes --- src/menu.cpp | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) (limited to 'src/menu.cpp') diff --git a/src/menu.cpp b/src/menu.cpp index 6244002..6474d69 100644 --- a/src/menu.cpp +++ b/src/menu.cpp @@ -59,7 +59,7 @@ static FeatureState g_esp{true, 0}; // ESP sub-options (menu "ESP" children). Defaults match the pre-option // behaviour: everything on. -static bool g_esp_opt[ESP_OPT_COUNT] = {true, true, true, true}; +static bool g_esp_opt[ESP_OPT_COUNT] = {true, true, true, true, true}; // tree static MenuNode g_root{NODE_ROOT, "HL2hake", false, 0, {}, nullptr, nullptr, nullptr}; @@ -75,6 +75,7 @@ static MenuNode g_esp_opt_nodes[ESP_OPT_COUNT] = { {NODE_TOGGLE, "Show healthbar", false, 0, {}, &g_esp_opt[ESP_OPT_SHOW_HEALTHBAR], nullptr, nullptr}, {NODE_TOGGLE, "Show healthnum", false, 0, {}, &g_esp_opt[ESP_OPT_SHOW_HEALTHNUM], nullptr, nullptr}, {NODE_TOGGLE, "Show name", false, 0, {}, &g_esp_opt[ESP_OPT_SHOW_NAME], nullptr, nullptr}, + {NODE_TOGGLE, "Show skeleton", false, 0, {}, &g_esp_opt[ESP_OPT_SHOW_SKELETON], nullptr, nullptr}, }; static MenuNode *g_visible[32]; // flattened visible nodes for arrow navigation @@ -159,10 +160,11 @@ static void config_save() { g_bhop.bind, g_bhop_autostrafe); fprintf(f, "[abh]\nactive=%d\nbind=%d\n", g_abh.active, g_abh.bind); fprintf(f, "[esp]\nactive=%d\nbind=%d\nneutral=%d\nhealthbar=%d\n" - "healthnum=%d\nname=%d\n", + "healthnum=%d\nname=%d\nskeleton=%d\n", g_esp.active, g_esp.bind, g_esp_opt[ESP_OPT_SHOW_NEUTRAL], g_esp_opt[ESP_OPT_SHOW_HEALTHBAR], - g_esp_opt[ESP_OPT_SHOW_HEALTHNUM], g_esp_opt[ESP_OPT_SHOW_NAME]); + g_esp_opt[ESP_OPT_SHOW_HEALTHNUM], g_esp_opt[ESP_OPT_SHOW_NAME], + g_esp_opt[ESP_OPT_SHOW_SKELETON]); fclose(f); } @@ -204,6 +206,8 @@ static void config_load() { g_esp_opt[ESP_OPT_SHOW_HEALTHNUM] = atoi(val) != 0; else if (strcmp(key, "name") == 0) g_esp_opt[ESP_OPT_SHOW_NAME] = atoi(val) != 0; + else if (strcmp(key, "skeleton") == 0) + g_esp_opt[ESP_OPT_SHOW_SKELETON] = atoi(val) != 0; } if (strcmp(key, "active") == 0) cur->active = atoi(val) != 0; -- cgit v1.2.3