I'm using OOP to make a Slider but whenever I try to use it in the localscript it say's the start function isn't a thing.
Module
--Slider
--Dev_Pashley
local UserInputService = game:GetService("UserInputService")
local Players = game:GetService("Players")
local Player = Players.LocalPlayer
local Mouse = Player:GetMouse()
local Slider = {}
Slider.__index = Slider
function Slider.new(Frame)
local slider2 = {}
setmetatable(Slider, slider2)
slider2.obj = Frame
slider2.main = Frame.Slider
slider2.active = false
slider2.lastPos = 0
return slider2
end
function Slider:Update()
self.main.Slide.Position = UDim2.new(0, (Mouse.X - self.obj.AbsolutePosition.X), 0.5, 0)
if (self.main.Slide.AbsolutePosition.X < self.obj.AbsolutePosition.X) then
self.main.Slide.Position = UDim2.new(0, 0, 0.5, 0)
elseif (self.main.Slide.AbsolutePosition.X + self.main.Slide.AbsoluteSize.X/2 > (self.obj.AbsolutePosition.X + self.obj.AbsoluteSize.X)) then
self.main.Slide.Position = UDim2.new(1, -self.main.Slide.AbsoluteSize.X, 0.5, 0)
end
if (self.active) then
local scaled = self.main.Slide.Position.X.Offset / self.obj.AbsoluteSize.X
if (scaled <= 0) then
if (self.lastPos < 0.5) then
scaled = 0
else
scaled = 1
end
end
end
end
function Slider:Start()
self.main.Slide.MouseButton1Down:connect(function()
self.active = true
end)
self.main.Slide.MouseButton1Up:connect(function()
self.active = false
end)
UserInputService.InputChanged:connect(function(input, gpe)
if (gpe) then return end
if (input.UserInputType == Enum.UserInputType.MouseMovement) then
if (self.active) then
self:Update()
end
end
end)
end
return Slider

1 comment
You are assigning Slider (line 10) to slider2 (line 14) w/ setmetatable (line 15) which trashes everything in it previously.