diff --git a/Amalgam/Amalgam.vcxproj b/Amalgam/Amalgam.vcxproj index 9370a237..bc57ca7b 100644 --- a/Amalgam/Amalgam.vcxproj +++ b/Amalgam/Amalgam.vcxproj @@ -918,7 +918,7 @@ - + @@ -1228,7 +1228,7 @@ - + diff --git a/Amalgam/Amalgam.vcxproj.filters b/Amalgam/Amalgam.vcxproj.filters index 5a53a07b..fb612f99 100644 --- a/Amalgam/Amalgam.vcxproj.filters +++ b/Amalgam/Amalgam.vcxproj.filters @@ -45,7 +45,7 @@ - + @@ -393,7 +393,7 @@ - + diff --git a/Amalgam/src/Features/Aimbot/AutoRocketJump/AutoRocketJump.cpp b/Amalgam/src/Features/Aimbot/AutoRocketJump/AutoRocketJump.cpp index 31835089..185465be 100644 --- a/Amalgam/src/Features/Aimbot/AutoRocketJump/AutoRocketJump.cpp +++ b/Amalgam/src/Features/Aimbot/AutoRocketJump/AutoRocketJump.cpp @@ -197,10 +197,13 @@ void CAutoRocketJump::Run(CTFPlayer* pLocal, CTFWeaponBase* pWeapon, CUserCmd* p SDK::Output("Auto jump", std::format("Ticks to hit: {} ({})", m_iDelay, n).c_str(), { 255, 0, 0 }, Vars::Debug::Logging.Value); if (Vars::Debug::Info.Value) { - Vec3 vAngles = Math::VectorAngles(trace.plane.normal); - G::LineStorage.clear(); G::BoxStorage.clear(); - G::BoxStorage.emplace_back(trace.endpos + trace.plane.normal, Vec3::Get(-1), Vec3::Get(1), vAngles, I::GlobalVars->curtime + 5.f, Color_t(), Color_t(0, 0, 0, 0), true); - G::LineStorage.emplace_back(std::pair(tMoveStorage.m_MoveData.m_vecAbsOrigin + pLocal->m_vecViewOffset(), trace.endpos + trace.plane.normal), I::GlobalVars->curtime + 5.f, Color_t(), true); + G::PathStorage.clear(); G::BoxStorage.clear(); G::LineStorage.clear(); + tProjInfo.m_vPath.push_back(trace.endpos + trace.plane.normal); + + G::PathStorage.emplace_back(tMoveStorage.m_vPath, I::GlobalVars->curtime + 5.f, Color_t(255, 255, 255), Vars::Visuals::Path::StyleEnum::Line); + G::BoxStorage.emplace_back(tMoveStorage.m_MoveData.m_vecAbsOrigin, pLocal->m_vecMins(), pLocal->m_vecMaxs(), Vec3(), I::GlobalVars->curtime + 5.f, Color_t(255, 255, 255), Color_t(0, 0, 0, 0), true); + G::PathStorage.emplace_back(tProjInfo.m_vPath, I::GlobalVars->curtime + 5.f, Color_t(255, 150, 150), Vars::Visuals::Path::StyleEnum::Line); + G::BoxStorage.emplace_back(tProjInfo.m_vPath.back(), Vec3::Get(-1), Vec3::Get(1), Vec3() /*Math::VectorAngles(trace.plane.normal)*/, I::GlobalVars->curtime + 5.f, Color_t(255, 150, 150), Color_t(0, 0, 0, 0), true); } } } @@ -260,19 +263,22 @@ void CAutoRocketJump::Run(CTFPlayer* pLocal, CTFWeaponBase* pWeapon, CUserCmd* p if (m_iFrame <= m_iChoke) G::PSilentAngles = true, G::SilentAngles = false; // only con to this is that you may not be able to choke depending on the ticks charged - if (m_iDelay > 1) + if (bCurrGrounded) { - switch (m_iFrame - m_iDelay + 1) + if (m_iDelay > 1) { - case 0: - pCmd->buttons |= IN_DUCK; - break; - case 1: - pCmd->buttons |= IN_JUMP; + switch (m_iFrame - m_iDelay + 1) + { + case 0: + pCmd->buttons |= IN_DUCK; + break; + case 1: + pCmd->buttons |= IN_JUMP; + } } + else // won't ctap in time + pCmd->buttons |= IN_DUCK | IN_JUMP; } - else // won't ctap in time - pCmd->buttons |= IN_DUCK | IN_JUMP; if (m_iFrame == m_iDelay + 3) m_iFrame = -1; diff --git a/Amalgam/src/Features/CheaterDetection/CheaterDetection.cpp b/Amalgam/src/Features/CheatDetection/CheatDetection.cpp similarity index 72% rename from Amalgam/src/Features/CheaterDetection/CheaterDetection.cpp rename to Amalgam/src/Features/CheatDetection/CheatDetection.cpp index 8e26e918..051b0848 100644 --- a/Amalgam/src/Features/CheaterDetection/CheaterDetection.cpp +++ b/Amalgam/src/Features/CheatDetection/CheatDetection.cpp @@ -1,11 +1,11 @@ -#include "CheaterDetection.h" +#include "CheatDetection.h" #include "../Players/PlayerUtils.h" #include "../Output/Output.h" -bool CCheaterDetection::ShouldScan() +bool CCheatDetection::ShouldScan() { - if (!Vars::CheaterDetection::Methods.Value /*|| I::EngineClient->IsPlayingDemo()*/) + if (!Vars::CheatDetection::Methods.Value /*|| I::EngineClient->IsPlayingDemo()*/) return false; static int iStaticTickcount = I::GlobalVars->tickcount; @@ -21,23 +21,23 @@ bool CCheaterDetection::ShouldScan() return true; } -bool CCheaterDetection::InvalidPitch(CTFPlayer* pEntity) +bool CCheatDetection::InvalidPitch(CTFPlayer* pEntity) { - return Vars::CheaterDetection::Methods.Value & Vars::CheaterDetection::MethodsEnum::InvalidPitch && fabsf(pEntity->m_angEyeAnglesX()) == 90.f; + return Vars::CheatDetection::Methods.Value & Vars::CheatDetection::MethodsEnum::InvalidPitch && fabsf(pEntity->m_angEyeAnglesX()) == 90.f; } -bool CCheaterDetection::IsChoking(CTFPlayer* pEntity) +bool CCheatDetection::IsChoking(CTFPlayer* pEntity) { bool bReturn = mData[pEntity].m_PacketChoking.m_bInfract; mData[pEntity].m_PacketChoking.m_bInfract = false; - return Vars::CheaterDetection::Methods.Value & Vars::CheaterDetection::MethodsEnum::PacketChoking && bReturn; + return Vars::CheatDetection::Methods.Value & Vars::CheatDetection::MethodsEnum::PacketChoking && bReturn; } -bool CCheaterDetection::IsFlicking(CTFPlayer* pEntity) // awful +bool CCheatDetection::IsFlicking(CTFPlayer* pEntity) // awful { auto& vAngles = mData[pEntity].m_AimFlicking.m_vAngles; - if (!(Vars::CheaterDetection::Methods.Value & Vars::CheaterDetection::MethodsEnum::AimFlicking)) + if (!(Vars::CheatDetection::Methods.Value & Vars::CheatDetection::MethodsEnum::AimFlicking)) { vAngles.clear(); return false; @@ -48,17 +48,17 @@ bool CCheaterDetection::IsFlicking(CTFPlayer* pEntity) // awful vAngles.pop_back(); if (vAngles.size() != 3 || !vAngles[0].m_bAttacking && !vAngles[1].m_bAttacking && !vAngles[2].m_bAttacking - || Math::CalcFov(vAngles[0].m_vAngle, vAngles[1].m_vAngle) < Vars::CheaterDetection::MinimumFlick.Value - || Math::CalcFov(vAngles[0].m_vAngle, vAngles[2].m_vAngle) > Vars::CheaterDetection::MaximumNoise.Value * (TICK_INTERVAL / 0.015f)) + || Math::CalcFov(vAngles[0].m_vAngle, vAngles[1].m_vAngle) < Vars::CheatDetection::MinFlick.Value + || Math::CalcFov(vAngles[0].m_vAngle, vAngles[2].m_vAngle) > Vars::CheatDetection::MaxNoise.Value * (TICK_INTERVAL / 0.015f)) return false; vAngles.clear(); return true; } -bool CCheaterDetection::IsDuckSpeed(CTFPlayer* pEntity) +bool CCheatDetection::IsDuckSpeed(CTFPlayer* pEntity) { - if (!(Vars::CheaterDetection::Methods.Value & Vars::CheaterDetection::MethodsEnum::DuckSpeed) + if (!(Vars::CheatDetection::Methods.Value & Vars::CheatDetection::MethodsEnum::DuckSpeed) || !pEntity->IsDucking() || !pEntity->IsOnGround() || pEntity->m_vecVelocity().Length2D() < pEntity->m_flMaxspeed() * 0.5f) { @@ -78,13 +78,13 @@ bool CCheaterDetection::IsDuckSpeed(CTFPlayer* pEntity) return false; } -void CCheaterDetection::Infract(CTFPlayer* pEntity, const char* sReason) +void CCheatDetection::Infract(CTFPlayer* pEntity, const char* sReason) { bool bMark = false; - if (Vars::CheaterDetection::DetectionsRequired.Value) + if (Vars::CheatDetection::DetectionsRequired.Value) { mData[pEntity].m_iDetections++; - bMark = mData[pEntity].m_iDetections >= Vars::CheaterDetection::DetectionsRequired.Value; + bMark = mData[pEntity].m_iDetections >= Vars::CheatDetection::DetectionsRequired.Value; } F::Output.CheatDetection(mData[pEntity].m_sName, bMark ? "marked" : "infracted", sReason); @@ -95,7 +95,7 @@ void CCheaterDetection::Infract(CTFPlayer* pEntity, const char* sReason) } } -void CCheaterDetection::Run() +void CCheatDetection::Run() { if (!ShouldScan() || !I::EngineClient->IsConnected() || I::EngineClient->IsPlayingDemo()) return; @@ -134,14 +134,14 @@ void CCheaterDetection::Run() } } -void CCheaterDetection::Reset() +void CCheatDetection::Reset() { mData.clear(); } -void CCheaterDetection::ReportChoke(CTFPlayer* pEntity, int iChoke) +void CCheatDetection::ReportChoke(CTFPlayer* pEntity, int iChoke) { - if (Vars::CheaterDetection::Methods.Value & Vars::CheaterDetection::MethodsEnum::PacketChoking) + if (Vars::CheatDetection::Methods.Value & Vars::CheatDetection::MethodsEnum::PacketChoking) { mData[pEntity].m_PacketChoking.m_vChokes.push_back(iChoke); if (mData[pEntity].m_PacketChoking.m_vChokes.size() == 3) @@ -149,7 +149,7 @@ void CCheaterDetection::ReportChoke(CTFPlayer* pEntity, int iChoke) mData[pEntity].m_PacketChoking.m_bInfract = true; // check for last 3 choke amounts for (auto& iChoke : mData[pEntity].m_PacketChoking.m_vChokes) { - if (iChoke < Vars::CheaterDetection::MinimumChoking.Value) + if (iChoke < Vars::CheatDetection::MinChoking.Value) mData[pEntity].m_PacketChoking.m_bInfract = false; } mData[pEntity].m_PacketChoking.m_vChokes.clear(); @@ -159,9 +159,9 @@ void CCheaterDetection::ReportChoke(CTFPlayer* pEntity, int iChoke) mData[pEntity].m_PacketChoking.m_vChokes.clear(); } -void CCheaterDetection::ReportDamage(IGameEvent* pEvent) +void CCheatDetection::ReportDamage(IGameEvent* pEvent) { - if (!(Vars::CheaterDetection::Methods.Value & Vars::CheaterDetection::MethodsEnum::AimFlicking)) + if (!(Vars::CheatDetection::Methods.Value & Vars::CheatDetection::MethodsEnum::AimFlicking)) return; int iIndex = I::EngineClient->GetPlayerForUserID(pEvent->GetInt("attacker")); diff --git a/Amalgam/src/Features/CheaterDetection/CheaterDetection.h b/Amalgam/src/Features/CheatDetection/CheatDetection.h similarity index 93% rename from Amalgam/src/Features/CheaterDetection/CheaterDetection.h rename to Amalgam/src/Features/CheatDetection/CheatDetection.h index d9151c66..7c848838 100644 --- a/Amalgam/src/Features/CheaterDetection/CheaterDetection.h +++ b/Amalgam/src/Features/CheatDetection/CheatDetection.h @@ -31,7 +31,7 @@ struct PlayerInfo } m_DuckSpeed; }; -class CCheaterDetection +class CCheatDetection { private: bool ShouldScan(); @@ -53,4 +53,4 @@ public: void Reset(); }; -ADD_FEATURE(CCheaterDetection, CheaterDetection); \ No newline at end of file +ADD_FEATURE(CCheatDetection, CheatDetection); \ No newline at end of file diff --git a/Amalgam/src/Features/ImGui/Menu/Menu.cpp b/Amalgam/src/Features/ImGui/Menu/Menu.cpp index f5293371..286faced 100644 --- a/Amalgam/src/Features/ImGui/Menu/Menu.cpp +++ b/Amalgam/src/Features/ImGui/Menu/Menu.cpp @@ -629,6 +629,82 @@ void CMenu::MenuHVH(int iTab) { /* Column 1 */ TableNextColumn(); + { + if (Section("Antiaim", 8)) + { + FToggle(Vars::AntiAim::Enabled, FToggleEnum::Left); + FToggle(Vars::AntiAim::HidePitchOnShot, FToggleEnum::Right); + FDropdown(Vars::AntiAim::PitchReal, FDropdownEnum::Left); + FDropdown(Vars::AntiAim::PitchFake, FDropdownEnum::Right); + FDropdown(Vars::AntiAim::YawReal, FDropdownEnum::Left); + FDropdown(Vars::AntiAim::YawFake, FDropdownEnum::Right); + FDropdown(Vars::AntiAim::RealYawBase, FDropdownEnum::Left); + FDropdown(Vars::AntiAim::FakeYawBase, FDropdownEnum::Right); + FSlider(Vars::AntiAim::RealYawOffset, FSliderEnum::Left); + FSlider(Vars::AntiAim::FakeYawOffset, FSliderEnum::Right); + PushTransparent(Vars::AntiAim::YawReal.Value != Vars::AntiAim::YawEnum::Edge && Vars::AntiAim::YawReal.Value != Vars::AntiAim::YawEnum::Jitter); + { + FSlider(Vars::AntiAim::RealYawValue, FSliderEnum::Left); + } + PopTransparent(); + PushTransparent(Vars::AntiAim::YawFake.Value != Vars::AntiAim::YawEnum::Edge && Vars::AntiAim::YawFake.Value != Vars::AntiAim::YawEnum::Jitter); + { + FSlider(Vars::AntiAim::FakeYawValue, FSliderEnum::Right); + } + PopTransparent(); + PushTransparent(Vars::AntiAim::YawFake.Value != Vars::AntiAim::YawEnum::Spin && Vars::AntiAim::YawReal.Value != Vars::AntiAim::YawEnum::Spin); + { + FSlider(Vars::AntiAim::SpinSpeed, FSliderEnum::Left); + } + PopTransparent(); + SetCursorPos({ GetWindowWidth() / 2 + GetStyle().WindowPadding.x / 2, GetRowPos() + H::Draw.Scale(8) }); + FToggle(Vars::AntiAim::MinWalk, FToggleEnum::Left); + } EndSection(); + if (Vars::Debug::Options.Value) + { + if (Section("##Debug Antiaim")) + { + FText("Debug", { 5, 5 }); + if (FPopupButton("Debug", { 0, -5 })) + { + FToggle(Vars::AntiAim::AntiAimLines); + + EndPopup(); + } + } EndSection(); + } + if (Section("Resolver", 8)) + { + FToggle(Vars::Resolver::Enabled, FToggleEnum::Left); + PushTransparent(!Vars::Resolver::Enabled.Value); + { + FToggle(Vars::Resolver::AutoResolve, FToggleEnum::Right); + PushTransparent(Transparent || !Vars::Resolver::AutoResolve.Value); + { + FToggle(Vars::Resolver::AutoResolveCheatersOnly, FToggleEnum::Left); + FToggle(Vars::Resolver::AutoResolveHeadshotOnly, FToggleEnum::Right); + PushTransparent(Transparent || !Vars::Resolver::AutoResolveYawAmount.Value); + { + FSlider(Vars::Resolver::AutoResolveYawAmount, FSliderEnum::Left); + } + PopTransparent(); + PushTransparent(Transparent || !Vars::Resolver::AutoResolvePitchAmount.Value); + { + FSlider(Vars::Resolver::AutoResolvePitchAmount, FSliderEnum::Right); + } + PopTransparent(); + } + PopTransparent(); + FSlider(Vars::Resolver::CycleYaw, FSliderEnum::Left); + FSlider(Vars::Resolver::CyclePitch, FSliderEnum::Right); + FToggle(Vars::Resolver::CycleView, FToggleEnum::Left); + FToggle(Vars::Resolver::CycleMinwalk, FToggleEnum::Right); + } + PopTransparent(); + } EndSection(); + } + /* Column 2 */ + TableNextColumn(); { if (Section("Doubletap", 8)) { @@ -671,113 +747,15 @@ void CMenu::MenuHVH(int iTab) } } EndSection(); } - if (Section("Antiaim", 8)) - { - FToggle(Vars::AntiAim::Enabled); - FDropdown(Vars::AntiAim::PitchReal, FDropdownEnum::Left); - FDropdown(Vars::AntiAim::PitchFake, FDropdownEnum::Right); - FDropdown(Vars::AntiAim::YawReal, FDropdownEnum::Left); - FDropdown(Vars::AntiAim::YawFake, FDropdownEnum::Right); - FDropdown(Vars::AntiAim::RealYawBase, FDropdownEnum::Left); - FDropdown(Vars::AntiAim::FakeYawBase, FDropdownEnum::Right); - FSlider(Vars::AntiAim::RealYawOffset, FSliderEnum::Left); - FSlider(Vars::AntiAim::FakeYawOffset, FSliderEnum::Right); - PushTransparent(Vars::AntiAim::YawReal.Value != Vars::AntiAim::YawEnum::Edge && Vars::AntiAim::YawReal.Value != Vars::AntiAim::YawEnum::Jitter); - { - FSlider(Vars::AntiAim::RealYawValue, FSliderEnum::Left); - } - PopTransparent(); - PushTransparent(Vars::AntiAim::YawFake.Value != Vars::AntiAim::YawEnum::Edge && Vars::AntiAim::YawFake.Value != Vars::AntiAim::YawEnum::Jitter); - { - FSlider(Vars::AntiAim::FakeYawValue, FSliderEnum::Right); - } - PopTransparent(); - PushTransparent(Vars::AntiAim::YawFake.Value != Vars::AntiAim::YawEnum::Spin && Vars::AntiAim::YawReal.Value != Vars::AntiAim::YawEnum::Spin); - { - FSlider(Vars::AntiAim::SpinSpeed, FSliderEnum::Left); - } - PopTransparent(); - SetCursorPos({ GetWindowWidth() / 2 + GetStyle().WindowPadding.x / 2, GetRowPos() + H::Draw.Scale(8) }); - FToggle(Vars::AntiAim::MinWalk, FToggleEnum::Left); - FToggle(Vars::AntiAim::AntiOverlap, FToggleEnum::Left); - FToggle(Vars::AntiAim::InvalidShootPitch, FToggleEnum::Right); - } EndSection(); - if (Vars::Debug::Options.Value) - { - if (Section("##Debug Antiaim")) - { - FText("Debug", { 5, 5 }); - if (FPopupButton("Debug", { 0, -5 })) - { - FToggle(Vars::AntiAim::AntiAimLines, FToggleEnum::Left); - - EndPopup(); - } - } EndSection(); - } - } - /* Column 2 */ - TableNextColumn(); - { - if (Section("Resolver", 8)) - { - FToggle(Vars::Resolver::Enabled, FToggleEnum::Left); - PushTransparent(!Vars::Resolver::Enabled.Value); - { - FToggle(Vars::Resolver::AutoResolve, FToggleEnum::Right); - PushTransparent(Transparent || !Vars::Resolver::AutoResolve.Value); - { - FToggle(Vars::Resolver::AutoResolveCheatersOnly, FToggleEnum::Left); - FToggle(Vars::Resolver::AutoResolveHeadshotOnly, FToggleEnum::Right); - PushTransparent(Transparent || !Vars::Resolver::AutoResolveYawAmount.Value); - { - FSlider(Vars::Resolver::AutoResolveYawAmount, FSliderEnum::Left); - } - PopTransparent(); - PushTransparent(Transparent || !Vars::Resolver::AutoResolvePitchAmount.Value); - { - FSlider(Vars::Resolver::AutoResolvePitchAmount, FSliderEnum::Right); - } - PopTransparent(); - } - PopTransparent(); - FSlider(Vars::Resolver::CycleYaw, FSliderEnum::Left); - FSlider(Vars::Resolver::CyclePitch, FSliderEnum::Right); - FToggle(Vars::Resolver::CycleView, FToggleEnum::Left); - FToggle(Vars::Resolver::CycleMinwalk, FToggleEnum::Right); - } - PopTransparent(); - } EndSection(); if (Section("Auto Peek", 8)) { FToggle(Vars::AutoPeek::Enabled); } EndSection(); - if (Section("Cheater Detection")) - { - FDropdown(Vars::CheaterDetection::Methods); - PushTransparent(!Vars::CheaterDetection::DetectionsRequired.Value); - { - FSlider(Vars::CheaterDetection::DetectionsRequired); - } - PopTransparent(); - PushTransparent(!(Vars::CheaterDetection::Methods.Value & Vars::CheaterDetection::MethodsEnum::PacketChoking)); - { - FSlider(Vars::CheaterDetection::MinimumChoking); - } - PopTransparent(); - PushTransparent(!(Vars::CheaterDetection::Methods.Value & Vars::CheaterDetection::MethodsEnum::AimFlicking)); - { - FSlider(Vars::CheaterDetection::MinimumFlick, FSliderEnum::Left); - FSlider(Vars::CheaterDetection::MaximumNoise, FSliderEnum::Right); - } - PopTransparent(); - } EndSection(); if (Section("Speedhack", 8)) { - FToggle(Vars::Speedhack::Enabled); - PushTransparent(!Vars::Speedhack::Enabled.Value); + PushTransparent(Vars::Speedhack::Scale.Value == 1); { - FSlider(Vars::Speedhack::Amount); + FSlider(Vars::Speedhack::Scale); } PopTransparent(); } EndSection(); @@ -1389,10 +1367,10 @@ void CMenu::MenuMisc(int iTab) if (Section("Automation")) { FDropdown(Vars::Misc::Automation::AntiBackstab); // pitch/fake _might_ slip up some auto backstabs - FToggle(Vars::Misc::Automation::AntiAFK, FToggleEnum::Left); - FToggle(Vars::Misc::Automation::AntiAutobalance, FToggleEnum::Right); FToggle(Vars::Misc::Automation::TauntControl, FToggleEnum::Left); FToggle(Vars::Misc::Automation::KartControl, FToggleEnum::Right); + FToggle(Vars::Misc::Automation::AntiAutobalance, FToggleEnum::Left); + FToggle(Vars::Misc::Automation::AntiAFK, FToggleEnum::Right); FToggle(Vars::Misc::Automation::AutoF2Ignored, FToggleEnum::Left); FToggle(Vars::Misc::Automation::AutoF1Priority, FToggleEnum::Right); FToggle(Vars::Misc::Automation::AcceptItemDrops); @@ -2373,27 +2351,23 @@ void CMenu::MenuLogs(int iTab) FDropdown(Vars::Logging::NotificationPosition); FSlider(Vars::Logging::Lifetime); } EndSection(); - if (Section("Vote Start")) + if (Section("Cheat Detection")) { - PushTransparent(!(Vars::Logging::Logs.Value & Vars::Logging::LogsEnum::VoteStart)); + FDropdown(Vars::CheatDetection::Methods); + PushTransparent(!Vars::CheatDetection::DetectionsRequired.Value); { - FDropdown(Vars::Logging::VoteStart::LogTo); + FSlider(Vars::CheatDetection::DetectionsRequired); } PopTransparent(); - } EndSection(); - if (Section("Vote Cast")) - { - PushTransparent(!(Vars::Logging::Logs.Value & Vars::Logging::LogsEnum::VoteCast)); + PushTransparent(!(Vars::CheatDetection::Methods.Value & Vars::CheatDetection::MethodsEnum::PacketChoking)); { - FDropdown(Vars::Logging::VoteCast::LogTo); + FSlider(Vars::CheatDetection::MinChoking); } PopTransparent(); - } EndSection(); - if (Section("Class Change")) - { - PushTransparent(!(Vars::Logging::Logs.Value & Vars::Logging::LogsEnum::ClassChanges)); + PushTransparent(!(Vars::CheatDetection::Methods.Value & Vars::CheatDetection::MethodsEnum::AimFlicking)); { - FDropdown(Vars::Logging::ClassChange::LogTo); + FSlider(Vars::CheatDetection::MinFlick, FSliderEnum::Left); + FSlider(Vars::CheatDetection::MaxNoise, FSliderEnum::Right); } PopTransparent(); } EndSection(); @@ -2401,40 +2375,43 @@ void CMenu::MenuLogs(int iTab) /* Column 2 */ TableNextColumn(); { - if (Section("Damage")) + if (Section("Log options")) { + PushTransparent(!(Vars::Logging::Logs.Value & Vars::Logging::LogsEnum::VoteStart)); + { + FDropdown(Vars::Logging::VoteStart::LogTo); + } + PopTransparent(); + PushTransparent(!(Vars::Logging::Logs.Value & Vars::Logging::LogsEnum::VoteCast)); + { + FDropdown(Vars::Logging::VoteCast::LogTo); + } + PopTransparent(); + PushTransparent(!(Vars::Logging::Logs.Value & Vars::Logging::LogsEnum::ClassChanges)); + { + FDropdown(Vars::Logging::ClassChange::LogTo); + } + PopTransparent(); PushTransparent(!(Vars::Logging::Logs.Value & Vars::Logging::LogsEnum::Damage)); { FDropdown(Vars::Logging::Damage::LogTo); } PopTransparent(); - } EndSection(); - if (Section("Cheat Detection")) - { PushTransparent(!(Vars::Logging::Logs.Value & Vars::Logging::LogsEnum::CheatDetection)); { FDropdown(Vars::Logging::CheatDetection::LogTo); } PopTransparent(); - } EndSection(); - if (Section("Tags")) - { PushTransparent(!(Vars::Logging::Logs.Value & Vars::Logging::LogsEnum::Tags)); { FDropdown(Vars::Logging::Tags::LogTo); } PopTransparent(); - } EndSection(); - if (Section("Aliases")) - { PushTransparent(!(Vars::Logging::Logs.Value & Vars::Logging::LogsEnum::Aliases)); { FDropdown(Vars::Logging::Aliases::LogTo); } PopTransparent(); - } EndSection(); - if (Section("Resolver")) - { PushTransparent(!(Vars::Logging::Logs.Value & Vars::Logging::LogsEnum::Resolver)); { FDropdown(Vars::Logging::Resolver::LogTo); diff --git a/Amalgam/src/Features/PacketManip/AntiAim/AntiAim.cpp b/Amalgam/src/Features/PacketManip/AntiAim/AntiAim.cpp index 672cf0cd..34277840 100644 --- a/Amalgam/src/Features/PacketManip/AntiAim/AntiAim.cpp +++ b/Amalgam/src/Features/PacketManip/AntiAim/AntiAim.cpp @@ -47,7 +47,7 @@ bool CAntiAim::ShouldRun(CTFPlayer* pLocal, CTFWeaponBase* pWeapon, CUserCmd* pC void CAntiAim::FakeShotAngles(CTFPlayer* pLocal, CTFWeaponBase* pWeapon, CUserCmd* pCmd) { - if (!Vars::AntiAim::InvalidShootPitch.Value || G::Attacking != 1 || G::PrimaryWeaponType != EWeaponType::HITSCAN || pLocal->m_MoveType() != MOVETYPE_WALK) + if (!Vars::AntiAim::HidePitchOnShot.Value || G::Attacking != 1 || G::PrimaryWeaponType != EWeaponType::HITSCAN || pLocal->m_MoveType() != MOVETYPE_WALK) return; switch (pWeapon ? pWeapon->GetWeaponID() : 0) @@ -149,21 +149,9 @@ float CAntiAim::GetBaseYaw(CTFPlayer* pLocal, CUserCmd* pCmd, bool bFake) return pCmd->viewangles.y; } -void CAntiAim::RunOverlapping(CTFPlayer* pEntity, CUserCmd* pCmd, float& flYaw, bool bFake, float flEpsilon) -{ - if (!Vars::AntiAim::AntiOverlap.Value || bFake) - return; - - float flFakeYaw = GetBaseYaw(pEntity, pCmd, true) + GetYawOffset(pEntity, true); - const float flYawDiff = Math::NormalizeAngle(flYaw - flFakeYaw); - if (fabsf(flYawDiff) < flEpsilon) - flYaw += flYawDiff > 0 ? flEpsilon : -flEpsilon; -} - float CAntiAim::GetYaw(CTFPlayer* pLocal, CUserCmd* pCmd, bool bFake) { float flYaw = GetBaseYaw(pLocal, pCmd, bFake) + GetYawOffset(pLocal, bFake); - RunOverlapping(pLocal, pCmd, flYaw, bFake); return flYaw; } diff --git a/Amalgam/src/Features/PacketManip/AntiAim/AntiAim.h b/Amalgam/src/Features/PacketManip/AntiAim/AntiAim.h index 146f500e..7feb57d4 100644 --- a/Amalgam/src/Features/PacketManip/AntiAim/AntiAim.h +++ b/Amalgam/src/Features/PacketManip/AntiAim/AntiAim.h @@ -7,7 +7,6 @@ private: void FakeShotAngles(CTFPlayer* pLocal, CTFWeaponBase* pWeapon, CUserCmd* pCmd); float GetYawOffset(CTFPlayer* pEntity, bool bFake); float GetBaseYaw(CTFPlayer* pLocal, CUserCmd* pCmd, bool bFake); - void RunOverlapping(CTFPlayer* pEntity, CUserCmd* pCmd, float& flYaw, bool bFake, float flEpsilon = 45.f); float GetYaw(CTFPlayer* pLocal, CUserCmd* pCmd, bool bFake); float GetPitch(float flCurPitch); void MinWalk(CTFPlayer* pLocal, CUserCmd* pCmd); diff --git a/Amalgam/src/Features/Ticks/Ticks.cpp b/Amalgam/src/Features/Ticks/Ticks.cpp index eb96a17a..0c3b9e76 100644 --- a/Amalgam/src/Features/Ticks/Ticks.cpp +++ b/Amalgam/src/Features/Ticks/Ticks.cpp @@ -81,7 +81,7 @@ void CTicks::Doubletap(CTFPlayer* pLocal, CUserCmd* pCmd) void CTicks::Speedhack() { - m_bSpeedhack = Vars::Speedhack::Enabled.Value; + m_bSpeedhack = Vars::Speedhack::Scale.Value != 1; if (!m_bSpeedhack) return; @@ -178,7 +178,7 @@ void CTicks::Move(float accumulated_extra_samples, bool bFinalTick) if (m_bSpeedhack) { - m_iShiftedTicks = Vars::Speedhack::Amount.Value; + m_iShiftedTicks = Vars::Speedhack::Scale.Value; m_iShiftedGoal = 0; } @@ -415,7 +415,7 @@ void CTicks::Draw(CTFPlayer* pLocal) const auto& fFont = H::Fonts.GetFont(FONT_INDICATORS); if (m_bSpeedhack) - return H::Draw.StringOutlined(fFont, dtPos.x, dtPos.y + 2, Vars::Menu::Theme::Active.Value, Vars::Menu::Theme::Background.Value, ALIGN_TOP, std::format("Speedhack x{}", Vars::Speedhack::Amount.Value).c_str()); + return H::Draw.StringOutlined(fFont, dtPos.x, dtPos.y + 2, Vars::Menu::Theme::Active.Value, Vars::Menu::Theme::Background.Value, ALIGN_TOP, std::format("Speedhack x{}", Vars::Speedhack::Scale.Value).c_str()); int iAntiAimTicks = F::AntiAim.YawOn() ? F::AntiAim.AntiAimTicks() : 0; int iTicks = std::clamp(m_iShiftedTicks + std::max(I::ClientState->chokedcommands - iAntiAimTicks, 0), 0, m_iMaxUsrCmdProcessTicks); diff --git a/Amalgam/src/Hooks/CHLClient_FrameStageNotify.cpp b/Amalgam/src/Hooks/CHLClient_FrameStageNotify.cpp index 27e16afc..a1456a86 100644 --- a/Amalgam/src/Hooks/CHLClient_FrameStageNotify.cpp +++ b/Amalgam/src/Hooks/CHLClient_FrameStageNotify.cpp @@ -3,7 +3,7 @@ #include "../Features/Aimbot/Aimbot.h" #include "../Features/Backtrack/Backtrack.h" #include "../Features/Binds/Binds.h" -#include "../Features/CheaterDetection/CheaterDetection.h" +#include "../Features/CheatDetection/CheatDetection.h" #include "../Features/CritHack/CritHack.h" #include "../Features/Players/PlayerUtils.h" #include "../Features/Simulation/MovementSimulation/MovementSimulation.h" @@ -53,7 +53,7 @@ MAKE_HOOK(CHLClient_FrameStageNotify, U::Memory.GetVirtual(I::Client, 35), void, F::OffscreenArrows.Store(); F::Visuals.Store(); - F::CheaterDetection.Run(); + F::CheatDetection.Run(); F::Spectate.NetUpdateEnd(pLocal); F::Visuals.Modulate(); diff --git a/Amalgam/src/Hooks/CViewRender_LevelInit.cpp b/Amalgam/src/Hooks/CViewRender_LevelInit.cpp index 5ba2b3eb..6faca504 100644 --- a/Amalgam/src/Hooks/CViewRender_LevelInit.cpp +++ b/Amalgam/src/Hooks/CViewRender_LevelInit.cpp @@ -5,7 +5,7 @@ #include "../Features/Backtrack/Backtrack.h" #include "../Features/Ticks/Ticks.h" #include "../Features/NoSpread/NoSpreadHitscan/NoSpreadHitscan.h" -#include "../Features/CheaterDetection/CheaterDetection.h" +#include "../Features/CheatDetection/CheatDetection.h" #include "../Features/Resolver/Resolver.h" #include "../Features/Spectate/Spectate.h" @@ -20,7 +20,7 @@ MAKE_HOOK(CViewRender_LevelInit, U::Memory.GetVirtual(I::ViewRender, 1), void, F::Backtrack.Reset(); F::Ticks.Reset(); F::NoSpreadHitscan.Reset(); - F::CheaterDetection.Reset(); + F::CheatDetection.Reset(); F::Resolver.Reset(); F::Spectate.Reset(); diff --git a/Amalgam/src/SDK/Events/Events.cpp b/Amalgam/src/SDK/Events/Events.cpp index d140de40..68c93279 100644 --- a/Amalgam/src/SDK/Events/Events.cpp +++ b/Amalgam/src/SDK/Events/Events.cpp @@ -3,7 +3,7 @@ #include "../../Core/Core.h" #include "../../Features/Aimbot/AutoHeal/AutoHeal.h" #include "../../Features/Backtrack/Backtrack.h" -#include "../../Features/CheaterDetection/CheaterDetection.h" +#include "../../Features/CheatDetection/CheatDetection.h" #include "../../Features/CritHack/CritHack.h" #include "../../Features/Misc/Misc.h" #include "../../Features/PacketManip/AntiAim/AntiAim.h" @@ -57,7 +57,7 @@ void CEventListener::FireGameEvent(IGameEvent* pEvent) case FNV1A::Hash32Const("player_hurt"): { F::Resolver.PlayerHurt(pEvent); - F::CheaterDetection.ReportDamage(pEvent); + F::CheatDetection.ReportDamage(pEvent); return; } case FNV1A::Hash32Const("player_spawn"): diff --git a/Amalgam/src/SDK/Helpers/Entities/Entities.cpp b/Amalgam/src/SDK/Helpers/Entities/Entities.cpp index 905911e3..b054aa61 100644 --- a/Amalgam/src/SDK/Helpers/Entities/Entities.cpp +++ b/Amalgam/src/SDK/Helpers/Entities/Entities.cpp @@ -4,7 +4,7 @@ #include "../../../Utils/Hash/FNV1A.h" #include "../../../Features/Players/PlayerUtils.h" #include "../../../Features/Backtrack/Backtrack.h" -#include "../../../Features/CheaterDetection/CheaterDetection.h" +#include "../../../Features/CheatDetection/CheatDetection.h" #include "../../../Features/Resolver/Resolver.h" void CEntities::Store() @@ -266,7 +266,7 @@ void CEntities::Store() m_aOrigins[n].pop_back(); if (pPlayer->IsAlive()) - F::CheaterDetection.ReportChoke(pPlayer, m_aChokes[n]); + F::CheatDetection.ReportChoke(pPlayer, m_aChokes[n]); m_aOldAngles[n] = m_aEyeAngles[n], m_aEyeAngles[n] = pPlayer->As()->GetEyeAngles(); } diff --git a/Amalgam/src/SDK/Vars.h b/Amalgam/src/SDK/Vars.h index 3147474c..c297bf43 100644 --- a/Amalgam/src/SDK/Vars.h +++ b/Amalgam/src/SDK/Vars.h @@ -468,8 +468,7 @@ NAMESPACE_BEGIN(Vars) NAMESPACE_END(AutoPeek) NAMESPACE_BEGIN(Speedhack) - CVar(Enabled, VA_LIST("Enabled", "Speedhack enabled"), false); - CVar(Amount, VA_LIST("Amount", "SpeedHack amount"), 1, NONE, 1, 50); + CVar(Scale, VA_LIST("Scale", "SpeedHack scale"), 1, NONE, 1, 50); NAMESPACE_END(Speedhack) NAMESPACE_BEGIN(AntiAim, Antiaim) @@ -496,8 +495,7 @@ NAMESPACE_BEGIN(Vars) CVar(FakeYawValue, "Fake value", -90.f, SLIDER_CLAMP | SLIDER_PRECISION, -180.f, 180.f, 5.f); CVar(SpinSpeed, "Spin speed", 15.f, SLIDER_PRECISION, -30.f, 30.f); CVar(MinWalk, "Minwalk", true); - CVar(AntiOverlap, "Anti-overlap", false); - CVar(InvalidShootPitch, "Hide pitch on shot", false); + CVar(HidePitchOnShot, "Hide pitch on shot", false); CVar(AntiAimLines, "Antiaim lines", false, NOSAVE); NAMESPACE_END(AntiAim) @@ -515,16 +513,6 @@ NAMESPACE_BEGIN(Vars) CVar(CycleMinwalk, "Cycle minwalk", false); NAMESPACE_END(Resolver) - NAMESPACE_BEGIN(CheaterDetection, Cheater Detection) - CVarEnum(Methods, "Detection methods", 0b0000, DROPDOWN_MULTI, nullptr, - VA_LIST("Invalid pitch", "Packet choking", "Aim flicking", "Duck Speed"), - InvalidPitch = 1 << 0, PacketChoking = 1 << 1, AimFlicking = 1 << 2, DuckSpeed = 1 << 3); - CVar(DetectionsRequired, "Detections required", 10, SLIDER_MIN, 0, 50); - CVar(MinimumChoking, "Minimum choking", 20, SLIDER_MIN, 4, 22); - CVar(MinimumFlick, "Minimum flick angle", 20.f, SLIDER_PRECISION, 10.f, 30.f); // min flick size to suspect - CVar(MaximumNoise, "Maximum flick noise", 1.f, SLIDER_PRECISION, 1.f, 10.f); // max difference between angles before and after flick - NAMESPACE_END(CheaterDetection) - NAMESPACE_BEGIN(ESP) CVarValues(ActiveGroups, "Active groups", int(0b11111111111111111111111111111111), VISUAL | DROPDOWN_MULTI | DROPDOWN_NOSANITIZATION, nullptr); NAMESPACE_END(ESP) @@ -595,8 +583,8 @@ NAMESPACE_BEGIN(Vars) NAMESPACE_END(Tracers) NAMESPACE_BEGIN(Viewmodel) - CVar(CrosshairAim, "Crosshair aim position", false, VISUAL); - CVar(ViewmodelAim, "Viewmodel aim position", false, VISUAL); + CVar(CrosshairAim, "Crosshair aim", false, VISUAL); + CVar(ViewmodelAim, "Viewmodel aim", false, VISUAL); CVar(OffsetX, VA_LIST("Offset X", "Viewmodel offset X"), 0.f, VISUAL | SLIDER_PRECISION, -45.f, 45.f, 5.f); CVar(OffsetY, VA_LIST("Offset Y", "Viewmodel offset Y"), 0.f, VISUAL | SLIDER_PRECISION, -45.f, 45.f, 5.f); CVar(OffsetZ, VA_LIST("Offset Z", "Viewmodel offset Z"), 0.f, VISUAL | SLIDER_PRECISION, -45.f, 45.f, 5.f); @@ -717,8 +705,8 @@ NAMESPACE_BEGIN(Vars) CVarEnum(AutoStrafe, "Auto strafe", 0, NONE, nullptr, VA_LIST("Off", "Legit", "Directional"), Off, Legit, Directional); - CVar(AutoStrafeTurnScale, "Auto strafe turn scale", 0.5f, SLIDER_CLAMP | SLIDER_PRECISION, 0.f, 1.f, 0.1f); - CVar(AutoStrafeMaxDelta, "Auto strafe max delta", 180.f, SLIDER_CLAMP | SLIDER_PRECISION, 0.f, 180.f, 5.f); + CVar(AutoStrafeTurnScale, VA_LIST("Turn scale", "Auto strafe turn scale"), 0.5f, SLIDER_CLAMP | SLIDER_PRECISION, 0.f, 1.f, 0.1f); + CVar(AutoStrafeMaxDelta, VA_LIST("Max delta", "Auto strafe max delta"), 180.f, SLIDER_CLAMP | SLIDER_PRECISION, 0.f, 180.f, 5.f); CVar(Bunnyhop, "Bunnyhop", false); CVar(EdgeJump, "Edge jump", false); CVar(AutoJumpbug, "Auto jumpbug", false); @@ -746,10 +734,10 @@ NAMESPACE_BEGIN(Vars) CVarEnum(AntiBackstab, "Anti-backstab", 0, NONE, nullptr, VA_LIST("Off", "Yaw", "Pitch", "Fake"), Off, Yaw, Pitch, Fake); - CVar(AntiAFK, "Anti-AFK", false); - CVar(AntiAutobalance, "Anti-autobalance", false); CVar(TauntControl, "Taunt control", false); CVar(KartControl, "Kart control", false); + CVar(AntiAutobalance, "Anti-autobalance", false); + CVar(AntiAFK, "Anti-AFK", false); CVar(AutoF2Ignored, "Auto F2 ignored", false); CVar(AutoF1Priority, "Auto F1 priority", false); CVar(AcceptItemDrops, "Auto accept item drops", false); @@ -844,46 +832,56 @@ NAMESPACE_BEGIN(Vars) CVar(Lifetime, "Notification time", 5.f, VISUAL, 0.5f, 5.f, 0.5f); NAMESPACE_BEGIN(VoteStart, Logging) - CVarValues(LogTo, VA_LIST("Log to", "Vote start log to"), 0b000001, DROPDOWN_MULTI, nullptr, + CVarValues(LogTo, "Vote start log to", 0b000001, DROPDOWN_MULTI, nullptr, "Toasts", "Chat", "Party", "Console", "Menu", "Debug"); NAMESPACE_END(VoteStart) NAMESPACE_BEGIN(VoteCast, Logging) - CVarValues(LogTo, VA_LIST("Log to", "Vote cast log to"), 0b000001, DROPDOWN_MULTI, nullptr, + CVarValues(LogTo, "Vote cast log to", 0b000001, DROPDOWN_MULTI, nullptr, "Toasts", "Chat", "Party", "Console", "Menu", "Debug"); NAMESPACE_END(VoteCast) NAMESPACE_BEGIN(ClassChange, Logging) - CVarValues(LogTo, VA_LIST("Log to", "Class change log to"), 0b000001, DROPDOWN_MULTI, nullptr, + CVarValues(LogTo, "Class change log to", 0b000001, DROPDOWN_MULTI, nullptr, "Toasts", "Chat", "Party", "Console", "Menu", "Debug"); NAMESPACE_END(ClassChange) NAMESPACE_BEGIN(Damage, Logging) - CVarValues(LogTo, VA_LIST("Log to", "Damage log to"), 0b000001, DROPDOWN_MULTI, nullptr, + CVarValues(LogTo, "Damage log to", 0b000001, DROPDOWN_MULTI, nullptr, "Toasts", "Chat", "Party", "Console", "Menu", "Debug"); NAMESPACE_END(Damage) NAMESPACE_BEGIN(CheatDetection, Logging) - CVarValues(LogTo, VA_LIST("Log to", "Cheat detection log to"), 0b000001, DROPDOWN_MULTI, nullptr, + CVarValues(LogTo, "Cheat detection log to", 0b000001, DROPDOWN_MULTI, nullptr, "Toasts", "Chat", "Party", "Console", "Menu", "Debug"); NAMESPACE_END(CheatDetection) NAMESPACE_BEGIN(Tags, Logging) - CVarValues(LogTo, VA_LIST("Log to", "Tags log to"), 0b000001, DROPDOWN_MULTI, nullptr, + CVarValues(LogTo, "Tags log to", 0b000001, DROPDOWN_MULTI, nullptr, "Toasts", "Chat", "Party", "Console", "Menu", "Debug"); NAMESPACE_END(Tags) NAMESPACE_BEGIN(Aliases, Logging) - CVarValues(LogTo, VA_LIST("Log to", "Aliases log to"), 0b000001, DROPDOWN_MULTI, nullptr, + CVarValues(LogTo, "Aliases log to", 0b000001, DROPDOWN_MULTI, nullptr, "Toasts", "Chat", "Party", "Console", "Menu", "Debug"); NAMESPACE_END(Aliases) NAMESPACE_BEGIN(Resolver, Logging) - CVarValues(LogTo, VA_LIST("Log to", "Resolver log to"), 0b000001, DROPDOWN_MULTI, nullptr, + CVarValues(LogTo, "Resolver log to", 0b000001, DROPDOWN_MULTI, nullptr, "Toasts", "Chat", "Party", "Console", "Menu", "Debug"); NAMESPACE_END(Resolver) NAMESPACE_END(Logging) + NAMESPACE_BEGIN(CheatDetection, Cheat Detection) + CVarEnum(Methods, "Detection methods", 0b0000, DROPDOWN_MULTI, nullptr, + VA_LIST("Invalid pitch", "Packet choking", "Aim flicking", "Duck Speed"), + InvalidPitch = 1 << 0, PacketChoking = 1 << 1, AimFlicking = 1 << 2, DuckSpeed = 1 << 3); + CVar(DetectionsRequired, "Detections required", 10, SLIDER_MIN, 0, 50); + CVar(MinChoking, "Min choking", 20, SLIDER_MIN, 4, 22); + CVar(MinFlick, "Min flick angle", 20.f, SLIDER_PRECISION, 10.f, 30.f); // min flick size to suspect + CVar(MaxNoise, "Max flick noise", 1.f, SLIDER_PRECISION, 1.f, 10.f); // max difference between angles before and after flick + NAMESPACE_END(CheatDetection) + NAMESPACE_BEGIN(Debug) CVar(Info, "Debug info", false, NOSAVE); CVar(Logging, "Debug logging", false, NOSAVE);