From 28760a6081930e66306ffe0387d0d07dbf61b40b Mon Sep 17 00:00:00 2001 From: ifBars <114284668+ifBars@users.noreply.github.com> Date: Mon, 13 Nov 2023 20:50:52 -0700 Subject: [PATCH 1/3] Update offsets.json - Update offsets for game build 13969 11/14/23 --- offsets/offsets.json | 35 +++++++++++++++++------------------ 1 file changed, 17 insertions(+), 18 deletions(-) diff --git a/offsets/offsets.json b/offsets/offsets.json index 6f2bdc5..1493057 100644 --- a/offsets/offsets.json +++ b/offsets/offsets.json @@ -1,26 +1,25 @@ { - "build_number": 13968, - "dwLocalPlayer": 25152952, - "dwEntityList": 24828640, - "dwViewMatrix": 25215200, + "build_number": 13969, "dwBuildNumber": 4764964, - "dwPlantedC4": 25234632, + "dwEntityList": 24828656, + "dwLocalPlayer": 25152968, + "dwPlantedC4": 25234648, + "dwViewMatrix": 25215232, + "m_ArmorValue": 5384, + "m_bIsDefusing": 5008, "m_flC4Blow": 3760, + "m_flFlashOverlayAlpha": 5212, "m_flNextBeep": 3756, "m_flTimerLength": 3768, - "m_pInGameMoneyServices": 1744, + "m_hPlayerPawn": 2004, "m_iAccount": 64, - "m_vecAbsOrigin": 200, - "m_vOldOrigin": 4644, - "m_pGameSceneNode": 784, - "m_flFlashOverlayAlpha": 5212, - "m_bIsDefusing": 5032, - "m_szName": 3096, - "m_pClippingWeapon": 4776, - "m_ArmorValue": 5384, "m_iHealth": 812, - "m_hPlayerPawn": 1980, - "m_sSanitizedPlayerName": 1824, "m_iTeamNum": 959, - "m_vecOrigin": 4644 -} \ No newline at end of file + "m_pClippingWeapon": 4776, + "m_pGameSceneNode": 784, + "m_pInGameMoneyServices": 1744, + "m_sSanitizedPlayerName": 1848, + "m_szName": 3096, + "m_vOldOrigin": 4644, + "m_vecAbsOrigin": 200 +} From af903ff33c35e25955d5613fc44d72e4d353919a Mon Sep 17 00:00:00 2001 From: ifBars <114284668+ifBars@users.noreply.github.com> Date: Mon, 13 Nov 2023 20:59:13 -0700 Subject: [PATCH 2/3] Seperate head tracker from skeleton - Head tracker uses F9 - Skeleton uses F8 --- memory-external/classes/config.cpp | 3 +++ memory-external/classes/config.hpp | 1 + memory-external/hacks/hack.hpp | 4 +++- memory-external/main.cpp | 6 ++++-- offsets/offsets.json | 2 +- 5 files changed, 12 insertions(+), 4 deletions(-) diff --git a/memory-external/classes/config.cpp b/memory-external/classes/config.cpp index 79c5cdf..e515959 100644 --- a/memory-external/classes/config.cpp +++ b/memory-external/classes/config.cpp @@ -24,6 +24,8 @@ namespace config { show_box_esp = data["show_box_esp"]; if (data["show_skeleton_esp"].is_boolean()) show_skeleton_esp = data["show_skeleton_esp"]; + if (data["show_head_tracker"].is_boolean()) + show_head_tracker = data["show_head_tracker"]; if (data["team_esp"].is_boolean()) team_esp = data["team_esp"]; if (data["automatic_update"].is_boolean()) @@ -96,6 +98,7 @@ namespace config { data["show_box_esp"] = show_box_esp; data["show_skeleton_esp"] = show_skeleton_esp; + data["show_head_tracker"] = show_head_tracker; data["team_esp"] = team_esp; data["automatic_update"] = automatic_update; data["render_distance"] = render_distance; diff --git a/memory-external/classes/config.hpp b/memory-external/classes/config.hpp index 5a168f2..9ac9966 100644 --- a/memory-external/classes/config.hpp +++ b/memory-external/classes/config.hpp @@ -29,6 +29,7 @@ namespace config { inline int flag_render_distance = 200; inline bool show_box_esp = true; inline bool show_skeleton_esp = false; + inline bool show_head_tracker = false; inline bool show_extra_flags = false; inline RGB esp_box_color_team = { 75, 175, 75 }; diff --git a/memory-external/hacks/hack.hpp b/memory-external/hacks/hack.hpp index b0a3014..9a539d9 100644 --- a/memory-external/hacks/hack.hpp +++ b/memory-external/hacks/hack.hpp @@ -59,7 +59,7 @@ namespace hack { float distance = g_game.localOrigin.calculate_distance(player->origin); int roundedDistance = std::round(distance / 10.f); - if (config::show_skeleton_esp) { + if (config::show_head_tracker) { render::DrawCircle( g::hdcBuffer, player->bones.bonePositions["head"].x, @@ -67,7 +67,9 @@ namespace hack { width / 5, (g_game.localTeam == player->team ? config::esp_skeleton_color_team : config::esp_skeleton_color_enemy) ); + } + if (config::show_skeleton_esp) { // render::DrawLine(g::hdcBuffer, player->bones.bonePositions["head"].x, player->bones.bonePositions["head"].y, player->bones.bonePositions["neck_0"].x, player->bones.bonePositions["neck_0"].y, g_game.localTeam == player->team ? config::esp_skeleton_color_team : config::esp_skeleton_color_enemy); render::DrawLine(g::hdcBuffer, player->bones.bonePositions["neck_0"].x, player->bones.bonePositions["neck_0"].y, player->bones.bonePositions["spine_1"].x, player->bones.bonePositions["spine_1"].y, g_game.localTeam == player->team ? config::esp_skeleton_color_team : config::esp_skeleton_color_enemy); render::DrawLine(g::hdcBuffer, player->bones.bonePositions["spine_1"].x, player->bones.bonePositions["spine_1"].y, player->bones.bonePositions["spine_2"].x, player->bones.bonePositions["spine_2"].y, g_game.localTeam == player->team ? config::esp_skeleton_color_team : config::esp_skeleton_color_enemy); diff --git a/memory-external/main.cpp b/memory-external/main.cpp index bfe0961..01288b0 100644 --- a/memory-external/main.cpp +++ b/memory-external/main.cpp @@ -143,9 +143,9 @@ int main() { std::thread read(read_thread); #ifndef _UC - std::cout << "\n[settings] In Game keybinds:\n\t[F4] enable/disable Box ESP\n\t[F5] enable/disable Team ESP\n\t[F6] enable/disable automatic updates\n\t[F7] enable/disable extra flags\n\t[F8] enable/disable skeleton esp\n\t[end] Unload esp.\n" << std::endl; + std::cout << "\n[settings] In Game keybinds:\n\t[F4] enable/disable Box ESP\n\t[F5] enable/disable Team ESP\n\t[F6] enable/disable automatic updates\n\t[F7] enable/disable extra flags\n\t[F8] enable/disable skeleton esp\n\t[F9] enable/disable head tracker\n\t[end] Unload esp.\n" << std::endl; #else - std::cout << "\n[settings] In Game keybinds:\n\t[F4] enable/disable Box ESP\n\t[F5] enable/disable Team ESP\n\t[F7] enable/disable extra flags[F8] enable/disable skeleton esp\n\t[end] Unload esp.\n" << std::endl; + std::cout << "\n[settings] In Game keybinds:\n\t[F4] enable/disable Box ESP\n\t[F5] enable/disable Team ESP\n\t[F7] enable/disable extra flags\n\t[F8] enable/disable skeleton esp\n\t[F9] enable/disable head tracker\n\t[end] Unload esp.\n" << std::endl; #endif std::cout << "[settings] Make sure you check the config for additional settings!" << std::endl; @@ -165,6 +165,8 @@ int main() { if (GetAsyncKeyState(VK_F8) & 0x8000) { config::show_skeleton_esp = !config::show_skeleton_esp; config::save(); Beep(700, 100); }; + if (GetAsyncKeyState(VK_F9) & 0x8000) { config::show_head_tracker = !config::show_head_tracker; config::save(); Beep(700, 100); }; + TranslateMessage(&msg); DispatchMessage(&msg); diff --git a/offsets/offsets.json b/offsets/offsets.json index 1493057..950680e 100644 --- a/offsets/offsets.json +++ b/offsets/offsets.json @@ -22,4 +22,4 @@ "m_szName": 3096, "m_vOldOrigin": 4644, "m_vecAbsOrigin": 200 -} +} \ No newline at end of file From 90f6b166162d0026ca95253a630841b9a462c8ef Mon Sep 17 00:00:00 2001 From: ifBars <114284668+ifBars@users.noreply.github.com> Date: Mon, 13 Nov 2023 21:08:00 -0700 Subject: [PATCH 3/3] Small performance tweaks - Tweaked reader to only read head part of bones when using only head tracker --- memory-external/hacks/reader.cpp | 24 ++++++++++++++++++++---- memory-external/hacks/reader.hpp | 1 + 2 files changed, 21 insertions(+), 4 deletions(-) diff --git a/memory-external/hacks/reader.cpp b/memory-external/hacks/reader.cpp index 3993682..23029dd 100644 --- a/memory-external/hacks/reader.cpp +++ b/memory-external/hacks/reader.cpp @@ -125,7 +125,7 @@ void CGame::loop() { if (player.health <= 0 || player.health > 100) continue; if (config::team_esp && (player.pCSPlayerPawn == localPlayer)) continue; - + /* * Unused for now, but for a vis check * @@ -156,6 +156,12 @@ void CGame::loop() { player.ReadBones(); } + if (config::show_head_tracker && !config::show_skeleton_esp) { + player.gameSceneNode = process->read(player.pCSPlayerPawn + 0x310); + player.boneArray = process->read(player.gameSceneNode + 0x160 + 0x80); + player.ReadHead(); + } + if (config::show_extra_flags) { /* * Reading values for extra flags is now seperated from the other reads @@ -187,12 +193,22 @@ void CGame::loop() { players.assign(list.begin(), list.end()); } +uintptr_t boneAddress; +Vector3 bonePosition; +int boneIndex; +void CPlayer::ReadHead() { + boneAddress = boneArray + 6 * 32; + bonePosition = g_game.process->read(boneAddress); + bones.bonePositions["head"] = g_game.world_to_screen(&bonePosition); + +} + void CPlayer::ReadBones() { for (const auto& entry : boneMap) { const std::string& boneName = entry.first; - int boneIndex = entry.second; - uintptr_t boneAddress = boneArray + boneIndex * 32; - Vector3 bonePosition = g_game.process->read(boneAddress); + boneIndex = entry.second; + boneAddress = boneArray + boneIndex * 32; + bonePosition = g_game.process->read(boneAddress); bones.bonePositions[boneName] = g_game.world_to_screen(&bonePosition); } } diff --git a/memory-external/hacks/reader.hpp b/memory-external/hacks/reader.hpp index bc50bfd..7141a97 100644 --- a/memory-external/hacks/reader.hpp +++ b/memory-external/hacks/reader.hpp @@ -44,6 +44,7 @@ public: float flashAlpha; std::string weapon; void ReadBones(); + void ReadHead(); }; class CGame