spawn: Difference between revisions
Jump to navigation
Jump to search
Lou Montana (talk | contribs) m (Text replacement - "<dl class="command_description"> <dd class="notedate">" to "<dl class="command_description"> <dt></dt> <dd class="notedate">") |
Lou Montana (talk | contribs) m (Text replacement - "{{uc:{{PAGENAME}}}} " to "") |
||
Line 68: | Line 68: | ||
</dl> | </dl> | ||
{{GameCategory|ofpe|Scripting Commands}} | {{GameCategory|ofpe|Scripting Commands}} | ||
{{GameCategory|arma1|Scripting Commands}} | {{GameCategory|arma1|Scripting Commands}} |
Revision as of 17:31, 8 June 2021
Description
- Description:
- Description needed
- Groups:
- Program Flow
Syntax
- Syntax:
- Syntax needed
- Parameters:
- arguments: Anything - arguments passed to the script, which later available in _this variable inside the script.
- code: Code
- Return Value:
- Return value needed
Examples
- Example 1:
_handle = [] spawn {player globalChat "Hello world!"};
- Example 2:
- There is no guarantee that spawned scripts will be executed in the same order they spawned:
for "_i" from 0 to 100 do { _null = _i spawn { diag_log _this; }; }; // Result: 51,1,2...49,50,0,52,53...100
- Example 3:
- Local variables declared in the main scope are not available in the spawned code. You have to pass them as parameters:
private _localVariable = 1234; [_localVariable] spawn { systemChat format ["_localVariable does not exist: %1", isNil "_localVariable"]; // _localVariable does not exist: true params ["_localVariable"]; systemChat format ["My _localVariable is now: %1", _localVariable]; // My _localVariable is now: 1234 };
Additional Information
- See also:
- callexecVMexecFSMexeccompilepreprocessFileLineNumberspreprocessFileterminatescriptDoneremoteExecsleepuiSleepcanSuspend
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
- Posted on 5 March, 2009
- Kronzky
-
spawn cannot call other local functions on the same scope as itself.
It can, however, call other global functions:_addOne = {TST=TST+1}; TST_addOne = {TST=TST+1}; _add = { TST=TST+1; player sideChat format ["added: %1",TST]; [] call _addOne; player sideChat format ["called local: %1",TST]; [] call TST_addOne; player sideChat format ["called global: %1",TST]; }; TST=0; [] call _add; [] spawn _add;
The call of _addOne from the spawned function does not do anything.
- Posted on October 21, 2014 - 23:33 (UTC)
- DreadedEntity
-
spawn requires a script handle when used in the 2D editor. (A3)
In scripts and in the debug console, it is not required, but very useful for keeping track of running scripts. Having a script handle also makes it easy to terminate scripts at any time.
Since spawn creates a new scheduled environment, having an excess of open threads can make the scheduler queue extremely long, significantly increasing the execution time of each thread. (it takes an extremely large amount of threads, though) - Posted on August 25, 2015 - 13:39 (UTC)
- IT07
-
If you want to call a local function which has NOT been created inside a spawned function, then do this:
_fncOne = { systemChat"This is _fncOne" }; _fncTwo = { call (_this select 0) }; [_fncOne] spawn _fncTwo;