Honestly, I don’t know why I didn’t write this earlier, as I needed this many times while writing my extensions, since it is quite a pain in the butt to restart Arma 3 every time you want to test some changes in the extension code. But here it is! So what the hell is it?
callExtension.exe and callExtension_x64.exe are 32 and 64 bit executables to call 32 and 64 bit Arma 3 extensions accordingly, as if they were called from the game itself. This is why the:
“whatever” callExtension “wwwhaaaaaaaaaterver”;
SQF like syntax is supported in the console. When you type your command, the next line will be the output of the extension, formatted as if you outputted the result in the Arma 3 debug console field (yes this includes millions of ” escaping billions of ” if necessary). The line after that is the time in milliseconds it took to execute the extension part itself. I’ve added some extra commands that do not exist in Arma 3 but make sense. For example, apart from both forms of calling extension:
- “<name>” callExtension “<function>”
- “<name>” callExtension [“<function>”, [<arg1>, <arg2>, ...]]
I added the ability to call the RVExtensionVersion function, which is used by the game to log extension version into .rpt:
- callExtension “<name>”
This format is not currently supported by Arma 3, but you can call it from the tester. Another command, which would have been pretty useful in Arma 3 but not available, is:
- freeExtension “<name>”
This would unload loaded extension so you can replace it with tweaked version. Though to be honest you can just close and reload the tester, it takes half a second. This would have been really useful for the actual Arma 3 functionality.
And then… tada! You can load a script, which consist of callExtension directives:
- execVM “<script>”
You can execute this command by hand or you can drag and drop script file over the tester exe (see Zip for script examples with commentary). Finally you can use:
To close console (from script too) or you can close it with right click -> close from the task bar.
Ok, a bit more on scripts. You can read through comments in 3 included test scripts to get the idea of what you can do, but I will list it here anyway:
- Comments starting with // are supported and displayed during execution of the script
- Script start and end are marked in console output as well
- You can execVM the same script causing infinite recursion, only you can’t, as the limit is 10 scripts, 11th script will not execute, thus ending recursion
- You can use sleep SQF like command to pause the script, it will show you percentage of suspension during sleep
- Lines starting with # and blank lines are ignored
Zip includes both versions of the tester, 2 test .dlls from here, 3 test scripts and a small readme. Download it and play with it. If you find it useful, please consider donating. If you do, make sure you leave a comment as well. I would like to know if I should make more similar (or not) stuff.