Jump to content

SkaceKachna

Member
  • Content Count

    46
  • Joined

  • Last visited

  • Medals

Everything posted by SkaceKachna

  1. Hi, I just wanted to present a mission I've been working on for quite a while now but never got around to posting it here. Basic description Random infantry skirmish on a random place on the map, you can choose any faction, any weapon and any vehicle and just start fighting. The battles are fast, fierce and fun. The mission purpose is to have some quick arcade fun with whatever faction mod you have. Main features Fast-paced, dynamically generated firefight with infantry and land/air vehicles Compatible with any mod that has proper units definitions Fully customizable, set your own rules, select your gear, pick a location, pick factions 3 game modes: Push, King of the Hill and Team Deathmatch Supports Singleplayer and COOP (up to 8 players) Supports 30 worlds! Game modes Push - attack and capture sequence of points, one after another while defenders put fierce resistance King of the Hill - team that has more units in a specified area gets points over time, the team that reaches the point limit first wins Team Deathmatch - get points for killing enemy units, the team that reaches the point limit first wins Workshop collection link (contains missions for all 30 worlds) The mission is fully open source, you can find the sources on GitHub: https://github.com/SkaceKamen/random-infantry-skirmish/ (feel free to use any code found there for any purpose)
  2. Lint Summary Extension for Visual Studio Code, that does some syntax error checking, variable existence checking and more. ( It's now completely separated from sqflint CLI tool, with many other features, so I decided to make separate thread for it. ) Homepage: http://sqflint.zipek.cz/ VSCode Market: https://marketplace.visualstudio.com/items?itemName=skacekachna.sqflint Github: https://github.com/SkaceKamen/vscode-sqflint NOTE: Works best with SQF Language extension Changelog You can find changelog at here. Features Syntax error checking Checks existence for variables (global and local) Go to definition and Find usages for variables Displays help (hover help and signature help) for BIS/CBA functions and commands Autocomplete for BIS/CBA functions, commands and unit/ui events Debugger (RPT file monitor) Screenshots
  3. SkaceKachna

    SQFLint for Visual Studio Code

    I'm glad @Senfo is helping to improve this project, I'm sad that I can't do it myself or help him 🙂
  4. SkaceKachna

    SQFLint for Visual Studio Code

    A bit sad you had to do this, but it's understandable, I don't really have a free time to work on this anymore. Damn the real life!
  5. Lint Summary SQFLint is command line tool, that checks specified files for syntax errors. It can output those errors in human readable format, or JSON for some futher processing. Homepage: http://sqflint.zipek.cz/ Releases: https://github.com/SkaceKamen/sqflint/releases Github: https://github.com/SkaceKamen/sqflint (extension moved to separate thread) Changelog You can find changelog at releases page Features Syntax error checking Undefined variable warnings Exports some info about file for futher processing by external tools
  6. SkaceKachna

    SQFLint for Visual Studio Code

    Sorry everyone for the previous release, there were some critical bugs in it (it was long time since I last time worker on the extension) Version 0.9.9 Workspace indexing now displays status in statusbar Workspace indexing no longer displays undefined warnings on first pass Fixed autocompletion not working Fixed description.ext parser
  7. SkaceKachna

    SQFLint for Visual Studio Code

    @Tankbuster Maybe the functions definitions are using too much macros, the parser of cfgFunctions is currently pretty dumb. Just released new version: Version 0.9.8 Added new functions and operators Fixed parser getting stuck in infinite loop under certain conditions (#49) (thanks billw2012) There's some more features I'd like to add in future, unfortunately, I don't really have much free time anymore 😢
  8. SkaceKachna

    SQFLint for Visual Studio Code

    @Tankbuster you might wanna open your mission/addon as folder in the editor, then all files in that folder will be automatically indexed I'm sorry everyone, I'm very busy with my life right now and can barely keep up, hopefully I will have some time to update the extension soon.
  9. Also as sidenote, I would strongly discourage you from doing this, since you'll be polluting user profile with long texts, possibly decreasing user performance not only with your mission, but in arma as general. I don't know how exactly profile values work on backend part, but they're heavily used for UI stuff (the colors and positions of elements are saved using profile values) and having too much data in profile definitely increases load times of everything and sometimes even causes lags. If you really want to do this, send the scripts to user when connecting and save them to mission namesapce, that's much better solution and your scripts will be only stored in memory and erased upon leaving the mission.
  10. You can use preprocessFileLineNumbers to load the script from file in string form.
  11. Hi, I'm making an mission that's not really tied to single map and I want to support as many maps as possible. The only approach to achieve this seems to be to publish the mission for each map separately through in-game editor, but that's really tedious. Currently I have like 7 variants on workshop and it takes like 5 minutes of clicking to publish them every update. The Publisher tool that would speed things up shows this message: Which is definitely really old, so I don't have my hopes for it ever working for missions. Is there any other way to publish mission on workshop than using in-game editor? There are some other missions that are published for multiple maps, does everyone just publish them by hand?
  12. Hello, is there any way to stop camera mid-commit? For example I call: GCAM camSetPos SOMEWHERE_FAR; GCAM camCommit 100; then player performs an action and I want the camera stop moving to the target position and move somewhere else. I've tried to simply call: GCAM camCommit 0; which does nothing (the commits stack?). I've also tried to destroy the camera, which works, but I'm unable to recreate it at same position and rotation. Following works, with the exception of direction, which is incorrect, the camera is looking somewhere completely else when restored: // Save camera position and direction private _pos = getPos(GCAM); private _dir = vectorDir(GCAM); // Destroy camera GCAM cameraEffect ["terminate","back"]; camDestroy GCAM; // Create new camera and assign the position and direction call createGCAM; GCAM camSetPos _pos; GCAM camSetDir _dir; GCAM camCommit 0; Anyone has experience with this? Any method to clear commits? Or any way to "clone" the camera properly? Thanks
  13. SkaceKachna

    How to stop camera commiting?

    ( yea, I choose wrong name for the example scripts, I can see how you can be confused by that :) ) Well, that's the point, I don't want to wait for the first commit to finish. I want to cancel it and create new commit. Right now, it seems like the only way to achieve this is by using sleep instead of camCommitted, because the camCommited will wait for the longest commit, not the latest commit as demonstrated in the example mission. So if you do: _cam camSetPos _p2; _cam camCommit 100; sleep 2; _cam camSetPos _p3; _cam camCommit 1; waitUntil { camCommitted _cam }; You will end up waiting for 100 seconds, instead of 3, despite the first commit not actually doing anything... Also, I tried using camPrepare* commands, but they have the same behaviour.
  14. SkaceKachna

    How to stop camera commiting?

    OK, so seems like calling camSetPos and camSetTarget before calling camCommit actually stops previous commit and makes camera follow new orders. (so the note here is that you can't just call camCommit without changing anything before). BUT it breaks the camCommitted command, which actually waits for the first commit to finish. I suppose that is a bug? Attached is minimal reproduction mission. The camera should be destroyed upon reaching the target, but it waits until the first commit is done... cameraTest.Altis.zip
  15. SkaceKachna

    How to stop camera commiting?

    I'll try that. GCAM is just variable I used example (short for GlobalCam), i'm using vanilla cameras. Maybe I have some concurrency issue, but from the behaviour I observed, it seems like they stack.
  16. Ok, thanks, at least it's not my fault, I tore few hair out trying to make it work
  17. Hey, I have issue loading the BIDebugEngine.dll ... I put it into game root and launch game, but nothing happened. The pipe used for communication is not active and when I launched non profiling version, no message appeared, so good guess would be the dll is ignored. I've tried both x64 and x86 versions. Is the extension broken, or is it on my side? Could somebody try it on version 1.76.142872?
  18. Wow, that's awesome. Good job!
  19. Well there is clue on the download page: You can actually achieve this with pure scripting. But it requires some work. Basically, you need to execute this script for every unit in the game: this addEventHandler["HandleDamage", { // Only if the damage is from projectile if (_this select 4 != "") exitWith { // Return updated damage (_this select 2) * DMG_COEF }; // Don't update damage for non-projectile damage nil }]; This presumes, that you have DMG_COEF defined somewhere. It simply multiplies every damage unit receives. If you have completely static mission (all units for the mission are already spawned at beginning), this is all you need: // Everything will do twice the damage. DMG_COEF = 2; DMG_HANDLER = { // Only if the damage is from projectile if (_this select 4 != "") exitWith { // Return updated damage (_this select 2) * DMG_COEF }; // Don't update damage for non-projectile damage nil }; // Apply updated damage coeficient to all currently spawned units { _x addEventHandler["HandleDamage", DMG_HANDLER]; } foreach allUnits; Of course, this is not enough for most missions. You will need to call addEventHandler for all units that are spawned in dynamically, which differs for every mission...
  20. I'm guessing the issue is with _t != count Towns That makes it possible for _t to be bigger that count Towns and cause infinite loop. It should be _t < count Towns Also, using _t = count Towns to break the loop condition is not the best way to stop it. You can use exitWith to stop the loop and execute some code, it's more clear. Example: for[{_t = 0},{_t < count Towns},{_t = _t + 1}] do { hint format["%1", ClosestTownsState select _t]; // This is same as normal if, but it will stop the loop if the condition is satisfied if((ClosestTownsState select _t) != 1) exitWith { player setPos (ClosestTowns select _t); }; sleep 5; }; You can also use breakTo / breakOut, but it's a bit more complicated
  21. You don't even need dedicated server, you can just start MP mission from eden and launch another game instance by starting arma3.exe directly and it works
  22. SkaceKachna

    SQFLint for Visual Studio Code

    just released new version, here is list of changes since last time I posted on this forum Version 0.7.8 Added basic coloring for ext/hpp files Added code completion for description.ext Hovering over variable will now display its definiton(s) Update hover format to match default vscode style Fixed hover documentation for some BIS functions Added basic description.ext parser, which will try to parse cfgFunctions and load user defined functions (this actually took a lot of effort) Workspace indexing optimization, SQFLint can now parse multiple files in one process, which greatly incerases performance (this means we have language server behind language server, which is sad)
  23. SkaceKachna

    SQFLint for Visual Studio Code

    That's good idea, I don't know how to do this (current VSCode UI currently has no input for it), but I'll try.
  24. SkaceKachna

    SQFLint - Syntax error checker CLI

    (moved extension to separate thread) New release, v0.6.0, mainly fixing the parser: Updated way code is parsed, enabling more complex analytics Added option to check paths used in execVM ( -cp, -r ) Added option to treat warnings as errors Added option to exit with ERR(1), when error is encountered Variable declaration is now correctly recognized in params and for Blocks not ending with semicolon are now correctly accepted Fixed string quotes not being handled properly Fixed token errors not being handled properly and leaking to stderr Fixed JSON flag being ignored in some cases You can find release packages at github.
  25. SkaceKachna

    SQFLint - Syntax error checker CLI

    Thanks for the article, my grammar source is pretty much the same (you can find it here) only with exception of having control structures defined explicitily. I'm wondering if there is any use to saving the [if/switch/while/for] type to variable... EDIT: While reading it, I noticed some problems in my grammar file. Will probably update it when I'm done with preprocessor.
×