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:
evennia.scripts.scripts.DefaultScript
Gametime-sensitive script.
-
exception
DoesNotExist
¶
-
exception
MultipleObjectsReturned
¶ Bases:
evennia.scripts.scripts.DefaultScript.MultipleObjectsReturned
-
path
= 'evennia.utils.gametime.TimeScript'¶
-
typename
= 'TimeScript'¶
-
exception
-
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.