BIS fnc loop: Difference between revisions
Jump to navigation
Jump to search
Lou Montana (talk | contribs) m (Text replacement - "\|seealso= ([^ ]+)(\]\]|\}\}), *(\[\[|\{\{)" to "|seealso= $1$2 $3") |
Lou Montana (talk | contribs) m (Some wiki formatting) |
||
(12 intermediate revisions by the same user not shown) | |||
Line 23: | Line 23: | ||
* timer: [[Number]] - (Optional, default 0) delay between executions | * timer: [[Number]] - (Optional, default 0) delay between executions | ||
* timerType: [[String]] - (Optional, default "seconds") can be "seconds" or "frames" | * timerType: [[String]] - (Optional, default "seconds") can be "seconds" or "frames" | ||
* conditionStart: [[Code]] - (Optional, default { | * conditionStart: [[Code]] - (Optional, default <sqf inline>{ true }</sqf>) will ''wait'' until the condition is met to start the code | ||
* conditionEnd: [[Code]] - (Optional, default { | * conditionEnd: [[Code]] - (Optional, default <sqf inline>{ false }</sqf>) stops the loop as soon as the ending condition is met (after the end of ''code'') | ||
* executeOnce: [[Boolean]] - (Optional, default [[false]]) | * executeOnce: [[Boolean]] - (Optional, default [[false]]) | ||
|r1= [[Nothing]] | |r1= [[Nothing]] | ||
|x1= < | |x1= <sqf>// hints time every five seconds | ||
["itemAdd", ["uniqueId", { hint str time; }, 5]] | ["itemAdd", ["uniqueId", { hint str time; }, 5]] call BIS_fnc_loop;</sqf> | ||
|x2= < | |x2= <sqf>// removes stacked loop with id of uniqueId | ||
["itemRemove", ["uniqueId"]] | ["itemRemove", ["uniqueId"]] call BIS_fnc_loop;</sqf> | ||
|x3= < | |x3= <sqf>// hints time every frame after BIS_variable is assigned | ||
["itemAdd", ["uniqueId", { | ["itemAdd", ["uniqueId", { hint str time; }, nil, nil, { !isNil { BIS_variable } }]] call BIS_fnc_loop;</sqf> | ||
|x4= < | |x4= <sqf>// hints time every five seconds after BIS_variable is assigned | ||
["itemAdd", ["uniqueId", { | ["itemAdd", ["uniqueId", { hint str time; }, 5, "seconds", { !isNil { BIS_variable } }]] call BIS_fnc_loop;</sqf> | ||
|x5= < | |x5= <sqf>// hints time every frame | ||
["itemAdd", ["uniqueId", { | ["itemAdd", ["uniqueId", { hint str time; }]] call BIS_fnc_loop;</sqf> | ||
|x6= < | |x6= <sqf>// remove item from loop with id "uniqueId" | ||
["itemRemove", ["uniqueId"]] | ["itemRemove", ["uniqueId"]] call BIS_fnc_loop;</sqf> | ||
|seealso= [[for]] [[forEach]] | |seealso= [[for]] [[forEach]] [[while]] | ||
}} | }} |
Latest revision as of 11:58, 18 July 2022
Description
- Description:
- Loop stacked code/function with timing and conditional control. Code and conditions are executed in non-scheduled environment.
- Execution:
- call
- Groups:
- Program Flow
Syntax
- Syntax:
- [action, parameters] call BIS_fnc_loop
- Parameters:
- action: String - can be one of:
- "initialize" - Initializes game loop (not required as internal AUTO_INITIALIZE variable is set to true)
- "terminate" - Terminates game loop (required as internal AUTO_TERMINATE variable is not set to true)
- "itemAdd" - Adds an item to loop
- "itemRemove" - Remove item from loop with id "uniqueId"
- "onEachFrame" - internally used by "initialize"
- "itemExecute" - internally used by "onEachFrame"
- parameters: Array - used with "itemAdd" and "itemRemove" action ("itemRemove" only takes id):
- id: String - loop unique id
- code: Code or String - code to be executed
- timer: Number - (Optional, default 0) delay between executions
- timerType: String - (Optional, default "seconds") can be "seconds" or "frames"
- conditionStart: Code - (Optional, default { true }) will wait until the condition is met to start the code
- conditionEnd: Code - (Optional, default { false }) stops the loop as soon as the ending condition is met (after the end of code)
- executeOnce: Boolean - (Optional, default false)
- Return Value:
- Nothing
Examples
- Example 1:
- Example 2:
- Example 3:
- Example 4:
- Example 5:
- Example 6:
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