Arma 3 Scripting

Command in Event Handlers

onEachFrame

Also available as Markdown and JSON, or read the original wiki page.

Description

Runs given statement every frame in an unscheduled environment.

Note

Arma 3: In order to keep compatibility between official and community content:

Syntax

onEachFrame statement

Parameters:

Returns: Nothing

Examples

Example 1

onEachFrame { hintSilent str getPosWorld player }; // hints position every frame

Example 2

Private variables defined outside of the onEachFrame scope are not inherited:

_myVar = "bob";
MyVar = "bill";
onEachFrame { hintSilent str [_myVar, MyVar]; };
// Result: [any, "bill"]

Example 3

Only one onEachFrame loop can exist at any time:

onEachFrame { player sideChat "first"; };
onEachFrame { player sideChat "second"; };    // replaces the first one
onEachFrame {};                                // reset to the initial state

Example 4

Script suspension is not permitted within onEachFrame scope:

// will throw an error
onEachFrame { sleep 1; };

Example 5

onEachFrame { if (diag_frameNo mod 60 isEqualTo 0) then { /* code */ } };    // executes every 60 frames (every second @ 60 FPS, every two seconds @ 30 FPS, etc)

onEachFrame {                                                                // this version is the closest to a precise 1 second tick
    if (isNil "TAG_LastHint") then
    {
        TAG_LastHint = diag_tickTime;
    }
    else
    {
        if (diag_tickTime - TAG_LastHint >= 1) then // set the duration in seconds here
        {
            hint format ["a second has passed (%1s since game start)", diag_tickTime];
            TAG_LastHint = diag_tickTime;
        };
    };
};

See also

diag_frameNo · diag_fps