From 739f15aeb2bd096d532a0df0422ba22af23e814a Mon Sep 17 00:00:00 2001 From: KnucklesB Date: Thu, 18 Jul 2024 17:18:17 -0300 Subject: [PATCH] Added toggle to the key ESP, fixed demon ESP, and resolved ESP crashes --- user/features/esp/esp.cpp | 53 ++++++++++++++++++++++++-------------- user/features/esp/esp.hpp | 5 ++++ user/features/menu.cpp | 12 +++++++++ user/hooks/hooks.cpp | 34 +++++++++++++++++------- user/main.cpp | 2 +- user/settings/settings.cpp | 2 ++ user/settings/settings.hpp | 2 ++ 7 files changed, 81 insertions(+), 29 deletions(-) diff --git a/user/features/esp/esp.cpp b/user/features/esp/esp.cpp index 9604745..6bd1da5 100644 --- a/user/features/esp/esp.cpp +++ b/user/features/esp/esp.cpp @@ -137,37 +137,52 @@ void ESP::RunDemonESP() { std::vector demons_c = { "SurvivalDemonBehaviour", "SpiderBehaviour", "GhostBehaviour", "BoarBehaviour", "CorpseBehaviour" }; - for (std::string& class_ : demons_c) { - if (SceneName() != "Menu") - return; - app::Object_1__Array* ents = Object::FindObjectsOfType(class_.c_str(), ""); - if (ents == nullptr) - continue; - - std::string name = class_; - string_replace(name, "Survival", ""); - string_replace(name, "Behaviour", ""); - ComputePositionAndDrawESP(ents, col, false, name); + // There's might be a better way to do it, but i'm lazy : ) + if (name_demon == "N/A") { + for (std::string& class_ : demons_c) { + ents_demon = RefreshEntList(ents_demon, class_.c_str(), ""); + if (ents_demon && ents_demon->max_length > 0) { + name_demon = class_; + } + } } -} + else { + ents_demon = RefreshEntList(ents_demon, name_demon.c_str(), ""); + } + + if (ents_demon == nullptr) return; + app::Object_1__Array* ents = ents_demon; + std::string name = name_demon; + string_replace(name, "Survival", ""); + string_replace(name, "Behaviour", ""); + ComputePositionAndDrawESP(ents, col, false, name); +} void ESP::RunItemsESP() { ImColor col = ImColor{ settings::item_esp_color[0], settings::item_esp_color[1], settings::item_esp_color[2], settings::item_esp_color[3] }; ents_item = RefreshEntList(ents_item, "SurvivalInteractable"); - if (ents_item == nullptr) return; + if (ents_item != nullptr) { - app::Object_1__Array* ents = ents_item; + app::Object_1__Array* ents = ents_item; - if (ents != nullptr || !Object::IsNull(ents->vector[0])) { - ComputePositionAndDrawESP(ents, col, true); + if (ents != nullptr || !Object::IsNull(ents->vector[0])) { + ComputePositionAndDrawESP(ents, col, true); + } } - if (SceneName() != "Menu") - return; - ents = Object::FindObjectsOfType("KeyBehaviour", ""); + +} + +void ESP::RunKeyESP() { + ImColor col = ImColor{ settings::key_esp_color[0], settings::key_esp_color[1], settings::key_esp_color[2], settings::key_esp_color[3] }; + + app::Object_1__Array* ents = ents_key; + + if (ents_key == nullptr) return; + if (ents != nullptr || !Object::IsNull(ents->vector[0])) { ComputePositionAndDrawESP(ents, col, false, "Key"); } diff --git a/user/features/esp/esp.hpp b/user/features/esp/esp.hpp index 83d4b83..14705a5 100644 --- a/user/features/esp/esp.hpp +++ b/user/features/esp/esp.hpp @@ -8,7 +8,11 @@ namespace ESP { // TEMP FIX #60 inline app::GameObject__Array* ents_azazel = NULL; inline app::Object_1__Array* ents_item; + inline app::Object_1__Array* ents_key; inline app::Object_1__Array* ents_goat; + inline app::Object_1__Array* ents_demon; + + inline std::string name_demon = "N/A"; inline int time_refresh = 100; inline int time_counter = 0; @@ -18,6 +22,7 @@ namespace ESP { void RunPlayersESP(); void RunGoatsESP(); void RunItemsESP(); + void RunKeyESP(); void RunDemonESP(); void RunAzazelESP(); } diff --git a/user/features/menu.cpp b/user/features/menu.cpp index 0768339..6d035b2 100644 --- a/user/features/menu.cpp +++ b/user/features/menu.cpp @@ -115,6 +115,18 @@ void DrawVisualsTab() { ImGui::EndPopup(); } + ImGui::Checkbox("Keys ESP", &settings::key_esp); + ImGui::SameLine(); + bool open_kcolor_popup = ImGui::ColorButton("kespcolor", ImVec4(settings::key_esp_color[0], settings::key_esp_color[1], settings::key_esp_color[2], settings::key_esp_color[3])); + if (open_kcolor_popup) + { + ImGui::OpenPopup("kesppop"); + } + if (ImGui::BeginPopup("kesppop")) { + ImGui::ColorPicker4("Key ESP color", (float*)&settings::key_esp_color); + ImGui::EndPopup(); + } + ImGui::Checkbox("Demon ESP", &settings::demon_esp); ImGui::SameLine(); bool open_dcolor_popup = ImGui::ColorButton("despcolor", ImVec4(settings::demon_esp_color[0], settings::demon_esp_color[1], settings::demon_esp_color[2], settings::demon_esp_color[3])); diff --git a/user/hooks/hooks.cpp b/user/hooks/hooks.cpp index 61c7640..4305b3e 100644 --- a/user/hooks/hooks.cpp +++ b/user/hooks/hooks.cpp @@ -97,6 +97,7 @@ void __stdcall hNolanBehaviour_Update(app::NolanBehaviour* __this, MethodInfo* m // TEMP FIX #60 if (SceneName() != "Menu") { ESP::ents_goat = Object::FindObjectsOfType("GoatBehaviour", ""); + ESP::ents_key = Object::FindObjectsOfType("KeyInteractable", ""); } if (settings::spoof_level && IsLocalPlayer(__this)) { @@ -771,17 +772,20 @@ HRESULT __stdcall hookD3D11Present(IDXGISwapChain* pSwapChain, UINT SyncInterval if (settings::player_esp) ESP::RunPlayersESP(); - if (IsInGame() && !IsSequencePlaying()) { - if (settings::goat_esp && SceneName() != "Menu") + if (IsInGame() && !IsSequencePlaying() && SceneName() != "Menu") { + if (settings::goat_esp) ESP::RunGoatsESP(); - if (settings::item_esp && SceneName() != "Menu") + if (settings::item_esp) ESP::RunItemsESP(); + if (settings::key_esp) + ESP::RunKeyESP(); + if (settings::demon_esp) ESP::RunDemonESP(); - if (settings::azazel_esp && SceneName() != "Menu") + if (settings::azazel_esp) ESP::RunAzazelESP(); ESP::time_counter += 1; @@ -791,11 +795,23 @@ HRESULT __stdcall hookD3D11Present(IDXGISwapChain* pSwapChain, UINT SyncInterval } } if (!IsInGame() && SceneName() == "Menu") { - if (settings::item_esp) { - ESP::ents_azazel = nullptr; - ESP::ents_item = nullptr; - ESP::ents_goat = nullptr; - } + if (settings::item_esp) + ESP::ents_item = nullptr; + + if (settings::goat_esp) + ESP::ents_goat = nullptr; + + if (settings::azazel_esp) + ESP::ents_azazel = nullptr; + + if (settings::key_esp) + ESP::ents_key = nullptr; + + if (settings::demon_esp) { + ESP::ents_demon = nullptr; + ESP::name_demon = "N/A"; + }; + } diff --git a/user/main.cpp b/user/main.cpp index 5a4a7ad..7e0dfe2 100644 --- a/user/main.cpp +++ b/user/main.cpp @@ -23,7 +23,7 @@ #include "players/players.h" -#define CLIENT_VERSION "4.1" +#define CLIENT_VERSION "4.2" // Set the name of your log file here extern const LPCWSTR LOG_FILE = L"DevourClient.txt"; diff --git a/user/settings/settings.cpp b/user/settings/settings.cpp index c54024b..5e1e0ee 100644 --- a/user/settings/settings.cpp +++ b/user/settings/settings.cpp @@ -25,6 +25,8 @@ namespace settings { float demon_esp_color[4] = { 255.f, 0, 0, 255.f }; bool goat_esp = false; float goat_esp_color[4] = { 247.f, 156.f, 37.f, 255.f }; + bool key_esp = false; + float key_esp_color[4] = { 251.f,225.f,104.f,255.f }; bool chat_spam = false; std::string message = "deez nuts"; diff --git a/user/settings/settings.hpp b/user/settings/settings.hpp index c17b0a3..caa5e03 100644 --- a/user/settings/settings.hpp +++ b/user/settings/settings.hpp @@ -29,6 +29,8 @@ namespace settings { extern float demon_esp_color[4]; extern bool goat_esp; extern float goat_esp_color[4]; + extern bool key_esp; + extern float key_esp_color[4]; extern bool chat_spam; extern std::string message; extern bool spoof_level;