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)
 | 
