Advertisement
HowToRoblox

SliderHandler

Jun 29th, 2020
3,598
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 1.87 KB | None | 0 0
  1. local sliderBG = script.Parent
  2.  
  3. local slider = sliderBG:WaitForChild("Slider")
  4. local sliderBox = sliderBG:WaitForChild("SliderInput")
  5.  
  6. local music = sliderBG:WaitForChild("Music")
  7. music:Play()
  8.  
  9. local mouse = game.Players.LocalPlayer:GetMouse()
  10.  
  11. local snapAmount = 100
  12. local pixelsFromEdge = 10
  13.  
  14. local movingSlider = false
  15.  
  16.  
  17. slider.MouseButton1Down:Connect(function()
  18.    
  19.     movingSlider = true
  20. end)
  21.  
  22. slider.MouseButton1Up:Connect(function()
  23.    
  24.     movingSlider = false
  25. end)
  26. mouse.Button1Up:Connect(function()
  27.    
  28.     movingSlider = false
  29. end)
  30.  
  31.  
  32. mouse.Move:Connect(function()
  33.    
  34.     if movingSlider then
  35.        
  36.         local xOffset = math.floor((mouse.X - sliderBG.AbsolutePosition.X) / snapAmount + 0.5) * snapAmount
  37.         local xOffsetClamped = math.clamp(xOffset, pixelsFromEdge, sliderBG.AbsoluteSize.X - pixelsFromEdge)
  38.        
  39.         local sliderPosNew = UDim2.new(0, xOffsetClamped, slider.Position.Y)
  40.        
  41.         slider.Position = sliderPosNew
  42.        
  43.         local roundedAbsSize = math.floor(sliderBG.AbsoluteSize.X / snapAmount + 0.5) * snapAmount
  44.         local roundedOffsetClamped = math.floor(xOffsetClamped / snapAmount + 0.5) * snapAmount
  45.        
  46.         local sliderValue = roundedOffsetClamped / roundedAbsSize
  47.        
  48.         music.Volume = sliderValue
  49.     end
  50. end)
  51.  
  52.  
  53. sliderBox.FocusLost:Connect(function(enterPressed)
  54.    
  55.     if not enterPressed then return end
  56.    
  57.     local input = tonumber(sliderBox.Text)
  58.    
  59.     if input then
  60.        
  61.         local inputClamped = math.clamp(input, 0, 1)
  62.        
  63.         music.Volume = inputClamped
  64.        
  65.         local xOffset = inputClamped * math.floor(sliderBG.AbsoluteSize.X / snapAmount + 0.5) * snapAmount
  66.         local xOffsetRounded = math.floor(xOffset / snapAmount + 0.5) * snapAmount
  67.         local xOffsetClamped = math.clamp(xOffsetRounded, pixelsFromEdge, sliderBG.AbsoluteSize.X - pixelsFromEdge)
  68.        
  69.         local sliderPosNew = UDim2.new(0, xOffsetClamped, slider.Position.Y)
  70.        
  71.         slider.Position = sliderPosNew
  72.     end
  73. end)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement