Here’s some more concise standalone code for anyone needing it:
local CustomScrollingIncrements = {
-- [ScrollingFrame] = scrolling increment
[script.Parent.ScrollingFrame] = 10,
--[script.Parent.AnotherScrollingFrame] = 5
}
local ContextActionService = game:GetService("ContextActionService")
local UserInputService = game:GetService("UserInputService")
local MousedOver = {}
UserInputService.InputChanged:Connect(function(Input)
if Input.UserInputType == Enum.UserInputType.MouseWheel then
local Rotation: number = Input.Position.Z
for ScrollingFrame,v in pairs(MousedOver) do
ScrollingFrame.CanvasPosition += Vector2.new(0,CustomScrollingIncrements[ScrollingFrame]*Rotation*-1)
end
end
end)
for ScrollingFrame: ScrollingFrame, _ in pairs(CustomScrollingIncrements) do
ScrollingFrame.MouseEnter:Connect(function()
ScrollingFrame.ScrollingEnabled = false
MousedOver[ScrollingFrame] = true
ContextActionService:BindAction(
"CustomScrollIncrement",
function ()
return Enum.ContextActionResult.Sink
end,
false,
Enum.UserInputType.MouseWheel
)
end)
ScrollingFrame.MouseLeave:Connect(function()
ScrollingFrame.ScrollingEnabled = true
MousedOver[ScrollingFrame] = nil
ContextActionService:UnbindAction("CustomScrollIncrement")
end)
end