change other party tag appearance, display in esp

misc fixes/backend changes
This commit is contained in:
rei-2
2025-11-07 21:59:39 -05:00
parent 4668497939
commit dd3ad9ca58
36 changed files with 154 additions and 174 deletions
+2 -3
View File
@@ -1077,7 +1077,7 @@
<ClCompile Include="src\SDK\Helpers\Fonts\Fonts.cpp" />
<ClCompile Include="src\SDK\Helpers\TraceFilters\TraceFilters.cpp" />
<ClCompile Include="src\SDK\SDK.cpp" />
<ClCompile Include="src\Utils\ConVars\ConVars.cpp" />
<ClCompile Include="src\SDK\Helpers\ConVars\ConVars.cpp" />
<ClCompile Include="src\Utils\CrashLog\CrashLog.cpp" />
<ClCompile Include="src\Utils\Hooks\Hooks.cpp" />
<ClCompile Include="src\Utils\Interfaces\Interfaces.cpp" />
@@ -1451,14 +1451,13 @@
<ClInclude Include="src\SDK\Events\Events.h" />
<ClInclude Include="src\SDK\Globals.h" />
<ClInclude Include="src\SDK\Helpers\Draw\Draw.h" />
<ClInclude Include="src\SDK\Helpers\Draw\Icons.h" />
<ClInclude Include="src\SDK\Helpers\Entities\Entities.h" />
<ClInclude Include="src\SDK\Helpers\Fonts\Fonts.h" />
<ClInclude Include="src\SDK\Helpers\Particles\Particles.h" />
<ClInclude Include="src\SDK\Helpers\TraceFilters\TraceFilters.h" />
<ClInclude Include="src\SDK\SDK.h" />
<ClInclude Include="src\SDK\Vars.h" />
<ClInclude Include="src\Utils\ConVars\ConVars.h" />
<ClInclude Include="src\SDK\Helpers\ConVars\ConVars.h" />
<ClInclude Include="src\Utils\CrashLog\CrashLog.h" />
<ClInclude Include="src\Utils\Macros\Macros.h" />
<ClInclude Include="src\Utils\Hash\FNV1A.h" />
+2 -3
View File
@@ -39,7 +39,7 @@
<ClCompile Include="include\MinHook\hook.c" />
<ClCompile Include="include\MinHook\trampoline.c" />
<ClCompile Include="src\SDK\SDK.cpp" />
<ClCompile Include="src\Utils\ConVars\ConVars.cpp" />
<ClCompile Include="src\SDK\Helpers\ConVars\ConVars.cpp" />
<ClCompile Include="src\Features\Commands\Commands.cpp" />
<ClCompile Include="src\Features\ImGui\Render.cpp" />
<ClCompile Include="src\Features\Aimbot\Aimbot.cpp" />
@@ -313,7 +313,6 @@
<ClInclude Include="src\SDK\Definitions\Interfaces.h" />
<ClInclude Include="src\SDK\Definitions\Types.h" />
<ClInclude Include="src\SDK\Helpers\Draw\Draw.h" />
<ClInclude Include="src\SDK\Helpers\Draw\Icons.h" />
<ClInclude Include="src\SDK\Helpers\Entities\Entities.h" />
<ClInclude Include="src\SDK\Helpers\Fonts\Fonts.h" />
<ClInclude Include="src\SDK\Globals.h" />
@@ -346,7 +345,7 @@
<ClInclude Include="include\MinHook\buffer.h" />
<ClInclude Include="include\MinHook\MinHook.h" />
<ClInclude Include="include\MinHook\trampoline.h" />
<ClInclude Include="src\Utils\ConVars\ConVars.h" />
<ClInclude Include="src\SDK\Helpers\ConVars\ConVars.h" />
<ClInclude Include="src\Features\Commands\Commands.h" />
<ClInclude Include="src\SDK\Definitions\Interfaces\CTFPartyClient.h" />
<ClInclude Include="src\SDK\Definitions\Steam\ISteamController.h" />
+6 -6
View File
@@ -28,7 +28,7 @@ static inline std::string GetProcessName(DWORD dwProcessID)
static inline bool CheckDXLevel()
{
auto mat_dxlevel = U::ConVars.FindVar("mat_dxlevel");
auto mat_dxlevel = H::ConVars.FindVar("mat_dxlevel");
if (mat_dxlevel->GetInt() < 90)
{
//const char* sMessage = "You are running with graphics options that Amalgam does not support. -dxlevel must be at least 90.";
@@ -83,7 +83,7 @@ void CCore::Load()
Sleep(500), flTime += 0.5f;
if (m_bUnload = m_bFailed = flTime >= 60.f)
{
AppendFailText(std::format("Failed to load in time ({:#x}, {:#x})", uSignature, uintptr_t(hWindow)).c_str());
AppendFailText(std::format("Failed to load in time:\n {:#x}\n {:#x}", uSignature, uintptr_t(hWindow)).c_str());
return;
}
if (m_bUnload = m_bFailed = U::KeyHandler.Down(VK_F11, true))
@@ -99,7 +99,7 @@ void CCore::Load()
if (m_bUnload = m_bFailed2 = !U::Hooks.Initialize() || !U::BytePatches.Initialize() || !H::Events.Initialize())
return;
F::Materials.LoadMaterials();
U::ConVars.Unlock();
H::ConVars.Unlock();
F::Configs.LoadConfig(F::Configs.m_sCurrentConfig, false);
@@ -142,12 +142,12 @@ void CCore::Unload()
pLocal->ThirdPersonSwitch();
}
}
U::ConVars.FindVar("cl_wpn_sway_interp")->SetValue(0.f);
U::ConVars.FindVar("cl_wpn_sway_scale")->SetValue(0.f);
H::ConVars.FindVar("cl_wpn_sway_interp")->SetValue(0.f);
H::ConVars.FindVar("cl_wpn_sway_scale")->SetValue(0.f);
Sleep(250);
F::EnginePrediction.Unload();
U::ConVars.Restore();
H::ConVars.Restore();
F::Materials.UnloadMaterials();
if (m_bFailed2)
@@ -274,7 +274,7 @@ int CAimbotGlobal::GetPriority(int iIndex)
bool CAimbotGlobal::FriendlyFire()
{
static auto mp_friendlyfire = U::ConVars.FindVar("mp_friendlyfire");
static auto mp_friendlyfire = H::ConVars.FindVar("mp_friendlyfire");
return mp_friendlyfire->GetBool();
}
@@ -669,7 +669,7 @@ bool CAimbotHitscan::Aim(Vec3 vCurAngle, Vec3 vToAngle, Vec3& vOut, int iMethod)
// assume angle calculated outside with other overload
void CAimbotHitscan::Aim(CUserCmd* pCmd, Vec3& vAngle, int iMethod)
{
bool bUnsure = F::Ticks.IsTimingUnsure() || F::Ticks.GetTicks(H::Entities.GetWeapon());
bool bUnsure = F::Ticks.IsTimingUnsure();
switch (iMethod)
{
case Vars::Aimbot::General::AimTypeEnum::Plain:
@@ -468,7 +468,7 @@ bool CAimbotMelee::Aim(Vec3 vCurAngle, Vec3 vToAngle, Vec3& vOut, int iMethod)
// assume angle calculated outside with other overload
void CAimbotMelee::Aim(CUserCmd* pCmd, Vec3& vAngle, int iMethod)
{
bool bUnsure = F::Ticks.IsTimingUnsure() || F::Ticks.GetTicks(H::Entities.GetWeapon());
bool bUnsure = F::Ticks.IsTimingUnsure();
switch (iMethod)
{
case Vars::Aimbot::General::AimTypeEnum::Plain:
@@ -629,7 +629,7 @@ bool CAimbotMelee::FindNearestBuildPoint(CBaseObject* pBuilding, CTFPlayer* pLoc
bool bFoundPoint = false;
m_vEyePos = pLocal->GetShootPos();
static auto tf_obj_max_attach_dist = U::ConVars.FindVar("tf_obj_max_attach_dist");
static auto tf_obj_max_attach_dist = H::ConVars.FindVar("tf_obj_max_attach_dist");
float flNearestPoint = tf_obj_max_attach_dist->GetFloat();
for (int i = 0; i < pBuilding->GetNumBuildPoints(); i++)
@@ -282,7 +282,7 @@ static inline float PrimeTime(CTFWeaponBase* pWeapon)
{
if (Vars::Aimbot::Projectile::Modifiers.Value & Vars::Aimbot::Projectile::ModifiersEnum::UsePrimeTime && pWeapon->GetWeaponID() == TF_WEAPON_PIPEBOMBLAUNCHER)
{
static auto tf_grenadelauncher_livetime = U::ConVars.FindVar("tf_grenadelauncher_livetime");
static auto tf_grenadelauncher_livetime = H::ConVars.FindVar("tf_grenadelauncher_livetime");
const float flLiveTime = tf_grenadelauncher_livetime->GetFloat();
return SDK::AttribHookValue(flLiveTime, "sticky_arm_time", pWeapon);
}
@@ -1630,7 +1630,7 @@ bool CAimbotProjectile::Aim(Vec3 vCurAngle, Vec3 vToAngle, Vec3& vOut, int iMeth
// assume angle calculated outside with other overload
void CAimbotProjectile::Aim(CUserCmd* pCmd, Vec3& vAngle, int iMethod)
{
bool bUnsure = F::Ticks.IsTimingUnsure() || F::Ticks.GetTicks(H::Entities.GetWeapon());
bool bUnsure = F::Ticks.IsTimingUnsure();
switch (iMethod)
{
case Vars::Aimbot::General::AimTypeEnum::Plain:
@@ -1746,7 +1746,7 @@ bool CAimbotProjectile::RunMain(CTFPlayer* pLocal, CTFWeaponBase* pWeapon, CUser
if (F::AimbotGlobal.ShouldHoldAttack(pWeapon))
pCmd->buttons |= IN_ATTACK;
if (!Vars::Aimbot::General::AimType.Value
|| !F::AimbotGlobal.ShouldAim() && nWeaponID != TF_WEAPON_PIPEBOMBLAUNCHER && nWeaponID != TF_WEAPON_CANNON && nWeaponID != TF_WEAPON_FLAMETHROWER)
|| !F::AimbotGlobal.ShouldAim() && nWeaponID != TF_WEAPON_FLAMETHROWER)
return false;
auto vTargets = SortTargets(pLocal, pWeapon);
@@ -53,7 +53,7 @@ void CAutoAirblast::Run(CTFPlayer* pLocal, CTFWeaponBase* pWeapon, CUserCmd* pCm
if (iWeaponID != TF_WEAPON_FLAMETHROWER && iWeaponID != TF_WEAPON_FLAME_BALL || SDK::AttribHookValue(0, "airblast_disabled", pWeapon))
return;
static auto tf_flamethrower_burstammo = U::ConVars.FindVar("tf_flamethrower_burstammo");
static auto tf_flamethrower_burstammo = H::ConVars.FindVar("tf_flamethrower_burstammo");
int iAmmoPerShot = tf_flamethrower_burstammo->GetInt() * SDK::AttribHookValue(1, "mult_airblast_cost", pWeapon);
int iAmmo = pLocal->GetAmmoCount(pWeapon->m_iPrimaryAmmoType());
int iBuffType = SDK::AttribHookValue(0, "set_buff_type", pWeapon);
@@ -48,9 +48,9 @@ static inline bool GetRadius(EntityEnum::EntityEnum iGroup, CBaseEntity* pProjec
flRadius *= 146.f;
if (!pPipebomb->m_bTouched())
{
static auto tf_grenadelauncher_livetime = U::ConVars.FindVar("tf_grenadelauncher_livetime");
static auto tf_sticky_radius_ramp_time = U::ConVars.FindVar("tf_sticky_radius_ramp_time");
static auto tf_sticky_airdet_radius = U::ConVars.FindVar("tf_sticky_airdet_radius");
static auto tf_grenadelauncher_livetime = H::ConVars.FindVar("tf_grenadelauncher_livetime");
static auto tf_sticky_radius_ramp_time = H::ConVars.FindVar("tf_sticky_radius_ramp_time");
static auto tf_sticky_airdet_radius = H::ConVars.FindVar("tf_sticky_airdet_radius");
float flLiveTime = tf_grenadelauncher_livetime->GetFloat();
float flRampTime = tf_sticky_radius_ramp_time->GetFloat();
float flAirdetRadius = tf_sticky_airdet_radius->GetFloat();
+3 -3
View File
@@ -249,7 +249,7 @@ void CBacktrack::MakeRecords()
{
const Vec3 vDelta = tCurRecord.m_vOrigin - pLastRecord->m_vOrigin;
static auto sv_lagcompensation_teleport_dist = U::ConVars.FindVar("sv_lagcompensation_teleport_dist");
static auto sv_lagcompensation_teleport_dist = H::ConVars.FindVar("sv_lagcompensation_teleport_dist");
const float flDist = powf(sv_lagcompensation_teleport_dist->GetFloat(), 2.f);
if (vDelta.Length2DSqr() > flDist)
{
@@ -320,7 +320,7 @@ void CBacktrack::Store()
if (!I::EngineClient->IsInGame())
return;
static auto sv_maxunlag = U::ConVars.FindVar("sv_maxunlag");
static auto sv_maxunlag = H::ConVars.FindVar("sv_maxunlag");
m_flMaxUnlag = sv_maxunlag->GetFloat();
MakeRecords();
@@ -362,7 +362,7 @@ void CBacktrack::AdjustPing(CNetChannel* pNetChan)
if (!pLocal || !pLocal->m_iClass())
return 0.f;
static auto host_timescale = U::ConVars.FindVar("host_timescale");
static auto host_timescale = H::ConVars.FindVar("host_timescale");
float flTimescale = host_timescale->GetFloat();
static float flStaticReal = 0.f;
+1 -1
View File
@@ -106,7 +106,7 @@ void CCritHack::UpdateWeaponInfo(CTFPlayer* pLocal, CTFWeaponBase* pWeapon)
if (pWeapon == pOldWeapon && flBucket == flLastBucket && iCritChecks == iLastCritChecks && iCritSeedRequests == iLastCritSeedRequests)
return;
static auto tf_weapon_criticals_bucket_cap = U::ConVars.FindVar("tf_weapon_criticals_bucket_cap");
static auto tf_weapon_criticals_bucket_cap = H::ConVars.FindVar("tf_weapon_criticals_bucket_cap");
const float flBucketCap = tf_weapon_criticals_bucket_cap->GetFloat();
bool bRapidFire = pWeapon->IsRapidFire();
float flFireRate = pWeapon->GetFireRate();
+16 -16
View File
@@ -1248,23 +1248,14 @@ void CMenu::MenuLogs(int iTab)
const auto& vPlayers = F::PlayerUtils.m_vPlayerCache;
std::unordered_map<uint64_t, std::vector<const ListPlayer*>> mParties = {};
std::unordered_map<uint64_t, float> mHues = {}; // don't just shift based on party id in the case that it will be similar
int iPartyCount = 0;
for (auto& tPlayer : vPlayers)
{
if (tPlayer.m_iParty)
{
mParties[tPlayer.m_iParty].push_back(&tPlayer);
}
for (auto it = mParties.begin(); it != mParties.end();)
{
if (it->second.size() > 1)
it++;
else
it = mParties.erase(it);
}
{
float flParties = mParties.size() + 1 - mParties.contains(1);
int i = 0; for (auto& [iParty, _] : mParties)
mHues[iParty] = iParty != 1 ? 360 * ++i / flParties : 0;
iPartyCount = std::max(iPartyCount, tPlayer.m_iParty);
}
}
auto getTeamColor = [&](int iTeam, bool bAlive)
@@ -1318,10 +1309,19 @@ void CMenu::MenuLogs(int iTab)
{
std::vector<PriorityLabel_t> vLabels = {};
std::vector<std::pair<PriorityLabel_t*, int>> vTags = {};
if (mHues.contains(tPlayer.m_iParty))
vLabels.emplace_back("Party", F::PlayerUtils.m_vTags[F::PlayerUtils.TagToIndex(PARTY_TAG)].m_tColor.HueShift(mHues[tPlayer.m_iParty]));
if (int iParty = tPlayer.m_iParty)
{
auto pTag = &F::PlayerUtils.m_vTags[F::PlayerUtils.TagToIndex(PARTY_TAG)];
if (!--iParty)
vTags.emplace_back(pTag, 0);
else
vLabels.emplace_back(std::format("{}: {}", pTag->m_sName, iParty), pTag->m_tColor.HueShift(iParty * 360.f / iPartyCount));
}
if (tPlayer.m_bF2P)
vTags.emplace_back(&F::PlayerUtils.m_vTags[F::PlayerUtils.TagToIndex(F2P_TAG)], 0);
{
auto pTag = &F::PlayerUtils.m_vTags[F::PlayerUtils.TagToIndex(F2P_TAG)];
vTags.emplace_back(pTag, 0);
}
for (auto& iID : F::PlayerUtils.GetPlayerTags(tPlayer.m_uAccountID))
{
if (auto pTag = F::PlayerUtils.GetTag(iID))
+6 -6
View File
@@ -111,7 +111,7 @@ void CMisc::AutoStrafe(CTFPlayer* pLocal, CUserCmd* pCmd)
{
case Vars::Misc::Movement::AutoStrafeEnum::Legit:
{
static auto cl_sidespeed = U::ConVars.FindVar("cl_sidespeed");
static auto cl_sidespeed = H::ConVars.FindVar("cl_sidespeed");
const float flSideSpeed = cl_sidespeed->GetFloat();
if (pCmd->mousedx)
@@ -232,7 +232,7 @@ void CMisc::NoisemakerSpam(CTFPlayer* pLocal)
void CMisc::CheatsBypass()
{
static bool bCheatSet = false;
static auto sv_cheats = U::ConVars.FindVar("sv_cheats");
static auto sv_cheats = H::ConVars.FindVar("sv_cheats");
if (Vars::Misc::Exploits::CheatsBypass.Value)
{
sv_cheats->m_nValue = 1;
@@ -247,8 +247,8 @@ void CMisc::CheatsBypass()
void CMisc::WeaponSway()
{
static auto cl_wpn_sway_interp = U::ConVars.FindVar("cl_wpn_sway_interp");
static auto cl_wpn_sway_scale = U::ConVars.FindVar("cl_wpn_sway_scale");
static auto cl_wpn_sway_interp = H::ConVars.FindVar("cl_wpn_sway_interp");
static auto cl_wpn_sway_scale = H::ConVars.FindVar("cl_wpn_sway_scale");
bool bSway = Vars::Visuals::Viewmodel::SwayInterp.Value || Vars::Visuals::Viewmodel::SwayScale.Value;
cl_wpn_sway_interp->SetValue(bSway ? Vars::Visuals::Viewmodel::SwayInterp.Value : 0.f);
@@ -530,7 +530,7 @@ void CMisc::PingReducer()
if (!tTimer.Run(0.1f))
return;
static auto cl_cmdrate = U::ConVars.FindVar("cl_cmdrate");
static auto cl_cmdrate = H::ConVars.FindVar("cl_cmdrate");
int iTarget = Vars::Misc::Exploits::PingReducer.Value ? Vars::Misc::Exploits::PingTarget.Value : cl_cmdrate->GetInt();
if (m_iWishCmdrate != iTarget)
{
@@ -544,7 +544,7 @@ void CMisc::PingReducer()
}
}
static auto sv_maxupdaterate = U::ConVars.FindVar("sv_maxupdaterate"); // force highest cl_updaterate command possible
static auto sv_maxupdaterate = H::ConVars.FindVar("sv_maxupdaterate"); // force highest cl_updaterate command possible
iTarget = sv_maxupdaterate->GetInt();
if (m_iWishUpdaterate != iTarget)
{
@@ -30,7 +30,7 @@ bool CNoSpreadHitscan::ShouldRun(CTFPlayer* pLocal, CTFWeaponBase* pWeapon, bool
int CNoSpreadHitscan::GetSeed(CUserCmd* pCmd)
{
static auto sv_usercmd_custom_random_seed = U::ConVars.FindVar("sv_usercmd_custom_random_seed");
static auto sv_usercmd_custom_random_seed = H::ConVars.FindVar("sv_usercmd_custom_random_seed");
if (!sv_usercmd_custom_random_seed->GetBool())
return pCmd->random_seed & 255;
@@ -36,7 +36,7 @@ bool CFakeLag::IsAllowed(CTFPlayer* pLocal, CTFWeaponBase* pWeapon, CUserCmd* pC
return I::ClientState->chokedcommands < m_iGoal;
case Vars::Fakelag::FakelagEnum::Adaptive:
{
static auto sv_lagcompensation_teleport_dist = U::ConVars.FindVar("sv_lagcompensation_teleport_dist");
static auto sv_lagcompensation_teleport_dist = H::ConVars.FindVar("sv_lagcompensation_teleport_dist");
const float flDist = powf(sv_lagcompensation_teleport_dist->GetFloat(), 2.f);
return (m_vLastPosition - pLocal->m_vecOrigin()).Length2DSqr() < flDist;
}
+1 -1
View File
@@ -23,7 +23,7 @@ struct ListPlayer
bool m_bParty;
bool m_bF2P;
int m_iLevel;
uint64_t m_iParty;
int m_iParty;
};
struct PriorityLabel_t
@@ -300,7 +300,7 @@ bool CMovementSimulation::SetupMoveData(MoveStorage& tStorage)
static inline float GetGravity()
{
static auto sv_gravity = U::ConVars.FindVar("sv_gravity");
static auto sv_gravity = H::ConVars.FindVar("sv_gravity");
return sv_gravity->GetFloat();
}
@@ -310,7 +310,7 @@ static inline float GetFrictionScale(float flVelocityXY, float flTurn, float flV
if (0.f >= flVelocityZ || flVelocityZ > 250.f)
return 1.f;
static auto sv_airaccelerate = U::ConVars.FindVar("sv_airaccelerate");
static auto sv_airaccelerate = H::ConVars.FindVar("sv_airaccelerate");
float flScale = std::max(sv_airaccelerate->GetFloat(), 1.f);
flMin *= flScale, flMax *= flScale;
@@ -8,7 +8,7 @@ bool CProjectileSimulation::GetInfoMain(CTFPlayer* pPlayer, CTFWeaponBase* pWeap
if (!pPlayer || !pPlayer->IsAlive() || pPlayer->IsAGhost() || pPlayer->IsTaunting() || !pWeapon)
return false;
static auto sv_gravity = U::ConVars.FindVar("sv_gravity");
static auto sv_gravity = H::ConVars.FindVar("sv_gravity");
float flGravity = sv_gravity->GetFloat() / 800.f;
bool bDucking = pPlayer->m_fFlags() & FL_DUCKING;
@@ -179,7 +179,7 @@ bool CProjectileSimulation::GetInfoMain(CTFPlayer* pPlayer, CTFWeaponBase* pWeap
}
case TF_WEAPON_FLAMETHROWER:
{
static auto tf_flamethrower_boxsize = U::ConVars.FindVar("tf_flamethrower_boxsize");
static auto tf_flamethrower_boxsize = H::ConVars.FindVar("tf_flamethrower_boxsize");
const float flHull = tf_flamethrower_boxsize->GetFloat();
SDK::GetProjectileFireSetup(pPlayer, vAngles, { 40.f, 5.f, 0.f }, vPos, vAngle, true, bQuick, false);
@@ -204,7 +204,7 @@ bool CProjectileSimulation::GetInfoMain(CTFPlayer* pPlayer, CTFWeaponBase* pWeap
case TF_WEAPON_BAT_WOOD:
case TF_WEAPON_BAT_GIFTWRAP:
{
static auto tf_scout_stunball_base_speed = U::ConVars.FindVar("tf_scout_stunball_base_speed");
static auto tf_scout_stunball_base_speed = H::ConVars.FindVar("tf_scout_stunball_base_speed");
const bool bWrapAssassin = pWeapon->GetWeaponID() == TF_WEAPON_BAT_GIFTWRAP;
SDK::GetProjectileFireSetup(pPlayer, vAngles, { 0.f, 0.f, 0.f }, vPos, vAngle, true, bQuick);
@@ -239,8 +239,8 @@ bool CProjectileSimulation::GetInfoMain(CTFPlayer* pPlayer, CTFWeaponBase* pWeap
}
case TF_WEAPON_GRAPPLINGHOOK:
{
static auto tf_grapplinghook_projectile_speed = U::ConVars.FindVar("tf_grapplinghook_projectile_speed");
static auto tf_grapplinghook_max_distance = U::ConVars.FindVar("tf_grapplinghook_max_distance");
static auto tf_grapplinghook_projectile_speed = H::ConVars.FindVar("tf_grapplinghook_projectile_speed");
static auto tf_grapplinghook_max_distance = H::ConVars.FindVar("tf_grapplinghook_max_distance");
SDK::GetProjectileFireSetup(pPlayer, vAngles, { 23.5f, -8.f, -3.f }, vPos, vAngle, !bTrace ? true : false, bQuick);
@@ -594,7 +594,7 @@ void CProjectileSimulation::RunTick(ProjectileInfo& tProjInfo, bool bPath) // bu
/* // params.maxVelocity limits velocity uniformly
Vec3 vVelocity, vAngular;
m_pObj->GetVelocity(&vVelocity, &vAngular);
static auto sv_maxvelocity = U::ConVars.FindVar("sv_maxvelocity");
static auto sv_maxvelocity = H::ConVars.FindVar("sv_maxvelocity");
const float flMaxVel = sv_maxvelocity->GetFloat();
vVelocity = { std::clamp(vVelocity.x, -flMaxVel, flMaxVel), std::clamp(vVelocity.y, -flMaxVel, flMaxVel), std::clamp(vVelocity.z, -flMaxVel, flMaxVel) };
m_pObj->SetVelocity(&vVelocity, &vAngular);
@@ -149,7 +149,7 @@ public:
{
float flReturn = 0.f;
static auto sv_gravity = U::ConVars.FindVar("sv_gravity");
static auto sv_gravity = H::ConVars.FindVar("sv_gravity");
float flGravity = sv_gravity->GetFloat() / 800.f;
switch (pProjectile->GetClassID())
{
+3 -3
View File
@@ -188,7 +188,7 @@ void CTicks::Move(float accumulated_extra_samples, bool bFinalTick)
else
m_iWait = 2;
static auto sv_maxusrcmdprocessticks = U::ConVars.FindVar("sv_maxusrcmdprocessticks");
static auto sv_maxusrcmdprocessticks = H::ConVars.FindVar("sv_maxusrcmdprocessticks");
m_iMaxShift = sv_maxusrcmdprocessticks->GetInt();
if (Vars::Misc::Game::AntiCheatCompatibility.Value)
m_iMaxShift = std::min(m_iMaxShift, 8);
@@ -310,7 +310,7 @@ void CTicks::End(CTFPlayer* pLocal, CUserCmd* pCmd)
bool CTicks::CanChoke()
{
static auto sv_maxusrcmdprocessticks = U::ConVars.FindVar("sv_maxusrcmdprocessticks");
static auto sv_maxusrcmdprocessticks = H::ConVars.FindVar("sv_maxusrcmdprocessticks");
int iMaxTicks = sv_maxusrcmdprocessticks->GetInt();
if (Vars::Misc::Game::AntiCheatCompatibility.Value)
iMaxTicks = std::min(iMaxTicks, 8);
@@ -376,7 +376,7 @@ Vec3 CTicks::GetShootPos()
void CTicks::SaveShootAngle(CUserCmd* pCmd, bool bSendPacket)
{
static auto sv_maxusrcmdprocessticks_holdaim = U::ConVars.FindVar("sv_maxusrcmdprocessticks_holdaim");
static auto sv_maxusrcmdprocessticks_holdaim = H::ConVars.FindVar("sv_maxusrcmdprocessticks_holdaim");
if (bSendPacket)
m_bShootAngle = false;
+32 -14
View File
@@ -60,30 +60,35 @@ static inline void StorePlayer(CTFPlayer* pPlayer, CTFPlayer* pLocal, Group_t* p
if (pGroup->m_iESP & ESPEnum::Labels)
{
std::vector<PriorityLabel_t*> vTags = {};
std::vector<std::tuple<std::string, Color_t, int>> vTags = {};
for (auto& iID : F::PlayerUtils.GetPlayerTags(uAccountID))
{
auto pTag = F::PlayerUtils.GetTag(iID);
if (pTag && pTag->m_bLabel)
vTags.push_back(pTag);
vTags.emplace_back(pTag->m_sName, pTag->m_tColor, pTag->m_iPriority);
}
if (H::Entities.IsFriend(uAccountID))
{
auto pTag = &F::PlayerUtils.m_vTags[F::PlayerUtils.TagToIndex(FRIEND_TAG)];
if (pTag->m_bLabel)
vTags.push_back(pTag);
vTags.emplace_back(pTag->m_sName, pTag->m_tColor, pTag->m_iPriority);
}
if (H::Entities.InParty(uAccountID))
if (auto iParty = H::Entities.GetParty(uAccountID))
{
auto pTag = &F::PlayerUtils.m_vTags[F::PlayerUtils.TagToIndex(PARTY_TAG)];
if (pTag->m_bLabel)
vTags.push_back(pTag);
if (int iPartyCount = H::Entities.GetPartyCount() + 1; pTag->m_bLabel)
{
if (!--iParty)
vTags.emplace_back(pTag->m_sName, pTag->m_tColor, pTag->m_iPriority);
else
vTags.emplace_back(std::format("{}: {}", pTag->m_sName, iParty), pTag->m_tColor.HueShift(iParty * 360.f / iPartyCount), pTag->m_iPriority);
}
}
if (H::Entities.IsF2P(uAccountID))
{
auto pTag = &F::PlayerUtils.m_vTags[F::PlayerUtils.TagToIndex(F2P_TAG)];
if (pTag->m_bLabel)
vTags.push_back(pTag);
vTags.emplace_back(pTag->m_sName, pTag->m_tColor, pTag->m_iPriority);
}
if (!vTags.empty())
@@ -91,14 +96,14 @@ static inline void StorePlayer(CTFPlayer* pPlayer, CTFPlayer* pLocal, Group_t* p
std::sort(vTags.begin(), vTags.end(), [&](const auto a, const auto b) -> bool
{
// sort by priority if unequal
if (a->m_iPriority != b->m_iPriority)
return a->m_iPriority > b->m_iPriority;
if (std::get<2>(a) != std::get<2>(b))
return std::get<2>(a) > std::get<2>(b);
return a->m_sName < b->m_sName;
return std::get<0>(a) < std::get<0>(b);
});
for (auto& pTag : vTags)
tCache.m_vText.emplace_back(ALIGN_TOPRIGHT, pTag->m_sName, pTag->m_tColor, pTag->m_tColor.IsColorDark() ? Color_t(255, 255, 255) : Color_t(0, 0, 0));
for (auto& [sName, tColor, _] : vTags)
tCache.m_vText.emplace_back(ALIGN_TOPRIGHT, sName, tColor, tColor.IsColorDark() ? Color_t(255, 255, 255) : Color_t(0, 0, 0));
}
}
}
@@ -858,8 +863,21 @@ void CESP::DrawPlayers()
if (tCache.m_iClassIcon)
{
int size = H::Draw.Scale(18, Scale_Round);
H::Draw.Texture(m, t - tOffset, size, size, tCache.m_iClassIcon - 1, ALIGN_BOTTOM);
const char* sTexture = "vgui/glyph_multiplayer.vtf";
switch (tCache.m_iClassIcon)
{
case TF_CLASS_SCOUT: sTexture = "hud/leaderboard_class_scout.vtf"; break;
case TF_CLASS_SOLDIER: sTexture = "hud/leaderboard_class_soldier.vtf"; break;
case TF_CLASS_PYRO: sTexture = "hud/leaderboard_class_pyro.vtf"; break;
case TF_CLASS_DEMOMAN: sTexture = "hud/leaderboard_class_demo.vtf"; break;
case TF_CLASS_HEAVY: sTexture = "hud/leaderboard_class_heavy.vtf"; break;
case TF_CLASS_ENGINEER: sTexture = "hud/leaderboard_class_engineer.vtf"; break;
case TF_CLASS_MEDIC: sTexture = "hud/leaderboard_class_medic.vtf"; break;
case TF_CLASS_SNIPER: sTexture = "hud/leaderboard_class_sniper.vtf"; break;
case TF_CLASS_SPY: sTexture = "hud/leaderboard_class_spy.vtf"; break;
}
int iSize = H::Draw.Scale(18, Scale_Round);
H::Draw.Texture(sTexture, m, t - tOffset, iSize, iSize, ALIGN_BOTTOM);
}
if (tCache.m_pWeaponIcon)
+3 -3
View File
@@ -651,7 +651,7 @@ MAKE_HOOK(NDebugOverlay_BoxAngles, S::NDebugOverlay_BoxAngles(), void,
void CVisuals::FOV(CTFPlayer* pLocal, CViewSetup* pView)
{
static auto fov_desired = U::ConVars.FindVar("fov_desired");
static auto fov_desired = H::ConVars.FindVar("fov_desired");
bool bZoomed = pLocal->InCond(TF_COND_ZOOMED);
float flRegularFOV = fov_desired->GetFloat();
@@ -697,7 +697,7 @@ void CVisuals::ThirdPerson(CTFPlayer* pLocal, CViewSetup* pView)
I::Input->CAM_ToFirstPerson();
pLocal->ThirdPersonSwitch();
static auto cam_ideallag = U::ConVars.FindVar("cam_ideallag");
static auto cam_ideallag = H::ConVars.FindVar("cam_ideallag");
cam_ideallag->SetValue(0.f);
if (I::Input->CAM_IsThirdPerson())
@@ -1016,7 +1016,7 @@ void CVisuals::CreateMove(CTFPlayer* pLocal, CTFWeaponBase* pWeapon)
iOldMedigunCharge = iNewMedigunCharge;
}
static auto r_aspectratio = U::ConVars.FindVar("r_aspectratio");
static auto r_aspectratio = H::ConVars.FindVar("r_aspectratio");
static float flStaticRatio = 0.f;
float flOldRatio = flStaticRatio;
float flNewRatio = flStaticRatio = Vars::Visuals::UI::AspectRatio.Value;
@@ -15,7 +15,7 @@ public:
float flGravityCorrection = 0.f;
if (bZ)
{
static auto sv_gravity = U::ConVars.FindVar("sv_gravity");
static auto sv_gravity = H::ConVars.FindVar("sv_gravity");
float flDeltaTicks = float(iDeltaTicks) + 0.5f; // ?
flGravityCorrection = (powf(flDeltaTicks, 2.f) - flDeltaTicks) / 2.f * sv_gravity->GetFloat() * powf(TICK_INTERVAL, 2);
}
@@ -83,7 +83,7 @@ MAKE_HOOK(CBaseEntity_SetAbsVelocity, S::CBaseEntity_SetAbsVelocity(), void,
if (iDeltaTicks <= 0)
return;
static auto sv_lagcompensation_teleport_dist = U::ConVars.FindVar("sv_lagcompensation_teleport_dist");
static auto sv_lagcompensation_teleport_dist = H::ConVars.FindVar("sv_lagcompensation_teleport_dist");
float flDist = powf(sv_lagcompensation_teleport_dist->GetFloat(), 2.f) * iDeltaTicks;
if ((tNewRecord.m_vecOrigin - tOldRecord.m_vecOrigin).Length2DSqr() >= flDist)
return pRecords->clear();
@@ -122,7 +122,7 @@ MAKE_HOOK(CBaseEntity_SetAbsVelocity, S::CBaseEntity_SetAbsVelocity(), void,
FloatRange_t flPositionRange = { tAxisInfo[i].m_flNewAxisValue + flVelocityRange.Max * flRewind, tAxisInfo[i].m_flNewAxisValue + flVelocityRange.Min * flRewind };
if (i == 2)
{
static auto sv_gravity = U::ConVars.FindVar("sv_gravity");
static auto sv_gravity = H::ConVars.FindVar("sv_gravity");
float flGravityCorrection = sv_gravity->GetFloat() * powf(flRewind + TICK_INTERVAL / 2, 2.f) / 2;
flPositionRange.Min -= flGravityCorrection, flPositionRange.Max -= flGravityCorrection;
}
+2 -2
View File
@@ -81,7 +81,7 @@ MAKE_HOOK(CNetChannel_SendNetMsg, S::CNetChannel_SendNetMsg(), bool,
auto cvarName = reinterpret_cast<const char*>(pMsg[6]);
if (!cvarName) break;
auto pConVar = U::ConVars.FindVar(cvarName);
auto pConVar = H::ConVars.FindVar(cvarName);
if (!pConVar) break;
static std::string sValue = "";
@@ -155,7 +155,7 @@ MAKE_HOOK(CNetChannel_SendNetMsg, S::CNetChannel_SendNetMsg(), bool,
if (!F::Ticks.m_bSpeedhack)
{
static auto sv_maxusrcmdprocessticks = U::ConVars.FindVar("sv_maxusrcmdprocessticks");
static auto sv_maxusrcmdprocessticks = H::ConVars.FindVar("sv_maxusrcmdprocessticks");
const int iAllowedNewCommands = std::max(sv_maxusrcmdprocessticks->GetInt() - F::Ticks.m_iShiftedTicks, 0);
const int iCmdCount = pMsg->m_nNewCommands + pMsg->m_nBackupCommands - 3;
if (iCmdCount > iAllowedNewCommands)
+1 -1
View File
@@ -13,7 +13,7 @@ MAKE_HOOK(R_DrawSkyBox, S::R_DrawSkyBox(), void,
if (FNV1A::Hash32(Vars::Visuals::World::SkyboxChanger.Value.c_str()) == FNV1A::Hash32Const("Off") || Vars::Visuals::UI::CleanScreenshots.Value && I::EngineClient->IsTakingScreenshot())
return CALL_ORIGINAL(zFar, nDrawFlags);
static auto sv_skyname = U::ConVars.FindVar("sv_skyname");
static auto sv_skyname = H::ConVars.FindVar("sv_skyname");
std::string sOriginal = sv_skyname->GetString();
sv_skyname->SetValue(Vars::Visuals::World::SkyboxChanger.Value.c_str());
CALL_ORIGINAL(zFar, nDrawFlags);
@@ -1,6 +1,6 @@
#include "ConVars.h"
#include "../../SDK/Definitions/Interfaces/ICVar.h"
#include "../../Definitions/Interfaces/ICVar.h"
bool CConVars::Unlock()
{
@@ -1,7 +1,7 @@
#pragma once
#include "../Macros/Macros.h"
#include "../../SDK/Definitions/Misc/ConVar.h"
#include "../Hash/FNV1A.h"
#include "../../Definitions/Misc/ConVar.h"
#include "../../../Utils/Macros/Macros.h"
#include "../../../Utils/Hash/FNV1A.h"
#include <unordered_map>
class CConVars
@@ -18,4 +18,4 @@ public:
ConVar* FindVar(const char* sCVar);
};
ADD_FEATURE_CUSTOM(CConVars, ConVars, U);
ADD_FEATURE_CUSTOM(CConVars, ConVars, H);
+7 -13
View File
@@ -1,7 +1,6 @@
#include "Draw.h"
#include "../../SDK.h"
#include "Icons.h"
#include "../../Definitions/Interfaces.h"
#include "../../../Utils/Math/Math.h"
#include "../../../Utils/Timer/Timer.h"
@@ -58,9 +57,7 @@ void CDraw::UpdateW2SMatrix()
CViewSetup tViewSetup;
if (I::Client->GetPlayerView(tViewSetup))
{
static VMatrix mWorldToView;
static VMatrix mViewToProjection;
static VMatrix mWorldToPixels;
static VMatrix mWorldToView, mViewToProjection, mWorldToPixels;
I::RenderView->GetMatricesForView(tViewSetup, &mWorldToView, &mViewToProjection, &m_mWorldToProjection, &mWorldToPixels);
}
}
@@ -343,8 +340,10 @@ void CDraw::LineCircle(int x, int y, float iRadius, int iSegments, Color_t tColo
I::MatSystemSurface->DrawOutlinedCircle(x, y, iRadius, iSegments);
}
void CDraw::Texture(int x, int y, int w, int h, int iId, EAlign eAlign)
void CDraw::Texture(const char* sTexture, int x, int y, int w, int h, EAlign eAlign)
{
static std::unordered_map<uint32_t, int> mTextures = {};
switch (eAlign)
{
case ALIGN_TOPLEFT: break;
@@ -358,14 +357,9 @@ void CDraw::Texture(int x, int y, int w, int h, int iId, EAlign eAlign)
case ALIGN_BOTTOMRIGHT: x -= w; y -= h; break;
}
int nTexture = 0;
if (ICONS::TEXTURES[iId].first != -1)
nTexture = ICONS::TEXTURES[iId].first;
else
{
nTexture = ICONS::TEXTURES[iId].first = I::MatSystemSurface->CreateNewTextureID();
I::MatSystemSurface->DrawSetTextureFile(nTexture, ICONS::TEXTURES[iId].second.c_str(), false, true);
}
auto& nTexture = mTextures[FNV1A::Hash32Const(sTexture)];
if (!nTexture)
I::MatSystemSurface->DrawSetTextureFile(nTexture = I::MatSystemSurface->CreateNewTextureID(), sTexture, false, true);
I::MatSystemSurface->DrawSetColor(255, 255, 255, 255);
I::MatSystemSurface->DrawSetTexture(nTexture);
+1 -1
View File
@@ -92,7 +92,7 @@ public:
void FillCircle(int x, int y, float iRadius, int iSegments, Color_t tColor);
void LineCircle(int x, int y, float iRadius, int iSegments, Color_t tColor);
void Texture(int x, int y, int w, int h, int iId, EAlign eAlign = ALIGN_CENTER);
void Texture(const char* sTexture, int x, int y, int w, int h, EAlign eAlign = ALIGN_CENTER);
CHudTexture* GetIcon(const char* szIcon, int eIconFormat = 0);
int CreateTextureFromArray(const unsigned char* rgba, int w, int h);
void DrawHudTexture(float x, float y, float s, const CHudTexture* pTexture, Color_t tColor = { 255, 255, 255, 255 });
-48
View File
@@ -1,48 +0,0 @@
#pragma once
#include <string>
namespace ICONS
{
inline std::vector<std::pair<int, std::string>> TEXTURES = {
{ -1, "hud/leaderboard_class_scout.vtf" },
{ -1, "hud/leaderboard_class_sniper.vtf" },
{ -1, "hud/leaderboard_class_soldier.vtf" },
{ -1, "hud/leaderboard_class_demo.vtf" },
{ -1, "hud/leaderboard_class_medic.vtf" },
{ -1, "hud/leaderboard_class_heavy.vtf" },
{ -1, "hud/leaderboard_class_pyro.vtf" },
{ -1, "hud/leaderboard_class_spy.vtf" },
{ -1, "hud/leaderboard_class_engineer.vtf" },
{ -1, "vgui/class_portraits/scout_alpha.vtf" },
{ -1, "vgui/class_portraits/sniper_alpha.vtf" },
{ -1, "vgui/class_portraits/soldier_alpha.vtf" },
{ -1, "vgui/class_portraits/demoman_alpha.vtf" },
{ -1, "vgui/class_portraits/medic_alpha.vtf" },
{ -1, "vgui/class_portraits/heavy_alpha.vtf" },
{ -1, "vgui/class_portraits/pyro_alpha.vtf" },
{ -1, "vgui/class_portraits/spy_alpha.vtf" },
{ -1, "vgui/class_portraits/engineer_alpha.vtf" },
{ -1, "vgui/class_portraits/scout_blue_alpha.vtf" },
{ -1, "vgui/class_portraits/sniper_blue_alpha.vtf" },
{ -1, "vgui/class_portraits/soldier_blue_alpha.vtf" },
{ -1, "vgui/class_portraits/demoman_blue_alpha.vtf" },
{ -1, "vgui/class_portraits/medic_blue_alpha.vtf" },
{ -1, "vgui/class_portraits/heavy_blue_alpha.vtf" },
{ -1, "vgui/class_portraits/pyro_blue_alpha.vtf" },
{ -1, "vgui/class_portraits/spy_blue_alpha.vtf" },
{ -1, "vgui/class_portraits/engineer_blue_alpha.vtf" },
{ -1, "hud/hud_obj_status_sentry_1.vtf" },
{ -1, "hud/hud_obj_status_sentry_2.vtf" },
{ -1, "hud/hud_obj_status_sentry_3.vtf" },
{ -1, "hud/hud_obj_status_dispenser.vtf" },
{ -1, "hud/hud_obj_status_tele_entrance.vtf" },
{ -1, "hud/hud_obj_status_tele_exit.vtf" },
{ -1, "sprites/healbeam.vtf" },
{ -1, "hud/hud_obj_status_ammo_64.vtf" },
{ -1, "hud/mvm_cash.vtf" },
{ -1, "effects/powerup_supernova_icon.vtf" },
{ -1, "hud/ico_demolish.vtf" },
{ -1, "vgui/spellbook_book.vtf" },
{ -1, "backpack/player/items/crafting/hwn2015_gargoyle_stone.vtf" }
};
}
+25 -2
View File
@@ -201,6 +201,28 @@ void CEntities::Store()
mParties[uAccountID] = 1;
}
}
std::map<uint64_t, std::vector<uint32_t>> mParties2 = {};
for (auto& [uAccountID, uParty] : mParties)
{
if (uParty)
mParties2[uParty].push_back(uAccountID);
}
for (auto it = mParties2.begin(); it != mParties2.end();)
{
if (it->second.size() > 1)
it++;
else
it = mParties2.erase(it);
}
mParties.clear();
uint64_t uPartyCount = 0; for (auto& [uParty, vAccountIDs] : mParties2)
{
int iParty = uParty == 1 ? 1 : ++uPartyCount + 1;
for (auto uAccountID : vAccountIDs)
mParties[uAccountID] = iParty;
}
m_iPartyCount = uPartyCount;
}
for (int n = 1; n <= I::EngineClient->GetMaxClients(); n++)
{
@@ -506,5 +528,6 @@ bool CEntities::IsF2P(int iIndex) { return m_mIF2P[iIndex]; }
bool CEntities::IsF2P(uint32_t uAccountID) { return m_mUF2P[uAccountID]; }
int CEntities::GetLevel(int iIndex) { return m_mILevels.contains(iIndex) ? m_mILevels[iIndex] : -2; }
int CEntities::GetLevel(uint32_t uAccountID) { return m_mULevels.contains(uAccountID) ? m_mULevels[uAccountID] : -2; }
uint64_t CEntities::GetParty(int iIndex) { return m_mIParty.contains(iIndex) ? m_mIParty[iIndex] : 0; }
uint64_t CEntities::GetParty(uint32_t uAccountID) { return m_mUParty.contains(uAccountID) ? m_mUParty[uAccountID] : 0; }
int CEntities::GetParty(int iIndex) { return m_mIParty.contains(iIndex) ? m_mIParty[iIndex] : 0; }
int CEntities::GetParty(uint32_t uAccountID) { return m_mUParty.contains(uAccountID) ? m_mUParty[uAccountID] : 0; }
int CEntities::GetPartyCount() { return m_iPartyCount; }
+6 -5
View File
@@ -2,7 +2,6 @@
#include "../../../Utils/Macros/Macros.h"
#include "../../Definitions/Classes.h"
#include "../../Vars.h"
#include <unordered_map>
Enum(Entity, Invalid = -1,
PlayerAll, PlayerEnemy, PlayerTeam,
@@ -48,13 +47,14 @@ private:
std::unordered_map<uint32_t, int> m_mUPriorities = {};
std::unordered_map<int, bool> m_mIFriends = {};
std::unordered_map<uint32_t, bool> m_mUFriends = {};
std::unordered_map<int, uint64_t> m_mIParty = {};
std::unordered_map<uint32_t, uint64_t> m_mUParty = {};
std::unordered_map<int, int> m_mIParty = {};
std::unordered_map<uint32_t, int> m_mUParty = {};
std::unordered_map<int, bool> m_mIF2P = {};
std::unordered_map<uint32_t, bool> m_mUF2P = {};
std::unordered_map<int, int> m_mILevels = {};
std::unordered_map<uint32_t, int> m_mULevels = {};
uint32_t m_uAccountID;
int m_iPartyCount = 0;
public:
void Store();
@@ -95,8 +95,9 @@ public:
bool IsF2P(uint32_t uAccountID);
int GetLevel(int iIndex);
int GetLevel(uint32_t uAccountID);
uint64_t GetParty(int iIndex);
uint64_t GetParty(uint32_t uAccountID);
int GetParty(int iIndex);
int GetParty(uint32_t uAccountID);
int GetPartyCount();
};
ADD_FEATURE_CUSTOM(CEntities, Entities, H);
@@ -31,12 +31,10 @@ bool CTraceFilterHitscan::ShouldHitEntity(IHandleEntity* pServerEntity, int nCon
case ETFClassID::CObjectSentrygun:
case ETFClassID::CObjectDispenser:
case ETFClassID::CObjectTeleporter:
{
if (iType != SKIP_CHECK && (iWeapon == WEAPON_INCLUDE ? bWeapon : !bWeapon))
return iType == FORCE_HIT ? true : false;
return pEntity->m_iTeamNum() != iTeam;
}
}
return true;
}
@@ -84,7 +82,6 @@ bool CTraceFilterCollideable::ShouldHitEntity(IHandleEntity* pServerEntity, int
return pEntity->m_iTeamNum() != iTeam;
break;
case ETFClassID::CTFPlayer:
{
if (iPlayer == PLAYER_ALL)
return true;
if (iPlayer == PLAYER_NONE)
@@ -92,7 +89,6 @@ bool CTraceFilterCollideable::ShouldHitEntity(IHandleEntity* pServerEntity, int
if (iType != SKIP_CHECK && (iWeapon == WEAPON_INCLUDE ? bWeapon : !bWeapon))
return iType == FORCE_HIT ? true : false;
return pEntity->m_iTeamNum() != iTeam;
}
case ETFClassID::CBaseObject:
case ETFClassID::CObjectSentrygun:
case ETFClassID::CObjectDispenser: return iObject == OBJECT_ALL ? true : iObject == OBJECT_NONE ? false : pEntity->m_iTeamNum() != iTeam;
@@ -102,9 +98,8 @@ bool CTraceFilterCollideable::ShouldHitEntity(IHandleEntity* pServerEntity, int
//case ETFClassID::CMerasmus:
//case ETFClassID::CEyeballBoss:
//case ETFClassID::CHeadlessHatman:
//case ETFClassID::CZombie:
case ETFClassID::CTFGrenadePipebombProjectile:
return bMisc ? true : false;
//case ETFClassID::CZombie: return bMisc;
case ETFClassID::CTFGrenadePipebombProjectile: return bMisc && pEntity->As<CTFGrenadePipebombProjectile>()->m_iType() == TF_GL_MODE_REMOTE_DETONATE;
}
return false;
@@ -135,9 +130,7 @@ bool CTraceFilterWorldAndPropsOnly::ShouldHitEntity(IHandleEntity* pServerEntity
case ETFClassID::CObjectCartDispenser:
case ETFClassID::CFuncTrackTrain:
case ETFClassID::CFuncConveyor: return true;
case ETFClassID::CFuncRespawnRoomVisualizer:
if (nContentsMask & CONTENTS_PLAYERCLIP)
return pEntity->m_iTeamNum() != iTeam;
case ETFClassID::CFuncRespawnRoomVisualizer: return nContentsMask & CONTENTS_PLAYERCLIP && pEntity->m_iTeamNum() != iTeam;
}
return false;
+2 -2
View File
@@ -619,7 +619,7 @@ int SDK::IsAttacking(CTFPlayer* pLocal, CTFWeaponBase* pWeapon, const CUserCmd*
CGameTrace trace = {};
CTraceFilterHitscan filter = {};
filter.pSkip = pLocal;
static auto tf_grapplinghook_max_distance = U::ConVars.FindVar("tf_grapplinghook_max_distance");
static auto tf_grapplinghook_max_distance = H::ConVars.FindVar("tf_grapplinghook_max_distance");
const float flGrappleDistance = tf_grapplinghook_max_distance->GetFloat();
Trace(vPos, vPos + vForward * flGrappleDistance, MASK_SOLID, &filter, &trace);
return trace.DidHit() && !(trace.surface.flags & SURF_SKY);
@@ -785,7 +785,7 @@ void SDK::WalkTo(CUserCmd* pCmd, CTFPlayer* pLocal, Vec3& vTo, float flScale)
void SDK::GetProjectileFireSetup(CTFPlayer* pPlayer, const Vec3& vAngIn, Vec3 vOffset, Vec3& vPosOut, Vec3& vAngOut, bool bPipes, bool bInterp, bool bAllowFlip)
{
static auto cl_flipviewmodels = U::ConVars.FindVar("cl_flipviewmodels");
static auto cl_flipviewmodels = H::ConVars.FindVar("cl_flipviewmodels");
if (bAllowFlip && FNV1A::Hash32(cl_flipviewmodels->GetString()) == FNV1A::Hash32Const("1"))
vOffset.y *= -1.f;
+1 -1
View File
@@ -2,6 +2,7 @@
#include "Vars.h"
#include "Globals.h"
#include "Helpers/ConVars/ConVars.h"
#include "Helpers/Entities/Entities.h"
#include "Helpers/Draw/Draw.h"
#include "Helpers/TraceFilters/TraceFilters.h"
@@ -13,7 +14,6 @@
#include "../Utils/Interfaces/Interfaces.h"
#include "../Utils/Hooks/Hooks.h"
#include "../Utils/Memory/Memory.h"
#include "../Utils/ConVars/ConVars.h"
#include "../Utils/KeyHandler/KeyHandler.h"
#include "../Utils/Hash/FNV1A.h"
#include "../Utils/Math/Math.h"
+1
View File
@@ -3,6 +3,7 @@
#include "../Utils/Macros/Macros.h"
#include <windows.h>
#include <unordered_map>
#include <map>
#include <typeinfo>
#define DEFAULT_BIND -1