forked from Simnation/Main
69 lines
1.4 KiB
Lua
69 lines
1.4 KiB
Lua
-- Variables
|
|
local jobs = {}
|
|
|
|
-- Functions
|
|
function GetTime()
|
|
local timestamp = os.time()
|
|
local day = tonumber(os.date('*t', timestamp).wday)
|
|
local hour = tonumber(os.date('%H', timestamp))
|
|
local min = tonumber(os.date('%M', timestamp))
|
|
|
|
return {day = day, hour = hour, min = min}
|
|
end
|
|
|
|
function CheckTimes(day, hour, min)
|
|
for i = 1, #jobs, 1 do
|
|
local data = jobs[i]
|
|
if data.hour == hour and data.min == min then
|
|
data.cb(day, hour, min)
|
|
end
|
|
end
|
|
end
|
|
|
|
-- Exports
|
|
|
|
---Creates a Timed Job
|
|
---@param hour number
|
|
---@param min number
|
|
---@param cb function
|
|
exports("CreateTimedJob", function(hour, min, cb)
|
|
if hour and type(hour) == "number" and min and type(min) == "number" and cb and (type(cb) == "function" or type(cb) == "table") then
|
|
jobs[#jobs + 1] = {
|
|
min = min,
|
|
hour = hour,
|
|
cb = cb
|
|
}
|
|
|
|
return #jobs
|
|
else
|
|
print("WARN: Invalid arguments for export CreateTimedJob(hour, min, cb)")
|
|
return nil
|
|
end
|
|
end)
|
|
|
|
---Force runs a Timed Job
|
|
---@param idx number
|
|
exports("ForceRunTimedJob", function(idx)
|
|
if jobs[idx] then
|
|
local time = GetTime()
|
|
jobs[idx].cb(time.day, time.hour, time.min)
|
|
end
|
|
end)
|
|
|
|
---Stops a Timed Job
|
|
---@param idx number
|
|
exports("StopTimedJob", function(idx)
|
|
if jobs[idx] then
|
|
jobs[idx] = nil
|
|
end
|
|
end)
|
|
|
|
-- Main Loop
|
|
CreateThread(function()
|
|
while true do
|
|
local time = GetTime()
|
|
CheckTimes(time.day, time.hour, time.min)
|
|
|
|
Wait(60 * 1000)
|
|
end
|
|
end)
|