Table of Contents

Hooks have been added to the plugin system for time of day based events. Additionaly, the python plugin was extended with those hooks. Now all thats left is making scripts that use it.

On the sourceforge tracker

Time of Day based events

Allow map makers to utilize date and time for their maps.

Developper working on it: tchize

Implementation documentation: tod

Possible Uses

current stage

Approximatively 90% work done on this. Still need to build a few script, like one to alter the destination of a map depending on hour and another to freeze/make alive all monster in map at a certain time. Note: some things below may only be working currently on developper's computer and may not yet have been commited

C code

python

Example (verbose) python code using time based informations

import Crossfire
import string
 
Crossfire.Log(Crossfire.LogDebug, "Number of seasons for this server: %d" %Crossfire.Time.SEASONS_PER_YEAR)
for x in range(Crossfire.Time.SEASONS_PER_YEAR):
	Crossfire.Log(Crossfire.LogDebug, "Season %d is %s" %(x,Crossfire.GetSeasonName(x)))
Crossfire.Log(Crossfire.LogDebug, "Number of week days for this server: %d" %Crossfire.Time.DAYS_PER_WEEK)
for x in range(Crossfire.Time.DAYS_PER_WEEK):
	Crossfire.Log(Crossfire.LogDebug, "weekday %d is %s" %(x,Crossfire.GetWeekdayName(x)))
Crossfire.Log(Crossfire.LogDebug, "Number of months for this server: %d" %Crossfire.Time.MONTHS_PER_YEAR)
for x in range(Crossfire.Time.MONTHS_PER_YEAR):
	Crossfire.Log(Crossfire.LogDebug, "Month %d is %s" %(x,Crossfire.GetMonthName(x)))
 
 
 
now = Crossfire.GetTime()
parameters = string.split(Crossfire.ScriptParameters(),",")
current = [Crossfire.GetMonthName(now[1]),Crossfire.GetWeekdayName(now[5]),Crossfire.GetSeasonName(now[7])]
 
Crossfire.SetReturnValue(1)
if (set(parameters) & set(current)):
	Crossfire.SetReturnValue(0)

filter event

Prebuild scripts are available in /python/tod/sleep.py.