Skip to content

Commit

Permalink
Added projectile text esp, Fixes to Streamer mode
Browse files Browse the repository at this point in the history
This closes #5
  • Loading branch information
Viceroyy committed Aug 8, 2024
1 parent 577eaa3 commit 2f751e3
Show file tree
Hide file tree
Showing 5 changed files with 97 additions and 9 deletions.
2 changes: 1 addition & 1 deletion Fusion/src/Core/Core.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -114,7 +114,7 @@ void CCore::Load()

F::Configs.LoadConfig(F::Configs.sCurrentConfig, false);

Sleep(150);
Sleep(250);

H::Fonts.Reload();
F::Menu.ConfigLoaded = true;
Expand Down
2 changes: 1 addition & 1 deletion Fusion/src/Features/ImGui/Menu/Menu.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -342,7 +342,7 @@ void CMenu::MenuVisuals()
TableNextColumn();
if (Section("ESP"))
{
FDropdown("Draw", Vars::ESP::Draw, { "Enemy", "Team", "Local", "Friends", "Priority", "NPCs", "Health", "Ammo", "Money", "Bombs", "Spellbook", "Gargoyle", "Intel" }, {}, FDropdown_Multi);
FDropdown("Draw", Vars::ESP::Draw, { "Enemy", "Team", "Local", "Friends", "Priority", "NPCs", "Health", "Ammo", "Money", "Bombs", "Spellbook", "Gargoyle", "Intel", "Projectile" }, {}, FDropdown_Multi);
FDropdown("Player", Vars::ESP::Player, { "Name", "Health bar", "Health text", "Uber bar", "Uber text", "Class icon", "Class text", "Weapon icon", "Weapon text", "Distance", "Box", "Bones", "Priority", "Labels", "Buffs", "Debuffs", "Misc", "Lag compensation", "Ping", "KDR" }, {}, FDropdown_Multi);
FDropdown("Building", Vars::ESP::Building, { "Name", "Health bar", "Health text", "Distance", "Box", "Owner", "Level", "Conditions" }, {}, FDropdown_Multi);
} EndSection();
Expand Down
97 changes: 90 additions & 7 deletions Fusion/src/Features/Visuals/ESP/ESP.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -593,7 +593,22 @@ void CESP::DrawBuildings(CTFPlayer* pLocal)
if (I::EngineClient->GetPlayerInfo(pOwner->entindex(), &pi))
{
tOffset += fFontName.m_nTall + 2;
H::Draw.String(fFontName, x + w / 2, y - tOffset, { 254, 202, 87, 255 }, ALIGN_TOP, L"%ls", SDK::ConvertUtf8ToWide(pi.name).data());
if (Vars::Visuals::UI::StreamerMode.Value)
{
const char* name;
if (pOwner->entindex() == I::EngineClient->GetLocalPlayer())
name = "You";
else if (H::Entities.IsFriend(pOwner->entindex()))
name = "Friend";
else if (pOwner->m_iTeamNum() != pLocal->m_iTeamNum())
name = "Enemy";
else if (pOwner->m_iTeamNum() == pLocal->m_iTeamNum())
name = "Teammate";

H::Draw.String(fFontName, x + w / 2, y - tOffset, { 254, 202, 87, 255 }, ALIGN_TOP, name);
}
else
H::Draw.String(fFontName, x + w / 2, y - tOffset, { 254, 202, 87, 255 }, ALIGN_TOP, L"%ls", SDK::ConvertUtf8ToWide(pi.name).data());
}
}

Expand Down Expand Up @@ -742,12 +757,9 @@ void CESP::DrawWorld()
const wchar_t* szName;
switch (pBomb->GetClassID())
{
case ETFClassID::CTFPumpkinBomb:
szName = L"Pumpkin Bomb"; break;
case ETFClassID::CTFGenericBomb:
szName = L"Bomb"; break;
default:
szName = L"Unknown Bomb"; break;
case ETFClassID::CTFPumpkinBomb: szName = L"Pumpkin Bomb"; break;
case ETFClassID::CTFGenericBomb: szName = L"Bomb"; break;
default: szName = L"Unknown Bomb"; break;
}

H::Draw.String(fFontName, x + w / 2, y - nTextTopOffset, Vars::Colors::Bomb.Value, ALIGN_TOP, szName);
Expand Down Expand Up @@ -814,6 +826,77 @@ void CESP::DrawWorld()
}
}

if (Vars::ESP::Draw.Value & 1 << 13)
{
for (auto Projectile : H::Entities.GetGroup(EGroupType::WORLD_PROJECTILES))
{
int x = 0, y = 0, w = 0, h = 0;
if (GetDrawBounds(Projectile, x, y, w, h))
{
const wchar_t* szName;
switch (Projectile->GetClassID())
{
case ETFClassID::CTFProjectile_Rocket:
case ETFClassID::CTFProjectile_SentryRocket:
szName = L"Rocket"; break;
case ETFClassID::CTFGrenadePipebombProjectile:
{
switch (Projectile->As<CTFGrenadePipebombProjectile>()->m_iType())
{
case TF_GL_MODE_REMOTE_DETONATE:
case TF_GL_MODE_REMOTE_DETONATE_PRACTICE:
szName = L"Sticky"; break;
case TF_GL_MODE_CANNONBALL:
szName = L"Cannonball"; break;
default: szName = L"Pipe"; break;
}
break;
}
case ETFClassID::CTFProjectile_ThrowableBreadMonster:
szName = L"Bread Monster"; break;
case ETFClassID::CTFProjectile_Jar:
szName = L"Jarate"; break;
case ETFClassID::CTFProjectile_JarGas:
szName = L"Gas Can"; break;
case ETFClassID::CTFProjectile_JarMilk:
szName = L"Milk"; break;
case ETFClassID::CTFProjectile_Arrow:
{
if (Projectile->GetAbsVelocity().IsZero())
continue;
szName = L"Arrow"; break;
}
case ETFClassID::CTFProjectile_Flare:
szName = L"Flare"; break;
case ETFClassID::CTFProjectile_Cleaver:
szName = L"Cleaver"; break;
case ETFClassID::CTFProjectile_EnergyBall:
szName = L"Energy Ball"; break;
case ETFClassID::CTFProjectile_EnergyRing:
szName = L"Laser"; break;
case ETFClassID::CTFProjectile_HealingBolt:
szName = L"Heal Arrow"; break;
case ETFClassID::CTFStunBall:
{
if (Projectile->As<CTFGrenadePipebombProjectile>()->m_bTouched())
continue;
szName = L"Baseball"; break;
}
case ETFClassID::CTFBall_Ornament:
szName = L"Ornament Ball"; break;
case ETFClassID::CTFProjectile_MechanicalArmOrb:
szName = L"Energy Orb"; break;
case ETFClassID::CTFProjectile_BallOfFire:
szName = L"Fireball"; break;
default: szName = L"Unknown Projectile"; break;
}

const Color_t drawColor = H::Color.GetEntityDrawColor(H::Entities.GetLocal(), Projectile, Vars::Colors::Relative.Value);
H::Draw.String(fFontName, x + w / 2, y - nTextTopOffset, drawColor, ALIGN_TOP, szName);
}
}
}

I::MatSystemSurface->DrawSetAlphaMultiplier(1.f);
}

Expand Down
2 changes: 2 additions & 0 deletions Fusion/src/SDK/Helpers/Entities/Entities.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -119,6 +119,8 @@ void CEntities::Fill()
case ETFClassID::CTFProjectile_ThrowableBreadMonster:
case ETFClassID::CTFStunBall:
case ETFClassID::CTFBall_Ornament:
case ETFClassID::CTFProjectile_MechanicalArmOrb:
case ETFClassID::CTFProjectile_BallOfFire:
{
m_mGroups[EGroupType::WORLD_PROJECTILES].push_back(pEntity);

Expand Down
3 changes: 3 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,9 @@

# Fusion for Team Fortress 2, fork of Amalgam by rei-kes
With a few more features here and there, notable changes include;
- Medigun and rocket trail particle changer
- WIP Streamer mode that barely works
- Projectile text esp
- A killstreak changer that doesn't work
- Backtrack to crosshair
- Player cosmetics removal
Expand Down

0 comments on commit 2f751e3

Please sign in to comment.