Jump to content


  • Content Count

  • Joined

  • Last visited

  • Medals

  • Medals

Community Reputation

86 Excellent


About x39

  • Rank
    Master Sergeant

Contact Methods

  • Website URL
  • Skype
  • Steam url id
  • Reddit

Profile Information

  • Gender
  • Location
    Germany, NRW, Oberhausen
  • Interests
    Computer Science, Gaming

Recent Profile Visitors

998 profile views
  1. 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 💪
  2. 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
  3. 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.
  4. 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)
  5. 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
  6. 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
  7. 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 :)
  8. 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
  9. 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
  10. 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 ...
  11. 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
  12. 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
  13. 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
  14. 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)
  15. 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>