diff --git a/memory-external/classes/auto_updater.cpp b/memory-external/classes/auto_updater.cpp index 74efc90..a8acb17 100644 --- a/memory-external/classes/auto_updater.cpp +++ b/memory-external/classes/auto_updater.cpp @@ -231,10 +231,12 @@ namespace updater { offsets::m_iHealth = data["m_iHealth"]; if (data["m_hPlayerPawn"].is_number()) offsets::m_hPlayerPawn = data["m_hPlayerPawn"]; - if (data["dwSanitizedName"].is_number()) - offsets::m_sSanitizedPlayerName = data["m_sSanitizedPlayerName"]; if (data["m_iTeamNum"].is_number()) offsets::m_iTeamNum = data["m_iTeamNum"]; + if (data["m_hController"].is_number()) + offsets::m_hController = data["m_hController"]; + if (data["m_iszPlayerName"].is_number()) + offsets::m_iszPlayerName = data["m_iszPlayerName"]; return true; } @@ -266,8 +268,9 @@ namespace updater { data["m_ArmorValue"] = offsets::m_ArmorValue; data["m_iHealth"] = offsets::m_iHealth; data["m_hPlayerPawn"] = offsets::m_hPlayerPawn; - data["m_sSanitizedPlayerName"] = offsets::m_sSanitizedPlayerName; data["m_iTeamNum"] = offsets::m_iTeamNum; + data["m_hController"] = offsets::m_hController; + data["m_iszPlayerName"] = offsets::m_iszPlayerName; std::ofstream output(file_path); output << std::setw(4) << data << std::endl; diff --git a/memory-external/classes/auto_updater.hpp b/memory-external/classes/auto_updater.hpp index 1cc2e44..0a88e75 100644 --- a/memory-external/classes/auto_updater.hpp +++ b/memory-external/classes/auto_updater.hpp @@ -55,7 +55,8 @@ namespace updater { inline std::ptrdiff_t m_ArmorValue = 0x0; inline std::ptrdiff_t m_iHealth = 0x0; inline std::ptrdiff_t m_hPlayerPawn = 0x0; - inline std::ptrdiff_t m_sSanitizedPlayerName = 0x0; inline std::ptrdiff_t m_iTeamNum = 0x0; + inline std::ptrdiff_t m_hController = 0x0; + inline std::ptrdiff_t m_iszPlayerName = 0x0; } } diff --git a/memory-external/hacks/reader.cpp b/memory-external/hacks/reader.cpp index 9a6451c..354cb7e 100644 --- a/memory-external/hacks/reader.cpp +++ b/memory-external/hacks/reader.cpp @@ -139,11 +139,26 @@ void CGame::loop() { * player.is_spotted = process->read(player.spottedState + 0x8); // bSpotted */ - playerNameData = process->read(player.entity + updater::offsets::m_sSanitizedPlayerName); - char buffer[256]; - process->read_raw(playerNameData, buffer, sizeof(buffer)); - std::string name = std::string(buffer); - player.name = name; + + + uint32_t handle = process->read(player.pCSPlayerPawn + updater::offsets::m_hController); + int index = handle & 0x7FFF; + int segment = index >> 9; + int entry = index & 0x1FF; + + uintptr_t controllerListSegment = process->read(entity_list + 0x8 * segment + 0x10); + uintptr_t controller = process->read(controllerListSegment + 120 * entry); + + if (!controller || controller > 0x7FFFFFFFFFFF) + continue; + + char buffer[256] = {}; + uintptr_t name_ptr = process->read(controller + updater::offsets::m_iszPlayerName); + process->read_raw(name_ptr, buffer, sizeof(buffer) - 1); + buffer[sizeof(buffer) - 1] = '\0'; + player.name = buffer; + + player.gameSceneNode = process->read(player.pCSPlayerPawn + updater::offsets::m_pGameSceneNode); player.origin = process->read(player.pCSPlayerPawn + updater::offsets::m_vOldOrigin); diff --git a/offsets/offsets.json b/offsets/offsets.json index 2f2fd53..eeae8c6 100644 --- a/offsets/offsets.json +++ b/offsets/offsets.json @@ -1,26 +1,25 @@ { - "build_number": 14086, - "dwBuildNumber": 5508068, - "dwEntityList": 27280608, - "dwLocalPlayer": 25526480, - "dwPlantedC4": 27728960, - "dwViewMatrix": 27710080, - "m_ArmorValue": 9244, - "m_bIsDefusing": 9194, - "m_flC4Blow": 4032, - "m_flFlashOverlayAlpha": 5120, - "m_flNextBeep": 4028, - "m_flTimerLength": 4040, - "m_hPlayerPawn": 2084, - "m_iAccount": 64, - "m_iHealth": 836, - "m_iTeamNum": 995, - "m_pClippingWeapon": 5024, - "m_pGameSceneNode": 808, - "m_pInGameMoneyServices": 1824, - "m_sSanitizedPlayerName": 1912, - "m_szName": 3360, - "m_vOldOrigin": 4900, - "m_vecAbsOrigin": 208, - "dwLocalPlayerController": 27602208 + "dwLocalPlayerController": 27602208, + "dwEntityList": 27280608, + "dwViewMatrix": 27710080, + "dwBuildNumber": 5508068, + "dwPlantedC4": 27728960, + "m_flC4Blow": 4032, + "m_flNextBeep": 4028, + "m_flTimerLength": 4040, + "m_pInGameMoneyServices": 1824, + "m_iAccount": 64, + "m_vecAbsOrigin": 208, + "m_vOldOrigin": 4900, + "m_pGameSceneNode": 808, + "m_flFlashOverlayAlpha": 5120, + "m_bIsDefusing": 9194, + "m_szName": 0, + "m_pClippingWeapon": 5024, + "m_ArmorValue": 9244, + "m_iHealth": 836, + "m_hPlayerPawn": 2084, + "m_iTeamNum": 995, + "m_hController": 3112, + "m_iszPlayerName": 1360 } \ No newline at end of file