breakOut: Difference between revisions

From Bohemia Interactive Community
Jump to navigation Jump to search
m (formatting)
m (Text replacement - "(\|[pr][0-9]+ *= *[^- ]*) *- *W([a-z ])" to "$1 - w$2")
 
(34 intermediate revisions by 2 users not shown)
Line 2: Line 2:


|game1= arma1
|game1= arma1
|version1= 1.00
|version1= 1.00


|game2= arma2
|game2= arma2
|version2= 1.00
|version2= 1.00


|game3= arma2oa
|game3= arma2oa
 
|version3= 1.50
|version3= 1.51


|game4= tkoh
|game4= tkoh
|version4= 1.00
|version4= 1.00


|game5= arma3
|game5= arma3
|version5= 0.50
|version5= 0.50


Line 24: Line 19:


|descr= Breaks out of the [[Variables#Scopes|scope]] with given '''name'''.
|descr= Breaks out of the [[Variables#Scopes|scope]] with given '''name'''.
* An unknown [[scopeName]] name will cause the script error {{ic|Generic error in expression}}
* An unknown [[scopeName]] name will cause the script error {{hl|Generic error in expression}}
* If multiple scopes with the same '''name''' exist, the command will break out the nearest scope. See '''Example 3'''.
* If multiple scopes with the same '''name''' exist, the command will break out the nearest scope. See {{Link|#Example 3}}.


|s1= '''breakOut''' name
|s1= [[breakOut]]  name


|p1= name: [[String]] - Name of the scope which was previously set with [[scopeName]]. {{ic|""}} will exit the current scope.
|p1= name: [[String]] - name of the scope which was previously set with [[scopeName]]. <sqf inline>""</sqf> will exit the current scope (see also [[exitWith]])


|r1= [[Nothing]]
|r1= [[Nothing]]


|s2= value '''breakOut''' name {{Since|arma3|1.47|y}}
|s2= value [[breakOut]]  name
 
|s2since= arma3 1.48


|p21= value: [[Anything]] - A value to return
|p21= value: [[Anything]] - a value to return


|p22= name: [[String]] - Name of the scope which was previously set with [[scopeName]]. {{ic|""}} will exit the current scope.
|p22= name: [[String]] - name of the scope which was previously set with [[scopeName]]. <sqf inline>""</sqf> will exit the current scope (see also [[exitWith]])


|r2= [[Anything]] - Will return '''value'''
|r2= [[Anything]] - will return '''value'''


|x1= <code>[[scopeName]] "main";
|x1= <sqf>scopeName "main";
[[while]] {[[true]]} [[do]] {
while { true } do {
[[scopeName]] "loop1";
scopeName "loop1";
[[while]] {[[true]]} [[do]] {
while {true} do {
[[scopeName]] "loop2";
scopeName "loop2";
[[if]] (condition1) [[then]] {[[breakTo]] "main"}; {{cc|Breaks all scopes and return to "main"}}
if (condition1) then {breakTo "main"}; // Breaks all scopes and return to "main"
[[if]] (condition2) [[then]] {[[breakOut]] "loop2"}; {{cc|Breaks scope named "loop2"}}
if (condition2) then {breakOut "loop2"}; // Breaks scope named "loop2"
[[sleep]] 1;
sleep 1;
};
};
[[sleep]] 1;
sleep 1;
};
};</sqf>
</code>


|x2= <code>[[call]] {
|x2= <sqf>call {
[[scopeName]] "main";  
scopeName "main";
[[call]] {
call {
123 [[breakOut]] "main"
123 breakOut "main"
};
};
345
345
}; {{cc|call returns 123}}</code>
}; // call returns 123</sqf>


|x3= <code>[[call]] {
|x3= <sqf>call {
[[scopeName]] "Main"; [[a / b|/]]/Parent Ma[[in]]
scopeName "Main"; // Parent Main
[[call]] {
call {
[[scopeName]] "Main"; [[a / b|/]]/Child Ma[[in]]
scopeName "Main"; // Child Main
"String" [[breakOut]] "Main"; [[a / b|/]]/Will break out of child ma[[in]] [[and]] return "String" [[to]] parent ma[[in]]
"String" breakOut "Main"; // Will break out of child main and return "String" to parent main
};
};
};
};</sqf>
</code>


|seealso= [[scopeName]], [[breakTo]], [[exitWith]]
|seealso= [[scopeName]] [[breakTo]] [[exitWith]]
}}
}}

Latest revision as of 17:35, 8 November 2023

Hover & click on the images for description

Description

Description:
Breaks out of the scope with given name.
  • An unknown scopeName name will cause the script error Generic error in expression
  • If multiple scopes with the same name exist, the command will break out the nearest scope. See Example 3.
Groups:
Program Flow

Syntax

Syntax:
breakOut name
Parameters:
name: String - name of the scope which was previously set with scopeName. "" will exit the current scope (see also exitWith)
Return Value:
Nothing

Alternative Syntax

Syntax:
value breakOut name
Parameters:
value: Anything - a value to return
name: String - name of the scope which was previously set with scopeName. "" will exit the current scope (see also exitWith)
Return Value:
Anything - will return value

Examples

Example 1:
scopeName "main"; while { true } do { scopeName "loop1"; while {true} do { scopeName "loop2"; if (condition1) then {breakTo "main"}; // Breaks all scopes and return to "main" if (condition2) then {breakOut "loop2"}; // Breaks scope named "loop2" sleep 1; }; sleep 1; };
Example 2:
call { scopeName "main"; call { 123 breakOut "main" }; 345 }; // call returns 123
Example 3:
call { scopeName "Main"; // Parent Main call { scopeName "Main"; // Child Main "String" breakOut "Main"; // Will break out of child main and return "String" to parent main }; };

Additional Information

See also:
scopeName breakTo exitWith

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