I'm trying to make a simple time module that fires events when a specific time is reached (sunrise, sunset, midnight) allows me to control the time of day and the speed. For some reason my scripts aren't refrencing values inside of the self table. I changed the toggle method to set self.time and self.multiplier within itself and it worked fine, but when i try doing it by calling another method, it doesn't change the values the rest of the method refrences. It does change A self.time or self.multiplier value, but not the same value self.time or self.multiplier value the rest of the script refrences. Same goes with self:update(), except even when i change self.enabled to true within TOD.new it still doesn't activate and instead prints "it aint enabled" for some reason. Please help.
module script
local TOD = {}
local TOD_mt = {__index = TOD}
function TOD.new()
local self = {}
self.time = lighting:GetMinutesAfterMidnight()
self.multiplier = 1 -- how many irl seconds is 1 in game minute?
self.enabled = false
return setmetatable(self,TOD_mt)
end
function TOD:ChangeSpeed(multiplier)
self.multiplier = multiplier
end
function TOD:ChangeTime(gametime)
self.time = gametime
end
function TOD:Toggle(toggle,gametime,multiplier)
self.enabled = toggle
if (toggle and multiplier) then
TOD:ChangeSpeed(multiplier)
end
if (toggle and gametime) then
TOD:ChangeTime(gametime)
end
if toggle then
TOD:update()
end
end
function TOD:update()
if not self.enabled then
print("it aint enabled")
end
while self.enabled do
print("time is changing! Time: "..self.time)
lighting:SetMinutesAfterMidnight(self.time + 1)
self.time = lighting:GetMinutesAfterMidnight()
wait(self.multiplier)
end
end
return TOD
server script
TOD = require(script.Parent.Time).new()
wait(3)
print("changing time")
TOD:Toggle(true,5*60 + 45,0.001)
print("changing")
wait(3)
print("changing speed")
TOD:ChangeSpeed(1.5)
