non lethal warning

handle can attack better
fix oversight and infinite loop with streamer mode
This commit is contained in:
rei-2
2025-02-01 23:59:57 -05:00
parent 03409e5202
commit f5ebbb2bea
14 changed files with 182 additions and 138 deletions
+1
View File
@@ -16,6 +16,7 @@ bool CAimbot::ShouldRun(CTFPlayer* pLocal, CTFWeaponBase* pWeapon)
|| !pLocal->IsAlive()
|| pLocal->IsAGhost()
|| pLocal->IsTaunting()
|| pLocal->InCond(TF_COND_STUNNED) && pLocal->m_iStunFlags() & (TF_STUN_CONTROLS | TF_STUN_LOSER_STATE)
|| pLocal->m_bFeignDeathReady()
|| pLocal->InCond(TF_COND_PHASE)
|| pLocal->InCond(TF_COND_STEALTHED)
@@ -133,7 +133,6 @@ void CAutoRocketJump::Run(CTFPlayer* pLocal, CTFWeaponBase* pWeapon, CUserCmd* p
else if (Vars::Misc::Movement::AutoRocketJump.Value || Vars::Misc::Movement::AutoCTap.Value)
pCmd->buttons &= ~IN_ATTACK2; // fix for retarded issue
if (m_iFrame == -1 && (pWeapon->m_iItemDefinitionIndex() == Soldier_m_TheBeggarsBazooka ? G::Attacking == 1 : G::CanPrimaryAttack || G::Reloading)
&& SetAngles(pLocal, pWeapon, pCmd))
{
+7
View File
@@ -852,6 +852,13 @@ void CMenu::MenuVisuals()
FSlider("Thirdperson right", Vars::Visuals::ThirdPerson::Right, -500.f, 500.f, 5.f, "%g", FSlider_Precision);
FSlider("Thirdperson up", Vars::Visuals::ThirdPerson::Up, -500.f, 500.f, 5.f, "%g", FSlider_Precision);
} EndSection();
if (Vars::Debug::Info.Value)
{
if (Section("debug"))
{
FToggle("thirdperson scales", Vars::Visuals::ThirdPerson::Scale);
} EndSection();
}
if (Section("Out of FOV arrows"))
{
FToggle("Enabled", Vars::Visuals::FOVArrows::Enabled);
@@ -12,6 +12,7 @@ bool CNoSpread::ShouldRun(CTFPlayer* pLocal, CTFWeaponBase* pWeapon)
|| !pLocal->IsAlive()
|| pLocal->IsAGhost()
|| pLocal->IsTaunting()
|| pLocal->InCond(TF_COND_STUNNED) && pLocal->m_iStunFlags() & (TF_STUN_CONTROLS | TF_STUN_LOSER_STATE)
|| pLocal->m_bFeignDeathReady()
|| pLocal->InCond(TF_COND_PHASE)
|| pLocal->InCond(TF_COND_STEALTHED)
@@ -1,8 +1,8 @@
#include "PlayerConditions.h"
std::vector<std::wstring> CPlayerConditions::Get(CTFPlayer* pEntity)
std::vector<std::string> CPlayerConditions::Get(CTFPlayer* pEntity)
{
std::vector<std::wstring> vConditions = {};
std::vector<std::string> vConditions = {};
{
if (pEntity->InCond(TF_COND_CRITBOOSTED) ||
@@ -16,337 +16,339 @@ std::vector<std::wstring> CPlayerConditions::Get(CTFPlayer* pEntity)
pEntity->InCond(TF_COND_CRITBOOSTED_RAGE_BUFF) ||
pEntity->InCond(TF_COND_CRITBOOSTED_CARD_EFFECT) ||
pEntity->InCond(TF_COND_CRITBOOSTED_RUNE_TEMP))
vConditions.emplace_back(L"CRITS");
vConditions.emplace_back("CRITS");
if (pEntity->InCond(TF_COND_ENERGY_BUFF) ||
pEntity->InCond(TF_COND_NOHEALINGDAMAGEBUFF))
vConditions.emplace_back(L"MINI CRITS");
vConditions.emplace_back("MINI CRITS");
if (pEntity->InCond(TF_COND_MINICRITBOOSTED_ON_KILL))
vConditions.emplace_back(L"MINI CRITS ON KILL");
vConditions.emplace_back("MINI CRITS ON KILL");
if (pEntity->InCond(TF_COND_OFFENSEBUFF))
vConditions.emplace_back(L"OFFENSE BUFF");
vConditions.emplace_back("OFFENSE BUFF");
if (pEntity->InCond(TF_COND_TMPDAMAGEBONUS))
vConditions.emplace_back(L"DAMAGE BONUS");
vConditions.emplace_back("DAMAGE BONUS");
if (pEntity->InCond(TF_COND_INVULNERABLE) ||
pEntity->InCond(TF_COND_INVULNERABLE_HIDE_UNLESS_DAMAGED) ||
pEntity->InCond(TF_COND_INVULNERABLE_USER_BUFF) ||
pEntity->InCond(TF_COND_INVULNERABLE_CARD_EFFECT))
vConditions.emplace_back(L"INVULNERABLE");
vConditions.emplace_back("INVULNERABLE");
if (pEntity->InCond(TF_COND_INVULNERABLE_WEARINGOFF))
vConditions.emplace_back(L"INVULNERABLE-");
vConditions.emplace_back("INVULNERABLE-");
if (pEntity->InCond(TF_COND_DEFENSEBUFF))
vConditions.emplace_back(L"DEFENSE BUFF");
vConditions.emplace_back("DEFENSE BUFF");
if (pEntity->InCond(TF_COND_DEFENSEBUFF_HIGH))
vConditions.emplace_back(L"DEFENSE BUFF+");
vConditions.emplace_back("DEFENSE BUFF+");
if (pEntity->InCond(TF_COND_DEFENSEBUFF_NO_CRIT_BLOCK))
vConditions.emplace_back(L"DEFENSE BUFF-");
vConditions.emplace_back("DEFENSE BUFF-");
if (pEntity->InCond(TF_COND_RADIUSHEAL) ||
pEntity->InCond(TF_COND_HEALTH_BUFF) ||
pEntity->InCond(TF_COND_RADIUSHEAL_ON_DAMAGE) ||
pEntity->InCond(TF_COND_HALLOWEEN_HELL_HEAL))
vConditions.emplace_back(L"HEAL");
vConditions.emplace_back("HEAL");
if (pEntity->InCond(TF_COND_MEGAHEAL) ||
pEntity->InCond(TF_COND_HALLOWEEN_QUICK_HEAL))
vConditions.emplace_back(L"HEAL+");
vConditions.emplace_back("HEAL+");
if (pEntity->InCond(TF_COND_REGENONDAMAGEBUFF))
vConditions.emplace_back(L"HEALTH ON DAMAGE");
vConditions.emplace_back("HEALTH ON DAMAGE");
if (pEntity->InCond(TF_COND_HEALTH_OVERHEALED))
vConditions.emplace_back(L"OVERHEAL");
vConditions.emplace_back("OVERHEAL");
if (pEntity->InCond(TF_COND_MEDIGUN_UBER_BULLET_RESIST) ||
pEntity->InCond(TF_COND_MEDIGUN_SMALL_BULLET_RESIST) ||
pEntity->InCond(TF_COND_BULLET_IMMUNE))
vConditions.emplace_back(L"BULLET");
vConditions.emplace_back("BULLET");
if (pEntity->InCond(TF_COND_MEDIGUN_UBER_BLAST_RESIST) ||
pEntity->InCond(TF_COND_MEDIGUN_SMALL_BLAST_RESIST) ||
pEntity->InCond(TF_COND_BLAST_IMMUNE))
vConditions.emplace_back(L"BLAST");
vConditions.emplace_back("BLAST");
if (pEntity->InCond(TF_COND_MEDIGUN_UBER_FIRE_RESIST) ||
pEntity->InCond(TF_COND_MEDIGUN_SMALL_FIRE_RESIST) ||
pEntity->InCond(TF_COND_FIRE_IMMUNE))
vConditions.emplace_back(L"FIRE");
vConditions.emplace_back("FIRE");
if (pEntity->m_bFeignDeathReady())
vConditions.emplace_back(L"DR");
vConditions.emplace_back("DR");
if (pEntity->InCond(TF_COND_FEIGN_DEATH))
vConditions.emplace_back(L"FEIGN");
vConditions.emplace_back("FEIGN");
if (pEntity->InCond(TF_COND_STEALTHED))
vConditions.emplace_back(L"CLOAK");
vConditions.emplace_back("CLOAK");
if (pEntity->InCond(TF_COND_STEALTHED_USER_BUFF))
vConditions.emplace_back(L"STEALTH");
vConditions.emplace_back("STEALTH");
if (pEntity->InCond(TF_COND_STEALTHED_USER_BUFF_FADING))
vConditions.emplace_back(L"STEALTH+");
vConditions.emplace_back("STEALTH+");
if (pEntity->InCond(TF_COND_DISGUISED))
vConditions.emplace_back(L"DISGUISE");
vConditions.emplace_back("DISGUISE");
if (pEntity->InCond(TF_COND_DISGUISING))
vConditions.emplace_back(L"DISGUISING");
vConditions.emplace_back("DISGUISING");
if (pEntity->InCond(TF_COND_DISGUISE_WEARINGOFF))
vConditions.emplace_back(L"UNDISGUISING");
vConditions.emplace_back("UNDISGUISING");
if (pEntity->InCond(TF_COND_STEALTHED_BLINK))
vConditions.emplace_back(L"BLINK");
vConditions.emplace_back("BLINK");
if (pEntity->InCond(TF_COND_SPEED_BOOST) ||
pEntity->InCond(TF_COND_HALLOWEEN_SPEED_BOOST))
vConditions.emplace_back(L"SPEED BOOST");
vConditions.emplace_back("SPEED BOOST");
if (pEntity->InCond(TF_COND_SODAPOPPER_HYPE))
vConditions.emplace_back(L"HYPE");
vConditions.emplace_back("HYPE");
if (pEntity->InCond(TF_COND_SNIPERCHARGE_RAGE_BUFF))
vConditions.emplace_back(L"FOCUS");
vConditions.emplace_back("FOCUS");
if (pEntity->InCond(TF_COND_AIMING))
vConditions.emplace_back(L"SLOWED");
vConditions.emplace_back("SLOWED");
if (pEntity->InCond(TF_COND_ZOOMED))
vConditions.emplace_back(L"ZOOM");
vConditions.emplace_back("ZOOM");
if (pEntity->InCond(TF_COND_SHIELD_CHARGE))
vConditions.emplace_back(L"CHARGING");
vConditions.emplace_back("CHARGING");
if (pEntity->InCond(TF_COND_DEMO_BUFF))
vConditions.emplace_back(L"EYELANDER");
vConditions.emplace_back("EYELANDER");
if (pEntity->InCond(TF_COND_PHASE))
vConditions.emplace_back(L"BONK");
vConditions.emplace_back("BONK");
if (pEntity->InCond(TF_COND_AFTERBURN_IMMUNE))
vConditions.emplace_back(L"NO AFTERBURN");
vConditions.emplace_back("NO AFTERBURN");
if (pEntity->InCond(TF_COND_BLASTJUMPING))
vConditions.emplace_back(L"BLASTJUMP");
vConditions.emplace_back("BLASTJUMP");
if (pEntity->InCond(TF_COND_ROCKETPACK))
vConditions.emplace_back(L"ROCKETPACK");
vConditions.emplace_back("ROCKETPACK");
if (pEntity->InCond(TF_COND_PARACHUTE_ACTIVE) ||
pEntity->InCond(TF_COND_PARACHUTE_DEPLOYED))
vConditions.emplace_back(L"PARACHUTE");
vConditions.emplace_back("PARACHUTE");
if (pEntity->InCond(TF_COND_OBSCURED_SMOKE))
vConditions.emplace_back(L"DODGE");
vConditions.emplace_back("DODGE");
if (pEntity->InCond(TF_COND_STUNNED) ||
if (pEntity->InCond(TF_COND_STUNNED) && !(pEntity->m_iStunFlags() & (TF_STUN_CONTROLS | TF_STUN_LOSER_STATE)))
vConditions.emplace_back("SLOWED");
else if (pEntity->InCond(TF_COND_STUNNED) ||
pEntity->InCond(TF_COND_MVM_BOT_STUN_RADIOWAVE))
vConditions.emplace_back(L"STUN");
vConditions.emplace_back("STUN");
if (pEntity->InCond(TF_COND_MARKEDFORDEATH) ||
pEntity->InCond(TF_COND_MARKEDFORDEATH_SILENT) ||
pEntity->InCond(TF_COND_PASSTIME_PENALTY_DEBUFF))
vConditions.emplace_back(L"MARKED FOR DEATH");
vConditions.emplace_back("MARKED FOR DEATH");
if (pEntity->InCond(TF_COND_URINE))
vConditions.emplace_back(L"JARATE");
vConditions.emplace_back("JARATE");
if (pEntity->InCond(TF_COND_MAD_MILK))
vConditions.emplace_back(L"MILK");
vConditions.emplace_back("MILK");
if (pEntity->InCond(TF_COND_GAS))
vConditions.emplace_back(L"GAS");
vConditions.emplace_back("GAS");
if (pEntity->InCond(TF_COND_BURNING) ||
pEntity->InCond(TF_COND_BURNING_PYRO))
vConditions.emplace_back(L"BURN");
vConditions.emplace_back("BURN");
if (pEntity->InCond(TF_COND_BLEEDING) ||
pEntity->InCond(TF_COND_GRAPPLINGHOOK_BLEEDING))
vConditions.emplace_back(L"BLEED");
vConditions.emplace_back("BLEED");
if (pEntity->InCond(TF_COND_KNOCKED_INTO_AIR))
vConditions.emplace_back(L"AIRBLAST");
vConditions.emplace_back("AIRBLAST");
if (pEntity->InCond(TF_COND_AIR_CURRENT))
vConditions.emplace_back(L"AIR");
vConditions.emplace_back("AIR");
if (pEntity->InCond(TF_COND_LOST_FOOTING))
vConditions.emplace_back(L"SLIDE");
vConditions.emplace_back("SLIDE");
if (pEntity->InCond(TF_COND_HEALING_DEBUFF))
vConditions.emplace_back(L"HEAL DEBUFF");
vConditions.emplace_back("HEAL DEBUFF");
if (pEntity->InCond(TF_COND_CANNOT_SWITCH_FROM_MELEE) ||
pEntity->InCond(TF_COND_MELEE_ONLY))
vConditions.emplace_back(L"ONLY MELEE");
vConditions.emplace_back("ONLY MELEE");
if (pEntity->InCond(TF_COND_HALLOWEEN_GIANT))
vConditions.emplace_back(L"GIANT");
vConditions.emplace_back("GIANT");
if (pEntity->InCond(TF_COND_HALLOWEEN_TINY))
vConditions.emplace_back(L"TINY");
vConditions.emplace_back("TINY");
if (pEntity->InCond(TF_COND_HALLOWEEN_BOMB_HEAD))
vConditions.emplace_back(L"BOMB");
vConditions.emplace_back("BOMB");
if (pEntity->InCond(TF_COND_BALLOON_HEAD))
vConditions.emplace_back(L"BALLOON");
vConditions.emplace_back("BALLOON");
if (pEntity->InCond(TF_COND_HALLOWEEN_GHOST_MODE))
vConditions.emplace_back(L"GHOST");
vConditions.emplace_back("GHOST");
if (pEntity->InCond(TF_COND_HALLOWEEN_KART))
vConditions.emplace_back(L"KART");
vConditions.emplace_back("KART");
if (pEntity->InCond(TF_COND_HALLOWEEN_KART_DASH))
vConditions.emplace_back(L"DASH");
vConditions.emplace_back("DASH");
if (pEntity->InCond(TF_COND_SWIMMING_CURSE) ||
pEntity->InCond(TF_COND_SWIMMING_NO_EFFECTS))
vConditions.emplace_back(L"SWIM");
vConditions.emplace_back("SWIM");
if (pEntity->InCond(TF_COND_HALLOWEEN_KART_CAGE))
vConditions.emplace_back(L"CAGE");
vConditions.emplace_back("CAGE");
// if (pEntity->InCond(TF_COND_HASRUNE))
// vConditions.emplace_back(L"RUNE");
// vConditions.emplace_back("RUNE");
if (pEntity->InCond(TF_COND_POWERUPMODE_DOMINANT))
vConditions.emplace_back(L"DOMINANT");
vConditions.emplace_back("DOMINANT");
if (pEntity->InCond(TF_COND_RUNE_STRENGTH))
vConditions.emplace_back(L"STRENGTH");
vConditions.emplace_back("STRENGTH");
if (pEntity->InCond(TF_COND_RUNE_HASTE))
vConditions.emplace_back(L"HASTE");
vConditions.emplace_back("HASTE");
if (pEntity->InCond(TF_COND_RUNE_REGEN))
vConditions.emplace_back(L"REGEN");
vConditions.emplace_back("REGEN");
if (pEntity->InCond(TF_COND_RUNE_RESIST))
vConditions.emplace_back(L"RESIST");
vConditions.emplace_back("RESIST");
if (pEntity->InCond(TF_COND_RUNE_VAMPIRE))
vConditions.emplace_back(L"VAMPIRE");
vConditions.emplace_back("VAMPIRE");
if (pEntity->InCond(TF_COND_RUNE_REFLECT))
vConditions.emplace_back(L"REFLECT");
vConditions.emplace_back("REFLECT");
if (pEntity->InCond(TF_COND_RUNE_PRECISION))
vConditions.emplace_back(L"PRECISION");
vConditions.emplace_back("PRECISION");
if (pEntity->InCond(TF_COND_RUNE_AGILITY))
vConditions.emplace_back(L"AGILITY");
vConditions.emplace_back("AGILITY");
if (pEntity->InCond(TF_COND_RUNE_KNOCKOUT))
vConditions.emplace_back(L"KNOCKOUT");
vConditions.emplace_back("KNOCKOUT");
if (pEntity->InCond(TF_COND_RUNE_IMBALANCE))
vConditions.emplace_back(L"IMBALANCE");
vConditions.emplace_back("IMBALANCE");
if (pEntity->InCond(TF_COND_RUNE_KING))
vConditions.emplace_back(L"KING");
vConditions.emplace_back("KING");
if (pEntity->InCond(TF_COND_RUNE_PLAGUE))
vConditions.emplace_back(L"PLAGUE");
vConditions.emplace_back("PLAGUE");
if (pEntity->InCond(TF_COND_RUNE_SUPERNOVA))
vConditions.emplace_back(L"SUPERNOVA");
vConditions.emplace_back("SUPERNOVA");
if (pEntity->InCond(TF_COND_PLAGUE))
vConditions.emplace_back(L"PLAGUED");
vConditions.emplace_back("PLAGUED");
if (pEntity->InCond(TF_COND_KING_BUFFED))
vConditions.emplace_back(L"KING BUFF");
vConditions.emplace_back("KING BUFF");
if (pEntity->InCond(TF_COND_HALLOWEEN_IN_HELL))
vConditions.emplace_back(L"HELL");
vConditions.emplace_back("HELL");
if (pEntity->InCond(TF_COND_PURGATORY))
vConditions.emplace_back(L"PURGATORY");
vConditions.emplace_back("PURGATORY");
if (pEntity->InCond(TF_COND_PASSTIME_INTERCEPTION))
vConditions.emplace_back(L"INTERCEPTION");
vConditions.emplace_back("INTERCEPTION");
if (pEntity->InCond(TF_COND_TEAM_GLOWS))
vConditions.emplace_back(L"TEAM GLOWS");
vConditions.emplace_back("TEAM GLOWS");
if (pEntity->InCond(TF_COND_PREVENT_DEATH))
vConditions.emplace_back(L"PREVENT DEATH");
vConditions.emplace_back("PREVENT DEATH");
if (pEntity->InCond(TF_COND_GRAPPLINGHOOK))
vConditions.emplace_back(L"GRAPPLE");
vConditions.emplace_back("GRAPPLE");
if (pEntity->InCond(TF_COND_GRAPPLINGHOOK_SAFEFALL))
vConditions.emplace_back(L"SAFEFALL");
vConditions.emplace_back("SAFEFALL");
if (pEntity->InCond(TF_COND_GRAPPLINGHOOK_LATCHED))
vConditions.emplace_back(L"LATCHED");
vConditions.emplace_back("LATCHED");
if (pEntity->InCond(TF_COND_GRAPPLED_TO_PLAYER))
vConditions.emplace_back(L"TO PLAYER");
vConditions.emplace_back("TO PLAYER");
if (pEntity->InCond(TF_COND_GRAPPLED_BY_PLAYER))
vConditions.emplace_back(L"BY PLAYER");
vConditions.emplace_back("BY PLAYER");
if (pEntity->InCond(TF_COND_TELEPORTED))
vConditions.emplace_back(L"TELEPORT");
vConditions.emplace_back("TELEPORT");
if (pEntity->InCond(TF_COND_SELECTED_TO_TELEPORT))
vConditions.emplace_back(L"TELEPORTING");
vConditions.emplace_back("TELEPORTING");
if (pEntity->InCond(TF_COND_MEDIGUN_DEBUFF))
vConditions.emplace_back(L"MEDIGUN DEBUFF");
vConditions.emplace_back("MEDIGUN DEBUFF");
if (pEntity->InCond(TF_COND_SAPPED))
vConditions.emplace_back(L"SAPPED");
vConditions.emplace_back("SAPPED");
if (pEntity->InCond(TF_COND_DISGUISED_AS_DISPENSER))
vConditions.emplace_back(L"DISPENSER");
vConditions.emplace_back("DISPENSER");
if (pEntity->InCond(TF_COND_TAUNTING))
vConditions.emplace_back(L"TAUNT");
vConditions.emplace_back("TAUNT");
if (pEntity->InCond(TF_COND_HALLOWEEN_THRILLER))
vConditions.emplace_back(L"THRILLER");
vConditions.emplace_back("THRILLER");
if (pEntity->InCond(TF_COND_FREEZE_INPUT))
vConditions.emplace_back(L"FREEZE INPUT");
vConditions.emplace_back("FREEZE INPUT");
if (pEntity->InCond(TF_COND_REPROGRAMMED))
vConditions.emplace_back(L"REPROGRAMMED");
vConditions.emplace_back("REPROGRAMMED");
// if (pEntity->InCond(TF_COND_COMPETITIVE_WINNER))
// vConditions.emplace_back(L"WIN");
//if (pEntity->InCond(TF_COND_COMPETITIVE_WINNER))
// vConditions.emplace_back("WIN");
// if (pEntity->InCond(TF_COND_COMPETITIVE_LOSER))
// vConditions.emplace_back(L"LOSS");
//if (pEntity->InCond(TF_COND_COMPETITIVE_LOSER))
// vConditions.emplace_back("LOSS");
}
return vConditions;
@@ -384,10 +386,10 @@ void CPlayerConditions::Draw(CTFPlayer* pLocal)
align = ALIGN_TOPRIGHT;
}
std::vector<std::wstring> vConditions = Get(pTarget);
std::vector<std::string> vConditions = Get(pTarget);
int iOffset = 0;
for (const std::wstring& sCondition : vConditions)
for (const std::string& sCondition : vConditions)
{
H::Draw.StringOutlined(fFont, x, y + iOffset, Vars::Menu::Theme::Active.Value, Vars::Menu::Theme::Background.Value, align, sCondition.c_str());
iOffset += nTall;
@@ -4,7 +4,7 @@
class CPlayerConditions
{
public:
std::vector<std::wstring> Get(CTFPlayer* pEntity);
std::vector<std::string> Get(CTFPlayer* pEntity);
void Draw(CTFPlayer* pLocal);
};
+22 -20
View File
@@ -24,7 +24,7 @@ MAKE_SIGNATURE(CWeaponMedigun_ManageChargeEffect, "client.dll", "48 89 5C 24 ? 4
void CVisuals::DrawFOV(CTFPlayer* pLocal)
{
if (!Vars::Aimbot::General::FOVCircle.Value || !Vars::Colors::FOVCircle.Value.a || !pLocal->IsAlive() || pLocal->IsAGhost() || pLocal->IsTaunting() || pLocal->InCond(TF_COND_STUNNED) || pLocal->InCond(TF_COND_HALLOWEEN_KART))
if (!Vars::Aimbot::General::FOVCircle.Value || !Vars::Colors::FOVCircle.Value.a || !pLocal->IsAlive() || pLocal->IsAGhost() || pLocal->IsTaunting() || pLocal->InCond(TF_COND_STUNNED) && pLocal->m_iStunFlags() & (TF_STUN_CONTROLS | TF_STUN_LOSER_STATE) || pLocal->InCond(TF_COND_HALLOWEEN_KART))
return;
if (Vars::Aimbot::General::AimFOV.Value >= 90.f)
@@ -160,7 +160,6 @@ void CVisuals::ProjectileTrace(CTFPlayer* pPlayer, CTFWeaponBase* pWeapon, const
return;
pWeapon = pPlayer->m_hActiveWeapon().Get()->As<CTFWeaponBase>();
if (!pWeapon)
if (!pWeapon || pWeapon->GetWeaponID() == TF_WEAPON_FLAMETHROWER)
return;
@@ -520,26 +519,26 @@ void CVisuals::DrawDebugInfo(CTFPlayer* pLocal)
}
H::Draw.StringOutlined(fFont, x, y += nTall, Vars::Menu::Theme::Active.Value, Vars::Menu::Theme::Background.Value, ALIGN_TOPLEFT, std::format("Choke: {}, {}", G::Choking, I::ClientState->chokedcommands).c_str());
H::Draw.StringOutlined(fFont, x, y += nTall, Vars::Menu::Theme::Active.Value, Vars::Menu::Theme::Background.Value, ALIGN_TOPLEFT, std::format("Ticks: {}, {}", F::Ticks.m_iShiftedTicks, F::Ticks.m_iShiftedGoal).c_str());
H::Draw.StringOutlined(fFont, x, y += nTall, Vars::Menu::Theme::Active.Value, Vars::Menu::Theme::Background.Value, ALIGN_TOPLEFT, std::format("Round state: {}, {}", SDK::GetRoundState(), I::EngineClient->IsPlayingDemo()).c_str());
H::Draw.StringOutlined(fFont, x, y += nTall, Vars::Menu::Theme::Active.Value, Vars::Menu::Theme::Background.Value, ALIGN_TOPLEFT, std::format("Round state: {}, {}, {}", SDK::GetRoundState(), SDK::GetWinningTeam(), I::EngineClient->IsPlayingDemo()).c_str());
H::Draw.StringOutlined(fFont, x, y += nTall, Vars::Menu::Theme::Active.Value, Vars::Menu::Theme::Background.Value, ALIGN_TOPLEFT, std::format("Tickcount: {}", pLocal->m_nTickBase()).c_str());
H::Draw.StringOutlined(fFont, x, y += nTall, Vars::Menu::Theme::Active.Value, Vars::Menu::Theme::Background.Value, ALIGN_TOPLEFT, std::format("Entities: {} ({}, {})", I::ClientEntityList->GetMaxEntities(), I::ClientEntityList->GetHighestEntityIndex(), I::ClientEntityList->NumberOfEntities(false)).c_str());
if (pWeapon)
{
float flTime = TICKS_TO_TIME(pLocal->m_nTickBase());
float flPrimaryAttack = pWeapon->m_flNextPrimaryAttack();
float flSecondaryAttack = pWeapon->m_flNextSecondaryAttack();
float flAttack = pLocal->m_flNextAttack();
float flTime = TICKS_TO_TIME(pLocal->m_nTickBase());
float flPrimaryAttack = pWeapon->m_flNextPrimaryAttack();
float flSecondaryAttack = pWeapon->m_flNextSecondaryAttack();
float flAttack = pLocal->m_flNextAttack();
H::Draw.StringOutlined(fFont, x, y += nTall * 2, Vars::Menu::Theme::Active.Value, Vars::Menu::Theme::Background.Value, ALIGN_TOPLEFT, std::format("Attacking: {}", G::Attacking).c_str());
H::Draw.StringOutlined(fFont, x, y += nTall, Vars::Menu::Theme::Active.Value, Vars::Menu::Theme::Background.Value, ALIGN_TOPLEFT, std::format("CanPrimaryAttack: {} ([{:.3f} | {:.3f}] <= {:.3f})", G::CanPrimaryAttack, flPrimaryAttack, flAttack, flTime).c_str());
H::Draw.StringOutlined(fFont, x, y += nTall, Vars::Menu::Theme::Active.Value, Vars::Menu::Theme::Background.Value, ALIGN_TOPLEFT, std::format("CanSecondaryAttack: {} ([{:.3f} | {:.3f}] <= {:.3f})", G::CanSecondaryAttack, flSecondaryAttack, flAttack, flTime).c_str());
H::Draw.StringOutlined(fFont, x, y += nTall, Vars::Menu::Theme::Active.Value, Vars::Menu::Theme::Background.Value, ALIGN_TOPLEFT, std::format("Attack: {:.3f}, {:.3f}; {:.3f}", flTime - flPrimaryAttack, flTime - flSecondaryAttack, flTime - flAttack).c_str());
H::Draw.StringOutlined(fFont, x, y += nTall, Vars::Menu::Theme::Active.Value, Vars::Menu::Theme::Background.Value, ALIGN_TOPLEFT, std::format("Reload: {} ({} || {} != 0)", G::Reloading, pWeapon->m_bInReload(), pWeapon->m_iReloadMode()).c_str());
H::Draw.StringOutlined(fFont, x, y += nTall * 2, Vars::Menu::Theme::Active.Value, Vars::Menu::Theme::Background.Value, ALIGN_TOPLEFT, std::format("Attacking: {}", G::Attacking).c_str());
H::Draw.StringOutlined(fFont, x, y += nTall, Vars::Menu::Theme::Active.Value, Vars::Menu::Theme::Background.Value, ALIGN_TOPLEFT, std::format("CanPrimaryAttack: {} ([{:.3f} | {:.3f}] <= {:.3f})", G::CanPrimaryAttack, flPrimaryAttack, flAttack, flTime).c_str());
H::Draw.StringOutlined(fFont, x, y += nTall, Vars::Menu::Theme::Active.Value, Vars::Menu::Theme::Background.Value, ALIGN_TOPLEFT, std::format("CanSecondaryAttack: {} ([{:.3f} | {:.3f}] <= {:.3f})", G::CanSecondaryAttack, flSecondaryAttack, flAttack, flTime).c_str());
H::Draw.StringOutlined(fFont, x, y += nTall, Vars::Menu::Theme::Active.Value, Vars::Menu::Theme::Background.Value, ALIGN_TOPLEFT, std::format("Attack: {:.3f}, {:.3f}; {:.3f}", flTime - flPrimaryAttack, flTime - flSecondaryAttack, flTime - flAttack).c_str());
H::Draw.StringOutlined(fFont, x, y += nTall, Vars::Menu::Theme::Active.Value, Vars::Menu::Theme::Background.Value, ALIGN_TOPLEFT, std::format("Reload: {} ({} || {} != 0)", G::Reloading, pWeapon->m_bInReload(), pWeapon->m_iReloadMode()).c_str());
}
}
}
}
#undef PAIR
@@ -780,17 +779,20 @@ void CVisuals::ThirdPerson(CTFPlayer* pLocal, CViewSetup* pView)
{ // Thirdperson offset
Vec3 vForward, vRight, vUp; Math::AngleVectors(pView->angles, &vForward, &vRight, &vUp);
Vec3 offset;
offset += vRight * Vars::Visuals::ThirdPerson::Right.Value;
offset += vUp * Vars::Visuals::ThirdPerson::Up.Value;
offset -= vForward * Vars::Visuals::ThirdPerson::Distance.Value;
Vec3 vOffset;
float flScale = Vars::Visuals::ThirdPerson::Scale.Value ? pLocal->m_flModelScale() : 1.f;
vOffset += vRight * Vars::Visuals::ThirdPerson::Right.Value * flScale;
vOffset += vUp * Vars::Visuals::ThirdPerson::Up.Value * flScale;
vOffset -= vForward * Vars::Visuals::ThirdPerson::Distance.Value * flScale;
float flHull = 9.f * flScale;
Vec3 vMins = { -flHull, -flHull, -flHull }, vMaxs = { flHull, flHull, flHull };
Vec3 vDiff = pView->origin - pLocal->GetEyePosition();
const Vec3 viewDiff = pView->origin - pLocal->GetEyePosition();
CGameTrace trace = {};
CTraceFilterWorldAndPropsOnly filter = {};
SDK::TraceHull(pView->origin - viewDiff, pView->origin + offset - viewDiff, { -9.f, -9.f, -9.f }, { 9.f, 9.f, 9.f }, MASK_SOLID, &filter, &trace);
SDK::TraceHull(pView->origin - vDiff, pView->origin + vOffset - vDiff, vMins, vMaxs, MASK_SOLID, &filter, &trace);
pView->origin += offset * trace.fraction - viewDiff;
pView->origin += vOffset * trace.fraction - vDiff;
}
}
@@ -65,7 +65,14 @@ MAKE_HOOK(CBaseHudChatLine_InsertAndColorizeText, S::CBaseHudChatLine_InsertAndC
}
for (auto& [sFind, sReplace] : vReplace)
{
std::transform(sFind.begin(), sFind.end(), sFind.begin(), ::tolower);
{
std::string sReplace2 = sReplace;
std::transform(sFind.begin(), sFind.end(), sFind.begin(), ::tolower);
std::transform(sReplace2.begin(), sReplace2.end(), sReplace2.begin(), ::tolower);
if (FNV1A::Hash32(sFind.c_str()) == FNV1A::Hash32(sReplace2.c_str()))
continue;
}
while (true)
{
std::string sMessage2 = sMessage;
@@ -54,10 +54,21 @@ MAKE_HOOK(CClientModeShared_CreateMove, U::Memory.GetVFunc(I::ClientModeShared,
bool bCanAttack = pLocal->CanAttack();
switch (SDK::GetRoundState())
{
case GR_STATE_TEAM_WIN:
if (pLocal->m_iTeamNum() != SDK::GetWinningTeam())
bCanAttack = false;
break;
case GR_STATE_BETWEEN_RNDS:
if (pLocal->m_fFlags() & FL_FROZEN)
bCanAttack = false;
break;
case GR_STATE_GAME_OVER:
bCanAttack = bCanAttack && !(pLocal->m_fFlags() & FL_FROZEN);
if (pLocal->m_fFlags() & FL_FROZEN || pLocal->m_iTeamNum() != SDK::GetWinningTeam())
bCanAttack = false;
break;
}
if (pLocal->InCond(TF_COND_STUNNED) && pLocal->m_iStunFlags() & (TF_STUN_CONTROLS | TF_STUN_LOSER_STATE))
bCanAttack = false;
if (bCanAttack)
{
G::CanPrimaryAttack = pWeapon->CanPrimaryAttack();
@@ -2,10 +2,15 @@
#include "../Features/Players/PlayerUtils.h"
MAKE_SIGNATURE(GetPlayerNameForSteamID_GetFriendPersonaName_Call, "client.dll", "41 B9 ? ? ? ? 44 8B C3 48 8B C8", 0x0);
MAKE_HOOK(ISteamFriends_GetFriendPersonaName, U::Memory.GetVFunc(I::SteamFriends, 7), const char*,
void* rcx, CSteamID steamIDFriend)
{
if (Vars::Visuals::UI::StreamerMode.Value)
static const auto dwDesired = S::GetPlayerNameForSteamID_GetFriendPersonaName_Call();
const auto dwRetAddr = uintptr_t(_ReturnAddress());
if (Vars::Visuals::UI::StreamerMode.Value && dwRetAddr == dwDesired)
{
if (I::SteamUser->GetSteamID() == steamIDFriend)
{
@@ -3,7 +3,8 @@
#include "../../Core/Core.h"
#include "../../Utils/Assert/Assert.h"
#define Validate(x) if (!x) { U::Core.AppendFailText(std::format("CNullInterfaces::Initialize() failed to initialize {}", #x).c_str()); m_bFailed = true; }
#define Validate(x) if (!x) { U::Core.AppendFailText("CNullInterfaces::Initialize() failed to initialize "#x); m_bFailed = true; }
#define ValidateNonLethal(x) if (!x) { const char* sMessage = "CNullInterfaces::Initialize() failed to initialize "#x; MessageBox(nullptr, sMessage, "Warning", MB_OK | MB_ICONERROR); U::Core.AppendFailText(sMessage); }
MAKE_SIGNATURE(Get_TFPartyClient, "client.dll", "48 8B 05 ? ? ? ? C3 CC CC CC CC CC CC CC CC 48 89 5C 24 ? 48 89 74 24 ? 48 89 7C 24 ? 41 56", 0x0);
MAKE_SIGNATURE(Get_SteamNetworkingUtils, "client.dll", "40 53 48 83 EC ? 48 8B D9 48 8D 15 ? ? ? ? 33 C9 FF 15 ? ? ? ? 33 C9", 0x0);
@@ -26,7 +27,7 @@ bool CNullInterfaces::Initialize()
Validate(I::SteamUtils);
I::SteamApps = I::SteamClient->GetISteamApps(hsNewUser, hsNewPipe, STEAMAPPS_INTERFACE_VERSION);
Validate(I::SteamApps);
ValidateNonLethal(I::SteamApps);
I::SteamUserStats = I::SteamClient->GetISteamUserStats(hsNewUser, hsNewPipe, STEAMUSERSTATS_INTERFACE_VERSION);
Validate(I::SteamUserStats);
+11 -5
View File
@@ -23,7 +23,7 @@ BOOL CALLBACK TeamFortressWindow(HWND hwnd, LPARAM lParam)
void SDK::Output(const char* cFunction, const char* cLog, Color_t cColor, bool bConsole, bool bChat, bool bToast, bool bDebug, int bMessageBox)
void SDK::Output(const char* cFunction, const char* cLog, Color_t cColor, bool bConsole, bool bChat, bool bToast, bool bDebug, int iMessageBox)
{
if (cLog)
{
@@ -38,8 +38,8 @@ void SDK::Output(const char* cFunction, const char* cLog, Color_t cColor, bool b
F::Notifications.Add(std::format("[{}] {}", cFunction, cLog));
if (bDebug)
OutputDebugString(std::format("[{}] {}\n", cFunction, cLog).c_str());
if (bMessageBox != -1)
MessageBox(nullptr, cLog, cFunction, bMessageBox);
if (iMessageBox != -1)
MessageBox(nullptr, cLog, cFunction, iMessageBox);
}
else
{
@@ -51,8 +51,8 @@ void SDK::Output(const char* cFunction, const char* cLog, Color_t cColor, bool b
F::Notifications.Add(std::format("{}", cFunction));
if (bDebug)
OutputDebugString(std::format("{}\n", cFunction).c_str());
if (bMessageBox != -1)
MessageBox(nullptr, "", cFunction, bMessageBox);
if (iMessageBox != -1)
MessageBox(nullptr, "", cFunction, iMessageBox);
}
}
@@ -323,6 +323,12 @@ int SDK::GetRoundState()
return pGameRules->m_iRoundState();
return 0;
}
int SDK::GetWinningTeam()
{
if (auto pGameRules = I::TFGameRules->Get())
return pGameRules->m_iWinningTeam();
return 0;
}
EWeaponType SDK::GetWeaponType(CTFWeaponBase* pWeapon, EWeaponType* pSecondaryType)
{
+2 -1
View File
@@ -65,7 +65,7 @@ template <typename T> int sign(T val)
namespace SDK
{
void Output(const char* cFunction, const char* cLog = nullptr, Color_t cColor = { 255, 255, 255, 255 }, bool bConsole = true, bool bChat = false, bool bToast = false, bool bDebug = false, int bMessageBox = -1);
void Output(const char* cFunction, const char* cLog = nullptr, Color_t cColor = { 255, 255, 255, 255 }, bool bConsole = true, bool bChat = false, bool bToast = false, bool bDebug = false, int iMessageBox = -1);
HWND GetTeamFortressWindow();
bool IsGameWindowInFocus();
@@ -98,6 +98,7 @@ namespace SDK
bool VisPosWorld(CBaseEntity* pSkip, const CBaseEntity* pEntity, const Vec3& from, const Vec3& to, unsigned int nMask = MASK_SHOT | CONTENTS_GRATE);
int GetRoundState();
int GetWinningTeam();
EWeaponType GetWeaponType(CTFWeaponBase* pWeapon, EWeaponType* pSecondaryType = nullptr);
const char* GetClassByIndex(const int nClass);
+1
View File
@@ -589,6 +589,7 @@ namespace Vars
CVar(Right, 0.f, VISUAL)
CVar(Up, 0.f, VISUAL)
CVar(Crosshair, false, VISUAL)
CVar(Scale, true, DEBUGVAR)
SUBNAMESPACE_END(ThirdPerson)
SUBNAMESPACE_BEGIN(FOVArrows)