execVM

From Bohemia Interactive Community
Revision as of 12:34, 16 March 2013 by Mlacix (talk | contribs)
Jump to navigation Jump to search
-wrong parameter ("Arma") defined!-1.00
Hover & click on the images for description

Description

Description:
Compile and execute SQF Script. The optional argument is passed to the script as local variable _this. Script is compiled every time you use this command. The Script is first searched for in the mission folder, then in the campaign scripts folder and finally in the global scripts folder.
Groups:
Uncategorised

Syntax

Syntax:
Script = argument execVM filename
Parameters:
argument: Any Value(s)
filename: String
Return Value:
Script - script handle, which can be used to determine (via scriptDone) when the called script has finished.

Examples

Example 1:
_handle = player execVM "test.sqf"; waitUntil {scriptDone _Handle};

Additional Information

See also:
execexecFSMscriptDoneterminateSQF 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

Notes

Posted on January 5, 2007 - 12:30
Giova
More about the Returned value: the type 'Script' returned by this command, is in fact a kind of 'Thread Handle'. GOOD POINT: sqf functions launched with execVM will run asynchronously from its caller script/function. It is possible to manage multi-threading development, by using: -handle script returned by execVM -force the thread to terminate by using 'terminate' command -synchronise a script by using 'ScriptDone' command BAD POINT: -sqf funcion cannot return value (because execVM is already returning the thread Handle) -the variable _time does not work in sqf called with execVM command

Notes

Posted on November 23, 2010 - 15:56
Kabilen
Passing variables to the script file To pass multiple variables to the script file, use an array e.g: null = [myunit,1234] execVM "test.sqf"; Now within test.sqf to access the elements, use the following: _myunit = _this select 0;
_myvar = _this select 1;

Notes

Posted on March 16, 2013 - 12:33
Mlacix
onMapSingleClick have some problem to run execVM command. The problem coused by the execVM itself, but there is a way to fix it. Here you can see two example. Not working: onMapSingleClick "if (_alt) then {[_shift,_alt,_pos] execVM 'arty_menu.sqf'};"; Working: onMapSingleClick "if (_alt) then {_a = [_shift, _alt, _pos] execVM 'arty_menu.sqf'; };"; Difference: _a = [_shift, _alt, _pos] execVM 'arty_menu.sqf'; //You can create it in and outside of the onMapSingleClick scope. The difference is that if you want to use execVM in that scope, then you need to add it to a variable (global and local both work). This is an execVM issue, not an exec one. With *.SQS files it's working without any problem.

Bottom Section