call: Difference between revisions

From Bohemia Interactive Community
Jump to navigation Jump to search
(linked _this)
mNo edit summary
Line 66: Line 66:
<dd class="note">
<dd class="note">
<br>
<br>
A called function may only use suspension ([[sleep]], [[uiSleep]], [[waitUntil]]) if it originates in a scheduled environment. If the called function originates in a non-scheduled environment it will return a generic error.
A called function may only use suspension ([[sleep]], [[uiSleep]], [[waitUntil]]) if it originates in a [[Scheduler#Scheduled_Environment|scheduled environment]]. If the called function originates in a [[Scheduler#Unscheduled_Environment|non-scheduled environment]] it will return a generic error.
<br>
<br>
<code>// *** non-scheduled origin ***
<code>// *** [[Scheduler#Unscheduled_Environment|non-scheduled]] origin ***
[] [[spawn]] {
[] [[spawn]] {
// *** scheduled scope ***
// *** [[Scheduler#Scheduled_Environment|scheduled]] scope ***
[] [[call]] {
[] [[call]] {
// *** scheduled scope ***
// *** [[Scheduler#Scheduled_Environment|scheduled]] scope ***
[[sleep]] 3; // <- OK
[[sleep]] 3; // <- OK
[[hintSilent]] "Hello World!";
[[hintSilent]] "Hello World!";
Line 79: Line 79:
</code>
</code>


<code>// *** non-scheduled origin ***
<code>// *** [[Scheduler#Unscheduled_Environment|non-scheduled]] origin ***
[] [[call]] {
[] [[call]] {
// *** non-scheduled scope***
// *** [[Scheduler#Unscheduled_Environment|non-scheduled]] scope***
[] [[call]] {
[] [[call]] {
// *** non-scheduled scope ***
// *** [[Scheduler#Unscheduled_Environment|non-scheduled]] scope ***
[[sleep]] 3; // <- NOT OK
[[sleep]] 3; // <- NOT OK
[[hintSilent]] "Hello World!";
[[hintSilent]] "Hello World!";
Line 90: Line 90:
</code>
</code>


<code>// *** scheduled origin ***
<code>// *** [[Scheduler#Scheduled_Environment|scheduled]] origin ***
[] [[spawn]] {
[] [[spawn]] {
// *** scheduled scope ***
// *** [[Scheduler#Scheduled_Environment|scheduled]] scope ***
[] [[call]] {
[] [[call]] {
// *** scheduled scope ***
// *** [[Scheduler#Scheduled_Environment|scheduled]] scope ***
[[sleep]] 3; // <- OK
[[sleep]] 3; // <- OK
[[hintSilent]] "Hello World!";
[[hintSilent]] "Hello World!";
Line 101: Line 101:
</code>
</code>


<code>// *** scheduled origin ***
<code>// *** [[Scheduler#Scheduled_Environment|scheduled]] origin ***
[] [[call]] {
[] [[call]] {
// *** scheduled scope***
// *** [[Scheduler#Scheduled_Environment|scheduled]] scope***
[] [[call]] {
[] [[call]] {
// *** scheduled scope ***
// *** [[Scheduler#Scheduled_Environment|scheduled]] scope ***
[[sleep]] 3; // <- OK
[[sleep]] 3; // <- OK
[[hintSilent]] "Hello World!";
[[hintSilent]] "Hello World!";
Line 120: Line 120:
<dt class="note">[[User:Patriot821|Patriot821]]</dt>
<dt class="note">[[User:Patriot821|Patriot821]]</dt>
<dd class="note">
<dd class="note">
If the code is in non-scheduled scope and contains while-do statement, the code runs only 10000 times at the maximum, even if the statement makes infinite loop. (ARMA3 Ver. 1.38.128937)
If the code is in [[Scheduler#Unscheduled_Environment|non-scheduled]] scope and contains while-do statement, the code runs only 10,000 times at the maximum, even if the statement makes infinite loop. (ARMA3 Ver. 1.38.128937)
<code>// *** non-scheduled origin ***
<code>// *** [[Scheduler#Unscheduled_Environment|non-scheduled]] origin ***
[] call {
[] call {
// *** non-scheduled scope***
// *** [[Scheduler#Unscheduled_Environment|non-scheduled]] scope***
[] call {
[] call {
// *** non-scheduled scope ***
// *** [[Scheduler#Unscheduled_Environment|non-scheduled]] scope ***
_a<nowiki>=</nowiki>0;
_a<nowiki>=</nowiki>0;
while{_a<15000} do{
while{_a<15000} do{

Revision as of 12:13, 20 June 2017

Hover & click on the images for description

Description

Description:
Executes given set of compiled instructions with an option to pass arguments to the executed Code. In OFP this command used to accept String for the code.
Groups:
Uncategorised

Syntax

Syntax:
call code
Parameters:
code: Code - compiled instructions
Return Value:
Anything - The last value given in the function is returned. See the topic Function for more information.

Alternative Syntax

Syntax:
args call code
Parameters:
args: Anything - Arguments that are passed to the function in the _this variable.
code: Code - compiled instructions
Return Value:
Anything - The last value given in the function is returned. See the topic Function for more information.

Examples

Example 1:
call {hint str 123};
Example 2:
123 call {hint str _this};
Example 3:
_sum = [1, 2] call {(_this select 0) + (_this select 1)}; hint str _sum; //3
Example 4:
123 call compile "hint str _this";
Example 5:
_result = 123 call compile preprocessFileLineNumbers "myfile.sqf";

Additional Information

See also:
spawnexecVMcanSuspendcompilepreprocessFile

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

Bottom Section

Posted on July 5, 2014 - 16:00 (UTC)
MattAka Horner

A called function may only use suspension (sleep, uiSleep, waitUntil) if it originates in a scheduled environment. If the called function originates in a non-scheduled environment it will return a generic error.
// *** non-scheduled origin *** [] spawn { // *** scheduled scope *** [] call { // *** scheduled scope *** sleep 3; // <- OK hintSilent "Hello World!"; }; }; // *** non-scheduled origin *** [] call { // *** non-scheduled scope*** [] call { // *** non-scheduled scope *** sleep 3; // <- NOT OK hintSilent "Hello World!"; }; }; // *** scheduled origin *** [] spawn { // *** scheduled scope *** [] call { // *** scheduled scope *** sleep 3; // <- OK hintSilent "Hello World!"; }; }; // *** scheduled origin *** [] call { // *** scheduled scope*** [] call { // *** scheduled scope *** sleep 3; // <- OK hintSilent "Hello World!"; }; };
Posted on February 17, 2015 - 11:02 (UTC)
Patriot821
If the code is in non-scheduled scope and contains while-do statement, the code runs only 10,000 times at the maximum, even if the statement makes infinite loop. (ARMA3 Ver. 1.38.128937) // *** non-scheduled origin *** [] call { // *** non-scheduled scope*** [] call { // *** non-scheduled scope *** _a=0; while{_a<15000} do{ _a=_a+1; }; hint str(_a);//10000 }; };