From 3bb0a0b9d59a65856594cc7c4e5aeb01f5adf10f Mon Sep 17 00:00:00 2001 From: rei-2 <174158077+rei-2@users.noreply.github.com> Date: Sun, 26 Oct 2025 23:59:26 -0400 Subject: [PATCH] misc changes and fixes --- Amalgam/src/Features/Aimbot/AimbotMelee/AimbotMelee.cpp | 2 +- .../Aimbot/AimbotProjectile/AimbotProjectile.cpp | 4 ++-- Amalgam/src/Features/Aimbot/AutoHeal/AutoHeal.cpp | 2 +- Amalgam/src/Features/Binds/Binds.cpp | 5 ++++- Amalgam/src/Features/Binds/Binds.h | 2 +- Amalgam/src/Features/NetworkFix/NetworkFix.cpp | 9 ++++----- Amalgam/src/Features/NetworkFix/NetworkFix.h | 3 ++- Amalgam/src/Features/Ticks/Ticks.cpp | 9 ++++----- Amalgam/src/Features/Ticks/Ticks.h | 4 ++-- Amalgam/src/Hooks/CL_Move.cpp | 9 ++++----- Amalgam/src/SDK/Definitions/Main/CTFPlayer.h | 1 + Amalgam/src/SDK/Helpers/Entities/Entities.cpp | 2 +- Amalgam/src/SDK/Helpers/Entities/Entities.h | 2 +- 13 files changed, 28 insertions(+), 26 deletions(-) diff --git a/Amalgam/src/Features/Aimbot/AimbotMelee/AimbotMelee.cpp b/Amalgam/src/Features/Aimbot/AimbotMelee/AimbotMelee.cpp index 78172356..1930bfc1 100644 --- a/Amalgam/src/Features/Aimbot/AimbotMelee/AimbotMelee.cpp +++ b/Amalgam/src/Features/Aimbot/AimbotMelee/AimbotMelee.cpp @@ -315,7 +315,7 @@ bool CAimbotMelee::CanBackstab(CBaseEntity* pTarget, CTFPlayer* pLocal, Vec3 vEy if (Vars::Aimbot::Melee::BackstabDoubleTest.Value && !TestDots(vTargetAngles)) return false; - vTargetAngles.y += H::Entities.GetPingAngles(pTarget->entindex()).y; + vTargetAngles.y += H::Entities.GetDeltaAngles(pTarget->entindex()).y; if (!TestDots(vTargetAngles)) return false; } diff --git a/Amalgam/src/Features/Aimbot/AimbotProjectile/AimbotProjectile.cpp b/Amalgam/src/Features/Aimbot/AimbotProjectile/AimbotProjectile.cpp index 1a0df2ac..2418365a 100644 --- a/Amalgam/src/Features/Aimbot/AimbotProjectile/AimbotProjectile.cpp +++ b/Amalgam/src/Features/Aimbot/AimbotProjectile/AimbotProjectile.cpp @@ -485,8 +485,8 @@ static inline void TracePoint(Vec3& vPoint, int& iType, Vec3& vTargetEye, Info_t size_t iOriginalSize = vPoints.size(); { - bool bCheckNormal = !bNormal && iOriginalType & PointTypeEnum::Regular; - if (bNormal = bCheckNormal && (tInfo.m_vLocalEye - vTargetEye).Dot(vTargetEye - vPoint) > 0.f) + // necessary performance wise? + if (bNormal = (tInfo.m_vLocalEye - vTargetEye).Dot(vTargetEye - vPoint) > 0.f) goto breakOutExtra; if (!(iOriginalType & PointTypeEnum::Regular)) // don't do the same trace over again diff --git a/Amalgam/src/Features/Aimbot/AutoHeal/AutoHeal.cpp b/Amalgam/src/Features/Aimbot/AutoHeal/AutoHeal.cpp index 3faba5b4..9bc00f93 100644 --- a/Amalgam/src/Features/Aimbot/AutoHeal/AutoHeal.cpp +++ b/Amalgam/src/Features/Aimbot/AutoHeal/AutoHeal.cpp @@ -274,7 +274,7 @@ void CAutoHeal::GetDangers(CTFPlayer* pTarget, bool bVaccinator, float& flBullet bool bCheater = F::PlayerUtils.HasTag(iIndex, F::PlayerUtils.TagToIndex(CHEATER_TAG)); bool bZoom = pPlayer->InCond(TF_COND_ZOOMED); - float flFOV = Math::CalcFov(H::Entities.GetEyeAngles(iIndex) + H::Entities.GetPingAngles(iIndex), Math::CalcAngle(vPlayerEye, bZoom ? vTargetEye : vTargetCenter)); + float flFOV = Math::CalcFov(H::Entities.GetEyeAngles(iIndex) + H::Entities.GetDeltaAngles(iIndex), Math::CalcAngle(vPlayerEye, bZoom ? vTargetEye : vTargetCenter)); bool bFOV = bCheater || flFOV < (bZoom ? 10 : eWeaponType == EWeaponType::HITSCAN ? 30 : 90); if (!bFOV || !TraceToEntity(pTarget, pPlayer, vTargetCenter, vPlayerEye)) continue; diff --git a/Amalgam/src/Features/Binds/Binds.cpp b/Amalgam/src/Features/Binds/Binds.cpp index 573f8d0b..ba5da976 100644 --- a/Amalgam/src/Features/Binds/Binds.cpp +++ b/Amalgam/src/Features/Binds/Binds.cpp @@ -134,11 +134,14 @@ void CBinds::SetVars(CTFPlayer* pLocal, CTFWeaponBase* pWeapon, bool bManage) GetBinds(DEFAULT_BIND, pLocal, pWeapon, m_vBinds, bManage); } -void CBinds::Run(CTFPlayer* pLocal, CTFWeaponBase* pWeapon) +void CBinds::Run() { if (G::Unload) return; + auto pLocal = H::Entities.GetLocal(); + auto pWeapon = H::Entities.GetWeapon(); + for (auto& tBind : m_vBinds) { // don't delay inputs for binds if (tBind.m_iType != BindEnum::Key) diff --git a/Amalgam/src/Features/Binds/Binds.h b/Amalgam/src/Features/Binds/Binds.h index 01a230e1..f5bff74a 100644 --- a/Amalgam/src/Features/Binds/Binds.h +++ b/Amalgam/src/Features/Binds/Binds.h @@ -32,7 +32,7 @@ struct Bind_t class CBinds { public: - void Run(CTFPlayer* pLocal, CTFWeaponBase* pWeapon); + void Run(); void SetVars(CTFPlayer* pLocal, CTFWeaponBase* pWeapon, bool bManage = true); bool GetBind(int iID, Bind_t* pBind); diff --git a/Amalgam/src/Features/NetworkFix/NetworkFix.cpp b/Amalgam/src/Features/NetworkFix/NetworkFix.cpp index c5602c0e..cc89a714 100644 --- a/Amalgam/src/Features/NetworkFix/NetworkFix.cpp +++ b/Amalgam/src/Features/NetworkFix/NetworkFix.cpp @@ -21,14 +21,13 @@ void CNetworkFix::FixInputDelay(bool bFinalTick) if (!Vars::Misc::Game::NetworkFix.Value || !I::EngineClient->IsInGame() || SDK::IsLoopback()) return; - CReadPacketState Backup = {}; - Backup.Store(); + m_tBackup.Store(); static auto CL_ReadPackets = U::Hooks.m_mHooks["CL_ReadPackets"]; CL_ReadPackets->Call(bFinalTick); - m_State.Store(); - Backup.Restore(); + m_tState.Store(); + m_tBackup.Restore(); } bool CNetworkFix::ShouldReadPackets() @@ -36,6 +35,6 @@ bool CNetworkFix::ShouldReadPackets() if (!Vars::Misc::Game::NetworkFix.Value || !I::EngineClient->IsInGame() || SDK::IsLoopback()) return true; - m_State.Restore(); + m_tState.Restore(); return false; } \ No newline at end of file diff --git a/Amalgam/src/Features/NetworkFix/NetworkFix.h b/Amalgam/src/Features/NetworkFix/NetworkFix.h index 31417b91..7843defd 100644 --- a/Amalgam/src/Features/NetworkFix/NetworkFix.h +++ b/Amalgam/src/Features/NetworkFix/NetworkFix.h @@ -17,7 +17,8 @@ public: class CNetworkFix { private: - CReadPacketState m_State = {}; + CReadPacketState m_tState = {}; + CReadPacketState m_tBackup = {}; public: void FixInputDelay(bool bFinalTick); diff --git a/Amalgam/src/Features/Ticks/Ticks.cpp b/Amalgam/src/Features/Ticks/Ticks.cpp index 1ddbbf3b..31674706 100644 --- a/Amalgam/src/Features/Ticks/Ticks.cpp +++ b/Amalgam/src/Features/Ticks/Ticks.cpp @@ -1,6 +1,5 @@ #include "Ticks.h" -#include "../NetworkFix/NetworkFix.h" #include "../PacketManip/AntiAim/AntiAim.h" #include "../EnginePrediction/EnginePrediction.h" #include "../Aimbot/AutoRocketJump/AutoRocketJump.h" @@ -166,10 +165,9 @@ void CTicks::MoveFunc(float accumulated_extra_samples, bool bFinalTick) CL_Move->Call(accumulated_extra_samples, bFinalTick); } -void CTicks::Move(float accumulated_extra_samples, bool bFinalTick, CTFPlayer* pLocal) +void CTicks::Move(float accumulated_extra_samples, bool bFinalTick) { - F::NetworkFix.FixInputDelay(bFinalTick); - MoveManage(pLocal); + MoveManage(); if (auto pWeapon = H::Entities.GetWeapon()) { @@ -232,8 +230,9 @@ void CTicks::Move(float accumulated_extra_samples, bool bFinalTick, CTFPlayer* p } } -void CTicks::MoveManage(CTFPlayer* pLocal) +void CTicks::MoveManage() { + auto pLocal = H::Entities.GetLocal(); if (!pLocal) return; diff --git a/Amalgam/src/Features/Ticks/Ticks.h b/Amalgam/src/Features/Ticks/Ticks.h index fef96123..25dab4c0 100644 --- a/Amalgam/src/Features/Ticks/Ticks.h +++ b/Amalgam/src/Features/Ticks/Ticks.h @@ -5,7 +5,7 @@ class CTicks { private: void MoveFunc(float accumulated_extra_samples, bool bFinalTick); - void MoveManage(CTFPlayer* pLocal); + void MoveManage(); void Recharge(CTFPlayer* pLocal); void Warp(); @@ -25,7 +25,7 @@ private: bool m_bTimingUnsure = false; // we aren't sure when we'll actually fire, hold aim public: - void Move(float accumulated_extra_samples, bool bFinalTick, CTFPlayer* pLocal); + void Move(float accumulated_extra_samples, bool bFinalTick); void CreateMove(CTFPlayer* pLocal, CTFWeaponBase* pWeapon, CUserCmd* pCmd, bool* pSendPacket); void Draw(CTFPlayer* pLocal); void Reset(); diff --git a/Amalgam/src/Hooks/CL_Move.cpp b/Amalgam/src/Hooks/CL_Move.cpp index e33c5900..46ab791e 100644 --- a/Amalgam/src/Hooks/CL_Move.cpp +++ b/Amalgam/src/Hooks/CL_Move.cpp @@ -1,5 +1,6 @@ #include "../SDK/SDK.h" +#include "../Features/NetworkFix/NetworkFix.h" #include "../Features/Ticks/Ticks.h" #include "../Features/Binds/Binds.h" #include "../Features/Players/PlayerCore.h" @@ -20,20 +21,18 @@ MAKE_HOOK(CL_Move, S::CL_Move(), void, if (G::Unload) return CALL_ORIGINAL(accumulated_extra_samples, bFinalTick); + F::NetworkFix.FixInputDelay(bFinalTick); F::Backtrack.m_iTickCount = I::GlobalVars->tickcount + 1; if (!Vars::Misc::Game::NetworkFix.Value && !SDK::IsLoopback()) F::Backtrack.m_iTickCount--; - auto pLocal = H::Entities.GetLocal(); - auto pWeapon = H::Entities.GetWeapon(); - - F::Binds.Run(pLocal, pWeapon); + F::Binds.Run(); F::PlayerCore.Run(); F::Backtrack.SendLerp(); F::Misc.PingReducer(); F::AutoQueue.Run(); - F::Ticks.Move(accumulated_extra_samples, bFinalTick, pLocal); + F::Ticks.Move(accumulated_extra_samples, bFinalTick); for (auto& Line : G::PathStorage) { diff --git a/Amalgam/src/SDK/Definitions/Main/CTFPlayer.h b/Amalgam/src/SDK/Definitions/Main/CTFPlayer.h index db907ccf..65921e4b 100644 --- a/Amalgam/src/SDK/Definitions/Main/CTFPlayer.h +++ b/Amalgam/src/SDK/Definitions/Main/CTFPlayer.h @@ -139,6 +139,7 @@ public: NETVAR(m_nExperienceLevelProgress, int, "CTFPlayer", "m_nExperienceLevelProgress"); NETVAR(m_bMatchSafeToLeave, bool, "CTFPlayer", "m_bMatchSafeToLeave"); NETVAR(m_vecOrigin, Vec3, "CTFPlayer", "m_vecOrigin"); + NETVAR(m_angEyeAngles, Vec3, "CTFPlayer", "m_angEyeAngles[0]"); NETVAR(m_angEyeAnglesX, float, "CTFPlayer", "m_angEyeAngles[0]"); NETVAR(m_angEyeAnglesY, float, "CTFPlayer", "m_angEyeAngles[1]"); NETVAR(m_bAllowMoveDuringTaunt, bool, "CTFPlayer", "m_bAllowMoveDuringTaunt"); diff --git a/Amalgam/src/SDK/Helpers/Entities/Entities.cpp b/Amalgam/src/SDK/Helpers/Entities/Entities.cpp index 490aa6a5..9f48d5f5 100644 --- a/Amalgam/src/SDK/Helpers/Entities/Entities.cpp +++ b/Amalgam/src/SDK/Helpers/Entities/Entities.cpp @@ -488,7 +488,7 @@ float CEntities::GetLagTime(int iIndex) { return m_mLagTimes.contains(iIndex) ? int CEntities::GetChoke(int iIndex) { return m_mChokes.contains(iIndex) ? m_mChokes[iIndex] : 0; } bool CEntities::GetDormancy(int iIndex) { return m_mDormancy.contains(iIndex); } Vec3 CEntities::GetEyeAngles(int iIndex) { return m_mEyeAngles.contains(iIndex) ? m_mEyeAngles[iIndex] : Vec3(); } -Vec3 CEntities::GetPingAngles(int iIndex) { return m_mOldAngles.contains(iIndex) ? (m_mEyeAngles[iIndex] - m_mOldAngles[iIndex]) / GetLagTime(iIndex) * (F::Backtrack.GetReal() + TICKS_TO_TIME(F::Backtrack.GetAnticipatedChoke())) : Vec3(); } +Vec3 CEntities::GetDeltaAngles(int iIndex) { return m_mOldAngles.contains(iIndex) ? m_mEyeAngles[iIndex].DeltaAngle(m_mOldAngles[iIndex]) / GetLagTime(iIndex) * (F::Backtrack.GetReal() + TICKS_TO_TIME(F::Backtrack.GetAnticipatedChoke())) : Vec3(); } bool CEntities::GetLagCompensation(int iIndex) { return m_mLagCompensation[iIndex]; } void CEntities::SetLagCompensation(int iIndex, bool bLagComp) { m_mLagCompensation[iIndex] = bLagComp; } Vec3* CEntities::GetAvgVelocity(int iIndex) { return iIndex != I::EngineClient->GetLocalPlayer() ? &m_mAvgVelocities[iIndex] : nullptr; } diff --git a/Amalgam/src/SDK/Helpers/Entities/Entities.h b/Amalgam/src/SDK/Helpers/Entities/Entities.h index 6174aff0..396775f6 100644 --- a/Amalgam/src/SDK/Helpers/Entities/Entities.h +++ b/Amalgam/src/SDK/Helpers/Entities/Entities.h @@ -76,7 +76,7 @@ public: float GetLagTime(int iIndex); int GetChoke(int iIndex); Vec3 GetEyeAngles(int iIndex); - Vec3 GetPingAngles(int iIndex); + Vec3 GetDeltaAngles(int iIndex); bool GetLagCompensation(int iIndex); void SetLagCompensation(int iIndex, bool bLagComp); bool GetDormancy(int iIndex);