Arma 3 Scripting

Topic in Scripting

Event Scripts

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

NOTOC____NOEDITSECTION

+ Default Scripts Location Game Path
Operation Flashpoint v1.00 DTA/scripts.pbo
Armed Assault v1.00 Ca.pbo/data/scripts
Arma 2 v1.00
Arma 2: Operation Arrowhead v1.50
Arma 3 v1.00 functions_f.pbo/scripts
Take On Helicopters v1.00 data_h.pbo/data/scripts

Event Scripts are scripts that are executed upon specific events. Not all event scripts are executed directly by the engine.

To use an Event Script, create a file of the given name in the mission directory.

Note

Available Scripts

File Present in Details
Operation Flashpoint v1.00 Operation Flashpoint: Resistance v1.75 Armed Assault v1.00 Arma 2 v1.00 Arma 2: Operation Arrowhead v1.50 Arma 3 v1.00 Take On Helicopters v1.00 Can suspend
#### exit.sqf
Executed when mission is finished (before debriefing screen).
In Arma 3, see also "Ended" and "MPEnded" Mission Event Handlers.
sqf
params ["_endType"];

- endType: String
✓ ✓ ✓ ✓ ✓
#### exit.sqs
Executed when mission is finished (before debriefing screen).
In Arma 3, see also "Ended" and "MPEnded" Mission Event Handlers.
sqf
params ["_endType"];

- endType: String
✓ ✓ ✓ ✓ ✓ ✓
#### init.sqf
Executed when mission is started (before briefing screen).
✓ ✓ ✓ ✓ ✓ ✓
#### init.sqs
Executed when mission is started (before briefing screen).
✓ ✓ ✓ ✓ ✓ ✓ ✓
#### init3DEN.sqf
Executed when loading a scenario in Eden Editor if the file is present. Useful for executing scenario-specific editor functionality.
✓ ✗
#### initIntro.sqf
Executed when intro, outro win or outro lose is started.
> [!NOTE]
> Arma 3: Functional in Arma 3 only for intro.
✓ ✓ ✓ ✓ ✓ ✓
#### initIntro.sqs
Executed when intro, outro win or outro lose is started.
> [!NOTE]
> Arma 3: Functional in Arma 3 only for intro.
✓ ✓ ✓ ✓ ✓ ✓
#### initJIPcompatible.sqf
Executed locally by Arma 2: Multiplayer Framework when a player joins mission (includes both mission start and JIP). Also executed locally on server at mission start.
✓ ✓
#### initPlayerLocal.sqf
Executed locally when player joins mission (includes both mission start and JIP). See Initialisation Order for details about when exactly the script is executed.
sqf
params ["_player", "_didJIP"];

- player: Object
- didJIP: Boolean
✓ ✓
#### initPlayerServer.sqf
Executed only on server when a player joins mission (includes both mission start and JIP). See Initialisation Order for details about when exactly the script is executed.
This script relies on BIS_fnc_execVM and remoteExec. If CfgRemoteExec's class Functions is set to mode = 0 or 1, the script will never be executed.
Therefore, initPlayerServer.sqf should be avoided - use this method instead.
sqf
params ["_playerUnit", "_didJIP"];

- playerUnit: Object
- didJIP: Boolean
✓ ✓
#### initServer.sqf
Executed only on server when mission is started. See Initialisation Order for details about when exactly the script is executed.
✓ ✓
#### missionFlow.fsm
Executed on post-init when mission is started. See BIS_fnc_missionFlow.
✓
#### onFlare.sqs
Executed when a flare is lit after being fired from grenade launcher.
sqf
params ["_colorRGB", "_shooter", "_projectile", "_instigator"];

- colorRGB: Color (RGBA)
- shooter: Object
- Arma 3 v2.10 projectile: Object - the flare itself
- Arma 3 v2.18 instigator: Object - shot instigator
✓ ✓ ✓ ✓ ✓ ✓
#### onPlayerKilled.sqf
Executed when player is killed in singleplayer or in multiplayer mission.
sqf
params ["_oldUnit", "_killer", "_respawn", "_respawnDelay"];

- oldUnit: Object
- killer: Object
- respawnType: Number
- respawnDelay: Number
✓ ✓
#### onPlayerKilled.sqs
Executed when player is killed in singleplayer or in multiplayer mission with "NONE" respawn type.
sqf
params ["_player", "_killer"];

- player: Object
- killer: Object
✓ ✓ ✓ ✓ ✓ ✗ ✓
#### onPlayerRespawn.sqf
Executed locally when player respawns in a multiplayer mission.
This event script will also fire at the beginning of a mission if respawnOnStart is 0 or 1, oldUnit will be objNull in this instance.
This script will not fire at mission start if respawnOnStart equals -1.
sqf
params ["_newUnit", "_oldUnit", "_respawn", "_respawnDelay"];

- newUnit: Object
- oldUnit: Object
- respawnType: Number
- respawnDelay: Number
✓ ✓
#### onPlayerRespawn.sqs
Executed when player is killed in multiplayer mission with "INSTANT" or "BASE" respawn type. It will not work if dta\scripts\onPlayerRespawn.sqs does not exist.
sqf
params ["_player", "_killer", "_respawnDelay"];

- player: Object
- killer: Object
- respawnDelay: Number
✓
#### onPlayerRespawnAsSeagull.sqs
Executed when player is killed in multiplayer mission with "SEAGULL" respawn type, or when the type is "GROUP" or "SIDE", but no remaining respawn slots are left.
This script will replace the default respawn sequence.
> [!NOTE]
> Arma 3: onPlayerRespawnAsSeagull.sqs was renamed to 1. playerRespawnSeagullScript.sqs in Arma 3.
sqf
params ["_player", "_killer", "_seagull"];

- player: Object
- killer: Object
- seagull: Object
✓ ✓ ✓ ✓ ✓ ✗ ✓
#### onPlayerRespawnOtherUnit.sqs
Executed when player is killed in multiplayer mission with "GROUP" or "SIDE" respawn type. This script will replace the default respawn sequence.
> [!NOTE]
> Arma 3: onPlayerRespawnOtherUnit.sqs was renamed to 1. playerRespawnOtherUnit.sqs in Arma 3.
sqf
params ["_player", "_killer", "_newUnit"];

- player: Object
- killer: Object
- newUnit: Object
✓ ✓ ✓ ✓ ✓ ✗ ✓
#### onPlayerResurrect.sqs
Executed when player is respawned in multiplayer mission with "INSTANT" or "BASE" respawn type. It will not work if dta\scripts\onPlayerResurrect.sqs does not exist.
> [!NOTE]
> Arma 3: onPlayerResurrect.sqs was renamed to 1. playerResurrectScript.sqs in Arma 3.
sqf
params ["_player"];

- player: Object
✓ ✗
#### pauseOnLoad.sqf
Executed when pause menu is activated.
To make it work in MP or Arma 3, use onPauseScript = "pauseOnLoad.sqf"; in Description.ext.
sqf
params ["_pauseMenuDisplay"];

- pauseMenuDisplay: Display
✓ ✓ ✓ ✓
#### playerKilledScript.sqs
Executed locally when player is killed in singleplayer or in multiplayer mission with "NONE" respawn type.
Overrides default behavior of mission death screen in single player. Game may become unplayable if not scripted correctly. Avoid use if not experienced with this script.
sqf
params ["_player", "_killer"];

- player: Object
- killer: Object
✓
#### playerRespawnScript.sqs
Executed locally and immediately when player is killed in multiplayer mission with "BASE" or "INSTANT" respawn type.
Overrides default behavior of multiplayer respawn. Game may become unplayable if not scripted correctly. Avoid use if not experienced with this script.
sqf
params ["_player", "_killer", "_respawnDelay"];

- player: Object
- killer: Object
- respawnDelay: Number
✓
#### playerRespawnSeagullScript.sqs
Executed when player is killed in multiplayer mission with "SEAGULL" respawn type, or when the type is "GROUP" or "SIDE", but no remaining respawn slots are left.
This script will replace the default respawn sequence.
> [!NOTE]
> Arma 3: 1. onPlayerRespawnAsSeagull.sqs was renamed to playerRespawnSeagullScript.sqs in Arma 3.
sqf
params ["_player", "_killer", "_seagull"];

- player: Object
- killer: Object
- seagull: Object
✗ ✗ ✗ ✗ ✗ ✓ ✗
#### playerRespawnOtherUnit.sqs
Executed when player is killed in multiplayer mission with "GROUP" or "SIDE" respawn type. This script will replace the default respawn sequence.
> [!NOTE]
> Arma 3: 1. onPlayerRespawnOtherUnit.sqs was renamed to playerRespawnOtherUnit.sqs in Arma 3.
sqf
params ["_player", "_killer", "_newUnit"];

- player: Object
- killer: Object
- newUnit: Object
✗ ✗ ✗ ✗ ✗ ✓ ✗
#### playerResurrectScript.sqs
Executed when player is respawned in multiplayer mission with "INSTANT" or "BASE" respawn type. It will not work if dta\scripts\onPlayerResurrect.sqs does not exist.
> [!NOTE]
> Arma 3: 1. onPlayerResurrect.sqs was renamed to playerResurrectScript.sqs in Arma 3.
sqf
params ["_player"];

- player: Object
✗ ✗ ✗ ✗ ✗ ✓ ✗
#### teamSwitchScript.sqs
Executed after a Team Switch is done. Not triggered by selectPlayer.
sqf
params ["_oldUnit", "_newUnit"];

- oldUnit: Object
- newUnit: Object
✗ ✓