diff --git a/.github/assets/wiki/Binds.png b/.github/assets/wiki/Binds.png new file mode 100644 index 00000000..a7e56016 Binary files /dev/null and b/.github/assets/wiki/Binds.png differ diff --git a/.github/assets/wiki/Binds2.png b/.github/assets/wiki/Binds2.png new file mode 100644 index 00000000..ef99feff Binary files /dev/null and b/.github/assets/wiki/Binds2.png differ diff --git a/.github/assets/wiki/ESP.png b/.github/assets/wiki/ESP.png new file mode 100644 index 00000000..d3910872 Binary files /dev/null and b/.github/assets/wiki/ESP.png differ diff --git a/.github/assets/wiki/Home.png b/.github/assets/wiki/Home.png new file mode 100644 index 00000000..1b4a92f2 Binary files /dev/null and b/.github/assets/wiki/Home.png differ diff --git a/.github/assets/wiki/Playerlist.png b/.github/assets/wiki/Playerlist.png new file mode 100644 index 00000000..77dd5b59 Binary files /dev/null and b/.github/assets/wiki/Playerlist.png differ diff --git a/Amalgam/src/Features/Aimbot/AimbotHitscan/AimbotHitscan.cpp b/Amalgam/src/Features/Aimbot/AimbotHitscan/AimbotHitscan.cpp index 533d378f..db6e958d 100644 --- a/Amalgam/src/Features/Aimbot/AimbotHitscan/AimbotHitscan.cpp +++ b/Amalgam/src/Features/Aimbot/AimbotHitscan/AimbotHitscan.cpp @@ -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)) diff --git a/Amalgam/src/Features/ImGui/Menu/Components.h b/Amalgam/src/Features/ImGui/Menu/Components.h index 207f012f..d40df468 100644 --- a/Amalgam/src/Features/ImGui/Menu/Components.h +++ b/Amalgam/src/Features/ImGui/Menu/Components.h @@ -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 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 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& var, int iFlags = FKeybindEnum::None, std::vector 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& var, int iFlags = FKeybindEnum::None, std::vector 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; } diff --git a/Amalgam/src/Features/ImGui/Menu/Menu.cpp b/Amalgam/src/Features/ImGui/Menu/Menu.cpp index 54654241..3dcbebb5 100644 --- a/Amalgam/src/Features/ImGui/Menu/Menu.cpp +++ b/Amalgam/src/Features/ImGui/Menu/Menu.cpp @@ -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 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); diff --git a/Amalgam/src/Features/Misc/AutoVote/AutoVote.cpp b/Amalgam/src/Features/Misc/AutoVote/AutoVote.cpp index cffb5c99..4b896ec0 100644 --- a/Amalgam/src/Features/Misc/AutoVote/AutoVote.cpp +++ b/Amalgam/src/Features/Misc/AutoVote/AutoVote.cpp @@ -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()); } diff --git a/Amalgam/src/Features/Misc/Misc.cpp b/Amalgam/src/Features/Misc/Misc.cpp index 046f1b7c..4ff4f0a4 100644 --- a/Amalgam/src/Features/Misc/Misc.cpp +++ b/Amalgam/src/Features/Misc/Misc.cpp @@ -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; diff --git a/Amalgam/src/Features/PacketManip/AntiAim/AntiAim.cpp b/Amalgam/src/Features/PacketManip/AntiAim/AntiAim.cpp index 64dd2300..0012b46a 100644 --- a/Amalgam/src/Features/PacketManip/AntiAim/AntiAim.cpp +++ b/Amalgam/src/Features/PacketManip/AntiAim/AntiAim.cpp @@ -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 { diff --git a/Amalgam/src/Features/Resolver/Resolver.cpp b/Amalgam/src/Features/Resolver/Resolver.cpp index cbc97217..936d7ec2 100644 --- a/Amalgam/src/Features/Resolver/Resolver.cpp +++ b/Amalgam/src/Features/Resolver/Resolver.cpp @@ -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; diff --git a/Amalgam/src/SDK/Vars.h b/Amalgam/src/SDK/Vars.h index 1ebf3f87..2781744f 100644 --- a/Amalgam/src/SDK/Vars.h +++ b/Amalgam/src/SDK/Vars.h @@ -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); diff --git a/README.md b/README.md index ac7f7f3e..bce1eea1 100644 --- a/README.md +++ b/README.md @@ -17,11 +17,14 @@ [![Freetype AVX2](.github/assets/freetype_avx2.png)](https://nightly.link/rei-2/Amalgam/workflows/msbuild/master/Amalgamx64ReleaseFreetypeAVX2.zip) [![PDB Freetype AVX2](.github/assets/pdb2.png)](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. + 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. # -[VAC bypass](https://github.com/danielkrupinski/VAC-Bypass-Loader) and [Xenos](https://github.com/DarthTon/Xenos/releases) recommended. \ No newline at end of file +[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). \ No newline at end of file