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

0

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