From ed115d3a338bd96a8bcc446115ee11a15dc02a05 Mon Sep 17 00:00:00 2001 From: TotallyNotElite <1yourexperiment@protonmail.com> Date: Sun, 13 Oct 2019 17:12:53 +0200 Subject: [PATCH 1/7] BulletTracers.cpp: Use cmd viewangles instead Adds support for aimbot --- src/hacks/BulletTracers.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/hacks/BulletTracers.cpp b/src/hacks/BulletTracers.cpp index 5f907c1b..65cb1c66 100644 --- a/src/hacks/BulletTracers.cpp +++ b/src/hacks/BulletTracers.cpp @@ -164,7 +164,7 @@ IClientEntity *GetActiveTFWeapon_detour(IClientEntity *this_ /* C_TFPlayer * */) QAngle angle = *(QAngle *) &NET_VECTOR(this_, netvar.angEyeAngles); if (isLocal) { - g_IEngine->GetViewAngles(angle); + angle = VectorToQAngle(current_user_cmd->viewangles); eyePos = g_pLocalPlayer->v_Eye; } Vector forward; From df9adbbdfb667260236b5413892974a82a95599f Mon Sep 17 00:00:00 2001 From: TotallyNotElite <1yourexperiment@protonmail.com> Date: Sun, 13 Oct 2019 17:16:27 +0200 Subject: [PATCH 2/7] Backtrack.cpp: Add latency rampup Ramps up the latency over 2 seconds to avoid unwanted teleportation --- include/hacks/Backtrack.hpp | 9 --------- src/hacks/Backtrack.cpp | 26 +++++++++++++++----------- 2 files changed, 15 insertions(+), 20 deletions(-) diff --git a/include/hacks/Backtrack.hpp b/include/hacks/Backtrack.hpp index 281ba912..84360642 100644 --- a/include/hacks/Backtrack.hpp +++ b/include/hacks/Backtrack.hpp @@ -32,15 +32,6 @@ struct BacktrackData int index{ 0 }; matrix3x4_t bones[128]{}; }; -struct BestTickData -{ - int tickcount{ 0 }; - int tick{ 0 }; - bool operator<(const BestTickData &rhs) const - { - return tickcount < rhs.tickcount; - } -}; void Init(); void AddLatencyToNetchan(INetChannel *); void UpdateIncomingSequences(); diff --git a/src/hacks/Backtrack.cpp b/src/hacks/Backtrack.cpp index 24b8e4af..30a73de3 100644 --- a/src/hacks/Backtrack.cpp +++ b/src/hacks/Backtrack.cpp @@ -24,6 +24,7 @@ static settings::Int slots{ "backtrack.slots", "0" }; settings::Boolean enable{ "backtrack.enable", "false" }; settings::Boolean backtrack_chams_glow{ "backtrack.chams_glow", "true" }; settings::Int latency{ "backtrack.latency", "0" }; +settings::Int enable_latency_rampup{ "backtrack.latency.rampup", "true" }; void EmptyBacktrackData(BacktrackData &i); std::pair getBestEntBestTick(); @@ -51,19 +52,14 @@ void UpdateIncomingSequences() sequences.pop_back(); } } + void AddLatencyToNetchan(INetChannel *ch) { if (!isBacktrackEnabled) return; - float Latency = *latency; - if (Latency > 1000.0f) - Latency = 800.0f; - Latency -= getRealLatency(); - if (Latency < 0.0f) - Latency = 0.0f; for (auto &seq : sequences) { - if (g_GlobalVars->realtime - seq.curtime > Latency / 1000.0f) + if (g_GlobalVars->realtime - seq.curtime > getLatency() / 1000.0f) { ch->m_nInReliableState = seq.inreliablestate; ch->m_nInSequenceNr = seq.sequencenr; @@ -84,13 +80,21 @@ int BestTick = -1; int iBestTarget = -1; bool istickvalid[33][66]{}; bool istickinvalid[33][66]{}; +static float latency_rampup = 0.0f; + static void Run() { if (!shouldBacktrack()) { isBacktrackEnabled = false; + latency_rampup = 0; return; } + + // Limit to 2 ticks + latency_rampup += 1.0f / 132.0f; + latency_rampup = std::min(latency_rampup, 1.0f); + UpdateIncomingSequences(); isBacktrackEnabled = true; @@ -341,11 +345,11 @@ float getLatency() if (!ch) return 0; float Latency = *latency; - if (Latency > 1000.0f) - Latency = 800.0f; + Latency = std::min(Latency, 800.0f); Latency -= getRealLatency(); - if (Latency < 0.0f) - Latency = 0.0f; + Latency = std::max(Latency, 0.0f); + if (enable_latency_rampup) + Latency = Latency * latency_rampup; return Latency; } From 6a9fb6533d84dd8641bf860bb7ae2e2b73b9f13f Mon Sep 17 00:00:00 2001 From: TotallyNotElite <1yourexperiment@protonmail.com> Date: Sun, 13 Oct 2019 17:18:04 +0200 Subject: [PATCH 3/7] Aimbot.cpp: Set preferred hitbox to spine_2 Improves hit chances and damage for non headshotting weapons by default --- src/hacks/Aimbot.cpp | 18 ++---------------- 1 file changed, 2 insertions(+), 16 deletions(-) diff --git a/src/hacks/Aimbot.cpp b/src/hacks/Aimbot.cpp index 79cad212..4716c746 100644 --- a/src/hacks/Aimbot.cpp +++ b/src/hacks/Aimbot.cpp @@ -793,21 +793,7 @@ void Aim(CachedEntity *entity) maxz -= (maxz - minz) / 6; minz += (maxz - minz) / 6; // Create Vectors - const Vector positions[13] = { - { minx, centery, minz }, - { maxx, centery, minz }, - { minx, centery, maxz }, - { maxx, centery, maxz }, - { centerx, miny, minz }, - { centerx, maxy, minz }, - { centerx, miny, maxz }, - { centerx, maxy, maxz }, - { minx, miny, centerz }, - { maxx, maxy, centerz }, - { minx, miny, centerz }, - { maxx, maxy, centerz }, - hitboxcenter - }; + const Vector positions[13] = { { minx, centery, minz }, { maxx, centery, minz }, { minx, centery, maxz }, { maxx, centery, maxz }, { centerx, miny, minz }, { centerx, maxy, minz }, { centerx, miny, maxz }, { centerx, maxy, maxz }, { minx, miny, centerz }, { maxx, maxy, centerz }, { minx, miny, centerz }, { maxx, maxy, centerz }, hitboxcenter }; for (int i = 0; i < 13; ++i) if (IsVectorVisible(g_pLocalPlayer->v_Eye, positions[i])) { @@ -1049,7 +1035,7 @@ int BestHitbox(CachedEntity *target) IF_GAME(IsTF()) { int ci = g_pLocalPlayer->weapon()->m_iClassID(); - preferred = hitbox_t::pelvis; + preferred = hitbox_t::spine_2; // Sniper rifle if (g_pLocalPlayer->holding_sniper_rifle) { From 821318551cbf74877c8929024e134cae7da36575 Mon Sep 17 00:00:00 2001 From: TotallyNotElite <38938720+TotallyNotElite@users.noreply.github.com> Date: Sun, 13 Oct 2019 18:00:50 +0200 Subject: [PATCH 4/7] Update Backtrack.cpp --- src/hacks/Backtrack.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/hacks/Backtrack.cpp b/src/hacks/Backtrack.cpp index 30a73de3..b4142ecd 100644 --- a/src/hacks/Backtrack.cpp +++ b/src/hacks/Backtrack.cpp @@ -24,7 +24,7 @@ static settings::Int slots{ "backtrack.slots", "0" }; settings::Boolean enable{ "backtrack.enable", "false" }; settings::Boolean backtrack_chams_glow{ "backtrack.chams_glow", "true" }; settings::Int latency{ "backtrack.latency", "0" }; -settings::Int enable_latency_rampup{ "backtrack.latency.rampup", "true" }; +settings::Bool enable_latency_rampup{ "backtrack.latency.rampup", "true" }; void EmptyBacktrackData(BacktrackData &i); std::pair getBestEntBestTick(); From f8a063295e8a985c6dae87560a797d61c7b02905 Mon Sep 17 00:00:00 2001 From: TotallyNotElite <38938720+TotallyNotElite@users.noreply.github.com> Date: Sun, 13 Oct 2019 18:01:08 +0200 Subject: [PATCH 5/7] Update Backtrack.cpp --- src/hacks/Backtrack.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/hacks/Backtrack.cpp b/src/hacks/Backtrack.cpp index b4142ecd..3f2836d1 100644 --- a/src/hacks/Backtrack.cpp +++ b/src/hacks/Backtrack.cpp @@ -24,7 +24,7 @@ static settings::Int slots{ "backtrack.slots", "0" }; settings::Boolean enable{ "backtrack.enable", "false" }; settings::Boolean backtrack_chams_glow{ "backtrack.chams_glow", "true" }; settings::Int latency{ "backtrack.latency", "0" }; -settings::Bool enable_latency_rampup{ "backtrack.latency.rampup", "true" }; +settings::Boolean enable_latency_rampup{ "backtrack.latency.rampup", "true" }; void EmptyBacktrackData(BacktrackData &i); std::pair getBestEntBestTick(); From 3f3c7b2dcd0b499cb24ec2c7b983df71ed3cc7de Mon Sep 17 00:00:00 2001 From: TotallyNotElite <1yourexperiment@protonmail.com> Date: Sun, 13 Oct 2019 18:21:28 +0200 Subject: [PATCH 6/7] reduce rampup time to 1 second --- src/hacks/Backtrack.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/hacks/Backtrack.cpp b/src/hacks/Backtrack.cpp index 3f2836d1..75bd08fe 100644 --- a/src/hacks/Backtrack.cpp +++ b/src/hacks/Backtrack.cpp @@ -92,7 +92,7 @@ static void Run() } // Limit to 2 ticks - latency_rampup += 1.0f / 132.0f; + latency_rampup += 1.0f / 66.0f; latency_rampup = std::min(latency_rampup, 1.0f); UpdateIncomingSequences(); From 7a84862ee62fccb635d7d16384167a5082258658 Mon Sep 17 00:00:00 2001 From: TotallyNotElite <1yourexperiment@protonmail.com> Date: Sun, 13 Oct 2019 20:40:10 +0200 Subject: [PATCH 7/7] Address PR review Tfw none of these issues are your fault --- src/hacks/Aimbot.cpp | 10 +++++----- src/hacks/Spam.cpp | 2 +- src/ipc.cpp | 9 ++++----- 3 files changed, 10 insertions(+), 11 deletions(-) diff --git a/src/hacks/Aimbot.cpp b/src/hacks/Aimbot.cpp index 4716c746..a04c290f 100644 --- a/src/hacks/Aimbot.cpp +++ b/src/hacks/Aimbot.cpp @@ -21,7 +21,7 @@ static settings::Boolean enable{ "aimbot.enable", "false" }; static settings::Button aimkey{ "aimbot.aimkey.button", "" }; static settings::Int aimkey_mode{ "aimbot.aimkey.mode", "1" }; static settings::Boolean autoshoot{ "aimbot.autoshoot", "1" }; -static settings::Boolean autoreload{ "aimbot.autoshoot.activate-headmaker", "false" }; +static settings::Boolean autoreload{ "aimbot.autoshoot.activate-heatmaker", "false" }; static settings::Boolean autoshoot_disguised{ "aimbot.autoshoot-disguised", "1" }; static settings::Boolean multipoint{ "aimbot.multipoint", "false" }; static settings::Int hitbox_mode{ "aimbot.hitbox-mode", "0" }; @@ -99,7 +99,7 @@ bool IsBacktracking() } // Am I holding Hitman's Heatmaker ? -static bool CarryingHeadmaker() +static bool CarryingHeatmaker() { return CE_INT(LOCAL_W, netvar.iItemDefinitionIndex) == 752; } @@ -912,9 +912,9 @@ void DoAutoshoot() attack = false; if (attack) - // TO DO: Sending both reload and attack will activate headmakin' + // TO DO: Sending both reload and attack will activate the hitmans heatmaker ability // Don't activate it only on first kill (or somehow activate it before shoot) - current_user_cmd->buttons |= IN_ATTACK | (*autoreload && CarryingHeadmaker() ? IN_RELOAD : 0); + current_user_cmd->buttons |= IN_ATTACK | (*autoreload && CarryingHeatmaker() ? IN_RELOAD : 0); if (LOCAL_W->m_iClassID() == CL_CLASS(CTFLaserPointer)) current_user_cmd->buttons |= IN_ATTACK2; @@ -1083,7 +1083,7 @@ int BestHitbox(CachedEntity *target) { float cdmg = CE_FLOAT(LOCAL_W, netvar.flChargedDamage); - float bdmg = CarryingHeadmaker() ? 40 : 50; + float bdmg = CarryingHeatmaker() ? 40 : 50; // Darwins damage correction, protects against 15% of damage // if (HasDarwins(target)) // { diff --git a/src/hacks/Spam.cpp b/src/hacks/Spam.cpp index 840372f7..dd88bc93 100644 --- a/src/hacks/Spam.cpp +++ b/src/hacks/Spam.cpp @@ -350,7 +350,7 @@ void createMove() } } last_index = current_index; - std::string spamString = (*source)[current_index]; + std::string spamString = source->at(current_index); if (FormatSpamMessage(spamString)) chat_stack::Say(spamString, *team_only); current_index++; diff --git a/src/ipc.cpp b/src/ipc.cpp index 23c579d1..1ddbd93b 100644 --- a/src/ipc.cpp +++ b/src/ipc.cpp @@ -183,17 +183,16 @@ void UpdateTemporaryData() if (data.connected) { - if (CE_GOOD(LOCAL_E)) + IClientEntity *player = g_IEntityList->GetClientEntity(g_IEngine->GetLocalPlayer()); + if (player) { - IClientEntity *player = RAW_ENT(LOCAL_E); - int m_IDX = LOCAL_E->m_IDX; data.ingame.good = true; // TODO kills, deaths, shots, hits, headshots int score_saved = data.ingame.score; - data.ingame.score = g_pPlayerResource->GetScore(m_IDX); - data.ingame.team = g_pPlayerResource->GetTeam(m_IDX); + data.ingame.score = g_pPlayerResource->GetScore(g_IEngine->GetLocalPlayer()); + data.ingame.team = g_pPlayerResource->GetTeam(g_IEngine->GetLocalPlayer()); data.ingame.role = g_pPlayerResource->GetClass(LOCAL_E); data.ingame.life_state = NET_BYTE(player, netvar.iLifeState); data.ingame.health = NET_INT(player, netvar.iHealth);