Arma 3 Scripting

doFSM

  • Arma 3 v0.50
  • First in Armed Assault v1.00

Command · Markdown · JSON · original wiki page

Description

Orders a unit to process command defined by FSM file (silently).

Unlike with execFSM where _this is passed to the FSM, the following parameters are passed when using doFSM/commandFSM:

_leader: leader of subgroup with this command _destination: command destination/position _target: command target _units: list of all persons in subgroup

Syntax

unit doFSM [fsmName, position, target]

Parameters:

Returns: Nothing

Examples

Example 1

_soldierOne doFSM ["move.fsm", position player, player];

Example 2

units player doFSM ["move.fsm", position player, player];

See also

FSM · FSM Editor Manual · commandFSM · completedFSM · execFSM · getFSMVariable · setFSMVariable · unitReady

Community notes

Rübe

Do not doStop a unit in a FSM called with doFSM or commandFSM. Doing so nevertheless will halt your FSM, since no links are followed anymore (doing so in an end state should be fine though). Also this may crash your game in certain mysterious circumstances.

You may design your FSM so that they may be called with doFSM/commandFSM and execFSM likewise by checking if _units or _this is nil and then init the variables accordingly. Just remember that you should use the low level moveTo (together with moveToCompleted, moveToFailed) if do-/commandFSM'd, and doMove or commandMove (together with unitReady) if execFSM'd. A moveTo in an FSM started with execFSM won't do anything, likewise doMove in a FSM started with doFSM or commandFSM wont work either. Think about it for a minute and you will see why. (hint: a unit running a FSM called with doFSM or commandFSM will never return true for (unitReady _unit))

Anyway, if you want to be able to call your FSM either way, a "ready" condition might look light this: (moveToCompleted _unit) || (moveToFailed _unit) || (unitReady _unit), assuming you have a moveTo or a doMove (depending on how the fsm is called) in the prior state.

Katulobotomia

Adding to Rübe's note, doFSM can be checked if it has finished by unitReady as of 2015 and it will return true when your FSM has completed.