forEach: Difference between revisions
Killzone Kid (talk | contribs) (made more clear) |
Mossarelli (talk | contribs) No edit summary |
||
Line 79: | Line 79: | ||
</dl> | </dl> | ||
<!-- DISCONTINUE Notes --> | <!-- DISCONTINUE Notes --> | ||
Using the foreach loop, since there are no variable for the index like say the for-do loop, there is a variable that you can use to check the index of the foreach loop. | |||
<code>{ | |||
[[if]] ([[_forEachIndex]] == 1) [[then]] { | |||
// Copilot | |||
_x [[addUniform]] "U_B_Soldier_VR"; | |||
} [[else]] { | |||
// Adams | |||
[_x, "B_Soldier_TL_F"] [[call]] [[BIS_fnc_loadInventory]]; | |||
_x [[addUniform]] "U_B_Soldier_VR"; | |||
_x [[setIdentity]] "Bootcamp_B_Adams"; | |||
}; | |||
} [[forEach]] _crew; | |||
</code> | |||
So when the array is past from _crew to the loop, index 1 (which is the second element) is the copilot of the "B_Heli_Light_01_F" and he will get "U_B_Soldier_VR" as a uniform. While the pilot which is index 0 (first element), will get the same uniform but will get the loadout of "B_Soldier_TL_F" and the identity of "Bootcamp_B_Adams". |
Revision as of 16:34, 20 September 2014
Description
- Description:
- Executes the given command(s) on every item of an array.
The array items are represented by the magic variable _x. The array indices are represented by _forEachIndex.
In ArmA2 & VBS2, the variable _x is always local to the forEach block so it is safe to nest them. - Groups:
- Uncategorised
Syntax
- Syntax:
- script forEach array
- Parameters:
- script: String (only in Operation Flashpoint), Code (since Arma)
- array: Array
- Return Value:
- Anything - will return the value of last executed statement
Examples
- Example 1:
{ _x setDammage 1; } forEach units group player;
- Example 2:
- This command can also easily be used to execute a single command multiple times without respect to the array items.
{ player addMagazine "M16"; } forEach [1, 2, 3, 4];
- Example 3:
- You can also use multiple commands in the same block.
{ _x setCaptive true; removeAllWeapons _x; doStop _x; } forEach units group this;
Additional Information
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
Notes
- Posted on July 20, 2010
- Kronzky
-
If arrays are used in forEach loops, _x uses them by reference, so any changes to _x will be applied to the original:
_arr1 = [1,2,3]; _arr2 = [6,7,8]; {_x set [1,"x"]} forEach [_arr1,_arr2];
will change _arr1 to [1,"x",3], and _arr2 to [6,"x",8].
Bottom Section
- Posted on August 29, 2014 - 22:23 (UTC)
- Fett Li
-
forEach returns any (the last passed value will be the return value or just Nothing, depends on the function called).
_var = {_x} forEach [ nil,"s",objNull,configFile ]; // return bin\config.bin _var = {_x setCaptive true} forEach allUnits; // return nothing
Using the foreach loop, since there are no variable for the index like say the for-do loop, there is a variable that you can use to check the index of the foreach loop.
{
if (_forEachIndex == 1) then {
// Copilot
_x addUniform "U_B_Soldier_VR";
} else {
// Adams
[_x, "B_Soldier_TL_F"] call BIS_fnc_loadInventory;
_x addUniform "U_B_Soldier_VR";
_x setIdentity "Bootcamp_B_Adams";
};
} forEach _crew;
So when the array is past from _crew to the loop, index 1 (which is the second element) is the copilot of the "B_Heli_Light_01_F" and he will get "U_B_Soldier_VR" as a uniform. While the pilot which is index 0 (first element), will get the same uniform but will get the loadout of "B_Soldier_TL_F" and the identity of "Bootcamp_B_Adams".
- Scripting Commands
- Introduced with Operation Flashpoint version 1.00
- Operation Flashpoint: New Scripting Commands
- Operation Flashpoint: Scripting Commands
- Command Group: Uncategorised
- Scripting Commands OFP 1.96
- Scripting Commands OFP 1.46
- Scripting Commands ArmA
- Command Group: Program Flow
- Scripting Commands ArmA2
- Scripting Commands Arma 3
- Scripting Commands Take On Helicopters