Difference between revisions of "BIS fnc loop"

From Bohemia Interactive Community
Jump to navigation Jump to search
m
(Fix description)
 
Line 1: Line 1:
{{Function|= Comments
+
{{Function|Comments=
 
____________________________________________________________________________________________
 
____________________________________________________________________________________________
  
| arma3 |= Game name
+
| arma3 |Game name=
  
|1.16|= Game version
+
|1.16|Game version=
 
____________________________________________________________________________________________
 
____________________________________________________________________________________________
  
| Loop stacked code/function with timing and conditional control. Code and conditions are executed in [[Scheduler#Unscheduled_Environment|non-scheduled environment]]. |= Description
+
| Loop stacked code/function with timing and conditional control. Code and conditions are executed in [[Scheduler#Unscheduled_Environment|non-scheduled environment]]. |Description=
 
____________________________________________________________________________________________
 
____________________________________________________________________________________________
  
| param call [[BIS_fnc_loop]]; |= Syntax
+
| [action, parameters] call [[BIS_fnc_loop]] |Syntax=
  
|p1= Sub-Function: [[String]]  
+
|p1= action: [[String]] - can be one of:
:"initialize" - Initializes game loop (not required if AUTO_INITIALIZE is set to true)
+
* "initialize" - Initializes game loop (not required as internal AUTO_INITIALIZE variable is set to true)
:"terminate" - Terminates game loop (not required if AUTO_TERMINATE 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
+
* "itemAdd" - Adds an item to loop
:"itemRemove" - Remove item from loop with id "uniqueId"|= Parameter 1
+
* "itemRemove" - Remove item from loop with id "uniqueId"
 
+
* ''"onEachFrame" - internally used by "initialize"''
|p2= Parameters: [[Array]] |= Parameter 2
+
* ''"itemExecute" - internally used by "onEachFrame"'' |Parameter 1=
  
| [[Nothing]] |= Return value
+
|p2= 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 {{Inline code|{ [[true]] <nowiki>}</nowiki>}}) will ''wait'' until the condition is met to start the code
 +
* conditionEnd:  [[Code]] - (Optional, default {{Inline code|{ [[false]] <nowiki>}</nowiki>}}) stops the loop as soon as the ending condition is met (after the end of ''code'')
 +
* executeOnce: [[Boolean]] - (Optional, default [[false]]) |Parameter 2=
 +
 
 +
| [[Nothing]] |Return value=
 
____________________________________________________________________________________________
 
____________________________________________________________________________________________
 
   
 
   
|x1= <code>//Hints time every five seconds
+
|x1= <code>{{codecomment|// hints time every five seconds}}
["itemAdd", ["uniqueId", { hint str time; }, 5]] [[call]] [[BIS_fnc_loop]];</code> |=  
+
["itemAdd", ["uniqueId", { hint str time; }, 5]] [[call]] [[BIS_fnc_loop]];</code> |Example 1=
  
|x2= <code>//Removes stacked loop with id of uniqueId
+
|x2= <code>{{codecomment|// removes stacked loop with id of uniqueId}}
["itemRemove", ["uniqueId"]] [[call]] [[BIS_fnc_loop]];</code> |=  
+
["itemRemove", ["uniqueId"]] [[call]] [[BIS_fnc_loop]];</code> |Example 2=
  
|x3= <code>//Hints time every frame after BIS_variable is assigned
+
|x3= <code>{{codecomment|// hints time every frame after BIS_variable is assigned}}
["itemAdd", ["uniqueId", { hint str time; }, nil, nil, { !isNil { BIS_variable } }]] call BIS_fnc_loop;</code> |=  
+
["itemAdd", ["uniqueId", { [[hint]] [[str]] [[time]]; }, [[nil]], [[nil]], { ![[isNil]] { BIS_variable } }]] [[call]] [[BIS_fnc_loop]];</code> |Example 3=
  
|x4= <code>//Hints time every five seconds after BIS_variable is assigned
+
|x4= <code>{{codecomment|// hints time every five seconds after BIS_variable is assigned}}
["itemAdd", ["uniqueId", { hint str time; }, 5, "seconds", { !isNil { BIS_variable } }]] call BIS_fnc_loop;</code> |=  
+
["itemAdd", ["uniqueId", { [[hint]] [[str]] [[time]]; }, 5, "seconds", { ![[isNil]] { BIS_variable } }]] [[call]] [[BIS_fnc_loop]];</code> |Example 4=
  
|x5= <code>//Hints time every frame
+
|x5= <code>{{codecomment|// hints time every frame}}
["itemAdd", ["uniqueId", { hint str time; }]] call BIS_fnc_loop;</code> |=
+
["itemAdd", ["uniqueId", { [[hint]] [[str]] [[time]]; }]] [[call]] [[BIS_fnc_loop]];</code> |Example 5=
 
 
|x6= <code>//Remove item from loop with id "uniqueId"
 
["itemRemove", ["uniqueId"]] call BIS_fnc_loop;</code> |=  
 
  
 +
|x6= <code>{{codecomment|// remove item from loop with id "uniqueId"}}
 +
["itemRemove", ["uniqueId"]] [[call]] [[BIS_fnc_loop]];</code> |Example 6=
 
_______________________________________________________________________________________
 
_______________________________________________________________________________________
  
| |= See also
+
| [[for]], [[forEach]], [[while]] |See also=
 
 
 
}}
 
}}
  

Latest revision as of 00:04, 4 June 2018

Introduced with Arma 3 version 1.161.16
Hover & click on the images for descriptions

Description

Description:
Loop stacked code/function with timing and conditional control. Code and conditions are executed in non-scheduled environment.

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:
    // hints time every five seconds ["itemAdd", ["uniqueId", { hint str time; }, 5]] call BIS_fnc_loop;
    Example 2:
    // removes stacked loop with id of uniqueId ["itemRemove", ["uniqueId"]] call BIS_fnc_loop;
    Example 3:
    // hints time every frame after BIS_variable is assigned ["itemAdd", ["uniqueId", { hint str time; }, nil, nil, { !isNil { BIS_variable } }]] call BIS_fnc_loop;
    Example 4:
    // hints time every five seconds after BIS_variable is assigned ["itemAdd", ["uniqueId", { hint str time; }, 5, "seconds", { !isNil { BIS_variable } }]] call BIS_fnc_loop;
    Example 5:
    // hints time every frame ["itemAdd", ["uniqueId", { hint str time; }]] call BIS_fnc_loop;
    Example 6:
    // remove item from loop with id "uniqueId" ["itemRemove", ["uniqueId"]] call BIS_fnc_loop;

    Additional Information

    Execution:
    call
    See also:
    forforEachwhile

    Notes

    i
    Only post proven facts here. Report bugs on the Feedback Tracker and discuss on the Arma Discord or on the Forums.

    Notes

    Bottom Section