Jump to content


  • Content Count

  • Joined

  • Last visited

  • Medals

  • Medals

Everything posted by x39

  1. SQF-VM The SQF emulator A fully working, open-source Virtual Machine for the scripting language of the ArmA Games. Links GitHub Repository Discord Invite Discord Bot Authorization Panel (for adding to your server) FAQ How to use this thing? To start using the SQF-VM, you just have to double click the executable. What can it be used for (examples)? Most obvious example is: you are using a laptop while traveling and wanna test some SQF code. More advanced users might even use this for unit-testing their code. 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 -? How to use the debug interface? There is documentation available on the github page inside of Documentation/Debugger. What is supported? To check what currently is supported and what is not, you can use the `help__ "name"` command. If it outputs proper descriptions, the command is fully supported. If it does not, then the command is not yet implemented sadly. I found a bug, what shall i do now? Try to narrow down the problem as much as you can and then head over to the github issues section to report the bug. 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 :) Downloads All releases can also be found inside of the releases section of the github repository. 1.0-RC1 Alpha 0.1.4 Alpha 0.1.3 Alpha 0.1.2 Alpha 0.1.1 Alpha 0.1.0 Changelog 1.0-RC1 -/-
  2. SQF-VM now has testing ❤️ https://github.com/SQFvm/vm/tree/master/tests so now is the best time to join the project, even if you only know SQF 💪
  3. SQF-VM Release 1.2.2 (RC1) Downloads https://github.com/SQFvm/vm/releases/tag/1.2.2-RC1 https://x39.io/Files/sqfvm/sqfvm-1.2.2-RC1.zip Changelog - CLI: Added `--command-dummy-nular name` to add dummy commands. - CLI: Added `--command-dummy-unary name` to add dummy commands. - CLI: Added `--command-dummy-binary 4|name` to add dummy commands. - CLI: Added `--no-assembly-creation` which allows to disable the creation of executable assembly (useful for `--parse-only` as it will enhance the speed) - VM: Error messages of preproc now contain line, col and file info - VM: SQF-Parsing performance improvement - VM: File System Overhauled - VM: Changed library load failed message - VM: All filepaths printed now are absolute. - VM: Added warning on data after `#include` - VM: Added `assembly__ CODE` unary operator - VM: Added `createMarker [STRING, OBJECT]` - VM: Added `__LINE__` and `__FILE__` support for PreProcessor - VM: Fixed crash when not providing enough params in preproc - VM: Fixed `--parse-only` returning `-1` as exit code - VM: Fixed parser not detecting eg. `.5` - VM: Fixed numbers with tailing `-` operator, are parsed invalidly - VM: Fixed `/*/` getting parsed as open & close block comment - VM: Fixed `###R` not producing `#R` - VM: Fixed macro with args blocking same text without args - VM: Fixed commas in strings invalidly getting parsed as separator for macros - VM: Fixed local path not properly working with #include - VM: Fixed #file macro getting `]\t` attached - VM: Fixed Number Exponent parsing bug - VM: Fixed `ceil` being recognized as `cei` - VM: Fixed immediate \ after macro name not getting read proper - VM: Fixed `#ifdef` etc. still allowing strings when false - VM: Fixed `in` always returning true - VM: Fixed `isNil CODE` causing an endless loop - VM: Fixed CODE type getting constructed wrong, causing the work stack to never be emptied - VM: Fixed calling code wiped current variable stack. - VM: Fixed missing l on null for null objects - VM: Fixed passing nil would sometimes still execute an unary or binary operator - VM: Fixed getvariable returning wrong value type if nil - VM: Fixed `callExtension` required file extension on linux - VM: Fixed `ARRAY select SCALAR` erroring on index == size - VM: Fixed crash when numbers exceeded valid range (`std::out_of_range` now gets catched and a `NaN` type is created. Warning gets emitted) - VM: Fixed `createMarker ARRAY` is returning first value of position instead of string
  4. SQF-VM Release 1.2.1 (RC3) Downloads https://github.com/SQFvm/vm/releases/tag/1.2.1-RC3 https://x39.io/Files/sqfvm/sqfvm-1.2.1-RC3.zip Changelog - CLI: Removed `-f` alias of `--sqf-file PATH` - CLI: Removed `-F` alias of `--config-file PATH` - CLI: Removed `-n` alias of `--no-print` - CLI: Removed `-N` alias of `--no-execute-print` - CLI: Removed `-r` alias of `--sqf-code CODE` - CLI: Removed `-R` alias of `--config-code CODE` - CLI: Renamed `--no-prompt` to `--automated` - CLI: Renamed `--no-print` to `--no-work-print` - CLI: Renamed `--sqf-code CODE` to `--sqf CODE` - CLI: Renamed `--config-code CODE` to `--config CODE` - CLI: Renamed `--config-file PATH` to `--input-config PATH` - CLI: Renamed `--sqf-file PATH` to `--input-sqf PATH` - CLI: Renamed `--enable-classname-check` to `--check-classnames` - CLI: Added `--input PATH` (`-i PATH`) to load supported files - CLI: Added `--input-pbo PATH` to load supported pbo files - CLI: Added `--parse-only` option, to disable the execution of SQF code. - CLI: Fixed `--debugger <PORT>` always attempting to launch at port 1 - VM: Now using working directory instead of executable directory for relative paths - VM: Line-Errors now start at 1 instead of 0 - VM: Path now is displayed the same way for parsing issues as it is for runtime issues - VM: Improved config parsing performance - VM: Implemented `<STRING> configClasses <CONFIG>` - VM: Implemented `configProperties <ARRAY>` - VM: Improved error messages on runtime_error (affected command: `callExtension`) - VM: Library names no longer can contain `/` or `\` - VM: Added `assert <BOOL>` - VM: Added `halt` - VM: Added `<ARRAY> # <SCALAR>` - VM: Fixed `apply` operator crashing - VM: Fixed `nil` being printed as `ni` - VM: Fixed relative pathing on Linux - VM: Fixed potential crash when cli-file was not found - VM: Fixed potential crash on invalid filesystem usage - VM: Fixed undetected PreProcessing instructions - VM: Fixed filesystem `..` messup when using backslashes - VM: Fixed filesystem nagivation issues with relative pathing - VM: Fixed path is not getting displayed on operators - VM: Fixed PreProcessing messing up linecount when `\r` is encountered - VM: Fixed Circular Parenthood error in config - VM: Fixed end of parsing before EOF was not erroring - VM: Fixed missing `L` on error outputs (eg. `[ERR][5|C5]` instead of `[ERR][L5|C5]`) - VM: Fixed `<object> in <object>` - VM: Fixed `SCALAR toFixed SCALAR` missing tailing zeros - VM: Fixed `for` var did not included `to` value - VM: Fixed operators with numbers not parsed - VM: Fixed array operators can cause recursion which makes the VM crash - VM: Fixed preprocessor parsing contents inbetween strings - VM: Fixed any `#` would be consumed as preprocessor instructions - VM: Fixed config operations navigating inherited classes.
  5. ArmA.Studio Open-Source Community made IDE for ArmA (best works with profiling build) !PLEASE DISABLE BATTLE EYE DURING DEBUGGING SESSIONS! Downloads ArmA.Studio 0.1.6290.31151 setup.exe 0.1.6293.24366 setup.exe 0.2.6331.26237 setup.exe 0.2.6333.12157 setup.exe 0.2.6402.7223 setup.exe ArmaDebugEngine BIDebugEngine.dll build 28 x86 BIDebugEngine.dll build 28 x64 BIDebugEngine.dll build 34 x64 BIDebugEngine.dll build 45 x86 BIDebugEngine.dll build 45 x64 Installation Please refer to this wiki article https://github.com/ArmA-Studio/ArmA.Studio/wiki/Install-and-use-ArmA.Studio Links ArmA.Studio at GitHub ArmaDebugEngine at GitHub Discord Invite Important Informations The tool is provided with auto-update and auto-error-report. Both cannot be disabled as of now. We are actively seeking developers in the community! So if you capable of writing C# code, feel free to join this project :) How to test -@myMod --Addons <-- workspace is set here ---Tag_Mod ----$PBOPREFIX$ ----examplescript.sqf <-- set breakpoint in here ----config.cpp Hope you enjoy!
  6. btw. https://discordapp.com/channels/294154999766843394/294532226039808000/528370839775608854 (requires being on the discord server already https://discord.gg/RRaPyb9) contains instructions about how to get the debugger running again (no mayor update on ArmA.Studio yet because ... uff ... work) note that you might need to read a lil bit further for fixes (new debugger is kinda stable and kinda unstable, which is also a reason why there is no mayor release yet)
  7. SQF-VM Release 1.2 (RC1) Download https://x39.io/projects?project=SQF-VM https://github.com/SQFvm/vm/releases/tag/1.2.0-RC1 Highlights PreProcessor now is available The tool command `except__` got added to allow to catch exceptions thrown by the runtime Changelog - 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 Further info can be taken from the corresponding GitHub-Release
  8. SQF-VM Release 1.1 (RC1) Download https://x39.io/projects?project=SQF-VM https://github.com/SQFvm/vm/releases/tag/1.1.0-RC1 Changelog - 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 Further info can be taken from the corresponding GitHub-Release
  9. There now is an official wishlist for operators: https://docs.google.com/spreadsheets/d/1kRw1afDwnJvnW67ylmj91CVr8Qs57G7570-5XmnqSD4/edit?usp=sharing if you thus would like to see an operator in the next sqf-vm release, feel free to add your command there :)
  10. Release version 1.0 Changelog literally is nonexisting as this is a complete new version compared with last. Help Output: .\sqfvm-cpp.exe --help USAGE: D:\Git\SQF-VM\Release\Windows\x64\sqfvm-cpp.exe [--pretty-print <PATH>] ... [-c] [-N] [-n] [-p <NUMBER>] [-m <NUMBER>] [-s] [-a] [-R <CODE>] ... [-r <CODE>] ... [-F <PATH>] ... [-f <PATH>] ... [--] [--version] [-h] Where: --pretty-print <PATH> (accepted multiple times) Loads provided file from disk and pretty-prints it onto console. -c, --disable-classname-check Disables the config checking for eg. createVehicle. -N, --no-execute-print Prevents the `Execute` and two horizontal lines to be printed. -n, --no-print Prevents the value stack to be printed out at the very end. -p <NUMBER>, --server-port <NUMBER> Sets the port of the server. Defaults to 9090. -m <NUMBER>, --max-instructions <NUMBER> Sets the maximum ammount of instructions to execute before a hard exit may occur. Setting this to 0 will disable the limit. -s, --start-server Causes the sqf-vm to start a network server allowing for automated control. -a, --no-prompt Disables the prompt which expects you to type in sqf-code. -R <CODE>, --config-code <CODE> (accepted multiple times) Loads provided config-code directly into the sqf-vm. (executed after files) -r <CODE>, --sqf-code <CODE> (accepted multiple times) Loads provided sqf-code directly into the sqf-vm. (executed after files) -F <PATH>, --config-file <PATH> (accepted multiple times) Loads provided config-file from the hdd into the sqf-vm. -f <PATH>, --sqf-file <PATH> (accepted multiple times) Loads provided sqf-file from the hdd into the sqf-vm. --, --ignore_rest Ignores the rest of the labeled arguments following this flag. --version Displays version information and exits. -h, --help Displays usage information and exits. Emulates the ArmA-Series SQF environment. Supported commands: [ ["n", "parsingnamespace"], ["n", "pi"], ["n", "nil"], ["n", "east"], ["n", "missionnamespace"], ["n", "cmds__"], ["n", "uinamespace"], ["n", "profilenamespace"], ["n", "productversion"], ["n", "diag_ticktime"], ["n", "allobjects__"], ["n", "true"], ["n", "false"], ["n", "confignull"], ["n", "configfile"], ["n", "blufor"], ["n", "west"], ["n", "opfor"], ["n", "resistance"], ["n", "independent"], ["n", "civilian"], ["n", "sideempty"], ["n", "sideenemy"], ["n", "grpnull"], ["n", "sidefriendly"], ["n", "sidelogic"], ["n", "sideunknown"], ["n", "objnull"], ["u", "abs", "SCALAR"], ["u", "round", "SCALAR"], ["u", "sqrt", "SCALAR"], ["u", "deg", "SCALAR"], ["u", "acos", "SCALAR"], ["u", "selectmax", "ARRAY"], ["u", "log", "SCALAR"], ["u", "sin", "SCALAR"], ["u", "toupper", "STRING"], ["u", "tan", "SCALAR"], ["u", "exp", "SCALAR"], ["u", "rad", "SCALAR"], ["u", "random", "SCALAR"], ["u", "hint", "STRING"], ["u", "hint", "TEXT"], ["u", "-", "SCALAR"], ["u", "systemchat", "STRING"], ["u", "+", "SCALAR"], ["u", "+", "NaN"], ["u", "+", "ARRAY"], ["u", "!", "BOOL"], ["u", "floor", "SCALAR"], ["u", "count", "ARRAY"], ["u", "count", "STRING"], ["u", "count", "CONFIG"], ["u", "cei", "SCALAR"], ["u", "asin", "SCALAR"], ["u", "selectmin", "ARRAY"], ["u", "ln", "SCALAR"], ["u", "atan", "SCALAR"], ["u", "allvariables", "NAMESPACE"], ["u", "allvariables", "OBJECT"], ["u", "allvariables", "GROUP"], ["u", "atg", "SCALAR"], ["u", "isnil", "STRING"], ["u", "isnil", "CODE"], ["u", "units", "GROUP"], ["u", "units", "OBJECT"], ["u", "cos", "SCALAR"], ["u", "private", "STRING"], ["u", "private", "ARRAY"], ["u", "vectormagnitude", "ARRAY"], ["u", "format", "ARRAY"], ["u", "scriptdone", "SCRIPT"], ["u", "vectormagnitudesqr", "ARRAY"], ["u", "vectornormalized", "ARRAY"], ["u", "call", "CODE"], ["u", "with", "NAMESPACE"], ["u", "default", "CODE"], ["u", "comment", "STRING"], ["u", "compile", "STRING"], ["u", "while", "CODE"], ["u", "typename", "ANY"], ["u", "str", "ANY"], ["u", "for", "STRING"], ["u", "if", "BOOL"], ["u", "selectrandom", "ARRAY"], ["u", "reverse", "ARRAY"], ["u", "tolower", "STRING"], ["u", "case", "ANY"], ["u", "switch", "ANY"], ["u", "params", "ARRAY"], ["u", "diag_log", "ANY"], ["u", "tree__", "STRING"], ["u", "typeof", "OBJECT"], ["u", "help__", "STRING"], ["u", "configparse__", "STRING"], ["u", "toarray", "STRING"], ["u", "tostring", "ARRAY"], ["u", "configname", "CONFIG"], ["u", "confighierarchy", "CONFIG"], ["u", "inheritsfrom", "CONFIG"], ["u", "isnumber", "CONFIG"], ["u", "istext", "CONFIG"], ["u", "isclass", "CONFIG"], ["u", "isarray", "CONFIG"], ["u", "getnumber", "CONFIG"], ["u", "gettext", "CONFIG"], ["u", "getarray", "CONFIG"], ["u", "creategroup", "SIDE"], ["u", "groupid", "GROUP"], ["u", "deletegroup", "GROUP"], ["u", "createvehicle", "ARRAY"], ["u", "deletevehicle", "OBJECT"], ["u", "position", "OBJECT"], ["u", "getpos", "OBJECT"], ["u", "velocity", "OBJECT"], ["b", "SCALAR", "min", "SCALAR"], ["b", "SCALAR", "atan2", "SCALAR"], ["b", "OBJECT", "domove", "ARRAY"], ["b", "ARRAY", "domove", "ARRAY"], ["b", "SCALAR", "^", "SCALAR"], ["b", "CODE", "foreach", "ARRAY"], ["b", "ARRAY", "vectordiff", "ARRAY"], ["b", "ARRAY", "vectoradd", "ARRAY"], ["b", "SCALAR", "max", "SCALAR"], ["b", "ANY", "!=", "ANY"], ["b", "SIDE", "!=", "SIDE"], ["b", "STRING", "!=", "STRING"], ["b", "OBJECT", "!=", "OBJECT"], ["b", "GROUP", "!=", "GROUP"], ["b", "TEXT", "!=", "TEXT"], ["b", "CONFIG", "!=", "CONFIG"], ["b", "DISPLAY", "!=", "DISPLAY"], ["b", "CONTRO", "!=", "CONTRO"], ["b", "LOCATION", "!=", "LOCATION"], ["b", "ARRAY", "set", "ARRAY"], ["b", "SCALAR", "mod", "SCALAR"], ["b", "SCALAR", "-", "SCALAR"], ["b", "ARRAY", "-", "ARRAY"], ["b", "SCALAR", "%", "SCALAR"], ["b", "ARRAY", "pushback", "ANY"], ["b", "SCALAR", "+", "SCALAR"], ["b", "ARRAY", "+", "ARRAY"], ["b", "STRING", "+", "STRING"], ["b", "SCALAR", "*", "SCALAR"], ["b", "SCALAR", "/", "SCALAR"], ["b", "CONFIG", "/", "STRING"], ["b", "ARRAY", "vectorcos", "ARRAY"], ["b", "SCALAR", ">", "SCALAR"], ["b", "ARRAY", "append", "ARRAY"], ["b", "ARRAY", "resize", "SCALAR"], ["b", "ARRAY", "vectorcrossproduct", "ARRAY"], ["b", "IF", "exitwith", "CODE"], ["b", "ANY", "call", "CODE"], ["b", "ARRAY", "vectordistance", "ARRAY"], ["b", "BOOL", "&&", "BOOL"], ["b", "BOOL", "&&", "CODE"], ["b", "SWITCH", ":", "CODE"], ["b", "ARRAY", "select", "SCALAR"], ["b", "ARRAY", "select", "BOOL"], ["b", "ARRAY", "select", "ARRAY"], ["b", "ARRAY", "select", "CODE"], ["b", "STRING", "select", "ARRAY"], ["b", "CONFIG", "select", "SCALAR"], ["b", "ARRAY", "vectordistancesqr", "ARRAY"], ["b", "ANY", "spawn", "CODE"], ["b", "ARRAY", "vectordotproduct", "ARRAY"], ["b", "SCALAR", "<=", "SCALAR"], ["b", "ARRAY", "vectormultiply", "SCALAR"], ["b", "SCALAR", ">=", "SCALAR"], ["b", "WITH", "do", "CODE"], ["b", "WHILE", "do", "CODE"], ["b", "FOR", "do", "CODE"], ["b", "SWITCH", "do", "CODE"], ["b", "NAMESPACE", "getvariable", "STRING"], ["b", "NAMESPACE", "getvariable", "ARRAY"], ["b", "OBJECT", "getvariable", "STRING"], ["b", "OBJECT", "getvariable", "ARRAY"], ["b", "GROUP", "getvariable", "STRING"], ["b", "GROUP", "getvariable", "ARRAY"], ["b", "SCALAR", "==", "SCALAR"], ["b", "SIDE", "==", "SIDE"], ["b", "STRING", "==", "STRING"], ["b", "OBJECT", "==", "OBJECT"], ["b", "GROUP", "==", "GROUP"], ["b", "TEXT", "==", "TEXT"], ["b", "CONFIG", "==", "CONFIG"], ["b", "DISPLAY", "==", "DISPLAY"], ["b", "CONTRO", "==", "CONTRO"], ["b", "LOCATION", "==", "LOCATION"], ["b", "FOR", "step", "SCALAR"], ["b", "NAMESPACE", "setvariable", "ARRAY"], ["b", "OBJECT", "setvariable", "ARRAY"], ["b", "GROUP", "setvariable", "ARRAY"], ["b", "OBJECT", "setvelocity", "ARRAY"], ["b", "ARRAY", "joinstring", "STRING"], ["b", "CODE", "count", "ARRAY"], ["b", "STRING", "callextension", "STRING"], ["b", "STRING", "callextension", "ARRAY"], ["b", "IF", "then", "ARRAY"], ["b", "IF", "then", "CODE"], ["b", "CODE", "else", "CODE"], ["b", "FOR", "from", "SCALAR"], ["b", "FOR", "to", "SCALAR"], ["b", "SCALAR", "<", "SCALAR"], ["b", "ARRAY", "apply", "CODE"], ["b", "ARRAY", "deleteat", "SCALAR"], ["b", "ARRAY", "arrayintersect", "ARRAY"], ["b", "ARRAY", "find", "ANY"], ["b", "STRING", "find", "STRING"], ["b", "ARRAY", "params", "ARRAY"], ["b", "CONFIG", "merge__", "CONFIG"], ["b", "ANY", "createvehiclelocal", "ANY"], ["b", "BOOL", "and", "BOOL"], ["b", "BOOL", "and", "CODE"], ["b", "BOOL", "||", "BOOL"], ["b", "BOOL", "||", "CODE"], ["b", "BOOL", "or", "BOOL"], ["b", "BOOL", "or", "CODE"], ["b", "ANY", "isequalto", "ANY"], ["b", "STRING", "createvehicle", "ARRAY"], ["b", "ANY", "isequaltype", "ANY"], ["b", "CONFIG", ">>", "STRING"], ["b", "OBJECT", "setpos", "ARRAY"], ["b", "GROUP", "createunit", "ARRAY"], ["b", "STRING", "createunit", "ARRAY"] ] hope you enjoy the 1.0 release https://x39.io/Files/sqfvm/sqfvm-1.0.zip https://github.com/X39/sqf-vm/releases/tag/1.0.0-RC1
  11. just to give some further updates (so this does not appears as dead), i will now present you another snapshot. The biggest highlight this time: pretty-printing i also started to upload those snapshots to my website, so this time you have to head over to here: https://x39.io/projects?project=SQF-VM to get it :) latest snapshot will always be available there. As usual, the discord gets a lot more updates more regular and every snapshot, release or other important info, will always be posted in there (https://discord.gg/vpdwJtG) to pretty print, just do .\sqfvm-cpp.exe --pretty-print path/to/file.sqf -anN `anN` options to supress the normal output, you can always read more about arguments using `--help` hope you enjoyed this little update about sqf-vm ohh and: 25 commands before we hit the next stable release preparations <3 kindly regards X39
  12. quite close to the actual sqf implementation if you want to discover why, the github is the way to go. in case you need help diving deeper, feel free to join the discord and ask questions :) -----edit----- not only i just now noticed i necrod, but i also already posted that :facepalm: i am very sorry for my lazyness ...
  13. Latest snapshot of the cpp variant: https://cdn.discordapp.com/attachments/365803725123747841/464174755105472532/sqfvm-cpp.zip at the moment, the cpp branch hits even in regards of operators supported (https://docs.google.com/spreadsheets/d/1smu1vn9a8uiatg8RMSiOsuWOdOTqOD0Hhyxptm3Jzxo/edit#gid=0) and the debugger is fully implemented, it will be available as new, full release and SQF-VM hits BETA
  14. you always can look into https://github.com/X39/sqf-vm/tree/master/sqfvm-cpp which more or less as close as one can get without direct source code
  15. Quick gentle reminder that SQF-VM still is searching people interested in contributing to the CPP branch (which is why the current release takes so long, complete rewrite and commands need to be ported/rewritten) to check what is already ported, see https://docs.google.com/spreadsheets/d/1smu1vn9a8uiatg8RMSiOsuWOdOTqOD0Hhyxptm3Jzxo/edit#gid=0 (cpp branch contains other commands too already that are not listed in there) feel free to fork the sqf-vm repo and start pushing stuff to the cpp branch https://github.com/X39/sqf-vm/tree/cpp/sqfvm-cpp and in case you need help, feel free to join the discord :) https://discord.gg/vpdwJtG
  16. we just found a tiny bug in the latest release that will cause either endless loops or a crash of the tool when using local variables (eg _var, global ones are not affected) or commands that involve local variables (eg. count) will not release a fix unless one is interested in it (already fixed on master, next version obviously also will have this fixed)
  17. Released SQF-VM Standalone Alpha 0.1.4 (tool allowing you to run arbitrary sqf code) https://github.com/X39/sqf-vm/releases/tag/0.1.4-alpha As usual, the hint that the Discord-Server contains a bot that allows you to run the code inside of discord. Highlights of this version: support for `spawn` (executed after the sync context of the VM is done, might suspend a script to give other scripts a chance to run) support for config parsing (during runtime, use `configFile mergeFrom__ parseConfig__ "<YOUR CONFIG>"`) Changes to the command line parameters (making old scripts possibly outdated) Changelog: SCRIPT:t:0:(null) CONFIG:t:0:(null) configFile:n:4:nil selectRandom:u:4:selectRandom <ARRAY> getText:u:4:getText <CONFIG> tolower:u:4:tolower <STRING> vectorNormalized:u:4:vectorNormalized <VECTOR3D> toupper:u:4:toupper <STRING> isArray:u:4:isArray <CONFIG> isText:u:4:isText <CONFIG> vectorMagnitude:u:4:vectorMagnitude <VECTOR3D> isNumber:u:4:isNumber <CONFIG> getNumber:u:4:getNumber <CONFIG> inheritsFrom:u:4:inheritsFrom <CONFIG> isClass:u:4:isClass <CONFIG> getArray:u:4:getArray <CONFIG> reverse:u:4:reverse <ARRAY> scriptDone:u:4:scriptDone <SCRIPT> vectorMagnitudeSqr:u:4:vectorMagnitudeSqr <VECTOR3D> >>:b:4:<CONFIG> >> <STRING> vectorMultiply:b:4:<VECTOR3D> ectorMultiply <SCALAR> vectorDistance:b:4:<VECTOR3D> vectorDistance <VECTOR3D> vectorDistanceSqr:b:4:<VECTOR3D> vectorDistanceSqr <VECTOR3D> vectorDiff:b:4:<VECTOR3D> vectorDiff <VECTOR3D> spawn:b:4:<ANY> spawn <CODE> resize:b:4:<ARRAY> resize <SCALAR> vectorDotProduct:b:4:<VECTOR3D> vectorDotProduct <VECTOR3D> vectorAdd:b:4:<VECTOR3D> vectorAdd <VECTOR3D> vectorCos:b:4:<VECTOR3D> vectorCos <VECTOR3D> createUnit:b:4:<GROUP> createUnit <ARRAY> deleteAt:b:4:<ARRAY> deleteAt <SCALAR> append:b:4:<ARRAY> append <ARRAY> find:b:4:<ARRAY> find <ANY>#<STRING> find <STRING> exitWith:b:4:<IF> exitWith <CODE> /:b:7:<SCALAR> / <SCALAR> | <CONFIG> / <STRING> arrayIntersect:b:4:<ARRAY> arrayIntersect <ARRAY> vectorCrossProduct:b:4:<VECTOR3D> vectorCrossProduct <VECTOR3D> mergefrom__:b:4:<CONFIG> mergefrom__ <CONFIG> parseconfig__:u:4:parseconfig__ <STRING>
  18. also availale on REDDIT XStudios blog Zeus is a pretty DAMN exciting mission mode but suddenly its lacking some important features … One of those features is the ability to add custom compositions so that you dont need to set up really EVERY mission from scratch … Want a simpleToUse solution to add your own compositions? Well ^^ then read carefully: Requirements: binPBO/addonBuilder (ArmA 3 Tools) or any other pbo packaging tool ArmA 3 (Trust me … you need it :F) got everything you need? well then lets start! STEP 1 Create your compposition using the editor/zeus or whatever you want to use inside of the mission editor STEP 2 Place !YOUR PLAYER CHAR! (not the zeus controled for example) in the middle of your composition (will be used as 0 point so that you later will place the base around this place) STEP 3 C&P this little script into your debug console (press ESC to open the debug console when youre admin/inside of the mission editor) _nameOfCompositionFirstGroup = "by X39"; _nameOfCompositionSecondGroup = "FOBs"; _nameOfComposition = "ION FOB ALPHA"; _range = 500; _filterAmmoboxes = true; _classNameOfCompositionFirstGroup = []; _classNameOfCompositionSecondGroup = []; _classNameOfComposition = []; { if(_x == 32) then { _classNameOfCompositionFirstGroup set[count _classNameOfCompositionFirstGroup, 95]; } else { _classNameOfCompositionFirstGroup set[count _classNameOfCompositionFirstGroup, _x]; }; false }count toArray _nameOfCompositionFirstGroup; _classNameOfCompositionFirstGroup = toString _classNameOfCompositionFirstGroup; { if(_x == 32) then { _classNameOfCompositionSecondGroup set[count _classNameOfCompositionSecondGroup, 95]; } else { _classNameOfCompositionSecondGroup set[count _classNameOfCompositionSecondGroup, _x]; }; false }count toArray _nameOfCompositionSecondGroup; _classNameOfCompositionSecondGroup = toString _classNameOfCompositionSecondGroup; { if(_x == 32) then { _classNameOfComposition set[count _classNameOfComposition, 95]; } else { _classNameOfComposition set[count _classNameOfComposition, _x]; }; false }count toArray _nameOfComposition; _classNameOfComposition = toString _classNameOfComposition; _strArr = toArray format["class CfgGroups%7{%7%8class Empty%7%8{%7%8%8side = 8;%7%8%8name = ""Compositions"";%7%8%8class %4%7%8%8{%7%8%8%8name = ""%1"";%7%8%8%8class %5%7%8%8%8{%7%8%8%8%8name = ""%2"";%7%8%8%8%8class %6%7%8%8%8%8{%7%8%8%8%8%8name = ""%3"";%7", _nameOfCompositionFirstGroup, _nameOfCompositionSecondGroup, _nameOfComposition, _classNameOfCompositionFirstGroup, _classNameOfCompositionSecondGroup, _classNameOfComposition, toString [13,10], toString [9]]; { _flag = false; _typeX = typeOf _x; if(_typeX == "Rabbit_F") then {_flag = true;}; if(_typeX == "Snake_random_F") then {_flag = true;}; if(_typeX == "GroundWeaponHolder") then {_flag = true;}; if(_x == player) then {_flag = true;}; if(_filterAmmoboxes && {_x isKindOf "ReammoBox_F"}) then {_flag = true}; if(!_flag) then { _nulledPosition = [(position _x select 0) - (position player select 0), (position _x select 1) - (position player select 1), (position _x select 2) - (position player select 2)]; _strArr = _strArr + toArray(format["%8%8%8%8%8class Object%1 {side=8;vehicle=""%2"";rank="""";position[]={%3,%4,%5};dir=%6;};%7", _forEachIndex, _typeX, _nulledPosition select 0, _nulledPosition select 1, _nulledPosition select 2, direction _x, toString [13,10], toString [9]]); }; }forEach nearestObjects [position player, ["all"], _range]; _strArr = _strArr + toArray format["%2%2%2%2};%1%2%2%2};%1%2%2};%1%2};%1};", toString [13,10], toString [9]]; copyToClipBoard toString _strArr; and execute it local STEP 4 in your ArmA 3 installation, create a new folder callen “@WhatEverYouWantToCallIt†(the @ is important at the beginning!) STEP 5 create another new folder inside of the newly created folder callen “Addons†STEP 6 AND another folder inside the Addons folder (name it whatever you want to name it ^^ but a basic convention is usually: MODDERTAG_MODNAME_PURPOSE) STEP 7 create a file callen “config.cpp†inside of the folder you created in step 6 and fill it (using CTRL+V for example) with the magical content you got from step 3 inside of your clipboard (if you copied something else during the phase of step 4 and here then … yeah … execute step 3 again and come back to here! :F) You also need to add a CfgPatch class at the top (use this as template :F) { class YOUR_ADDONFOLDER_NAME { units[] = {}; weapons[] = {}; requiredVersion = 0.1; requiredAddons[] = {"A3_Modules_F", "A3_Modules_F_Curator"}; }; }; STEP 8 open your binPBO / Addonmaker (from the ArmA 3 tools) and set the addon source directory to the folder you created in step 6 the destination folder needs to be the Addons folder you created in Step 5 then finally click on Pack (or what ever seems to be the button to create some new file out of that folder) STEP 9 Enable your addon in ArmA 3 STEP 10 Start a ZEUS mission and use your newly created composition (it could be required that the server also has this little addon you just created) Ohh and by the way call yourself modder from now as you modified the game successfully kindly regards X39
  19. Release 0.1.3-alpha also posting (again) the link to the discord of the sqf-vm https://discord.gg/b5qCUCK where the bot variant is available in 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
  20. next release also will contain the `params` command
  21. mistake of mine obviously `help__` :3 all those examples are hand-written thus typos etc. might occur wont be in release though (and edited the post)
  22. quick status update on ... well ... the update Getting progress done but not as much as i hoped ... thats why the update of this week also is delayed till next week (discord bot is as usual up-to-date with latest version available) the range of planned features did not changed I also will introduce an unary variant of the help__ command that outputs stuff like this (here for the command itself): <NULLAR> help__ Description: Displays this help text. Usage: Examples: help__ //nil <UNARY> help__ Description: Outputs information to given command. Expects a <STRING> on righthand. Usage: help__ "command" Usage: Examples: help__ "typeOf"//nil
  23. BI Broke it should still be working with Performance build @dedmen is responsible for that part so he probably can tell you more about this :)
  24. https://github.com/X39/sqf-vm/releases/tag/0.1.2-alpha 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 next release can be expected to contain sides & groups
  25. next weeks update is on track already new commands in the github (and discord bot) for today: position, getPos, setPos, velocity, setVelocity, createVehicle, getVariable, setVariable