From 1d10d6aa3e3df08a4cb35b0f512372fb754bf342 Mon Sep 17 00:00:00 2001 From: soft as HELL Date: Thu, 16 Feb 2017 15:03:36 +0200 Subject: [PATCH 1/3] Show friendly decoy owner --- src/Hacks/esp.cpp | 36 ++++++++++++++++++++++++++++++------ src/SDK/IClientEntity.h | 5 +++++ src/offsets.cpp | 1 + src/offsets.h | 1 + 4 files changed, 37 insertions(+), 6 deletions(-) diff --git a/src/Hacks/esp.cpp b/src/Hacks/esp.cpp index 3f91ffad4..715321859 100644 --- a/src/Hacks/esp.cpp +++ b/src/Hacks/esp.cpp @@ -801,18 +801,42 @@ void ESP::DrawThrowable(C_BaseEntity* throwable, ClientClass* client) nadeColor = Settings::ESP::smokeColor; break; } - else if (strstr(mat->GetName(), "decoy")) - { - nadeName = "Decoy"; - nadeColor = Settings::ESP::decoyColor; - break; - } else if (strstr(mat->GetName(), "incendiary") || strstr(mat->GetName(), "molotov")) { nadeName = "Molotov"; nadeColor = Settings::ESP::molotovColor; break; } + else if (strstr(mat->GetName(), "decoy")) + { + nadeName = "Decoy"; + + C_BasePlayer* localplayer = (C_BasePlayer*) entityList->GetClientEntity(engine->GetLocalPlayer()); + if (!localplayer) + break; + + if (throwable->GetTeam() == localplayer->GetTeam()) + { + nadeColor = Settings::ESP::allyColor; + + int owner = throwable->GetOwnerEntity() & 0xFFF; + if (!owner) + break; + + IEngineClient::player_info_t entityInformation; + engine->GetPlayerInfo(owner, &entityInformation); + + nadeName += "("; + nadeName += entityInformation.name; + nadeName += ")"; + } + else + { + nadeColor = Settings::ESP::decoyColor; + } + + break; + } } DrawEntity(throwable, nadeName.c_str(), Color::FromImColor(nadeColor)); diff --git a/src/SDK/IClientEntity.h b/src/SDK/IClientEntity.h index 2df2c4bff..b56fd14df 100644 --- a/src/SDK/IClientEntity.h +++ b/src/SDK/IClientEntity.h @@ -179,6 +179,11 @@ class C_BaseEntity : public IClientEntity { return *(TeamID*)((uintptr_t)this + offsets.DT_BaseEntity.m_iTeamNum); } + + int GetOwnerEntity() + { + return *(int*)((uintptr_t)this + offsets.DT_BaseEntity.m_hOwnerEntity); + } Vector GetVecOrigin() { diff --git a/src/offsets.cpp b/src/offsets.cpp index 99b798d43..921ca367e 100644 --- a/src/offsets.cpp +++ b/src/offsets.cpp @@ -30,6 +30,7 @@ void Offsets::GetOffsets() offsets.DT_BaseEntity.m_MoveType = offsets.DT_BaseEntity.m_nRenderMode + 1; offsets.DT_BaseEntity.m_Collision = NetVarManager::GetOffset(tables, "DT_BaseEntity", "m_Collision"); offsets.DT_BaseEntity.m_bSpotted = NetVarManager::GetOffset(tables, "DT_BaseEntity", "m_bSpotted"); + offsets.DT_BaseEntity.m_hOwnerEntity = NetVarManager::GetOffset(tables, "DT_BaseEntity", "m_hOwnerEntity"); offsets.DT_BaseCombatCharacter.m_hActiveWeapon = NetVarManager::GetOffset(tables, "DT_BaseCombatCharacter", "m_hActiveWeapon"); offsets.DT_BaseCombatCharacter.m_hMyWeapons = NetVarManager::GetOffset(tables, "DT_BaseCombatCharacter", "m_hMyWeapons") / 2; diff --git a/src/offsets.h b/src/offsets.h index f28f89ea5..4914358f7 100644 --- a/src/offsets.h +++ b/src/offsets.h @@ -33,6 +33,7 @@ struct COffsets std::ptrdiff_t m_MoveType; std::ptrdiff_t m_Collision; std::ptrdiff_t m_bSpotted; + std::ptrdiff_t m_hOwnerEntity; } DT_BaseEntity; struct From 36741ad351b2a55e8e00c5a501e26b883077e634 Mon Sep 17 00:00:00 2001 From: soft as HELL Date: Thu, 16 Feb 2017 15:14:48 +0200 Subject: [PATCH 2/3] Always use decoy color --- src/Hacks/esp.cpp | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/src/Hacks/esp.cpp b/src/Hacks/esp.cpp index 715321859..a684906c7 100644 --- a/src/Hacks/esp.cpp +++ b/src/Hacks/esp.cpp @@ -810,6 +810,7 @@ void ESP::DrawThrowable(C_BaseEntity* throwable, ClientClass* client) else if (strstr(mat->GetName(), "decoy")) { nadeName = "Decoy"; + nadeColor = Settings::ESP::decoyColor; C_BasePlayer* localplayer = (C_BasePlayer*) entityList->GetClientEntity(engine->GetLocalPlayer()); if (!localplayer) @@ -817,8 +818,6 @@ void ESP::DrawThrowable(C_BaseEntity* throwable, ClientClass* client) if (throwable->GetTeam() == localplayer->GetTeam()) { - nadeColor = Settings::ESP::allyColor; - int owner = throwable->GetOwnerEntity() & 0xFFF; if (!owner) break; @@ -830,10 +829,6 @@ void ESP::DrawThrowable(C_BaseEntity* throwable, ClientClass* client) nadeName += entityInformation.name; nadeName += ")"; } - else - { - nadeColor = Settings::ESP::decoyColor; - } break; } From 28c6baae5733df474d789e5b80103f7adc57d024 Mon Sep 17 00:00:00 2001 From: soft as HELL Date: Thu, 16 Feb 2017 15:32:25 +0200 Subject: [PATCH 3/3] Add show_decoy_owner in settings --- src/Hacks/esp.cpp | 6 +++++- src/settings.cpp | 2 ++ src/settings.h | 1 + 3 files changed, 8 insertions(+), 1 deletion(-) diff --git a/src/Hacks/esp.cpp b/src/Hacks/esp.cpp index a684906c7..e1a0baa6e 100644 --- a/src/Hacks/esp.cpp +++ b/src/Hacks/esp.cpp @@ -4,6 +4,7 @@ #include "../Utils/skins.h" bool Settings::ESP::enabled = false; +bool Settings::ESP::decoyShowOwner = false; TeamColorType Settings::ESP::teamColorType = TeamColorType::RELATIVE; ImColor Settings::ESP::enemyColor = ImColor(240, 60, 60, 255); ImColor Settings::ESP::enemyVisibleColor = ImColor(240, 185, 60, 255); @@ -810,8 +811,11 @@ void ESP::DrawThrowable(C_BaseEntity* throwable, ClientClass* client) else if (strstr(mat->GetName(), "decoy")) { nadeName = "Decoy"; - nadeColor = Settings::ESP::decoyColor; + nadeColor = Settings::ESP::decoyColor; + if (!Settings::ESP::decoyShowOwner) + break; + C_BasePlayer* localplayer = (C_BasePlayer*) entityList->GetClientEntity(engine->GetLocalPlayer()); if (!localplayer) break; diff --git a/src/settings.cpp b/src/settings.cpp index 064de804a..9089fe8b4 100644 --- a/src/settings.cpp +++ b/src/settings.cpp @@ -170,6 +170,7 @@ void Settings::LoadDefaultsOrSave(std::string path) settings["AntiAim"]["AutoDisable"]["knife_held"] = Settings::AntiAim::AutoDisable::knifeHeld; settings["ESP"]["enabled"] = Settings::ESP::enabled; + settings["ESP"]["decoy_show_owner"] = Settings::ESP::decoyShowOwner; LoadUIColor(settings["ESP"]["enemy_color"], Settings::ESP::enemyColor); LoadUIColor(settings["ESP"]["enemy_visible_color"], Settings::ESP::enemyVisibleColor); LoadUIColor(settings["ESP"]["ally_color"], Settings::ESP::allyColor); @@ -566,6 +567,7 @@ void Settings::LoadConfig(std::string path) GetVal(settings["AntiAim"]["AutoDisable"]["no_enemy"], &Settings::AntiAim::AutoDisable::noEnemy); GetVal(settings["ESP"]["enabled"], &Settings::ESP::enabled); + GetVal(settings["ESP"]["decoy_show_owner"], &Settings::ESP::decoyShowOwner); GetVal(settings["ESP"]["enemy_color"], &Settings::ESP::enemyColor); GetVal(settings["ESP"]["enemy_visible_color"], &Settings::ESP::enemyVisibleColor); GetVal(settings["ESP"]["ally_color"], &Settings::ESP::allyColor); diff --git a/src/settings.h b/src/settings.h index caf3f0532..bf9afa9e2 100644 --- a/src/settings.h +++ b/src/settings.h @@ -436,6 +436,7 @@ namespace Settings namespace ESP { extern bool enabled; + extern bool decoyShowOwner; extern TeamColorType teamColorType; extern ImColor enemyColor; extern ImColor allyColor;