diff --git a/Amalgam/Amalgam.vcxproj b/Amalgam/Amalgam.vcxproj index a848773d..4ed88afa 100644 --- a/Amalgam/Amalgam.vcxproj +++ b/Amalgam/Amalgam.vcxproj @@ -1051,7 +1051,6 @@ - diff --git a/Amalgam/Amalgam.vcxproj.filters b/Amalgam/Amalgam.vcxproj.filters index 67045e46..834da8f8 100644 --- a/Amalgam/Amalgam.vcxproj.filters +++ b/Amalgam/Amalgam.vcxproj.filters @@ -175,7 +175,6 @@ - diff --git a/Amalgam/src/Core/Core.cpp b/Amalgam/src/Core/Core.cpp index cb1e67ad..2ef1c0c4 100644 --- a/Amalgam/src/Core/Core.cpp +++ b/Amalgam/src/Core/Core.cpp @@ -34,12 +34,12 @@ static inline bool CheckDXLevel() /* const char* sMessage = "You are running with graphics options that Amalgam does not support. -dxlevel must be at least 90."; U::Core.AppendFailText(sMessage); - SDK::Output("Amalgam", sMessage, { 175, 150, 255 }, OUTPUT_CONSOLE | OUTPUT_DEBUG | OUTPUT_TOAST | OUTPUT_MENU); + SDK::Output("Amalgam", sMessage, DEFAULT_COLOR, OUTPUT_CONSOLE | OUTPUT_TOAST | OUTPUT_MENU | OUTPUT_DEBUG); return false; */ const char* sMessage = "You are running with graphics options that Amalgam does not support. It is recommended for -dxlevel to be at least 90."; - SDK::Output("Amalgam", sMessage, { 175, 150, 255 }, OUTPUT_CONSOLE | OUTPUT_DEBUG | OUTPUT_TOAST | OUTPUT_MENU); + SDK::Output("Amalgam", sMessage, DEFAULT_COLOR, OUTPUT_CONSOLE | OUTPUT_TOAST | OUTPUT_MENU | OUTPUT_DEBUG); } return true; @@ -116,7 +116,7 @@ void CCore::Load() F::Configs.LoadConfig(F::Configs.m_sCurrentConfig, false); - SDK::Output("Amalgam", "Loaded", { 175, 150, 255 }, OUTPUT_CONSOLE | OUTPUT_DEBUG | OUTPUT_TOAST | OUTPUT_MENU); + SDK::Output("Amalgam", "Loaded", DEFAULT_COLOR, OUTPUT_CONSOLE | OUTPUT_TOAST | OUTPUT_MENU | OUTPUT_DEBUG); } void CCore::Loop() @@ -169,5 +169,5 @@ void CCore::Unload() return; } - SDK::Output("Amalgam", "Unloaded", { 175, 150, 255 }, OUTPUT_CONSOLE | OUTPUT_DEBUG); + SDK::Output("Amalgam", "Unloaded", DEFAULT_COLOR, OUTPUT_CONSOLE | OUTPUT_DEBUG); } \ No newline at end of file diff --git a/Amalgam/src/Features/Aimbot/Aimbot.cpp b/Amalgam/src/Features/Aimbot/Aimbot.cpp index d90f0289..12a730b4 100644 --- a/Amalgam/src/Features/Aimbot/Aimbot.cpp +++ b/Amalgam/src/Features/Aimbot/Aimbot.cpp @@ -90,7 +90,7 @@ void CAimbot::Draw(CTFPlayer* pLocal) if (Vars::Aimbot::General::AimFOV.Value >= 90.f) return; - float flRadius = tanf(DEG2RAD(Vars::Aimbot::General::AimFOV.Value)) / tanf(DEG2RAD(pLocal->m_iFOV()) / 2) * float(H::Draw.m_nScreenW) * (4.f / 6.f) / (16.f / 9.f); + float flRadius = tanf(DEG2RAD(Vars::Aimbot::General::AimFOV.Value)) / tanf(DEG2RAD(m_flFOV) / 2) * float(H::Draw.m_nScreenW) * (4.f / 6.f) / (16.f / 9.f); H::Draw.LineCircle(H::Draw.m_nScreenW / 2, H::Draw.m_nScreenH / 2, flRadius, 68, Vars::Colors::FOVCircle.Value); } diff --git a/Amalgam/src/Features/Aimbot/Aimbot.h b/Amalgam/src/Features/Aimbot/Aimbot.h index 8cbf9d3b..4757edf7 100644 --- a/Amalgam/src/Features/Aimbot/Aimbot.h +++ b/Amalgam/src/Features/Aimbot/Aimbot.h @@ -19,6 +19,7 @@ public: bool m_bRan = false; bool m_bRunningSecondary = false; + float m_flFOV = 0.f; DrawPath_t m_tPath = {}; }; diff --git a/Amalgam/src/Features/Configs/Configs.cpp b/Amalgam/src/Features/Configs/Configs.cpp index c1b3eeb5..c5a0aa05 100644 --- a/Amalgam/src/Features/Configs/Configs.cpp +++ b/Amalgam/src/Features/Configs/Configs.cpp @@ -323,7 +323,7 @@ static inline void LoadMain(BaseVar*& pBase, boost::property_tree::ptree& tTree) } } else if (!(pVar->m_iFlags & NOSAVE)) - SDK::Output("Amalgam", std::format("{} not found", pVar->m_sName).c_str(), { 175, 150, 255, 127 }, OUTPUT_CONSOLE | OUTPUT_DEBUG); + SDK::Output("Amalgam", std::format("{} not found", pVar->m_sName).c_str(), ALTERNATE_COLOR, OUTPUT_CONSOLE | OUTPUT_MENU | OUTPUT_DEBUG); } #define Load(t, j) if (IsType(t)) LoadMain(pBase, j); @@ -418,11 +418,11 @@ bool CConfigs::SaveConfig(const std::string& sConfigName, bool bNotify) m_sCurrentConfig = sConfigName; m_sCurrentVisuals = ""; if (bNotify) - SDK::Output("Amalgam", std::format("Config {} saved", sConfigName).c_str(), { 175, 150, 255 }, OUTPUT_CONSOLE | OUTPUT_DEBUG | OUTPUT_TOAST | OUTPUT_MENU); + SDK::Output("Amalgam", std::format("Config {} saved", sConfigName).c_str(), DEFAULT_COLOR, OUTPUT_CONSOLE | OUTPUT_TOAST | OUTPUT_MENU | OUTPUT_DEBUG); } catch (...) { - SDK::Output("Amalgam", "Save config failed", { 175, 150, 255, 127 }, OUTPUT_CONSOLE | OUTPUT_DEBUG); + SDK::Output("Amalgam", "Save config failed", ALTERNATE_COLOR, OUTPUT_CONSOLE | OUTPUT_MENU | OUTPUT_DEBUG); return false; } @@ -470,6 +470,8 @@ bool CConfigs::LoadConfig(const std::string& sConfigName, bool bNotify) F::Binds.m_vBinds.push_back(tBind); } } + else + SDK::Output("Amalgam", "Config binds not found", ALTERNATE_COLOR, OUTPUT_CONSOLE | OUTPUT_MENU | OUTPUT_DEBUG); if (auto tSub = tRead.get_child_optional("Vars"); tSub || (tSub = tRead.get_child_optional("ConVars"))) @@ -493,6 +495,8 @@ bool CConfigs::LoadConfig(const std::string& sConfigName, bool bNotify) else Load(WindowBox_t, *tSub) } } + else + SDK::Output("Amalgam", "Config vars not found", ALTERNATE_COLOR, OUTPUT_CONSOLE | OUTPUT_MENU | OUTPUT_DEBUG); if (auto tSub = tRead.get_child_optional("Groups")) { @@ -524,17 +528,19 @@ bool CConfigs::LoadConfig(const std::string& sConfigName, bool bNotify) F::Groups.m_vGroups.push_back(tGroup); } } + else + SDK::Output("Amalgam", "Config groups not found", ALTERNATE_COLOR, OUTPUT_CONSOLE | OUTPUT_MENU | OUTPUT_DEBUG); F::Binds.SetVars(nullptr, nullptr, false); H::Fonts.Reload(Vars::Menu::Scale[DEFAULT_BIND]); m_sCurrentConfig = sConfigName; m_sCurrentVisuals = ""; if (bNotify) - SDK::Output("Amalgam", std::format("Config {} loaded", sConfigName).c_str(), { 175, 150, 255 }, OUTPUT_CONSOLE | OUTPUT_DEBUG | OUTPUT_TOAST | OUTPUT_MENU); + SDK::Output("Amalgam", std::format("Config {} loaded", sConfigName).c_str(), DEFAULT_COLOR, OUTPUT_CONSOLE | OUTPUT_TOAST | OUTPUT_MENU | OUTPUT_DEBUG); } catch (...) { - SDK::Output("Amalgam", "Load config failed", { 175, 150, 255, 127 }, OUTPUT_CONSOLE | OUTPUT_DEBUG); + SDK::Output("Amalgam", "Load config failed", ALTERNATE_COLOR, OUTPUT_CONSOLE | OUTPUT_MENU | OUTPUT_DEBUG); return false; } @@ -623,11 +629,11 @@ bool CConfigs::SaveVisual(const std::string& sConfigName, bool bNotify) write_json(m_sVisualsPath + sConfigName + m_sConfigExtension, tWrite); if (bNotify) - SDK::Output("Amalgam", std::format("Visual config {} saved", sConfigName).c_str(), { 175, 150, 255 }, OUTPUT_CONSOLE | OUTPUT_DEBUG | OUTPUT_TOAST | OUTPUT_MENU); + SDK::Output("Amalgam", std::format("Visual config {} saved", sConfigName).c_str(), DEFAULT_COLOR, OUTPUT_CONSOLE | OUTPUT_TOAST | OUTPUT_MENU | OUTPUT_DEBUG); } catch (...) { - SDK::Output("Amalgam", "Save visuals failed", { 175, 150, 255, 127 }, OUTPUT_CONSOLE | OUTPUT_DEBUG); + SDK::Output("Amalgam", "Save visuals failed", ALTERNATE_COLOR, OUTPUT_CONSOLE | OUTPUT_MENU | OUTPUT_DEBUG); return false; } return true; @@ -667,6 +673,8 @@ bool CConfigs::LoadVisual(const std::string& sConfigName, bool bNotify) else LoadMisc(WindowBox_t, *tSub) } } + else + SDK::Output("Amalgam", "Config vars not found", ALTERNATE_COLOR, OUTPUT_CONSOLE | OUTPUT_MENU | OUTPUT_DEBUG); if (auto tSub = tRead.get_child_optional("Groups")) { @@ -698,16 +706,18 @@ bool CConfigs::LoadVisual(const std::string& sConfigName, bool bNotify) F::Groups.m_vGroups.push_back(tGroup); } } + else + SDK::Output("Amalgam", "Config groups not found", ALTERNATE_COLOR, OUTPUT_CONSOLE | OUTPUT_MENU | OUTPUT_DEBUG); F::Binds.SetVars(nullptr, nullptr, false); m_sCurrentVisuals = sConfigName; if (bNotify) - SDK::Output("Amalgam", std::format("Visual config {} loaded", sConfigName).c_str(), { 175, 150, 255 }, OUTPUT_CONSOLE | OUTPUT_DEBUG | OUTPUT_TOAST | OUTPUT_MENU); + SDK::Output("Amalgam", std::format("Visual config {} loaded", sConfigName).c_str(), DEFAULT_COLOR, OUTPUT_CONSOLE | OUTPUT_TOAST | OUTPUT_MENU | OUTPUT_DEBUG); } catch (...) { - SDK::Output("Amalgam", "Load visuals failed", { 175, 150, 255, 127 }, OUTPUT_CONSOLE | OUTPUT_DEBUG); + SDK::Output("Amalgam", "Load visuals failed", ALTERNATE_COLOR, OUTPUT_CONSOLE | OUTPUT_MENU | OUTPUT_DEBUG); return false; } return true; @@ -737,11 +747,11 @@ void CConfigs::DeleteConfig(const std::string& sConfigName, bool bNotify) LoadConfig("default", false); if (bNotify) - SDK::Output("Amalgam", std::format("Config {} deleted", sConfigName).c_str(), { 175, 150, 255 }, OUTPUT_CONSOLE | OUTPUT_DEBUG | OUTPUT_TOAST | OUTPUT_MENU); + SDK::Output("Amalgam", std::format("Config {} deleted", sConfigName).c_str(), DEFAULT_COLOR, OUTPUT_CONSOLE | OUTPUT_TOAST | OUTPUT_MENU | OUTPUT_DEBUG); } catch (...) { - SDK::Output("Amalgam", "Remove config failed", { 175, 150, 255, 127 }, OUTPUT_CONSOLE | OUTPUT_DEBUG); + SDK::Output("Amalgam", "Remove config failed", ALTERNATE_COLOR, OUTPUT_CONSOLE | OUTPUT_MENU | OUTPUT_DEBUG); } } @@ -776,11 +786,11 @@ void CConfigs::ResetConfig(const std::string& sConfigName, bool bNotify) H::Fonts.Reload(Vars::Menu::Scale[DEFAULT_BIND]); if (bNotify) - SDK::Output("Amalgam", std::format("Config {} reset", sConfigName).c_str(), { 175, 150, 255 }, OUTPUT_CONSOLE | OUTPUT_DEBUG | OUTPUT_TOAST | OUTPUT_MENU); + SDK::Output("Amalgam", std::format("Config {} reset", sConfigName).c_str(), DEFAULT_COLOR, OUTPUT_CONSOLE | OUTPUT_TOAST | OUTPUT_MENU | OUTPUT_DEBUG); } catch (...) { - SDK::Output("Amalgam", "Reset config failed", { 175, 150, 255, 127 }, OUTPUT_CONSOLE | OUTPUT_DEBUG); + SDK::Output("Amalgam", "Reset config failed", ALTERNATE_COLOR, OUTPUT_CONSOLE | OUTPUT_MENU | OUTPUT_DEBUG); } } @@ -791,11 +801,11 @@ void CConfigs::DeleteVisual(const std::string& sConfigName, bool bNotify) std::filesystem::remove(m_sVisualsPath + sConfigName + m_sConfigExtension); if (bNotify) - SDK::Output("Amalgam", std::format("Visual config {} deleted", sConfigName).c_str(), { 175, 150, 255 }, OUTPUT_CONSOLE | OUTPUT_DEBUG | OUTPUT_TOAST | OUTPUT_MENU); + SDK::Output("Amalgam", std::format("Visual config {} deleted", sConfigName).c_str(), DEFAULT_COLOR, OUTPUT_CONSOLE | OUTPUT_TOAST | OUTPUT_MENU | OUTPUT_DEBUG); } catch (...) { - SDK::Output("Amalgam", "Remove visuals failed", { 175, 150, 255, 127 }, OUTPUT_CONSOLE | OUTPUT_DEBUG); + SDK::Output("Amalgam", "Remove visuals failed", ALTERNATE_COLOR, OUTPUT_CONSOLE | OUTPUT_MENU | OUTPUT_DEBUG); } } @@ -828,10 +838,10 @@ void CConfigs::ResetVisual(const std::string& sConfigName, bool bNotify) F::Binds.SetVars(nullptr, nullptr, false); if (bNotify) - SDK::Output("Amalgam", std::format("Visual config {} reset", sConfigName).c_str(), { 175, 150, 255 }, OUTPUT_CONSOLE | OUTPUT_DEBUG | OUTPUT_TOAST | OUTPUT_MENU); + SDK::Output("Amalgam", std::format("Visual config {} reset", sConfigName).c_str(), DEFAULT_COLOR, OUTPUT_CONSOLE | OUTPUT_TOAST | OUTPUT_MENU | OUTPUT_DEBUG); } catch (...) { - SDK::Output("Amalgam", "Reset visuals failed", { 175, 150, 255, 127 }, OUTPUT_CONSOLE | OUTPUT_DEBUG); + SDK::Output("Amalgam", "Reset visuals failed", ALTERNATE_COLOR, OUTPUT_CONSOLE | OUTPUT_MENU | OUTPUT_DEBUG); } } \ 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 8a27112f..0e292b85 100644 --- a/Amalgam/src/Features/ImGui/Menu/Menu.cpp +++ b/Amalgam/src/Features/ImGui/Menu/Menu.cpp @@ -1901,7 +1901,7 @@ void CMenu::MenuLogs(int iTab) fStream.close(); SDK::SetClipboard(sString); - SDK::Output("Amalgam", "Copied playerlist to clipboard", { 175, 150, 255 }, OUTPUT_CONSOLE | OUTPUT_DEBUG | OUTPUT_TOAST | OUTPUT_MENU); + SDK::Output("Amalgam", "Copied playerlist to clipboard", DEFAULT_COLOR, OUTPUT_CONSOLE | OUTPUT_TOAST | OUTPUT_MENU | OUTPUT_DEBUG); } } @@ -2002,7 +2002,7 @@ void CMenu::MenuLogs(int iTab) } catch (...) { - SDK::Output("Amalgam", "Failed to import playerlist", { 175, 150, 255, 127 }, OUTPUT_CONSOLE | OUTPUT_DEBUG | OUTPUT_TOAST | OUTPUT_MENU); + SDK::Output("Amalgam", "Failed to import playerlist", ALTERNATE_COLOR, OUTPUT_CONSOLE | OUTPUT_TOAST | OUTPUT_MENU | OUTPUT_DEBUG); } } @@ -2063,7 +2063,7 @@ void CMenu::MenuLogs(int iTab) } F::PlayerUtils.m_bSave = true; - SDK::Output("Amalgam", "Imported playerlist", { 175, 150, 255 }, OUTPUT_CONSOLE | OUTPUT_DEBUG | OUTPUT_TOAST | OUTPUT_MENU); + SDK::Output("Amalgam", "Imported playerlist", DEFAULT_COLOR, OUTPUT_CONSOLE | OUTPUT_TOAST | OUTPUT_MENU | OUTPUT_DEBUG); CloseCurrentPopup(); } @@ -2094,11 +2094,11 @@ void CMenu::MenuLogs(int iTab) F::Configs.m_sCorePath + std::format("Backup{}.json", iBackupCount + 1), std::filesystem::copy_options::overwrite_existing ); - SDK::Output("Amalgam", "Saved backup playerlist", { 175, 150, 255 }, OUTPUT_CONSOLE | OUTPUT_DEBUG | OUTPUT_TOAST | OUTPUT_MENU); + SDK::Output("Amalgam", "Saved backup playerlist", DEFAULT_COLOR, OUTPUT_CONSOLE | OUTPUT_TOAST | OUTPUT_MENU | OUTPUT_DEBUG); } catch (...) { - SDK::Output("Amalgam", "Failed to backup playerlist", { 175, 150, 255, 127 }, OUTPUT_CONSOLE | OUTPUT_DEBUG | OUTPUT_TOAST | OUTPUT_MENU); + SDK::Output("Amalgam", "Failed to backup playerlist", ALTERNATE_COLOR, OUTPUT_CONSOLE | OUTPUT_TOAST | OUTPUT_MENU | OUTPUT_DEBUG); } } } diff --git a/Amalgam/src/Features/Players/PlayerCore.cpp b/Amalgam/src/Features/Players/PlayerCore.cpp index 40b56fb4..6641dd3e 100644 --- a/Amalgam/src/Features/Players/PlayerCore.cpp +++ b/Amalgam/src/Features/Players/PlayerCore.cpp @@ -73,11 +73,11 @@ void CPlayerlistCore::SavePlayerlist() write_json(F::Configs.m_sCorePath + "Players.json", tWrite); F::PlayerUtils.m_bSave = false; - SDK::Output("Amalgam", "Saved playerlist", { 175, 150, 255 }, OUTPUT_CONSOLE | OUTPUT_DEBUG | OUTPUT_TOAST | OUTPUT_MENU); + SDK::Output("Amalgam", "Saved playerlist", DEFAULT_COLOR, OUTPUT_CONSOLE | OUTPUT_TOAST | OUTPUT_MENU | OUTPUT_DEBUG); } catch (...) { - SDK::Output("Amalgam", "Save playerlist failed", { 175, 150, 255, 127 }, OUTPUT_CONSOLE | OUTPUT_DEBUG); + SDK::Output("Amalgam", "Save playerlist failed", ALTERNATE_COLOR, OUTPUT_CONSOLE | OUTPUT_MENU | OUTPUT_DEBUG); } } @@ -130,6 +130,8 @@ void CPlayerlistCore::LoadPlayerlist() F::PlayerUtils.m_vTags.push_back(tTag); } } + else + SDK::Output("Amalgam", "Playerlist config not found", ALTERNATE_COLOR, OUTPUT_CONSOLE | OUTPUT_MENU | OUTPUT_DEBUG); if (auto tSub = tRead.get_child_optional("Tags")) { @@ -150,6 +152,8 @@ void CPlayerlistCore::LoadPlayerlist() } } } + else + SDK::Output("Amalgam", "Playerlist tags not found", ALTERNATE_COLOR, OUTPUT_CONSOLE | OUTPUT_MENU | OUTPUT_DEBUG); if (auto tSub = tRead.get_child_optional("Aliases")) { @@ -162,12 +166,14 @@ void CPlayerlistCore::LoadPlayerlist() F::PlayerUtils.m_mPlayerAliases[uAccountID] = sAlias; } } + else + SDK::Output("Amalgam", "Playerlist aliases not found", ALTERNATE_COLOR, OUTPUT_CONSOLE | OUTPUT_MENU | OUTPUT_DEBUG); F::PlayerUtils.m_bLoad = false; - SDK::Output("Amalgam", "Loaded playerlist", { 175, 150, 255 }, OUTPUT_CONSOLE | OUTPUT_DEBUG | OUTPUT_TOAST | OUTPUT_MENU); + SDK::Output("Amalgam", "Loaded playerlist", DEFAULT_COLOR, OUTPUT_CONSOLE | OUTPUT_TOAST | OUTPUT_MENU | OUTPUT_DEBUG); } catch (...) { - SDK::Output("Amalgam", "Load playerlist failed", { 175, 150, 255, 127 }, OUTPUT_CONSOLE | OUTPUT_DEBUG); + SDK::Output("Amalgam", "Load playerlist failed", ALTERNATE_COLOR, OUTPUT_CONSOLE | OUTPUT_MENU | OUTPUT_DEBUG); } } \ No newline at end of file diff --git a/Amalgam/src/Features/Visuals/Visuals.cpp b/Amalgam/src/Features/Visuals/Visuals.cpp index 7cbbba93..2b6e0852 100644 --- a/Amalgam/src/Features/Visuals/Visuals.cpp +++ b/Amalgam/src/Features/Visuals/Visuals.cpp @@ -618,6 +618,11 @@ void CVisuals::DrawHitboxes(int iStore) MAKE_HOOK(CBaseAnimating_DrawServerHitboxes, S::CBaseAnimating_DrawServerHitboxes(), void, void* rcx, float duration, bool monocolor) { +#ifdef DEBUG_HOOKS + if (!Vars::Hooks::CBaseAnimating_DrawServerHitboxes[DEFAULT_BIND]) + return CALL_ORIGINAL(rcx, duration, monocolor); +#endif + if (s_bBoxesHeadOnly) monocolor = false; @@ -627,9 +632,14 @@ MAKE_HOOK(CBaseAnimating_DrawServerHitboxes, S::CBaseAnimating_DrawServerHitboxe MAKE_HOOK(NDebugOverlay_BoxAngles, S::NDebugOverlay_BoxAngles(), void, Vector& origin, Vector& mins, Vector& maxs, QAngle& angles, int r, int g, int b, int a, float duration) { +#ifdef DEBUG_HOOKS + if (!Vars::Hooks::NDebugOverlay_BoxAngles[DEFAULT_BIND]) + return CALL_ORIGINAL(origin, mins, maxs, angles, r, g, b, a, duration); +#endif + if (s_bBoxesHeadOnly) { - static const auto dwDesired = S::CBaseAnimating_DrawServerHitboxes_BoxAngles_Call(); + const auto dwDesired = S::CBaseAnimating_DrawServerHitboxes_BoxAngles_Call(); const auto dwRetAddr = uintptr_t(_ReturnAddress()); if (dwRetAddr == dwDesired && (r != 255 || g != 127 || b != 127)) @@ -653,6 +663,7 @@ MAKE_HOOK(NDebugOverlay_BoxAngles, S::NDebugOverlay_BoxAngles(), void, void CVisuals::FOV(CTFPlayer* pLocal, CViewSetup* pView) { static auto fov_desired = H::ConVars.FindVar("fov_desired"); + static auto default_fov = H::ConVars.FindVar("default_fov"); bool bZoomed = pLocal->InCond(TF_COND_ZOOMED); float flRegularFOV = fov_desired->GetFloat(); @@ -660,6 +671,8 @@ void CVisuals::FOV(CTFPlayer* pLocal, CViewSetup* pView) float flRegularOverride = Vars::Visuals::UI::FieldOfView.Value; float flZoomOverride = Vars::Visuals::UI::ZoomFieldOfView.Value; + if (SDK::CleanScreenshot()) + flRegularOverride = flZoomOverride = 0.f; if (flRegularOverride || flZoomOverride) { @@ -679,8 +692,13 @@ void CVisuals::FOV(CTFPlayer* pLocal, CViewSetup* pView) } } - pLocal->m_iFOV() = pView->fov; - pLocal->m_iDefaultFOV() = std::max(flRegularOverride, flRegularFOV); + F::Aimbot.m_flFOV = pView->fov; + if (pLocal->IsAlive()) + { + pLocal->m_iFOV() = pView->fov; + pLocal->m_iDefaultFOV() = std::max(flRegularOverride, flRegularFOV); + default_fov->SetValue(pLocal->m_iDefaultFOV()); + } } void CVisuals::ThirdPerson(CTFPlayer* pLocal, CViewSetup* pView) @@ -692,7 +710,7 @@ void CVisuals::ThirdPerson(CTFPlayer* pLocal, CViewSetup* pView) //if (bForce) // return; - if (Vars::Visuals::Thirdperson::Enabled.Value || bForce) + if (Vars::Visuals::Thirdperson::Enabled.Value && !SDK::CleanScreenshot() || bForce) I::Input->CAM_ToThirdPerson(); else I::Input->CAM_ToFirstPerson(); @@ -939,7 +957,7 @@ static inline void ApplyModulation(Color_t tColor, bool bSky = false) void CVisuals::Modulate() { - const bool bScreenshot = Vars::Visuals::UI::CleanScreenshots.Value && I::EngineClient->IsTakingScreenshot(); + const bool bScreenshot = SDK::CleanScreenshot(); const bool bWorldModulation = Vars::Visuals::World::Modulations.Value & Vars::Visuals::World::ModulationsEnum::World && !bScreenshot; const bool bSkyModulation = Vars::Visuals::World::Modulations.Value & Vars::Visuals::World::ModulationsEnum::Sky && !bScreenshot; diff --git a/Amalgam/src/Hooks/CAttributeManager_AttribHookValue.cpp b/Amalgam/src/Hooks/CAttributeManager_AttribHookValue.cpp index e53a6b65..2bb60f54 100644 --- a/Amalgam/src/Hooks/CAttributeManager_AttribHookValue.cpp +++ b/Amalgam/src/Hooks/CAttributeManager_AttribHookValue.cpp @@ -16,13 +16,11 @@ MAKE_HOOK(CAttributeManager_AttribHookInt, S::CAttributeManager_AttribHookInt(), return CALL_ORIGINAL(value, name, econent, buffer, isGlobalConstString); #endif - static const auto dwDesired = S::CTFPlayer_FireEvent_AttribHookValue_Call(); + const auto dwDesired = S::CTFPlayer_FireEvent_AttribHookValue_Call(); const auto dwRetAddr = uintptr_t(_ReturnAddress()); - if (!Vars::Visuals::Effects::SpellFootsteps.Value || econent != H::Entities.GetLocal() || I::EngineClient->IsTakingScreenshot() && Vars::Visuals::UI::CleanScreenshots.Value) - return CALL_ORIGINAL(value, name, econent, buffer, isGlobalConstString); - - if (dwRetAddr == dwDesired && FNV1A::Hash32(name) == FNV1A::Hash32Const("halloween_footstep_type")) + if (dwRetAddr == dwDesired && Vars::Visuals::Effects::SpellFootsteps.Value + && econent == H::Entities.GetLocal() && FNV1A::Hash32(name) == FNV1A::Hash32Const("halloween_footstep_type")) { switch (Vars::Visuals::Effects::SpellFootsteps.Value) { diff --git a/Amalgam/src/Hooks/CBaseEntity_SetAbsVelocity.cpp b/Amalgam/src/Hooks/CBaseEntity_SetAbsVelocity.cpp index 11982687..7602e144 100644 --- a/Amalgam/src/Hooks/CBaseEntity_SetAbsVelocity.cpp +++ b/Amalgam/src/Hooks/CBaseEntity_SetAbsVelocity.cpp @@ -62,8 +62,9 @@ MAKE_HOOK(CBaseEntity_SetAbsVelocity, S::CBaseEntity_SetAbsVelocity(), void, return CALL_ORIGINAL(rcx, vecAbsVelocity); #endif - static const auto dwDesired = S::CBasePlayer_PostDataUpdate_SetAbsVelocity_Call(); + const auto dwDesired = S::CBasePlayer_PostDataUpdate_SetAbsVelocity_Call(); const auto dwRetAddr = uintptr_t(_ReturnAddress()); + if (dwRetAddr != dwDesired) return CALL_ORIGINAL(rcx, vecAbsVelocity); diff --git a/Amalgam/src/Hooks/CBaseEntity_WorldSpaceCenter.cpp b/Amalgam/src/Hooks/CBaseEntity_WorldSpaceCenter.cpp index 579a1bfd..3f34cd68 100644 --- a/Amalgam/src/Hooks/CBaseEntity_WorldSpaceCenter.cpp +++ b/Amalgam/src/Hooks/CBaseEntity_WorldSpaceCenter.cpp @@ -12,8 +12,11 @@ MAKE_HOOK(CBaseEntity_WorldSpaceCenter, S::CBaseEntity_WorldSpaceCenter(), const return CALL_ORIGINAL(rcx); #endif - static const auto dwDesired = S::CDamageAccountPanel_DisplayDamageFeedback_WorldSpaceCenter_Call(); + const auto dwDesired = S::CDamageAccountPanel_DisplayDamageFeedback_WorldSpaceCenter_Call(); const auto dwRetAddr = uintptr_t(_ReturnAddress()); - return dwRetAddr == dwDesired && Vars::Visuals::Effects::DrawDamageNumbersThroughWalls.Value ? S::MainViewOrigin.Call() : CALL_ORIGINAL(rcx); + if (dwRetAddr == dwDesired && Vars::Visuals::Effects::DrawDamageNumbersThroughWalls.Value) + return S::MainViewOrigin.Call(); + + return CALL_ORIGINAL(rcx); } \ No newline at end of file diff --git a/Amalgam/src/Hooks/CBasePlayer_CalcObserverView.cpp b/Amalgam/src/Hooks/CBasePlayer_CalcObserverView.cpp index 775362d9..25d08134 100644 --- a/Amalgam/src/Hooks/CBasePlayer_CalcObserverView.cpp +++ b/Amalgam/src/Hooks/CBasePlayer_CalcObserverView.cpp @@ -8,7 +8,7 @@ MAKE_HOOK(CBasePlayer_CalcObserverView, S::CBasePlayer_CalcObserverView(), void, void* rcx, Vector& eyeOrigin, QAngle& eyeAngles, float& fov) { #ifdef DEBUG_HOOKS - if (!Vars::Hooks::CBasePlayer_CalcPlayerView[DEFAULT_BIND]) + if (!Vars::Hooks::CBasePlayer_CalcObserverView[DEFAULT_BIND]) return CALL_ORIGINAL(rcx, eyeOrigin, eyeAngles, fov); #endif diff --git a/Amalgam/src/Hooks/CBasePlayer_CalcView.cpp b/Amalgam/src/Hooks/CBasePlayer_CalcView.cpp index 99f284f2..b15cdb00 100644 --- a/Amalgam/src/Hooks/CBasePlayer_CalcView.cpp +++ b/Amalgam/src/Hooks/CBasePlayer_CalcView.cpp @@ -8,8 +8,8 @@ MAKE_HOOK(CBasePlayer_CalcView, S::CBasePlayer_CalcView(), void, void* rcx, Vector& eyeOrigin, QAngle& eyeAngles, float& zNear, float& zFar, float& fov) { #ifdef DEBUG_HOOKS - if (!Vars::Hooks::CBasePlayer_CalcPlayerView[DEFAULT_BIND]) - return CALL_ORIGINAL(rcx, eyeOrigin, eyeAngles, fov); + if (!Vars::Hooks::CBasePlayer_CalcView[DEFAULT_BIND]) + return CALL_ORIGINAL(rcx, eyeOrigin, eyeAngles, zNear, zFar, fov); #endif if (!Vars::Visuals::Removals::ViewPunch.Value && F::Spectate.m_iTarget == -1) diff --git a/Amalgam/src/Hooks/CBasePlayer_CalcViewModelView.cpp b/Amalgam/src/Hooks/CBasePlayer_CalcViewModelView.cpp index 85b13b10..53862ddb 100644 --- a/Amalgam/src/Hooks/CBasePlayer_CalcViewModelView.cpp +++ b/Amalgam/src/Hooks/CBasePlayer_CalcViewModelView.cpp @@ -13,8 +13,7 @@ MAKE_HOOK(CBasePlayer_CalcViewModelView, S::CBasePlayer_CalcViewModelView(), voi Vec3 vOffset = { Vars::Visuals::Viewmodel::OffsetX.Value, Vars::Visuals::Viewmodel::OffsetY.Value, Vars::Visuals::Viewmodel::OffsetZ.Value }; bool bOffset = !vOffset.IsZero(); - if (!Vars::Visuals::Viewmodel::ViewmodelAim.Value && !bOffset && !Vars::Visuals::Viewmodel::Roll.Value - || Vars::Visuals::UI::CleanScreenshots.Value && I::EngineClient->IsTakingScreenshot()) + if (!Vars::Visuals::Viewmodel::ViewmodelAim.Value && !bOffset && !Vars::Visuals::Viewmodel::Roll.Value || SDK::CleanScreenshot()) return CALL_ORIGINAL(rcx, pOwner, vEyePosition, vEyeAngles); bool bFlip = G::FlipViewmodels; diff --git a/Amalgam/src/Hooks/CClientModeShared_DoPostScreenSpaceEffects.cpp b/Amalgam/src/Hooks/CClientModeShared_DoPostScreenSpaceEffects.cpp index 2ba19fc6..5a87f697 100644 --- a/Amalgam/src/Hooks/CClientModeShared_DoPostScreenSpaceEffects.cpp +++ b/Amalgam/src/Hooks/CClientModeShared_DoPostScreenSpaceEffects.cpp @@ -14,7 +14,7 @@ MAKE_HOOK(CClientModeShared_DoPostScreenSpaceEffects, U::Memory.GetVirtual(I::Cl return CALL_ORIGINAL(rcx, pSetup); #endif - if (Vars::Visuals::UI::CleanScreenshots.Value && I::EngineClient->IsTakingScreenshot()) + if (SDK::CleanScreenshot()) return CALL_ORIGINAL(rcx, pSetup); auto pLocal = H::Entities.GetLocal(); diff --git a/Amalgam/src/Hooks/CClientModeShared_OverrideView.cpp b/Amalgam/src/Hooks/CClientModeShared_OverrideView.cpp index b1d14377..fb7a4b3f 100644 --- a/Amalgam/src/Hooks/CClientModeShared_OverrideView.cpp +++ b/Amalgam/src/Hooks/CClientModeShared_OverrideView.cpp @@ -11,8 +11,6 @@ MAKE_HOOK(CClientModeShared_OverrideView, U::Memory.GetVirtual(I::ClientModeShar #endif CALL_ORIGINAL(rcx, pView); - if (Vars::Visuals::UI::CleanScreenshots.Value && I::EngineClient->IsTakingScreenshot()) - return; auto pLocal = H::Entities.GetLocal(); if (pLocal && pView) diff --git a/Amalgam/src/Hooks/CClientState_ProcessFixAngle.cpp b/Amalgam/src/Hooks/CClientState_ProcessFixAngle.cpp index f7a7b2ae..9899babe 100644 --- a/Amalgam/src/Hooks/CClientState_ProcessFixAngle.cpp +++ b/Amalgam/src/Hooks/CClientState_ProcessFixAngle.cpp @@ -17,5 +17,6 @@ MAKE_HOOK(CClientState_ProcessFixAngle, S::CClientState_ProcessFixAngle(), bool, if (F::Spectate.m_iTarget != -1) F::Spectate.m_vOldView = msg->m_Angle; + return CALL_ORIGINAL(rcx, msg); } \ No newline at end of file diff --git a/Amalgam/src/Hooks/CHudCrosshair_GetDrawPosition.cpp b/Amalgam/src/Hooks/CHudCrosshair_GetDrawPosition.cpp index 13755f29..192f4d9b 100644 --- a/Amalgam/src/Hooks/CHudCrosshair_GetDrawPosition.cpp +++ b/Amalgam/src/Hooks/CHudCrosshair_GetDrawPosition.cpp @@ -10,8 +10,7 @@ MAKE_HOOK(CHudCrosshair_GetDrawPosition, S::CHudCrosshair_GetDrawPosition(), voi return CALL_ORIGINAL(pX, pY, pbBehindCamera, angleCrosshairOffset); #endif - if (!Vars::Visuals::Viewmodel::CrosshairAim.Value && !Vars::Visuals::Thirdperson::Crosshair.Value - || Vars::Visuals::UI::CleanScreenshots.Value && I::EngineClient->IsTakingScreenshot()) + if (!Vars::Visuals::Viewmodel::CrosshairAim.Value && !Vars::Visuals::Thirdperson::Crosshair.Value || SDK::CleanScreenshot()) return CALL_ORIGINAL(pX, pY, pbBehindCamera, angleCrosshairOffset); auto pLocal = H::Entities.GetLocal(); diff --git a/Amalgam/src/Hooks/CInventoryManager_ShowItemsPickedUp.cpp b/Amalgam/src/Hooks/CInventoryManager_ShowItemsPickedUp.cpp index 9547d3d9..7cab59fc 100644 --- a/Amalgam/src/Hooks/CInventoryManager_ShowItemsPickedUp.cpp +++ b/Amalgam/src/Hooks/CInventoryManager_ShowItemsPickedUp.cpp @@ -15,5 +15,6 @@ MAKE_HOOK(CInventoryManager_ShowItemsPickedUp, S::CInventoryManager_ShowItemsPic CALL_ORIGINAL(rcx, true, true, true); return false; } + return CALL_ORIGINAL(rcx, bForce, bReturnToGame, bNoPanel); } \ No newline at end of file diff --git a/Amalgam/src/Hooks/COPRenderSprites_Render.cpp b/Amalgam/src/Hooks/COPRenderSprites_Render.cpp index 6143fbb8..b70c7786 100644 --- a/Amalgam/src/Hooks/COPRenderSprites_Render.cpp +++ b/Amalgam/src/Hooks/COPRenderSprites_Render.cpp @@ -78,7 +78,7 @@ MAKE_HOOK(COPRenderSprites_Render, S::COPRenderSprites_Render(), void, return CALL_ORIGINAL(rcx, pRenderContext, pParticles, pContext); #endif - if (!Vars::Visuals::Effects::DrawIconsThroughWalls.Value || Vars::Visuals::UI::CleanScreenshots.Value && I::EngineClient->IsTakingScreenshot()) + if (!Vars::Visuals::Effects::DrawIconsThroughWalls.Value || SDK::CleanScreenshot()) return CALL_ORIGINAL(rcx, pRenderContext, pParticles, pContext); bool bValid = false; @@ -167,11 +167,11 @@ MAKE_HOOK(COPRenderSprites_RenderSpriteCard, S::COPRenderSprites_RenderSpriteCar void* rcx, void* meshBuilder, void* pCtx, SpriteRenderInfo_t& info, int hParticle, ParticleRenderData_t* pSortList, void* pCamera) { #ifdef DEBUG_HOOKS - if (!Vars::Hooks::COPRenderSprites_Render[DEFAULT_BIND]) + if (!Vars::Hooks::COPRenderSprites_RenderSpriteCard[DEFAULT_BIND]) return CALL_ORIGINAL(rcx, meshBuilder, pCtx, info, hParticle, pSortList, pCamera); #endif - if (!(Vars::Visuals::World::Modulations.Value & Vars::Visuals::World::ModulationsEnum::Particle) || Vars::Visuals::UI::CleanScreenshots.Value && I::EngineClient->IsTakingScreenshot()) + if (!(Vars::Visuals::World::Modulations.Value & Vars::Visuals::World::ModulationsEnum::Particle) || SDK::CleanScreenshot()) return CALL_ORIGINAL(rcx, meshBuilder, pCtx, info, hParticle, pSortList, pCamera); info.m_pRGB[((hParticle / 4) * info.m_nRGBStride) + 0].m128_f32[hParticle & 0x3] = Vars::Colors::ParticleModulation.Value.r / 255.f; // red @@ -186,11 +186,11 @@ MAKE_HOOK(COPRenderSprites_RenderTwoSequenceSpriteCard, S::COPRenderSprites_Rend void* rcx, void* meshBuilder, void* pCtx, SpriteRenderInfo_t& info, int hParticle, ParticleRenderData_t* pSortList, void* pCamera) { #ifdef DEBUG_HOOKS - if (!Vars::Hooks::COPRenderSprites_Render[DEFAULT_BIND]) + if (!Vars::Hooks::COPRenderSprites_RenderTwoSequenceSpriteCard[DEFAULT_BIND]) return CALL_ORIGINAL(rcx, meshBuilder, pCtx, info, hParticle, pSortList, pCamera); #endif - if (!(Vars::Visuals::World::Modulations.Value &Vars::Visuals::World::ModulationsEnum::Particle) || Vars::Visuals::UI::CleanScreenshots.Value && I::EngineClient->IsTakingScreenshot()) + if (!(Vars::Visuals::World::Modulations.Value &Vars::Visuals::World::ModulationsEnum::Particle) || SDK::CleanScreenshot()) return CALL_ORIGINAL(rcx, meshBuilder, pCtx, info, hParticle, pSortList, pCamera); info.m_pRGB[((hParticle / 4) * info.m_nRGBStride) + 0].m128_f32[hParticle & 0x3] = Vars::Colors::ParticleModulation.Value.r / 255.f; // red diff --git a/Amalgam/src/Hooks/CParticleProperty_Create.cpp b/Amalgam/src/Hooks/CParticleProperty_Create.cpp index 651f47ad..5edf4037 100644 --- a/Amalgam/src/Hooks/CParticleProperty_Create.cpp +++ b/Amalgam/src/Hooks/CParticleProperty_Create.cpp @@ -13,13 +13,13 @@ MAKE_HOOK(CParticleProperty_Create_Name, S::CParticleProperty_Create_Name(), voi void* rcx, const char* pszParticleName, ParticleAttachment_t iAttachType, const char* pszAttachmentName) { #ifdef DEBUG_HOOKS - if (!Vars::Hooks::CParticleProperty_Create[DEFAULT_BIND]) + if (!Vars::Hooks::CParticleProperty_Create_Name[DEFAULT_BIND]) return CALL_ORIGINAL(rcx, pszParticleName, iAttachType, pszAttachmentName); #endif - static const auto dwUpdateEffects1 = S::CWeaponMedigun_UpdateEffects_CreateName_Call1(); - static const auto dwUpdateEffects2 = S::CWeaponMedigun_UpdateEffects_CreateName_Call2(); - static const auto dwManageChargeEffect = S::CWeaponMedigun_ManageChargeEffect_CreateName_Call(); + const auto dwUpdateEffects1 = S::CWeaponMedigun_UpdateEffects_CreateName_Call1(); + const auto dwUpdateEffects2 = S::CWeaponMedigun_UpdateEffects_CreateName_Call2(); + const auto dwManageChargeEffect = S::CWeaponMedigun_ManageChargeEffect_CreateName_Call(); const auto dwRetAddr = uintptr_t(_ReturnAddress()); bool bUpdateEffects = dwRetAddr == dwUpdateEffects1 || dwRetAddr == dwUpdateEffects2, bManageChargeEffect = dwRetAddr == dwManageChargeEffect; @@ -97,7 +97,7 @@ MAKE_HOOK(CParticleProperty_Create_Point, S::CParticleProperty_Create_Point(), v void* rcx, const char* pszParticleName, ParticleAttachment_t iAttachType, int iAttachmentPoint, Vector vecOriginOffset) { #ifdef DEBUG_HOOKS - if (!Vars::Hooks::CParticleProperty_Create[DEFAULT_BIND]) + if (!Vars::Hooks::CParticleProperty_Create_Point[DEFAULT_BIND]) return CALL_ORIGINAL(rcx, pszParticleName, iAttachType, iAttachmentPoint, vecOriginOffset); #endif @@ -204,6 +204,11 @@ MAKE_HOOK(CParticleProperty_Create_Point, S::CParticleProperty_Create_Point(), v MAKE_HOOK(CParticleProperty_AddControlPoint_Pointer, S::CParticleProperty_AddControlPoint_Pointer(), void, void* rcx, void* pEffect, int iPoint, CBaseEntity* pEntity, ParticleAttachment_t iAttachType, const char* pszAttachmentName, Vector vecOriginOffset) { +#ifdef DEBUG_HOOKS + if (!Vars::Hooks::CParticleProperty_AddControlPoint_Pointer[DEFAULT_BIND]) + return CALL_ORIGINAL(rcx, pEffect, iPoint, pEntity, iAttachType, pszAttachmentName, vecOriginOffset); +#endif + if (!pEffect) return; // crash fix diff --git a/Amalgam/src/Hooks/CRendering3dView_EnableWorldFog.cpp b/Amalgam/src/Hooks/CRendering3dView_EnableWorldFog.cpp index c8f796c2..a8e48daa 100644 --- a/Amalgam/src/Hooks/CRendering3dView_EnableWorldFog.cpp +++ b/Amalgam/src/Hooks/CRendering3dView_EnableWorldFog.cpp @@ -10,7 +10,7 @@ MAKE_HOOK(CRendering3dView_EnableWorldFog, S::CRendering3dView_EnableWorldFog(), return CALL_ORIGINAL(); #endif - if (!(Vars::Visuals::World::Modulations.Value & Vars::Visuals::World::ModulationsEnum::Fog) || I::EngineClient->IsTakingScreenshot() && Vars::Visuals::UI::CleanScreenshots.Value) + if (!(Vars::Visuals::World::Modulations.Value & Vars::Visuals::World::ModulationsEnum::Fog) || SDK::CleanScreenshot()) return CALL_ORIGINAL(); CALL_ORIGINAL(); diff --git a/Amalgam/src/Hooks/CSkyboxView_Enable3dSkyboxFog.cpp b/Amalgam/src/Hooks/CSkyboxView_Enable3dSkyboxFog.cpp index 691f6029..8303605a 100644 --- a/Amalgam/src/Hooks/CSkyboxView_Enable3dSkyboxFog.cpp +++ b/Amalgam/src/Hooks/CSkyboxView_Enable3dSkyboxFog.cpp @@ -10,7 +10,7 @@ MAKE_HOOK(CSkyboxView_Enable3dSkyboxFog, S::CSkyboxView_Enable3dSkyboxFog(), voi return CALL_ORIGINAL(rcx); #endif - if (!(Vars::Visuals::World::Modulations.Value & Vars::Visuals::World::ModulationsEnum::Fog) || I::EngineClient->IsTakingScreenshot() && Vars::Visuals::UI::CleanScreenshots.Value) + if (!(Vars::Visuals::World::Modulations.Value & Vars::Visuals::World::ModulationsEnum::Fog) || SDK::CleanScreenshot()) return CALL_ORIGINAL(rcx); CALL_ORIGINAL(rcx); diff --git a/Amalgam/src/Hooks/CSniperDot_GetRenderingPositions.cpp b/Amalgam/src/Hooks/CSniperDot_GetRenderingPositions.cpp index 911ebe18..c9f365bc 100644 --- a/Amalgam/src/Hooks/CSniperDot_GetRenderingPositions.cpp +++ b/Amalgam/src/Hooks/CSniperDot_GetRenderingPositions.cpp @@ -32,12 +32,13 @@ MAKE_HOOK(CBasePlayer_EyePosition, S::CBasePlayer_EyePosition(), Vec3*, void* rcx, void* rdx) { #ifdef DEBUG_HOOKS - if (!Vars::Hooks::CSniperDot_GetRenderingPositions[DEFAULT_BIND]) + if (!Vars::Hooks::CBasePlayer_EyePosition[DEFAULT_BIND]) return CALL_ORIGINAL(rcx, rdx); #endif - static const auto dwDesired = S::CSniperDot_GetRenderingPositions_EyePosition_Call(); + const auto dwDesired = S::CSniperDot_GetRenderingPositions_EyePosition_Call(); const auto dwRetAddr = uintptr_t(_ReturnAddress()); + if (dwRetAddr == dwDesired) return &s_vEyePosition; @@ -48,12 +49,13 @@ MAKE_HOOK(CTFPlayer_EyeAngles, S::CTFPlayer_EyeAngles(), Vec3*, void* rcx) { #ifdef DEBUG_HOOKS - if (!Vars::Hooks::CSniperDot_GetRenderingPositions[DEFAULT_BIND]) + if (!Vars::Hooks::CTFPlayer_EyeAngles[DEFAULT_BIND]) return CALL_ORIGINAL(rcx); #endif - static const auto dwDesired = S::CSniperDot_GetRenderingPositions_EyeAngles_Call(); + const auto dwDesired = S::CSniperDot_GetRenderingPositions_EyeAngles_Call(); const auto dwRetAddr = uintptr_t(_ReturnAddress()); + if (dwRetAddr == dwDesired) return &s_vEyeAngles; diff --git a/Amalgam/src/Hooks/CSoundEmitterSystem_EmitSound.cpp b/Amalgam/src/Hooks/CSoundEmitterSystem_EmitSound.cpp index 740026d1..b3a991f8 100644 --- a/Amalgam/src/Hooks/CSoundEmitterSystem_EmitSound.cpp +++ b/Amalgam/src/Hooks/CSoundEmitterSystem_EmitSound.cpp @@ -148,7 +148,7 @@ MAKE_HOOK(S_StartDynamicSound, S::S_StartDynamicSound(), int, StartSoundParams_t& params) { #ifdef DEBUG_HOOKS - if (!Vars::Hooks::CSoundEmitterSystem_EmitSound[DEFAULT_BIND]) + if (!Vars::Hooks::S_StartDynamicSound[DEFAULT_BIND]) return CALL_ORIGINAL(params); #endif @@ -164,7 +164,7 @@ MAKE_HOOK(S_StartSound, S::S_StartSound(), int, StartSoundParams_t& params) { #ifdef DEBUG_HOOKS - if (!Vars::Hooks::CSoundEmitterSystem_EmitSound[DEFAULT_BIND]) + if (!Vars::Hooks::S_StartSound[DEFAULT_BIND]) return CALL_ORIGINAL(params); #endif diff --git a/Amalgam/src/Hooks/CStaticPropMgr_DrawStaticProps.cpp b/Amalgam/src/Hooks/CStaticPropMgr_DrawStaticProps.cpp index 355c5b25..da04a83a 100644 --- a/Amalgam/src/Hooks/CStaticPropMgr_DrawStaticProps.cpp +++ b/Amalgam/src/Hooks/CStaticPropMgr_DrawStaticProps.cpp @@ -25,8 +25,7 @@ MAKE_HOOK(CStudioRender_SetColorModulation, U::Memory.GetVirtual(I::StudioRender return CALL_ORIGINAL(rcx, pColor); #endif - if (!s_bDrawingProps || !(Vars::Visuals::World::Modulations.Value & Vars::Visuals::World::ModulationsEnum::Prop) - || Vars::Visuals::UI::CleanScreenshots.Value && I::EngineClient->IsTakingScreenshot()) + if (!s_bDrawingProps || !(Vars::Visuals::World::Modulations.Value & Vars::Visuals::World::ModulationsEnum::Prop) || SDK::CleanScreenshot()) return CALL_ORIGINAL(rcx, pColor); float flColor[3] = { @@ -45,8 +44,7 @@ MAKE_HOOK(CStudioRender_SetAlphaModulation, U::Memory.GetVirtual(I::StudioRender return CALL_ORIGINAL(rcx, flAlpha); #endif - if (!s_bDrawingProps || !(Vars::Visuals::World::Modulations.Value & Vars::Visuals::World::ModulationsEnum::Prop) - || Vars::Visuals::UI::CleanScreenshots.Value && I::EngineClient->IsTakingScreenshot()) + if (!s_bDrawingProps || !(Vars::Visuals::World::Modulations.Value & Vars::Visuals::World::ModulationsEnum::Prop) || SDK::CleanScreenshot()) return CALL_ORIGINAL(rcx, flAlpha); CALL_ORIGINAL(rcx, Vars::Colors::PropModulation.Value.a / 255.f * flAlpha); diff --git a/Amalgam/src/Hooks/CTFClientScoreBoardDialog_UpdatePlayerAvatar.cpp b/Amalgam/src/Hooks/CTFClientScoreBoardDialog_UpdatePlayerAvatar.cpp index f5265f52..0f4a92d4 100644 --- a/Amalgam/src/Hooks/CTFClientScoreBoardDialog_UpdatePlayerAvatar.cpp +++ b/Amalgam/src/Hooks/CTFClientScoreBoardDialog_UpdatePlayerAvatar.cpp @@ -20,35 +20,49 @@ enum EAvatarSize static int s_iPlayerIndex; -static inline Color_t GetScoreboardColor(int iIndex) +static inline void SetScoreboardColor(int iIndex, Color_t& tColor) { - Color_t out = { 0, 0, 0, 0 }; - if (iIndex == I::EngineClient->GetLocalPlayer()) - out = Vars::Colors::Local.Value; + tColor = Vars::Colors::Local.Value; else if (H::Entities.IsFriend(iIndex)) - out = F::PlayerUtils.m_vTags[F::PlayerUtils.TagToIndex(FRIEND_TAG)].m_tColor; + tColor = F::PlayerUtils.m_vTags[F::PlayerUtils.TagToIndex(FRIEND_TAG)].m_tColor; else if (H::Entities.InParty(iIndex)) - out = F::PlayerUtils.m_vTags[F::PlayerUtils.TagToIndex(PARTY_TAG)].m_tColor; + tColor = F::PlayerUtils.m_vTags[F::PlayerUtils.TagToIndex(PARTY_TAG)].m_tColor; else if (auto pTag = F::PlayerUtils.GetSignificantTag(iIndex)) - out = pTag->m_tColor; + tColor = pTag->m_tColor; + else + return; - return out; + auto pResource = H::Entities.GetResource(); + if (pResource && !pResource->m_bAlive(iIndex)) + tColor = tColor.Lerp({ 127, 127, 127, tColor.a }, 0.5f); } MAKE_HOOK(CAvatarImage_SetAvatarSteamID, S::CAvatarImage_SetAvatarSteamID(), bool, void* rcx, CSteamID steamIDUser, EAvatarSize avatarSize) { +#ifdef DEBUG_HOOKS + if (!Vars::Hooks::CAvatarImage_SetAvatarSteamID[DEFAULT_BIND]) + return CALL_ORIGINAL(rcx, steamIDUser, avatarSize); +#endif + if (!(F::PlayerUtils.GetNameType(steamIDUser.GetAccountID()) & NameTypeEnum::Privacy)) return CALL_ORIGINAL(rcx, steamIDUser, avatarSize); + return CALL_ORIGINAL(rcx, CSteamID(), avatarSize); } MAKE_HOOK(CAvatarImagePanel_SetPlayer, S::CAvatarImagePanel_SetPlayer(), void, void* rcx, CSteamID steamIDForPlayer, EAvatarSize avatarSize) { +#ifdef DEBUG_HOOKS + if (!Vars::Hooks::CAvatarImagePanel_SetPlayer[DEFAULT_BIND]) + return CALL_ORIGINAL(rcx, steamIDForPlayer, avatarSize); +#endif + if (!(F::PlayerUtils.GetNameType(steamIDForPlayer.GetAccountID()) & NameTypeEnum::Privacy)) return CALL_ORIGINAL(rcx, steamIDForPlayer, avatarSize); + CALL_ORIGINAL(rcx, CSteamID(), avatarSize); } @@ -70,7 +84,7 @@ MAKE_HOOK(CTFMatchSummary_UpdatePlayerAvatar, S::CTFMatchSummary_UpdatePlayerAva void* rcx, int playerIndex, KeyValues* kv) { #ifdef DEBUG_HOOKS - if (!Vars::Hooks::CTFClientScoreBoardDialog_UpdatePlayerAvatar[DEFAULT_BIND]) + if (!Vars::Hooks::CTFMatchSummary_UpdatePlayerAvatar[DEFAULT_BIND]) return CALL_ORIGINAL(rcx, playerIndex, kv); #endif @@ -82,7 +96,7 @@ MAKE_HOOK(CTFHudMannVsMachineScoreboard_UpdatePlayerAvatar, S::CTFHudMannVsMachi void* rcx, int playerIndex, KeyValues* kv) { #ifdef DEBUG_HOOKS - if (!Vars::Hooks::CTFClientScoreBoardDialog_UpdatePlayerAvatar[DEFAULT_BIND]) + if (!Vars::Hooks::CTFHudMannVsMachineScoreboard_UpdatePlayerAvatar[DEFAULT_BIND]) return CALL_ORIGINAL(rcx, playerIndex, kv); #endif @@ -94,7 +108,7 @@ MAKE_HOOK(CTFHudMatchStatus_UpdatePlayerAvatar, S::CTFHudMatchStatus_UpdatePlaye void* rcx, int playerIndex, KeyValues* kv) { #ifdef DEBUG_HOOKS - if (!Vars::Hooks::CTFClientScoreBoardDialog_UpdatePlayerAvatar[DEFAULT_BIND]) + if (!Vars::Hooks::CTFHudMatchStatus_UpdatePlayerAvatar[DEFAULT_BIND]) return CALL_ORIGINAL(rcx, playerIndex, kv); #endif @@ -106,25 +120,15 @@ MAKE_HOOK(SectionedListPanel_SetItemFgColor, S::SectionedListPanel_SetItemFgColo void* rcx, int itemID, Color_t color) { #ifdef DEBUG_HOOKS - if (!Vars::Hooks::CTFClientScoreBoardDialog_UpdatePlayerAvatar[DEFAULT_BIND]) + if (!Vars::Hooks::SectionedListPanel_SetItemFgColor[DEFAULT_BIND]) return CALL_ORIGINAL(rcx, itemID, color); #endif - static const auto dwDesired = S::CTFClientScoreBoardDialog_UpdatePlayerList_SetItemFgColor_Call(); + const auto dwDesired = S::CTFClientScoreBoardDialog_UpdatePlayerList_SetItemFgColor_Call(); const auto dwRetAddr = uintptr_t(_ReturnAddress()); - if (dwDesired == dwRetAddr && Vars::Visuals::UI::ScoreboardColors.Value) - { - Color_t tColor = GetScoreboardColor(s_iPlayerIndex); - if (tColor.a) - { - auto pResource = H::Entities.GetResource(); - if (pResource && !pResource->m_bAlive(s_iPlayerIndex)) - tColor = tColor.Lerp({ 127, 127, 127, tColor.a }, 0.5f); - - color = tColor; - } - } + if (dwDesired == dwRetAddr && Vars::Visuals::UI::ScoreboardColors.Value && !SDK::CleanScreenshot()) + SetScoreboardColor(s_iPlayerIndex, color); CALL_ORIGINAL(rcx, itemID, color); } \ No newline at end of file diff --git a/Amalgam/src/Hooks/CTFInput_ApplyMouse.cpp b/Amalgam/src/Hooks/CTFInput_ApplyMouse.cpp index 82a8e20d..fdb1782b 100644 --- a/Amalgam/src/Hooks/CTFInput_ApplyMouse.cpp +++ b/Amalgam/src/Hooks/CTFInput_ApplyMouse.cpp @@ -45,7 +45,7 @@ MAKE_HOOK(CTFInput_CAM_CapYaw, S::CTFInput_CAM_CapYaw(), float, void* rcx, float fVal) { #ifdef DEBUG_HOOKS - if (!Vars::Hooks::CTFInput_ApplyMouse[DEFAULT_BIND]) + if (!Vars::Hooks::CTFInput_CAM_CapYaw[DEFAULT_BIND]) return CALL_ORIGINAL(rcx, fVal); #endif diff --git a/Amalgam/src/Hooks/CTFPlayerInventory_GetMaxItemCount.cpp b/Amalgam/src/Hooks/CTFPlayerInventory_GetMaxItemCount.cpp index f6c31dcf..fe8fdc98 100644 --- a/Amalgam/src/Hooks/CTFPlayerInventory_GetMaxItemCount.cpp +++ b/Amalgam/src/Hooks/CTFPlayerInventory_GetMaxItemCount.cpp @@ -10,5 +10,8 @@ MAKE_HOOK(CTFPlayerInventory_GetMaxItemCount, S::CTFPlayerInventory_GetMaxItemCo return CALL_ORIGINAL(rcx); #endif - return Vars::Misc::Exploits::BackpackExpander.Value ? 4000 : CALL_ORIGINAL(rcx); + if (Vars::Misc::Exploits::BackpackExpander.Value) + return 4000; + + return CALL_ORIGINAL(rcx); } \ No newline at end of file diff --git a/Amalgam/src/Hooks/CTFPlayerInventory_VerifyChangedLoadoutsAreValid.cpp b/Amalgam/src/Hooks/CTFPlayerInventory_VerifyChangedLoadoutsAreValid.cpp index 2e9e5442..ce7e2d4e 100644 --- a/Amalgam/src/Hooks/CTFPlayerInventory_VerifyChangedLoadoutsAreValid.cpp +++ b/Amalgam/src/Hooks/CTFPlayerInventory_VerifyChangedLoadoutsAreValid.cpp @@ -21,23 +21,29 @@ MAKE_HOOK(GenerateEquipRegionConflictMask, S::GenerateEquipRegionConflictMask(), int iClass, int iUpToSlot, int iIgnoreSlot) { #ifdef DEBUG_HOOKS - if (!Vars::Hooks::CTFPlayerInventory_VerifyChangedLoadoutsAreValid[DEFAULT_BIND]) + if (!Vars::Hooks::GenerateEquipRegionConflictMask[DEFAULT_BIND]) return CALL_ORIGINAL(iClass, iUpToSlot, iIgnoreSlot); #endif - return Vars::Misc::Exploits::EquipRegionUnlock.Value ? 0 : CALL_ORIGINAL(iClass, iUpToSlot, iIgnoreSlot); + if (Vars::Misc::Exploits::EquipRegionUnlock.Value) + return 0; + + return CALL_ORIGINAL(iClass, iUpToSlot, iIgnoreSlot); } MAKE_HOOK(CTFInventoryManager_GetItemInLoadoutForClass, S::CTFInventoryManager_GetItemInLoadoutForClass(), void*, void* rcx, int iClass, int iSlot, CSteamID* pID) { #ifdef DEBUG_HOOKS - if (!Vars::Hooks::CTFPlayerInventory_VerifyChangedLoadoutsAreValid[DEFAULT_BIND]) + if (!Vars::Hooks::CTFInventoryManager_GetItemInLoadoutForClass[DEFAULT_BIND]) return CALL_ORIGINAL(rcx, iClass, iSlot, pID); #endif - static const auto dwDesired = S::CEquipSlotItemSelectionPanel_UpdateModelPanelsForSelection_GetItemInLoadoutForClass_Call(); + const auto dwDesired = S::CEquipSlotItemSelectionPanel_UpdateModelPanelsForSelection_GetItemInLoadoutForClass_Call(); const auto dwRetAddr = uintptr_t(_ReturnAddress()); - return dwRetAddr == dwDesired && Vars::Misc::Exploits::EquipRegionUnlock.Value ? nullptr : CALL_ORIGINAL(rcx, iClass, iSlot, pID); + if (dwRetAddr == dwDesired && Vars::Misc::Exploits::EquipRegionUnlock.Value) + return nullptr; + + return CALL_ORIGINAL(rcx, iClass, iSlot, pID); } \ No newline at end of file diff --git a/Amalgam/src/Hooks/CTFPlayerPanel_GetTeam.cpp b/Amalgam/src/Hooks/CTFPlayerPanel_GetTeam.cpp index 75a6c264..f0b3debd 100644 --- a/Amalgam/src/Hooks/CTFPlayerPanel_GetTeam.cpp +++ b/Amalgam/src/Hooks/CTFPlayerPanel_GetTeam.cpp @@ -3,27 +3,31 @@ #include "../Features/Players/PlayerUtils.h" MAKE_SIGNATURE(CTFPlayerPanel_GetTeam, "client.dll", "8B 91 ? ? ? ? 83 FA ? 74 ? 48 8B 05", 0x0); -MAKE_SIGNATURE(CTFTeamStatusPlayerPanel_Update, "client.dll", "40 56 57 48 83 EC ? 48 83 3D", 0x0); MAKE_SIGNATURE(vgui_Panel_SetBgColor, "client.dll", "89 91 ? ? ? ? C3 CC CC CC CC CC CC CC CC CC 48 8B 41", 0x0); MAKE_SIGNATURE(CTFTeamStatusPlayerPanel_Update_GetTeam_Call, "client.dll", "8B 9F ? ? ? ? 40 32 F6", 0x0); MAKE_SIGNATURE(CTFTeamStatusPlayerPanel_Update_SetBgColor_Call, "client.dll", "48 8B 8F ? ? ? ? 4C 8B 6C 24 ? 48 85 C9 0F 84 ? ? ? ? 40 38 B7", 0x0); +MAKE_SIGNATURE(CTFTeamStatus_OnTick, "client.dll", "48 89 5C 24 ? 57 48 83 EC ? 48 8B 01 48 8B F9 FF 90 ? ? ? ? 48 8B CF 0F B6 D8", 0x0); +MAKE_SIGNATURE(CVGui_RunFrame, "vgui2.dll", "48 8B C4 53 48 81 EC", 0x0); static int s_iPlayerIndex; +static void* s_pTeamStatus; -static inline Color_t GetScoreboardColor(int iIndex) +static inline void SetScoreboardColor(int iIndex, Color_t& tColor) { - Color_t out = { 0, 0, 0, 0 }; - if (iIndex == I::EngineClient->GetLocalPlayer()) - out = Vars::Colors::Local.Value; + tColor = Vars::Colors::Local.Value; else if (H::Entities.IsFriend(iIndex)) - out = F::PlayerUtils.m_vTags[F::PlayerUtils.TagToIndex(FRIEND_TAG)].m_tColor; + tColor = F::PlayerUtils.m_vTags[F::PlayerUtils.TagToIndex(FRIEND_TAG)].m_tColor; else if (H::Entities.InParty(iIndex)) - out = F::PlayerUtils.m_vTags[F::PlayerUtils.TagToIndex(PARTY_TAG)].m_tColor; + tColor = F::PlayerUtils.m_vTags[F::PlayerUtils.TagToIndex(PARTY_TAG)].m_tColor; else if (auto pTag = F::PlayerUtils.GetSignificantTag(iIndex)) - out = pTag->m_tColor; + tColor = pTag->m_tColor; + else + return; - return out; + auto pResource = H::Entities.GetResource(); + if (pResource && !pResource->m_bAlive(iIndex)) + tColor = tColor.Lerp({ 127, 127, 127, tColor.a }, 0.5f); } MAKE_HOOK(CTFPlayerPanel_GetTeam, S::CTFPlayerPanel_GetTeam(), int, @@ -34,53 +38,75 @@ MAKE_HOOK(CTFPlayerPanel_GetTeam, S::CTFPlayerPanel_GetTeam(), int, return CALL_ORIGINAL(rcx); #endif - static const auto dwDesired = S::CTFTeamStatusPlayerPanel_Update_GetTeam_Call(); + const auto dwDesired = S::CTFTeamStatusPlayerPanel_Update_GetTeam_Call(); const auto dwRetAddr = uintptr_t(_ReturnAddress()); - if (Vars::Visuals::UI::RevealScoreboard.Value && dwRetAddr == dwDesired) + int iReturn = CALL_ORIGINAL(rcx); + + if (auto pResource = H::Entities.GetResource(); dwRetAddr == dwDesired && pResource) { - if (auto pLocal = H::Entities.GetLocal()) - return pLocal->m_iTeamNum(); + s_iPlayerIndex = *reinterpret_cast(uintptr_t(rcx) + 580); + + int iLocalTeam = pResource->m_iTeam(I::EngineClient->GetLocalPlayer()); + + if (Vars::Visuals::UI::RevealScoreboard.Value && !SDK::CleanScreenshot()) + iReturn = iLocalTeam; + + if (auto pHealthBar = *reinterpret_cast(uintptr_t(rcx) + 688); + pHealthBar && U::Memory.CallVirtual<34, bool>(pHealthBar) != (iReturn == iLocalTeam)) + *reinterpret_cast(uintptr_t(rcx) + 624) = -1; } - return CALL_ORIGINAL(rcx); -} - -MAKE_HOOK(CTFTeamStatusPlayerPanel_Update, S::CTFTeamStatusPlayerPanel_Update(), bool, - void* rcx) -{ -#ifdef DEBUG_HOOKS - if (!Vars::Hooks::CTFPlayerPanel_GetTeam[DEFAULT_BIND]) - return CALL_ORIGINAL(rcx); -#endif - - s_iPlayerIndex = *reinterpret_cast(uintptr_t(rcx) + 580); - return CALL_ORIGINAL(rcx); + return iReturn; } MAKE_HOOK(vgui_Panel_SetBgColor, S::vgui_Panel_SetBgColor(), void, void* rcx, Color_t color) { #ifdef DEBUG_HOOKS - if (!Vars::Hooks::CTFPlayerPanel_GetTeam[DEFAULT_BIND]) + if (!Vars::Hooks::vgui_Panel_SetBgColor[DEFAULT_BIND]) return CALL_ORIGINAL(rcx, color); #endif - static const auto dwDesired = S::CTFTeamStatusPlayerPanel_Update_SetBgColor_Call(); + const auto dwDesired = S::CTFTeamStatusPlayerPanel_Update_SetBgColor_Call(); const auto dwRetAddr = uintptr_t(_ReturnAddress()); - if (dwRetAddr == dwDesired && Vars::Visuals::UI::ScoreboardColors.Value) - { - Color_t tColor = GetScoreboardColor(s_iPlayerIndex); - if (tColor.a) - { - auto pResource = H::Entities.GetResource(); - if (pResource && !pResource->m_bAlive(s_iPlayerIndex)) - tColor = tColor.Lerp({ 127, 127, 127, tColor.a }, 0.5f); - - color = tColor; - } - } + if (dwRetAddr == dwDesired && Vars::Visuals::UI::ScoreboardColors.Value && !SDK::CleanScreenshot()) + SetScoreboardColor(s_iPlayerIndex, color); CALL_ORIGINAL(rcx, color); +} + +MAKE_HOOK(CTFTeamStatus_OnTick, S::CTFTeamStatus_OnTick(), void, + void* rcx) +{ +#ifdef DEBUG_HOOKS + if (!Vars::Hooks::CTFTeamStatus_OnTick[DEFAULT_BIND]) + return CALL_ORIGINAL(rcx); +#endif + + s_pTeamStatus = rcx; + + CALL_ORIGINAL(rcx); +} + +MAKE_HOOK(CVGui_RunFrame, S::CVGui_RunFrame(), void, + void* rcx) +{ +#ifdef DEBUG_HOOKS + if (!Vars::Hooks::CVGui_RunFrame[DEFAULT_BIND]) + return CALL_ORIGINAL(rcx); +#endif + + if (!s_pTeamStatus) + return CALL_ORIGINAL(rcx); + + static bool bStaticMod = false; + const bool bLastMod = bStaticMod; + const bool bCurrMod = bStaticMod = (Vars::Visuals::UI::RevealScoreboard.Value || Vars::Visuals::UI::ScoreboardColors.Value) && !SDK::CleanScreenshot(); + + if (bCurrMod != bLastMod) + S::CTFTeamStatus_OnTick.Call(s_pTeamStatus); + + CALL_ORIGINAL(rcx); } \ No newline at end of file diff --git a/Amalgam/src/Hooks/CTFPlayerShared_InCond.cpp b/Amalgam/src/Hooks/CTFPlayerShared_InCond.cpp index fe48478d..257e5d2d 100644 --- a/Amalgam/src/Hooks/CTFPlayerShared_InCond.cpp +++ b/Amalgam/src/Hooks/CTFPlayerShared_InCond.cpp @@ -16,12 +16,12 @@ MAKE_HOOK(CTFPlayerShared_InCond, S::CTFPlayerShared_InCond(), bool, return CALL_ORIGINAL(rcx, nCond); #endif - static const auto dwZoomPlayer = S::CTFPlayer_ShouldDraw_InCond_Call(); - static const auto dwZoomWearable = S::CTFWearable_ShouldDraw_InCond_Call(); - static const auto dwZoomHudScope = S::CHudScope_ShouldDraw_InCond_Call(); - static const auto dwTaunt = S::CTFPlayer_CreateMove_InCondTaunt_Call(); - static const auto dwKart1 = S::CTFPlayer_CreateMove_InCondKart_Call(); - static const auto dwKart2 = S::CTFInput_ApplyMouse_InCond_Call(); + const auto dwZoomPlayer = S::CTFPlayer_ShouldDraw_InCond_Call(); + const auto dwZoomWearable = S::CTFWearable_ShouldDraw_InCond_Call(); + const auto dwZoomHudScope = S::CHudScope_ShouldDraw_InCond_Call(); + const auto dwTaunt = S::CTFPlayer_CreateMove_InCondTaunt_Call(); + const auto dwKart1 = S::CTFPlayer_CreateMove_InCondKart_Call(); + const auto dwKart2 = S::CTFInput_ApplyMouse_InCond_Call(); const auto dwRetAddr = uintptr_t(_ReturnAddress()); auto GetOuter = [&rcx]() -> CBaseEntity* @@ -35,7 +35,7 @@ MAKE_HOOK(CTFPlayerShared_InCond, S::CTFPlayerShared_InCond(), bool, switch (nCond) { case TF_COND_ZOOMED: - if (dwRetAddr == dwZoomPlayer || dwRetAddr == dwZoomWearable || Vars::Visuals::Removals::Scope.Value && dwRetAddr == dwZoomHudScope) + if (dwRetAddr == dwZoomPlayer || dwRetAddr == dwZoomWearable || dwRetAddr == dwZoomHudScope && Vars::Visuals::Removals::Scope.Value) return false; break; case TF_COND_DISGUISED: @@ -43,13 +43,13 @@ MAKE_HOOK(CTFPlayerShared_InCond, S::CTFPlayerShared_InCond(), bool, return false; break; case TF_COND_TAUNTING: - if (Vars::Misc::Automation::TauntControl.Value && dwRetAddr == dwTaunt) + if (dwRetAddr == dwTaunt && Vars::Misc::Automation::TauntControl.Value) return false; if (Vars::Visuals::Removals::Taunts.Value && H::Entities.GetLocal() != GetOuter()) return false; break; case TF_COND_HALLOWEEN_KART: - if (Vars::Misc::Automation::KartControl.Value && (dwRetAddr == dwKart1 || dwRetAddr == dwKart2)) + if ((dwRetAddr == dwKart1 || dwRetAddr == dwKart2) && Vars::Misc::Automation::KartControl.Value) return false; break; case TF_COND_FREEZE_INPUT: diff --git a/Amalgam/src/Hooks/CTFPlayerShared_IsPlayerDominated.cpp b/Amalgam/src/Hooks/CTFPlayerShared_IsPlayerDominated.cpp index 111d75b3..517ef082 100644 --- a/Amalgam/src/Hooks/CTFPlayerShared_IsPlayerDominated.cpp +++ b/Amalgam/src/Hooks/CTFPlayerShared_IsPlayerDominated.cpp @@ -2,7 +2,10 @@ MAKE_SIGNATURE(CTFPlayerShared_IsPlayerDominated, "client.dll", "48 89 5C 24 ? 48 89 74 24 ? 57 48 83 EC ? 48 63 F2 48 8B D9 E8", 0x0); MAKE_SIGNATURE(CTFClientScoreBoardDialog_UpdatePlayerList_IsPlayerDominated_Call, "client.dll", "84 C0 74 ? 45 84 FF 74", 0x0); +MAKE_SIGNATURE(KeyValues_SetInt, "client.dll", "40 53 48 83 EC ? 41 8B D8 41 B0", 0x0); +MAKE_SIGNATURE(CTFClientScoreBoardDialog_UpdatePlayerList_SetInt_Call, "client.dll", "48 8B 05 ? ? ? ? 83 78 ? ? 0F 84 ? ? ? ? 48 8B 0D ? ? ? ? 8B D7", 0x0); MAKE_SIGNATURE(CTFClientScoreBoardDialog_UpdatePlayerList_Jump, "client.dll", "8B E8 E8 ? ? ? ? 3B C7", 0x0); +MAKE_SIGNATURE(CClientScoreBoardDialog_NeedsUpdate, "client.dll", "48 8B 05 ? ? ? ? F3 0F 10 41 ? 0F 2F 40 ? 0F 92 C0", 0x0); MAKE_HOOK(CTFPlayerShared_IsPlayerDominated, S::CTFPlayerShared_IsPlayerDominated(), bool, void* rcx, int index) @@ -12,14 +15,50 @@ MAKE_HOOK(CTFPlayerShared_IsPlayerDominated, S::CTFPlayerShared_IsPlayerDominate return CALL_ORIGINAL(rcx, index); #endif - static const auto dwDesired = S::CTFClientScoreBoardDialog_UpdatePlayerList_IsPlayerDominated_Call(); - static const auto dwJump = S::CTFClientScoreBoardDialog_UpdatePlayerList_Jump(); + const auto dwDesired = S::CTFClientScoreBoardDialog_UpdatePlayerList_IsPlayerDominated_Call(); + const auto dwJump = S::CTFClientScoreBoardDialog_UpdatePlayerList_Jump(); const auto dwRetAddr = uintptr_t(_ReturnAddress()); - const bool bResult = CALL_ORIGINAL(rcx, index); + bool bReturn = CALL_ORIGINAL(rcx, index); - if (Vars::Visuals::UI::RevealScoreboard.Value && dwRetAddr == dwDesired && !bResult) + if (dwRetAddr == dwDesired && Vars::Visuals::UI::RevealScoreboard.Value && !SDK::CleanScreenshot() && !bReturn) *static_cast(_AddressOfReturnAddress()) = dwJump; - return bResult; + return bReturn; +} + +MAKE_HOOK(KeyValues_SetInt, S::KeyValues_SetInt(), void, + void* rcx, const char* keyName, int value) +{ +#ifdef DEBUG_HOOKS + if (!Vars::Hooks::KeyValues_SetInt[DEFAULT_BIND]) + return CALL_ORIGINAL(rcx, keyName, value); +#endif + + const auto dwDesired = S::CTFClientScoreBoardDialog_UpdatePlayerList_SetInt_Call(); + const auto dwJump = S::CTFClientScoreBoardDialog_UpdatePlayerList_Jump(); + const auto dwRetAddr = uintptr_t(_ReturnAddress()); + + CALL_ORIGINAL(rcx, keyName, value); + + if (dwRetAddr == dwDesired && Vars::Visuals::UI::RevealScoreboard.Value && !SDK::CleanScreenshot() && keyName && FNV1A::Hash32(keyName) == FNV1A::Hash32Const("nemesis")) + *static_cast(_AddressOfReturnAddress()) = dwJump; +} + +MAKE_HOOK(CClientScoreBoardDialog_NeedsUpdate, S::CClientScoreBoardDialog_NeedsUpdate(), bool, + void* rcx) +{ +#ifdef DEBUG_HOOKS + if (!Vars::Hooks::CClientScoreBoardDialog_NeedsUpdate[DEFAULT_BIND]) + return CALL_ORIGINAL(rcx); +#endif + + static bool bStaticMod = false; + const bool bLastMod = bStaticMod; + const bool bCurrMod = bStaticMod = (Vars::Visuals::UI::RevealScoreboard.Value || Vars::Visuals::UI::ScoreboardColors.Value) && !SDK::CleanScreenshot(); + + if (bCurrMod != bLastMod) + return true; + + return CALL_ORIGINAL(rcx); } \ No newline at end of file diff --git a/Amalgam/src/Hooks/CTFPlayer_BRenderAsZombie.cpp b/Amalgam/src/Hooks/CTFPlayer_BRenderAsZombie.cpp index 67bf5d85..30e5c466 100644 --- a/Amalgam/src/Hooks/CTFPlayer_BRenderAsZombie.cpp +++ b/Amalgam/src/Hooks/CTFPlayer_BRenderAsZombie.cpp @@ -11,10 +11,10 @@ MAKE_HOOK(CTFPlayer_BRenderAsZombie, S::CTFPlayer_BRenderAsZombie(), bool, return CALL_ORIGINAL(rcx, bWeaponsCheck); #endif - static const auto dwDesired = S::CTFRagdoll_CreateTFRagdoll_BRenderAsZombie_Call(); + const auto dwDesired = S::CTFRagdoll_CreateTFRagdoll_BRenderAsZombie_Call(); const auto dwRetAddr = uintptr_t(_ReturnAddress()); - if (Vars::Visuals::Removals::Gibs.Value && dwRetAddr == dwDesired) + if (dwRetAddr == dwDesired && Vars::Visuals::Removals::Gibs.Value) return true; return CALL_ORIGINAL(rcx, bWeaponsCheck); diff --git a/Amalgam/src/Hooks/CTFPlayer_GetMinFOV.cpp b/Amalgam/src/Hooks/CTFPlayer_GetMinFOV.cpp index c2235e12..430b94cf 100644 --- a/Amalgam/src/Hooks/CTFPlayer_GetMinFOV.cpp +++ b/Amalgam/src/Hooks/CTFPlayer_GetMinFOV.cpp @@ -5,5 +5,10 @@ MAKE_SIGNATURE(CTFPlayer_GetMinFOV, "client.dll", "F3 0F 10 05 ? ? ? ? C3 CC CC MAKE_HOOK(CTFPlayer_GetMinFOV, S::CTFPlayer_GetMinFOV(), float, /*void* rcx*/) { +#ifdef DEBUG_HOOKS + if (!Vars::Hooks::CTFPlayer_GetMinFOV[DEFAULT_BIND]) + return CALL_ORIGINAL(/*rcx*/); +#endif + return 0.f; } \ No newline at end of file diff --git a/Amalgam/src/Hooks/CTFPlayer_IsPlayerClass.cpp b/Amalgam/src/Hooks/CTFPlayer_IsPlayerClass.cpp index 5b4739dc..79d320c7 100644 --- a/Amalgam/src/Hooks/CTFPlayer_IsPlayerClass.cpp +++ b/Amalgam/src/Hooks/CTFPlayer_IsPlayerClass.cpp @@ -14,7 +14,7 @@ MAKE_HOOK(CTFPlayer_IsPlayerClass, S::CTFPlayer_IsPlayerClass(), bool, static const auto dwDesired = S::CDamageAccountPanel_DisplayDamageFeedback_IsPlayerClass_Call(); const auto dwRetAddr = uintptr_t(_ReturnAddress()); - if (Vars::Misc::Sound::HitsoundAlways.Value && dwRetAddr == dwDesired) + if (dwRetAddr == dwDesired && Vars::Misc::Sound::HitsoundAlways.Value) return false; return CALL_ORIGINAL(rcx, iClass); diff --git a/Amalgam/src/Hooks/CTFPlayer_ShouldDraw.cpp b/Amalgam/src/Hooks/CTFPlayer_ShouldDraw.cpp index 3183a27a..d0866ad0 100644 --- a/Amalgam/src/Hooks/CTFPlayer_ShouldDraw.cpp +++ b/Amalgam/src/Hooks/CTFPlayer_ShouldDraw.cpp @@ -36,12 +36,12 @@ MAKE_HOOK(CBasePlayer_ShouldDrawThisPlayer, S::CBasePlayer_ShouldDrawThisPlayer( void* rcx) { #ifdef DEBUG_HOOKS - if (!Vars::Hooks::CTFPlayer_ShouldDraw[DEFAULT_BIND]) + if (!Vars::Hooks::CBasePlayer_ShouldDrawThisPlayer[DEFAULT_BIND]) return CALL_ORIGINAL(rcx); #endif - //static const auto dwDesired = S::CTFWeaponBase_PostDataUpdate_ShouldDrawThisPlayer_Call(); - static const auto dwUndesired = S::CBasePlayer_BuildFirstPersonMeathookTransformations_ShouldDrawThisPlayer_Call(); + //const auto dwDesired = S::CTFWeaponBase_PostDataUpdate_ShouldDrawThisPlayer_Call(); + const auto dwUndesired = S::CBasePlayer_BuildFirstPersonMeathookTransformations_ShouldDrawThisPlayer_Call(); const auto dwRetAddr = uintptr_t(_ReturnAddress()); //if (dwRetAddr == dwDesired) @@ -67,11 +67,11 @@ MAKE_HOOK(CBasePlayer_ShouldDrawLocalPlayer, S::CBasePlayer_ShouldDrawLocalPlaye /*void* rcx*/) { #ifdef DEBUG_HOOKS - if (!Vars::Hooks::CTFPlayer_ShouldDraw[DEFAULT_BIND]) + if (!Vars::Hooks::CBasePlayer_ShouldDrawLocalPlayer[DEFAULT_BIND]) return CALL_ORIGINAL(/*rcx*/); #endif - //static const auto dwDesired = S::CBaseCombatWeapon_CalcOverrideModelIndex_ShouldDrawLocalPlayer_Call(); + //const auto dwDesired = S::CBaseCombatWeapon_CalcOverrideModelIndex_ShouldDrawLocalPlayer_Call(); //const auto dwRetAddr = uintptr_t(_ReturnAddress()); //if (dwRetAddr == dwDesired) @@ -91,7 +91,7 @@ MAKE_HOOK(CBaseCombatWeapon_ShouldDraw, S::CBaseCombatWeapon_ShouldDraw(), bool, void* rcx) { #ifdef DEBUG_HOOKS - if (!Vars::Hooks::CTFPlayer_ShouldDraw[DEFAULT_BIND]) + if (!Vars::Hooks::CBaseCombatWeapon_ShouldDraw[DEFAULT_BIND]) return CALL_ORIGINAL(rcx); #endif @@ -109,7 +109,7 @@ MAKE_HOOK(CViewRender_DrawViewModels, S::CViewRender_DrawViewModels(), void, void* rcx, const CViewSetup& viewRender, bool drawViewmodel) { #ifdef DEBUG_HOOKS - if (!Vars::Hooks::CTFPlayer_ShouldDraw[DEFAULT_BIND]) + if (!Vars::Hooks::CViewRender_DrawViewModels[DEFAULT_BIND]) return CALL_ORIGINAL(rcx, viewRender, drawViewmodel); #endif diff --git a/Amalgam/src/Hooks/CTFPlayer_UpdateStepSound.cpp b/Amalgam/src/Hooks/CTFPlayer_UpdateStepSound.cpp index 0a99ca19..cac66f69 100644 --- a/Amalgam/src/Hooks/CTFPlayer_UpdateStepSound.cpp +++ b/Amalgam/src/Hooks/CTFPlayer_UpdateStepSound.cpp @@ -11,7 +11,7 @@ MAKE_HOOK(CTFPlayer_UpdateStepSound, S::CTFPlayer_UpdateStepSound(), void, return CALL_ORIGINAL(rcx, psurface, vecOrigin, vecVelocity); #endif - static const auto dwDesired = S::CTFPlayer_FireEvent_UpdateStepSound_Call(); + const auto dwDesired = S::CTFPlayer_FireEvent_UpdateStepSound_Call(); const auto dwRetAddr = uintptr_t(_ReturnAddress()); if (dwRetAddr == dwDesired && rcx == H::Entities.GetLocal()) diff --git a/Amalgam/src/Hooks/CTFRocketLauncher_CheckReloadMisfire.cpp b/Amalgam/src/Hooks/CTFRocketLauncher_CheckReloadMisfire.cpp index e81bef0b..316ab790 100644 --- a/Amalgam/src/Hooks/CTFRocketLauncher_CheckReloadMisfire.cpp +++ b/Amalgam/src/Hooks/CTFRocketLauncher_CheckReloadMisfire.cpp @@ -6,6 +6,11 @@ MAKE_SIGNATURE(CTFRocketLauncher_FireProjectile, "client.dll", "48 89 74 24 ? 57 MAKE_HOOK(CTFRocketLauncher_CheckReloadMisfire, S::CTFRocketLauncher_CheckReloadMisfire(), bool, void* rcx) { +#ifdef DEBUG_HOOKS + if (!Vars::Hooks::CTFRocketLauncher_CheckReloadMisfire[DEFAULT_BIND]) + return CALL_ORIGINAL(rcx); +#endif + auto pWeapon = reinterpret_cast(rcx); if (!SDK::AttribHookValue(0, "can_overload", pWeapon)) return false; @@ -35,6 +40,11 @@ MAKE_HOOK(CTFRocketLauncher_CheckReloadMisfire, S::CTFRocketLauncher_CheckReload MAKE_HOOK(CTFRocketLauncher_FireProjectile, S::CTFRocketLauncher_FireProjectile(), CBaseEntity*, void* rcx, CTFPlayer* pPlayer) { +#ifdef DEBUG_HOOKS + if (!Vars::Hooks::CTFRocketLauncher_FireProjectile[DEFAULT_BIND]) + return CALL_ORIGINAL(rcx, pPlayer); +#endif + auto pWeapon = reinterpret_cast(rcx); pWeapon->m_bRemoveable() = false; return CALL_ORIGINAL(rcx, pPlayer); @@ -47,6 +57,11 @@ MAKE_SIGNATURE(CTFBat_Wood_LaunchBall, "client.dll", "40 53 48 83 EC ? 48 8B D9 MAKE_HOOK(CTFBat_Wood_LaunchBall, S::CTFBat_Wood_LaunchBall(), void, void* rcx) { +#ifdef DEBUG_HOOKS + if (!Vars::Hooks::CTFBat_Wood_LaunchBall[DEFAULT_BIND]) + return CALL_ORIGINAL(rcx); +#endif + auto pWeapon = reinterpret_cast(rcx); pWeapon->CalcIsAttackCritical(); diff --git a/Amalgam/src/Hooks/CTFWeaponBase_CanFireRandomCriticalShot.cpp b/Amalgam/src/Hooks/CTFWeaponBase_CanFireRandomCriticalShot.cpp index cd2b1a8b..549968a6 100644 --- a/Amalgam/src/Hooks/CTFWeaponBase_CanFireRandomCriticalShot.cpp +++ b/Amalgam/src/Hooks/CTFWeaponBase_CanFireRandomCriticalShot.cpp @@ -7,6 +7,11 @@ MAKE_SIGNATURE(CTFWeaponBase_CanFireRandomCriticalShot, "client.dll", "F3 0F 58 MAKE_HOOK(CTFWeaponBase_CanFireRandomCriticalShot, S::CTFWeaponBase_CanFireRandomCriticalShot(), bool, void* rcx, float flCritChance) { // not present on the client so it will always be a crit behind otherwise +#ifdef DEBUG_HOOKS + if (!Vars::Hooks::CTFWeaponBase_CanFireRandomCriticalShot[DEFAULT_BIND]) + return CALL_ORIGINAL(rcx, flCritChance); +#endif + int nRandomRangedCritDamage = F::CritHack.GetCritDamage(); int nTotalDamage = F::CritHack.GetRangedDamage(); if (!nTotalDamage) diff --git a/Amalgam/src/Hooks/CViewRender_DrawUnderwaterOverlay.cpp b/Amalgam/src/Hooks/CViewRender_DrawUnderwaterOverlay.cpp index b13ac254..6d835cf6 100644 --- a/Amalgam/src/Hooks/CViewRender_DrawUnderwaterOverlay.cpp +++ b/Amalgam/src/Hooks/CViewRender_DrawUnderwaterOverlay.cpp @@ -10,6 +10,6 @@ MAKE_HOOK(CViewRender_DrawUnderwaterOverlay, S::CViewRender_DrawUnderwaterOverla return CALL_ORIGINAL(rcx); #endif - if (!Vars::Visuals::Removals::ScreenOverlays.Value || Vars::Visuals::UI::CleanScreenshots.Value && I::EngineClient->IsTakingScreenshot()) + if (!Vars::Visuals::Removals::ScreenOverlays.Value || SDK::CleanScreenshot()) CALL_ORIGINAL(rcx); } \ No newline at end of file diff --git a/Amalgam/src/Hooks/CViewRender_PerformScreenOverlay.cpp b/Amalgam/src/Hooks/CViewRender_PerformScreenOverlay.cpp index 0f824f06..fc560685 100644 --- a/Amalgam/src/Hooks/CViewRender_PerformScreenOverlay.cpp +++ b/Amalgam/src/Hooks/CViewRender_PerformScreenOverlay.cpp @@ -10,6 +10,6 @@ MAKE_HOOK(CViewRender_PerformScreenOverlay, S::CViewRender_PerformScreenOverlay( return CALL_ORIGINAL(rcx, x, y, w, h); #endif - if (!Vars::Visuals::Removals::ScreenOverlays.Value || Vars::Visuals::UI::CleanScreenshots.Value && I::EngineClient->IsTakingScreenshot()) + if (!Vars::Visuals::Removals::ScreenOverlays.Value || SDK::CleanScreenshot()) CALL_ORIGINAL(rcx, x, y, w, h); } \ No newline at end of file diff --git a/Amalgam/src/Hooks/CViewRender_RenderView.cpp b/Amalgam/src/Hooks/CViewRender_RenderView.cpp index d00c65af..4f43a8df 100644 --- a/Amalgam/src/Hooks/CViewRender_RenderView.cpp +++ b/Amalgam/src/Hooks/CViewRender_RenderView.cpp @@ -11,7 +11,7 @@ MAKE_HOOK(CViewRender_RenderView, U::Memory.GetVirtual(I::ViewRender, 6), void, #endif CALL_ORIGINAL(rcx, view, nClearFlags, whatToDraw); - if (Vars::Visuals::UI::CleanScreenshots.Value && I::EngineClient->IsTakingScreenshot() || G::Unload) + if (SDK::CleanScreenshot() || G::Unload) return; F::CameraWindow.RenderView(rcx, view); diff --git a/Amalgam/src/Hooks/CWeaponMedigun_PrimaryAttack.cpp b/Amalgam/src/Hooks/CWeaponMedigun_PrimaryAttack.cpp index 8c79c64a..3258af48 100644 --- a/Amalgam/src/Hooks/CWeaponMedigun_PrimaryAttack.cpp +++ b/Amalgam/src/Hooks/CWeaponMedigun_PrimaryAttack.cpp @@ -14,6 +14,11 @@ struct Restore_t MAKE_HOOK(CWeaponMedigun_PrimaryAttack, S::CWeaponMedigun_PrimaryAttack(), void, void* rcx) { +#ifdef DEBUG_HOOKS + if (!Vars::Hooks::CWeaponMedigun_PrimaryAttack[DEFAULT_BIND]) + return CALL_ORIGINAL(rcx); +#endif + auto pWeapon = reinterpret_cast(rcx); auto pOwner = pWeapon->m_hOwner()->As(); if (!pOwner || !pOwner->m_pCurrentCommand()) diff --git a/Amalgam/src/Hooks/ClientModeTFNormal_BIsFriendOrPartyMember.cpp b/Amalgam/src/Hooks/ClientModeTFNormal_BIsFriendOrPartyMember.cpp index 5b541e8b..0131abba 100644 --- a/Amalgam/src/Hooks/ClientModeTFNormal_BIsFriendOrPartyMember.cpp +++ b/Amalgam/src/Hooks/ClientModeTFNormal_BIsFriendOrPartyMember.cpp @@ -10,10 +10,11 @@ MAKE_HOOK(ClientModeTFNormal_BIsFriendOrPartyMember, S::ClientModeTFNormal_BIsFr return CALL_ORIGINAL(rcx, pEntity); #endif - static const auto dwDesired = S::CHudInspectPanel_UserCmd_InspectTarget_BIsFriendOrPartyMember_Call(); + const auto dwDesired = S::CHudInspectPanel_UserCmd_InspectTarget_BIsFriendOrPartyMember_Call(); const auto dwRetAddr = uintptr_t(_ReturnAddress()); if (dwRetAddr == dwDesired && Vars::Misc::MannVsMachine::AllowInspect.Value) return true; + return CALL_ORIGINAL(rcx, pEntity); } \ No newline at end of file diff --git a/Amalgam/src/Hooks/DoEnginePostProcessing.cpp b/Amalgam/src/Hooks/DoEnginePostProcessing.cpp index f536eefc..4a111c4b 100644 --- a/Amalgam/src/Hooks/DoEnginePostProcessing.cpp +++ b/Amalgam/src/Hooks/DoEnginePostProcessing.cpp @@ -10,6 +10,6 @@ MAKE_HOOK(DoEnginePostProcessing, S::DoEnginePostProcessing(), void, return CALL_ORIGINAL(x, y, w, h, bFlashlightIsOn, bPostVGui); #endif - if (!Vars::Visuals::Removals::PostProcessing.Value || Vars::Visuals::UI::CleanScreenshots.Value && I::EngineClient->IsTakingScreenshot()) + if (!Vars::Visuals::Removals::PostProcessing.Value || SDK::CleanScreenshot()) CALL_ORIGINAL(x, y, w, h, bFlashlightIsOn, bPostVGui); } \ No newline at end of file diff --git a/Amalgam/src/Hooks/FX_FireBullets.cpp b/Amalgam/src/Hooks/FX_FireBullets.cpp index b87e8a4b..8c5a0b01 100644 --- a/Amalgam/src/Hooks/FX_FireBullets.cpp +++ b/Amalgam/src/Hooks/FX_FireBullets.cpp @@ -15,7 +15,7 @@ MAKE_HOOK(FX_FireBullets, S::FX_FireBullets(), void, return CALL_ORIGINAL(pWpn, iPlayer, vecOrigin, vecAngles, iWeapon, iMode, iSeed, flSpread, flDamage, bCritical); #endif - static const auto dwDesired = S::CTFWeaponBaseGun_FireBullet_FireBullets_Call(); + const auto dwDesired = S::CTFWeaponBaseGun_FireBullet_FireBullets_Call(); const auto dwRetAddr = uintptr_t(_ReturnAddress()); if (iPlayer != I::EngineClient->GetLocalPlayer()) diff --git a/Amalgam/src/Hooks/GetClientInterpAmount.cpp b/Amalgam/src/Hooks/GetClientInterpAmount.cpp index 745f8b80..ff6ded35 100644 --- a/Amalgam/src/Hooks/GetClientInterpAmount.cpp +++ b/Amalgam/src/Hooks/GetClientInterpAmount.cpp @@ -15,12 +15,12 @@ MAKE_HOOK(GetClientInterpAmount, S::GetClientInterpAmount(), float, if (!Vars::Visuals::Removals::Lerp.Value && !Vars::Visuals::Removals::Interpolation.Value) return CALL_ORIGINAL(); - static const auto dwDesired1 = S::CNetGraphPanel_DrawTextFields_GetClientInterpAmount_Call1(); - static const auto dwDesired2 = S::CNetGraphPanel_DrawTextFields_GetClientInterpAmount_Call2(); + const auto dwUndesired1 = S::CNetGraphPanel_DrawTextFields_GetClientInterpAmount_Call1(); + const auto dwUndesired2 = S::CNetGraphPanel_DrawTextFields_GetClientInterpAmount_Call2(); const auto dwRetAddr = uintptr_t(_ReturnAddress()); - if (dwRetAddr == dwDesired1 || dwRetAddr == dwDesired2) + if (dwRetAddr != dwUndesired1 && dwRetAddr != dwUndesired2) + return 0.f; + return CALL_ORIGINAL(); - - return 0.f; } \ No newline at end of file diff --git a/Amalgam/src/Hooks/HostState_Shutdown.cpp b/Amalgam/src/Hooks/HostState_Shutdown.cpp index f0ebff8a..41b02730 100644 --- a/Amalgam/src/Hooks/HostState_Shutdown.cpp +++ b/Amalgam/src/Hooks/HostState_Shutdown.cpp @@ -21,7 +21,7 @@ MAKE_HOOK(HostState_Restart, S::HostState_Restart(), void, ) { #ifdef DEBUG_HOOKS - if (!Vars::Hooks::HostState_Shutdown[DEFAULT_BIND]) + if (!Vars::Hooks::HostState_Restart[DEFAULT_BIND]) return CALL_ORIGINAL(); #endif diff --git a/Amalgam/src/Hooks/IEngineTrace_SetTraceEntity.cpp b/Amalgam/src/Hooks/IEngineTrace_SetTraceEntity.cpp index 4e1d1a69..4d025bd6 100644 --- a/Amalgam/src/Hooks/IEngineTrace_SetTraceEntity.cpp +++ b/Amalgam/src/Hooks/IEngineTrace_SetTraceEntity.cpp @@ -46,7 +46,7 @@ MAKE_HOOK(IEngineTrace_SetTraceEntity, U::Memory.GetVirtual(I::EngineTrace, 20), return CALL_ORIGINAL(rcx, pCollideable, pTrace); #endif - static const auto dwDesired = S::IEngineTrace_TraceRay_SetTraceEntity_Call(); + const auto dwDesired = S::IEngineTrace_TraceRay_SetTraceEntity_Call(); const auto dwRetAddr = uintptr_t(_ReturnAddress()); CALL_ORIGINAL(rcx, pCollideable, pTrace); @@ -59,7 +59,7 @@ MAKE_HOOK(CM_BoxTrace, S::CM_BoxTrace(), void, const Ray_t& ray, int headnode, int brushmask, bool computeEndpt, trace_t& tr) { #ifdef DEBUG_HOOKS - if (!Vars::Hooks::IEngineTrace_SetTraceEntity[DEFAULT_BIND]) + if (!Vars::Hooks::CM_BoxTrace[DEFAULT_BIND]) return CALL_ORIGINAL(ray, headnode, brushmask, computeEndpt, tr); #endif @@ -72,7 +72,7 @@ MAKE_HOOK(CM_TraceToLeaf_True, S::CM_TraceToLeaf_True(), void, TraceInfo_t* pTraceInfo, int ndxLeaf, float startFrac, float endFrac) { #ifdef DEBUG_HOOKS - if (!Vars::Hooks::IEngineTrace_SetTraceEntity[DEFAULT_BIND]) + if (!Vars::Hooks::CM_TraceToLeaf_True[DEFAULT_BIND]) return CALL_ORIGINAL(pTraceInfo, ndxLeaf, startFrac, endFrac); #endif @@ -92,7 +92,7 @@ MAKE_HOOK(CM_TraceToLeaf_False, S::CM_TraceToLeaf_False(), void, TraceInfo_t* pTraceInfo, int ndxLeaf, float startFrac, float endFrac) { #ifdef DEBUG_HOOKS - if (!Vars::Hooks::IEngineTrace_SetTraceEntity[DEFAULT_BIND]) + if (!Vars::Hooks::CM_TraceToLeaf_False[DEFAULT_BIND]) return CALL_ORIGINAL(pTraceInfo, ndxLeaf, startFrac, endFrac); #endif @@ -112,7 +112,7 @@ MAKE_HOOK(CM_ClipBoxToBrush_True, S::CM_ClipBoxToBrush_True(), void, TraceInfo_t* pTraceInfo, void* brush) { #ifdef DEBUG_HOOKS - if (!Vars::Hooks::IEngineTrace_SetTraceEntity[DEFAULT_BIND]) + if (!Vars::Hooks::CM_ClipBoxToBrush_True[DEFAULT_BIND]) return CALL_ORIGINAL(pTraceInfo, brush); #endif @@ -129,7 +129,7 @@ MAKE_HOOK(CM_ClipBoxToBrush_False, S::CM_ClipBoxToBrush_False(), void, TraceInfo_t* pTraceInfo, void* brush) { #ifdef DEBUG_HOOKS - if (!Vars::Hooks::IEngineTrace_SetTraceEntity[DEFAULT_BIND]) + if (!Vars::Hooks::CM_ClipBoxToBrush_False[DEFAULT_BIND]) return CALL_ORIGINAL(pTraceInfo, brush); #endif diff --git a/Amalgam/src/Hooks/IEngineVGui_Paint.cpp b/Amalgam/src/Hooks/IEngineVGui_Paint.cpp index 2cded377..3480ad70 100644 --- a/Amalgam/src/Hooks/IEngineVGui_Paint.cpp +++ b/Amalgam/src/Hooks/IEngineVGui_Paint.cpp @@ -25,7 +25,7 @@ MAKE_HOOK(IEngineVGui_Paint, U::Memory.GetVirtual(I::EngineVGui, 14), void, if (G::Unload) return CALL_ORIGINAL(rcx, iMode); - if (iMode & PAINT_INGAMEPANELS && (!Vars::Visuals::UI::CleanScreenshots.Value || !I::EngineClient->IsTakingScreenshot())) + if (iMode & PAINT_INGAMEPANELS && !SDK::CleanScreenshot()) { H::Draw.UpdateScreenSize(); H::Draw.UpdateW2SMatrix(); @@ -56,7 +56,7 @@ MAKE_HOOK(IEngineVGui_Paint, U::Memory.GetVirtual(I::EngineVGui, 14), void, CALL_ORIGINAL(rcx, iMode); - if (iMode & PAINT_UIPANELS && (!Vars::Visuals::UI::CleanScreenshots.Value || !I::EngineClient->IsTakingScreenshot())) + if (iMode & PAINT_UIPANELS && !SDK::CleanScreenshot()) { H::Draw.UpdateScreenSize(); H::Draw.Start(); diff --git a/Amalgam/src/Hooks/IMaterialSystem_FindTexture.cpp b/Amalgam/src/Hooks/IMaterialSystem_FindTexture.cpp index 3bb68c0a..70f2fe6a 100644 --- a/Amalgam/src/Hooks/IMaterialSystem_FindTexture.cpp +++ b/Amalgam/src/Hooks/IMaterialSystem_FindTexture.cpp @@ -3,6 +3,11 @@ MAKE_HOOK(IMaterialSystem_FindTexture, U::Memory.GetVirtual(I::MaterialSystem, 79), ITexture*, void* rcx, char const* pTextureName, const char* pTextureGroupName, bool complain, int nAdditionalCreationFlags) { +#ifdef DEBUG_HOOKS + if (!Vars::Hooks::IMaterialSystem_FindTexture[DEFAULT_BIND]) + return CALL_ORIGINAL(rcx, pTextureName, pTextureGroupName, complain, nAdditionalCreationFlags); +#endif + auto pReturn = CALL_ORIGINAL(rcx, pTextureName, pTextureGroupName, complain, nAdditionalCreationFlags); auto uHash = FNV1A::Hash32(Vars::Visuals::World::WorldTexture.Value.c_str()); diff --git a/Amalgam/src/Hooks/ISteamFriends_GetFriendPersonaName.cpp b/Amalgam/src/Hooks/ISteamFriends_GetFriendPersonaName.cpp index d8605362..bcbe2151 100644 --- a/Amalgam/src/Hooks/ISteamFriends_GetFriendPersonaName.cpp +++ b/Amalgam/src/Hooks/ISteamFriends_GetFriendPersonaName.cpp @@ -12,10 +12,10 @@ MAKE_HOOK(ISteamFriends_GetFriendPersonaName, U::Memory.GetVirtual(I::SteamFrien return CALL_ORIGINAL(rcx, steamIDFriend); #endif - static const auto dwDesired = S::GetPlayerNameForSteamID_GetFriendPersonaName_Call(); + const auto dwDesired = S::GetPlayerNameForSteamID_GetFriendPersonaName_Call(); const auto dwRetAddr = uintptr_t(_ReturnAddress()); - if (Vars::Visuals::UI::StreamerMode.Value && dwRetAddr == dwDesired) + if (dwRetAddr == dwDesired && Vars::Visuals::UI::StreamerMode.Value) { switch (F::PlayerUtils.GetNameType(steamIDFriend.GetAccountID())) { diff --git a/Amalgam/src/Hooks/ISteamNetworkingUtils_GetPingToDataCenter.cpp b/Amalgam/src/Hooks/ISteamNetworkingUtils_GetPingToDataCenter.cpp index 7b206783..e3af12a6 100644 --- a/Amalgam/src/Hooks/ISteamNetworkingUtils_GetPingToDataCenter.cpp +++ b/Amalgam/src/Hooks/ISteamNetworkingUtils_GetPingToDataCenter.cpp @@ -75,7 +75,7 @@ MAKE_HOOK(CTFPartyClient_RequestQueueForMatch, S::CTFPartyClient_RequestQueueFor void* rcx, int eMatchGroup) { #ifdef DEBUG_HOOKS - if (!Vars::Hooks::ISteamNetworkingUtils_GetPingToDataCenter[DEFAULT_BIND]) + if (!Vars::Hooks::CTFPartyClient_RequestQueueForMatch[DEFAULT_BIND]) return CALL_ORIGINAL(rcx, eMatchGroup); #endif diff --git a/Amalgam/src/Hooks/IVModelRender_DrawModelExecute.cpp b/Amalgam/src/Hooks/IVModelRender_DrawModelExecute.cpp index c8a23678..210b1373 100644 --- a/Amalgam/src/Hooks/IVModelRender_DrawModelExecute.cpp +++ b/Amalgam/src/Hooks/IVModelRender_DrawModelExecute.cpp @@ -17,7 +17,7 @@ MAKE_HOOK(IVModelRender_DrawModelExecute, U::Memory.GetVirtual(I::ModelRender, 1 return CALL_ORIGINAL(rcx, pState, pInfo, pBoneToWorld); #endif - if (I::EngineVGui->IsGameUIVisible() || Vars::Visuals::UI::CleanScreenshots.Value && I::EngineClient->IsTakingScreenshot() + if (I::EngineVGui->IsGameUIVisible() || SDK::CleanScreenshot() || F::CameraWindow.m_bDrawing || !F::Materials.m_bLoaded || G::Unload) return CALL_ORIGINAL(rcx, pState, pInfo, pBoneToWorld); @@ -47,14 +47,14 @@ MAKE_HOOK(CBaseAnimating_DrawModel, S::CBaseAnimating_DrawModel(), int, void* rcx, int flags) { #ifdef DEBUG_HOOKS - if (!Vars::Hooks::IVModelRender_DrawModelExecute[DEFAULT_BIND]) + if (!Vars::Hooks::CBaseAnimating_DrawModel[DEFAULT_BIND]) return CALL_ORIGINAL(rcx, flags); #endif - static const auto dwDrawModel = S::CEconEntity_DrawOverriddenViewmodel_DrawModel_Call(); + const auto dwDesired = S::CEconEntity_DrawOverriddenViewmodel_DrawModel_Call(); const auto dwRetAddr = uintptr_t(_ReturnAddress()); - if (dwRetAddr != dwDrawModel || I::EngineVGui->IsGameUIVisible() || Vars::Visuals::UI::CleanScreenshots.Value && I::EngineClient->IsTakingScreenshot() + if (dwRetAddr != dwDesired || I::EngineVGui->IsGameUIVisible() || SDK::CleanScreenshot() || F::CameraWindow.m_bDrawing || !F::Materials.m_bLoaded || G::Unload) return CALL_ORIGINAL(rcx, flags); diff --git a/Amalgam/src/Hooks/KeyValues_SetInt.cpp b/Amalgam/src/Hooks/KeyValues_SetInt.cpp deleted file mode 100644 index b0bdf845..00000000 --- a/Amalgam/src/Hooks/KeyValues_SetInt.cpp +++ /dev/null @@ -1,23 +0,0 @@ -#include "../SDK/SDK.h" - -MAKE_SIGNATURE(KeyValues_SetInt, "client.dll", "40 53 48 83 EC ? 41 8B D8 41 B0", 0x0); -MAKE_SIGNATURE(CTFClientScoreBoardDialog_UpdatePlayerList_SetInt_Call, "client.dll", "48 8B 05 ? ? ? ? 83 78 ? ? 0F 84 ? ? ? ? 48 8B 0D ? ? ? ? 8B D7", 0x0); -MAKE_SIGNATURE(CTFClientScoreBoardDialog_UpdatePlayerList_Jump, "client.dll", "8B E8 E8 ? ? ? ? 3B C7", 0x0); - -MAKE_HOOK(KeyValues_SetInt, S::KeyValues_SetInt(), void, - void* rcx, const char* keyName, int value) -{ -#ifdef DEBUG_HOOKS - if (!Vars::Hooks::KeyValues_SetInt[DEFAULT_BIND]) - return CALL_ORIGINAL(rcx, keyName, value); -#endif - - static const auto dwDesired = S::CTFClientScoreBoardDialog_UpdatePlayerList_SetInt_Call(); - static const auto dwJump = S::CTFClientScoreBoardDialog_UpdatePlayerList_Jump(); - const auto dwRetAddr = uintptr_t(_ReturnAddress()); - - CALL_ORIGINAL(rcx, keyName, value); - - if (Vars::Visuals::UI::RevealScoreboard.Value && dwRetAddr == dwDesired && keyName && FNV1A::Hash32(keyName) == FNV1A::Hash32Const("nemesis")) - *static_cast(_AddressOfReturnAddress()) = dwJump; -} \ No newline at end of file diff --git a/Amalgam/src/Hooks/R_DrawSkyBox.cpp b/Amalgam/src/Hooks/R_DrawSkyBox.cpp index ce0f4395..8cd7294a 100644 --- a/Amalgam/src/Hooks/R_DrawSkyBox.cpp +++ b/Amalgam/src/Hooks/R_DrawSkyBox.cpp @@ -10,7 +10,7 @@ MAKE_HOOK(R_DrawSkyBox, S::R_DrawSkyBox(), void, return CALL_ORIGINAL(zFar, nDrawFlags); #endif - if (FNV1A::Hash32(Vars::Visuals::World::SkyboxChanger.Value.c_str()) == FNV1A::Hash32Const("Off") || Vars::Visuals::UI::CleanScreenshots.Value && I::EngineClient->IsTakingScreenshot()) + if (FNV1A::Hash32(Vars::Visuals::World::SkyboxChanger.Value.c_str()) == FNV1A::Hash32Const("Off") || SDK::CleanScreenshot()) return CALL_ORIGINAL(zFar, nDrawFlags); static auto sv_skyname = H::ConVars.FindVar("sv_skyname"); diff --git a/Amalgam/src/Hooks/TF_IsHolidayActive.cpp b/Amalgam/src/Hooks/TF_IsHolidayActive.cpp index 4440d8ba..e2af21de 100644 --- a/Amalgam/src/Hooks/TF_IsHolidayActive.cpp +++ b/Amalgam/src/Hooks/TF_IsHolidayActive.cpp @@ -28,8 +28,11 @@ MAKE_HOOK(TF_IsHolidayActive, S::TF_IsHolidayActive(), bool, return CALL_ORIGINAL(eHoliday); #endif - static const auto dwDesired = S::CTFPlayer_FireEvent_IsHolidayActive_Call(); + const auto dwDesired = S::CTFPlayer_FireEvent_IsHolidayActive_Call(); const auto dwRetAddr = uintptr_t(_ReturnAddress()); + + if (dwRetAddr == dwDesired) + return true; - return dwRetAddr == dwDesired ? true : CALL_ORIGINAL(eHoliday); + return CALL_ORIGINAL(eHoliday); } \ No newline at end of file diff --git a/Amalgam/src/Hooks/VGuiMenuBuilder_AddMenuItem.cpp b/Amalgam/src/Hooks/VGuiMenuBuilder_AddMenuItem.cpp index 2f6bbfa8..a1b2f882 100644 --- a/Amalgam/src/Hooks/VGuiMenuBuilder_AddMenuItem.cpp +++ b/Amalgam/src/Hooks/VGuiMenuBuilder_AddMenuItem.cpp @@ -18,14 +18,14 @@ MAKE_HOOK(CVoiceStatus_IsPlayerBlocked, S::CVoiceStatus_IsPlayerBlocked(), bool, void* rcx, int playerIndex) { #ifdef DEBUG_HOOKS - if (!Vars::Hooks::VGuiMenuBuilder_AddMenuItem[DEFAULT_BIND]) + if (!Vars::Hooks::CVoiceStatus_IsPlayerBlocked[DEFAULT_BIND]) return CALL_ORIGINAL(rcx, playerIndex); #endif - static const auto dwDesired = S::CTFClientScoreBoardDialog_OnScoreBoardMouseRightRelease_IsPlayerBlocked_Call(); + const auto dwDesired = S::CTFClientScoreBoardDialog_OnScoreBoardMouseRightRelease_IsPlayerBlocked_Call(); const auto dwRetAddr = uintptr_t(_ReturnAddress()); - if (Vars::Visuals::UI::ScoreboardUtility.Value && dwRetAddr == dwDesired) + if (dwRetAddr == dwDesired && Vars::Visuals::UI::ScoreboardUtility.Value) s_iPlayerIndex = playerIndex; return CALL_ORIGINAL(rcx, playerIndex); @@ -39,10 +39,10 @@ MAKE_HOOK(VGuiMenuBuilder_AddMenuItem, S::VGuiMenuBuilder_AddMenuItem(), void*, return CALL_ORIGINAL(rcx, pszButtonText, pszCommand, pszCategoryName); #endif - static const auto dwDesired = S::CTFClientScoreBoardDialog_OnScoreBoardMouseRightRelease_AddMenuItem_Call(); + const auto dwDesired = S::CTFClientScoreBoardDialog_OnScoreBoardMouseRightRelease_AddMenuItem_Call(); const auto dwRetAddr = uintptr_t(_ReturnAddress()); - if (Vars::Visuals::UI::ScoreboardUtility.Value && dwRetAddr == dwDesired && s_iPlayerIndex != -1) + if (dwRetAddr == dwDesired && Vars::Visuals::UI::ScoreboardUtility.Value && s_iPlayerIndex != -1) { auto pReturn = CALL_ORIGINAL(rcx, pszButtonText, pszCommand, pszCategoryName); @@ -77,7 +77,7 @@ MAKE_HOOK(CTFClientScoreBoardDialog_OnCommand, S::CTFClientScoreBoardDialog_OnCo void* rcx, const char* command) { #ifdef DEBUG_HOOKS - if (!Vars::Hooks::VGuiMenuBuilder_AddMenuItem[DEFAULT_BIND]) + if (!Vars::Hooks::CTFClientScoreBoardDialog_OnCommand[DEFAULT_BIND]) return CALL_ORIGINAL(rcx, command); #endif diff --git a/Amalgam/src/Hooks/bf_read_ReadString.cpp b/Amalgam/src/Hooks/bf_read_ReadString.cpp index d2c6b449..c49d6f1e 100644 --- a/Amalgam/src/Hooks/bf_read_ReadString.cpp +++ b/Amalgam/src/Hooks/bf_read_ReadString.cpp @@ -13,7 +13,7 @@ MAKE_HOOK(bf_read_ReadString, S::bf_read_ReadString(), bool, return CALL_ORIGINAL(rcx, pStr, maxLen, bLine, pOutNumChars); #endif - static const auto dwDesired = S::CHudVote_MsgFunc_VoteStart_ReadString_Call(); + const auto dwDesired = S::CHudVote_MsgFunc_VoteStart_ReadString_Call(); const auto dwRetAddr = uintptr_t(_ReturnAddress()); bool bReturn = CALL_ORIGINAL(rcx, pStr, maxLen, bLine, pOutNumChars); diff --git a/Amalgam/src/SDK/Definitions/Definitions.h b/Amalgam/src/SDK/Definitions/Definitions.h index dfe5e67b..aab13a08 100644 --- a/Amalgam/src/SDK/Definitions/Definitions.h +++ b/Amalgam/src/SDK/Definitions/Definitions.h @@ -613,6 +613,8 @@ enum Collision_Group_t class CThreadMutex; typedef CThreadMutex CSourceMutex; +#pragma region Hitboxes + enum EHitboxes { HITBOX_HEAD, @@ -636,6 +638,33 @@ enum EHitboxes HITBOX_MAX }; +// 1: scout, 2: soldier, 3: pyro, 4: demoman, 5: heavy, 6: engineer, 7: medic, 8: sniper, 9: spy + +#pragma region Mann vs Machine +enum EBot6Hitboxes +{ // engineer bot has no pelvis + HITBOX_BOT6_HEAD, + HITBOX_BOT6_SPINE0, + HITBOX_BOT6_SPINE1, + HITBOX_BOT6_SPINE2, + HITBOX_BOT6_SPINE3, + HITBOX_BOT6_LEFT_UPPERARM, + HITBOX_BOT6_LEFT_FOREARM, + HITBOX_BOT6_LEFT_HAND, + HITBOX_BOT6_RIGHT_UPPERARM, + HITBOX_BOT6_RIGHT_FOREARM, + HITBOX_BOT6_RIGHT_HAND, + HITBOX_BOT6_LEFT_THIGH, + HITBOX_BOT6_LEFT_CALF, + HITBOX_BOT6_LEFT_FOOT, + HITBOX_BOT6_RIGHT_THIGH, + HITBOX_BOT6_RIGHT_CALF, + HITBOX_BOT6_RIGHT_FOOT, + HITBOX_BOT6_MAX +}; +#pragma endregion + +#pragma region Versus Saxton Hale enum ESaxtonHitboxes { HITBOX_SAXTON_HEAD, @@ -659,10 +688,10 @@ enum ESaxtonHitboxes HITBOX_SAXTON_SPINE3, HITBOX_SAXTON_MAX }; +#pragma endregion #pragma region Zombie Infection // these models are all terrible -// 1: scout, 2: soldier, 3: pyro, 4: demoman, 5: heavy, 6: engineer, 7: medic, 8: sniper, 9: spy // reused where possible // not adding garbage hitboxes that shouldn't exist @@ -849,6 +878,8 @@ enum EZombie9Hitboxes }; #pragma endregion +#pragma endregion + enum MinigunState_t { AC_STATE_IDLE = 0, diff --git a/Amalgam/src/SDK/Definitions/Interfaces/CTFGameRules.h b/Amalgam/src/SDK/Definitions/Interfaces/CTFGameRules.h index b1befc41..461d2850 100644 --- a/Amalgam/src/SDK/Definitions/Interfaces/CTFGameRules.h +++ b/Amalgam/src/SDK/Definitions/Interfaces/CTFGameRules.h @@ -97,6 +97,7 @@ public: NETVAR(m_nForceEscortPushLogic, int, "CTFGameRulesProxy", "m_nForceEscortPushLogic"); NETVAR(m_bRopesHolidayLightsAllowed, bool, "CTFGameRulesProxy", "m_bRopesHolidayLightsAllowed"); + VIRTUAL(DefaultFOV, int, 30, this); VIRTUAL(GetViewVectors, CViewVectors*, 31, this); inline bool IsPlayerReady(int playerIndex) diff --git a/Amalgam/src/SDK/Definitions/Main/CBaseAnimating.cpp b/Amalgam/src/SDK/Definitions/Main/CBaseAnimating.cpp index ff0f0720..440745fe 100644 --- a/Amalgam/src/SDK/Definitions/Main/CBaseAnimating.cpp +++ b/Amalgam/src/SDK/Definitions/Main/CBaseAnimating.cpp @@ -35,7 +35,7 @@ Vec3 CBaseAnimating::GetHitboxOrigin(matrix3x4* aBones, int nHitbox, Vec3 vOffse auto pHDR = I::ModelInfoClient->GetStudiomodel(pModel); if (!pHDR) return {}; auto pSet = pHDR->pHitboxSet(m_nHitboxSet()); - if (!pSet) return {}; + if (!pSet || pSet->numhitboxes <= nHitbox) return {}; auto pBox = pSet->pHitbox(nHitbox); if (!pBox) return {}; @@ -50,7 +50,7 @@ Vec3 CBaseAnimating::GetHitboxCenter(matrix3x4* aBones, int nHitbox, Vec3 vOffse auto pHDR = I::ModelInfoClient->GetStudiomodel(pModel); if (!pHDR) return {}; auto pSet = pHDR->pHitboxSet(m_nHitboxSet()); - if (!pSet) return {}; + if (!pSet || pSet->numhitboxes <= nHitbox) return {}; auto pBox = pSet->pHitbox(nHitbox); if (!pBox) return {}; @@ -65,7 +65,7 @@ void CBaseAnimating::GetHitboxInfo(matrix3x4* aBones, int nHitbox, Vec3* pCenter auto pHDR = I::ModelInfoClient->GetStudiomodel(pModel); if (!pHDR) return; auto pSet = pHDR->pHitboxSet(m_nHitboxSet()); - if (!pSet) return; + if (!pSet || pSet->numhitboxes <= nHitbox) return; auto pBox = pSet->pHitbox(nHitbox); if (!pBox) return; diff --git a/Amalgam/src/SDK/Definitions/Main/CBaseEntity.cpp b/Amalgam/src/SDK/Definitions/Main/CBaseEntity.cpp index 87e08ed3..7046bb78 100644 --- a/Amalgam/src/SDK/Definitions/Main/CBaseEntity.cpp +++ b/Amalgam/src/SDK/Definitions/Main/CBaseEntity.cpp @@ -60,18 +60,40 @@ int CBaseEntity::GetHitboxToBase(int nHitbox) { switch (H::Entities.GetModel(entindex())) { + case FNV1A::Hash32Const("models/bots/engineer/bot_engineer.mdl"): + switch (nHitbox) + { + case HITBOX_BOT6_HEAD: return HITBOX_HEAD; + case HITBOX_BOT6_SPINE0: return HITBOX_SPINE0; + case HITBOX_BOT6_SPINE1: return HITBOX_SPINE1; + case HITBOX_BOT6_SPINE2: return HITBOX_SPINE2; + case HITBOX_BOT6_SPINE3: return HITBOX_SPINE3; + case HITBOX_BOT6_LEFT_UPPERARM: return HITBOX_LEFT_UPPERARM; + case HITBOX_BOT6_LEFT_FOREARM: return HITBOX_LEFT_FOREARM; + case HITBOX_BOT6_LEFT_HAND: return HITBOX_LEFT_HAND; + case HITBOX_BOT6_RIGHT_UPPERARM: return HITBOX_RIGHT_UPPERARM; + case HITBOX_BOT6_RIGHT_FOREARM: return HITBOX_RIGHT_FOREARM; + case HITBOX_BOT6_RIGHT_HAND: return HITBOX_RIGHT_HAND; + case HITBOX_BOT6_LEFT_THIGH: return HITBOX_LEFT_THIGH; + case HITBOX_BOT6_LEFT_CALF: return HITBOX_LEFT_CALF; + case HITBOX_BOT6_LEFT_FOOT: return HITBOX_LEFT_FOOT; + case HITBOX_BOT6_RIGHT_THIGH: return HITBOX_RIGHT_THIGH; + case HITBOX_BOT6_RIGHT_CALF: return HITBOX_RIGHT_CALF; + case HITBOX_BOT6_RIGHT_FOOT: return HITBOX_RIGHT_FOOT; + } + break; case FNV1A::Hash32Const("models/vsh/player/saxton_hale.mdl"): case FNV1A::Hash32Const("models/vsh/player/hell_hale.mdl"): case FNV1A::Hash32Const("models/vsh/player/santa_hale.mdl"): switch (nHitbox) { case HITBOX_SAXTON_HEAD: return HITBOX_HEAD; + case HITBOX_SAXTON_NECK: + case HITBOX_SAXTON_PELVIS: return HITBOX_PELVIS; case HITBOX_SAXTON_SPINE0: return HITBOX_SPINE0; case HITBOX_SAXTON_SPINE1: return HITBOX_SPINE1; case HITBOX_SAXTON_SPINE2: return HITBOX_SPINE2; case HITBOX_SAXTON_SPINE3: return HITBOX_SPINE3; - case HITBOX_SAXTON_NECK: - case HITBOX_SAXTON_PELVIS: return HITBOX_PELVIS; case HITBOX_SAXTON_LEFT_UPPERARM: return HITBOX_LEFT_UPPERARM; case HITBOX_SAXTON_LEFT_FOREARM: return HITBOX_LEFT_FOREARM; case HITBOX_SAXTON_LEFT_HAND: return HITBOX_LEFT_HAND; @@ -92,12 +114,12 @@ int CBaseEntity::GetHitboxToBase(int nHitbox) switch (nHitbox) { case HITBOX_ZOMBIE128_HEAD: return HITBOX_HEAD; + case HITBOX_ZOMBIE128_NECK: + case HITBOX_ZOMBIE128_PELVIS: return HITBOX_PELVIS; case HITBOX_ZOMBIE128_SPINE0: return HITBOX_SPINE0; case HITBOX_ZOMBIE128_SPINE1: return HITBOX_SPINE1; case HITBOX_ZOMBIE128_SPINE2: return HITBOX_SPINE2; case HITBOX_ZOMBIE128_SPINE3: return HITBOX_SPINE3; - case HITBOX_ZOMBIE128_NECK: - case HITBOX_ZOMBIE128_PELVIS: return HITBOX_PELVIS; case HITBOX_ZOMBIE128_LEFT_COLLAR: case HITBOX_ZOMBIE128_LEFT_UPPERARM: return HITBOX_LEFT_UPPERARM; case HITBOX_ZOMBIE128_LEFT_FOREARM: return HITBOX_LEFT_FOREARM; @@ -144,12 +166,12 @@ int CBaseEntity::GetHitboxToBase(int nHitbox) switch (nHitbox) { case HITBOX_ZOMBIE4_HEAD: return HITBOX_HEAD; + case HITBOX_ZOMBIE4_NECK: + case HITBOX_ZOMBIE4_PELVIS: return HITBOX_PELVIS; case HITBOX_ZOMBIE4_SPINE0: return HITBOX_SPINE0; case HITBOX_ZOMBIE4_SPINE1: return HITBOX_SPINE1; case HITBOX_ZOMBIE4_SPINE2: return HITBOX_SPINE2; case HITBOX_ZOMBIE4_SPINE3: return HITBOX_SPINE3; - case HITBOX_ZOMBIE4_NECK: - case HITBOX_ZOMBIE4_PELVIS: return HITBOX_PELVIS; case HITBOX_ZOMBIE4_LEFT_COLLAR: case HITBOX_ZOMBIE4_LEFT_UPPERARM: return HITBOX_LEFT_UPPERARM; case HITBOX_ZOMBIE4_LEFT_FOREARM: return HITBOX_LEFT_FOREARM; @@ -170,12 +192,12 @@ int CBaseEntity::GetHitboxToBase(int nHitbox) switch (nHitbox) { case HITBOX_ZOMBIE5_HEAD: return HITBOX_HEAD; + case HITBOX_ZOMBIE5_NECK: + case HITBOX_ZOMBIE5_PELVIS: return HITBOX_PELVIS; case HITBOX_ZOMBIE5_SPINE0: return HITBOX_SPINE0; case HITBOX_ZOMBIE5_SPINE1: return HITBOX_SPINE1; case HITBOX_ZOMBIE5_SPINE2: return HITBOX_SPINE2; case HITBOX_ZOMBIE5_SPINE3: return HITBOX_SPINE3; - case HITBOX_ZOMBIE5_NECK: - case HITBOX_ZOMBIE5_PELVIS: return HITBOX_PELVIS; case HITBOX_ZOMBIE5_LEFT_COLLAR: case HITBOX_ZOMBIE5_LEFT_UPPERARM: return HITBOX_LEFT_UPPERARM; case HITBOX_ZOMBIE5_LEFT_FOREARM: return HITBOX_LEFT_FOREARM; @@ -196,12 +218,12 @@ int CBaseEntity::GetHitboxToBase(int nHitbox) switch (nHitbox) { case HITBOX_ZOMBIE6_HEAD: return HITBOX_HEAD; + case HITBOX_ZOMBIE6_NECK: + case HITBOX_ZOMBIE6_PELVIS: return HITBOX_PELVIS; case HITBOX_ZOMBIE6_SPINE0: return HITBOX_SPINE0; case HITBOX_ZOMBIE6_SPINE1: return HITBOX_SPINE1; case HITBOX_ZOMBIE6_SPINE2: return HITBOX_SPINE2; case HITBOX_ZOMBIE6_SPINE3: return HITBOX_SPINE3; - case HITBOX_ZOMBIE6_NECK: - case HITBOX_ZOMBIE6_PELVIS: return HITBOX_PELVIS; case HITBOX_ZOMBIE6_LEFT_COLLAR: case HITBOX_ZOMBIE6_LEFT_UPPERARM: return HITBOX_LEFT_UPPERARM; case HITBOX_ZOMBIE6_LEFT_FOREARM: return HITBOX_LEFT_FOREARM; @@ -222,12 +244,12 @@ int CBaseEntity::GetHitboxToBase(int nHitbox) switch (nHitbox) { case HITBOX_ZOMBIE7_HEAD: return HITBOX_HEAD; + case HITBOX_ZOMBIE7_NECK: + case HITBOX_ZOMBIE7_PELVIS: return HITBOX_PELVIS; case HITBOX_ZOMBIE7_SPINE0: return HITBOX_SPINE0; case HITBOX_ZOMBIE7_SPINE1: return HITBOX_SPINE1; case HITBOX_ZOMBIE7_SPINE2: return HITBOX_SPINE2; case HITBOX_ZOMBIE7_SPINE3: return HITBOX_SPINE3; - case HITBOX_ZOMBIE7_NECK: - case HITBOX_ZOMBIE7_PELVIS: return HITBOX_PELVIS; case HITBOX_ZOMBIE7_LEFT_COLLAR: case HITBOX_ZOMBIE7_LEFT_UPPERARM: return HITBOX_LEFT_UPPERARM; case HITBOX_ZOMBIE7_LEFT_FOREARM: return HITBOX_LEFT_FOREARM; @@ -248,12 +270,12 @@ int CBaseEntity::GetHitboxToBase(int nHitbox) switch (nHitbox) { case HITBOX_ZOMBIE9_HEAD: return HITBOX_HEAD; + case HITBOX_ZOMBIE9_NECK: + case HITBOX_ZOMBIE9_PELVIS: return HITBOX_PELVIS; case HITBOX_ZOMBIE9_SPINE0: return HITBOX_SPINE0; case HITBOX_ZOMBIE9_SPINE1: return HITBOX_SPINE1; case HITBOX_ZOMBIE9_SPINE2: return HITBOX_SPINE2; case HITBOX_ZOMBIE9_SPINE3: return HITBOX_SPINE3; - case HITBOX_ZOMBIE9_NECK: - case HITBOX_ZOMBIE9_PELVIS: return HITBOX_PELVIS; case HITBOX_ZOMBIE9_LEFT_COLLAR: case HITBOX_ZOMBIE9_LEFT_UPPERARM: return HITBOX_LEFT_UPPERARM; case HITBOX_ZOMBIE9_LEFT_FOREARM: return HITBOX_LEFT_FOREARM; @@ -278,17 +300,40 @@ int CBaseEntity::GetBaseToHitbox(int nHitbox) { switch (H::Entities.GetModel(entindex())) { + case FNV1A::Hash32Const("models/bots/engineer/bot_engineer.mdl"): + switch (nHitbox) + { + case HITBOX_HEAD: return HITBOX_BOT6_HEAD; + case HITBOX_PELVIS: + case HITBOX_SPINE0: return HITBOX_BOT6_SPINE0; + case HITBOX_SPINE1: return HITBOX_BOT6_SPINE1; + case HITBOX_SPINE2: return HITBOX_BOT6_SPINE2; + case HITBOX_SPINE3: return HITBOX_BOT6_SPINE3; + case HITBOX_LEFT_UPPERARM: return HITBOX_BOT6_LEFT_UPPERARM; + case HITBOX_LEFT_FOREARM: return HITBOX_BOT6_LEFT_FOREARM; + case HITBOX_LEFT_HAND: return HITBOX_BOT6_LEFT_HAND; + case HITBOX_RIGHT_UPPERARM: return HITBOX_BOT6_RIGHT_UPPERARM; + case HITBOX_RIGHT_FOREARM: return HITBOX_BOT6_RIGHT_FOREARM; + case HITBOX_RIGHT_HAND: return HITBOX_BOT6_RIGHT_HAND; + case HITBOX_LEFT_THIGH: return HITBOX_BOT6_LEFT_THIGH; + case HITBOX_LEFT_CALF: return HITBOX_BOT6_LEFT_CALF; + case HITBOX_LEFT_FOOT: return HITBOX_BOT6_LEFT_FOOT; + case HITBOX_RIGHT_THIGH: return HITBOX_BOT6_RIGHT_THIGH; + case HITBOX_RIGHT_CALF: return HITBOX_BOT6_RIGHT_CALF; + case HITBOX_RIGHT_FOOT: return HITBOX_BOT6_RIGHT_FOOT; + } + break; case FNV1A::Hash32Const("models/vsh/player/saxton_hale.mdl"): case FNV1A::Hash32Const("models/vsh/player/hell_hale.mdl"): case FNV1A::Hash32Const("models/vsh/player/santa_hale.mdl"): switch (nHitbox) { case HITBOX_HEAD: return HITBOX_SAXTON_HEAD; + case HITBOX_PELVIS: return HITBOX_SAXTON_PELVIS; case HITBOX_SPINE0: return HITBOX_SAXTON_SPINE0; case HITBOX_SPINE1: return HITBOX_SAXTON_SPINE1; case HITBOX_SPINE2: return HITBOX_SAXTON_SPINE2; case HITBOX_SPINE3: return HITBOX_SAXTON_SPINE3; - case HITBOX_PELVIS: return HITBOX_SAXTON_PELVIS; case HITBOX_LEFT_UPPERARM: return HITBOX_SAXTON_LEFT_UPPERARM; case HITBOX_LEFT_FOREARM: return HITBOX_SAXTON_LEFT_FOREARM; case HITBOX_LEFT_HAND: return HITBOX_SAXTON_LEFT_HAND; @@ -309,11 +354,11 @@ int CBaseEntity::GetBaseToHitbox(int nHitbox) switch (nHitbox) { case HITBOX_HEAD: return HITBOX_ZOMBIE128_HEAD; + case HITBOX_PELVIS: return HITBOX_ZOMBIE128_PELVIS; case HITBOX_SPINE0: return HITBOX_ZOMBIE128_SPINE0; case HITBOX_SPINE1: return HITBOX_ZOMBIE128_SPINE1; case HITBOX_SPINE2: return HITBOX_ZOMBIE128_SPINE2; case HITBOX_SPINE3: return HITBOX_ZOMBIE128_SPINE3; - case HITBOX_PELVIS: return HITBOX_ZOMBIE128_PELVIS; case HITBOX_LEFT_UPPERARM: return HITBOX_ZOMBIE128_LEFT_UPPERARM; case HITBOX_LEFT_FOREARM: return HITBOX_ZOMBIE128_LEFT_FOREARM; case HITBOX_LEFT_HAND: return HITBOX_ZOMBIE128_LEFT_HAND; @@ -332,11 +377,11 @@ int CBaseEntity::GetBaseToHitbox(int nHitbox) switch (nHitbox) { case HITBOX_HEAD: return HITBOX_ZOMBIE3_HEAD; + case HITBOX_PELVIS: return HITBOX_ZOMBIE3_PELVIS; case HITBOX_SPINE0: return HITBOX_ZOMBIE3_SPINE0; case HITBOX_SPINE1: return HITBOX_ZOMBIE3_SPINE1; case HITBOX_SPINE2: return HITBOX_ZOMBIE3_SPINE2; case HITBOX_SPINE3: return HITBOX_ZOMBIE3_SPINE3; - case HITBOX_PELVIS: return HITBOX_ZOMBIE3_PELVIS; case HITBOX_LEFT_UPPERARM: return HITBOX_ZOMBIE3_LEFT_UPPERARM; case HITBOX_LEFT_FOREARM: return HITBOX_ZOMBIE3_LEFT_FOREARM; case HITBOX_LEFT_HAND: return HITBOX_ZOMBIE3_LEFT_HAND; @@ -355,11 +400,11 @@ int CBaseEntity::GetBaseToHitbox(int nHitbox) switch (nHitbox) { case HITBOX_HEAD: return HITBOX_ZOMBIE4_HEAD; + case HITBOX_PELVIS: return HITBOX_ZOMBIE4_PELVIS; case HITBOX_SPINE0: return HITBOX_ZOMBIE4_SPINE0; case HITBOX_SPINE1: return HITBOX_ZOMBIE4_SPINE1; case HITBOX_SPINE2: return HITBOX_ZOMBIE4_SPINE2; case HITBOX_SPINE3: return HITBOX_ZOMBIE4_SPINE3; - case HITBOX_PELVIS: return HITBOX_ZOMBIE4_PELVIS; case HITBOX_LEFT_UPPERARM: return HITBOX_ZOMBIE4_LEFT_UPPERARM; case HITBOX_LEFT_FOREARM: return HITBOX_ZOMBIE4_LEFT_FOREARM; case HITBOX_LEFT_HAND: return HITBOX_ZOMBIE4_LEFT_HAND; @@ -378,11 +423,11 @@ int CBaseEntity::GetBaseToHitbox(int nHitbox) switch (nHitbox) { case HITBOX_HEAD: return HITBOX_ZOMBIE5_HEAD; + case HITBOX_PELVIS: return HITBOX_ZOMBIE5_PELVIS; case HITBOX_SPINE0: return HITBOX_ZOMBIE5_SPINE0; case HITBOX_SPINE1: return HITBOX_ZOMBIE5_SPINE1; case HITBOX_SPINE2: return HITBOX_ZOMBIE5_SPINE2; case HITBOX_SPINE3: return HITBOX_ZOMBIE5_SPINE3; - case HITBOX_PELVIS: return HITBOX_ZOMBIE5_PELVIS; case HITBOX_LEFT_UPPERARM: return HITBOX_ZOMBIE5_LEFT_UPPERARM; case HITBOX_LEFT_FOREARM: return HITBOX_ZOMBIE5_LEFT_FOREARM; case HITBOX_LEFT_HAND: return HITBOX_ZOMBIE5_LEFT_HAND; @@ -401,11 +446,11 @@ int CBaseEntity::GetBaseToHitbox(int nHitbox) switch (nHitbox) { case HITBOX_HEAD: return HITBOX_ZOMBIE6_HEAD; + case HITBOX_PELVIS: return HITBOX_ZOMBIE6_PELVIS; case HITBOX_SPINE0: return HITBOX_ZOMBIE6_SPINE0; case HITBOX_SPINE1: return HITBOX_ZOMBIE6_SPINE1; case HITBOX_SPINE2: return HITBOX_ZOMBIE6_SPINE2; case HITBOX_SPINE3: return HITBOX_ZOMBIE6_SPINE3; - case HITBOX_PELVIS: return HITBOX_ZOMBIE6_PELVIS; case HITBOX_LEFT_UPPERARM: return HITBOX_ZOMBIE6_LEFT_UPPERARM; case HITBOX_LEFT_FOREARM: return HITBOX_ZOMBIE6_LEFT_FOREARM; case HITBOX_LEFT_HAND: return HITBOX_ZOMBIE6_LEFT_HAND; @@ -424,11 +469,11 @@ int CBaseEntity::GetBaseToHitbox(int nHitbox) switch (nHitbox) { case HITBOX_HEAD: return HITBOX_ZOMBIE7_HEAD; + case HITBOX_PELVIS: return HITBOX_ZOMBIE7_PELVIS; case HITBOX_SPINE0: return HITBOX_ZOMBIE7_SPINE0; case HITBOX_SPINE1: return HITBOX_ZOMBIE7_SPINE1; case HITBOX_SPINE2: return HITBOX_ZOMBIE7_SPINE2; case HITBOX_SPINE3: return HITBOX_ZOMBIE7_SPINE3; - case HITBOX_PELVIS: return HITBOX_ZOMBIE7_PELVIS; case HITBOX_LEFT_UPPERARM: return HITBOX_ZOMBIE7_LEFT_UPPERARM; case HITBOX_LEFT_FOREARM: return HITBOX_ZOMBIE7_LEFT_FOREARM; case HITBOX_LEFT_HAND: return HITBOX_ZOMBIE7_LEFT_HAND; @@ -447,11 +492,11 @@ int CBaseEntity::GetBaseToHitbox(int nHitbox) switch (nHitbox) { case HITBOX_HEAD: return HITBOX_ZOMBIE9_HEAD; + case HITBOX_PELVIS: return HITBOX_ZOMBIE9_PELVIS; case HITBOX_SPINE0: return HITBOX_ZOMBIE9_SPINE0; case HITBOX_SPINE1: return HITBOX_ZOMBIE9_SPINE1; case HITBOX_SPINE2: return HITBOX_ZOMBIE9_SPINE2; case HITBOX_SPINE3: return HITBOX_ZOMBIE9_SPINE3; - case HITBOX_PELVIS: return HITBOX_ZOMBIE9_PELVIS; case HITBOX_LEFT_UPPERARM: return HITBOX_ZOMBIE9_LEFT_UPPERARM; case HITBOX_LEFT_FOREARM: return HITBOX_ZOMBIE9_LEFT_FOREARM; case HITBOX_LEFT_HAND: return HITBOX_ZOMBIE9_LEFT_HAND; diff --git a/Amalgam/src/SDK/SDK.cpp b/Amalgam/src/SDK/SDK.cpp index 09e6c4e2..4698a389 100644 --- a/Amalgam/src/SDK/SDK.cpp +++ b/Amalgam/src/SDK/SDK.cpp @@ -126,20 +126,6 @@ std::string SDK::GetTime() return buffer; } -HWND SDK::GetTeamFortressWindow() -{ - static HWND hWindow = nullptr; - if (!hWindow) - EnumWindows(TeamFortressWindow, reinterpret_cast(&hWindow)); - return hWindow; -} - -bool SDK::IsGameWindowInFocus() -{ - HWND hWindow = GetTeamFortressWindow(); - return hWindow == GetForegroundWindow() || !hWindow; -} - std::wstring SDK::ConvertUtf8ToWide(const std::string& source) { int size = MultiByteToWideChar(CP_UTF8, 0, source.data(), -1, nullptr, 0); @@ -156,6 +142,20 @@ std::string SDK::ConvertWideToUTF8(const std::wstring& source) return result; } +HWND SDK::GetTeamFortressWindow() +{ + static HWND hWindow = nullptr; + if (!hWindow) + EnumWindows(TeamFortressWindow, reinterpret_cast(&hWindow)); + return hWindow; +} + +bool SDK::IsGameWindowInFocus() +{ + HWND hWindow = GetTeamFortressWindow(); + return hWindow == GetForegroundWindow() || !hWindow; +} + double SDK::PlatFloatTime() { static auto Plat_FloatTime = U::Memory.GetModuleExport("tier0.dll", "Plat_FloatTime"); @@ -826,4 +826,9 @@ void SDK::GetProjectileFireSetup(CTFPlayer* pPlayer, const Vec3& vAngIn, Vec3 vO vAngOut = Math::VectorAngles(vEndPos - vPosOut); } +} + +bool SDK::CleanScreenshot() +{ + return Vars::Visuals::UI::CleanScreenshots.Value && I::EngineClient->IsTakingScreenshot(); } \ No newline at end of file diff --git a/Amalgam/src/SDK/SDK.h b/Amalgam/src/SDK/SDK.h index 80ec82a9..48b82a9a 100644 --- a/Amalgam/src/SDK/SDK.h +++ b/Amalgam/src/SDK/SDK.h @@ -21,6 +21,9 @@ #include "../Utils/Macros/Macros.h" #include +#define DEFAULT_COLOR Color_t(175, 150, 255, 255) +#define ALTERNATE_COLOR Color_t(175, 150, 255, 127) + #define VK_0 0x30 #define VK_1 0x31 #define VK_2 0x32 @@ -82,12 +85,12 @@ namespace SDK std::string GetDate(); std::string GetTime(); - HWND GetTeamFortressWindow(); - bool IsGameWindowInFocus(); - std::wstring ConvertUtf8ToWide(const std::string& source); std::string ConvertWideToUTF8(const std::wstring& source); + HWND GetTeamFortressWindow(); + bool IsGameWindowInFocus(); + double PlatFloatTime(); int StdRandomInt(int iMin, int iMax); float StdRandomFloat(float flMin, float flMax); @@ -132,4 +135,6 @@ namespace SDK void WalkTo(CUserCmd* pCmd, CTFPlayer* pLocal, Vec3& vTo, float flScale = 1.f); void GetProjectileFireSetup(CTFPlayer* pPlayer, const Vec3& vAngIn, Vec3 vOffset, Vec3& vPosOut, Vec3& vAngOut, bool bPipes = false, bool bInterp = false, bool bAllowFlip = true); + + bool CleanScreenshot(); } \ No newline at end of file diff --git a/Amalgam/src/SDK/Vars.h b/Amalgam/src/SDK/Vars.h index 2d231bec..6bb8ea61 100644 --- a/Amalgam/src/SDK/Vars.h +++ b/Amalgam/src/SDK/Vars.h @@ -414,7 +414,7 @@ namespace Vars CVar(AutoVaccinatorFireScale, "Auto vaccinator fire scale", 100.f, NOSAVE | DEBUGVAR | SLIDER_MIN | SLIDER_PRECISION, 0.f, 200.f, 10.f, "%g%%"); CVar(AutoVaccinatorFlamethrowerDamageOnly, "Auto vaccinator flamethrower damage only", false, NOSAVE | DEBUGVAR); SUBNAMESPACE_END(Healing); - NAMESPACE_END(AIMBOT); + NAMESPACE_END(Aimbot); NAMESPACE_BEGIN(CritHack, Crit Hack) CVar(ForceCrits, "Force crits", false); @@ -878,26 +878,37 @@ namespace Vars NAMESPACE_BEGIN(Hooks) CVar(bf_read_ReadString, "bf_read_ReadString", true, NOSAVE | DEBUGVAR); CVar(CAchievementMgr_CheckAchievementsEnabled, "CAchievementMgr_CheckAchievementsEnabled", true, NOSAVE | DEBUGVAR); - CVar(CAttributeManager_AttribHookValue, "CAttributeManager_AttribHookValue", true, NOSAVE | DEBUGVAR); + CVar(CAttributeManager_AttribHookInt, "CAttributeManager_AttribHookInt", true, NOSAVE | DEBUGVAR); + CVar(CAvatarImagePanel_SetPlayer, "CAvatarImagePanel_SetPlayer", true, NOSAVE | DEBUGVAR); + CVar(CAvatarImage_SetAvatarSteamID, "CAvatarImage_SetAvatarSteamID", true, NOSAVE | DEBUGVAR); + CVar(CBaseAnimating_DrawModel, "CBaseAnimating_DrawModel", true, NOSAVE | DEBUGVAR); + CVar(CBaseAnimating_DrawServerHitboxes, "CBaseAnimating_DrawServerHitboxes", true, NOSAVE | DEBUGVAR); + CVar(CBaseAnimating_InternalDrawModel, "CBaseAnimating_InternalDrawModel", true, NOSAVE | DEBUGVAR); CVar(CBaseAnimating_Interpolate, "CBaseAnimating_Interpolate", true, NOSAVE | DEBUGVAR); CVar(CBaseAnimating_MaintainSequenceTransitions, "CBaseAnimating_MaintainSequenceTransitions", true, NOSAVE | DEBUGVAR); CVar(CBaseAnimating_SetSequence, "CBaseAnimating_SetSequence", true, NOSAVE | DEBUGVAR); CVar(CBaseAnimating_SetupBones, "CBaseAnimating_SetupBones", true, NOSAVE | DEBUGVAR); CVar(CBaseAnimating_UpdateClientSideAnimation, "CBaseAnimating_UpdateClientSideAnimation", true, NOSAVE | DEBUGVAR); + CVar(CBaseCombatWeapon_ShouldDraw, "CBaseCombatWeapon_ShouldDraw", true, NOSAVE | DEBUGVAR); CVar(CBaseEntity_BaseInterpolatePart1, "CBaseEntity_BaseInterpolatePart1", true, NOSAVE | DEBUGVAR); CVar(CBaseEntity_EstimateAbsVelocity, "CBaseEntity_EstimateAbsVelocity", true, NOSAVE | DEBUGVAR); CVar(CBaseEntity_ResetLatched, "CBaseEntity_ResetLatched", true, NOSAVE | DEBUGVAR); CVar(CBaseEntity_SetAbsVelocity, "CBaseEntity_SetAbsVelocity", true, NOSAVE | DEBUGVAR); CVar(CBaseEntity_WorldSpaceCenter, "CBaseEntity_WorldSpaceCenter", true, NOSAVE | DEBUGVAR); CVar(CBaseHudChatLine_InsertAndColorizeText, "CBaseHudChatLine_InsertAndColorizeText", true, NOSAVE | DEBUGVAR); - CVar(CBasePlayer_CalcPlayerView, "CBasePlayer_CalcPlayerView", true, NOSAVE | DEBUGVAR); + CVar(CBasePlayer_CalcObserverView, "CBasePlayer_CalcObserverView", true, NOSAVE | DEBUGVAR); + CVar(CBasePlayer_CalcView, "CBasePlayer_CalcView", true, NOSAVE | DEBUGVAR); CVar(CBasePlayer_CalcViewModelView, "CBasePlayer_CalcViewModelView", true, NOSAVE | DEBUGVAR); + CVar(CBasePlayer_EyePosition, "CBasePlayer_EyePosition", true, NOSAVE | DEBUGVAR); CVar(CBasePlayer_ItemPostFrame, "CBasePlayer_ItemPostFrame", true, NOSAVE | DEBUGVAR); + CVar(CBasePlayer_ShouldDrawLocalPlayer, "CBasePlayer_ShouldDrawLocalPlayer", true, NOSAVE | DEBUGVAR); + CVar(CBasePlayer_ShouldDrawThisPlayer, "CBasePlayer_ShouldDrawThisPlayer", true, NOSAVE | DEBUGVAR); CVar(CBaseViewModel_ShouldFlipViewModel, "CBaseViewModel_ShouldFlipViewModel", true, NOSAVE | DEBUGVAR); CVar(Cbuf_ExecuteCommand, "Cbuf_ExecuteCommand", true, NOSAVE | DEBUGVAR); CVar(CClientModeShared_DoPostScreenSpaceEffects, "CClientModeShared_DoPostScreenSpaceEffects", true, NOSAVE | DEBUGVAR); CVar(CClientModeShared_OverrideView, "CClientModeShared_OverrideView", true, NOSAVE | DEBUGVAR); CVar(CClientModeShared_ShouldDrawViewModel, "CClientModeShared_ShouldDrawViewModel", true, NOSAVE | DEBUGVAR); + CVar(CClientScoreBoardDialog_NeedsUpdate, "CClientScoreBoardDialog_NeedsUpdate", true, NOSAVE | DEBUGVAR); CVar(CClientState_GetClientInterpAmount, "CClientState_GetClientInterpAmount", true, NOSAVE | DEBUGVAR); CVar(CClientState_ProcessFixAngle, "CClientState_ProcessFixAngle", true, NOSAVE | DEBUGVAR); CVar(CHLClient_CreateMove, "CHLClient_CreateMove", true, NOSAVE | DEBUGVAR); @@ -908,18 +919,26 @@ namespace Vars CVar(CInput_GetUserCmd, "CInput_GetUserCmd", true, NOSAVE | DEBUGVAR); CVar(CInput_ValidateUserCmd, "CInput_ValidateUserCmd", true, NOSAVE | DEBUGVAR); CVar(CInventoryManager_ShowItemsPickedUp, "CInventoryManager_ShowItemsPickedUp", true, NOSAVE | DEBUGVAR); + CVar(ClientModeTFNormal_BIsFriendOrPartyMember, "ClientModeTFNormal_BIsFriendOrPartyMember", true, NOSAVE | DEBUGVAR); CVar(CL_CheckForPureServerWhitelist, "CL_CheckForPureServerWhitelist", true, NOSAVE | DEBUGVAR); CVar(CL_Move, "CL_Move", true, NOSAVE | DEBUGVAR); CVar(CL_ProcessPacketEntities, "CL_ProcessPacketEntities", true, NOSAVE | DEBUGVAR); CVar(CL_ReadPackets, "CL_ReadPackets", true, NOSAVE | DEBUGVAR); - CVar(ClientModeTFNormal_BIsFriendOrPartyMember, "ClientModeTFNormal_BIsFriendOrPartyMember", true, NOSAVE | DEBUGVAR); - CVar(ClientModeTFNormal_UpdateSteamRichPresence, "ClientModeTFNormal_UpdateSteamRichPresence", true, NOSAVE | DEBUGVAR); CVar(CMatchInviteNotification_OnTick, "CMatchInviteNotification_OnTick", true, NOSAVE | DEBUGVAR); CVar(CMaterial_Uncache, "CMaterial_Uncache", true, NOSAVE | DEBUGVAR); + CVar(CM_BoxTrace, "CM_BoxTrace", true, NOSAVE | DEBUGVAR); + CVar(CM_ClipBoxToBrush_False, "CM_ClipBoxToBrush_False", true, NOSAVE | DEBUGVAR); + CVar(CM_ClipBoxToBrush_True, "CM_ClipBoxToBrush_True", true, NOSAVE | DEBUGVAR); + CVar(CM_TraceToLeaf_False, "CM_TraceToLeaf_False", true, NOSAVE | DEBUGVAR); + CVar(CM_TraceToLeaf_True, "CM_TraceToLeaf_True", true, NOSAVE | DEBUGVAR); CVar(CNetChannel_SendDatagram, "CNetChannel_SendDatagram", true, NOSAVE | DEBUGVAR); CVar(CNetChannel_SendNetMsg, "CNetChannel_SendNetMsg", true, NOSAVE | DEBUGVAR); CVar(COPRenderSprites_Render, "COPRenderSprites_Render", true, NOSAVE | DEBUGVAR); - CVar(CParticleProperty_Create, "CParticleProperty_Create", true, NOSAVE | DEBUGVAR); + CVar(COPRenderSprites_RenderSpriteCard, "COPRenderSprites_RenderSpriteCard", true, NOSAVE | DEBUGVAR); + CVar(COPRenderSprites_RenderTwoSequenceSpriteCard, "COPRenderSprites_RenderTwoSequenceSpriteCard", true, NOSAVE | DEBUGVAR); + CVar(CParticleProperty_Create_Name, "CParticleProperty_Create_Name", true, NOSAVE | DEBUGVAR); + CVar(CParticleProperty_Create_Point, "CParticleProperty_Create_Point", true, NOSAVE | DEBUGVAR); + CVar(CParticleProperty_AddControlPoint_Pointer, "CParticleProperty_AddControlPoint_Pointer", true, NOSAVE | DEBUGVAR); CVar(CPlayerResource_GetPlayerName, "CPlayerResource_GetPlayerName", true, NOSAVE | DEBUGVAR); CVar(CPrediction_RunSimulation, "CPrediction_RunSimulation", true, NOSAVE | DEBUGVAR); CVar(CRendering3dView_EnableWorldFog, "CRendering3dView_EnableWorldFog", true, NOSAVE | DEBUGVAR); @@ -932,39 +951,60 @@ namespace Vars CVar(CStudioRender_SetAlphaModulation, "CStudioRender_SetAlphaModulation", true, NOSAVE | DEBUGVAR); CVar(CStudioRender_SetColorModulation, "CStudioRender_SetColorModulation", true, NOSAVE | DEBUGVAR); CVar(CTFBadgePanel_SetupBadge, "CTFBadgePanel_SetupBadge", true, NOSAVE | DEBUGVAR); + //CVar(CTFBat_Wood_LaunchBall, "CTFBat_Wood_LaunchBall", true, NOSAVE | DEBUGVAR); + CVar(CTFClientScoreBoardDialog_OnCommand, "CTFClientScoreBoardDialog_OnCommand", true, NOSAVE | DEBUGVAR); CVar(CTFClientScoreBoardDialog_UpdatePlayerAvatar, "CTFClientScoreBoardDialog_UpdatePlayerAvatar", true, NOSAVE | DEBUGVAR); CVar(CTFGCClientSystem_UpdateAssignedLobby, "CTFGCClientSystem_UpdateAssignedLobby", true, NOSAVE | DEBUGVAR); CVar(CTFHudDeathNotice_AddAdditionalMsg, "CTFHudDeathNotice_AddAdditionalMsg", true, NOSAVE | DEBUGVAR); + CVar(CTFHudMannVsMachineScoreboard_UpdatePlayerAvatar, "CTFHudMannVsMachineScoreboard_UpdatePlayerAvatar", true, NOSAVE | DEBUGVAR); + CVar(CTFHudMatchStatus_UpdatePlayerAvatar, "CTFHudMatchStatus_UpdatePlayerAvatar", true, NOSAVE | DEBUGVAR); CVar(CTFInput_ApplyMouse, "CTFInput_ApplyMouse", true, NOSAVE | DEBUGVAR); - CVar(CTFPlayer_AvoidPlayers, "CTFPlayer_AvoidPlayers", true, NOSAVE | DEBUGVAR); - CVar(CTFPlayer_BRenderAsZombie, "CTFPlayer_BRenderAsZombie", true, NOSAVE | DEBUGVAR); - CVar(CTFPlayer_BuildTransformations, "CTFPlayer_BuildTransformations", true, NOSAVE | DEBUGVAR); - CVar(CTFPlayer_DoAnimationEvent, "CTFPlayer_DoAnimationEvent", true, NOSAVE | DEBUGVAR); - CVar(CTFPlayer_FireBullet, "CTFPlayer_FireBullet", true, NOSAVE | DEBUGVAR); - CVar(CTFPlayer_IsPlayerClass, "CTFPlayer_IsPlayerClass", true, NOSAVE | DEBUGVAR); - CVar(CTFPlayer_ShouldDraw, "CTFPlayer_ShouldDraw", true, NOSAVE | DEBUGVAR); - CVar(CTFPlayer_UpdateStepSound, "CTFPlayer_UpdateStepSound", true, NOSAVE | DEBUGVAR); + CVar(CTFInput_CAM_CapYaw, "CTFInput_CAM_CapYaw", true, NOSAVE | DEBUGVAR); + CVar(CTFInventoryManager_GetItemInLoadoutForClass, "CTFInventoryManager_GetItemInLoadoutForClass", true, NOSAVE | DEBUGVAR); + CVar(CTFMatchSummary_UpdatePlayerAvatar, "CTFMatchSummary_UpdatePlayerAvatar", true, NOSAVE | DEBUGVAR); + CVar(CTFPartyClient_RequestQueueForMatch, "CTFPartyClient_RequestQueueForMatch", true, NOSAVE | DEBUGVAR); CVar(CTFPlayerInventory_GetMaxItemCount, "CTFPlayerInventory_GetMaxItemCount", true, NOSAVE | DEBUGVAR); CVar(CTFPlayerInventory_VerifyChangedLoadoutsAreValid, "CTFPlayerInventory_VerifyChangedLoadoutsAreValid", true, NOSAVE | DEBUGVAR); CVar(CTFPlayerPanel_GetTeam, "CTFPlayerPanel_GetTeam", true, NOSAVE | DEBUGVAR); CVar(CTFPlayerShared_InCond, "CTFPlayerShared_InCond", true, NOSAVE | DEBUGVAR); CVar(CTFPlayerShared_IsPlayerDominated, "CTFPlayerShared_IsPlayerDominated", true, NOSAVE | DEBUGVAR); + CVar(CTFPlayer_AvoidPlayers, "CTFPlayer_AvoidPlayers", true, NOSAVE | DEBUGVAR); + CVar(CTFPlayer_BRenderAsZombie, "CTFPlayer_BRenderAsZombie", true, NOSAVE | DEBUGVAR); + CVar(CTFPlayer_BuildTransformations, "CTFPlayer_BuildTransformations", true, NOSAVE | DEBUGVAR); + CVar(CTFPlayer_DoAnimationEvent, "CTFPlayer_DoAnimationEvent", true, NOSAVE | DEBUGVAR); + CVar(CTFPlayer_EyeAngles, "CTFPlayer_EyeAngles", true, NOSAVE | DEBUGVAR); + CVar(CTFPlayer_FireBullet, "CTFPlayer_FireBullet", true, NOSAVE | DEBUGVAR); + CVar(CTFPlayer_GetMinFOV, "CTFPlayer_GetMinFOV", true, NOSAVE | DEBUGVAR); + CVar(CTFPlayer_IsPlayerClass, "CTFPlayer_IsPlayerClass", true, NOSAVE | DEBUGVAR); + CVar(CTFPlayer_ShouldDraw, "CTFPlayer_ShouldDraw", true, NOSAVE | DEBUGVAR); + CVar(CTFPlayer_UpdateStepSound, "CTFPlayer_UpdateStepSound", true, NOSAVE | DEBUGVAR); CVar(CTFRagdoll_CreateTFRagdoll, "CTFRagdoll_CreateTFRagdoll", true, NOSAVE | DEBUGVAR); + CVar(CTFRocketLauncher_CheckReloadMisfire, "CTFRocketLauncher_CheckReloadMisfire", true, NOSAVE | DEBUGVAR); + CVar(CTFRocketLauncher_FireProjectile, "CTFRocketLauncher_FireProjectile", true, NOSAVE | DEBUGVAR); + CVar(CTFTeamStatus_OnTick, "CTFTeamStatus_OnTick", true, NOSAVE | DEBUGVAR); CVar(CTFWeaponBase_CalcIsAttackCritical, "CTFWeaponBase_CalcIsAttackCritical", true, NOSAVE | DEBUGVAR); + CVar(CTFWeaponBase_CanFireRandomCriticalShot, "CTFWeaponBase_CanFireRandomCriticalShot", true, NOSAVE | DEBUGVAR); CVar(CTFWeaponBase_GetShootSound, "CTFWeaponBase_GetShootSound", true, NOSAVE | DEBUGVAR); CVar(CThirdPersonManager_Update, "CThirdPersonManager_Update", true, NOSAVE | DEBUGVAR); + CVar(CVGui_RunFrame, "CVGui_RunFrame", true, NOSAVE | DEBUGVAR); CVar(CViewRender_DrawUnderwaterOverlay, "CViewRender_DrawUnderwaterOverlay", true, NOSAVE | DEBUGVAR); + CVar(CViewRender_DrawViewModels, "CViewRender_DrawViewModels", true, NOSAVE | DEBUGVAR); CVar(CViewRender_LevelInit, "CViewRender_LevelInit", true, NOSAVE | DEBUGVAR); CVar(CViewRender_PerformScreenOverlay, "CViewRender_PerformScreenOverlay", true, NOSAVE | DEBUGVAR); CVar(CViewRender_RenderView, "CViewRender_RenderView", true, NOSAVE | DEBUGVAR); + CVar(CVoiceStatus_IsPlayerBlocked, "CVoiceStatus_IsPlayerBlocked", true, NOSAVE | DEBUGVAR); + CVar(CWeaponMedigun_PrimaryAttack, "CWeaponMedigun_PrimaryAttack", true, NOSAVE | DEBUGVAR); CVar(DoEnginePostProcessing, "DoEnginePostProcessing", true, NOSAVE | DEBUGVAR); CVar(DSP_Process, "DSP_Process", true, NOSAVE | DEBUGVAR); CVar(FX_FireBullets, "FX_FireBullets", true, NOSAVE | DEBUGVAR); + CVar(GenerateEquipRegionConflictMask, "GenerateEquipRegionConflictMask", true, NOSAVE | DEBUGVAR); CVar(GetClientInterpAmount, "GetClientInterpAmount", true, NOSAVE | DEBUGVAR); CVar(HostState_Shutdown, "HostState_Shutdown", true, NOSAVE | DEBUGVAR); + CVar(HostState_Restart, "HostState_Restart", true, NOSAVE | DEBUGVAR); CVar(IEngineTrace_SetTraceEntity, "IEngineTrace_SetTraceEntity", true, NOSAVE | DEBUGVAR); CVar(IEngineTrace_TraceRay, "IEngineTrace_TraceRay", true, NOSAVE | DEBUGVAR); CVar(IEngineVGui_Paint, "IEngineVGui_Paint", true, NOSAVE | DEBUGVAR); + CVar(IMaterialSystem_FindTexture, "IMaterialSystem_FindTexture", true, NOSAVE | DEBUGVAR); CVar(IMatSystemSurface_OnScreenSizeChanged, "IMatSystemSurface_OnScreenSizeChanged", true, NOSAVE | DEBUGVAR); CVar(IPanel_PaintTraverse, "IPanel_PaintTraverse", true, NOSAVE | DEBUGVAR); CVar(ISteamFriends_GetFriendPersonaName, "ISteamFriends_GetFriendPersonaName", true, NOSAVE | DEBUGVAR); @@ -973,11 +1013,16 @@ namespace Vars CVar(IVModelRender_DrawModelExecute, "IVModelRender_DrawModelExecute", true, NOSAVE | DEBUGVAR); CVar(IVModelRender_ForcedMaterialOverride, "IVModelRender_ForcedMaterialOverride", true, NOSAVE | DEBUGVAR); CVar(KeyValues_SetInt, "KeyValues_SetInt", true, NOSAVE | DEBUGVAR); + CVar(NDebugOverlay_BoxAngles, "NDebugOverlay_BoxAngles", true, NOSAVE | DEBUGVAR); CVar(NotificationQueue_Add, "NotificationQueue_Add", true, NOSAVE | DEBUGVAR); - CVar(R_DrawSkyBox, "R_DrawSkyBox", true, NOSAVE | DEBUGVAR); CVar(RecvProxy_SimulationTime, "RecvProxy_SimulationTime", true, NOSAVE | DEBUGVAR); + CVar(R_DrawSkyBox, "R_DrawSkyBox", true, NOSAVE | DEBUGVAR); + CVar(SectionedListPanel_SetItemFgColor, "SectionedListPanel_SetItemFgColor", true, NOSAVE | DEBUGVAR); + //CVar(S_StartDynamicSound, "S_StartDynamicSound", true, NOSAVE | DEBUGVAR); + CVar(S_StartSound, "S_StartSound", true, NOSAVE | DEBUGVAR); CVar(TF_IsHolidayActive, "TF_IsHolidayActive", true, NOSAVE | DEBUGVAR); CVar(VGuiMenuBuilder_AddMenuItem, "VGuiMenuBuilder_AddMenuItem", true, NOSAVE | DEBUGVAR); + CVar(vgui_Panel_SetBgColor, "vgui_Panel_SetBgColor", true, NOSAVE | DEBUGVAR); NAMESPACE_END(Hooks); #endif } \ No newline at end of file