#arma3_tools

1 messages ยท Page 19 of 1

dawn palm
#

there should not be an issue, and, what i think you are saying is it isn't my tools but a windows update causing the issue.

#

if you are running as admin, microsoft cripple most gui functionality. notably drag 'n drop.

wraith valve
#

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.

dawn palm
#

correct

wraith valve
#

Is it normal to get a "DLL error detected" warning when you first start the program before opening a specific PBO?

dawn palm
#

no errors of any kind are 'acceptable'

#

since you did a format, you probably downloaded a fresh set of my tools

#

subscriber or free?

wraith valve
#

Just a free mooch

dawn palm
#

well they have been substantially updated with more than 13 months of updates and fixes.

wraith valve
#

Well shoot

dawn palm
#

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.

wraith valve
#

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

dawn palm
#

i have no plans to fix it at moment.

smoky halo
#

PBO, RTM and RTMB are up too now

dawn palm
#

am curious to see your decode of tvp. congrats on that btw.

dawn palm
vague shard
#

@smoky halo how complete is the TB formats decoding?

prisma dragon
smoky halo
#

@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

vague shard
#

well i guess how much of the formats is still unknown

smoky halo
#

it seems to be not much

vague shard
#

alright. will dig into and see how it goes ๐Ÿ˜ƒ

smoky halo
#

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

dusky dune
#

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

dawn palm
#

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.

dusky dune
#

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

dawn palm
#

why on earth would you want a tool designed to display 3d images, behave like the game when the game already does exactly that?

dusky dune
#

because i want to have heightmap manipulation and a couple of other TB related things

dawn palm
#

not in buldozer you don't

#

you want those in tb

#

and at best you want to use 02script, if you could.

dusky dune
#

okay, sure miekero

#

any other takers?

#

the 'whatever' launching / synced through TB, that's what i care about

dapper pivot
#

@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.

dusky dune
#

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

dapper pivot
#

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).

smoky halo
#

according to the leaked source code there is also an cmd line option "-buldozer+addons"

#

this seems to enable loading of other pbos

dusky dune
#

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

dapper pivot
#

The .exe has a "-scriptLogs" argument now, anyone tried it?

dusky dune
#

@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

dapper pivot
#

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).

vague shard
#

@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

dusky dune
#

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

smoky halo
#

why was mikeros post of my repository pinned? That lucker gets credit for everything ^^ ๐Ÿ˜…

dawn palm
#

damn right ๐Ÿ˜Ž

hallow rapids
#

@nocturne basin did you put this SQF VM thingy behind a webpage yet? ^^

#

and/or how to I PM the bot?

nocturne basin
#

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

hallow rapids
#

aw ๐Ÿ˜ฆ

#

get better ๐Ÿ˜ƒ

nocturne basin
#

And could be done via a simple php page

#

To pm the bot

hallow rapids
#

does it actually work? I don't get any reply back from the SQF bot ^^

nocturne basin
#

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)

hallow rapids
#

ah wrong server

#

or not.. same user ๐Ÿ˜›

lofty parrot
#

@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

dawn palm
#

#include "relative\to\current\file"
#include "\absolute\path\from\p:"

#

#include "..\from\previous\folder"

#

#include ".\from\current\folder" (not always same as 'current file')

smoky halo
nocturne basin
#

anybody build or knows of a SQF beautifier?

vague shard
smoky halo
#

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

nocturne basin
#

randomly inserted whitespaces for obfuscation?

smoky halo
#

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

pearl beacon
#

"obfuscation"

smoky halo
#

A rather shitty practice.

civic saffron
smoky halo
vague shard
#

@smoky halo would publishing "writing odol" essentially be also sharing how to read it?

dawn palm
#

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.

vague shard
#

(just trying to understand here)

dawn palm
#

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.

vague shard
#

fair enough

glossy inlet
#

No one knows armake can do that.
Also afaik armake isn't complete

dawn palm
#

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.

glossy inlet
#

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"

smoky halo
#

well, I will see. Depending on how the project evolves. But I assume it doesnt evolve at all ๐Ÿ˜‰

vague shard
#

@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

smoky halo
#

rewrite his own?

vague shard
#

he wants to expand his parser capabilities for example

smoky halo
#

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)

vague shard
#

i guess thats the idea T_D is after by sharing the source

smoky halo
#

@vague shard "taking ideas?

smoky halo
#

What kind of parser does he have? Sqf?

karmic niche
#

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

dawn palm
#

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.

nocturne basin
#

@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

#

As I just realized that you want to parse all sqf

karmic niche
#

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.

nocturne basin
#

Probably requires some work to get it running with Gcc

karmic niche
#

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 :)

nocturne basin
#

Uhm... It only parses values ๐Ÿ™ˆ ๐Ÿ˜‚

karmic niche
#

Oh, ok :)

nocturne basin
#

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

glossy inlet
smoky halo
#

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)

smoky halo
#

found by coincidence

karmic niche
#

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.

glossy inlet
#

In that case. Just prevent Arma from escaping the string in the first place

karmic niche
#

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 ๐Ÿ˜•

glossy inlet
#

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

karmic niche
#

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! ๐Ÿ˜‰

glossy inlet
#

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 \"

karmic niche
#

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.

nocturne basin
#

Take my Parsing thingy and alter it a little

karmic niche
#

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.

nocturne basin
#

Improving it should not be that hard though
Just removing the substr stuff and adding a front index instead of length

smoky halo
#

@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.

nocturne basin
#

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)

orchid shadow
#

get glasses

nocturne basin
#

Nothing to do with glasses sadly...

orchid shadow
#

Well i wasen't very serious anyway.

scenic canopy
#

but your avatar has glasses ๐Ÿค”

orchid shadow
#

Maybe i have glasses

hard locust
#

But your avatar is taking glasses off... or is he putting them on ๐Ÿค”

wind elm
#

why not both?

hard locust
#

๐Ÿ˜ฐ

nocturne basin
dapper pivot
#

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?

dapper pivot
#

loddensitycoef= is new too (binarized into v70 ODOL's).

limber garden
#

There is also viewDensityCoef but I don't know what any of them do

dapper pivot
#

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).

limber garden
#

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

dawn palm
#

I have nothing to add to the already accurate info above because I don't know any more than above.

dapper pivot
#

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.

dusty imp
#

i've been waiting for that since mesozoic

#

is it global or per lod property?

dapper pivot
#

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.)

dusty imp
#

eh, would like to have option tweak each lod manually

vague shard
#

@ianbanks#7518 so does the latest binarize exe support it already?

dapper pivot
#

@vague shard It should, if it produces type 73 ODOL's.

vague shard
#

hm have to double check. recently 71 is what i got

dapper pivot
#

The field first appeared in type 70 so I'd presume that would be fine too.

vague shard
#

ok cheers. we will see how it goes ๐Ÿ˜ƒ

smoky halo
plush shard
#

@smoky halo git push ?!

smoky halo
#

๐Ÿ˜…

plush shard
#

๐Ÿ‘

dawn palm
#

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.

smoky halo
#

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

native kiln
#

@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?

dawn palm
#

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.

wind elm
#

C# is pretty "easy" to understand. You just have to forget sqf almost completely ๐Ÿ˜„

dawn palm
#

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.

wind elm
#

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.

dawn palm
#

sounds bout right

wind elm
#

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

dawn palm
#

you mean the comref?

wind elm
#

nah

dawn palm
#

good

wind elm
#

Why do i always forget that name? ๐Ÿ˜‚

#

Don't judge me ๐Ÿ˜„

glossy inlet
#

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.

glossy inlet
#

Doesn't matter. I mean actually applying the weather in game.

hard locust
glossy inlet
#

yep

native kiln
#

@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" ^^

elfin oxide
#

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?

smoky halo
#

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.

glossy inlet
#

If it doesn't allow extensions I'll look into adding it ๐Ÿ˜‰

#

We'll see on release

smoky halo
#

I be surprised to see modding support in the next 6 months

native kiln
#

@smoky halo I think he was specifically referring to the RVExtension entry point method

smoky halo
#

Doubt it, since he was asking about integrating c++ code somehow, regardless my reply would cover that aswell

native kiln
#

๐Ÿ‡ด ๐Ÿ‡ฐ

elfin oxide
#

@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

smoky halo
#

Its gonna be there own scripting language, its not gonna be compiling pure c code etc

elfin oxide
#

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

smoky halo
#

The interface to extensions is easy part.
i.e possible multithread support for the entry point / maybe custom datatype support etc

glossy inlet
#

You want to have stuff ready on DayZ release?

smoky halo
#

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

glossy inlet
#

@elfin oxide Read my PM. Create a Discord server for everyone and push my interest to look into it sooner

karmic niche
#

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.

nocturne basin
#

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

vague shard
#

are 1.5*e-10 also valid in sqf land? if so, they are missing

elfin oxide
#

@vague shard afaik yes, since arma displays/saves small numbers as 1.2424e-10

dawn palm
#

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.

dapper pivot
#

If you put enough digits of a number that IEEE can represent it should work.

dawn palm
#

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.

dapper pivot
#

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.

dawn palm
#

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.

karmic niche
#

Thanks guys for taking the time to look at the code and to respond. I'll take a look at your discussion after work.

smoky halo
#

I am not sure anymore, but afair sqf could also read floats like .055

glossy inlet
#

Never tried that. And never seen that

smoky halo
#

which means nothing to be honest ๐Ÿ˜„

nocturne basin
#

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

smoky halo
#

yeah, only relevant for a full sqf-parser

karmic niche
#

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).

smoky halo
#

BIS Scalar Type is just that. A C++ float. So parsing shouldnt be any rocket science

karmic niche
#

Wasn't this a double? (not that it changes anything for me)

smoky halo
#

pretty sure it is float. according to the leaked source code

karmic niche
#

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 ๐Ÿ˜ƒ

nocturne basin
#

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

karmic niche
#

Yeah. i just thought that it doesn't hurt putting it there just in case. Same thing as with ]

nocturne basin
#

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

karmic niche
#

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?)

dawn palm
#

Maverick's mikero updater has been revised to also list the rar packages, not just, the installer.exe's

nocturne basin
#

@karmic niche a variable that is not set or a typo could be enough

smoky halo
#

added mlod

dawn palm
#

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.

vague shard
#

what kinda of "broken" did they introduce?

dawn palm
#

trailling spaces kju

vague shard
#

i see. this isnt really new is it? (across A3/BI assets in general)

dawn palm
#

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

dapper pivot
#

How do you know they aren't putting spaces in to intentionally disable the property. Might be the official workflow. ๐Ÿ˜‰

vague shard
#

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?

dawn palm
#

i've avoided that kju as a moving goalpost

vague shard
#

fair point. however A3 is said to be/become EOL

#

as such the goalpost(s) should become eternal (soon)

dawn palm
#

i dearly hope so, they can move on to enfusion and stop breaking the arma engine.

wind elm
#

Making RV openSource ๐Ÿ˜„

dawn palm
#

yes., Q, to above, as soon as they p*ss off, i will indeed be 'stricter' with lod properties.

scenic canopy
#

who would win, a bunch of mod makers or one spacey boi in a p3d lod

#

there we go ๐Ÿ˜„

dawn palm
#

๐Ÿ˜

glossy inlet
#

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.

smoky halo
#

Your redirecting PV engine wise or switched it out with another command?

glossy inlet
#

Redirected publicVariable and publicVariableClient commands

glossy inlet
#

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.

wind elm
#

Is PVAR still a thing?

glossy inlet
#

publicVariable and setVariable with the public flag... Yes.

wind elm
#

I mean, i switched instantly away when setVar with jip was available

glossy inlet
#

setVar with JIP is the same

#

essentially

#

both ways are counted in my stuff

wind elm
#

i tend to remember, that pubVar had some issues, but i can't remember what it was

#

kk

smoky halo
#

Real issue is of course BattlEye randomly blocking the extensions.
Makes it kinda hard to implement on public servers shrugs

wind elm
#

But this also means, that interc must be run on CLientside, where BE kicks in again -.-

glossy inlet
#

True :/

wind elm
#

Yep, Deco

glossy inlet
#

But I only know milsim world anyway. Which is 98% passworded battleye-less servers

wind elm
#

and 98% of all Servers are either Public or non-milsim (just shouting random numbers ๐Ÿ˜› guess in reality it's about 85-90%)

scenic canopy
#

Very nice work @glossy inlet !

glossy inlet
#

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.

native kiln
#

@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

wind elm
#

I guess your intention is Pure ServerSided coding/scripts?

glossy inlet
#
_answer = <clientID> sendRequest "request stuff";
waitUntil { requestAnswerReady _answer };
diag_log _answer;
native kiln
#

yes

#

I need this in my life

wind elm
#

"life" ๐Ÿ˜‰

native kiln
#

I need this in my virtual life

wind elm
#

"life"

glossy inlet
#

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.

native kiln
#

You don't know how much I would freak out if this was to become a thing in the default featureset

dawn palm
#

only? good grief, no sqf ? has to be xmas.

glossy inlet
#
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

native kiln
#

Right now I always have to rely on a selftscripted logic to return things over network

glossy inlet
#

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

native kiln
#

There are only 2 things in my life right now that can make me happy:

  1. Returning field values over network on call
  2. Reaching Diamond in Rainbow Six Siege
#

If only Intercept was BE whitelisted

glossy inlet
#

I wanted to send a BE request for the last release.. But then it turned out I borked the release ๐Ÿ˜„

dawn palm
#

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?

wind elm
#

Wasn't there a prob with the latency of callExtension?

glossy inlet
#

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

dawn palm
#

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

glossy inlet
#

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

dawn palm
#

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.

smoky halo
#

Script errors would be a pain to figure out where it came from.
Also trying to figure out BE log snippets came from aswell

dawn palm
#

true that

glossy inlet
#

You could make a parser that recognizes new commands automatically though

dawn palm
#

really???? how?????

smoky halo
#

Not really worth the hassle besides as doing it as a challenge imo

glossy inlet
#

using supportInfo command

#

it tells you all existing sqf commands

dawn palm
#

and how would that work in a standalone exe ? <grin>

wind elm
#

hmm... standalone exe?

glossy inlet
#

uhhhh ๐Ÿ˜„

smoky halo
#

export the output and host it in a text file somewhere ๐Ÿ˜‰

wind elm
#

Now you got my full attention

smoky halo
#

I doubt they will be adding much new sqf commands to arma3

glossy inlet
#

I think the Arma.Studio parser fetches a file of new commands online that can be live updated

dawn palm
#

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......

wind elm
#

(for some configs)

glossy inlet
#

We have the SQF Linter. And you can live edit sqf scripts without restarting the game

wind elm
#

Code can be done easily in the Editor/Console/reload with execVM stuff

dawn palm
#

k

glossy inlet
#

I even have live config editing without restarting the game now ^^

native kiln
#

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

wind elm
#

Yep, or just reload the function (bla_fnc_bla = execVM "blablub")

native kiln
#

Yea

wind elm
#

As long as you don't call compileFinal your stuff, it's pretty easy to code and test inside Arma

glossy inlet
#

Or you just load my script profiler which disables the final flag of compileFinal ๐Ÿ˜„

wind elm
#

ยฏ_(ใƒ„)_/ยฏ

native kiln
#

Isnt there a recompile thingy for missions?

wind elm
#

I guess when you add cfgFunctions to the mission description.ext it recompiles it every start

glossy inlet
#

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.

native kiln
#

Hm I meant in CfgFunctions in the mission

#

Idk maybe Im wrong

glossy inlet
#

CfgFunctions is compileFinal afaik. And I also think you can't disable that.

native kiln
#

So that if you call the BIS_FNC_RECOMPILE it also recompiles the mission functions

#

Hm okay I see

wind elm
#

Thats the mayor "downside" of having everything defined in the mission, instead of addon ยฏ_(ใƒ„)_/ยฏ

glossy inlet
#

If you make a mod-less mission you can't have mods ๐Ÿ˜„

wind elm
#

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?

glossy inlet
#

If the name already exists. The one that's compiled first will win.

wind elm
#

Oh boy^^

native kiln
#

I bet it even throws an error because the compileFInal thingy being attempted again

#

Or does it actually check whether the function already exists? ๐Ÿ˜›

wind elm
#

Doubt it

glossy inlet
#

addon then campaign then mission

#

so mission looses

wind elm
#

campaign?!

#

campaign != addon ?

glossy inlet
#

campaignConfigFile ยฏ_(ใƒ„)_/ยฏ

wind elm
#

dafork is that

native kiln
#

the fuck

wind elm
#

SP one, or?

glossy inlet
wind elm
#

Never heard/used it

vague shard
#

@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

glossy inlet
#

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

elfin oxide
#

The arma network traffic was encrypted after some people made network based injectors

glossy inlet
#

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.

wind elm
#

@glossy inlet Why are you still typing here?

glossy inlet
#

@wind elm Where else?

wind elm
#

VisualStudio, wรถrk wรถrk

glossy inlet
#

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

scenic canopy
#

@glossy inlet did you try protobuf?

glossy inlet
#

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

scenic canopy
#

I was thinking more in terms of serialization/deserialization

glossy inlet
#

I don't do that myself. I call the already existent engine function

scenic canopy
#

ah

glossy inlet
#

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

scenic canopy
#

but meh, json is most often fine

#

especially when paired with gzip

glossy inlet
#

I am already better than Arma. And network bandwidth isn't that limited that it would really matter

dusky dune
#

: I am already better than Arma this isn't news

scenic canopy
#

or BSON ofc

glossy inlet
#

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.

scenic canopy
#

I THINK FlexBuffers will optimize string usage

glossy inlet
#

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

scenic canopy
#

since you will own both producer and consumer it would be easy to change down the lane too so

glossy inlet
#

I never actually tested how long Arma engine's setVariable takes for this. I'll do that

dusky dune
#

dedmen on the sharex bandwagon

#

good boi

glossy inlet
#

I switched from lightshot to sharex because I can also easilly share files using sharex.. but I never do

dusky dune
#

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 ๐Ÿ˜„

glossy inlet
#

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?

dusky dune
#

sharex can video

karmic niche
#

Not much fps but still much wow

glossy inlet
#

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.

tired jungle
#

hey guys can i get some help?

glossy inlet
tired jungle
#

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?

#

..

glossy inlet
#

have you tried launching it manually instead of via the arma 3 tools UI thing

tired jungle
#

like shortcut, steam libary, or C: Drive directory

dawn palm
#

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.

nocturne basin
#

Do not reinvent the wheel, reuse code

#

Actually well refined system if it can be applied to everything

vague shard
dusky dune
#

: Do not reinvent the wheel, reuse code

#

i agree

#

Does anyone have a arma config parser for python? ๐Ÿ˜„

karmic niche
#

You're right @dusky dune .
On another note: Does anyone have a arma config parser for python? ๐Ÿ˜›

#

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.

smoky halo
#

interested in a C# parser?

karmic niche
#

Not really, tbh (and I'm 100% sure it's the same for Adanteh)

#

But thanks for the offer anyway ๐Ÿ˜ƒ

smoky halo
#

ok ๐Ÿ˜ฉ

native kiln
#

@smoky halo Yes

smoky halo
#

oh really?

dusky dune
#

I know that exists T_D ๐Ÿ˜„

#

i guess it's up to @karmic niche to make one instead

smoky halo
#

is there an @-operator in configs?

glossy inlet
#

never seen. Also don't know what it would do

smoky halo
#

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

smoky halo
#

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

dawn palm
#

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";

smoky halo
#

true, but if you want a parser that behaves like the BIS one, you probably have to be aware of that

dawn palm
#

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);

smoky halo
#

it's not a scripting operator so not valid within _EVAL

#

afaik

dawn palm
#

someEntry = @__EVAL(xxxx)

#

is what i was referring to. legitimate in my opinion, but not seen

smoky halo
#

that was an example. In this case __EVAL wouldnt be evaluated. Instead someEntry would be "__EVAL(xxxx)"

dawn palm
#

haaaaa bloody discord can drive you mad n'est pas?

smoky halo
#

oui

dawn palm
#

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)

vague shard
glossy inlet
#

Want us to help or laugh about it?

smoky halo
#

wonder how long till he realises he can just open the file in an editor & replace all the \n with newlines with search&replace

#

Think he is just complaining because its not doing newlines in the text file correctly for him

glossy inlet
#

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

smoky halo
#

I think he just replace the \n in sqf with endl

glossy inlet
#

no

#

then he would get "stuffendlstuff"

#

but he gets
"
stuff

stuff
"

smoky halo
#

as in _foo = ("stuff" + endl + "stuff");

glossy inlet
#

that should work then

dawn palm
#

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

glossy inlet
#

@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

dawn palm
#

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.

vague shard
#

@glossy inlet up for a "little" challenge - did you look into physx yet?

glossy inlet
#

no I didn't and not sure if I want ๐Ÿ˜„

vague shard
#

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 ๐Ÿ˜

rancid relic
#

EPEDraw is most useful I think

#

if geometries are available then this one should be available somehow too

#

so i.e. you can see when physx wheels are not matching visuals (like in above case)

glossy inlet
#

Is EPEDraw one of the diag drawModes?

rancid relic
#

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)

glossy inlet
#

DisplayPhysX3Debug ๐Ÿ˜ฎ Tell me that is included in the Diag binary.

vague shard
#

BI is so cruel to us ๐Ÿ˜‘

glossy inlet
#

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"

dawn palm
#

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)

native kiln
#

@glossy inlet need a new HDD?

normal wigeon
#

@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...

dawn palm
#

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.

normal wigeon
#

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

glossy inlet
#

@native kiln yes

native kiln
#

What HDD do you have at the moment

glossy inlet
#

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

glossy inlet
#

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 ๐Ÿ˜„

rancid relic
#

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

#

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

glossy inlet
#

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...

tiny path
#

@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

rancid relic
#

Dunno, didn't have time to test @tiny path

glossy inlet
#

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

tiny path
#

So besides just the dialogs there is no visual ways to see how the vehicles are acting with physx?

glossy inlet
#

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

tiny path
#

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

glossy inlet
#

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.

vague shard
#

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

tiny path
#

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

rancid relic
#

Epevehicles is definitely working

glossy inlet
#

["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.

rancid relic
#

As I said before, you also need switch on what you want to draw

#

List of available modes is on Nvidia page

glossy inlet
#

But there isn't a script command to set that right? Atleast I can't find any

rancid relic
#

no, there is hardcoded ui which translates idc to correct flag

vague shard
#

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

elfin oxide
#

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

wind elm
#

Looks like you got insufficient system resources *nods*

#

@elfin oxide ya oll fluffinat0r

elfin oxide
#

ayyy ok this does not seems to be an arma issue then

#

thx for link lets see if it helps ๐Ÿ˜‰

glossy inlet
#

@elfin oxide Battleye block

#

Btw someone is currently working on integrating my script debugger into VS Code

elfin oxide
#

Battleye block lul

hardy leaf
#

Has anyone created a PHP/JSON parser for SQF arrays?

#

Not an in-game one, SQF Array => PHP/JSON

keen owl
#

I have made a JSON parser to SQF arrays

hardy leaf
#

yeah I've seen it

#

but I would want a php/js function

keen owl
#

I don't follow. Do you want to parse JSON or SQF array? And do you want to parse it from PHP or JS?

karmic niche
#

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.

keen owl
#

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.

humble apex
#

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 ?

glossy inlet
humble apex
#

Yes thanks man, done

nocturne basin
#

@keen owl is that json parser fully in SQF? ๐Ÿ˜ฎ

keen owl
#

@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.

dawn palm
#

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..

lime blaze
#

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?

glossy inlet
#

What is "a error" ?

glossy inlet
#

Show me the part of that code

lime blaze
#

I add semi colons after the flags and the forEach loop gets the error pic:

glossy inlet
#

You said it's an error on your forEach. it isn't even close to the forEach

glossy inlet
#

Maybe it can't parse the macros correctly

#

It looks like it can't parse the macros correctly

lime blaze
#

Hmm I will try converting the macros to actual

glossy inlet
#

Or.. wait

#

no

#

You cannot use , inside a macro parameter

#

I think?

lime blaze
#

hmm

glossy inlet
#

Or was that only related to arrays

lime blaze
#

Lets me get rid of the macro and try

glossy inlet
#

How does your M_CONFIG macro definition look like?

lime blaze
#

Its default altis life

#

I dont like them

#

#define M_CONFIG(TYPE,CFG,CLASS,ENTRY) TYPE(missionConfigFile >> CFG >> CLASS >> ENTRY)

glossy inlet
#

That's correct atleast.

#

thought how they handled subclasses in there. But apparently you need to use different macros then

lime blaze
#

Okay

#

So removing the macro fixed it

#

Thanks

glossy inlet
#

Should still report to the guy making the vscode linter plugin

lime blaze
#

Yeah will do, recon I should just post it on the github or do you know if hes on this discord?

glossy inlet
#

Just post on it's github

covert sequoia
#

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

vague shard
#

@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?

glossy inlet
#

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

wind elm
vague shard
#

alright. from what i understand the engine loads named properties on game start or when preloading p3d

wind elm
#

(Only works in ResLods)

vague shard
#

yeah essentially

wind elm
glossy inlet
#

So you want to get the list of named selections in a specific LOD? Or....

smoky halo
#

No he wants the named properties from a p3d

glossy inlet
#

Dunno what that is

smoky halo
#

Something todo with slope contact is set (can't remember the channel it was mentioned on) 1 sec

dusky dune
#

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

glossy inlet
#

Is it just a string setting with a string value?

smoky halo
glossy inlet
#

different per LOD ough.. I guess I'll have to get pickaxe and shovel out then.

smoky halo
#

That screenshot is before its binarized etc. kju is after specfic setting, but a generic command could be useful

wind elm
#

like expanded selectionNames

smoky halo
#

certain named properties will be binarized into seperately stored fields

#

like map, class etc.

wind elm
#

wait, weren't they called NamedProperties?

glossy inlet
#

If I add it it would be extremly hacky. And not even sure if I can add it. Soo.. Is it worth it?

wind elm
#

But Kju was looking for namedSelections
I need more cofeve

smoky halo
#

well, he wrote named properties

wind elm
#

moar cofeve

#

Ah, Dedmen wrote selections, mashed that together sherbFellow

vague shard
#

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

glossy inlet
#

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

vague shard
#

well it has to cache it somewhere i would assume

glossy inlet
#

Not really. It needs the values it needs. which might be stored nameless in some boolean deep in the model's class

dusky dune
#

does that allow you to get the path of surface texture? :3

glossy inlet
#

yes

dusky dune
#

very nice!

glossy inlet
#

For the ACE trench PR

dusky dune
#

Now if only i knew CPP or anything like that.... i'm still learning python and overfl0 is slacking ๐Ÿ˜‰

glossy inlet
#

time to start

dusky dune
#

meh, maybe once i finish my python learning

glossy inlet
#

But you'll probably neither learn nor need that level of stuff

dusky dune
#

Today was the first arma modding day that i wrote more python than SQF

smoky halo
#

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

karmic niche
#

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? >_>

tiny path
#

only on tuesdays

sick verge
#

Alright folks. Who has experience with writing a parser for SQF? Or who knows a very fast SQF-parser that is OpenSource?

glossy inlet
#

@nocturne basin

sick verge
#

I think a bottom-up parser would be the best way to go...

glossy inlet
#

He wrote like.. atleast 2

nocturne basin
#

one by hand

#

one via tools

sick verge
#

What parsing strategy do they use? bottom-up or top-down?

nocturne basin
#

one depends on the tool

#

the other is bot up due to how the stack has to be built

sick verge
#

That's a combined lexer+parser isn't it?

nocturne basin
#

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

covert sequoia
#

@nocturne basin

else if (str[0] == '[')
{
arrcount++;
}
   else if (str[0] == '{')
{
   codecount++;
}

My OCD is striking ahahahah

nocturne basin
#

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

sick verge
#

Yeah that's the problem xD

covert sequoia
#

the first programmer is a monster

nocturne basin
#

it is C at last
if i would be using java, i would use that garbage intendation too

smoky halo
#

i hate 2nd style

glossy inlet
#

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

sick verge
#

Exactly what I think

nocturne basin
#

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

sick verge
#

Any wise tips for writing one? Like some mistakes you made when designing it?

nocturne basin
#

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)

sick verge
#

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"?

nocturne basin
#

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 ๐Ÿ˜„

sick verge
#

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...

glossy inlet
#

Then use C++ instead of Java #Yeah

sick verge
#

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

nocturne basin
#

antrl is fast enough
just stop and restart the parsing each time a user types

sick verge
#

That's what I'm doing... But still too slow
Also ANTLR doesn't support incremental parsing

smoky halo
#

I liked GOLD parser when I used it ages ago

nocturne basin
#

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)

sick verge
#

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

nocturne basin
#

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

glossy inlet
#

Well unless you by accident produce the exact same parser as Arma has

#

Even if it breaks it will still be correct

nocturne basin
#

nah

#

armas parser also bitches around enough

glossy inlet
#

Yeah exactly

nocturne basin
#

but most points where it can bitch around got fixed already

sick verge
#

Haha yep but that holds true for a generated one as well xD

glossy inlet
#

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

nocturne basin
#

nothing is ...

#

you cannot be is the problem

#

because there is none

glossy inlet
#

The thing you are trying to replicate is the standard

nocturne basin
#

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

smoky halo
#

well, the code is available

glossy inlet
#

What makes that not be a standard? C programming language is a tiny bit older.. Would you say that also isn't a standard?

nocturne basin
#

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

hallow rapids
#

what is your reasoning for going with C over C++?

nocturne basin
#

reason

#

simply when i started with sqf-vm i wanted to code C

#

and ... thats it

hallow rapids
#

๐Ÿ˜

sick verge
#

And that's also why noone wants to contribute ๐Ÿ˜›

nocturne basin
#

pff

sick verge
#

๐Ÿ˜„

nocturne basin
#

how is c preventing one from contributing?

hallow rapids
#

I'm seriously considering moving away from C++ to C for personal stuff but I can't make up my mind :/

sick verge
#

Because C is so damn old and almost deprecated in terms of user-friendliness

nocturne basin
#

pff
that rly is bullshit

#

C is as lowlevel you can get with highlevel lang

sick verge
#

Never said that it wasn't powerful

nocturne basin
#

compared to cpp it is even easy to understand

sick verge
#

Nope... Not in my opinion

nocturne basin
#

only "problem" in c is that you have to mostly do the memory hjandling yourself

sick verge
#

But that might be because I'm used to OO programming

glossy inlet
#

You can do all you can do in C in C++ too

hallow rapids
#

that's the cool thing about C.. anyone that understands C can read all C programs but with C++ that doesn't fly

glossy inlet
#

but you have the possibility to do more

#

if you code in C you don't have the possiblity to do more

nocturne basin
#

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

sick verge
#

But c++ offers OO which is "the modern way to code" in most cases

glossy inlet
#

And the STL has sooo much stuff already there

#

Does C have something that's like STL?

hallow rapids
#

OOP is overrated ๐Ÿ˜›

glossy inlet
#

Or do you need to gather hundreds of libraries just to get some simple containers to store data in?

hallow rapids
#

C has a standard library

sick verge
#

Of course it is... Who likes readable and meaningful code? xD

hallow rapids
#

no containers though

nocturne basin
#

uhm ... C has the default library too ... yes ...
those are what you get from stdlib.h for example
however, the c std is smaller

glossy inlet
#

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.

nocturne basin
#

pff ...

glossy inlet
#

And C... Oops memory leak.

sick verge
#

You can get those in cpp too though

glossy inlet
#

C++. Object went out of scope and deleted itself automatically

#

But you can very easilly not get them in cpp

sick verge
#

Yep

glossy inlet
#

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

smoky halo
#

C# anyone? ^^

nocturne basin
#

cpp object out of scope has to be coded properly to do so

#

memory handling is not automatically done like that

glossy inlet
#

We already know C# is far superior to both. But also not as low level

smoky halo
#

you can go pretty low level though

nocturne basin
#

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

glossy inlet
#

If you never call new/delete you never need to worry about managing your memeory

smoky halo
#

i would love to have a typedef command though in C#

nocturne basin
#

just that this wont work if you are a rookie @glossy inlet
to not call those, you have to know what youre doing

glossy inlet
#

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

nocturne basin
glossy inlet
#

19/24 types
151/2519 commands

sick verge
#

See the bright side: Almost all types are included ๐Ÿ˜ƒ

glossy inlet
#

Was actually surprised. Expected less

nocturne basin
#

implementing commands is mostly busy work ...

#

which is the problem

#

types are more complicated

#

*most of the time

glossy inlet
#

I once wanted to help. But the C ness cared me off

#

so much boilerplate and duplicate code in every command

sick verge
#

Told ya ๐Ÿ˜›

#

@nocturne basin

glossy inlet
nocturne basin
#

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.

glossy inlet
#

Just do it like Arma. Check type before calling the command

nocturne basin
#

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 ?

glossy inlet
#

exactly like Arma does it maybe

nocturne basin
#

not rly knowing that much about the interna

glossy inlet
#

for (candiates: commands.get(commandName))
if (candidate.argType & argument.type) return candidate(argument)

nocturne basin
#

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

glossy inlet
#

The more you add the more work rewriting that will be

nocturne basin
#

happens

dawn palm
#

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

smoky halo
#

why is everyone writing a sqf parser in the first place?

nocturne basin
#

@sick verge is creating an enclipse plugin

#

i create sqf-vm and arma.studio

#

thats why

smoky halo
#

yeah sure I get that. but you would think he could use your code

nocturne basin
#

he uses java

#

arma.studio is c#

#

sqf-vm c

smoky halo
#

yeah and it is a pain to see guys doing the same stuff again somebody already did

nocturne basin
#

no way around to get a parser working in java

smoky halo
#

real code reusability would be a cool thing to have in the future, where it doesnt matter in what language something was coded

nocturne basin
#

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

smoky halo
#

I am just dreaming here. I know the problems ๐Ÿ˜‰

#

but would be great if those problems would be solved in the future

dawn palm
#

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)

tiny path
#

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

smoky halo
#

editable p3d aka MLOD?

#

Your editing a p3d with text editor? this olod p3d?
Mikero paid tools has moveObject that change paths etc

tiny path
#

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

smoky halo
#

i probably would use O2Script ๐Ÿ˜ƒ

tiny path
#

Hmm

smoky halo
#

That or moveObject if you already paid for Mikero Tools

tiny path
#

I have but the p3ds dont exist

#

@smoky halo anywhere to read up on o2script?

smoky halo
#

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.

tiny path
#

Okay thanks, Ill take a look around !

tiny path
#

thanks ๐Ÿ˜ƒ

vague shard
#

however moveObject sounds way simpler for this

tiny path
#

Moveobject is for sure the way to go, thanks guys!

minor pike
#

Is there a plugin for Photoshop to convert it to paa?

smoky halo
#

there was one which is not compatible with the current paa format

minor pike
#

damn

limber garden
dawn palm
#

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

south canopy
#

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

pearl beacon
#

Yea, JonBon's Syntax and LordGolias' linter

south canopy
#

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

dawn palm
#

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.

vague shard
#

@Jastreb#8971 use editpadpro/lite

pliant lynx
#

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.

pearl beacon
#

For config c++ highlighter works just fine

#

And every normal editor will automatically use set highlighter/linter for given file extension

elfin oxide
#

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

glossy inlet
#

Isn't every editor just a better notepad?

elfin oxide
#

True that

nocturne basin
#

One could mention arma.studio here Btw...

#

As another Editor

glossy inlet
#

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

nocturne basin
#

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

elfin oxide
#

@glossy inlet you forgot Nano >:(

glossy inlet
#

OH crap ._. Sorry. Nano is actually the editor I use most on Linux

elfin oxide
#

Nano masterrace

pearl beacon
#

Vim or bust

dawn palm
#

bust

storm pumice
#

somebody know how to sign .ebo files?

glossy inlet
#

Uhm.

normal wigeon
#

lol

glossy inlet
#

Did you read Arma EULA?

#

You probably should

#

Yeah I know. But I won't tell Muhahahahaa

storm pumice
#

what exactly do you mean?

glossy inlet
#

.ebo's are already signed by BI

#

just use their sign

storm pumice
#

we got a mod from a modder and his files are not pbos they are ebos, the problem is i cant sign them

glossy inlet
#

Tell the modder then

#

yeah you can't

storm pumice
#

i cant`? ๐Ÿ˜ฎ

glossy inlet
#

True

storm pumice
#

can you tell me maybe why exactly i cant? ๐Ÿ˜ƒ

glossy inlet
#

Because they are encrypted and you just can't

#

You need the pbo

storm pumice
#

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?

glossy inlet
#

No.

#

He must just not encrypt it

#

You take the unecrypted PBO. Sign it. And then use the pbo and it's bisign

storm pumice
#

he wont give us a pbo just the ebo that nobody can "crack" them

glossy inlet
#

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

dawn palm
#

๐Ÿ˜ท

#

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.

storm pumice
#

the problem is that he provided a key but some users get the problem "Wrong signatur file"

#

not all but few

dawn palm
#

then they should get the 'right' one

storm pumice
#

funfact: They have ๐Ÿ˜„

dawn palm
#

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

south canopy
#

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