Description: A fully working, open-source Virtual Machine for the scripting language of the ArmA Games. How to use this thing? To start using the SQF-VM, you just have to double click the executable. Are there command line parameters available to eg. use this for unit-testing? Yes, there are. To get all, start the tool via command line and the parameter -? What is supported? To see what is supported in the specific build you are using, use the non-sqf compliant help command. The output of that command for version Alpha 0.1.0 I entered SQF with invalid syntax and the VM is outputting gibberish The SQF-VM project is not aiming to do any actual syntax checking. The tool expects valid SQF as input and invalid syntax might result in invalid execution stacks. I found a bug, what shall i do now? First of all: if it is due to invalid syntax not getting reported correctly, nothing. After that: Ensure all commands used are actually supported in your SQF-VM version using the help command If it is not caused due to invalid syntax or a missing command in the SQF-VM, try to narrow down the problem as much as you can and then head over to the github issues section to report the bug. The only exception to the above is a crash! Crashes you always can report I got a question that is not answered in here, what to do? Ask your question in this thread or in the discord channel and i might add it to this list Installation: Armaholic note: .dll files can harm your PC! Before running this you should make sure you understand the risks! Armaholic and its staff can never be held responsible when any file you download from our website causes any damages, disruption in services or anything else in any way! Downloading and installing these files is totally at your own risk! We have run anti-virus tools on the included files and found no issues but this is no guarantee! Armaholic note: .exe files can harm your PC! Before running this you should make sure you understand the risks! Armaholic and its staff can never be held responsible when any file you download from our website causes any damages, disruption in services or anything else in any way! Downloading and installing these files is totally at your own risk! Changelog: 1.2 (RC1) - DebuggerCLI: now accepts arrowkeys for navigation - DebuggerCLI: Minor fixes & help changes - DebuggerCLI: decodemsg and displaysend now print their current value when used without any argument - ArmA File-System - Preprocessor Support - Added command loadFile - Added commands preprocessFileLineNumbers and preprocessFile (alias) - All code typed into the commandline now gets preprocessed - -F <PATH> and -f <PATH> now preprocess the file first - Added --no-load-execdir to disable automatical addition of local directory to the allowed paths to load from list. - Added -l <PATH>(--load <PATH>) to add allowed path - Added -p <PATH> (--preprocess <PATH>) to preprocess a file and just output it to console - Added command isKindOf in all its 3 forms - Fixed createUnit may cause errors when a rank is provided. - Added support to relative path for -F and -f - Added -v PATH|VIRT (--virtual PATH|VIRT) to add virtual file system mappings - Added --cli-file PATH to allow to load args from a file - Config parser now can "parse" magic strings (just searches for the first occurance of ;) - Now executing SQF (added via -f or -r) before first user prompt instead of when the user entered his very own code. - Fixed empty files cause segfaults - Implemented scriptName <STRING> command - Implemented <ANY> in <ARRAY> - Implemented param command - Implemented player command and respawn__ internal command to respawn (recreate) a player - Implemented setDamage, getDammage, damage and alive - Implemented preprocess__ command to allow preprocessing strings - Fixed params reporting false error when passing arraycount - Fixed params invalidly reporting a warning telling the type is not matching expected datatypes - Fixed codeblocks not accepting ; at start (eg. {;} was marked as invalid) - Fixed allVariables, setVariable and getVariable for use with OBJECT and GROUP - Added --preprocess-file <PATH> (-E <PATH>) - Added do-preprocess to debugger interface - Replaced --start-server (-s) and --server-port <int> (-p <int>) with --debugger <int> (-d <int>) - Implemented crew <OBJECT> command - Implemented vehicle <OBJECT> command - Implemented objectParent <OBJECT> command - Implemented unary commands gunner, commander and driver expecting OBJECT - Implemented <OBJECT> in <OBJECT> command - Fixed format stringifying strings - Implemented <CODE> except__ <CODE> to catch runtime exceptions thrown by the VM 1.1 (RC1) - Continuous CLI (exit__ command now needs to be used) - Fixed String-Parsing (had problems handling "somethingendingwith'") - Fixed : not getting recognized - Config checking is no longer enabled by default (-c flag now enables config checking instead of disabling it) - Fixed some debugger-related stuff - Now contains DebuggerCLI application (sqfvm needs to be started with -s -p 9090 for it to work) - added nearestObjects - added distance - Debugger interface error messages now have status error - Debugger interface now prints output with status message - Debugger interface no longer prints the status change twice when hitting breakmode - Icon was updated (Currently disabled though due to new CMakeList.txt) - Added isNull <OBJECT> isNull <GROUP> isNull <CONFIG> - Fixed config commands causing segfaults - Fixed spawning things prevented further stack execution - Fixed spawned scopes are not reporting to be schedulable - Fixed params unary will error-out on non-array _this param - Added sleep command & corresponding code - Added canSuspend - Fixed some internal method to check array types - Added Marker-System and corresponding commands: [ allMapMarkers, createMarker, createMarkerLocal, deleteMarker, deleteMarkerLocal, getMarkerColor, getMarkerPos, getMarkerSize, getMarkerType, markerAlpha, markerBrush, markerColor, markerDir, markerPos, markerShape, markerSize, markerText, markerType, setMarkerAlpha, setMarkerAlphaLocal, setMarkerBrush, setMarkerBrushLocal, setMarkerColor, setMarkerColorLocal, setMarkerDir, setMarkerDirLocal, setMarkerPos, setMarkerPosLocal, setMarkerShape, setMarkerShapeLocal, setMarkerSize, setMarkerSizeLocal, setMarkerText, setMarkerTextLocal, setMarkerType, setMarkerTypeLocal ] - productVersion now outputs full version information - productVersion now will tell properly if it is x64 or x86 (or NA on some compilers and systems) - Added side <OBJECT> and side <GROUP> - DllExports no longer allow sleep - Fixed _this not getting set properly in <ANY> call <CODE> - Added vm__ command to get a list of vm-only commands - Added cmdsimplemented__ command to get a list of actually implemented commands (checks for missing description and ommits those) - Added allUnits - No longer printing space inbetween array commas when stringified - implemented toFixed - Fixed <ARRAY> select <BOOL> help message - fixed pretty printing would not add a space character between private and the variable - altered the "greeting" message on prompt - fixed -s debugging server not connecting - implemented <ARRAY> pushBackUnique <ANY> - implemented <ARRAY> findIf <CODE> - fixed SQF parser was detecting expressions like _x == 1 as assignment - fixed non-scheduled execution was continuing executing after error - fixed scheduled execution was not continuing executing after error 1.0.0 0.1.4-alpha https://github.com/X39/sqf-vm/releases/tag/0.1.4-alpha 0.1.3-alpha Added allGroups nullar Added createUnit and units command fix Added groupId command and fixed stuff related to commits since adding deletevehicle added createGroup and deleteGroup enhanced examples for isNil Added deleteVehicle fixxed memory leak on call to deleteInner Implemented isNil Added params command fixed if unary command has binary version and is on righthand side of assignment the binary one would be picked altered instruction count note now using vm->stack for all errors in *_stack functions fixed crash when assigning empty to variable (due to code block ending with assignment) fixed crash when assigning empty to variable (due to code block ending with assignment) fixed segfault on large print output due to alloca usage Added instruction count output to sqf-vm fixed order of array-creating commands being inversed removed duplicate declaration of arr Replaced instruction adding of arrays by array_push calls No more tailing zeros fixed error on invalid type for toString Added toArray and toString fixed invalid usage strings Merge branch 'master' of https://github.com/X39/sqf-vm.git added execution on channels starting with sqf systemChat and hint no longer output (null) on empty strings fixed precedence of all commands added `systemChat` and `hint` added isEqualType Merge branch 'master' of https://github.com/X39/sqf-vm.git Merge pull request #9 from Dahlgren/bugfix/malloc malloc.h does not exist in standard C, use stdlib.h Added `<ARRAY> select <BOOL>` fixed `help__ "||"` usage fucks up due to | being splitter here fixed if unary and nullar exist for same command, nullar gets picked if nothing is on right hand Fixed memory leaks & out-of-memory crashes due to strings too large stringification of null string wont crash anymore Added examples to compile Added compile command Moved check into correct command Added empty string check to help__ Altered error message Now always checking for all commands to prevent binary commands being interpreted as variable Fixed stringification of strings and added empty string check to set- and getVariable Added empty string check to help__ Improved debug informations snippet Hashing is no longer case sensitive fixed examples of `help__` and added removed unused variable fixed `help__ <STRING>` formatting fixed warnings & fixed invalid method usage fixed memory leaks Added `with` command Added AllVariables Added proper support for removing variables added `nil` command fixed example of `<CODE> count <ARRAY>` Further style changes to help__ fixed examples not getting printed fixed warnings doomed keyboard ... Implemented extra info into `help__ <STRING>` and now outputting usage instead of description in `help__` fixed order off `<ARRA> - <ARRAY>` fixed create_command error Added more description to commands Added support for `<ARRAY> - <ARRAY>`; `==` and `!=` now properly error out on missmatching types fixed missing righthand on typename segfaults forgot to add the check if nothing was found Added note when nothing was found to `help__` and added header Added `help__` unary variant Did stuff doMove now supports array syntax Added objNull Added null check to objects POBJECT object_create(const char* classname) is exposed again Added ccomment placeholder for WITH type in is_equal_to fixed is_equal_to for objects Added stringify cases for NOTHING and ANY More stringify & isEqualTo type compatibility added side to stringify Added side commands Added SQF stupidity that `,` also can be used to terminate instead of `;` fix of merge merge fixed issues i didnt see thx to visual studio not building properly ... Altered productname & upped build number Upped version Added VEHICLE & UNIT inner-objects to OBJECT removed bool.h Added SIDE type Added garbage fix for gcc on debian trash glibc implementation bullshittery added return for non-windows machines removed unneded variable, renamed variable Merge branch 'master' of https://github.com/X39/sqf-vm Added missing blank Cleaned up warnings fixed crash due to uninitialized variable Merge branch 'master' of https://github.com/X39/sqf-vm Added FAQ fixed private <string> Added NAN to log -1 and unary + Added doMove alpha 0.1.2 Added more checks to FOR fix re-fixed endless attempt to parse empty blocks Added Switch case do Added ForEach fixed parser fix Moved OBJECT type into its own file fixed array parsing Fixed array order Added productversion added missing comparison types to ==, added != Added velocity and setVelocity Added getPos, position and setPos Added typeOf added setVariable & getVariable malloc sizeof from pointer to actual struct fixed invalid malloc sizeof fixed copy-paste error Added createVehicle Added OBJECT type fixed last token getting proper textrange info fixed empty string not terminated segfault unterminated strings are no longer trimmed by 2 chars Added COUNT type to vm types alpha 0.1.1 fixed strcmpi undefined fixed warnings fixed sm_get_value_index function Added isEqualTo Fixed warnings renamed `COUNT` type to `COUNT__` renamed `help` command to `help__` Fixed issue caused by deallocated commands in code stacks on global variables Cleaned up files removed comment Improved code_type performance Added c function to compare two items for equality Added set command only admins now can execute commands Added pushBack command <ARRAY> select <ARRAY-SIZE> now properly pushes a nothing to the stack Fixed empty value assignment crashing Merge branch 'master' of https://github.com/X39/sqf-vm.git fixed bot replaced test 2k with 0 fixed index out of range for select; fixed zero divisor fixed max length for buffer Added decode to string to remove python bullshittery nonsense fixed bot added missing ')' fixed python bot removed unneeded vars code fix more code fixes further fix fixed error declaration & renamed to orig_error Fixed buffer passing fixed syntax replaced tabs with spaces updated python bot Moved commands into separate file, added special print function to sqfvm fixed format stringifying strings removed unneeded variables from cmd_comment fixed empty string concat Now always including <limits.h> Merge branch 'master' of https://github.com/X39/sqf-vm.git fixed entry.c for gcc Fixed MemoryLeaks removed module feedparser Added -s param to change the max instructions limit fixed command callback ptr of comment function added `comment` command Added comment support to tokenizer Added ^ and % to tokenizer Added ^ command Added alternative syntax to and & or Added mod alias `%` Fixed description of atan2, min, max and mod fixed mod, max, min and atan2 being registered as unary commands instead of binary Added `!` unary command Updated help texts changed build name Alpha 0.1.0 -/- Forum topic: - BI forums Enable javascript to be able to download from Armaholic please! |