World Game Time API
The Game Time API provides functions for interacting with Schedule 1's time system. This includes getting the current game time, day, and checking for specific time conditions.
Implementation Status: Partially implemented. Basic functionality works, but some advanced features are still in development.
GetGameTime
Signature: int GetGameTime()
Description: Returns the current game time as an integer value.
Parameters
None.
Returns
An integer representing the current game time.
Example
local currentTime = GetGameTime()
Log("Current game time: " .. currentTime)
-- Format the time for display
local formattedTime = FormatGameTime(currentTime)
Log("Formatted time: " .. formattedTime)
Notes
- The game time is returned as an integer from 0-23 representing hours
- To get a human-readable time string, use
FormatGameTime()
FormatGameTime
Signature: string FormatGameTime(int timeValue)
Description: Converts a game time integer value into a human-readable time string.
Parameters
timeValue
(int): The game time value to format
Returns
A string representing the formatted time (e.g., "8:00 AM", "2:30 PM").
Example
local currentTime = GetGameTime()
local formattedTime = FormatGameTime(currentTime)
Log("The time is now " .. formattedTime)
-- Using in OnTimeChanged hook
function OnTimeChanged(time)
Log("Time changed to: " .. FormatGameTime(time))
end
Notes
- This function handles AM/PM conversion
- Always use this function when displaying time to players
GetGameDay
Signature: string GetGameDay()
Description: Returns the current game day as a string.
Parameters
None.
Returns
A string representing the current game day (e.g., "Monday", "Tuesday").
Example
local currentDay = GetGameDay()
Log("Today is " .. currentDay)
-- Using in OnDayChanged hook
function OnDayChanged(day)
Log("The day has changed to " .. day)
if day == "Monday" then
Log("It's the start of a new week!")
end
end
Notes
- The day is returned as a full name (e.g., "Monday", not abbreviated)
- To get a numeric day value, use
GetGameDayInt()
GetGameDayInt
Signature: int GetGameDayInt()
Description: Returns the current game day as an integer value.
Parameters
None.
Returns
An integer representing the current game day (1-7, where 1 is Monday).
Example
local dayNumber = GetGameDayInt()
Log("Day number: " .. dayNumber)
-- Check if it's a weekend
if dayNumber >= 6 then
Log("It's the weekend!")
end
Notes
- Day values: 1 = Monday, 2 = Tuesday, ..., 7 = Sunday
- Useful for numeric comparisons and calculations
IsNightTime
Signature: bool IsNightTime()
Description: Checks if it's currently night time in the game.
Parameters
None.
Returns
A boolean value: true
if it's night time, false
otherwise.
Example
if IsNightTime() then
Log("It's night time. Be careful out there!")
end
-- Using in Update function
function Update()
if IsNightTime() and not hasWarnedAboutNight then
Log("Night has fallen. The streets are more dangerous now.")
hasWarnedAboutNight = true
elseif not IsNightTime() then
hasWarnedAboutNight = false
end
end
Notes
- Night time is typically defined as between 20:00 (8:00 PM) and 6:00 (6:00 AM)
- The exact night time hours may vary
Time Utility Functions
Calculating Time Differences
function GetTimeDifference(time1, time2)
-- Handle day wrapping
local diff = time2 - time1
if diff < 0 then
diff = diff + 24
end
return diff
end
-- Usage example
local currentTime = GetGameTime()
local shopCloseTime = 20
local hoursUntilClose = GetTimeDifference(currentTime, shopCloseTime)
Log("Shop closes in " .. hoursUntilClose .. " hours")
Checking Time Ranges
function IsTimeInRange(currentTime, startTime, endTime)
if startTime <= endTime then
-- Simple range (e.g., 9 to 17)
return currentTime >= startTime and currentTime <= endTime
else
-- Overnight range (e.g., 22 to 6)
return currentTime >= startTime or currentTime <= endTime
end
end
-- Usage examples
local currentTime = GetGameTime()
if IsTimeInRange(currentTime, 9, 17) then
Log("It's business hours (9 AM - 5 PM)")
end
if IsTimeInRange(currentTime, 22, 6) then
Log("It's overnight hours (10 PM - 6 AM)")
end