mirror of
https://github.com/rei-2/Amalgam
synced 2026-10-10 04:43:09 +08:00
move hvh tab, update readme
This commit is contained in:
Binary file not shown.
|
After Width: | Height: | Size: 9.2 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 9.6 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 227 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 562 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 23 KiB |
@@ -853,7 +853,7 @@ void CAimbotHitscan::Run(CTFPlayer* pLocal, CTFWeaponBase* pWeapon, CUserCmd* pC
|
||||
}
|
||||
|
||||
if (Vars::Aimbot::Hitscan::Modifiers.Value & Vars::Aimbot::Hitscan::ModifiersEnum::Tapfire && pWeapon->GetWeaponSpread() != 0.f && !pLocal->InCond(TF_COND_RUNE_PRECISION)
|
||||
&& m_vEyePos.DistTo(tTarget.m_vPos) > Vars::Aimbot::Hitscan::TapFireDist.Value)
|
||||
&& m_vEyePos.DistTo(tTarget.m_vPos) > Vars::Aimbot::Hitscan::TapfireDistance.Value)
|
||||
{
|
||||
const float flTimeSinceLastShot = (pLocal->m_nTickBase() * TICK_INTERVAL) - pWeapon->m_flLastFireTime();
|
||||
if (flTimeSinceLastShot <= (pWeapon->GetBulletsPerShot() > 1 ? 0.25f : 1.25f))
|
||||
|
||||
@@ -2068,7 +2068,7 @@ namespace ImGui
|
||||
// str = std::format("{:#x}", key);
|
||||
return str;
|
||||
}
|
||||
inline void FKeybind(const char* sLabel, int& iOutput, int iFlags = FKeybindEnum::None, std::vector<int> vIgnore = { Vars::Menu::MenuPrimaryKey[DEFAULT_BIND], Vars::Menu::MenuSecondaryKey[DEFAULT_BIND] }, ImVec2 vSize = { 0, 30 }, int iSizeOffset = 0, bool* pHovered = nullptr)
|
||||
inline void FKeybind(const char* sLabel, int& iOutput, int iFlags = FKeybindEnum::None, std::vector<int> vIgnore = { Vars::Menu::PrimaryKey[DEFAULT_BIND], Vars::Menu::SecondaryKey[DEFAULT_BIND] }, ImVec2 vSize = { 0, 30 }, int iSizeOffset = 0, bool* pHovered = nullptr)
|
||||
{
|
||||
ImGuiID uId = GetID(sLabel);
|
||||
PushID(sLabel);
|
||||
@@ -2126,7 +2126,7 @@ namespace ImGui
|
||||
|
||||
PopID();
|
||||
}
|
||||
inline void FKeybind(ConfigVar<int>& var, int iFlags = FKeybindEnum::None, std::vector<int> vIgnore = { Vars::Menu::MenuPrimaryKey[DEFAULT_BIND], Vars::Menu::MenuSecondaryKey[DEFAULT_BIND] }, ImVec2 vSize = { 0, 30 }, int iSizeOffset = 0, bool* pHovered = nullptr)
|
||||
inline void FKeybind(ConfigVar<int>& var, int iFlags = FKeybindEnum::None, std::vector<int> vIgnore = { Vars::Menu::PrimaryKey[DEFAULT_BIND], Vars::Menu::SecondaryKey[DEFAULT_BIND] }, ImVec2 vSize = { 0, 30 }, int iSizeOffset = 0, bool* pHovered = nullptr)
|
||||
{
|
||||
FKeybind(var.m_vTitle.front(), var[DEFAULT_BIND], iFlags, vIgnore, vSize, iSizeOffset, pHovered);
|
||||
}
|
||||
@@ -2541,7 +2541,7 @@ namespace ImGui
|
||||
|
||||
if (tBind.m_iType == BindEnum::Key)
|
||||
{
|
||||
FKeybind("Key", tBind.m_iKey, FKeybindEnum::None, { Vars::Menu::MenuPrimaryKey[DEFAULT_BIND], Vars::Menu::MenuSecondaryKey[DEFAULT_BIND] }, { 0, 30 }, 0, &bHovered);
|
||||
FKeybind("Key", tBind.m_iKey, FKeybindEnum::None, { Vars::Menu::PrimaryKey[DEFAULT_BIND], Vars::Menu::SecondaryKey[DEFAULT_BIND] }, { 0, 30 }, 0, &bHovered);
|
||||
bLastHovered = bLastHovered || bHovered;
|
||||
}
|
||||
|
||||
|
||||
@@ -73,13 +73,13 @@ void CMenu::DrawMenu()
|
||||
PushFont(F::Render.FontBold);
|
||||
FTabs(
|
||||
{
|
||||
{ "AIMBOT", "GENERAL", "HVH", "DRAW" },
|
||||
{ "AIMBOT", "GENERAL", "DRAW" },
|
||||
{ "VISUALS", "ESP", "MISC##", "MENU" },
|
||||
{ "MISC" },
|
||||
{ "MISC", "MAIN", "HVH" },
|
||||
{ "LOGS", "PLAYERLIST", "SETTINGS##", "OUTPUT" },
|
||||
{ "SETTINGS", "CONFIG", "BINDS", "MATERIALS", "EXTRA" }
|
||||
},
|
||||
{ &iTab, &iAimbotTab, &iVisualsTab, nullptr, &iLogsTab, &iSettingsTab },
|
||||
{ &iTab, &iAimbotTab, &iVisualsTab, &iMiscTab, &iLogsTab, &iSettingsTab },
|
||||
{ H::Draw.Scale(flSideSize - 16), H::Draw.Scale(36) },
|
||||
{ H::Draw.Scale(8), H::Draw.Scale(8) + flOffset },
|
||||
FTabsEnum::Vertical | FTabsEnum::HorizontalIcons | FTabsEnum::AlignLeft | FTabsEnum::BarLeft,
|
||||
@@ -225,7 +225,7 @@ void CMenu::MenuAimbot(int iTab)
|
||||
FSlider(Vars::Aimbot::Hitscan::PointScale);
|
||||
PushTransparent(!(Vars::Aimbot::Hitscan::Modifiers.Value & Vars::Aimbot::Hitscan::ModifiersEnum::Tapfire));
|
||||
{
|
||||
FSlider(Vars::Aimbot::Hitscan::TapFireDist);
|
||||
FSlider(Vars::Aimbot::Hitscan::TapfireDistance);
|
||||
}
|
||||
PopTransparent();
|
||||
} EndSection();
|
||||
@@ -335,153 +335,8 @@ void CMenu::MenuAimbot(int iTab)
|
||||
}
|
||||
break;
|
||||
}
|
||||
// HvH
|
||||
case 1:
|
||||
{
|
||||
if (BeginTable("HvHTable", 2))
|
||||
{
|
||||
/* Column 1 */
|
||||
TableNextColumn();
|
||||
{
|
||||
if (Section("Doubletap", 8))
|
||||
{
|
||||
FToggle(Vars::Doubletap::Doubletap, FToggleEnum::Left);
|
||||
FToggle(Vars::Doubletap::Warp, FToggleEnum::Right);
|
||||
FToggle(Vars::Doubletap::RechargeTicks, FToggleEnum::Left);
|
||||
FToggle(Vars::Doubletap::AntiWarp, FToggleEnum::Right);
|
||||
FSlider(Vars::Doubletap::TickLimit, FSliderEnum::Left);
|
||||
FSlider(Vars::Doubletap::WarpRate, FSliderEnum::Right);
|
||||
FSlider(Vars::Doubletap::RechargeLimit, FSliderEnum::Left);
|
||||
FSlider(Vars::Doubletap::PassiveRecharge, FSliderEnum::Right);
|
||||
} EndSection();
|
||||
if (Section("Fakelag"))
|
||||
{
|
||||
FDropdown(Vars::Fakelag::Fakelag, FSliderEnum::Left);
|
||||
FDropdown(Vars::Fakelag::Options, FDropdownEnum::Right);
|
||||
PushTransparent(Vars::Fakelag::Fakelag.Value != Vars::Fakelag::FakelagEnum::Plain);
|
||||
{
|
||||
FSlider(Vars::Fakelag::PlainTicks, FSliderEnum::Left);
|
||||
}
|
||||
PopTransparent();
|
||||
PushTransparent(Vars::Fakelag::Fakelag.Value != Vars::Fakelag::FakelagEnum::Random);
|
||||
{
|
||||
FSlider(Vars::Fakelag::RandomTicks, FSliderEnum::Right);
|
||||
}
|
||||
PopTransparent();
|
||||
FToggle(Vars::Fakelag::UnchokeOnAttack, FToggleEnum::Left);
|
||||
FToggle(Vars::Fakelag::RetainBlastJump, FToggleEnum::Right);
|
||||
} EndSection();
|
||||
if (Vars::Debug::Options.Value)
|
||||
{
|
||||
if (Section("##Debug"))
|
||||
{
|
||||
FToggle(Vars::Fakelag::RetainSoldierOnly);
|
||||
} EndSection();
|
||||
}
|
||||
if (Section("Antiaim", 8))
|
||||
{
|
||||
FToggle(Vars::AntiAim::Enabled);
|
||||
FDropdown(Vars::AntiAim::PitchReal, FDropdownEnum::Left);
|
||||
FDropdown(Vars::AntiAim::PitchFake, FDropdownEnum::Right);
|
||||
FDropdown(Vars::AntiAim::YawReal, FDropdownEnum::Left);
|
||||
FDropdown(Vars::AntiAim::YawFake, FDropdownEnum::Right);
|
||||
FDropdown(Vars::AntiAim::RealYawMode, FDropdownEnum::Left);
|
||||
FDropdown(Vars::AntiAim::FakeYawMode, FDropdownEnum::Right);
|
||||
FSlider(Vars::AntiAim::RealYawOffset, FSliderEnum::Left);
|
||||
FSlider(Vars::AntiAim::FakeYawOffset, FSliderEnum::Right);
|
||||
PushTransparent(Vars::AntiAim::YawReal.Value != Vars::AntiAim::YawEnum::Edge && Vars::AntiAim::YawReal.Value != Vars::AntiAim::YawEnum::Jitter);
|
||||
{
|
||||
FSlider(Vars::AntiAim::RealYawValue, FSliderEnum::Left);
|
||||
}
|
||||
PopTransparent();
|
||||
PushTransparent(Vars::AntiAim::YawFake.Value != Vars::AntiAim::YawEnum::Edge && Vars::AntiAim::YawFake.Value != Vars::AntiAim::YawEnum::Jitter);
|
||||
{
|
||||
FSlider(Vars::AntiAim::FakeYawValue, FSliderEnum::Right);
|
||||
}
|
||||
PopTransparent();
|
||||
PushTransparent(Vars::AntiAim::YawFake.Value != Vars::AntiAim::YawEnum::Spin && Vars::AntiAim::YawReal.Value != Vars::AntiAim::YawEnum::Spin);
|
||||
{
|
||||
FSlider(Vars::AntiAim::SpinSpeed, FSliderEnum::Left);
|
||||
}
|
||||
PopTransparent();
|
||||
SetCursorPos({ GetWindowWidth() / 2 + GetStyle().WindowPadding.x / 2, GetRowPos() + H::Draw.Scale(8) });
|
||||
FToggle(Vars::AntiAim::MinWalk, FToggleEnum::Left);
|
||||
FToggle(Vars::AntiAim::AntiOverlap, FToggleEnum::Left);
|
||||
FToggle(Vars::AntiAim::InvalidShootPitch, FToggleEnum::Right);
|
||||
} EndSection();
|
||||
}
|
||||
/* Column 2 */
|
||||
TableNextColumn();
|
||||
{
|
||||
if (Section("Resolver", 8))
|
||||
{
|
||||
FToggle(Vars::Resolver::Enabled, FToggleEnum::Left);
|
||||
PushTransparent(!Vars::Resolver::Enabled.Value);
|
||||
{
|
||||
FToggle(Vars::Resolver::AutoResolve, FToggleEnum::Right);
|
||||
PushTransparent(Transparent || !Vars::Resolver::AutoResolve.Value);
|
||||
{
|
||||
FToggle(Vars::Resolver::AutoResolveCheatersOnly, FToggleEnum::Left);
|
||||
FToggle(Vars::Resolver::AutoResolveHeadshotOnly, FToggleEnum::Right);
|
||||
PushTransparent(Transparent || !Vars::Resolver::AutoResolveYawAmount.Value);
|
||||
{
|
||||
FSlider(Vars::Resolver::AutoResolveYawAmount, FSliderEnum::Left);
|
||||
}
|
||||
PopTransparent();
|
||||
PushTransparent(Transparent || !Vars::Resolver::AutoResolvePitchAmount.Value);
|
||||
{
|
||||
FSlider(Vars::Resolver::AutoResolvePitchAmount, FSliderEnum::Right);
|
||||
}
|
||||
PopTransparent();
|
||||
}
|
||||
PopTransparent();
|
||||
FSlider(Vars::Resolver::CycleYaw, FSliderEnum::Left);
|
||||
FSlider(Vars::Resolver::CyclePitch, FSliderEnum::Right);
|
||||
FToggle(Vars::Resolver::CycleView, FToggleEnum::Left);
|
||||
FToggle(Vars::Resolver::CycleMinwalk, FToggleEnum::Right);
|
||||
}
|
||||
PopTransparent();
|
||||
} EndSection();
|
||||
if (Section("Auto Peek", 8))
|
||||
{
|
||||
FToggle(Vars::AutoPeek::Enabled);
|
||||
} EndSection();
|
||||
if (Section("Cheater Detection"))
|
||||
{
|
||||
FDropdown(Vars::CheaterDetection::Methods);
|
||||
PushTransparent(!Vars::CheaterDetection::DetectionsRequired.Value);
|
||||
{
|
||||
FSlider(Vars::CheaterDetection::DetectionsRequired);
|
||||
}
|
||||
PopTransparent();
|
||||
PushTransparent(!(Vars::CheaterDetection::Methods.Value & Vars::CheaterDetection::MethodsEnum::PacketChoking));
|
||||
{
|
||||
FSlider(Vars::CheaterDetection::MinimumChoking);
|
||||
}
|
||||
PopTransparent();
|
||||
PushTransparent(!(Vars::CheaterDetection::Methods.Value & Vars::CheaterDetection::MethodsEnum::AimFlicking));
|
||||
{
|
||||
FSlider(Vars::CheaterDetection::MinimumFlick, FSliderEnum::Left);
|
||||
FSlider(Vars::CheaterDetection::MaximumNoise, FSliderEnum::Right);
|
||||
}
|
||||
PopTransparent();
|
||||
} EndSection();
|
||||
if (Section("Speedhack", 8))
|
||||
{
|
||||
FToggle(Vars::Speedhack::Enabled);
|
||||
PushTransparent(!Vars::Speedhack::Enabled.Value);
|
||||
{
|
||||
FSlider(Vars::Speedhack::Amount);
|
||||
}
|
||||
PopTransparent();
|
||||
} EndSection();
|
||||
}
|
||||
EndTable();
|
||||
}
|
||||
break;
|
||||
}
|
||||
// Draw
|
||||
case 2:
|
||||
case 1:
|
||||
{
|
||||
if (BeginTable("DrawTable", 2))
|
||||
{
|
||||
@@ -1013,7 +868,7 @@ void CMenu::MenuVisuals(int iTab)
|
||||
/* Column 1 */
|
||||
TableNextColumn();
|
||||
{
|
||||
if (Section("Menu", 8))
|
||||
if (Section("Settings", 8))
|
||||
{
|
||||
FColorPicker(Vars::Menu::Theme::Accent, FColorPickerEnum::Left);
|
||||
FColorPicker(Vars::Menu::Theme::Background, FColorPickerEnum::Right);
|
||||
@@ -1022,8 +877,8 @@ void CMenu::MenuVisuals(int iTab)
|
||||
|
||||
FSDropdown(Vars::Menu::CheatTitle, FDropdownEnum::Left);
|
||||
FSDropdown(Vars::Menu::CheatTag, FDropdownEnum::Right);
|
||||
FKeybind(Vars::Menu::MenuPrimaryKey, FButtonEnum::Left, { Vars::Menu::MenuSecondaryKey[DEFAULT_BIND], VK_LBUTTON, VK_RBUTTON });
|
||||
FKeybind(Vars::Menu::MenuSecondaryKey, FButtonEnum::Right | FButtonEnum::SameLine, { Vars::Menu::MenuPrimaryKey[DEFAULT_BIND], VK_LBUTTON, VK_RBUTTON });
|
||||
FKeybind(Vars::Menu::PrimaryKey, FButtonEnum::Left, { Vars::Menu::SecondaryKey[DEFAULT_BIND], VK_LBUTTON, VK_RBUTTON });
|
||||
FKeybind(Vars::Menu::SecondaryKey, FButtonEnum::Right | FButtonEnum::SameLine, { Vars::Menu::PrimaryKey[DEFAULT_BIND], VK_LBUTTON, VK_RBUTTON });
|
||||
} EndSection();
|
||||
}
|
||||
/* Column 2 */
|
||||
@@ -1054,6 +909,7 @@ void CMenu::MenuVisuals(int iTab)
|
||||
}
|
||||
EndTable();
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1064,6 +920,7 @@ void CMenu::MenuMisc(int iTab)
|
||||
|
||||
switch (iTab)
|
||||
{
|
||||
// Main
|
||||
case 0:
|
||||
{
|
||||
if (BeginTable("MiscTable", 2))
|
||||
@@ -1088,7 +945,7 @@ void CMenu::MenuMisc(int iTab)
|
||||
FToggle(Vars::Misc::Movement::AutoCTap, FToggleEnum::Right);
|
||||
FToggle(Vars::Misc::Movement::FastStop, FToggleEnum::Left);
|
||||
FToggle(Vars::Misc::Movement::FastAccelerate, FToggleEnum::Right);
|
||||
FToggle(Vars::Misc::Movement::CrouchSpeed, FToggleEnum::Left);
|
||||
FToggle(Vars::Misc::Movement::DuckSpeed, FToggleEnum::Left);
|
||||
FToggle(Vars::Misc::Movement::MovementLock, FToggleEnum::Right);
|
||||
FToggle(Vars::Misc::Movement::BreakJump, FToggleEnum::Left);
|
||||
FToggle(Vars::Misc::Movement::ShieldTurnRate, FToggleEnum::Right);
|
||||
@@ -1166,6 +1023,152 @@ void CMenu::MenuMisc(int iTab)
|
||||
}
|
||||
EndTable();
|
||||
}
|
||||
break;
|
||||
}
|
||||
// HvH
|
||||
case 1:
|
||||
{
|
||||
if (BeginTable("HvHTable", 2))
|
||||
{
|
||||
/* Column 1 */
|
||||
TableNextColumn();
|
||||
{
|
||||
if (Section("Doubletap", 8))
|
||||
{
|
||||
FToggle(Vars::Doubletap::Doubletap, FToggleEnum::Left);
|
||||
FToggle(Vars::Doubletap::Warp, FToggleEnum::Right);
|
||||
FToggle(Vars::Doubletap::RechargeTicks, FToggleEnum::Left);
|
||||
FToggle(Vars::Doubletap::AntiWarp, FToggleEnum::Right);
|
||||
FSlider(Vars::Doubletap::TickLimit, FSliderEnum::Left);
|
||||
FSlider(Vars::Doubletap::WarpRate, FSliderEnum::Right);
|
||||
FSlider(Vars::Doubletap::RechargeLimit, FSliderEnum::Left);
|
||||
FSlider(Vars::Doubletap::PassiveRecharge, FSliderEnum::Right);
|
||||
} EndSection();
|
||||
if (Section("Fakelag"))
|
||||
{
|
||||
FDropdown(Vars::Fakelag::Fakelag, FSliderEnum::Left);
|
||||
FDropdown(Vars::Fakelag::Options, FDropdownEnum::Right);
|
||||
PushTransparent(Vars::Fakelag::Fakelag.Value != Vars::Fakelag::FakelagEnum::Plain);
|
||||
{
|
||||
FSlider(Vars::Fakelag::PlainTicks, FSliderEnum::Left);
|
||||
}
|
||||
PopTransparent();
|
||||
PushTransparent(Vars::Fakelag::Fakelag.Value != Vars::Fakelag::FakelagEnum::Random);
|
||||
{
|
||||
FSlider(Vars::Fakelag::RandomTicks, FSliderEnum::Right);
|
||||
}
|
||||
PopTransparent();
|
||||
FToggle(Vars::Fakelag::UnchokeOnAttack, FToggleEnum::Left);
|
||||
FToggle(Vars::Fakelag::RetainBlastJump, FToggleEnum::Right);
|
||||
} EndSection();
|
||||
if (Vars::Debug::Options.Value)
|
||||
{
|
||||
if (Section("##Debug"))
|
||||
{
|
||||
FToggle(Vars::Fakelag::RetainSoldierOnly);
|
||||
} EndSection();
|
||||
}
|
||||
if (Section("Antiaim", 8))
|
||||
{
|
||||
FToggle(Vars::AntiAim::Enabled);
|
||||
FDropdown(Vars::AntiAim::PitchReal, FDropdownEnum::Left);
|
||||
FDropdown(Vars::AntiAim::PitchFake, FDropdownEnum::Right);
|
||||
FDropdown(Vars::AntiAim::YawReal, FDropdownEnum::Left);
|
||||
FDropdown(Vars::AntiAim::YawFake, FDropdownEnum::Right);
|
||||
FDropdown(Vars::AntiAim::RealYawBase, FDropdownEnum::Left);
|
||||
FDropdown(Vars::AntiAim::FakeYawBase, FDropdownEnum::Right);
|
||||
FSlider(Vars::AntiAim::RealYawOffset, FSliderEnum::Left);
|
||||
FSlider(Vars::AntiAim::FakeYawOffset, FSliderEnum::Right);
|
||||
PushTransparent(Vars::AntiAim::YawReal.Value != Vars::AntiAim::YawEnum::Edge && Vars::AntiAim::YawReal.Value != Vars::AntiAim::YawEnum::Jitter);
|
||||
{
|
||||
FSlider(Vars::AntiAim::RealYawValue, FSliderEnum::Left);
|
||||
}
|
||||
PopTransparent();
|
||||
PushTransparent(Vars::AntiAim::YawFake.Value != Vars::AntiAim::YawEnum::Edge && Vars::AntiAim::YawFake.Value != Vars::AntiAim::YawEnum::Jitter);
|
||||
{
|
||||
FSlider(Vars::AntiAim::FakeYawValue, FSliderEnum::Right);
|
||||
}
|
||||
PopTransparent();
|
||||
PushTransparent(Vars::AntiAim::YawFake.Value != Vars::AntiAim::YawEnum::Spin && Vars::AntiAim::YawReal.Value != Vars::AntiAim::YawEnum::Spin);
|
||||
{
|
||||
FSlider(Vars::AntiAim::SpinSpeed, FSliderEnum::Left);
|
||||
}
|
||||
PopTransparent();
|
||||
SetCursorPos({ GetWindowWidth() / 2 + GetStyle().WindowPadding.x / 2, GetRowPos() + H::Draw.Scale(8) });
|
||||
FToggle(Vars::AntiAim::MinWalk, FToggleEnum::Left);
|
||||
FToggle(Vars::AntiAim::AntiOverlap, FToggleEnum::Left);
|
||||
FToggle(Vars::AntiAim::InvalidShootPitch, FToggleEnum::Right);
|
||||
} EndSection();
|
||||
}
|
||||
/* Column 2 */
|
||||
TableNextColumn();
|
||||
{
|
||||
if (Section("Resolver", 8))
|
||||
{
|
||||
FToggle(Vars::Resolver::Enabled, FToggleEnum::Left);
|
||||
PushTransparent(!Vars::Resolver::Enabled.Value);
|
||||
{
|
||||
FToggle(Vars::Resolver::AutoResolve, FToggleEnum::Right);
|
||||
PushTransparent(Transparent || !Vars::Resolver::AutoResolve.Value);
|
||||
{
|
||||
FToggle(Vars::Resolver::AutoResolveCheatersOnly, FToggleEnum::Left);
|
||||
FToggle(Vars::Resolver::AutoResolveHeadshotOnly, FToggleEnum::Right);
|
||||
PushTransparent(Transparent || !Vars::Resolver::AutoResolveYawAmount.Value);
|
||||
{
|
||||
FSlider(Vars::Resolver::AutoResolveYawAmount, FSliderEnum::Left);
|
||||
}
|
||||
PopTransparent();
|
||||
PushTransparent(Transparent || !Vars::Resolver::AutoResolvePitchAmount.Value);
|
||||
{
|
||||
FSlider(Vars::Resolver::AutoResolvePitchAmount, FSliderEnum::Right);
|
||||
}
|
||||
PopTransparent();
|
||||
}
|
||||
PopTransparent();
|
||||
FSlider(Vars::Resolver::CycleYaw, FSliderEnum::Left);
|
||||
FSlider(Vars::Resolver::CyclePitch, FSliderEnum::Right);
|
||||
FToggle(Vars::Resolver::CycleView, FToggleEnum::Left);
|
||||
FToggle(Vars::Resolver::CycleMinwalk, FToggleEnum::Right);
|
||||
}
|
||||
PopTransparent();
|
||||
} EndSection();
|
||||
if (Section("Auto Peek", 8))
|
||||
{
|
||||
FToggle(Vars::AutoPeek::Enabled);
|
||||
} EndSection();
|
||||
if (Section("Cheater Detection"))
|
||||
{
|
||||
FDropdown(Vars::CheaterDetection::Methods);
|
||||
PushTransparent(!Vars::CheaterDetection::DetectionsRequired.Value);
|
||||
{
|
||||
FSlider(Vars::CheaterDetection::DetectionsRequired);
|
||||
}
|
||||
PopTransparent();
|
||||
PushTransparent(!(Vars::CheaterDetection::Methods.Value & Vars::CheaterDetection::MethodsEnum::PacketChoking));
|
||||
{
|
||||
FSlider(Vars::CheaterDetection::MinimumChoking);
|
||||
}
|
||||
PopTransparent();
|
||||
PushTransparent(!(Vars::CheaterDetection::Methods.Value & Vars::CheaterDetection::MethodsEnum::AimFlicking));
|
||||
{
|
||||
FSlider(Vars::CheaterDetection::MinimumFlick, FSliderEnum::Left);
|
||||
FSlider(Vars::CheaterDetection::MaximumNoise, FSliderEnum::Right);
|
||||
}
|
||||
PopTransparent();
|
||||
} EndSection();
|
||||
if (Section("Speedhack", 8))
|
||||
{
|
||||
FToggle(Vars::Speedhack::Enabled);
|
||||
PushTransparent(!Vars::Speedhack::Enabled.Value);
|
||||
{
|
||||
FSlider(Vars::Speedhack::Amount);
|
||||
}
|
||||
PopTransparent();
|
||||
} EndSection();
|
||||
}
|
||||
EndTable();
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -2178,6 +2181,7 @@ void CMenu::MenuLogs(int iTab)
|
||||
}
|
||||
}
|
||||
} EndSection();
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -2430,7 +2434,7 @@ void CMenu::MenuSettings(int iTab)
|
||||
tBind.m_bNot = iNot;
|
||||
FDropdown("Visibility", &tBind.m_iVisibility, { "Always", "While active", "Hidden" }, {}, FDropdownEnum::Right);
|
||||
if (tBind.m_iType == 0)
|
||||
FKeybind("Key", tBind.m_iKey, FButtonEnum::None, { Vars::Menu::MenuPrimaryKey[DEFAULT_BIND], Vars::Menu::MenuSecondaryKey[DEFAULT_BIND] }, { 0, 40 }, -96);
|
||||
FKeybind("Key", tBind.m_iKey, FButtonEnum::None, { Vars::Menu::PrimaryKey[DEFAULT_BIND], Vars::Menu::SecondaryKey[DEFAULT_BIND] }, { 0, 40 }, -96);
|
||||
|
||||
// create/modify button
|
||||
bool bCreate = false, bClear = false, bParent = true;
|
||||
@@ -2841,7 +2845,7 @@ void CMenu::MenuSettings(int iTab)
|
||||
FToggle(Vars::Debug::VisualizeTraceHits, FToggleEnum::Right);
|
||||
#endif
|
||||
} EndSection();
|
||||
if (Section("Extra"))
|
||||
if (Section("Buttons"))
|
||||
{
|
||||
if (FButton("cl_fullupdate", FButtonEnum::Left))
|
||||
I::EngineClient->ClientCmd_Unrestricted("cl_fullupdate");
|
||||
@@ -2955,6 +2959,7 @@ void CMenu::MenuSettings(int iTab)
|
||||
}
|
||||
} EndSection();
|
||||
#endif
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -3166,14 +3171,14 @@ void CMenu::MenuSearch(std::string sSearch)
|
||||
std::vector<int> vIgnore;
|
||||
switch (FNV1A::Hash32(pVar->m_sName.c_str()))
|
||||
{
|
||||
case FNV1A::Hash32Const("Vars::Menu::MenuPrimaryKey"):
|
||||
vIgnore = { Vars::Menu::MenuSecondaryKey[DEFAULT_BIND], VK_LBUTTON, VK_RBUTTON };
|
||||
case FNV1A::Hash32Const("Vars::Menu::PrimaryKey"):
|
||||
vIgnore = { Vars::Menu::SecondaryKey[DEFAULT_BIND], VK_LBUTTON, VK_RBUTTON };
|
||||
break;
|
||||
case FNV1A::Hash32Const("Vars::Menu::MenuSecondaryKey"):
|
||||
vIgnore = { Vars::Menu::MenuPrimaryKey[DEFAULT_BIND], VK_LBUTTON, VK_RBUTTON };
|
||||
case FNV1A::Hash32Const("Vars::Menu::SecondaryKey"):
|
||||
vIgnore = { Vars::Menu::PrimaryKey[DEFAULT_BIND], VK_LBUTTON, VK_RBUTTON };
|
||||
break;
|
||||
default:
|
||||
vIgnore = { Vars::Menu::MenuPrimaryKey[DEFAULT_BIND], Vars::Menu::MenuSecondaryKey[DEFAULT_BIND] };
|
||||
vIgnore = { Vars::Menu::PrimaryKey[DEFAULT_BIND], Vars::Menu::SecondaryKey[DEFAULT_BIND] };
|
||||
}
|
||||
FKeybind(iOverride != -1 ? pVar->m_vTitle[iOverride] : pVar->m_vTitle.front(), pVar->Map[DEFAULT_BIND], !(i % 2) ? FButtonEnum::Left : FButtonEnum::Right | FButtonEnum::SameLine, vIgnore);
|
||||
break;
|
||||
@@ -3527,11 +3532,11 @@ void CMenu::Render()
|
||||
}
|
||||
else
|
||||
{
|
||||
U::KeyHandler.StoreKey(Vars::Menu::MenuPrimaryKey.Value);
|
||||
U::KeyHandler.StoreKey(Vars::Menu::MenuSecondaryKey.Value);
|
||||
U::KeyHandler.StoreKey(Vars::Menu::PrimaryKey.Value);
|
||||
U::KeyHandler.StoreKey(Vars::Menu::SecondaryKey.Value);
|
||||
U::KeyHandler.StoreKey(VK_F11);
|
||||
}
|
||||
if (U::KeyHandler.Pressed(Vars::Menu::MenuPrimaryKey.Value) || U::KeyHandler.Pressed(Vars::Menu::MenuSecondaryKey.Value))
|
||||
if (U::KeyHandler.Pressed(Vars::Menu::PrimaryKey.Value) || U::KeyHandler.Pressed(Vars::Menu::SecondaryKey.Value))
|
||||
I::MatSystemSurface->SetCursorAlwaysVisible(m_bIsOpen = !m_bIsOpen);
|
||||
|
||||
PushFont(F::Render.FontRegular);
|
||||
|
||||
@@ -14,8 +14,8 @@ void CAutoVote::UserMessage(bf_read& msgData)
|
||||
|
||||
if (Vars::Misc::Automation::AutoF2Ignored.Value
|
||||
&& (F::PlayerUtils.IsIgnored(iTarget)
|
||||
|| Vars::Aimbot::General::Ignore.Value & Vars::Aimbot::General::IgnoreEnum::Friends && H::Entities.IsFriend(iTarget)
|
||||
|| Vars::Aimbot::General::Ignore.Value & Vars::Aimbot::General::IgnoreEnum::Party && H::Entities.InParty(iTarget)))
|
||||
|| /*Vars::Aimbot::General::Ignore.Value & Vars::Aimbot::General::IgnoreEnum::Friends &&*/ H::Entities.IsFriend(iTarget)
|
||||
|| /*Vars::Aimbot::General::Ignore.Value & Vars::Aimbot::General::IgnoreEnum::Friends &&*/ H::Entities.InParty(iTarget)))
|
||||
{
|
||||
I::ClientState->SendStringCmd(std::format("vote {} option2", iVoteID).c_str());
|
||||
}
|
||||
|
||||
@@ -320,7 +320,7 @@ void CMisc::FastMovement(CTFPlayer* pLocal, CUserCmd* pCmd)
|
||||
}
|
||||
case 1:
|
||||
{
|
||||
if ((pLocal->IsDucking() ? !Vars::Misc::Movement::CrouchSpeed.Value : !Vars::Misc::Movement::FastAccelerate.Value)
|
||||
if ((pLocal->IsDucking() ? !Vars::Misc::Movement::DuckSpeed.Value : !Vars::Misc::Movement::FastAccelerate.Value)
|
||||
|| Vars::Misc::Game::AntiCheatCompatibility.Value
|
||||
|| G::Attacking == 1 || F::Ticks.m_bDoubletap || F::Ticks.m_bSpeedhack || F::Ticks.m_bRecharge || G::AntiAim || I::GlobalVars->tickcount % 2)
|
||||
return;
|
||||
|
||||
@@ -12,8 +12,8 @@ bool CAntiAim::AntiAimOn()
|
||||
|| Vars::AntiAim::PitchFake.Value
|
||||
|| Vars::AntiAim::YawReal.Value
|
||||
|| Vars::AntiAim::YawFake.Value
|
||||
|| Vars::AntiAim::RealYawMode.Value
|
||||
|| Vars::AntiAim::FakeYawMode.Value
|
||||
|| Vars::AntiAim::RealYawBase.Value
|
||||
|| Vars::AntiAim::FakeYawBase.Value
|
||||
|| Vars::AntiAim::RealYawOffset.Value
|
||||
|| Vars::AntiAim::FakeYawOffset.Value);
|
||||
}
|
||||
@@ -23,8 +23,8 @@ bool CAntiAim::YawOn()
|
||||
return Vars::AntiAim::Enabled.Value
|
||||
&& (Vars::AntiAim::YawReal.Value
|
||||
|| Vars::AntiAim::YawFake.Value
|
||||
|| Vars::AntiAim::RealYawMode.Value
|
||||
|| Vars::AntiAim::FakeYawMode.Value
|
||||
|| Vars::AntiAim::RealYawBase.Value
|
||||
|| Vars::AntiAim::FakeYawBase.Value
|
||||
|| Vars::AntiAim::RealYawOffset.Value
|
||||
|| Vars::AntiAim::FakeYawOffset.Value);
|
||||
}
|
||||
@@ -119,7 +119,7 @@ float CAntiAim::GetYawOffset(CTFPlayer* pEntity, bool bFake)
|
||||
|
||||
float CAntiAim::GetBaseYaw(CTFPlayer* pLocal, CUserCmd* pCmd, bool bFake)
|
||||
{
|
||||
const int iMode = bFake ? Vars::AntiAim::FakeYawMode.Value : Vars::AntiAim::RealYawMode.Value;
|
||||
const int iMode = bFake ? Vars::AntiAim::FakeYawBase.Value : Vars::AntiAim::RealYawBase.Value;
|
||||
const float flOffset = bFake ? Vars::AntiAim::FakeYawOffset.Value : Vars::AntiAim::RealYawOffset.Value;
|
||||
switch (iMode) // 0 offset, 1 at player
|
||||
{
|
||||
|
||||
@@ -95,16 +95,8 @@ void CResolver::CreateMove(CTFPlayer* pLocal)
|
||||
bool bAutoYaw = tData.m_bAutoSetYaw && Vars::Resolver::AutoResolveYawAmount.Value;
|
||||
bool bAutoPitch = tData.m_bAutoSetPitch && Vars::Resolver::AutoResolvePitchAmount.Value;
|
||||
|
||||
if (bAutoYaw)
|
||||
{
|
||||
flYaw = Math::NormalizeAngle(flYaw + Vars::Resolver::AutoResolveYawAmount.Value);
|
||||
|
||||
F::Backtrack.ResolverUpdate(pTarget);
|
||||
F::Output.ReportResolver(I::EngineClient->GetPlayerForUserID(m_iWaitingForTarget), "Cycling", "yaw", flYaw);
|
||||
}
|
||||
|
||||
if (bAutoPitch
|
||||
&& (!bAutoYaw || fabsf(flYaw) < fabsf(Vars::Resolver::AutoResolveYawAmount.Value / 2))
|
||||
&& (!bAutoYaw || sign(flYaw) != sign(flYaw + Vars::Resolver::AutoResolveYawAmount.Value))
|
||||
&& fabsf(pTarget->m_angEyeAnglesX()) == 90.f && !m_mSniperDots.contains(m_iWaitingForTarget))
|
||||
{
|
||||
flPitch = Math::NormalizeAngle(flPitch + Vars::Resolver::AutoResolvePitchAmount.Value, 180.f);
|
||||
@@ -113,6 +105,14 @@ void CResolver::CreateMove(CTFPlayer* pLocal)
|
||||
F::Output.ReportResolver(I::EngineClient->GetPlayerForUserID(m_iWaitingForTarget), "Cycling", "pitch", flPitch);
|
||||
}
|
||||
|
||||
if (bAutoYaw)
|
||||
{
|
||||
flYaw = Math::NormalizeAngle(flYaw + Vars::Resolver::AutoResolveYawAmount.Value);
|
||||
|
||||
F::Backtrack.ResolverUpdate(pTarget);
|
||||
F::Output.ReportResolver(I::EngineClient->GetPlayerForUserID(m_iWaitingForTarget), "Cycling", "yaw", flYaw);
|
||||
}
|
||||
|
||||
m_iWaitingForTarget = -1;
|
||||
m_flWaitingForDamage = 0.f;
|
||||
m_bWaitingForHeadshot = false;
|
||||
|
||||
@@ -172,8 +172,8 @@ namespace Vars
|
||||
NAMESPACE_BEGIN(Menu)
|
||||
CVar(CheatTitle, "Cheat title", std::string("Amalgam"), VISUAL | DROPDOWN_AUTOUPDATE);
|
||||
CVar(CheatTag, "Cheat tag", std::string("[Amalgam]"), VISUAL);
|
||||
CVar(MenuPrimaryKey, "Primary key", VK_INSERT, NOBIND);
|
||||
CVar(MenuSecondaryKey, "Secondary key", VK_F3, NOBIND);
|
||||
CVar(PrimaryKey, "Primary key", VK_INSERT, NOBIND);
|
||||
CVar(SecondaryKey, "Secondary key", VK_F3, NOBIND);
|
||||
|
||||
CVar(BindWindow, "Bind window", true);
|
||||
CVar(BindWindowTitle, "Bind window title", true);
|
||||
@@ -264,7 +264,7 @@ namespace Vars
|
||||
CVarEnum(Target, "Target", 0b0000001, DROPDOWN_MULTI, nullptr,
|
||||
VA_LIST("Players", "Sentries", "Dispensers", "Teleporters", "Stickies", "NPCs", "Bombs"),
|
||||
Players = 1 << 0, Sentry = 1 << 1, Dispenser = 1 << 2, Teleporter = 1 << 3, Stickies = 1 << 4, NPCs = 1 << 5, Bombs = 1 << 6);
|
||||
CVarEnum(Ignore, "Ignore", 0b000000000, DROPDOWN_MULTI, nullptr,
|
||||
CVarEnum(Ignore, "Ignore", 0b00000001000, DROPDOWN_MULTI, nullptr,
|
||||
VA_LIST("Friends", "Party", "Unprioritized", "Invulnerable", "Invisible", "Unsimulated", "Dead ringer", "Vaccinator", "Disguised", "Taunting", "Team"),
|
||||
Friends = 1 << 0, Party = 1 << 1, Unprioritized = 1 << 2, Invulnerable = 1 << 3, Invisible = 1 << 4, Unsimulated = 1 << 5, DeadRinger = 1 << 6, Vaccinator = 1 << 7, Disguised = 1 << 8, Taunting = 1 << 9, Team = 1 << 10);
|
||||
CVar(AimFOV, "Aim FOV", 30.f, SLIDER_CLAMP | SLIDER_PRECISION, 0.f, 180.f);
|
||||
@@ -295,7 +295,7 @@ namespace Vars
|
||||
VA_LIST("Tapfire", "Wait for headshot", "Wait for charge", "Scoped only", "Auto scope", "Auto rev minigun", "Extinguish team"),
|
||||
Tapfire = 1 << 0, WaitForHeadshot = 1 << 1, WaitForCharge = 1 << 2, ScopedOnly = 1 << 3, AutoScope = 1 << 4, AutoRev = 1 << 5, ExtinguishTeam = 1 << 6);
|
||||
CVar(PointScale, "Point scale", 0.f, SLIDER_CLAMP | SLIDER_PRECISION, 0.f, 100.f, 5.f, "%g%%");
|
||||
CVar(TapFireDist, "Tapfire distance", 1000.f, SLIDER_MIN | SLIDER_PRECISION, 250.f, 1000.f, 50.f);
|
||||
CVar(TapfireDistance, "Tapfire distance", 1000.f, SLIDER_MIN | SLIDER_PRECISION, 250.f, 1000.f, 50.f);
|
||||
|
||||
CVar(BoneSizeSubtract, "Bone size subtract", 1.f, NOSAVE | DEBUGVAR | SLIDER_MIN, 0.f, 4.f, 0.25f);
|
||||
CVar(BoneSizeMinimumScale, "Bone size minimum scale", 1.f, NOSAVE | DEBUGVAR | SLIDER_CLAMP, 0.f, 1.f, 0.1f);
|
||||
@@ -470,9 +470,9 @@ namespace Vars
|
||||
CVarValues(YawFake, "Fake yaw", 0, NONE, nullptr,
|
||||
"Forward", "Left", "Right", "Backwards", "Edge", "Jitter", "Spin");
|
||||
Enum(YawMode, View, Target);
|
||||
CVarValues(RealYawMode, "Real offset", 0, NONE, nullptr,
|
||||
CVarValues(RealYawBase, "Real base", 0, NONE, nullptr,
|
||||
"View", "Target");
|
||||
CVarValues(FakeYawMode, "Fake offset", 0, NONE, nullptr,
|
||||
CVarValues(FakeYawBase, "Fake base", 0, NONE, nullptr,
|
||||
"View", "Target");
|
||||
CVar(RealYawOffset, "Real offset", 0.f, SLIDER_CLAMP | SLIDER_PRECISION, -180.f, 180.f, 5.f);
|
||||
CVar(FakeYawOffset, "Fake offset", 0.f, SLIDER_CLAMP | SLIDER_PRECISION, -180.f, 180.f, 5.f);
|
||||
@@ -699,7 +699,7 @@ namespace Vars
|
||||
CVar(AutoCTap, "Auto ctap", false);
|
||||
CVar(FastStop, "Fast stop", false);
|
||||
CVar(FastAccelerate, "Fast accelerate", false);
|
||||
CVar(CrouchSpeed, "Crouch speed", false);
|
||||
CVar(DuckSpeed, "Duck speed", false);
|
||||
CVar(MovementLock, "Movement lock", false);
|
||||
CVar(BreakJump, "Break jump", false);
|
||||
CVar(ShieldTurnRate, "Shield turn rate", false);
|
||||
|
||||
@@ -17,11 +17,14 @@
|
||||
[](https://nightly.link/rei-2/Amalgam/workflows/msbuild/master/Amalgamx64ReleaseFreetypeAVX2.zip)
|
||||
[](https://nightly.link/rei-2/Amalgam/workflows/msbuild/master/Amalgamx64ReleaseFreetypeAVX2PDB.zip)
|
||||
|
||||
###### AVX2 may be faster than SSE2 though not all CPUs support it (`Steam > Help > System Information > Processor Information > AVX2`). Freetype uses freetype as the text rasterizer and includes some custom fonts, which results in better looking text but larger DLL sizes. PDBs are for developer use.
|
||||
###### If nightly.link is down or can't be accessed, you can still download through [GitHub](https://github.com/rei-2/Amalgam/actions) with an account.
|
||||
<sub>AVX2 may be faster than SSE2 though not all CPUs support it (`Steam > Help > System Information > Processor Information > AVX2`). Freetype uses freetype as the text rasterizer and includes some custom fonts, which results in better looking text but larger DLL sizes. PDBs are for developer use. </sub>
|
||||
<br><br>
|
||||
<sub>If nightly.link is down or can't be accessed, you can still download through [GitHub](https://github.com/rei-2/Amalgam/actions) with an account. </sub>
|
||||
|
||||
</div>
|
||||
|
||||
#
|
||||
|
||||
[VAC bypass](https://github.com/danielkrupinski/VAC-Bypass-Loader) and [Xenos](https://github.com/DarthTon/Xenos/releases) recommended.
|
||||
[VAC bypass](https://github.com/danielkrupinski/VAC-Bypass-Loader) and [Xenos](https://github.com/DarthTon/Xenos/releases) recommended.
|
||||
|
||||
Read about Amalgam's documentation and features [here](../../wiki).
|
||||
Reference in New Issue
Block a user