exitWith
Jump to navigation
Jump to search
Description
- Description:
- Description needed
- Groups:
- Program Flow
Syntax
- Syntax:
- Syntax needed
- Parameters:
- ifType: If Type
- code: Code
- Return Value:
- Return value needed
Examples
- Example 1:
if (_x>5) exitWith {echo "_x is too big"; _x}
When _x is greater than 5, outputs message and terminates code in current level with value of _x.- Example 2:
for "_j" from 1 to 10 do { player sideChat format ["%1",_j]; if (_j==5) exitWith {player sideChat "5 is enough"}; }; player sideChat "Complete";
Only the "for" loop will exit when the exitWith condition has been fulfilled (not the whole script). Execution will continue after the end of the loop (player sideChat "Complete").- Example 3:
- Most loops will also terminate when their scope exited. To exit and terminate scopes which are called every frame such as onEachFrame and waitUntil use the following examples:
onEachFrame { if (!alive player) exitWith { onEachFrame {} } }
_time = time + 10; waitUntil { if (time > _time) exitWith { true }; false }
Additional Information
- See also:
- See also needed
Notes
-
Report bugs on the Feedback Tracker and/or discuss them on the Arma Discord or on the Forums.
Only post proven facts here! Add Note
- Posted on May 28, 2010 - 22:15
- Roehre
- Since Arma 2 uses Blocks in FSM as any ordinary Handle like while, for etc. in Scripts, ExitWith also only closes the Block in the FSM.
- Posted on August 04, 2013 - 12:20
- Killzone_Kid
- The command will exit the current scope - no ifs no buts. If the current scope is a loop, it will exit the loop. If the current scope is the main body of a script, it will exit the script. For more understanding of scopes and exitWith have a look at this resource.
- Posted on January 06, 2014 - 13:41
- Naught
- To further explain Killzone_Kid's above statement, exitWith does not work as described within any subsequent inner scopes of a loop - it will only simply exit the current scope. For example, this code will not exit the while loop:
while {true} do { // 'while' scope if (player == (leader player)) then { // 'if-then' scope if (time > (5 * 60)) exitWith {}; // This will only exit the 'if-then' scope }; sleep 1; }; hint "Mission Started"; // This code will never execute
- Posted on March 10, 2016 - 08:31 (UTC)
- Killzone Kid
-
exitWith cannot be used in event handlers with override ability to simply exit with override value. The following is incorrect:
// INCORRECT USAGE onMapSingleClick {if (!isServer) exitWith {true}};
The override value must be returned in the main scope of EH, but since it is exited with exitWith, it never happens. The correct way in this case would be:// CORRECT USAGE onMapSingleClick {call {if (!isServer) exitWith {true}}};
exitWith will exit current call scope only and override value therefore will appear in the main scope of the EH, right where we want it. - Posted on October 12, 2016 - 17:56 (UTC)
- RHfront
- exitWith does not use standard "if-then" syntax, but a unique "if-exitWith" structure.
- exitWith will NOT take else. Attempts to do so will result in "Error exitwith: Type Array, expected code".