diff --git a/data/menu/nullifiedcat/visuals/world.xml b/data/menu/nullifiedcat/visuals/world.xml index d53a4da6..e469b67f 100755 --- a/data/menu/nullifiedcat/visuals/world.xml +++ b/data/menu/nullifiedcat/visuals/world.xml @@ -33,7 +33,7 @@ - + diff --git a/include/MiscTemporary.hpp b/include/MiscTemporary.hpp index c8a8fcc1..e5fb36cc 100755 --- a/include/MiscTemporary.hpp +++ b/include/MiscTemporary.hpp @@ -20,6 +20,7 @@ extern std::array timers; extern Timer DelayTimer; extern bool firstcm; extern bool ignoredc; +extern bool user_sensitivity_ratio_set; extern bool calculated_can_shoot; extern float prevflow; @@ -27,6 +28,7 @@ extern int prevflowticks; #if ENABLE_VISUALS extern int spectator_target; extern CLC_VoiceData *voicecrash; +extern bool freecam_is_toggled; #endif extern settings::Boolean clean_chat; @@ -37,15 +39,13 @@ extern float backup_lerp; extern settings::Int fakelag_amount; extern settings::Boolean fakelag_midair; extern settings::Boolean no_zoom; +extern settings::Boolean no_scope; extern settings::Boolean disable_visuals; extern settings::Int print_r; extern settings::Int print_g; extern settings::Int print_b; extern Color menu_color; extern int stored_buttons; -#if ENABLE_VISUALS -extern bool freecam_is_toggled; -#endif typedef void (*CL_SendMove_t)(); extern DetourHook cl_warp_sendmovedetour; extern DetourHook cl_nospread_sendmovedetour; diff --git a/include/common.hpp b/include/common.hpp index 3421581e..e13127ac 100644 --- a/include/common.hpp +++ b/include/common.hpp @@ -79,10 +79,6 @@ #include "copypasted/Netvar.h" #include "copypasted/CSignature.h" -#if ENABLE_GUI -// FIXME add gui -#endif - #include template constexpr T _clamp(T _min, T _max, T _val) diff --git a/src/hooks/visual/OverrideView.cpp b/src/hooks/visual/OverrideView.cpp index edcf059a..b193b461 100644 --- a/src/hooks/visual/OverrideView.cpp +++ b/src/hooks/visual/OverrideView.cpp @@ -14,6 +14,8 @@ static settings::Button zoom_key{ "visual.zoom-key", "" }; static settings::Int zoom_fov{ "visual.zoom-key.fov", "20" }; bool freecam_is_toggled{ false }; bool zoomed_last_tick{ false }; +bool user_sensitivity_ratio_set{ true }; +float zoom_sensitivity_ratio_user; namespace hooked_methods { @@ -119,6 +121,36 @@ DEFINE_HOOKED_METHOD(OverrideView, void, void *this_, CViewSetup *setup) freecam_is_toggled = false; draw::fov = setup->fov; + + auto zoom_sensitivity_ratio = g_ICvar->FindVar("zoom_sensitivity_ratio"); + + if (g_pLocalPlayer->bZoomed) + { + static bool last_zoom_state = false; + bool current_zoom_state = no_zoom && no_scope; + if (current_zoom_state != last_zoom_state) + { + if (user_sensitivity_ratio_set) + zoom_sensitivity_ratio_user = zoom_sensitivity_ratio->GetFloat(); + + // No removing zoom, so user zoom_sensitivity_ratio will be reset to what they had it to on zoom + if (no_zoom && no_scope) + { + if (!user_sensitivity_ratio_set) + { + zoom_sensitivity_ratio->SetValue(zoom_sensitivity_ratio_user); + user_sensitivity_ratio_set = true; + } + } + // Both requirements are true, so change the zoom_sensitivity_ratio to 4 + else + { + zoom_sensitivity_ratio->SetValue(4); + user_sensitivity_ratio_set = false; + } + } + last_zoom_state = current_zoom_state; + } } static InitRoutine override_init([]() { EC::Register(