evennia.utils.gametime¶
The gametime module handles the global passage of time in the mud.
It also supplies some useful methods to convert between in-mud time and real-world time as well allows to get the total runtime of the server and the current uptime.
- class evennia.utils.gametime.TimeScript(*args, **kwargs)[source]¶
Bases:
DefaultScriptGametime-sensitive script.
- exception DoesNotExist¶
Bases:
DoesNotExist
- exception MultipleObjectsReturned¶
Bases:
MultipleObjectsReturned
- path = 'evennia.utils.gametime.TimeScript'¶
- typename = 'TimeScript'¶
- evennia.utils.gametime.runtime()[source]¶
Get the total runtime of the server since first start (minus downtimes)
- Parameters:
format (bool, optional) – Format into a time representation.
- Returns:
time (float or tuple) –
- The runtime or the same time split up
into time units.
- evennia.utils.gametime.server_epoch()[source]¶
Get the server epoch. We may need to calculate this on the fly.
- evennia.utils.gametime.uptime()[source]¶
Get the current uptime of the server since last reload
- Parameters:
format (bool, optional) – Format into time representation.
- Returns:
time (float or tuple) –
- The uptime or the same time split up
into time units.
- evennia.utils.gametime.portal_uptime()[source]¶
Get the current uptime of the portal.
- Returns:
time (float) – The uptime of the portal.
- evennia.utils.gametime.gametime(absolute=False)[source]¶
Get the total gametime of the server since first start (minus downtimes)
- Parameters:
absolute (bool, optional) – Get the absolute game time, including the epoch. This could be converted to an absolute in-game date.
- Returns:
time (float) – The gametime as a virtual timestamp.
Notes
If one is using a standard calendar, one could convert the unformatted return to a date using Python’s standard datetime module like this: datetime.datetime.fromtimestamp(gametime(absolute=True))
- evennia.utils.gametime.real_seconds_until(sec=None, min=None, hour=None, day=None, month=None, year=None)[source]¶
Return the real seconds until game time.
- Parameters:
sec (int or None) – number of absolute seconds.
min (int or None) – number of absolute minutes.
hour (int or None) – number of absolute hours.
day (int or None) – number of absolute days.
month (int or None) – number of absolute months.
year (int or None) – number of absolute years.
- Returns:
The number of real seconds before the given game time is up.
Example
real_seconds_until(hour=5, min=10, sec=0)
If the game time is 5:00, TIME_FACTOR is set to 2 and you ask the number of seconds until it’s 5:10, then this function should return 300 (5 minutes).
- evennia.utils.gametime.schedule(callback, repeat=False, sec=None, min=None, hour=None, day=None, month=None, year=None, *args, **kwargs)[source]¶
Call a callback at a given in-game time.
- Parameters:
callback (function) – The callback function that will be called. Note that the callback must be a module-level function, since the script will be persistent. The callable should be on the form callable(*args, **kwargs) where args/kwargs are passed into this schedule.
repeat (bool, optional) – Defines if the callback should be called regularly at the specified time.
sec (int or None) – Number of absolute game seconds at which to run repeat.
min (int or None) – Number of absolute minutes.
hour (int or None) – Number of absolute hours.
day (int or None) – Number of absolute days.
month (int or None) – Number of absolute months.
year (int or None) – Number of absolute years.
*args – Passed into the callable. Must be possible to store in Attribute.
**kwargs – Passed into the callable. Must be possible to store in Attribute.
- Returns:
Script – The created Script handling the scheduling.
Examples
- ::
schedule(func, min=5, sec=0) # Will call 5 minutes past the next (in-game) hour. schedule(func, hour=2, min=30, sec=0) # Will call the next (in-game) day at 02:30.