diff --git a/apex_dma/apex_dma.cpp b/apex_dma/apex_dma.cpp index 6287d24..5bc7dbf 100644 --- a/apex_dma/apex_dma.cpp +++ b/apex_dma/apex_dma.cpp @@ -33,6 +33,7 @@ int safe_level = 0; bool aiming = false; extern float smooth; extern int bone; +bool thirdperson = false; bool actions_t = false; bool esp_t = false; @@ -140,9 +141,21 @@ void DoActions() while (actions_t) { std::this_thread::sleep_for(std::chrono::milliseconds(1)); + bool tmp_thirdperson = false; while (g_Base!=0 && c_Base!=0) { - std::this_thread::sleep_for(std::chrono::milliseconds(30)); + std::this_thread::sleep_for(std::chrono::milliseconds(30)); + if(thirdperson && !tmp_thirdperson) + { + apex_mem.Write(g_Base + OFFSET_THIRDPERSON, 1); + tmp_thirdperson = true; + } + else if(!thirdperson && tmp_thirdperson) + { + apex_mem.Write(g_Base + OFFSET_THIRDPERSON, -1); + tmp_thirdperson = false; + } + uint64_t LocalPlayer = 0; apex_mem.Read(g_Base + OFFSET_LOCAL_ENT, LocalPlayer); if (LocalPlayer == 0) continue; @@ -596,6 +609,8 @@ static void set_vars(uint64_t add_addr) client_mem.Read(add_addr + sizeof(uint64_t)*15, max_fov_addr); uint64_t bone_addr = 0; client_mem.Read(add_addr + sizeof(uint64_t)*16, bone_addr); + uint64_t thirdperson_addr = 0; + client_mem.Read(add_addr + sizeof(uint64_t)*17, thirdperson_addr); int tmp = 0; client_mem.Read(spec_addr, tmp); @@ -618,7 +633,6 @@ static void set_vars(uint64_t add_addr) std::this_thread::sleep_for(std::chrono::milliseconds(1)); client_mem.Write(all_spec_addr, allied_spectators); client_mem.Write(spec_addr, spectators); - client_mem.Write(all_spec_addr, allied_spectators); client_mem.Write(g_Base_addr, g_Base); client_mem.Read(aim_addr, aim); @@ -632,6 +646,7 @@ static void set_vars(uint64_t add_addr) client_mem.Read(smooth_addr, smooth); client_mem.Read(max_fov_addr, max_fov); client_mem.Read(bone_addr, bone); + client_mem.Read(thirdperson_addr, thirdperson); if(esp && next) { @@ -799,4 +814,4 @@ int main() } return 0; -} +} \ No newline at end of file diff --git a/apex_dma/offsets.h b/apex_dma/offsets.h index 81d9e80..0dac0da 100644 --- a/apex_dma/offsets.h +++ b/apex_dma/offsets.h @@ -8,6 +8,7 @@ #define OFFSET_ENTITYLIST 0x18eda78 #define OFFSET_LOCAL_ENT 0x1c9d198 //LocalPlayer #define OFFSET_NAME_LIST 0x81af540 + #define OFFSET_THIRDPERSON 0x018d42d0 + 0x6c //thirdperson_override + 0x6c #define OFFSET_TEAM 0x448 //m_iTeamNum #define OFFSET_HEALTH 0x438 //m_iHealth diff --git a/apex_guest/Client/Client/main.cpp b/apex_guest/Client/Client/main.cpp index 60cc824..e38901f 100644 --- a/apex_guest/Client/Client/main.cpp +++ b/apex_guest/Client/Client/main.cpp @@ -36,11 +36,12 @@ float max_dist = 200.0f*40.0f; //read float smooth = 12.0f; float max_fov = 15.0f; int bone = 2; +bool thirdperson = false; bool valid = false; //write bool next = false; //read write -uint64_t add[17]; +uint64_t add[18]; bool k_f5 = 0; bool k_f6 = 0; @@ -137,6 +138,7 @@ int main(int argc, char** argv) add[14] = (uintptr_t)&smooth; add[15] = (uintptr_t)&max_fov; add[16] = (uintptr_t)&bone; + add[17] = (uintptr_t)&thirdperson; printf(XorStr("add offset: 0x%I64x\n"), (uint64_t)&add[0] - (uint64_t)GetModuleHandle(NULL)); Overlay ov1 = Overlay(); ov1.Start(); diff --git a/apex_guest/Client/Client/overlay.cpp b/apex_guest/Client/Client/overlay.cpp index 92cee93..866813a 100644 --- a/apex_guest/Client/Client/overlay.cpp +++ b/apex_guest/Client/Client/overlay.cpp @@ -14,6 +14,7 @@ extern float max_dist; extern float smooth; extern float max_fov; extern int bone; +extern bool thirdperson; int width; int height; bool k_leftclick = false; @@ -169,6 +170,7 @@ void Overlay::RenderMenu() ImGui::Checkbox(XorStr("Glow items"), &item_glow); ImGui::Checkbox(XorStr("Glow players"), &player_glow); + ImGui::Checkbox(XorStr("Thirdperson"), &thirdperson); ImGui::EndTabItem(); } if (ImGui::BeginTabItem(XorStr("Config")))