improve clean screenshot for reveal/color scoreboard, fov, and thirdperson

preferential changes
fixes
This commit is contained in:
rei-2
2025-12-19 21:19:48 -05:00
parent 398e61d094
commit dfc64ee5fb
68 changed files with 557 additions and 293 deletions
-1
View File
@@ -1051,7 +1051,6 @@
<ClCompile Include="src\Hooks\ISteamNetworkingUtils_GetPingToDataCenter.cpp" />
<ClCompile Include="src\Hooks\IVModelRender_DrawModelExecute.cpp" />
<ClCompile Include="src\Hooks\IVModelRender_ForcedMaterialOverride.cpp" />
<ClCompile Include="src\Hooks\KeyValues_SetInt.cpp" />
<ClCompile Include="src\Hooks\NotificationQueue_Add.cpp" />
<ClCompile Include="src\Hooks\RecvProxy_SimulationTime.cpp" />
<ClCompile Include="src\Hooks\R_DrawSkyBox.cpp" />
-1
View File
@@ -175,7 +175,6 @@
<ClCompile Include="src\Hooks\ISteamNetworkingUtils_GetPingToDataCenter.cpp" />
<ClCompile Include="src\Hooks\IVModelRender_DrawModelExecute.cpp" />
<ClCompile Include="src\Hooks\IVModelRender_ForcedMaterialOverride.cpp" />
<ClCompile Include="src\Hooks\KeyValues_SetInt.cpp" />
<ClCompile Include="src\Hooks\NotificationQueue_Add.cpp" />
<ClCompile Include="src\Hooks\R_DrawSkyBox.cpp" />
<ClCompile Include="src\Hooks\RecvProxy_SimulationTime.cpp" />
+4 -4
View File
@@ -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);
}
+1 -1
View File
@@ -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);
}
+1
View File
@@ -19,6 +19,7 @@ public:
bool m_bRan = false;
bool m_bRunningSecondary = false;
float m_flFOV = 0.f;
DrawPath_t m_tPath = {};
};
+27 -17
View File
@@ -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<t>(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);
}
}
+5 -5
View File
@@ -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);
}
}
}
+10 -4
View File
@@ -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);
}
}
+23 -5
View File
@@ -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;
@@ -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)
{
@@ -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);
@@ -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<const Vec3&>() : CALL_ORIGINAL(rcx);
if (dwRetAddr == dwDesired && Vars::Visuals::Effects::DrawDamageNumbersThroughWalls.Value)
return S::MainViewOrigin.Call<const Vec3&>();
return CALL_ORIGINAL(rcx);
}
@@ -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
+2 -2
View File
@@ -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)
@@ -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;
@@ -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();
@@ -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)
@@ -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);
}
@@ -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();
@@ -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);
}
@@ -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
+10 -5
View File
@@ -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
@@ -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();
@@ -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);
@@ -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;
@@ -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
@@ -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);
@@ -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);
}
+1 -1
View File
@@ -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
@@ -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);
}
@@ -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);
}
+66 -40
View File
@@ -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<int*>(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<void**>(uintptr_t(rcx) + 688);
pHealthBar && U::Memory.CallVirtual<34, bool>(pHealthBar) != (iReturn == iLocalTeam))
*reinterpret_cast<int*>(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<int*>(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<void>(s_pTeamStatus);
CALL_ORIGINAL(rcx);
}
+9 -9
View File
@@ -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:
@@ -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<uintptr_t*>(_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<uintptr_t*>(_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);
}
@@ -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);
@@ -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;
}
@@ -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);
+7 -7
View File
@@ -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
@@ -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())
@@ -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<CTFWeaponBase*>(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<CTFWeaponBase*>(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<CTFWeaponBase*>(rcx);
pWeapon->CalcIsAttackCritical();
@@ -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)
@@ -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);
}
@@ -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);
}
+1 -1
View File
@@ -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);
@@ -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<CWeaponMedigun*>(rcx);
auto pOwner = pWeapon->m_hOwner()->As<CTFPlayer>();
if (!pOwner || !pOwner->m_pCurrentCommand())
@@ -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);
}
+1 -1
View File
@@ -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);
}
+1 -1
View File
@@ -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())
+5 -5
View File
@@ -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;
}
+1 -1
View File
@@ -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
@@ -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
+2 -2
View File
@@ -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();
@@ -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());
@@ -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()))
{
@@ -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
@@ -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);
-23
View File
@@ -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<uintptr_t*>(_AddressOfReturnAddress()) = dwJump;
}
+1 -1
View File
@@ -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");
+5 -2
View File
@@ -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);
}
@@ -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
+1 -1
View File
@@ -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);
+32 -1
View File
@@ -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,
@@ -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)
@@ -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;
@@ -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;
+19 -14
View File
@@ -126,20 +126,6 @@ std::string SDK::GetTime()
return buffer;
}
HWND SDK::GetTeamFortressWindow()
{
static HWND hWindow = nullptr;
if (!hWindow)
EnumWindows(TeamFortressWindow, reinterpret_cast<LPARAM>(&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<LPARAM>(&hWindow));
return hWindow;
}
bool SDK::IsGameWindowInFocus()
{
HWND hWindow = GetTeamFortressWindow();
return hWindow == GetForegroundWindow() || !hWindow;
}
double SDK::PlatFloatTime()
{
static auto Plat_FloatTime = U::Memory.GetModuleExport<double(*)()>("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();
}
+8 -3
View File
@@ -21,6 +21,9 @@
#include "../Utils/Macros/Macros.h"
#include <intrin.h>
#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();
}
+60 -15
View File
@@ -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
}