// Petrarch // Merentha Lib 1.0 // event.c #include <std.h> inherit DAEMON; mapping __Events=([]); void add_event(string name, int time, string file, mixed *fun) { __Events[name]=({ time+time(), file, fun }); save_object("/save/daemons/events"); } void remove_event(string name) { map_delete(__Events, name); save_object("/save/daemons/events"); } mapping query_events() { return __Events; } void create() { load_object("/save/daemons/events"); add_event("reboot", 3600*24, "/daemon/reboot", ({"reboot", 10})); save_object("/save/daemons/events"); call_out("update_events", 2); } void update_events() { string *events; int i, time=time(); i=sizeof(events=keys(__Events)); while (i--) if(__Events[events[i]][0] <= time) { catch(call_other(__Events[events[i]][1],__Events[events[i]][2])); remove_event(events[i]); } save_object("/save/daemons/events"); call_out("update_events", 60); }