It is triggered everyframe. This way you'll have to implement your own entity management if you dont want to use waits, but it allows clean stacktraces from your on_frame event down to the function that failed.
mh..just noticed there's a on_message for the winmessages to, nice^^
MY Website with news of my projects: (for example my current Muliplayer Bomberman, GenesisPrecompiler for LiteC and TileMaster, an easy to use Tile editor) Sparetime-Development