well, for all you out there, the "every x milliseconds" has a huge problem.
if you create an action let's say, every 1000 milliseconds (every second) add 1 to some global variable, you will be surprised how that "accurate to ~10 milliseconds" is going to affect this. well, after exactly 24 hours, the above variable, should count 86400... believe me, it will not. in this case, the ~10 ms after 2000 ms becomes ~20ms, so, after 86400000ms it's like ~864000ms = 864 SECONDS = which is like 15 minutes accuracy!
to try it out, make a directx game, put text object somewere and add mouse and keyboard. add 2 actions:
System: Every 10 milliseconds
TextSet text to str(float(Text 0 .Text) + 0.010)
MouseKeyboard: On Left mouse button Clicked
TextSet text to "0"
run the app and some kind of external windows counter (can be date and time properties / dbl click the taskbar clock) and click inside the game window, when the second hand comes to 0. watch as when it reaches 0 again after doing a full cirlce, the text is about 50 or something (should be 60).
is there any way to prevent this from happening?