execVM: Difference between revisions
Jump to navigation
Jump to search
Lou Montana (talk | contribs) m (Text replacement - ";[ ]+ " to "; ") |
Lou Montana (talk | contribs) (Some wiki formatting) |
||
Line 18: | Line 18: | ||
|gr1= Program Flow | |gr1= Program Flow | ||
|descr= Compiles and adds [[SQF Syntax|SQF]] [[Script]] to the [[Scheduler|scheduler]] queue and returns script handle. | |descr= Compiles and adds an [[SQF Syntax|SQF]] [[Script (Handle)|script]] to the [[Scheduler|scheduler]] queue and returns script handle (see also {{HashLink|#Example 4}}). | ||
The script does not execute immediately upon running [[execVM]] command but with some delay depending on the VM's scripts queue and engine load. | |||
{{Feature|informative| | |||
* If the same script is to be executed more than one time, declaring it as a [[Arma 3: Functions Library|Function]] is recommended. | |||
{{ | * The script is searched for in the following directories in that order: | ||
** mission directory | |||
** campaign scripts directory | |||
** global scripts directory. | |||
* To see what VM scripts are currently in the scheduler, use [[diag_activeSQFScripts]] command. | |||
}} | |||
{{Feature|important| | |||
{{Feature | | * The <tt>.sqf</tt> file extension is not mandatory but is strongly recommended as using non-standard extensions may cause problems during binarisation | ||
* If the script file is not prepared using UTF-8 encoding and contains some characters [[toArray|with codes]] > 127, they might convert incorrectly. | |||
}} | |||
|s1= arguments [[execVM]] filename | |s1= arguments [[execVM]] filename | ||
Line 34: | Line 39: | ||
|p1= arguments: [[Anything]] - arguments accessible as <tt>[[Magic Variables#this|_this]]</tt> in the script | |p1= arguments: [[Anything]] - arguments accessible as <tt>[[Magic Variables#this|_this]]</tt> in the script | ||
|p2= filename: [[String]] - file | |p2= filename: [[String]] - path to the [[SQF Syntax|SQF]] script file | ||
|r1= [[Script | |r1= [[Script (Handle)]] | ||
|s2= [[execVM]] filename | |s2= [[execVM]] filename | ||
|p21= filename: [[String]] - file | |p21= filename: [[String]] - path to the [[SQF Syntax|SQF]] script file | ||
|r2= [[Script | |r2= [[Script (Handle)]] | ||
|x1= <code>_handle = [[execVM]] "test.sqf";</code> | |x1= <code>_handle = [[execVM]] "test.sqf";</code> | ||
Line 48: | Line 53: | ||
|x2= <code>_handle = [[player]] [[execVM]] "test.sqf"; | |x2= <code>_handle = [[player]] [[execVM]] "test.sqf"; | ||
[[waitUntil]] { [[scriptDone]] _handle };</code> | [[waitUntil]] { [[scriptDone]] _handle };</code> | ||
The following is also possible in {{arma3}}: | |||
<code>[[private]] _handle = [[execVM]] "123.sqf"; | |||
[[waitUntil]] { [[isNull]] _handle };</code> | |||
|x3= | |x3= <code>[<nowiki/>[[player]], 0.75] [[execVM]] "setDamage.sqf";</code> | ||
<code> | setDamage.sqf: | ||
[[ | <code>[[params]] ["_unit", "_damage"]; | ||
_unit [[setDamage]] _damage;</code> | |||
|x4= <code>[ | |x4= [[execVM]] equivalence:<code>[[private]] _handle = _args [[execVM]] "someFile.sqf"; | ||
{{cc| | {{cc|is practically identical to}} | ||
[[private]] | [[private]] _handle = _args [[spawn]] [[compile]] [[preprocessFileLineNumbers]] "someFile.sqf";</code> | ||
[[ | |||
|seealso= [[call]], [[spawn]], [[exec]], [[execFSM]], [[scriptDone]], [[scriptNull]], [[terminate]], [[sleep]], [[uiSleep]], [[waitUntil]], [[canSuspend]], [[diag_activeScripts]], [[diag_activeSQFScripts]], [[SQF Syntax]], [[Control Structures]] | |seealso= [[call]], [[spawn]], [[exec]], [[execFSM]], [[scriptDone]], [[scriptNull]], [[terminate]], [[sleep]], [[uiSleep]], [[waitUntil]], [[canSuspend]], [[diag_activeScripts]], [[diag_activeSQFScripts]], [[SQF Syntax]], [[Control Structures]] | ||
}} | }} |
Revision as of 16:10, 28 August 2021
Description
- Description:
- Compiles and adds an SQF script to the scheduler queue and returns script handle (see also Example 4). The script does not execute immediately upon running execVM command but with some delay depending on the VM's scripts queue and engine load.
- Groups:
- Program Flow
Syntax
- Syntax:
- arguments execVM filename
- Parameters:
- arguments: Anything - arguments accessible as _this in the script
- filename: String - path to the SQF script file
- Return Value:
- Script (Handle)
Alternative Syntax
- Syntax:
- execVM filename
- Parameters:
- filename: String - path to the SQF script file
- Return Value:
- Script (Handle)
Examples
- Example 1:
_handle = execVM "test.sqf";
- Example 2:
_handle = player execVM "test.sqf"; waitUntil { scriptDone _handle };
The following is also possible in Arma 3:private _handle = execVM "123.sqf"; waitUntil { isNull _handle };
- Example 3:
[player, 0.75] execVM "setDamage.sqf";
setDamage.sqf:params ["_unit", "_damage"]; _unit setDamage _damage;
- Example 4:
- execVM equivalence:
private _handle = _args execVM "someFile.sqf"; // is practically identical to private _handle = _args spawn compile preprocessFileLineNumbers "someFile.sqf";
Additional Information
- See also:
- callspawnexecexecFSMscriptDonescriptNullterminatesleepuiSleepwaitUntilcanSuspenddiag_activeScriptsdiag_activeSQFScriptsSQF SyntaxControl Structures
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
Categories:
- Scripting Commands
- Introduced with Armed Assault version 1.00
- ArmA: Armed Assault: New Scripting Commands
- ArmA: Armed Assault: Scripting Commands
- Arma 2: Scripting Commands
- Arma 2: Operation Arrowhead: Scripting Commands
- Take On Helicopters: Scripting Commands
- Arma 3: Scripting Commands
- Command Group: Program Flow