#arma3_tools
1 messages ยท Page 19 of 1
if you are running as admin, microsoft cripple most gui functionality. notably drag 'n drop.
Sorry if I was unclear, I had the latest Windows 10 "service pack" installed (Fall Creators Update) and working with ExtractPbo a few weeks back. Ended up formatting and doing a clean Win10 reinstall (including the same updates), and now I'm running into issues. I did notice that running the program as admin gave me the big "Nope" mouse cursor when dragging over the ExtractPbo window, while running it normally gave me the "you're going to drag something here" cursor.
I do assume it's something weird under the hood in Windows more than a problem with your tool though. No dependencies I could be missing? The program probably wouldn't start at all if I was missing one of those.
correct
Is it normal to get a "DLL error detected" warning when you first start the program before opening a specific PBO?
no errors of any kind are 'acceptable'
since you did a format, you probably downloaded a fresh set of my tools
subscriber or free?
Just a free mooch
well they have been substantially updated with more than 13 months of updates and fixes.
ah that's simply and probably because no filename
i can confirm it doesn't work here either on the free tools.
prolly the same for subsriber. you are the 1st to report an error.
That makes me feel better, at least it's not something busted on my end.
Not that it's good something isn't working in your software
Well, you know what I mean
i have no plans to fix it at moment.
PBO, RTM and RTMB are up too now
am curious to see your decode of tvp. congrats on that btw.
@smoky halo how complete is the TB formats decoding?
@vague shard define complete ^^
it should be possible to read ALB files. Of course, there can be unseen stuff like new entry dataTypes or other unknown parts
well i guess how much of the formats is still unknown
it seems to be not much
alright. will dig into and see how it goes ๐
ALB basically seems to be a config format as it consists of name-value pairs
there are further tb formats that are not in alb format btw
like .cache and .v4d
Is it all possible to load mods into buldozer, and if so, how?
got this as buldozer launch param -buldozer -name=Buldozer -window -exThreads=0 -disableSteam -noAsserts -cfg=p:\buldozer.cfg -showScriptErrors -mod=B:\Steam\steamapps\common\Arma 3\x\surface_painter_e like how you could normally show a mod, but through a buldozer script doing diag_log for configFile >> cfgPatches it doesn't show up
nor will it.
want to use scripts ? type arma3.exe
what you want is illogical. configs per se have nothihng to do with textures and objects used on maps or witin a p3d. that, is what buldozers for. expecting it to behave like the game, has no logic behiind it.
i dont care about it being illogical in this case
i want to try something and am just wondering if i can load in custom configs wit;hin a buldozer enviroment that does allow heightmap manipulation
why on earth would you want a tool designed to display 3d images, behave like the game when the game already does exactly that?
because i want to have heightmap manipulation and a couple of other TB related things
not in buldozer you don't
you want those in tb
and at best you want to use 02script, if you could.
okay, sure miekero
any other takers?
the 'whatever' launching / synced through TB, that's what i care about
@dusky dune Try putting the .pbo into the "dta" subdirectory of whichever working directory you are using for buldozer (e.g. D:\SteamLibrary\SteamApps\common\Arma 3\Dta). Buldozer appears to read any .pbo placed there. -mod= will just break it and it won't even load base configs.
it does seem to still contain basic configs, but i'll give it a go
3:37:26 ["ScrollBar",bin\config.cpp/ScrollBar]
3:37:26 ["CfgMods",bin\config.cpp/CfgMods]
3:37:26 ["CfgExperience",bin\config.cpp/CfgExperience]
3:37:26 ["CfgAISkill",bin\config.cpp/CfgAISkill]
3:37:26 ["CfgAILevelPresets",bin\config.cpp/CfgAILevelPresets]
3:37:26 ["CfgDifficultyPresets",bin\config.cpp/CfgDifficultyPresets]
3:37:26 ["CfgDifficulties",bin\config.cpp/CfgDifficulties]
etc
Also you'll definitely want to dump "allVariables missionNamespace" and dump the list of SQF commands, there are buldozer specific commands and variables.
Ignore the "cheat" ones though, they don't do anything interesting (in retail builds at least).
according to the leaked source code there is also an cmd line option "-buldozer+addons"
this seems to enable loading of other pbos
dropping them in dta does show that they are loading in the buldozer rpt, but the configs don't seem to be there
tries -buldozer+addons and it loads buldozer okay, but doesn't seem like it's actually loading in an addon
The .exe has a "-scriptLogs" argument now, anyone tried it?
@smoky halo it seems like that actually loads in the 'normal' A3 pbos from my regular arma location
it does crash because of a missing include file that does actually exist within my P drive
running with both +addons and -mod seems to get rid of that behaviour again somehow
Heh, in the latest build the fog handling code takes up 50% of the instructions of super shader (but it may not have to run them all, assuming PSC_FogMode is constant for all pixels and the GPU recognises that).
@Adanteh#0761 did you use procmon yet to see where it scans for pbos? otherwise you may have to use the include approach for config space
it is supposed to load in the dta pbos, it both locks them and shows them in buldozer RPT, but no loading of the configs
why was mikeros post of my repository pinned? That lucker gets credit for everything ^^ ๐
damn right ๐
@nocturne basin did you put this SQF VM thingy behind a webpage yet? ^^
and/or how to I PM the bot?
Not yet @hallow rapids
Only in discord
Sadly right now im kinda ill and cannot Rly concentrate due to that...
Lucky second half of the year ๐
But technically that would be pretty simple
does it actually work? I don't get any reply back from the SQF bot ^^
Join the sqf-vm discord server or simply pm him https://discord.gg/vpdwJtG @tawdry gazelle (PNs still require either ```sqf ``` blocks or @tawdry gazelle)
@dawn palm Just quickly what would be the cause of pboProject not being able to #include a file? I'm trying to include a cfgAmmo and cfgMagazines, but for some reason doesnt work, but it works on another mod
#include "relative\to\current\file"
#include "\absolute\path\from\p:"
#include "..\from\previous\folder"
#include ".\from\current\folder" (not always same as 'current file')
added a little sample project to show PAA lib usage: https://github.com/Braini01/bis-file-formats/tree/master/Samples
anybody build or knows of a SQF beautifier?
Forgot about that ;P
Its a quick hack job of regrex rules for search & place.
Back when people obfuscated code by putting it into a single line with randomly inserted whitespace etc
Worked surprising well to be honest
randomly inserted whitespaces for obfuscation?
Yeah it was the old method, made it back during a3 epoch first release.
All the code was single line with random whitespace, can't remember if they renamed variables aswell. But it made the code readable etc
"obfuscation"
A rather shitty practice.
For people interested : https://github.com/StidOfficial/libpbo
Made a forum post for my file format lib btw: https://forums.bistudio.com/forums/topic/211894-open-source-net-standard-library-for-bisarma-file-formats/
A few days ago I decided to put most of the code to public that I created in many years working with ArmA file formats. So I put it on GitHub here. While ...
@smoky halo would publishing "writing odol" essentially be also sharing how to read it?
if he's structured same as me kju, then the same class for various structures has both the read() abd the write() function embedded in it since the data in the class is the same. Also, it would not be difficult to reverse write's into reads
If it were me, i wouldn't give the parasites any opportunity to decode any of it. You can be certain, they would never ever give credit to t_d or acknowledge his efforts.
how is it different to armake being open source? https://github.com/KoffeinFlummi/armake
as it can write odol/binarize models, isnt this the same situation?
(just trying to understand here)
niether t_d nor myself suppy any info on odol formats.
that's a policy we are unlikely to break. others, can do what they think best.
fair enough
No one knows armake can do that.
Also afaik armake isn't complete
well i'd be surprised if Koffein is offering any opportunity to reverse engineer p3d's, Synide, myself and T_D authored the relevant biki pages (to our regret) and we stopped updating them about 3 years ago.
I am responsible for parts of the new stuff. After what you documented on biki.
It's really just there in the code without any documentation and not really saying "HERE IS HOW TO READ P3D"
well, I will see. Depending on how the project evolves. But I assume it doesnt evolve at all ๐
@smoky halo mikero is already "taking ideas" from you ๐
Arkensor and me are also trying to convince K-Town to reuse rather to rewrite his own
rewrite his own?
he wants to expand his parser capabilities for example
Shrugs leave him to it, having a tool you can tweak is useful.
Hell i made changes armake so it biniarize some maps etc, to avoid some stuff mikero forced (which he later undid 2-3 weeks later)
i guess thats the idea T_D is after by sharing the source
@vague shard "taking ideas?
What kind of parser does he have? Sqf?
Speaking of parsers: does anyone have GPLv3-compatible C/C++ code that could be used to parse (to "undo") the str sqf command?
I want to pass str(something) to the extension and would like to replicate the passed structure as equivalent python objects (e.g. list of list of strings) on the python end.
Fun fact: I'm currently just using a json parser to do that and besides the double double quotes escaping (wtf BI?!?) it works surprisingly well :D
...unless there is a better (and efficient) way of passing complicated structures to the extensions, that I haven't thought of
double double quotes escaping
yep, hello ""world"" literal needs to be quoted as
"hello """"world"""""
the 'rule' is fairly simple to follow just damn difficult to read, all inner qoutes must be a pair so four quotes surrounnding a word looks ugly but is quite heavily used.
this is largely the reason why bis introduced 'quote' to reduce the ugliness. The drawback with 'quote' is unlike "quote", it is subject to macro expansion.
@karmic niche Parsing that is fairly simple.... One for loop is enough
Not even need to iterate over all characters, while loop with strchr would be enough too
Or try this here: https://github.com/X39/sqfParser
As I just realized that you want to parse all sqf
Thanks but I already see a few issues: CC-BY-SA-NC is not GPL-compatible.
And I just want to parse a subset of sqf. Not code, etc, just values.
Probably requires some work to get it running with Gcc
And that should be fairly fast because it's going to be parsed on each function call so using a full parse may slow things down considerably.
But I'll take a look at the code anyway :)
Uhm... It only parses values ๐ ๐
Oh, ok :)
Created it quickly for some other project
Not much work was going into it
That's why it might have some flaws
Not in the Parsing part
But on the coding side
Eg. It uses pragma once
Performance could also be improved by a large bit
Eg. Avoiding substr and working on a single string only
That kind of stuff
Fairly easy to parse an arma string, don't forget there is a callExtension has alternative syntax that might make your life easier (especially if only single depth array of values been past to the extension)
lol. someone made some BIS fileformats code in coffeescript https://github.com/Morhaus/bis-parser
found by coincidence
Yeah but as I'm writing something to write other extensions (in Python) and not just an extension, I don't want to limit the arguments passed to the function. Especially when even I see reasons to pass compound arguments for my mods that depend on it.
That's why I would like to parse (recursive)arrays/numbers/strings/booleans from a sqf str and i would like to do it quite fast - and my guess is that most people that write parsers don't care that much about parsing speed.
After all whether Armake (just for example!) takes 1.0s or 1.2s to parse a file in order to build a PBO... who cares? But if your extension takes 0.0010s or 0.0012s to parse command arguments on each function call, that's a considerable impact difference to your FPS.
On the other hand, if I can just reuse something someone else wrote, then why shouldn't I? ๐
So it's not just about "how to parse an Arma string?". Of course it should be fairly easy for anyone who has any programming experience.
It's more about whether someone else has already implemented the whole parsing and implemented it well and with speed in mind.
In that case. Just prevent Arma from escaping the string in the first place
The best way would be to not have to parse it at all on the extension end :P.
Using str is the only function that I know that will allow me to basically serialize any argument that I want to pass to the extension and also, as a built-in command, it's going to be faster than anything else you would write in SQF to serialize that data ๐
you could "just" replace all the " with ' in the string... But doing that in SQF is probably gonna be bad.. But that way you don't really have to unescape the quotes anything as Arma doesn't escape the quotes
Hmpf.. I can't think of anything better besides Intercept
Intercept -> I fully agree, but using intercept would be like towing your car with a Ferrari. Why tow that car at all? You've already got a Ferrari! ๐
Oh god the armake way is terrible....
I think I have something in my head that can work
Is what armake does enough for you? basically just "" to " ?
or maybe "" to \"
No. Converting "" to ", I can implement myself, as I already said. It's 20 lines of code, after all.
I'm really talking about not wanting to implement the whole parsing, but just plugging my code at some parts of the parsing code to convert the parsed values to Python objects.
Take my Parsing thingy and alter it a little
Otherwise, i can implement it myself, really. It's about reusing (and maybe contributing to as well) other people's code.
@nocturne basin I'll take a look at your code when possible.
Improving it should not be that hard though
Just removing the substr stuff and adding a front index instead of length
@glossy inlet You really need the escaping quotations otherwise crafted user input, could add extra elements etc to input and still be a valid array. You be better off adding an JSON str command if you were really bothered (but barely anyone would use it)
Anyway its pretty simple to parse an arma str and be efficent.
By the time you review someone elses code, you could have implemented it yourself imo.
He wants to parse whole sqf arrays as far as I understood and had trouble to escape strings efficient
The double quotas themselves can be escaped incredibly fast Btw
Is my solution for sqfvm
Can be further improved by not straight replacing every followup char at sight of a single double quota but by utilizing a separate offset
However... Not feeling that good right now which is why I avoided that headache (and right now using a computer causes headache at me)
get glasses
Nothing to do with glasses sadly...
Well i wasen't very serious anyway.
but your avatar has glasses ๐ค
Maybe i have glasses
But your avatar is taking glasses off... or is he putting them on ๐ค
why not both?
๐ฐ
just released a tiny update of ArmA.Studio replacing the clunky autocomplete popup with another one that is working pretty well
https://x39.io/Files/ArmAStudio/ArmA.Studio.0.2.6536.4317.setup.exe
as usual, update should be prompted at you unless you disabled auto-updating
happy coding ๐
The float that was added in v71 ODOL's (but was always just 1.0f) is 0.2f in some Tanoa assets, anyone have any guesses as to what it might be?
Oh, it seems to match drawimportance= in the geo lod, anyone played with it to see what it does?
loddensitycoef= is new too (binarized into v70 ODOL's).
There is also viewDensityCoef but I don't know what any of them do
It'd be interesting to see if loddensitycoef scaled the points at which LOD switching happens (like changing the bounding box of the object does).
Yeah, that seems like what it might be. On September 4th someone asked about if there was anything they could do about aggressive LOD switching and reyhard said they could try loddensitycoef
I have nothing to add to the already accurate info above because I don't know any more than above.
Yeah, loddensitycoef= changes when LOD switches happen. 1 is the default, > 1 gives you more polygons at the same distance, < 1 gives you less polygons at the same distance.
The couple of Tanoa trees I checked used 0.5 which would make them switch to fewer polygon'ed LOD's sooner as the distance increases.
Global, it's in the Geometry LOD.
(It gets copied from the property into the "model info" part of the ODOL too, so a binarize with a recent binarize.exe would be required too.)
eh, would like to have option tweak each lod manually
@ianbanks#7518 so does the latest binarize exe support it already?
@vague shard It should, if it produces type 73 ODOL's.
hm have to double check. recently 71 is what i got
The field first appeared in type 70 so I'd presume that would be fine too.
ok cheers. we will see how it goes ๐
added BIS.WRP with OPRW reading: https://github.com/Braini01/bis-file-formats
@smoky halo git push ?!
๐
๐
VB is an excellent choice when you want to make dialog panels without fuss, and get a considerable amount domne in shortest time. But, i think you should consider any one of the c familiy languages for this project.
I have no use for (dot) Net eg, so don't use it, but along with most folks here, i'd reccomend it.
as above C# alias (dot)Net
or, if you're more comfortable with scripting type languages where you're not required to compile the code, it woulld be hard to find something better than Perl or it's friends
Dot net serves no useful purpose for my tools since they aren't targetted for a windows OS and, the bloat is considerable.
the world does not revolve around IBM pc's and the windows OS. It has the lion's share of consumer product, almost zero in internet servers (vs Linux), and very little in database compared to Big Blue.
dont go Perl ๐
.Net is not windows only anymore ๐
.Net Framework is, .NET Core is not for example
a modern scripting like language would be python I think
@cold slate What @smoky halo said
NET is going places :P
It's very beginner friendly and I'm sure you will be able to do everything you come up with
It has tons of things ready to be utilised already, a very rich library of methods and it has some other goodies
It is like mikero said windows bound though, but with net core all net applications will be able to run on Linux aswell
*almost all, and the best is there is near to zero change for you, you can write it today and without much work make it an executable for Linux based OS's
If you want maximum control over memory management, maximum performance and whatnot, C++ is the go to in my opinion
Python is also very popular, but I'd say start with NET, you will always have time to learn something different later on
I think I've never had a question I couldn't find an answer to on stackoverflow :P
Care sharing what kind of extension you're planning?
Yeah I'd call that a good project to work on
Have you programmed in other languages before?
if you can print strings you're alreead6 50% there because the hardest part is to actually get somehting to compile in the place you expect, with the sourse you wrote, and the headers it uses.
C# is pretty "easy" to understand. You just have to forget sqf almost completely ๐
well there are less than 20 keywords in the c languages (if, them, while). The rest are all functions in llibraries written (for the most part) years ago by people just like you.
My first project was a Discord Bot to restart my Server, update a File with Data from a MySQL DB and update/copys Files depending on Date. Made it (as complete noob with 0 Knowledge of C#) within 2 Days.
sounds bout right
It's more or less the same as SQF. If you know the basic Commands, it's pretty easy. For the rest -> erm... whats the pagename again?
sourcesomething?
whats the fkn name of that page^^ Most used one, i always forget the name
you mean the comref?
nah
good
damnit... https://stackoverflow.com
Why do i always forget that name? ๐
Don't judge me ๐
Btw @cold slate weather syncing is harder than you might think. ACE guys put weeks of work into that and still don't get it right.
Doesn't matter. I mean actually applying the weather in game.
There is a weather mod on the workshop http://steamcommunity.com/sharedfiles/filedetails/?id=879970502 not sure if any good or not
yep
@cold slate I mean that depends on how complex you want it to become
The most simple version would be time syncing and something like "Sunny" "Cloudy" "Raining" ^^
Does someone here know if there will be support for extensions (.so/.dll) in DayZ standalone like there is in arma 3? Or if they are obsolete with dayz sa, as you could integrate any third party c++ code into the game somehow?
You sound confused etc, a dll / dynamic library isn't really gonna be made obsolete.
Their might not be supported at all or it there might be a different interface etc...
Anyway its kinda abit early to worry about that, considering there is no eta on next patch or offical modding support.
I be surprised to see modding support in the next 6 months
@smoky halo I think he was specifically referring to the RVExtension entry point method
Doubt it, since he was asking about integrating c++ code somehow, regardless my reply would cover that aswell
๐ด ๐ฐ
@smoky halo yes its about DayZ having an extension interface by default, like arma has. Because afaik the scripting language does not allow for #include<iostream> etc, as it might only be parsed using an own compiler system
Its gonna be there own scripting language, its not gonna be compiling pure c code etc
If they can confirm that there will be something in that regard, that would help us as creators to plan on working on them. And on release day we just adjust the interfaces and have it running. That helps the people to use something like databse interaction on day 0
Yes might be 6 months away, but there is alot we could prepare for it
The interface to extensions is easy part.
i.e possible multithread support for the entry point / maybe custom datatype support etc
You want to have stuff ready on DayZ release?
Really should take you only a day to tweak an existing extension, maybe a decent weekend to optimize it imo.
Assuming BI doesn't do something like intercept support for custom commands etc
@elfin oxide Read my PM. Create a Discord server for everyone and push my interest to look into it sooner
Hey! I'm finishing my str(SQF_Objects) -> PyObject parser and would like some feedback for my unit tests.
Are there any edge cases that you can think of that I haven't added to my test harness?
Syntax of the helper functions:
sqf_to_python(SQF_str_result, resulting_python_object_stringified)
sqf_raises(SQF_str_result, position_at_which_the exception_is_raised)
Note: any -> None has been omitted on purpose.
Feel free to reuse those unit tests in your code if you find them useful.
https://github.com/overfl0/Pythia/blob/sqf/UnitTests/SQF_Reading.cpp#L84
Note 2: SQF objects that cannot be converted to python objects (like player) have been omitted and will be treated as syntax errors, of course.
You lack mixed variations, also strings passed can literally contain anything, that is also not covered
Your wrong numbers contain impossible numbers for sqf
You lack -0
Another concern of yours is not covered clean in your resulting code
Might be optimized away by the compiler though, but still
Lots of places you can archive a few ms via optimizing
are 1.5*e-10 also valid in sqf land? if so, they are missing
@vague shard afaik yes, since arma displays/saves small numbers as 1.2424e-10
e-10 is a valid float. It will be supported along with any tiny or huge value. BUT, because of the imprecise nature of ieee floats you cannot reliably compare floats against constants.
some_float rarely if ever = 1.124678 exactly, some_var is inevitably a tiny bit larger or a tiny bit smaller.
when code 'shows' a float value, eg a printf statement, the C family of compilers default to 6 digits of precision (rounded down). The actual value is rarely, exactly, what is displayed.
using poetic license (with 3 digit precision). the value
1.236 is shown as 1.23
perversely, compilers will convert the constant "1..236" as 1.24 (rounded up!!!!)
welcome to hell.
If you put enough digits of a number that IEEE can represent it should work.
the longer the digit length, the less exactiness in precision. there simply isn't the bits available to represent all possible numbers. Again, using poetic license, an Ieee float can have the value
123.45671 or
123.45674
but there's no representation between those values (be kind, it';s more like 123.45677899991 etc)
when you add float values together such as 0.7 + 0.3 you do NOT get the value 1.0. the result stored is more like 0.99999999. (again, i'm using simple digits solely to exagerate and illustrate)
the above btw is a typical issue with clutter frequency ie the array[]={0.1,0,3.,0.2 etc}; All things are fine providing the sum is not greater than 1.0
the problem is, some of these constants are repesented as a 'tiny bit more than 0,2 ( let's say 0.20000000001)
the result is a tiny bit more than 1.0
you can also see the effect of this on v large maps. Roads eg cannot be placed exactly adjacent to each other the further east you go. it begins with a loss (or a gain) of 10cm to gap between the ends. I mention roads because they're visually obvious, but the same story for buildings.
What I mean is that IEEE guarantees that once you reach a certain number of digits, printf'ing and then scanf'ing that string must result in the same floating point bit pattern.
yes.
perhaps interstingly, perhaps not, my dll does exactly that when printfing bis floats. In order to get the exact humanly readable value that will result in exactly that float it increases the initial text result by tiny amouints until it hits the jackpot
there's some ugliness in the text output as a result, but it ensures, if rebinarised, it produces an identical copy to the original.
Thanks guys for taking the time to look at the code and to respond. I'll take a look at your discussion after work.
I am not sure anymore, but afair sqf could also read floats like .055
Never tried that. And never seen that
which means nothing to be honest ๐
yup
like most languages, omiting the first character is allowed
though ... could also have been configs or sqf
however, all is not relevant here
as str wont use those representations
yeah, only relevant for a full sqf-parser
So basically, I need to add a test for -0 (which will pass the tests but that's a valid test case) and also add support for the exponential notation.
I won't care about the precision because... I have to use built-in C-api Python functions to convert the floats to PyObjects anyway so it's a matter of finding the right begin and end to pass to the function (and pray that representation of the parsed value is okay).
BIS Scalar Type is just that. A C++ float. So parsing shouldnt be any rocket science
Wasn't this a double? (not that it changes anything for me)
pretty sure it is float. according to the leaked source code
Your wrong numbers contain impossible numbers for sqf
That's the point of wrong numbers - if they were possible to be represented, they wouldn't be wrong ๐
You lack mixed variations, also strings passed can literally contain anything, that is also not covered
Not sure if I understand what you mean. I'm testing against [[0.25, 'as'], [TRUE, FALSE], [150, -2]] which looks varied enough to me.
If you mean that I should vary my values to try parsing "aa", "ab", ac", etc... then I'm not going to do that. I don't see the point.
Another concern of yours is not covered clean in your resulting code
Might be optimized away by the compiler though, but still
I'm sorry, I tried really hard to guess what you meant but I don't understand. Are you talking about memory leaks? If so, I don't care about them in the tests (which is reflected in one comment). They won't leak when handled right, in production code.
Lots of places you can archive a few ms via optimizing
As always ๐
talking about actual code
moved upwards in the project a little
the impossible numbers are not interesting for str representation
stuff like 0x123 will not happen in str
Yeah. i just thought that it doesn't hurt putting it there just in case. Same thing as with ]
another question is how you handle strings like "abc""def" which look like this fully parsed abc"def
in regards of mixed stuff, you need more depth, empty arrays, empty fields
etc.
also: what about any
best idea is to just randomly generate depth arrays yourself
and then test against them
((during testing))
alternative: increasingly difficult
with no randomness but ever increasing depth and mix
memory leaks themself also could be a concern, but i did not tested for that stuff
Note: any -> None has been omitted on purpose.
I thought that no one would actually want to pass a None to the functions. Or at least that would be really rarely used, and in 99% of the cases, that would be a typo in SQF instead.
Besides, there was this SQF evaluating command in SQF that was introduced in the last year or so that did not handle nil as well so I thought that this may be a good decision.
in regards of mixed stuff, you need more depth, empty arrays, empty fields
I'm already testing for empty arrays, nested arrays, etc...
Unless you can think of a corner case that I haven't covered, I don't really see why I would need to check hundreds of different arrays (maybe I'm wrong, who knows?)
Maverick's mikero updater has been revised to also list the rar packages, not just, the installer.exe's
@karmic niche a variable that is not set or a typo could be enough
added mlod
pboProject updated to 'accept' p3d files in same pbo as the wrp. It is foolish to have them there as you may or may not have missing icons as a result. But.....
also fixed a potential crash when crunching wrps.
modified dep3d with a few more options (see readme), nothing special.
also be aware folks that bis broke vegetation\bushes in their latest update. pboProject will of course, not accept faulty objects. You can use
deP3d +Fx to be able to crunch the wrp BUT, the vegetation will remain broken in-game.
what kinda of "broken" did they introduce?
trailling spaces kju
i see. this isnt really new is it? (across A3/BI assets in general)
it happens when they copy pasta the origvinal mistake into the next lod and next p3d
i am unaware of any others that are faulty prior to this update
How do you know they aren't putting spaces in to intentionally disable the property. Might be the official workflow. ๐
on a related note: did you consider yet to verify lods for correct named properties?
like to rule out typos or properties in lods they are not supposed to be?
i've avoided that kju as a moving goalpost
fair point. however A3 is said to be/become EOL
as such the goalpost(s) should become eternal (soon)
i dearly hope so, they can move on to enfusion and stop breaking the arma engine.
Making RV openSource ๐
yes., Q, to above, as soon as they p*ss off, i will indeed be 'stricter' with lod properties.
who would win, a bunch of mod makers or one spacey boi in a p3d lod
there we go ๐
๐
Just teasing: https://dedmen.de/sharex/firefox_2017-12-10_21-22-48.png
Intercept-network. Redirects all publicVariable traffic through a seperate server and takes the load off the Arma 3 networking stuff.
Also possible to monitor which variable is sent from who to who when and how big it is. It also keeps it's own JIPqueue so you can always look which variables are currently in JIP queue and how big they are.
Could probably come in handy for testing the PVAR load of some mods.
Here are some things ACE/CBA push into JIP.
send 2122 cba_versioning_versions_serv
send 2124 cba_versioning_versions_server
send 109 ace_common_ServerVersion
send 8871 ace_common_ServerAddons
send 98 ace_spectator_channel
send 102 ace_modules_serverModulesRead
send 6650 ace_overheating_pseudoRandomList
send 119 ace_pylons_currentAircraftNamespace
send 120 ace_weather_currentTemperature
send 117 ace_weather_currentHumidity
Huge size of ace_common_ServerAddons seems to be a bug. But that get's removed in the next ace versions.
Your redirecting PV engine wise or switched it out with another command?
Redirected publicVariable and publicVariableClient commands
With ACE+CBA and 176 units (1 player + AIs) in the mission the JIPqueue is 800KB (gzip compressed). Over 80% of that is ace medical.
Retrieving the JIPqueue takes only 2 frames from first to last message.
Instead of potentially minutes with the Arma netcode. If I get this to work reliably it will be very neat if you run many mods that use PVARs.
Is PVAR still a thing?
publicVariable and setVariable with the public flag... Yes.
I mean, i switched instantly away when setVar with jip was available
Real issue is of course BattlEye randomly blocking the extensions.
Makes it kinda hard to implement on public servers shrugs
But this also means, that interc must be run on CLientside, where BE kicks in again -.-
True :/
Yep, Deco
But I only know milsim world anyway. Which is 98% passworded battleye-less servers
and 98% of all Servers are either Public or non-milsim (just shouting random numbers ๐ guess in reality it's about 85-90%)
Very nice work @glossy inlet !
https://dedmen.de/sharex/firefox_2017-12-11_00-59-51.png Here is a graph that includes PVAR's on objects. With a JIP at the end
And besides redirecting PVAR stuff intercept-network also allows sync/async remoteExec with getting a reply back.
So you can send a request to the server and directly get the answer back. Instead of doing tricks with doing another remoteExec from the server back to the client.
@glossy inlet "getting a reply back"
OH
MY
GOD
PLEASE
SOMEONE MERGE THIS INTO THE GAME
I cant stress enough how annoyed I am by the fact that the game does EVERYTHING in the background from networking, serialization and whatnot but its not able to have a simple logic behind sending something and sending the reply back
I guess your intention is Pure ServerSided coding/scripts?
_answer = <clientID> sendRequest "request stuff";
waitUntil { requestAnswerReady _answer };
diag_log _answer;
"life" ๐
I need this in my virtual life
"life"
Or
_answer = <clientID> sendRequest "request stuff";
_answer setEventHandler { diag_log _this; };
But that doesn't exist yet. It's only a C++ interface for now.
You don't know how much I would freak out if this was to become a thing in the default featureset
only? good grief, no sqf ? has to be xmas.
session.sendRequest(std::make_shared<zmsg>("testMessage"), 5,[](std::shared_ptr<zmsg> answer) -> void
{
std::cout << "Answer!!! \n";
answer->dump();
});
this is my test code. Works somewhat like boost asio. send "testMessage" to clientID 5 and the client get's a eventhandler called and the return get's forwarded back
Right now I always have to rely on a selftscripted logic to return things over network
I use it in TFAR. I just create a function with unique name and then the server remoteExec's that function back to the client with the answer
Like. The request/reply method. Not my new stuff
There are only 2 things in my life right now that can make me happy:
- Returning field values over network on call
- Reaching Diamond in Rainbow Six Siege
If only Intercept was BE whitelisted
I wanted to send a BE request for the last release.. But then it turned out I borked the release ๐
real idiot question I guess. Over the years, why hasn't anyone written a C2sqf compiler (or sqf2C) or that matter) ?
is it because of chase-your-tail, where each time they invent a new operator your code would break?
Wasn't there a prob with the latency of callExtension?
There are OOP things that compile code that looks C like into SQF
But it's just not really worth it
In the end it just produces unreadable unoptimal sqf code which you could have written yourself better and faster
would have been 'better' and matured if you could be assured it wouldn't break on the next sqf update where they invent another operator which uses unkown (beforehand) opeanads (if any) or what types they are.
took a few days to write a sqf parser, got most of the 400+ operators out of the biki. It fell over as soon as I fed it some dayZ.sqf
It veery rarely happens that previously working stuff get's broken. Only new stuff being added
And yeah. If you wanna use new stuff you gotta update your compiler
yes. it's the added that will break a parser.
as it stands now, there's never been a usable sqf editor that's survived more than a month of use.
Script errors would be a pain to figure out where it came from.
Also trying to figure out BE log snippets came from aswell
true that
You could make a parser that recognizes new commands automatically though
really???? how?????
Not really worth the hassle besides as doing it as a challenge imo
and how would that work in a standalone exe ? <grin>
hmm... standalone exe?
uhhhh ๐
export the output and host it in a text file somewhere ๐
Now you got my full attention
I doubt they will be adding much new sqf commands to arma3
I think the Arma.Studio parser fetches a file of new commands online that can be live updated
well the idea has to be, like any sane development rad. you have tools that help you. chief among them would have to me something along the lines of sbsMac's squint. it didn't survive but was excellent.
right now it's the same bullshit over and over, write code, start engine, test it, fix it, start, fit, start......
(for some configs)
We have the SQF Linter. And you can live edit sqf scripts without restarting the game
Code can be done easily in the Editor/Console/reload with execVM stuff
k
I even have live config editing without restarting the game now ^^
Thats how I personally write my missions
-> Multiplayer -> Host -> Select Mission -> Test -> ESC 2x -> Select mission again and test again
But since the last update that takes like 6 seconds longer each time you reload
before that it was lightning fast
Yep, or just reload the function (bla_fnc_bla = execVM "blablub")
Yea
As long as you don't call compileFinal your stuff, it's pretty easy to code and test inside Arma
Or you just load my script profiler which disables the final flag of compileFinal ๐
ยฏ_(ใ)_/ยฏ
Isnt there a recompile thingy for missions?
I guess when you add cfgFunctions to the mission description.ext it recompiles it every start
I think there is a bis func that recompiles. But still if you compileFinal'ed previouly no script can change it
With mission restart you can ofc.
CfgFunctions is compileFinal afaik. And I also think you can't disable that.
So that if you call the BIS_FNC_RECOMPILE it also recompiles the mission functions
Hm okay I see
Thats the mayor "downside" of having everything defined in the mission, instead of addon ยฏ_(ใ)_/ยฏ
If you make a mod-less mission you can't have mods ๐
btw... what happens when you have the CfgFunction in an Addon and the mission wants to create the same Function, just with different entrys?
๐ค
I guess the AddonVersion persists, or?
If the name already exists. The one that's compiled first will win.
Oh boy^^
I bet it even throws an error because the compileFInal thingy being attempted again
Or does it actually check whether the function already exists? ๐
Doubt it
campaignConfigFile ยฏ_(ใ)_/ยฏ
dafork is that
the fuck
SP one, or?
Never heard/used it
@Dedmen (โฉ๏ฝ-ยด)โโโ๏พ.*๏ฝฅ๏ฝก๏พ#0689 interested here too in network traffic analysis
one related aspect I was always curious how much traffic the game itself does compared to the usual sqf cmd generated, and if the game one has higher prio in some way
I have no Idea what the Arma netcode does. I have my own serialization and then compress with with gzip. So the size is comparable but not the same. I can do a comparison between my and Arma's serialization later to see how different they are.
And my stuff always has it's own network connection and there isn't anything else on that besides heartbeats. so no priorization of different parts.
All I can really do is an overview of what/when/how much PVAR traffic get's created through your scripts calling of publicVariable or setVariable
The arma network traffic was encrypted after some people made network based injectors
I can easilly grab it before encryption and analyze it. But that's a lot of work with no real benefit besides being able to measure.
intercept-network add's new features/possibilities and takes load off of the arma netcode which could help performance a little.
@glossy inlet Why are you still typing here?
@wind elm Where else?
VisualStudio, wรถrk wรถrk
profileNamespace.
My Json serialization uncompressed: 1103957B 1.103MB
Arma's binarization: 1.415.390B 1.415MB
So even my uncompressed serialization is more size efficient than Arma's binarization?? wtf
After compression (gzip best compression) my serialization is 51297B 51KB.
Arma's binarized profileNamespace packed using 7z LZMA Ultra is 200KB.
So my serialization is more size efficient and compresses down way more than Arma's. WTF were the BI devs doing??
Their serialization is probably faster though as I go to Json and they go to binary
@glossy inlet did you try protobuf?
No. And it wouldn't really help in my case
What I get from engine is config format.
classes with named values and arrays.
Fits very nicely into json
I was thinking more in terms of serialization/deserialization
I don't do that myself. I call the already existent engine function
ah
That way I have to know absolutely nothing about the memory layout of the data I'm serializing
But I then have to endure to the bullshit in there...
For example instead of storing Arrays as Arrays. They are stored as a class with subclasses.
First element is classname Item0 next is Item1... So a string for each element which is a huge waste of memory.. Which is why that also compresses down so nicely
https://dedmen.de/sharex/notepad%2B%2B_2017-12-11_20-06-55.png
Binarized profilenamespace as example..
Here you are seeing array elements. Where each element has it's own 8 (7+ '\0') byte long name.
If they would actually store it as array instead.... Much to gain.
well, you could use formats such as FlexBuffers which is schemaless like JSON but offers many of the gains from FlatBuffers and similar, https://google.github.io/flatbuffers/flexbuffers.html
but meh, json is most often fine
especially when paired with gzip
I am already better than Arma. And network bandwidth isn't that limited that it would really matter
: I am already better than Arma this isn't news
or BSON ofc
flexbuffers looks interesting though.
But unless it's a format that has something like a stringtable I will still need compression or extra processing.
Arma gives me a value with a string as name when serializing.
And it retrieves the value by that string name. I don't have to store that string name as long as I know which value it wants.
I THINK FlexBuffers will optimize string usage
https://dedmen.de/sharex/amplxe-gui_2017-12-11_20-15-05.png
That's my perf for serializing one variable. Dunno what it actually contains or how big it is.
Serialization from engine->json directly.
Then building the json network packet which indeed could use protobuf or similear but json was easy for the beginning.
Then compression and sending the packet off to the second thread which actually does the networking.
All but serialization can be pushed into a second thread.
So I could return control back to the engine after just 10us.
That's one call of setVariable with public flag in my screenshot
since you will own both producer and consumer it would be easy to change down the lane too so
I never actually tested how long Arma engine's setVariable takes for this. I'll do that
I switched from lightshot to sharex because I can also easilly share files using sharex.. but I never do
the only thing i wish it did easier, was set up a keybind for quick screen recording, OR file share.... right now when i want to do screen recording i have to change file destination to gfycat.... also better fps ๐
Strings are simply a vector of bytes, and are always null-terminated. Vectors are stored as contiguous aligned scalar elements prefixed by a 32bit element count (not including any null termination). Neither is stored inline in their parent, but are referred to by offset.
Yep Flexbuffers has stringtable like thingy. But I don't think it will optimize stuff like Item1 Item2 Item3 Item4 Item5 as efficiently as compression
ShareX can video?
Not much fps but still much wow
Okey I checked Arma's networking. It uses more efficient serialization for
Scalar,bool,String,Object and uses General serialization for the rest.
I use general for every type. I ofcause could go as crazy as I want and use custom serialization for everything.. but no.
It also uses some compression for integers and floats. only on a value level and not on the whole packet level.
Strings are not compressed at all. Unless they are animation names or some often appearing hardcoded classnames
like HandGrenade and NVGoggles. in which case they get stored as a 16bit index of that value in the hardcoded array.
That's kinda niceish I guess
But I'd say... Just getting the buffer with all the data that is to be sent and pushing that through gzip might be more beneficial.
Especially since everything is compressed and not just some hardcoded thingies..
And the hardcoded stuff will sure as heck not include classnames from mods so the netcode is highly optimized for vanilla Arma.. But the more mod stuff you use the worse.
hey guys can i get some help?
@tired jungle http://sol.gfxile.net/dontask.html
i need help setting up terrain builder just installed arma 3 tools set my p drive up and extracted my data to my p drive, for some reason when i click on terrain builder it just closes arma 3 tools same with object builder?
..
have you tried launching it manually instead of via the arma 3 tools UI thing
like shortcut, steam libary, or C: Drive directory
For example instead of storing Arrays as Arrays. They are stored as a class with subclasses.
that's because they're using mission.sqm export code, and just crossed their fingerz.
Do not reinvent the wheel, reuse code
Actually well refined system if it can be applied to everything
@ChernoBandit#5404 #arma3_terrain is the better place to ask
: Do not reinvent the wheel, reuse code
i agree
Does anyone have a arma config parser for python? ๐
You're right @dusky dune .
On another note: Does anyone have a arma config parser for python? ๐
btw. I just managed to slightly modify https://github.com/Fusselwurm/arma-class-parser (javascript) and run it with js2py but as it's emulated js in python it's probably way too slow for regular usage.
A few months ago, I did the same with PyExecJS, which coupled with nodeenv and "embedded" nodejs seemed to work fine, but required two patches for both nodeenv and pyexecjs to work correctly on Windows AFAIR. The speed way okay, for something that called a full nodejs server on parsing ๐
...but the need for those patches (that I've not submitted anywhere because they were just POC patches) ruled out the use of this solution in something that I would like to distribute to other people.
interested in a C# parser?
Not really, tbh (and I'm 100% sure it's the same for Adanteh)
But thanks for the offer anyway ๐
ok ๐ฉ
@smoky halo Yes
oh really?
is there an @-operator in configs?
never seen. Also don't know what it would do
probably like in C#
taking the string given as is and dont do escaping
the parsing code seems to check for @ but I am currently not sure what exactly it does
will investigate
well, in rapified format it would make the difference between the value types Generic or Expression which are both handled as string values in custom arma tools afaik
but also in BIS code there doesnt really seem to be a difference between those two types so it probably is just useless legacy stuff
if you hate to do quotes you probably could do:
someEntry=@465 to make sure that it is saved as string and not as integer
someEntry = @__EVAL(xxxx) would also just save that as string and no attempt at evaluating the xxx is made
if I understand the code correctly
burp. (reworded)
if have never ever seen an @operator in a paramfile, except as an alterntaive to $STR for stringtables.
it's quite possible that bis do use it in their original source, but just like (most of) their macros whe would never see it. We would onlty every see a binarised
thingy="123";
true, but if you want a parser that behaves like the BIS one, you probably have to be aware of that
oh sure, no denying.
i do have the vaguest of memories about this in ofpec forums from a decade ago.
also, exec/eval can never be binarised. there is no example of an '@' used there either. There are examples of
_EVAL( str 123);
someEntry = @__EVAL(xxxx)
is what i was referring to. legitimate in my opinion, but not seen
that was an example. In this case __EVAL wouldnt be evaluated. Instead someEntry would be "__EVAL(xxxx)"
haaaaa bloody discord can drive you mad n'est pas?
oui
it's a nice catch you found t_d. i'll road test it using cfgConvert or whatever the hell bis call their two rapifiers. (would be nice to know what the hell the differences are between them)
Hey,
ย
What i want: I want to generate some file from arma to create hpp file from an editor dialog. I have already test make_file.dll from Killzo...
Want us to help or laugh about it?
wonder how long till he realises he can just open the file in an editor & replace all the \n with newlines with search&replace
@glossy inlet his code & sqf is in the repo https://github.com/minipopov/make_file
Think he is just complaining because its not doing newlines in the text file correctly for him
He is complaining that \n doesn't work correctly and I already told him why.
Now he complains that endl doesn't work correctly but there is no code anywhere that uses endl
That's what I meant
I think he just replace the \n in sqf with endl
as in _foo = ("stuff" + endl + "stuff");
that should work then
t_d has found an interesting operator for rapify text. The '@', if present as the first char of a series of chars, it behaves similarly to an '#'. eg a quote. but not quite.
it was only ever used in the xbox elite and prodices an indirect operator. In xbox, it behaves as follows
thingy=123;
........
var=#thingy;
var will contain the contents of thingy, eg, var=123;
in Arma3 the following occurs:
displayName=@thingy;
"thingy" is displayed
displayName=@123;
"any" is displayed.
I suspect there's much more to this. In 02Script (not sqf) the '@n' operator selects the contents of the nth array
@dawn palm Did you test out @ with enum?
enums set internal variables maybe @ can get the value out of them?
And did you try reading them ingame? Looks like it can be read as string (where it is evaluated) or number (where it is again evaluated and expects a number)
That info might get lost in binarization though. So maybe need to load unbinarized config in pbo
no i haven't done that dedmen, and it's a damn good thought. (enum)
re binarisation, there is a unique 'type' used for @values.
@glossy inlet up for a "little" challenge - did you look into physx yet?
no I didn't and not sure if I want ๐
dont want to jump in the deepest pit of A3? ๐ฎ
the basic idea was some additional logging or visualization with almost everyone struggling to configure physx for vehicles and planes ๐
EPEDraw is most useful I think
if geometries are available then this one should be available somehow too
it produces something like this
so i.e. you can see when physx wheels are not matching visuals (like in above case)
Is EPEDraw one of the diag drawModes?
no, but same as geometry modes, it's just the toggle being disabled (btw: I noticed that mismatching suspension anims just now so fix is incoming :D)
DisplayPhysX3Debug ๐ฎ Tell me that is included in the Diag binary.
https://github.com/dedmen/interceptTest/blob/master/interceptTest/diagStuff.cpp#L207 I marked that as "apparently not working" on diag binary. But I also didn't try to look at a physx vehicle
BI is so cruel to us ๐
I'm trying to check if it is diag binary.. But... My dev HDD is dying and constantly freezing IO requests till they time out... I can't even look at stuff
Looks good so far.. But what I can see doesn't have to mean anything and I have to wait like 10 minutes for a double click thingy to get loaded
EPEDiagDrawPhysx3 exists. And that handles the EPEDraw stuff... But if the actual draw code is implemented I can't check now... Would take hours with my HDD like this.
And if it isn't availlable in diag binary I'm not sure I want to hack that... That's a bit too much work for now
And I'm more leaning towards "not implemented/enabled"
moveObject.exe updated
15% faster
it will now automatically remove any drive:\ reference from bis file assets sucn as p3d wrp rvmat and pbos. All files are born equal (binarised or otherwise)
@glossy inlet need a new HDD?
@rancid relic EPEDraw would be invaluable to me. I have some weird issues with practically all my tanks, where the wheels are rotating very erratically at slow speeds. Now with the new track texture animation beeing dependant on physx wheel speed it looks extremely bad. Also some tanks seem like they have dragging wheels. Its driving me crazy for many months now and i just cant find whats wrong. I've given up on them for now...
my understanding (which is v limited coz I don't actually make models) is 'bouncy' etc is caused by the dampers.
generally the damper bone is attached wrongly in the skeleton.
was that in response to me? My issue is not dampers or bounciness.
it has to do with the wheel memorypoint setup - i have no other explanation
@native kiln yes
What HDD do you have at the moment
Seagate baracuda 2TB which is dying and a generic Hitachi 500GB That I thought would die before the other one...
Already talked about it in #offtopic_hardware yesterday
Drive just fixed itself. I shrunk the partition to give it more spare room to replace bad sectors. Dunno if it will use that room but it seems to be alot happier now.
Not really perfectly happy tho ๐
I think it should be in code since it's in a same file with EPEVehicle & Suspension with ifdef for public diag exe
thing is, after turning on epedraw you need to additionally toggle what do you want to draw
in this it would be that thing - http://docs.nvidia.com/gameworks/content/gameworkslibrary/physx/apireference/files/structPxVisualizationParameter.html#dce8e8a77c144356b0968d2b9f79eb10515f4c3c72ee88d7507b52d6ccd14eab (use same name in vr code)
anyway, I really hope I will be able to convince one day someone decisive to release all internal diags to public since those workaround only prove it doesn't make sense to hide it
And the workarounds waste my time :u
It's probably just "forgot to enable that for public diag binary" rather than "let's hide that from the modders before they use it maliciously in the multiplayer disabled diag binary" .
Atleast I hope that's how it is...
@rancid relic I am confused so EPEDraw is not available to use in diag tools or it should be just no one tested if it is? I would love something like it that draws physx wheels and stuff like that
Dunno, didn't have time to test @tiny path
diag_enable thingy doesn't allow it because it says it doesn't exist. Which is bullshit. Ignoring the "does exist" check and manually setting the flag enabled some modes that were otherwise unaccessible but working just fine but lots of stuff is still not enabled in the binary.
Like you can enable some modes that draw diag stuff but the actual code that does the drawing is not included in the binary so enabling that flag doesn't do anything
So besides just the dialogs there is no visual ways to see how the vehicles are acting with physx?
I'm not 100% on whether EPEDraw is implemented in the backend or not. If it is it can be enabled by hacking around a bit. If it isn't it can be enabled by hacking around alot more.
If you push me enough I'll make a mod that enables that. But otherwise in vanilla diag binary.. Probably not.
EPEVehicle and suspension and stuff might also work.. or not. Didn't check
It would be amazing if we had some nice diag tools available to visually see how the vehicles work. I would hope BI could enable them so modders can make better mods out of what tools they have available cough ๐
But Ill keep dreaming
I really don't understand why BI is intentionally blocking some diag tools.. Even though they work completly fine if you enable them manually instead of using the SQF commands...
If they are broken I'd understand, but they aren't.
If they cannot ship them because of whatever licensing reason I'd understand, but some are shipped in the binary and do work just fine but are still disabled via the official API.
in A2 days it was concern about abuse. yet with A3's diag.exe this is no longer valid. i guess they just dont care or didnt bother to consider it
its no like BI has some modding support strategy
ppl started to mod the game on their own and still largely do the same
only from time to time BI provides some crumbs (if being forced to by different means)
that said A3 has become somewhat better, but its still a low prio thing at best
Well its also the fact of - most of the numbers out there around physx (for example) arenโt documented entirely that well, so if you have an error you canโt see whats going wrong and only guess with numbers going up or down
Epevehicles is definitely working
["Force","Animation","CursorTargetObject","Mines","HitPoints","AnimSrcUnit","AnimSrcTarget","Suspension","EPEForce","EPEVehicle","ParticleNames","Particles","SurfaceUnder","AISkill","AIDriving","AIAiming","AIBrain","AIDynamicError","AISuppression","DynSimGrid","DynSimEntities","DynSimGroups"] These are officially available.
EPEVehicle: https://dedmen.de/sharex/Discord_2017-12-22_18-02-18.png
Suspension: https://dedmen.de/sharex/arma3_x64_2017-12-22_18-02-50.png
And EPEDraw does nothing if I enable it manually in memory.
As I said before, you also need switch on what you want to draw
List of available modes is on Nvidia page
But there isn't a script command to set that right? Atleast I can't find any
no, there is hardcoded ui which translates idc to correct flag
https://forums.bistudio.com/forums/topic/211823-arma-dev-tooling-for-visual-studio-code/
Arma 3: Configure: to setup the project Arma 3: Pack: to pack pbos defined in your configuration file Arma 3: Binarize: binarize cpp files from explorer context menu Arma 3: UnBinarize: Unbinarize bin files from explorer context menu Arma 3: Run: to start the game from your local computer Arma 3: Run (With Logging): to start the game and display the logfile Arma 3: Generate Key: generate a private key to sign the client pbo's Arma 3: Transfer Files: transfer server pbos to destination server using SFTP
Arma Dev tooling for Visual Studio Code (vscode)
Building Arma 3 mod made easier using the Arma Dev tooling extension This Visual Studio Code extensio...
Call extension '<extensionname>' could not be loaded: Insufficient system resources to complete the service requested Does anyone know what this is?
I see this for the first time, and I am not quite sure what resources could be insufficient. User says he is using 64 bit arma with 16 gigs of ram installed
Looks like you got insufficient system resources *nods*
(What Google tells me:
https://social.technet.microsoft.com/Forums/windowsserver/en-US/1961f079-2092-4ccb-9e70-8d8fb22f8393/insufficient-system-resources-exist-to-complete-the-requested-service-not-related-to-kernell?forum=winserverGP
Exactly the same msg in Point 6)
@elfin oxide ya oll fluffinat0r
ayyy ok this does not seems to be an arma issue then
thx for link lets see if it helps ๐
@elfin oxide Battleye block
Btw someone is currently working on integrating my script debugger into VS Code
Battleye block lul
Has anyone created a PHP/JSON parser for SQF arrays?
Not an in-game one, SQF Array => PHP/JSON
I don't follow. Do you want to parse JSON or SQF array? And do you want to parse it from PHP or JS?
Looks like his language is PHP and he either wants to parse SQF into a PHP object directly or convert SQF to JSON that he can parse using already existing PHP libraries.
Okay, I see. An stringified SQF array is almost valid JSON. With the exception of some possible special output values like <NULL-Object> and nil, and changing the internal string escaping "" to \", it should be possible to do with a few str_replace's.
Question for VS Code users, there was released "Dev tools" package: https://marketplace.visualstudio.com/items?itemName=ole1986.arma-dev
I'am having errors: command 'armadev.previewControl' not found when i use option Dialog preview or just nothing happens after i press that.
All directories are set.
Google said he don't know about such problems...
VS Code version 1.19.1
Anyone have the same ?
https://github.com/ole1986/vscode-arma-dev There is his github. There is probably an issue in his code. Just tell him
Yes thanks man, done
@keen owl is that json parser fully in SQF? ๐ฎ
@nocturne basin yes.
if you use it, you might want to change the call to MF_Json_Parse_Top in MF_Json_Parse to MF_Json_Parse_Value. Back when I wrote it the JSON spec only allowed an array or object as the top-level value. Nowadays it can be any value like a number or a string.
hopefuly final version of moveobject for some time.
all file references automatically lowercased
all erroneous drive:\ specifiers automatically removed
all erroneous \hard paths removed automatically
pbos can now be altered in situ
blah\blah*.ext introduced so that only a specific file.ext (such as paa) is altered..
Not sure if this is the right place to ask, but Im using the vscode sqf linter and its throwing a error on my forEach loops is this a bug with the linter or could I be structuring my code wrong?
What is "a error" ?
Show me the part of that code
You said it's an error on your forEach. it isn't even close to the forEach
Maybe it can't parse the macros correctly
It looks like it can't parse the macros correctly
Hmm I will try converting the macros to actual
hmm
Or was that only related to arrays
Lets me get rid of the macro and try
How does your M_CONFIG macro definition look like?
Its default altis life
I dont like them
#define M_CONFIG(TYPE,CFG,CLASS,ENTRY) TYPE(missionConfigFile >> CFG >> CLASS >> ENTRY)
That's correct atleast.
thought how they handled subclasses in there. But apparently you need to use different macros then
Should still report to the guy making the vscode linter plugin
Yeah will do, recon I should just post it on the github or do you know if hes on this discord?
Just post on it's github
afaik, sqf linter at the moment will throw an error when using macros
if the macro require params and each param are divided by a comma
it will say that you possibly missed a semicolon
@glossy inlet is it possible to read named properties from p3d by the engine technically? if so, could this be exposed via a sqf cmd?
Uhhhh
Don't remember right now. I'd hazard to say no. But I don't know. Remind me when my dev HDD is fixed and I can actually dev stuff again
At most if you pass a object (might be simple object) as parameter to that command. I won't be able to find it by path to p3d
@vague shard
Like that?
https://community.bistudio.com/wiki/selectionNames
alright. from what i understand the engine loads named properties on game start or when preloading p3d
(Only works in ResLods)
yeah essentially
No LOD Selection possible, request that a while ago.
https://feedback.bistudio.com/T123926
So you want to get the list of named selections in a specific LOD? Or....
No he wants the named properties from a p3d
Dunno what that is
Something todo with slope contact is set (can't remember the channel it was mentioned on) 1 sec
slopelandcontact
dep3d can read it from the model, but no way to do it with scripting currently
would be nice if it was possible, because it's important for exporting rotation properly for terrains, currently 'we' use a list generated from dep3d
Is it just a string setting with a string value?
https://puu.sh/ySHBQ/59b2e42294.png those settings bottom left of screenshot etc, is different per lod
different per LOD ough.. I guess I'll have to get pickaxe and shovel out then.
That screenshot is before its binarized etc. kju is after specfic setting, but a generic command could be useful
certain named properties will be binarized into seperately stored fields
like map, class etc.
wait, weren't they called NamedProperties?
If I add it it would be extremly hacky. And not even sure if I can add it. Soo.. Is it worth it?
But Kju was looking for namedSelections
I need more cofeve
well, he wrote named properties
well my point was more to bother BI/reyhard about it - was just curious how difficult it may be
from what i understand as the engine needs to read it anyway, it should be fairly simple for BI
The engine might parse them when it loads them but not store them afterwards.
If they just store a map of string->string then I can probably easilly access it. If they fill member variables with the data they parsed from the properties that's quite a lot harder to access it
well it has to cache it somewhere i would assume
Not really. It needs the values it needs. which might be stored nameless in some boolean deep in the model's class
Like the surfaceTexture stuff I did.
https://github.com/dedmen/Intercept_CBA/blob/master/src/SQFExtension/Utility.cpp#L378-L382
Magic shit
does that allow you to get the path of surface texture? :3
yes
very nice!
For the ACE trench PR
Now if only i knew CPP or anything like that.... i'm still learning python and overfl0 is slacking ๐
time to start
meh, maybe once i finish my python learning
But you'll probably neither learn nor need that level of stuff
Today was the first arma modding day that i wrote more python than SQF
ArmA keeps both, the raw string,string pairs per LOD and some stuff is parsed and written to member fields of either LOD or ODOL
and overfl0 is slacking ;)
Good thing that overfl0 is not reading this channel, otherwise he might decide to take back your christmas presents :P
arma modding day that i wrote more python than SQF
You can do Arma modding in Python? >_>
only on tuesdays
Alright folks. Who has experience with writing a parser for SQF? Or who knows a very fast SQF-parser that is OpenSource?
@nocturne basin
I think a bottom-up parser would be the best way to go...
He wrote like.. atleast 2
What parsing strategy do they use? bottom-up or top-down?
one depends on the tool
the other is bot up due to how the stack has to be built
That's a combined lexer+parser isn't it?
how you do it always depends on what you want to archive
AST does not cares if you start at the end or start
stacks without AST do
@nocturne basin
else if (str[0] == '[')
{
arrcount++;
}
else if (str[0] == '{')
{
codecount++;
}
My OCD is striking ahahahah
the latter, yes
why?
got another one that is more straigth forward too for configs
but SQF was rather special due to the need of the precedence being correct
@covert sequoia https://github.com/X39/sqf-vm/blob/config-parser/SQF-VM/cfg_parse.c maybe you like this more
Yeah that's the problem xD
it is C at last
if i would be using java, i would use that garbage intendation too
i hate 2nd style
I'm in the "make your own style however you like it" club.
Other people are in the "I got taught like that so that's what I do even if it's ugly" club
Exactly what I think
started out with java
used the if () { } style first
but decided that what i am doing now is better for my eyes
anyways
those are the two parsers i wrote till date
though ... the sqf-vm one is kinda mixed
Any wise tips for writing one? Like some mistakes you made when designing it?
it usualy is more simple to do so when you follow a pattern
write down an BNF first and then start writing down the parser
always keep in mind: you need two methods for a single character class
also: your tokenizer is the biggest flaw in writing the parser yourself
and generally: if you do not use C, use a parser generator
and skip the "write it yourself" part at whole
it is full of work, only causes problems already when you just use a tool and will be the first and most cause of your crashes
(unless indeed you are using a managed language where most crashes are actually catchable exceptions)
I'm going to write it in Java and I tried using ANTLR... But the generated parser is stunningly slow on some input
What do you mean by "two methods for a single character class"?
XXX_starts
XXX
to not rewrite the checks if something starts with something all over again and again
ANTRL is slow indeed, but it is the most used parser
also: parsing speed does not matters
just do not wait for parsing
unless indeed you are creating a vm like i did where it is mandatory ๐
Well it gets quite annoying if you have to wait ten seconds for the parser to complete in order to update the syntax- and type-checking...
Then use C++ instead of Java #Yeah
That is because ANTLR is fairly simple to use... But I have now decided that it's too slow
Not an option as I need to access the parse-result in Java
antrl is fast enough
just stop and restart the parsing each time a user types
That's what I'm doing... But still too slow
Also ANTLR doesn't support incremental parsing
well then you have to write the parser by hand
or use a different one (eg gold as suggested, i personally worked successfully with coco/r)
I think I'll try myself ๐
Kinda wanna explore the parser-world a little more in-depth anyway
And in the end the parser will work exactly as I want/need it to... Which'd be nice
it will never
another hint i can give you
parsers are the bitches in the programees world
they only can bitch around
regardless of how much time you spend with them
Well unless you by accident produce the exact same parser as Arma has
Even if it breaks it will still be correct
Yeah exactly
but most points where it can bitch around got fixed already
Haha yep but that holds true for a generated one as well xD
But if your parser works just as Arma's works. You can't really get any better. If you are better your parser is not compliant to the standard
The thing you are trying to replicate is the standard
it is no standard
it is the ancient piece of software i am replicating
where only the long gone and forgotten can know how it was designed
an ancient piece of software
beautiful, and scary
well, the code is available
What makes that not be a standard? C programming language is a tiny bit older.. Would you say that also isn't a standard?
C coding language actually has multiple standards
SQF probably is defined in some BI doc too
but it is not available for us
thus we just can create what we observe
but not what is actually standard
what is your reasoning for going with C over C++?
๐
And that's also why noone wants to contribute ๐
pff
๐
how is c preventing one from contributing?
I'm seriously considering moving away from C++ to C for personal stuff but I can't make up my mind :/
Because C is so damn old and almost deprecated in terms of user-friendliness
Never said that it wasn't powerful
compared to cpp it is even easy to understand
Nope... Not in my opinion
only "problem" in c is that you have to mostly do the memory hjandling yourself
But that might be because I'm used to OO programming
You can do all you can do in C in C++ too
that's the cool thing about C.. anyone that understands C can read all C programs but with C++ that doesn't fly
but you have the possibility to do more
if you code in C you don't have the possiblity to do more
c++ is based around c ...
they compile to the same target
things you do in c++ with templates etc. have to be done different in c
that is all
But c++ offers OO which is "the modern way to code" in most cases
And the STL has sooo much stuff already there
Does C have something that's like STL?
OOP is overrated ๐
Or do you need to gather hundreds of libraries just to get some simple containers to store data in?
C has a standard library
Of course it is... Who likes readable and meaningful code? xD
no containers though
uhm ... C has the default library too ... yes ...
those are what you get from stdlib.h for example
however, the c std is smaller
So.. Use C and tons of external libraries for the most basic things. Or make it yourself. Or C++ and just use what's already there.
pff ...
And C... Oops memory leak.
You can get those in cpp too though
C++. Object went out of scope and deleted itself automatically
But you can very easilly not get them in cpp
Yep
In C.. Well.. You could do the same but you have to make sure to manually do the stuff so that it can manually automatically manually delete stuff kinda maybe
C# anyone? ^^
cpp object out of scope has to be coded properly to do so
memory handling is not automatically done like that
We already know C# is far superior to both. But also not as low level
you can go pretty low level though
actually ... due to the ability to code C or C++, it works with c# to perfectly
only speed is slightly slower for the benefit of the CLR features
If you never call new/delete you never need to worry about managing your memeory
i would love to have a typedef command though in C#
just that this wont work if you are a rookie @glossy inlet
to not call those, you have to know what youre doing
That's the problem with most schools
they Teach C and malloc/dealloc first. Then move to C++ and people never unlearn the new/delete
If you never teach rookies how to do it wrong. They won't even start with that
besides, sqf-vm currently supports a pretty nice range
https://cdn.discordapp.com/attachments/365802089839984640/398175513828655104/supported.txt
19/24 types
151/2519 commands
See the bright side: Almost all types are included ๐
Was actually surprised. Expected less
implementing commands is mostly busy work ...
which is the problem
types are more complicated
*most of the time
I once wanted to help. But the C ness cared me off
so much boilerplate and duplicate code in every command
Though.. Not like I don't usually do more crazy stuff... https://github.com/dedmen/Intercept_CBA/blob/master/src/SQFExtension/Utility.cpp#L290-L348
But atleast I don't need hundreds of duplicates of roughly the same code every time just because it's not that easy to abstract it away
those are code that pulls out the params every time and checks the type
those could not be navigated out into a separate method much further even using cpp
though ... i could improve even using C
with out parameters etc.
Just do it like Arma. Check type before calling the command
but doing it flexible enough to make it work for all cases, wont work
would require completly different system then it is now @glossy inlet
eg. where do i save the types supported?
how to make sure sqf-vm knows about the relations of those ?
exactly like Arma does it maybe
not rly knowing that much about the interna
for (candiates: commands.get(commandName))
if (candidate.argType & argument.type) return candidate(argument)
rewriting sqf-vm also by now takes too long ... maybe one day
but still: that will again start at 0 as the code would not be reusable
The more you add the more work rewriting that will be
happens
this sqX parsing business is a perrenial. Despite many attempts, there will never be one that operates reliably until bis stop adding new operators. Reason?
a bingle b
unlike a language with a bit of intelligent thought behind it, you can have no idea whether 'bingle' is a constant, a unary, or a binary operator ('rand' in this context is a constant). And no idea at all what operand types it might accept nor what, if anything, it returns. Yes, you can visually and intuively guess what these might be, even what bingle does, but that's no bloody use to a n already coded parser which will simply throw it's hands in the air.
yes, you can also look up the new operator AFTER bis have added it, but again, that's no bloody use to an already existent parser as there are no rules of precedence it can follow.
fyi: makeobo has had a sqx parser for some time now, and, it works reliably,, because the only sqX it parses are exec/evals, and they use a very limited subset of all possible operators that bis have not 'improved'or added to since ofp.
I also agree with the coments that you can't make a 'better' parser than the one already in the engine. yes, you can make it more error descriptive, more easy perhaps to encode, but, if the sqx language itself is coded in the engine to return 1 + 1 = 3. then there's no advantage for you or anyone else changing it to 1+1 = 2
why is everyone writing a sqf parser in the first place?
@sick verge is creating an enclipse plugin
i create sqf-vm and arma.studio
thats why
yeah sure I get that. but you would think he could use your code
yeah and it is a pain to see guys doing the same stuff again somebody already did
no way around to get a parser working in java
real code reusability would be a cool thing to have in the future, where it doesnt matter in what language something was coded
theoretically, c is usable in all of those languages
however, sqf-vm code was not designed to be usable in other projects and would need a lot of changes to get it working so
I am just dreaming here. I know the problems ๐
but would be great if those problems would be solved in the future
c/c++ is universal (not that I'm advocating it). I know of no microprocessor that hasn't had a c compiler supplied, including the humble arduino and rasberry pi. C# is a 'better' language in that it's faster to code and has less gotcha's, but it's (now) infested with microsoft specific OS functions. Same comment really for any OS such as Apple which adds it's own unique funcs().
but bottom line for me is thank god there isn't a 'universal' language. David Suzuki (Canadian) warned against this very thing, "beware of monocultures"
best erxample i can give is your alb code T_D, there's things in there, and ways of doing things I've now implmemnted in c++, but would never have thought of them without that newer language leading the way (in this instance)
Anyone able to point me in the right direction here? I have a model with a proxy and I want to replace it with another model path, then duplicate the original and do it again
If I edit the p3d with a text edit program I can find the proxy path and replace and it works fine but was wondering if anyone had any better ideas
editable p3d aka MLOD?
Your editing a p3d with text editor? this olod p3d?
Mikero paid tools has moveObject that change paths etc
Yes to both
The p3ds dont exist yet
I have a p3d mlod as my starter, I want to copy it and replace the proxy path inside of it and then do the same thing again for another proxy
Like 500 times
So I am trying to figure out the best solution, if there is something in mikeros, hex edit or maybe blender export with alwarrens tools and python lol
i probably would use O2Script ๐
Hmm
That or moveObject if you already paid for Mikero Tools
unfortunately not. syntax is same as sqf. just commands and some datatypes are different
comRef is in OB->Scripts->ComRef
Just make a script to copy from an initial template p3d and the run o2script/moveObject on each one to update the proxy path etc.
Okay thanks, Ill take a look around !
@tiny path some samples: https://gitlab.com/arma3_ww2_projects/WW2_Public/ww2-dev-tools/tree/master/O2Script
thanks ๐
however moveObject sounds way simpler for this
Moveobject is for sure the way to go, thanks guys!
Is there a plugin for Photoshop to convert it to paa?
there was one which is not compatible with the current paa format
damn
@minor pike I haven't used this personally, but this might work https://forums.bohemia.net/forums/topic/210972-photoshop-to-paa-exporter/
even if it's the 'wrong' format, won't tgaview.exe convert it from dxt1 to 5?
change the compression to lzo and, put the auto compress flag in there?
if not, i'll add it to my to do list for dePac.exe
is there some synthax higlighter/linter for sublime 3 like language arma atom? I found sqf linter but its not quite working with config files
Yea, JonBon's Syntax and LordGolias' linter
it works only with sqf
otherwise I have to switch synthax to sqf on each file I open in the project but.. why would I
needs something like arma config file support
I'd still use atom but it pisses me off that it cant open frikin file larger than .. what 2mb?
and they wont likely fix that ever
arma file formats are constucted with 32bit sizes and offsets. irrespective of the exe, the data is limited to a max of 4gig. Since negative offset addressing is involved here the reality is 2gig max.
@Jastreb#8971 use editpadpro/lite
yeah I've been using editpadpro ever since kju introduced me to it many years ago, excellent text editor and nothing better to edit configs, sq?, model.cfg and even 20mb+ logs etc.
For config c++ highlighter works just fine
And every normal editor will automatically use set highlighter/linter for given file extension
Honestly either use the notepad++ snytax highlighter for sqf (Google it) or use IntelliJ with the arma plugin. I use it and it's great. As trump would say it's hughe, it's great, it's the best arma editor ever made.
Atom and what not are meh ... If you like them go ahead but for me they are only a better windoze Notepad.exe
Isn't every editor just a better notepad?
True that
Sublime/Atom/Eclipse/Notepad++/Dash/Notepad/gedit/vi/vim/Microsoft Office Word/LibreOffice Word/OpenOffice Word/SciTE/VSCode/jEdit/Brackets/Mousepad/Leafpad/KWrite/KEdit/Kate/UltraEdit/TextPad/WinEdt/.....
Arma.Studio has config support?
Also don't forget ARMA Studio 2016. Although no one has access to it, it still exists
Arma.studio has Config Support, yes
Syntax Highlighting and checking
Both available
Though the linting has a minor issue due to not allowing numbers at ident start
@glossy inlet you forgot Nano >:(
OH crap ._. Sorry. Nano is actually the editor I use most on Linux
Nano masterrace
Vim or bust
bust
somebody know how to sign .ebo files?
Uhm.
lol
Did you read Arma EULA?
You probably should
Yeah I know. But I won't tell Muhahahahaa
what exactly do you mean?
we got a mod from a modder and his files are not pbos they are ebos, the problem is i cant sign them
i cant`? ๐ฎ
True
can you tell me maybe why exactly i cant? ๐
ah so he must build the addon with addon builder (as example) sign the pbo, and after that encrypt it and then he must send me the ebo and the sign?
No.
He must just not encrypt it
You take the unecrypted PBO. Sign it. And then use the pbo and it's bisign
he wont give us a pbo just the ebo that nobody can "crack" them
If you have a week time for that send me the EBO and I'll decrypt it for you. I currently can't decrypt because I wrecked my HDD. But when that's back up I'll happily help with retards that encrypt their shit
๐ท
the key for cracking open ebo is reasonably well known, and so too, the tool(s) to do so. In any case it was his responsibility, not yours, to provide a bikey for his 'ebo' since it isn't yours is it.
the problem is that he provided a key but some users get the problem "Wrong signatur file"
not all but few
then they should get the 'right' one
funfact: They have ๐
well actually, i got that wrong anyway, it's the server that issues the key, so only way it can be 'wrong' (for some) is by using them using the 'wrong' release of the ebo.
welcome to hell
public or server key isnt used for signing files, dont waste your time trying that
public key is used for signature verification of the file, and it resides on the server in the keys folder while bisign files are in the users PC
thats how things work
private key is used for singing files, and that key is not to be shared with anyone
