#arma3_tools

1 messages Β· Page 39 of 1

glossy inlet
#

What question was that an answer to?

elfin oxide
#

Yes

lapis sonnet
#

@dawn palm Sorry to @ you but I keep packing multiple different pbos and I get error while adding addon names to requiredAddons array this is only after updating, before I updated all my pbos that had any inherited class were corrupted

scenic canopy
#

you could try with disabling rebuild required addons

lapis sonnet
#

I did do that and it corrupts the pbo

dawn palm
#

work with the 'corrupted' pbo, find out why. (Because rebuild addons was masking this underlying error)

#

it does help if course if you explain what the 'corruption' is.

lapis sonnet
#

@dawn palm None of items inheriting a AMRA 3 class are in-game

#

and the .paa's cant be applied via scripts either

lapis sonnet
#

also do pboprefix still work?

scenic canopy
#

as long as they follow the documented naming convention and format, yes

lapis sonnet
#

my main pbo is called t1p_textures

#

or the addon root

#

I want it to be called t1p_base

#

when its packed

#
=======HEADER=======
prefix=t1p_base\t1p_textures
Mikero=DePbo.dll
product=Arma 3
version=1
Pbo Type is: Arma Addon
==================```
#

this is in my $Prefix$

#

folder

#

I also tried $PBOPREFIX$

#

and pboprefix.txt

#

none work

sly skiff
#

are you packing the t1p_base folder?

#

and if not why not?

#

if you want that as the pbo name, put config into it and pack it from there

lapis sonnet
#

someone told me pboprefixs are a good way to help your stuff not get yoinked

sly skiff
#

they might not have known what they talk about

#

pboprefix does not really do anything to protect your work

#

and to be honest the only way to protect it is to not release it.

scenic canopy
#

you could use a prefix that's not extractable on windows πŸ˜›

#

still won't stop anyone as that's easy to workaround

#

and would cause a lot of issues with OB etc

dawn palm
#

the prefix is formed by the Pdrive:\whatever\folder

#

$pboPrefix$.txt is not what you think it is. The value prefix=any\thing is already deprecated and soon to be removed.

#

$pboprefix$.txt is the pbo's properties file. the least interesting 'property' is prefix =

here are some others

author=I am famous;
version=1234;

product<<<< = A3;
CLDC=My Great Mod;

golden musk
#

I've seen that error before from others. Don't know about a fix. It's on Steam side
@glossy inlet Any news?

glossy inlet
#

Don't rememeber what its about

golden musk
glossy inlet
#

no news

subtle smelt
scenic canopy
#

@subtle smelt ServerQuery.GetServerInstance(EngineType.Source, "127.0.0.1", 2303)

subtle smelt
#

thanks

vague shard
#

anyone here got deeper into mod matching/signature system? especially special cases like optional client mods and the various edge cases with keys and signatures

scenic canopy
#

@vague shard can you be a bit more specific about what kind of cases?

vague shard
#

its unclear if V3 still supports optional client mods for example - there is different statements on this

#

V3 should enforce strict(er?) client to server data matching (without equalModRequired)

#

aspects like of having multiple BI signatures in a modfolder, if hashes for signatures (bisign) or key (bikey) are necessary to ensure they are the right version or havent been tampered with - or if the mod hash is all you need to verify

scenic canopy
#

for client or server?

#

the new changes with enforced mods when used with -mod still supports client side mods using only keys on the server

dawn palm
#

re a new verification system: from what i'v e been told, my understanding is as follows:
the pbos on the server are no longer the same as those of the client. the publisher's pbos supplied to the server are stripped so that only files-of-interest remain. These then get repacked into (consequently) smaller pbos. The resulting sha key will of course be different. Each client is expected to do the same thing during verification by reading out all 'appropriate' files from the pbo and producing a sha to match with. The problem with this is that the order of files being read in the client's pbo must be in the same order as those made on the server. My tools orgnanise them differently to the way filebank does it so the verification will fail. I won't be copying filebank's many mistakes any time soon, and assume this latest act of madness goes away. There are just too many flies in this soup for it to ever become stable.

glossy inlet
#

the pbos on the server are no longer the same as those of the client
never were. same as always.
pbo sha key is checked via bisign

dawn palm
#

I've explained it as best i can.

glossy inlet
#

The new stuff is not because server files are repacked. The new stuff is to get a verified hash faster, to verify it sooner and kick out hackers sooner than if you were to first manually verify all the files in all the pbo's

#

The server file repacking is not an issue as long as the pbo's weren't built using your tools. Not really an issue for most people

dawn palm
#

thank you for the slap in the face

glossy inlet
#

How many non-BI people make server-side reduced size repacks?

#

Never seen that done in mods yet

dawn palm
#

The way it came across to me was that unless people use addon breaker to make their pbos, they can no longer use them in multiplayer.

glossy inlet
#

If the pbo's match 1-to-1 there won't be an issue

vague shard
#

@scenic canopy thanks. for the client
i am pretty sure V3 brought strict(er) data matching between server load pbos and client pbos (similar to bikey have to be in arma3[server]\keys now) - however this wouldnt go together with optional mods not present on the server.
so if it still works via bikey on the server, is the data verification then only done for non optional mods?

scenic canopy
#

I think so, I can check later

#

note that any leftover bisign from non allowed versions on clients will fail checks

#

I've seen it happen far to often πŸ˜„

#

at least arma3sync etc enforces strict mod folder content

karmic niche
#

Been there, done that πŸ˜‰

scenic canopy
#

compared to say steam workshop

glossy inlet
#

it has stricter checks inside of pbo.
Not sure if it changed the "pbo completely missing on one side" thing

vague shard
#

pretty sure V3 now checks for "pbo different" and "pbo missing" now right "when joining" - before it was done while on the server and based on available server resources probably (aka ppl could join and do bad stuff for a while at least)

scenic canopy
#

the CLI interface is document in the dosmode.htm docs file

#

pboproject -P <source folder> -Mod=<target mod folder>

pine shore
#

@dawn palm Any way to have PBOproject not binarise? For quicker testing

vague shard
#

makepbo

scenic canopy
#

if you want even faster test iteration you could use file patching

lapis salmon
#

Hi, I'm not sure if I'm in the right category, but I have a question.

I have a create a DLL on the client side, and I would like to implement it on modded servers. However I have a small problem, Battleye doesn't want to run this one. How can I get it to allow the .dll to run?

Thanks you.

karmic niche
lapis salmon
#

Thanks you Stack ! πŸ™‚

limber hearth
#

I know i should try this myself (but as i'm unable to do it I thought about asking it here) ; i was wondering if strings, when passed using callExtension command (RvExtensionArgs function) get encapsulated in additional quotes , so for example callExtension ["fnc1",["ok"]] passes a char* [] with a single string containing "ok" (so basically the string in its whole is " "" ok "" ")
thank you.

orchid yew
#

i think you are kind of on the right path... strings are passed exactly as they appear ingame. so args is a string[] where args[0] is "ok" (wrapped in quotes, as a string).

limber hearth
#

Great. Thanks for the heads up.

nocturne basin
#

Callextension gets the same values as str outputs

stray galleon
#

@limber hearth strings are wrapped in "" and all " inside are also escaped. You can detect if arg is a string by simply comparing 1st char to '"'

limber hearth
#

Yeah sure thx, I was doing that, but then my mind just said β€˜wait,are you sure that what you are doing is appropriate?’

cinder meteor
#

@limber hearth callExtension has function name argument which doesn't wrap strings into quotes, you can use this to actually pass data around if you don't want to unquote your strings

#

And it supports very large strings as I recall

stray galleon
#

might as well use basic overload callextension string instead would be cleaner and faster

limber hearth
#

Right now I have both overloads implemented, so eventually I’ll choose one and stick with it

stray galleon
#

you don’t need to to choose one to stick with you could use both depending on the task

vague shard
scenic canopy
vague shard
#

ty. interesting - none of these turned up via google. only older ones

karmic niche
#

Added: "Vehicles only" difficulty setting to the 3rd person view option
Does this imply a change in the ServerBrowserProtocolV3? (an additional flag or difficulty number in the a2s_rules packet?)

#

Ah... reading the full page, before posting, usually helps :D

Added: "Vehicles only" difficulty option to thirdPersonView. Current values:
0 - disabled
1 - enabled
2 - enabled only for vehicles

glossy inlet
#

I think the enoch flag should now be in browser protocol

stray galleon
#

0 false for 3rd person 1 and 2 true

karmic niche
#

Yes, yes, I know. I simply posted before getting to the Engine part of the SPOTREP 😳

#

I think the enoch flag should now be in browser protocol
Yes, i can see 2.00 servers using it already

glossy inlet
#

I hope it works fine in launcher :x

scenic canopy
#

"Contact (Platform)"?

glossy inlet
#

if you select server that's on enoch, and don't have contract it should show you to buy contact

#

same as with tanoa

karmic niche
#

@stray galleon i came back to it, after work and I'm not sure if i understand. Looking at https://community.bistudio.com/wiki/Arma_3_ServerBrowserProtocol3 there seems to only be 1 bit (C) that shows if 3rd person is enabled or not (and it sits in between other flags so you can't extend it to have 2 bits).

How are you supposed to send a 2 over the wire?
Or did you mean that regardless if it's 3rd person for vehicles or everyone, that flag will be set to true? (and as a result, you can't really know the setting, from the launcher)

scenic canopy
scenic canopy
#

seems to work good dedmen πŸ™‚

karmic niche
#

Or did you mean that regardless if it's 3rd person for vehicles or everyone, that flag will be set to true? (and as a result, you can't really know the setting, from the launcher)
Any chance to get an official confirmation for this?

stray galleon
#

thought I answered that already, yes 3rd person is also true when set for vehicles only

#

0 false for 3rd person 1 and 2 true

karmic niche
#

I know that you already wrote that but wanted to make extra sure I understood that correctly. Thanks for the confirmation πŸ™‚

dawn palm
#

depbo.dll update:
+fixed OFP odol -> Arma3 mlod conversion. You can now revisit flashpoint models and put them in a3. (credit IceBreaker)
+fixed ../ includes (credit Spoffy & Veteran29)
+fixed makepbo hang (rare) with corrupted p3d (Credit(Eggbeast)
Enjoy

vague shard
#

does someone remember what to do again when dscreatekey/dssignfile only produces corrupted bikey/sign files - it was something corrupted with windows certification/authority

#

cant find any forum thread or FT post about it, but pretty sure a few people had the issue and found the solution

scenic canopy
vague shard
#

thanks. we found this but admin acc didnt help

#

from what i recall one had to do windows repair or install some package to replace the corrupted windows files

rancid relic
#

does anyone played with maxProcesses binarize param?

onyx helm
#

is there a way to setup pboproject to look for files via my game install, or do I always have to clone the game files to my P drive to binarize properly?

cinder meteor
tawny island
#

is there a way to setup pboproject to look for files via my game install, or do I always have to clone the game files to my P drive to binarize properly?
I always develop on my P drive, since it will ensure that PboProject (or any tool) will properly handle external files and paths inside your mod.
For testing I create the mod in a separate folder (in my case Arma 3\Mods) and use the local mod feature in the Launcher to load it.

onyx helm
#

right, I develop on my P drive, but I'm trying to see if I can avoid extracting all of the game data and superflously having 2x the space taken up by the same data

#

the issue I run into is pboproject throws missing file errors for anything not present in my p drive on packing

#

the DokanPbo git definitely looks interesting and will save that for later, but im unsure it will work for specifically what im trying to do

tawny island
#

Main issue is that no tool can look inside pbo's to check if files inside it exist. And for you own sanity it's good that it will check for them, so you should have a3 source files (and possibly other mods) on your P drive

onyx helm
#

yeah thats what I figured, but I reckoned I'd ask just in-case

tawny island
#

you could always use AddonBuilder in case you don't care about additional checking, since that does not care about missing files (or incorrect paths, configs, whatever).
But that's something I (and anyone on this Discord) strongly advise against.

neon flax
#

DokanPbo can be used as an alternative but it will be slower.

#

Dedicated 2tb ssd for arma stuff ftw

onyx helm
#

yeah i know well to steer clear of addonbreaker

#

just a matter of me wanting to have my cake and eat it too lol

warm tide
#

@onyx helm I'm of the same opinion, I'd rather not needlessly have GBs of duplicate data.

tawny island
#

It's indeed annoying, especially when you have/need multiple mods unpacked. But on the other hand; I also use it to quickly search in configs/code, especially when there's no public source available (eg. on GitHub).

warm tide
#

I just extract as necessary if there's something specific I want to look at, I understand the philosophy behind why mikero's tools are strict, but I think for checking files that aren't going to be included in the PBO it's reasonably to have the option to relax the rules a bit. Maybe a better compromise would be to have extractpbo generate a directory tree of all the files and use that as a reference, that way it knows the file exists without needlessly duplicating all that data.

cinder meteor
#

I heard people here to use this:
https://github.com/arma3/DokanPbo
Didn't try myself though
Doesn't it work btw? It's supposed to solve the problem of having twice the hard drive space.

scenic canopy
#

it's been used on build servers and for local development

dawn palm
#

if I can avoid extracting all of the game data and superflously having 2x the space taken up by the same data

if you're talking identical, assets. no matter which way you roll the dice, you MUST have arma3 binarised assets in the temp folder AND in the p:\drive proper. Without them, when making wrps, you will get no 2d icons on the map. Binarise, and pboPro only duplicate where they know it is necessary.

and the only way you're going to get them is to extract them, so that pboProject (in this case) can take care of them. If you would like to cherry pick this extraction to things you think you need, be prepared for unpleasant surpises in game.

it also turns out that to operate buldozer, you need the proxies of the p3d (if relevant) on the same drive.

#

again, cherry pick all you like, or, just get over it.

#

and finally, binarise, in general, needs to find THE binarised (or otherwise) rvmats in p:\proper along with whatever p3d you' are crunching. It cannot generate the correct rvmat inside the p3d if you don't supply it!

#

so again, try cherry picking a series of pbos from the game that you 'think' have the rvmats you need.

#

all this turmoil and pain from squabbling over the need for around 8gig of extracted data. And if space is that serious, you're in the wrong game.

warm tide
#

I'd debate that last point, 14.6Gb for entire addons folder, and even though I have 4TB drive every bit adds up, especially when the average AAA titles these days ranged from 20 - 60GB

dawn palm
#

extracted data for the game is around 8gig. You alone have filled in with another 6gig. A user map takes anywhere between 20 and 35 gig, so extracting game data is relatively insignificant. To complain that the game itself wants a modest chunk of that is being petty. And to need that 8gig for something else is pointless.

#

but yes, in your case right now, i see where you have doubled the disk requirements. This is like arguing to keep your project smaller. both are unrealistic expectations.

warm tide
#

a lot of assumptions in there, my project is a modest 3.23mb (weapon model), I'm not making nor intend to make maps

dawn palm
#

if you figure out a way of only extracting the rvmat textures, proxies and configs that you must extract. i'll implement it.

warm tide
#

re: the only 8gb, if "Arma 3\Addons" includes DLC (which I assume is your point), arma3p does not give any option to exclude that content, it just dumps the house + kitchen sink

warm tide
#

re: rvmat/proxies/configs, genuine question as I haven't seen it referenced in any guides or on forum, are you saying that for building custom models there are rvmats, proxies and configs that are required from the core files? for eg I know that proxies are referenced in the p3d, but if using your own rvmat or none at all, and what configs other than your own would be required?

warm tide
#

@dawn palm There's a minor typo in current iteration of arma3p btw

placing snake man's maplegend.png in toot of P: for your convenience

tooting all over my P: πŸ˜†

glossy inlet
#

"you MUST have arma3 binarised assets in the temp folder AND in the p:\drive proper."
Nah as said above, DokanPbo works, its not "proper" but works just fine
"and the only way you're going to get them is to extract them"
Nope, DokanPbo.

scenic canopy
#

Minified does not work for terrains as p3ds are also 0 byte files

#

Maybe I should make an option not to minify p3ds

#

The entire extracted arma 3 comes out as ~250 MB

glossy inlet
#

you probably also want textures, atleast lowest mip. I think binarize might open texture files to check transparency

scenic canopy
#

Shouldn’t be that hard to add lowest mip

#

There’s already a PAA lib in there so

dawn palm
#

@warm tide thanx 😍

dawn palm
#

+binarise requires access to the genuine rvmat in order to bake it into the p3d. Not sure how/if dokanpbo handles that but dummy files won't help here.
+For wrp, UN binarised roads are required in source, and Binarised must be available in P:\temp to get the respective shaders happening. (not 100% sure of this 2nd requirement)
+binarised p3d's must be available for binarise to create a wrp.
+all configs from everywhere that have land classes need to be available when using addon breaker for making maps, otherwise you'll get no animations (doors opening etc)

scenic canopy
#

dokanpbo has the actual rvmat

#

it's just a virtual filesystem on top of the pbos

#

same as if you would've extracted the files, without debinarization

#

the minified data extractor also saves the actual rvmat file from extraction

#

it's mostly textures, p3ds, sounds etc that are zeroed

#

it was made to build cba, ace, acex on public ci systems, I haven't tried much else than that yet

#

I should test it out with our SFP worlds and see what changes that are required to get it working there as well

#

but since p3ds are zeroed its not a good candidate to be used together with terrain builder πŸ˜›

#

dokanpbo is a lot better for local development environments

#

the minified stuff is mainly intended for public CI services where storage is limited and most files are not relevant

glossy inlet
#

without debinarization
Config debin is implemented, don't think rvmat is

scenic canopy
#

it's in an approved pr πŸ™‚

glossy inlet
#

Oh, good boy dedmen

scenic canopy
#

isn't the config.bin also exposed? think

glossy inlet
#

yes

scenic canopy
#

it just offers config.cpp as well via bohemia debin thingy

dawn palm
#

the bohemia 'debin thingy' does not convert from bin to cpp properly. it has no idea what to do or how to present enums embedded at end of the bin file. This in turn means destrype= destructengine ; fail.

#

since this app clearly wants to remain married to broken tools from bis, i have no further interest in it.

glossy inlet
#

who uses enums?

scenic canopy
#

adding other debin tools would just be another binary lookup and preference / selection on setup

#

adding support for say derapify would be very easy

#

or armake

#

the config.cpp is offered if the bohemia tool can be found via the registry and exists at the defined path, otherwise its omitted. config.bin is always there

#

and if you want to read it you can use derapify / eliteness on the virtual filesystem

glossy inlet
#

can easily just check and say "find the best tool available" at startup, and just use that

scenic canopy
#

yep, super easy

glossy inlet
#

We could probably just embed a dll that does it directly, instead of launching a process, would be much more efficient

dawn palm
#

who uses enums?
bis. in (nearly) every config of their pbos. They are the equivalent of a binarised #define

hollow plaza
#

I'm working on a simple mod to track stats (respawn, kills etc., more in the future). For this I use Intercept Database, which makes my work much easier. I wonder if there is any sense in queuing supported events (and sending them in fixed periods) and adding transactions (which results from the previous one).

#

The main reason behind queuing is to reduce network traffic.

glossy inlet
#

I guess you'd have to implement the queuing yourself in SQF.
Intercept DB doesn't do that.
And neither transactions, but don't transactions still send stuff to server right away, but just don't commit? thus wouldn't benefit network traffic wise?

hollow plaza
#

Hmm. Yep, you're right.

scenic canopy
#

delta events would probably be your biggest saviour in terms of network traffic

#

not sending static objects over and over again saves a lot of data in our AAR πŸ˜›

smoky halo
#

anyone knows a good admin tool apart from Infistar

karmic niche
#

The main reason behind queuing is to reduce network traffic.
You could also set up a database locally and save your data there. This will effectively decrease your network traffic to zero and you can replicate the database or make remote backups at regular intervals to get the data somewhere else.

scenic canopy
#

latency would be low but once you have a lot of data the indexing etc can take some time per insertion

karmic niche
#

Maybe just have an intermediary format that acts as a log of what happened (so that data is simply appended) - in its simplest form it can even be a text file [or some nosql db, dunno, just throwing ideas?] and then that file is processed by a script that inserts everything to a database after the end of the mission, all at once (not bound or related to Arma at all)

scenic canopy
#

and then something happens at the end of the mission and all is lost πŸ˜„

karmic niche
#

Personally, when we made our own pseudo-minimal-AAR, I stored all the data in-memory, inside our extension (python btw πŸ™ƒ ) and when the mission ended we dumped everything into a json file πŸ€·β€β™‚οΈ

scenic canopy
#

I've heard a lot of people complaining about that for OCAP at least

#

we collect a couple of seconds of data and then make a bulk insert with that

karmic niche
#

and then something happens at the end of the mission and all is lost
If you're appending to a text file or adding timestamped records to a nosql DB, no data will be lost πŸ˜›

scenic canopy
#

but ours also has an HTTP layer between the extension and the database for scalability and authentication

#

no, but your "send at end of mission" might not trigger depending on how its implemented πŸ™‚

#

could be solved by having a check at next "startup" if any files are leftover since past session

#

or done outside of the game engine

karmic niche
#

Yeah, true. Depends on how important that data is, to you. For us, it was just a gimmick so we didn't really care.

Also, depending on the implementation, you can make it so that that dangling data is simply appended to, at the start of the following mission and is dumped when that other mission will end, along with the new data

scenic canopy
#

yep. probably easier to have one file per mission I would guess though

#

easier to debug/test at least πŸ˜›

#

and if one file suddenly got corrupt it wouldn't impact other missions

dawn palm
#

Just a heads up here folks which I apologise in advance for being off topic, but urgent. A nasty piece of ransomware is happening on Steam at moment. Pretending to be one of your steam friends. They/it beg you to give them an uptick vote for a game they're playing called Shonk and give you a url to click on. If you do so, it immediately starts locking down your pc with a message about "preventing a Ddos attack, be patient, and wait". I've had two 'friends' so far contacting me with identical message and identical crippling url.

karmic niche
#

If you do so, it immediately starts locking down your pc
They probably forgot to tell you about the exe they executed in the meantime because if clicking on a link would "immediately start" something on your PC, that would mean a nasty 0-day for your browser was discovered πŸ™‚

dawn palm
#

pboProject 2.85: update:

  • added +/-H (do/don't convert png) to cmdline (ignored if not dayz engine)
    when set, automatically ignores 'png' if specified in the exclude list (and accounts for multiple, inadvertent 'png' spec)
    +added +/-G convert wav/wss to ogg
    +fixed potential error where the -B exclude list could be empty
  • now checks cmdline for a 'proper' source including drivespec
  • does an early check if the stale pbo can be deleted (credit TH)
  • replaced wav files with mp3 in installer. much smaller package as a result
warm tide
#

I have to say that hallelujah made me jump the first time as I was wearing headphones.

agile thistle
#

hallelujah has become my favorite song x)

karmic niche
#

So maybe I have to take back what i said and there actually is a possibility of an unknown RCE in steam browser, after all? πŸ€” @dawn palm
(not directly caused by the article in the link above but got me thinking)

glossy inlet
#

A guy just refused to join our unit because we use Teamspeak and they had an RCE years ago.
Guess he has to stop playing Arma and using Discord too

karmic niche
#

Tell him to throw his phone away, too

#

Actually... was he typing that from a Windows machine?!? 😁

dawn palm
#

@karmic niche , you've lost me re RCE, where am i /steam involved?

#

oh, you mean the ransomware?

karmic niche
#

I've previously stated my doubts about that clicking on a link would "immediately start" something on your PC

#

Yeah

dawn palm
#

ok

#

well, my use of 'immediately' means you click on a link, you get a new web-page, and your disk starts hammering it's guts out.

#

(this bit of ransome ware seems to have found an exploit via the sound drivers)

dawn palm
#

depbo update:
+fixed installer to work 'properly' when adding to the path environ string (Credit @grand kelp )
+added message box to installer IF registry changes were necessary and needing a reboot.
+'Missing RequiredAddons[]=' now says which class extern; causes this. (Credit @quick fog )
+added silent cmdline install for headless servers. the confusing message box has gone (credit @scenic canopy )

quick fog
#

thank you Mike!

#

saved me from auditing 15,000 lines of changed code.

vague shard
#

did anyone try to by chance if there is any character type (and amount) limit for bikey/bisign names? or full unicode supported?

dawn palm
#

character limit should be around 32k characters for most string handlers written in past decade. Windows uses Unicode 'wide_chars' for it's filenames. Thus making all 'filenames' full unicode (not quite true, but true enough). However, there is a high probability that the dsTools were written for Ansi character sets and that being the case, support for 'full unicode' is impossible. Ansi can only support 'local codepage' not, Unicode) You would be able to spot this by comparing the filename in windows explorer versus using a 'dir' command in the dos console (effectively, Ansi coded tools only 'see' the same as dos does). If you create a cyrillic filename via the explorer. you will see the difference immediately.

glossy inlet
#

windows path limit is 260, for win7.
bisign names might be handled in binary, meaning utf8 support yes. But thats for the filename inside the bisign/bikey files. Not for the on-disk filename, especially on windows with utf16

dawn palm
#

Windows does not support utf8 encoded filenames. By default, they are misinterpreted as 'local codepage' which for most of us means 'WinAnsi' cp1252

glossy inlet
#

As I said

Not for the on-disk filename, especially on windows with utf16

#

TLDR; noone knows

dawn palm
#

well knowing Q, and the way he asks questions, he's already spotted a problem with umlats in his filename.

#

and my answers presume the dstools are using the standard io functions rather than the wide char versions. sbcs for dos.exes was fairly normal for the time of it's release.

vague shard
#

asking as Chinese servers transmit largely 0 mods via Steam protocol as it seems (only the yellow are vanilla servers)

#

also couldnt find any bikeys or mods with non ansi characters (so far)

#

could be an issue on our end. looking for more info/insight atm until i can dig deeper on our end

karmic niche
#

as Chinese servers transmit largely 0 mods via Steam protocol as it seems
We could try simply connecting to them and see what happens :)

But I agree that 0 mods and 31 signatures looks suspicious πŸ€”

karmic niche
#

Does anyone know how it is possible that a server reports this as a signature:
c:\users\owner\desktop\@extrazeuscompositions\addons\zeuscompositions.pbo

Yes, the full path, instead of something like cba_2.4.0.160530-5d662876

#

I don't even know why there is a ".pbo" suffix here (and no, it's not my server, I'm just crawling the internet πŸ™‚ )

glossy inlet
#

mod on desktop meowsweats

karmic niche
#

Could have been worse. Could have been %appdata%\Local\Temp 😁

elfin oxide
#

Could have been worse. Could have been \\NETWORK-DRIVE\Shared-Mods

glossy inlet
#

I actually do that at home meowtrash

karmic niche
#

But still... how is it that there is a full path instead of the file name? Hmm... maybe a linux server with a filename named as above? (with the backslashes) πŸ€”

glossy inlet
#

You have Linux/windows flag in query don't you?

karmic niche
#

Yeah, just checked. Both the platform and environment flags are l so it looks like a native linux server

#

So either there is such a strange file in the keys directory or maybe a symlink/hardlink was wrongly resolved by the application πŸ€”

glossy inlet
#

Wow weird

#

Why would you symlink to a windows path on Linux

karmic niche
#

Hey, I don't know if that's the case. It's just a guess, you know

#

Why would you want to put pbo files in the keys directory is something I'd rather want to know πŸ˜‰

wraith fractal
#

Does anyone happen to have EMFtoPNG.exe lying around collecting dust? I would like to provide it with a safe and caring home.

glossy inlet
#

EMF, oof. SVG export is where its at

elfin oxide
#

Not a virusℒ️

wraith fractal
#

Thank you, kind sir.

neon flax
#

bit offtopic for this channel but as mikero posted about the RCE in this one too...
It seems there was indeed some vulnerability in steam:

The Steam Client Beta has been updated with the following changes:
General
Fixed remote code exploit in Chromium Embedded Framework freetype library (CVE-2020-15999)
nocturne basin
#

To Note
Will not be the last one thanks to Browser based technology

bitter gale
#

The actual bug was in freetype2, which is used in way more than just chromium, so it's not really just about being browser based.

wanton fable
#

from one moment to the next i suddenly cant compile with pboproject anymore

#

i dont understand what's going on

#

i havent changed anything, but now i cant even pack simple folders that have nothing fancy inside

#

error log only says Rapify error

#

i've already reinstalled it

#

how can this happen out of the blue

scenic canopy
#

check the log files

wanton fable
#

log file says rapify error and nothing else

#

it doesnt even copy files into temp

#

it has problems with rvmats, apparently

#

that's where it stops

#

yeah, every folder with an rvmat somewhere kills it

#

now the question is ... why ... it works for months and now it flips me off

#

google is as useless as ever

#

deleted rapify and makepbo, reinstalled an older version, ran updater, re-installed latest version .... now it works again

#

i swear arma will kill me some day

dawn palm
#

well, with your well-described symptoms above, the only logical explanation I can come up with is one of the exes was hit by a virus (on your pc). It could well be some other reason, but buggered if I can think of anything else that would make sense. I always have my antenna on hi alert when people have issues with my tools, but can't think of anything the tools could do to behave as stated. And, yes, am aware that you weren't blaming them, but this one goes on my watch list in case I have done something weally stoopid.

onyx helm
#

@dawn palm any idea how I could fix a "depbo corrupted sha key", trying to run arma3p and getting that error at armor_f_epb.pbo

#

im going to try to verify game files

onyx helm
#

okay confirmed some corrupted game pbo

#

verifying game cache resolved issue

wanton fable
#

well, with your well-described symptoms above, the only logical explanation I can come up with is one of the exes was hit by a virus (on your pc). It could well be some other reason, but buggered if I can think of anything else that would make sense. I always have my antenna on hi alert when people have issues with my tools, but can't think of anything the tools could do to behave as stated. And, yes, am aware that you weren't blaming them, but this one goes on my watch list in case I have done something weally stoopid.
@dawn palm it also had problems with .hpp files being included in my configs. after adding them to the ignore list, it continued compiling, but then it stopped on rvmats, which is why i believed it had something to do with rapify (not just because the log said rapify error). when only deleting & reinstalling rapify, it didn't change a thing, though. at the end of the day i'm not sure if deleting & reinstalling makepbo helped the cause or if just win10 locked something up for a while and then decided it was a good moment to stop acting up.

#

i'm not sure if there was anything weird i did before this happened. however, i was experimenting with macros, which gave me an error on compiling as well (which was weird and annoying, because the macro had nothing fancy in it) .... who knows

tiny path
#

@dawn palm was -X removed in your tools or is there another way to use that feature? (ignoring missing files when binarizing)

#

I reverted to a backup that I saved before updating (haven't in awhile) and have the feature back for now.. but if there is a way with the most up to date pboProject please let me know... probably over 10k lines of missing files that were previously ignored

dawn palm
#

they aren't ignored now. With that amount of 'missing' files: it's a statistical guarantee that some of them are genuine. If you haven't used arma3p to extract your game data, you're not being serious. My tools are tools, not toys.

tiny path
#

@dawn palm I have used arma3p and your tools for a long time, I appreciate the work you do. I never bothered to update and constantly close the update reminder because it simply worked with my setup. I did try to update just the other day and ran into that issue.. so I will have to keep on the old version. Here is an example of a recent build with just over 5k missing image files: https://sqfbin.com/azarujedirozaduneqit The mod is designed to be run with any supported mods enabled as it simply uses their file path. Having to extract all those mods would be a long process which was why I was grateful for that feature, I understand for the average user it makes zero sense πŸ˜› thanks

sly skiff
#

you need to write some batch file that creates dummy files for that list

tiny path
#

My pdrive is already a mess πŸ˜› maybe sometime will get around to it

sly skiff
#

πŸ™ˆ messy setup makes messy mods

glossy inlet
#

Oooor.. you just use DokanPbo and simply load all these mods πŸ™ƒ

subtle smelt
#

Anybody have any idea why arma would break windows symlinks for stringtable.xml but not for .sqf files? As in the SQF files update properly when I change anything in one of them but the .xml refuses to update

cinder meteor
#

I think you need to restart arma for stringtable updates to take effect

subtle smelt
#

I'm not even talking about taking effect in arma, it's that arma seems to actually break the symlink. When I update the main file the other files in the other mission folders don't update

rancid relic
#

Are you sure your setup is correct? I'm using svn repo symlinked to Documents\Arma 3\missions and stringtables are working fine there

subtle smelt
#

Well I made a little util in java to do it automatically for me and it does this: java for (File s : files) { String fileType = s.isDirectory() ? "/J" : "/H"; EXECUTE("mklink " + fileType + " \"" +targetFolder.toAbsolutePath() + File.separator + s.getName() + "\" \"" + s.getAbsolutePath() + "\""); }

#

With execute being java private static void EXECUTE(String arg) throws IOException { System.out.println("Running: " + arg); ProcessBuilder builder = new ProcessBuilder("cmd.exe", "/c", arg); builder.redirectErrorStream(true); Process p = builder.start(); BufferedReader r = new BufferedReader(new InputStreamReader(p.getInputStream())); String line = ""; do { System.out.println(line); line = r.readLine(); } while (line != null); }

#

And it seems to work just fine for everything else

rancid relic
#

so hard links & junctions are not working for you?

subtle smelt
#

not for the stringtable, for everything else they work fine

cinder meteor
#

I've just been working with stringtable for a mission and it seems like when a value is changed, it needs a game restart to take effect. But when a new value is added, it takes doesn't need a game restart. Isn't it like this?

subtle smelt
rancid relic
#

did you checked if stringtable is locked by a3 process?

subtle smelt
#

Does arma lock the stringtable while running but not the SQF files? Because that would explain

rancid relic
#

sqf files are for sure not locked - not sure about xml but that would be one of the explanations that I could see

cinder meteor
#

did you checked if stringtable is locked by a3 process?
I've checked that values were in fact changed in the file

#

But I've found some errors in the xml file actually, maybe it would explain it

lapis salmon
orchid yew
#

in my experience nothing ever happens unless you message dwarden or it gets autowhitelisted from being frequently used (on the rare occasion)

lapis salmon
#

Oh okay, Thank you for the information! πŸ™‚

cerulean sierra
#

@dawn palm Hey mate, I seem to be having some trouble with obfuscating my pbos with pboproject v2.86.7.85
Some of my textures aren't being added to the thing.obf file mainly textures with an alpha channel.
Do you have any idea why this could be and how I could go about fixing this problem?

dawn palm
#

the textures have to be referenced by the config/p3d/rvmat to take effect. If not, they remain plain jane for sqxShit. there have been no changes to obfuscation for several updates

cerulean sierra
#

@dawn palm Thanks for the reply mate, do the textures have to have reference inside the pbo that I'm pack or can it be referenced from a different pbo?

dawn palm
#

obvious or not, it is only the pbo they are in that can make the decision to scramble them. It is also 'normal' to intentionally leave some textures to be reman plain jane. Author choice. Without this 'mechanism' you would not be able to account for some sqX references from elsewhere because i don't inspect it's awfulness in any way.

#

correction there. any sqX statements in a config, whether exec eval or init= fields (eg) are fully analyzed. But for sqx in general i have better things to do with my time.

wanton fable
#

looks like i have the same rapify error again as last time

#

once again, no idea what triggered it

#

restarted computer, just to make sure - still same issue

#

@dawn palm any idea what i can check out?

#

ok, even deinstalling and reinstalling makepbo and rapify doesn't help this time

#

clearing temp folders doesnt help either

wanton fable
#

yeh, i have no idea how to fix this

#

environment variable is still ok as well

wanton fable
#

ok, deinstalled pboProject completely and reinstalled ... now it works again. so whatever it is that i am doing, it breaks something.

dawn palm
#

ouch!

elder quartz
#

Can someone point me in the direction of a tutorial for setting up and using Arma tools. YouTube and Google have failed me. I am a complete noob so please be gentle.

tawny island
#

Which tools?
Arma Tools can be installed from Steam (shouldn't require any tutorial)
Mikero's Tools can be found easily on Google and then installed by running the installers.
Can't think of any other "Arma tools", unless you want something non-Arma specific.

sly skiff
#

@elder quartz PMCwiki has simple tools setup guides

elder quartz
#

@elder quartz PMCwiki has simple tools setup guides
@sly skiff Thanks, much appreciated

dawn palm
dawn palm
#

pboProject 2.87 update:
+fixed cmdline +key= (credit TeTet)

  • checked for model.cfg sectionsInherit= referring to it's own class causing permanent binarise loop (credit Eggbeast)
quick fog
#

Yay i get the numpty prize lol

glossy inlet
#

causing permanent binarise loop
Fixed in next binarize update, but it will throw an error and fail packing.

opaque pendant
#

So i read that someone was making a tool to bypass model.cfg?

sly skiff
#

what do you mean @opaque pendant

unborn nimbus
#

Hello, I have a question regarding Named Pipe handling by dedicated server. I searched this Discord before asking but only mentions were regarding client usage (or maybe I misunderstood something).

Wiki https://community.bistudio.com/wiki/Arma_3_Named_Pipe says:

The pipe is created only if the command line contains -command= param which defines the name for the pipe. Works for client and hosting client.
I wanted to check if it's really true and I created a Named Pipe and it did connect. The only thing commands were not read (or at least shutdown which I tried) so nothing to celebrate. Is this intended behavior?

I tried with regular client and the same code did work and client was shut down.

nocturne basin
#

??

#

What in the biki and where

unborn nimbus
#

Edited original message.

glossy inlet
#

well wiki says it only works on client, not on server

#

so I assume it doesn't work on server

unborn nimbus
#

Ok, just wanted to make sure. Sorry for bothering you, have a good night.

glossy inlet
#

Well I didn't check. I looked why shutdown didn't work because I didn't catch your thing about dedicated server

unborn nimbus
#

Yes, my bad, should have mentioned dedicated once more, not only on the beginning of the post.

dawn palm
#

So i read that someone was making a tool to bypass model.cfg?
Hard to understand the relevance of that.
a NameOfP3d.cfg, and/or a (series of) model.cfgs are baked into any p3d that needs it. What on earth is there to 'bypass' ?

#

It is true that (for the most part) dayz uses .anm & script and ignores the cfgModels class, but a cfg skeleton is still required.

sly skiff
#

there are tools for generating model.cfg animation classes from Blender/3DsMax animations

#

but other than that I cant think of anything related to model.cfg being discussed

dawn palm
#

ahhhh thanx.

sly skiff
#

bypass manually writing them perhaps

#

for simple things like turrets and wheels and such manual way is the king though

#

since they have specific requirements

#

unless something veeery fancy is being made πŸ˜„

dawn palm
#

and.... not to mention, the less popular, but very effective use of parent\model\cfgs which you only ever write ONCE. (the long, prone-to-error, ofp2_manskeleton being one of them)

blazing needle
#

does battleye.exe have any startup parameters? I can't make sense out of ole1986's startup parameters:

M:\SteamLibraryM\steamapps\common\Arma 3\steamapps\common\Arma 3\arma3battleye.exe 2 1 0 -exe arma3_x64.exe -mod=p:\Terra-s-Editing-Extensions\@Terra's Editing Extensions;!Workshop/@CBA_A3 -nosplash -world empty -skipIntro
karmic niche
#

I can't for the life of me remember what the 2 1 0 were about but with the -exe you (obviously) selected the arma executable to run and everything else was AFAIR passed to that executable

blazing needle
#

thought so but i am interested in the 2 1 0 :D

#

probably something to do with access levels as it seems that the extension was build for developing arma extensions

karmic niche
#

I tried looking at the source code for my launcher but all I could find was that it was 0 1 previously 😁 (around 2017 :P)
Looks like I was just copying what the Arma launcher was using Β―_(ツ)_/Β―

scenic canopy
#

2 is update (battleye) before launch I think think

karmic niche
#

That's cool and all, but they don't explain what the 1 and 0 mean 😁
Seriously though, thanks for the link πŸ˜„

plush shard
karmic niche
#

Eh, I should have expected that :)

Btw. interesting error in one of these posts on the forum:

F:\Games\Steam\SteamApps\common\Arma 3>arma3battleye.exe 1
:)IMPORTANT: Please launch game via Steam or command line "arma3battleye.exe 0 1 [parameters]" from now on.
Uhh... okay πŸ˜„

cinder meteor
#

2 1 0 is a countdown (all right sorry for the stupid joke)

karmic niche
#

Obviously, duh! πŸ˜„

#

2, 1, 0, Arma launch!

cinder meteor
#

πŸš€

karmic niche
#

@scenic canopy thank you!

So basically, pad every packet to 1200 bytes with nulls, right?

fallen stone
#

If by null you mean zero, yeah

tribal mist
#

interesting

#

Didn't even know this forum existed, seeing the changes on there sure beats "why is this broken now" lol

karmic niche
#

After some time has passed (and we have posted several warnings on this mailing list)
Is he referring to that forum as a mailing list or is there a mailing list that I should be looking for, right now? πŸ€”

dawn palm
#

xmas has come early:
FREE TOOLS update.
The free tools have been updated to the latest snapshot of the subscriber tools. More than 100 updates have occurred since the last tool release. Far too many to list here. (The changes are available in the documentation)
Note that obfuscation is always disabled for free versions, and there are at least a further dozen or so other tools that subscribers benefit from.
Enjoy

pliant lynx
blazing needle
#

@dawn palm i am not sure if this intended behaviour but since the latest update this macro:

#define INIT_DISPLAY(NAME,PATH) \
    scriptName = ##NAME##;\
    scriptPath = ##PATH##;\
    onLoad = ["onLoad",_this,#NAME,'##PATH##'] call INIT_DISPLAY_FUNCTION; \
    onUnload = ["onUnload",_this,#NAME,'##PATH##'] call INIT_DISPLAY_FUNCTION;
``` with call
```cpp
INIT_DISPLAY(DisplayName,ScriptPath)
``` gets translated to

onLoad = "[""onLoad"",_this,""DisplayName,'ScriptPath'] call (uinamespace getvariable 'BIS_fnc_initDisplay')""";

glossy inlet
#

##PATH##
##NAME## the ##'s aren't needed

blazing needle
#

not my macro it's from \a3\ui_f\hpp\defineCommon.inc blobdoggoshruggoogly

dawn palm
#

@blazing needle fixing, and bis or no bis, dedmen is right (they aren't required in the '##PATH##' s either). Bis will also learn, eventually, to not put trailing semis at end of a macro.

dawn palm
#

small updates for subscriber AND free tools
+fixed a few cosmetic errors in eliteness (see documentation)
+fixed a potential error when saving text with utf8 boms
+rapify: fixed wrong file name when #include fails
+fixed the # (stringify) for defines to work on partial line not just full line

#

no further updates will occur for the free tools until a showstopper happens.

dawn palm
#

@surreal wolf update for depbo:
linux tools now handle unicode text (and their boms when present) which are four byte utf32LE or BE

#

mac os utf16BE remains to be implemented

#

the above also 'happens' when using penguin text in windoze

slate plaza
#

Is there a way to extract the road network from a .wrp file, I've been trying to use Steamroller but problem is I'm doing it on Dayz ChernarusPlus and steamroller can't read it's .p3d files because it's in ODOL 53

My goal is to create a route-planner as my final uni project. I've also asked on the Dayz server but I feel I could get more help here

slate plaza
elfin oxide
#

@slate plaza You are on the wrong discord for DayZ things. Here you come for Arma 3 questions. Arma 3 offers path-finding functionality via SQF commands.
DayZ also offers a pathfinding api for agent naviation. Not strickly just roads though ...

I would not be aware of any legal source, where you would find the debinarized models for bridges and especially sidewalks. These are (to my knowledge) not usually part of the map making data that is published by Sumrak.

Allow me the comment, that if you just plan on doing some basic road path finding - that that will not really be sufficient as a final uni project - at least not in any university i ever visited. It's a matter of finding a world coord of each road segement, spending 2 hours on reading the A* wikipedia article and porting the pseudo code and you are done with it.

slate plaza
#

I know that it wouldn't be sufficient and I talked this with my professor I'm not only doing a pathfinder but also a webapp and mobile companion, I also have to write a thesis. The understanding was that I would have to use a fictional map and "you'll have to find a way to accurately weight the edges taking in consideration distance, slope and curvature of the road"

On the other point, I'm sorry this is not the best place to ask about this and I apologize

#

I also misphrased it, this is my final year uni project. I'm on my first year

elfin oxide
#

Ahh ok πŸ™‚ Well best of luck with your project. Let us in the dayz community know when you are done with it and got something working πŸ˜‰

slate plaza
#

Thank you and I will post my work once I've figured it out

slate plaza
#

I managed to do get the shapefile!

blazing needle
#

what would be the best place to start looking into automating addon publishing via github? including building and publishing to the workshop

nocturne basin
neon flax
#

oof I need to update the example it's unsafe and wont work after recent GH changes.

neon flax
#

and add steam guard support meowtrash

nocturne basin
#

Hah
Not even noticed it was you πŸ˜‚πŸ˜‚

dawn palm
#

why use chernarus+ ? use a well know arma2 map (which works in arma3 just the same). all assets used by these maps have been published UNbinarised.

#

and of course with depew that you're using it will happily convert the wrp back to pew (or unbinarised) so why on earth travel up the wrong dark tunnel?

dawn palm
#

depew updated.
arma3p updated

blazing needle
#

i had a question about printing the rpt to the vscode output window a while ago and finally got around to hack something together. here is a vscode task that will get the latest rpt and watch it in the task window:

        {
            "label": "RPT Watcher",
            "type": "shell",
            "command": "Get-ChildItem -Path $env:USERPROFILE\\AppData\\Local\\Arma` 3 -Filter *.rpt | Sort-Object LastAccessTime -Descending | Select-Object -First 1 | Get-Content -Tail 1 -Wait",
            "problemMatcher": [],
        }
``` any comments?
vague shard
#

wont catch -profiles relocation of the rpt

#

does it support regex filtering?

blazing needle
#

nope just printing the rpt to a console

vague shard
#

with "it" i meant vscode (natively/some plugin/etc)

blazing needle
#

the task window does not have filtering by default

vague shard
#

imo without filtering or at least highlighting based on regex the rpt spam is just too unbearable unless you do very isolated sqf coding

blazing needle
#

true i just wanted to have a way to see the rpt in the same window that i code in

#

for more indepth things you'd probably need to create an extension which i cant since i dont know typescript (though i started looking into it a little bit thonk )

vague shard
#
#

these looks suitable. would just need to apply on .rpt by default as well with a predefined regex set

blazing needle
#

not sure if that is going in the direction that i was aiming for

#

but i suppose you can open the rpt via powershell in vscode with Start-Process instead of Get-Content

neon flax
#

There's open last rpt extension

#

It just opens it in editor tho

vague shard
#

@blazing needle how do you deal with the unrelated rpt spam? using search all the time or clearing rpt each time you want to check something?

blazing needle
#

i dont. usually my rpt is clean enough to not need it

vague shard
#

VR only scripting/UI work for the most part?

blazing needle
#

basically yes

dawn palm
#

how do you deal with the unrelated rpt spam?
my method is to simply search for mytag_ when found, it's not necessarily THE error listed, but has caused it.

#

depbo64.dll update version 7.91
+general text: improved utf8 detection. Ascii (not ansi) and utf8 are effectively the same thing, engine wise, but unless told otherwise, conversion to unicode for text display assumes local codepage. Cyrillic is now displayed properly, rather than interesting blobs and blatters.

rapify: +errors out if a drive:\spec is stated in a file\reference
+errors out if a \root spec is stated for an \rvmat\file (Credit @viscid verge / @quick fog )
+removed rebuild units equal as a lag muncher if only linting or if not a config.cpp
+fixed lesser used forms of "" and " in text variables and array arguments (credit @glossy inlet)
+added warning only for any (used) #define that is not FULL_UPPER_CASE
+changed trailing ; in macro bodies to warning only (Credit @viscid verge)
enjoy

quick fog
#

Wow you fixed it? Thats awesome

vague shard
#
nocturne basin
#

I like the idea of having a separate api much more then having a DB extension

neon flax
#

Yeah, but I think I would prefer to have the request details stuff in extension and kiss on sqf side.

nocturne basin
gritty radish
#

that is exactly what we are doing for our stats tracking πŸ˜„
But i am really looking into using grpc

nocturne basin
#

I personally currently Explore how I could use rust to create such an api

#

Tho... Barely have time

#

Sooo... It currently is just in a "it kinda works" state πŸ˜‚

cobalt stag
#

@dawn palm could be somehow skipped a Rapify error #define altered without an #undef?

There just a colour re-defining and before it was able to skip with -N parameter...

dawn palm
#
#undef WHATEVER
#endif
#define WHATEVER "pigs can fly"```
#

@void perch checking this....

dawn palm
#

D:\SteamLibrary\steamapps\common\Arma 3\Addons\sounds_f_weapons.pbo
I have no such file in my addons folder despite an update. what's going on here folks?

wind elm
#

same, no such file here.

dawn palm
#

@void perch ?? what's going on?

#

(I wonder if bis released it to standard and NOT devel)

#

it's not the first time they would have done this, and if true, what's the point of bothering with devel at all?

wind elm
#

also:
you cannot extract to an existing folder <-- meh, that was just recently added, right?

dawn palm
#

at least 7 updates ago (for subscribers)

#

it's new for the free tools

wind elm
#

Aye. Don't rly like it tho

dawn palm
#

and is important. Nothing is more demoralising than extracting a pbo into your source folder

wind elm
#

meh

dawn palm
#

makepbo fred
extractpbo fred p:

BANG!

wind elm
#

possible to make it at least a question?

#

incl. showing the path

dawn palm
#

and then I get blamed when they answer yes?

wind elm
#

THEN it's their fault

#

(i mean, it's theirs anyway, when they unpack and don't pay attention before)

#

Just ran into that stuff yesterday, testing some macros and always had to delete the unpacked folder Manually

#

after the 10th time, it became pretty annoying

dawn palm
#

hmmmmm

#

yep

wind elm
cobalt stag
hard locust
#

@dawn palm That's my wife's pc I was writing from, I just checked mine and don't have sounds_f_weapons.pbo either πŸ€”
I'll uninstall and re download it... had bad wifi on that pc for awhile, so maybe something got broke somewhere along the lines

scenic canopy
dawn palm
#

important enhancements to pboProject
+orphan files in the temp folder (one's that no longer exist in the source folder) are removed. This reduces the need to ever use 'full build', and prevents unused garbage accumulating in the pbo.
+'missing paa files' in another pbo folder no longer happens if the folder is yet to be crunched and has the tga/png equivalent.

tiny path
#

anyone know the error in pboproject/binarize:

GGATGLF

DePax: Unknown Tagg
makepbo failed: texheaders.bin failed

packing.log:


creating a texheaders.bin
a2_hmmwv\data\hmmwv_gpk_tower_1_co.paa:DePax: Unknown Tagg

Texerr: residual bytes at eof
detex: Texerr: residual bytes at eof

texheaders.bin failed```

Separately it lists it without the parent folder? a2_hmmwv is inside another folder with a2 ported vehicles but it doesn't mention it in the path.. If anyone has any ideas on where to look I would appreciate it! Thanks

>side note
It builds just fine as full build and noisy output with older mikeros tools but not updated. I get that error + corrupt PBO with new version.

Everything is up to date according to the updater so not sure what could be the problem or where I am going wrong
dawn palm
#

hmmwv_gpk_tower_1_co.paa is corrupt

#

GGATGLF should gave been GGATGALF

fiery thunder
#

if I had a question/bug about MakePbo is this the place to ask it?

vague shard
#

@tiny path try to resave the image with BI tools

tiny path
#

I didn’t even realize it was pointing to the image properties, thanks @vague shard @dawn palm will try that!

jolly cape
#

Is there any .rpt highlighter plugin for Sublime Text 3?

dawn palm
#

@fiery thunder . Yes

tiny path
#

Thanks both - resaving with tools worked

fiery thunder
#

I've run into a problem with MakePbo and Compression (-Z) of PAAs
It seems to depend on the texture, but I think it's limited to PAAs that are DXT1 - sometimes the texture will fail to render in Arma 3 and ALSO prevent the entire interface it's in from showing as well
I have an overlay with a PAA in the centre (as a fake cursor), when the PBO is -Z=all the overlay is broken and doesn't render, and when the PBO is -Z="ogg,paa" it shows up fine
Both PBOs extract via ExtractPBO to roughly the same size (I have some additional SQF obfuscation, but all the PAAs are identical)
My MakePbo version is: makepbo Version 2.04, Dll 7.46
I'd like to keep -Z=all, as it saves me about 1MB, but I can't do that because of this texture/PBO bug

dawn palm
#

paas cannot be compressed due to the use of a texheaders.bin which looks at the literal offset, not the compressed one, when accessing the pbo. I am fairly sure that this is stated in the documentation along with (some) restrictions for sqf files.

fiery thunder
#

something must be being compressed, I guess
-Z=all -> 2.53 MB (2,655,606 bytes)
-Z="*.paa" -> 3.69 MB (3,873,498 bytes)

#

they both extract to the same bytesize, so I'm assuming that the game is having trouble with whatever is happening in the -Z=all PBO

dawn palm
#

there is no 'all' file extension. folder, or name, so everything will be compressed.

#

i fail to see what your problem is, with the game having trouble.

#

i also can't fathom why your are surprised that on extraction the bytesize is identical.

fiery thunder
#

i'm not surprised, I'm just pointing it out

#

anyway, if the behaviour is if you put 'all' that it will compress things, regardless of whether it should, then that's fine - if unexpected

#

since .ogg files will reject that compression - if textures shouldn't be compressed, I'm surprised they don't also reject it

#

if the advice is to not compress paas, that's also fine, it's just that the behaviour is undefined since the paas will sometimes work, and sometimes not - and I was just looking for clarifcation on why that was (and if there was anything to do to fix it)

glossy inlet
#

paa's are already mostly compressed

#

compressing twice won't do much

fiery thunder
#

yeah I thought that'd be the case too - but I'm still saving 1MB somewhere by doing it

#

that's really the driving motive here, keeping that saving, if I can

#

that .ogg compression rejection - I think I'm wrong about that being an outright choice the tool makes, it's probably just a size comparison - but if that's true it means it's definitely finding improvement in compressing the paas

#

I think we bzip our DXTs at work and get decent compression out of it

dawn palm
#

there are around 8 different encoding techniques for paa and pac files. DXT is the most frequent one encountered.

each of the 5 dxt formats simply extend the amount of information available in the alpha channel. Bis never used Dxt2 or 4, and rarely dxt3. It is either cheap alpha dxt1, or full blown alpha dxt5.

originally ALL encoding schemes were unconditionally compressed. Nowadays only the first two of the 8 layers of mipmaps are optionally compressed. It is for this reason that if another layer of compression were possible (and until arrowhead-arma2 it was) you would reduce the pbo size by about 20%

paa/pac compression uses lzo, pbo compression uses lzss

and yes, you are quite correct that my code will only compress a file if the result is smaller.

#

The reason why my tools do not reject paa/pac compression out of hand is the symptoms you accurately describe are considered a bug which might get fixed at some future date (pigs too, can fly). But, as you also discovered: thru judicious use, some paa is still pbo compressible.

fiery thunder
#

cheers for the info, much appreciated - it sounds like for now the best route is to disable paa compression and cross my fingers for support later in the future
it does mostly work already, just with an odd edgecase that Arma doesn't like it
it'd be nice to see the compression savings in future but in my case an extra 1MB per PBO won't be the end of the world

scenic canopy
#

when we did some tests with compressed PBOs in the past it caused issues with delta upgrades for arma3sync, steam workshop etc

glossy inlet
#

Doesn't cause issues with my delta patching hyped

fiery thunder
#

yeah our game has compressed archives for game content, which update every week, and it's a real hassle with steam delta patching

glossy inlet
#

with pbo its different though, as each file inside the pbo is compressed individually. So it won't cause much delta patching pain as it can still delta per file

fiery thunder
#

our archives sound similar, they're anywhere from a dozen to 10k individually compressed files (in differing compression formats)

#

if any one of the files in the middle changes we opt to either overwrite in place (if it's smaller or the same size) or erase it and append it to the end - so we don't mess with the byte offset of all the other files

#

apparently steams delta checking thing had trouble with it and we're looking to change how we're managing big archives

scenic canopy
#

usually works fine, same with zsync that arma3sync uses with HTTP

karmic niche
dawn palm
#

pboProject updated to:
+accept Appid on the command line
+Allow shrinkage of p3ds for servers (dayz only)
+ExtractPbo fixed bug with ofp rap files (yes folks, flashpoint is still being played)
+Small improvements to depbo64.dll in errror messages to make them clearer.

tribal portal
#

is there any "clear" documentation for toolmaking

scenic canopy
#

depends on what kind of tool you're making

dusty walrus
#

@dawn palm I once tried it through the shop email, but if it is ok, will post it here:
The Readme for MakePbo inside the ...\docs\PboProject\ folder ( MakePbo.ReadMe.htm ) is actually an shortcut with an path that I guess is on you pc or so and not and html doc. path: *:\*\*******\**\*******\DePboTools\MakePbo\Package.
Does not seem that important or urgent but wanted to let you know.

dawn palm
#

😍

dawn palm
#

CRITICAL ERROR in pboProject which will erase your source\ folder if building maps.
update to version 2.95 asap

versions affected are 2.90 -> 2.93

young plaza
#

thats scary

nocturne basin
karmic niche
#

I could correct small typos but I doubt you're actually interested in these

nocturne basin
#

i appreciate any help i get πŸ˜„

orchid yew
late hazel
#

Hey guys, does arma 3 supports netcore class libraries (for extension making) ?

gritty radish
#

Yes

late hazel
#

πŸ‘

smoky halo
#

How can I import a vest model into arma? It's not rigged at all

rancid anvil
#

That sounds like something for #arma3_model , rather than this chat (i think model is the right chat) @smoky halo

fiery hemlock
#

is there any documentation for the terrain builder project format?

glossy inlet
#

No

fiery hemlock
#

That's too bad

sly mica
#

Okay I hope this is the best place to ask this.

Are there any tools that allow me to send events outside of ArmA 3 that could tie to an Arduino controller?

In flight simulations we can manipulate physical instruments based on data coming out of the game.

neon flax
#

Yes, with a custom extension.

glossy inlet
#

I don't know of any existing arduino targeted ones.
I have one that can extract data and control things via websocket

sly mica
#

I am reading on websocket now. Looks like there is something that can tie it to Arduino.

glossy inlet
#

What info do you need?
Rpm, airspeed, angles

karmic niche
#

The simplest solution would be to read/write data from a serial connection in the extension, I think

#

And then just Serial.read() in Arduino

scenic canopy
#

uses serial, with code for both game and arduino

#

there are a couple of other examples as well

glossy inlet
#

I would rather put a tablet on my desk and render the stuff instead of building hardware :u

scenic canopy
#

I use my stream deck for both arma and dcs πŸ™‚

karmic niche
scenic canopy
rancid anvil
#

Oooh cool

scenic canopy
#

they can be found quite cheap during sales, one can both use their official SDK via their desktop app or third party SDK for direct integration with it

karmic niche
#

@scenic canopy does it simulate an USB keyboard and then you bind the keys to actions in Arma?

scenic canopy
#

depends on how you set it up πŸ™‚

#

that's the basic mode

#

or you can tie it directly to the game engine with two way I/O

karmic niche
#

Let me guess: But then you can't use it on public servers running BE πŸ˜›

scenic canopy
#

so the state is always correct

#

depends on if it's whitelisted or not πŸ™‚

glossy inlet
karmic niche
#

Not really because it will probably require something on running on the client anyway - something that public servers will not have the keys for

scenic canopy
#

I don't play on public servers πŸ˜›

karmic niche
#

I've done a few hardware builds for several games for fun, back in the day (and some even required modifying the games' memory so RE was required - twice the fun) but I just thought that it was pointless to do the same in Arma, unless you play on your own servers 99% of the time 😦

sly mica
#

Okay, I am trying to keep up information overload lol

scenic canopy
#

and if you have private keys for mods being used on the server it also helps πŸ™‚

karmic niche
#

and if you have private keys
And if you work for Bohemia it helps you even more πŸ˜›

scenic canopy
#

a lot easier to make these things with intercept as well

karmic niche
#

C'mon, we're talking about mere mortals, here πŸ˜›

glossy inlet
#

It's time to ascent

karmic niche
#

Dedmen could actually have a private client tailored for him, instead of having to use... blah... extensions. Like these filthy casuals 😁

sly mica
#

I never got see BI Studio but holy heck BI Sim is nuts. Their place was incredible. They sky was the limit for techies like me.

karmic niche
sly mica
#

Interviewed twice on site but did not get the gig RIP. Sorry off topic...I will read some about the compass so I can come back with more educated questions.

So you have an idea where I am starting I have a basic understanding of Arduino coding but all my extraction tools for data have been pre-made an rather easy to do. https://www.youtube.com/watch?v=1cHPRzPjocA

scenic canopy
karmic niche
scenic canopy
#

but but static typing!

karmic niche
#

Use type hints, you fool!

#

Besides, if it looks like a duck, quacks like a duck, it's a duck... or a 'NoneType' object has no attribute 'quack' πŸ€·β€β™‚οΈ

scenic canopy
#

πŸ˜›

#

lack of linux support would be a no go for me though

#

sadly linux x64 support for intercept is not done yet

#

it builds but the hook for game state does not work last time I tried my PR

karmic niche
#

If you're referring to Pythia's lack of linux support, then believe me, I would have implemented that a looooong time ago, if on ly I had enough time to do so 😦

#

We've resorted to running windows Arma3.exe with wine, just because Pythia wasn't working on linux, because that was faster to set up, than implementing all the Pythia features for linux 😦

scenic canopy
#

πŸ˜„

#

running the server via wine works quite fine

#

though I prefer the stdout/stderr logger πŸ˜„

karmic niche
#

It gets even funnier if you're running it on windows, with WSL2 πŸ˜‰

scenic canopy
#

having a watcher for the rpt file is a bit meh for scaling out with containers

karmic niche
#

(and yes, we've done that, for development and testing πŸ˜› )

karmic niche
#

Someone's been slacking a bit...

glossy inlet
karmic niche
#

You've still got a few hours left to be able to say that you merged that in 2020 πŸ˜„

scenic canopy
#

haha

#

I planned to do my junit test thingy in intercept first but here I am with a rust extension instead πŸ˜„

karmic niche
#

Eh... sometimes, when I hear about all the things that your unit does, I'm tempted to join you (and learn the language) just to be able to do fun programming stuff πŸ˜›

scenic canopy
#

I'm just trying to automate away boring tasks, so far I've found and fixed a couple of hundred config issues in some mods I'm involved with πŸ˜„

#

it also helps when doing compat stuff for JSRS etc, no need to manually try every weapon whenever either JSRS or the mod getting overhauled sound changes

glossy inlet
scenic canopy
#

it works up until one of the game engine hooks, it does not find the game state

#

did I create a PR for the improved logging?

#

I don't remember anymore πŸ˜›

#

I had to add that to find out where it broke down πŸ˜„

#

I guess not πŸ˜›

glossy inlet
#

The loader changes don't look right to me.
But they aren't used yet when you fail that early.

#

Don't remember improved logging

scenic canopy
#

can't find it either πŸ˜„

#

I think the vtable thingy worked but not find_game_state

#

looks like I have the extra logging in my working directory πŸ™ƒ

scenic canopy
#

sqf helper functions that wraps an extension to create junit/xunit xml files

#

so I can standardize my in game test tools and just give the xml files to whatever reporting tool that fits

#

i.e. jenkins, danger etc

#

thanks dedmen ❀️

glossy inlet
#

No better place and time to merge a not fully tested, not fully working PR than sitting on couch with phone watching BΓΌttenwarder

scenic canopy
#

πŸ˜„

nocturne basin
#

ahhh

#

yeah ... probably would be nice to have for sqf-vm testing stuff too ...

#

finding the failed tests is ... ugly

scenic canopy
#

aren't the tests in C++?

#

I've mostly used the Catch2 test library for C++ with fitting reports, mainly console and junit

nocturne basin
#

sqf-vm features no C++ tests as of now

#

SQF tests tho cover most operators implemented

#

should write some utility one day to find those not used in the testing

scenic canopy
#

right, I should fix those macOS tests 😦

nocturne basin
#

if you can, please do
but the issue is somewhere in the parser ... soo not sure if you actually can do without guidance πŸ˜… parsing ain't everybodies cup of tea afterall

nova bronze
scenic canopy
#

the echo ::set-env name=VERSION::$(echo ${GITHUB_REF:11}) is a no no and that messes with the later hemtt and workshop steps using that env variable

nova bronze
#

Because that's the stage I'm at now... though I don't see it reflected in the article you just sent @scenic canopy

scenic canopy
#

it is, they link the docs for assigning new variables via the environment file

#

time to make a PR I guess πŸ˜›

nova bronze
#

Aaah gotcha

#

That gives me a bit more understanding actually

#

I'm so close! But the minute the thing starts the update of the workshop item, it immediately fails -.-

nova bronze
scenic canopy
#

Preparing release v0.0.0

#

you're trying to publish a release of hemtt that does not exist

#

Uploading item 2344670619 for app 107410 from releases/24.1.1/@sw-upload-test

#

no bueno

#

HEMTT created 0.0.0 while steamcmd is trying to use 24.1.1

nova bronze
#

Huh.

scenic canopy
#

you have the same warning on the github release step

#

releases/SW_Upload_Test_24.1.1.zip not include valid file.

nova bronze
#

Yeah... I get where the version is gotten for the action, but I can't figure out what HEMTT does to get it... because I don't really know what this is doing:


# HEMTT >= 0.7 (unreleased)
#[header_exts]
#version = "{{git \"id 8\"}}"
headerexts = [
    "version={{git \"id 8\"}}"
]

I don't get it because, you see {{version}} being used before this, which looks like the place it's defined in. https://github.com/Saborknight/sw-upload-test/blob/master/hemtt.toml

scenic canopy
#

or no, you don't have that file

#

and you're using 0.6.0 πŸ™‚

nova bronze
#

No, but I've forced the version for now

#

In the hemtt.toml file

#

wait... what's the latest ?

scenic canopy
#

0.7.6

nova bronze
#

Ah.... now I need to find out where that's being forced..

scenic canopy
#

unless specified in the project toml

nova bronze
#

Ah. Right.That would explain a few things...

scenic canopy
#

yes, stable version of the 16AAModTeam's fork of HEMTT github action

#

which is pinned to 0.6.1

nova bronze
#

Oh. I'm clearly too tired for this. These are all very stupid things that I'm skipping over right now

scenic canopy
#

though I personally prefer to use one with pinnable version

nova bronze
#

How come? Jesus... I really am tired

scenic canopy
#

not supported by either of those, other than the fork's stable which currently is locked to 0.6.1

nova bronze
#

Well, regardless... It's uploading to Steam Workshop now. So yeah, it was the versioning that hemtt works out with the mod's #define entries, or me forcing the version in the hemtt.toml file. I'm getting a much better understanding of how this whole thing works now. I'll get the rest sorted tomorrow. Thanks for the help Dahlgren!

nocturne basin
#

Also wanted to get sqf-vm powered github Action running Btw. But cannot be bothered to do everything required for it πŸ˜‚πŸ˜…

gritty radish
#

i do have a very basic one, let me now when you get smth up running πŸ˜›

nocturne basin
#

But as usual, I am happy about every contribution made to sqf-vm

shadow trail
#

Quick question, can extensions run while in the Eden editor? Testing stuff rn and not getting anything in display 313 but I do in display 46

orchid yew
#

yes they can

shadow trail
#

hmm... weird

#

Alright

blazing needle
shadow trail
#

Yeah that was my next thought, just continued to test in mission for now, was gonna raise the point later on to him

#

kinda ruins my plans of having it work in 3den though πŸ˜…

blazing needle
#

yeah I had the same problem and just made my own function based on Pythia's but without the recompile. If you are making a mod you could probably modify the config to remove the recompile. Not sure if that might break something or what the reason behind recompiling in this case is.

shadow trail
#

Well on the plus side I got what I wanted working inside a mission... and it seems like stack is typing now πŸ™‚

karmic niche
#

@dusky dune was the one doing the sqf part so I'm totally not putting the blame on him πŸ˜‰

shadow trail
#

πŸ˜„

karmic niche
#

I don't know sqf, believe it or not. But I'm accepting PRs 😁

#

cc: @blazing needle

dusky dune
#

Have cfgFunctions with recompile never been in uiNamespace?

#

Its been years since i used them in the vanilla way

#

in 3DEN i traditionally call from uiNamespace and it should exist in there i believe

blazing needle
#

uuhh never heard of that but who knows. The more common use is from missionNamespace

dusky dune
#

[_args] call (uiNamespace getVariable "py3_fnc_callExtension")

#

Unless cfgFunctions init was changed it was parsingNamespace, uiNamespace and missionNamespace

#

Where missionNamespace does not stay as the same namespace between preview, exit and reloads hence it's unreliable at that point anyway

#
/*
    Function:       ADA_Eden_fnc_onEdenEvent
    Author:         Adanteh
    Description:    Wrapper for all possible edden functions, so we don't need to reload config
*/
#include "macros.hpp"

params [["_event", ""], ["_args", []]];

if !(is3DEN) exitWith { };

private _functionsAvaiable = missionNamespace getVariable [QGVAR(init), false];
if !(_functionsAvaiable) then {
    missionNamespace setVariable [QGVAR(init), true];
    _this call (uiNamespace getVariable QFUNC(onLoadMissionNamespace));
};

if !(MODULELOADED(MODULE)) exitWith { };

is what I even have in my Eden module for Plopper just to force reinit (Because I do use missionNamespace in those cases, but I need more reliable way of determing when exactly the missionNamespace changes

#
class EventHandlers
{
  class ADDON
  {
    onUndo="['onUndo', _this] call (uiNamespace getVariable 'ADA_eden_fnc_onEdenEvent')";
    onRedo="['onRedo', _this] call (uiNamespace getVariable 'ADA_eden_fnc_onEdenEvent')";

Etc

shadow trail
#

πŸ‘ I'll start working on it, thanks

nocturne basin
#

note though that only three operations are supported as of now as i did not have had the need for more

late hazel
#

Is filesystem lib faster than fstream one ? I mean, for file manipulation with extensions.. I am no expert on this subject, but I managed to get better results using fstream. Sorry if this is a simple question, I'm trying to learn πŸ˜…

glossy inlet
#

iostreams are generally considered slow

#

std::filesystem is something completely different, the code linked above uses fstream/iostream

nocturne basin
nocturne basin
#

Stuff got an answer, will Code some fancy method host for c++ extensions tomorrow

#

And probably some basic testing framework for extensions too

nocturne basin
#

    auto m = sqf::method::create(
        [](std::string path, std::optional<std::string> mode) -> bool {
            return mode.has_value();
        });
    std::cout << "can_call 1: " << m.can_call({ "'test'"sqf }) << "\n" <<
        "can_call 2:" << m.can_call({ "'test'"sqf, "'test'"sqf }) << "\n" <<
        "can_call 3:" << m.can_call({ "'test'"sqf, "'test'"sqf, "'test'"sqf }) << "\n" <<
        "can_call 4:" << m.can_call({ "'test'"sqf, "2"sqf}) << "\n" <<
        "can_call 5:" << m.can_call({ "2"sqf, "2"sqf}) << "\n" <<
        "can_call 5:" << m.can_call({ "2"sqf }) << "\n" <<
        "call 1:" << m.call_generic({ "'test'"sqf }).to_string() << "\n" <<
        "call 2:" << m.call_generic({ "'test'"sqf, "'test'"sqf }).to_string() << std::endl;```
#
can_call 2:1
can_call 3:0
can_call 4:0
can_call 5:0
can_call 5:0
call 1:[false]
call 2:[true]```
#

think things cannot get more simple then this now for extensions

nocturne basin
#

i was wrong:


    auto m1 = sqf::method::create(
        [](std::string path, std::optional<std::string> mode) -> method::ret<bool, std::string> {
            return method::ret<bool, std::string>::err("abc");
            // alt: return { {}, { "abc" } };
        });
    auto m2 = sqf::method::create(
        [](std::string path, std::optional<std::string> mode) -> method::ret<bool, std::string> {
            return method::ret<bool, std::string>::ok(mode.has_value());
            // alt: return { { mode.has_value() }, {} };
        });
    auto m3 = sqf::method::create(
        [](std::string path, std::optional<std::string> mode) -> bool {
            return mode.has_value();
        });```
#

NOW it cannot get simpler

#

tho ... ret is too verbose think_turtle

nocturne basin
fallen stone
#

What is this for?

nocturne basin
#

See this 😏

signal basin
#

can't create a key to sign my addon i just get this error

#

i've reinstalled the tools like 3 times

signal basin
#

i've having the same problem as this guy

#

i also cannot create any new keys

signal basin
dawn palm
#

use pboProject and be done with it.

signal basin
#

sadly i cannot create a key with your tools or A3 tools

scenic canopy
#
#

TL;DR; it can be related to Windows password, try changing the user password

signal basin
#

lol thats the thing i don't have a password

#

everything was fine until i started using a new SSD

scenic canopy
#

Set a user password πŸ™‚

signal basin
#

i'll try that real quick but i don't think it will change anything

#

just tried to make a key with mikero's and it failed due to CPAcquireContext failed

#

still can't make a key with a3 tools either

dawn palm
#

re-down;oad steam tools

signal basin
#

did that 4 times now

#

still the same problem

#

even went to Microsoft website to download the framework 4.5 to be sure that it was installed and it was

vague shard
#

what IDE/tool had code formatting again for sqf?

neon flax
#

Sqf-vm

#

And plugin for vscode too iirc

blazing needle
orchid yew
#

seems to be changing some chars from upper case to lower case as part of the formatting, which in my case is breaking macros 😦

#

though that may be because the part of the macro it edits is itself a command (from)

scenic canopy
#

surrounded by underscores in the macro name?

orchid yew
#

yea

#

i find it changing the casing at all a bit weird tbh. it makes variables and commands bad camelCase.
eg

isEqualTypeArray -> isEqualtypeArray
ctrlPosition -> ctrlposition
_ctrlGroupHeader -> _ctrlgroupHeader
scenic canopy
#

o_O

neon flax
#

it sounds like that one just does find&replace

#

I would stay away from it πŸ˜„

vague shard
#

Sqf-vm had some command line processing or was that just still planned?

glossy inlet
#

but many of the newer commands missing, its quite outdated

vague shard
#

thanks

#

for large projects converting each file one by one is a bit exhausting 😬

glossy inlet
#

πŸ˜„

nocturne basin
#

Using sqf-vm for pretty printing can be quite... Destructive πŸ˜…
Unless your contents actually does not use any preprocessor

nocturne basin
vague shard
#

sqfvm.exe --pretty x:\folderToProcess

scenic canopy
#

linting and formatting would probably be better to have as a separate binary using the same sqf vm library

#

to avoid bloating the vm cli

#

preferably with great configuration via some config file πŸ˜„

neon flax
#

plugin for prettier hide

nocturne basin
#

issue for pretty-printing is still macros tho

vague shard
#

cant you skip them? ^[ \t/]*#anything.+ and \b[A-Z]+\b

karmic niche
#

Since he's parsing the whole code I think he doesn't need any regex to determine what is and what is not a macro πŸ™‚

#

But yeah, skipping them would be a good idea. At least for a start

neon flax
#

yeah but if I understand correctly he resolves macros

#

then parses AST

#

then he can assemble the AST back to code with whatever formatting he wants

karmic niche
#

Eh, might need a separate branch without resolving, then πŸ˜•

neon flax
#

you can't just skip the macros πŸ˜„

#

yeah, would need AST where macro is part of it

#

treat the macros like part of syntax

karmic niche
#

Nothing that X39 can't implement, right? 😏

#

Surely, he's skilled enough? 😏

neon flax
#

not sure, he might need to prove he is. bloblgrimace

karmic niche
#

I guess you're right. Maybe I simply overestimated his skills

rough grove
#

That way lies madness

#

HEMTT was going to do that, not worth it, for your sanity please heed my warning

karmic niche
#

for your sanity please heed my warning
That's not my sanity, though πŸ€·β€β™‚οΈ πŸ˜‰

Another solution would be to taint the AST element if it's been created using a macro expansion and then skip these elements during code formatting

nocturne basin
nocturne basin
# karmic niche Surely, he's skilled enough? 😏

could do, but won't any time soon
essentially requires preprocessing at tokenizer stage, allows for fancier and more exact error position deduction etc.
but that is quite a lot just to support that for no real benefit but knowing that some macro may or may not contain {

#

plus pragma support in arma may be sufficient to "solve" that riddle too
adding more informations when preprocessing with sqf-vm (like macro name, chain etc.) allowing reconstructing the original text

#

bbuuuuuuuuutttttttt as said: tokenizer is more then sufficient for getting a proper prettyprint

#

just that one has to code it

glossy inlet
#

pragma support lands in 2.02 btw

young plaza
#

what does sqf-vm do?

orchid yew
#

basically lets you test scripts without starting arma

young plaza
#

by showing eventual errors ?
or does it actually show results of the script?

scenic canopy
#

both πŸ˜„

nocturne basin
#

it is literally a community (or maybe just me ...) written SQF runtime
aka: it has the same (most not implemented tho) operators as arma

young plaza
#

ah I think I understand, too advanced for me
I though it would somehow show the results of more visual scripts like setVelocity, but thats not it.

karmic niche
#

Instead of "SQF runtime", I'd call it "SQF interpreter" - would be clearer for me, at least

#

And then you can say that just as the perl interpreter executes perl scripts, the python interpreter - python scripts, sqf-vm executes SQF scripts πŸ™‚

nocturne basin
#

but it is a runtime for sqf assembly with a sqf (and SQC!!!! 😏) parser plus fancyo ther things like preproc and config stuff

#

wanted to pull apart sqf-vm anyways for month now ... but cannot find the time to do that

#

(pull apart => runtime (most common base), sqf-parser, preprocessor, config-parser, filesystem, arma3-operators, ...)

#

and then have a cli repo, where the actual executable lives in

karmic niche
#

And then add an Intercept sqf-vm backend so that people could finally write their scripts for Arma in SQF! πŸ˜‚

nocturne basin
#

mhh? people do write their script in sqf already

karmic niche
#

That was the joke πŸ˜‰

nocturne basin
#

i want them do do it with SQC instead tho 😏

karmic niche
#

A bit tongue-in-cheek, but could actually be useful for SQC

#

Yeah, exactly

nocturne basin
#

SQC compile callExtension is something i can do quite quickly
actual SQF-Binarized (aka: SQF-Assembly in PBOs) would be nicer tho ...

#

especially because then i could extend SQC to also have some other fancy features (eg. async-await, yield return, ....)

young plaza
#

lots of really fancy words to conceal the fact its all black magic

nocturne basin
#

Not really
And everything is open source and available on github 🀫
The magic is in how the code is written, nothing else πŸ˜‰

#

But might Start doing Black magic
And add jit compilation once University does not eat up All my spare time

glossy inlet
#

But wouldn't that make it too jittery?

#

Are you trying to implement physx? notlikemeow

nocturne basin
#

πŸ€·β€β™‚οΈ

nocturne basin
#

It ain't that hard in my head
Besides the whole jank that is writing Assembly πŸ€ͺ

nocturne basin
#

like, most SQF is control structures
removing calls, switch, ... thus will help A LOT

#

then, to make things simpler and less janky, one can deduct the type implicitly, given params is available and properly filled

#

otherwise ... things are more complicated

#

aka: ```sqf
params [["_scalar", 1], ["_string", ""]];
if (_string == "foo") exitWith { 0 }
_scalar

pastel oak
#

for pbo proj does anyone know what this error is..

debpbo64: returned error code 1```
#

btw my file is 80mg.. which is nothing for modding and ive packed way bigger files

tawny island
#

perhaps stupid question; but do you have enough room in the tmp/ directory and/or target directory?

pastel oak
#

yea i have about 50GB of free space not a lot but it should be enough

dawn palm
#

it's npt the output size, one of your files is unreadable, reporting IT's size as a negative number

pastel oak
#

@dawn palm fixed it somehow idk what i did but its gone now

dawn palm
#

I will alter the error msg to be more specific.

nocturne basin
elfin oxide
#

As the comment on it suggests, for Arma 3 -> no

#

DayZ does not use it either

glossy inlet
#

its read from the pbo, but then overwritten with internally calculated value.

nocturne basin
#

Kk
Meh... Hoped I could abuse it to create unused space in the pbo

elfin oxide
#

If you just want to add data to your pbo without them being real files ... add headers πŸ™‚ as long as your data does not contain 0 bytes you can put anything there πŸ˜‰

karmic niche
#

You can't have 0-sized files in a PBO? πŸ€”

#

Also won't just appending data at the end work? I wonder how the engine computes the offset of the pbo hash. Is it the last bytes of the PBO or the first bytes after the last file contained in the PBO?

#

If the latter, then you could even create a polyglot file that would be a valid PBO and also a valid zip file πŸ˜„ (because AFAIR the zip table of contents is simply at the very end of the file

glossy inlet
#

My SQF bytecode project from mid 2019 is finally taking form

Before and after

Code:
[player] call ace_common_fnc_getWeight
Result:
0.0402 ms

Code:
[player] call ace_common_fnc_getWeight
Result:
0.0344 ms

And game preStart time

#
params [ 
    ["_group", grpNull, [grpNull, objNull]],  
    ["_weapon", objNull, [objNull]], 
    ["_leaderPos", [0,0,0], [[], "", objNull], 3] 
];

Before: 0.00973
After: 0.00225
Faster game startup, and faster scripts across the board (if a given mod was packed with precompiled bytecode)

nocturne basin
karmic niche
#

My SQF bytecode project from mid 2019 is finally taking form
Don't do it! This will make Management think that they purchased Black Element pointlessly because all you needed to do was to optimize SQF πŸ˜‚

nocturne basin
#

He ain't optimizing sqf here really
More like how it is read in, swappinh expensive parsing with cheapo reading

glossy inlet
#

Yeah you could probably do much more elaborate code reordering kind of optimization.
but that's more in your realm πŸ˜„

nocturne basin
#

The sqf-vm jit will come, once I have actual spare time with University

#

Emplacing the if, foreach, while,... With assembly should increase execution speed by a Hella lot

karmic niche
#

btw I don't want to put you down or something, but until there is a SQC-Intercept plugin, there isn't much point in developing SQC (other that out of personal interest)

#

I don't see why someone would want to write code that can only be interpreted by something that is a replacement for a game script interpreter 😦

nocturne basin
#

Uhm... You can use vscode to make it print a sqf file on every save

#

And with the sqf bytecode stuff, it can be precompiled to bytecode during packing stage πŸ€ͺ

glossy inlet
nocturne basin
#

Just get the sqfvm language Server and Hit ctrl + , πŸ˜‰ scrolling down will Show you the magic switch

glossy inlet
#

And you can just Serialize that as bytecode, and as Arma can (soon) load bytecode, use it.

dusky dune
#

maybe stack should into typescript

karmic niche
#

Damn, I may actually start learning Arma modding, with that πŸ˜‚

karmic niche
glossy inlet
#

I may need to add some new assembly instructions so you can do more useful things now that you have assembly access

nocturne basin
#

Would be naice

karmic niche
#

But yes, SQC is actually the Typescript for SQF

nocturne basin
karmic niche
#

That's not what i meant πŸ™‚
Code you write in typescript is never executed, it's converted to javascript that is then run in the browser

nocturne basin
#

Ahh
Well.. Yeah πŸ˜‚

#

Tho, sqc can be directly executed using sqf-vm πŸ€ͺ and I know dahlgren works on testing cba with sqf-vm rn

karmic niche
#

Yes, but the context was that I refused to learn SQF because of its syntax (and because I had a gazillion of other more interesting things to do). Call me petty, I don't care πŸ˜›

#

Now, if there actually is something that resembles a programming language, I could give it a go πŸ€”

#

...when I'm done with YouKnowWhat

nocturne basin
#

It resembles Javascript for the most Part even

vagrant moss
#

This all looks pretty awesome Dedmen, really appreciate all the cool new shit you keep coming up with!

glossy inlet
#

This stuff is from april 2019

#

πŸ˜„

#

I'm just cleaning it all up and integrating it into the game

karmic niche
#

integrating it into the game
What do you mean by that? πŸ€”

glossy inlet
#

when it sees a .sqfc file (precompiled bytecode) it will load that instead

#

previously I did that via intercept which ofc wasn't viable to most modders

karmic niche
#

Oh no! I've been !wiki'ed! 😦

glossy inlet
#

I also plan to make binarize.exe able to "binarize" sqf files and give you sqfc. Buuut.. Not 100% sure about that one

#

The community compiler is completely open source and has a more better experimental optimizer so... might just use that instead

karmic niche
#

Wait, so you're basically giving access to people to provide "machine code"-like data to be interpreted by the game interpreter?

glossy inlet
#

yeah

karmic niche
#

Maaan, if I knew this stuff, I'd just be jumping into LLVM backend development πŸ˜‚

glossy inlet
#

SQF code is compiled down to instructions which are then "interpreted".
The sqfc is bare instructions loaded directly into the game

karmic niche
#

Imagine a C++ LLVM compiler that has a sqfc backend so you can literally compile C++ code into sqfc

glossy inlet
#

X39's SQF-VM provides the instructions, I put them into a usable file format and let Arma read it.
SQF-VM is so well implemented (close to Arma) that its basically just plugging the correct things together

#

SQF Assembly has very few instructions, its still pretty limited

#

but once we know what we need, we can experiment with adding more instructions

#

SQF is a stack machine, without registers

nocturne basin
#

Llvm is also stack based

#

The instructions for it at least

#

Iirc

glossy inlet
#

what performance impact that would have, I have no idea, it was never possible to do such a thing so..
A time of loads more SQF performance experiments is incoming

#

I will also try to make a API for intercept, so you can register your own script instructions and fiddle around with ways to make it better.

karmic niche
#

Yeah, unfortunately, based on this stackoverflow question, LLVM looks not fit for that:
https://stackoverflow.com/a/38972640/6543759

How to write an LLVM backend for stack machine?

Just don't do it. LLVM DAG is designed specifically for the register machines and is of a little value for a stack machine compilation. You'd need a custom backend instead.

#

Sad 🐼

glossy inlet
#

When you can create your own instructions though, you can build registers

#

the instruction that calls unary script command pulls the argument from stack.
You can make a copy of that, that pulls it out of your self-built registers

karmic niche
#

You'll put Mikero out of the obfuscators business with this πŸ˜‚

glossy inlet
#

or easy way

putValueFromRegisterOntoStack _register1
callUnary commandName

glossy inlet
nocturne basin
glossy inlet
#

but yeah, you can include only bytecode in your mod/mission, and strip all the plaintext sqf out of it if you wanted to, but please don't :U

nocturne basin
glossy inlet
#

That way you can turn

    _unit,
    uniformContainer _unit,
    vestContainer _unit,
    backpackContainer _unit

getVariable _unit
getVariable _unit
callUnary uniformContainer
getVariable _unit
callUnary vestcontainer
getVariable _unit
callUnary backpackContainer

into

getVariable _unit
pop _register1
push _register1
push _register1
callUnary uniformContainer
push _register1
callUnary vestcontainer
push _register1
callUnary backpackContainer

something like that

nocturne basin
#

Problem is that callXXXX will push too...

karmic niche
#

But woudln't that make the scripts even slower? (emulating registers)

nocturne basin
#

Ohh.. You want to actually turn the whole runtime up and down?

glossy inlet
#

no. Pulling from a register will be faster than doing a hashmap lookup for the variable

nocturne basin
#

Youre not emulating registers really tho
You just need two values anyways theoretically
Tho Practically... That aint so simple
Will consume loads more cycles for simple things

#

For an Essential edge case

glossy inlet
#

yes. You could implement special instructions that will pull/push with registers vs the stack.
so callUnaryRegister _resultRegister, _argumentRegister
I don't think I feel like doing that tho.

Theoretically, you aren't even limited by the amount of registers, its really just a hardcoded index to an array of script values.
You could tell "Hey allocate me 40 registers for this function please"

#

passing registers between script calls notlikemeow oofski

#

They will probably be seperate list of registers per scope I guess?
in SQF you just don't know the side effects.
Or make up your own calling convention

#

So many ridiculous-ish ideas that I don't want to try, but I'll just open it and let others try it for me πŸ˜„

karmic niche
#

Sorry, I must have misread how you said emulating registers was supposed to be implemented (and I don't know the SQF assemby either). If it's as simple as "lookup value at offset X" then sure, it looks quite good

glossy inlet
#

oh wow

#

I said april 2019.

#

Actually, this started in december 2017

nocturne basin
#

Well... One could turn sqf runtime into a proper stack based Machine, change loads of things Including value Stacks to have values sitting at offsets, making the caller manage that, removing loads of things from the actual language... Side effects would be devastating tho as it would break the entire variable lookup stuff

Given that sqf-vm is correct on that

karmic niche
#

Or make up your own calling convention
If you implement registers and a function calling conversion, Imma learn and create an Arma plugin for Ida Pro! 🀣 (yes, I know, pointless πŸ˜› )

glossy inlet
#

SQF has these instructions:

push value (push a value to the stack, usually a constant like a string or a number (not bool, they are commands))
makeArray count (take the count values from the stack, make them into an array and push the array back to the stack)
callUnary commandName (call command with last value on stack as argument, put result on stack)
callBinary commandName (last 2 values on stack as argument)
assignTo variableName (assign last value on stack, onto variableName)
assignToLocal variableName (private _var = ..)
getVariable variableName (get value of a local/global variable or a nular script command and put it on the stack, every variableName is first checked whether its a command name if it doesn't start with _ )
endStatement (cleanup leftovers, like when you don't assign a return value to a var)

#

the number of instructions is basically the limiter of your script performance. Especially command calls are slow (for multiple reasons, many of which sadly security against hackers which is putting a HUGE dent into our performance).

Arma has no optimizer, so a simple params [['_CBA_code',{},[{}]],['_this',[]]] which basically every script function does, ends up as a

endStatement;
push string '_CBA_code';
push code {};
push code {};
makeArray 1;
makeArray 3;
push string '_this';
makeArray 0;
makeArray 2;
makeArray 2;
callFunction params;

But, you can rewrite this like so:

endStatement;
push array [['_CBA_code',{},[{}]],['_this',[]]];
callFunction params;

That's the main optimization point.

Same for
_number * (1/1.73)
SQF doesn't optimize that constant down, it calculates it every time you get there, mine and X39's optimizer do.

karmic niche
#

...just let me compare these with the python's stack-based vm opcodes, now that I think of it... 😏

nocturne basin
#

Better not
It does not compare

karmic niche
#

Don't worry, I don't have the time to work on this anyway 😦
But a man can dream...

nocturne basin
#

A man can help development with sqf-vm making use of New arma Features

fiery hemlock
#

what you really should do is add a new scall binary op, like call but it hides locals from the callee. that would enable local optimisations

neon flax
#

privateAll;

nocturne basin
#

allowing custom calling conventions for community made utils would be sufficient tbh
allows for some very neat optimization on a whole different level

potent cedar
#

Anyone know of a python or c++ library that can write config files?

dusky dune
potent cedar
#

Better that writing a poor version myself, much obliged!

karmic niche
#

I'm still waiting for you to add tests to the PR that you submitted, in order to merge the PR 😏

#

I guess, that's why it's only 99% perfect

dusky dune
#

testing is for nerds

nocturne basin
potent cedar
#

@karmic niche The class is perfect for what i need. I'd say 100% perfect. Not to mention the awesome parser that just happens to be part of it πŸ˜†

karmic niche
#

Take that, @dusky dune ! πŸ™„

#

The parser is actually is just reimplemented from a JS version made by someone else πŸ™‚

potent cedar
#

You took the time to rewrite it in a better language. So still a good job.

karmic niche
#

I know, right? Β―_(ツ)_/Β―

glossy inlet
#

experimenting a bit more with script optimizer.
This is what happens when you turn the array passed to params into a constant instead of letting it be re-built every time the function is called.

player call CBA_fnc_viewDir
0.0663 ms

player call CBA_fnc_viewDir2
0.0515 ms

#

just free performance.
Which when using SQF bytecode, you get with every script function

glossy inlet
#

Faster "compile" time:

Result:
0.429553 ms

Code:
CBA_fnc_viewDir = compileScript ["x\cba\addons\common\fnc_viewDir.sqf"]
Result:
4.04858 ms

Code:
CBA_fnc_viewDir2 = compile preprocessFileLineNumbers "x\cba\addons\common\fnc_viewDir.sqf"

And faster runtime:

Result:
0.0473 ms

Code:
player call CBA_fnc_viewDir
Result:
0.0573 ms

Code:
player call CBA_fnc_viewDir2

These are the numbers of the current actual engine implementation.
"compile" time 10x as fast (translates to about 14 seconds faster Arma startup with ACE,CBA,ZEN
runtime ehhh 20% faster? I can't numbers.

nocturne basin
#

nice

glossy inlet
nocturne basin
#

It would be rather useful to have the whole Script blob available πŸ€” one could then eg. Remove all duped checks or remove the calls themself, folding the code essentially until it is as optimized down to the last bit of the call tree as possible

#

Like, if an if gets repeated in a Lower scope, then there is no need to do that

#

Call could be eradicated always, given that it only pushes a new scope in that sense

#

Params, same game, just remove

#

...

glossy inlet
nocturne basin
#

Given that you have full knowledge about the whole call tree, you can know that

glossy inlet
#

you often don't

#

if its a call to a variable, you don't know where it goes

#

and even things like condition&&GlobalVariable you can't know

nocturne basin
#

Depends
An "educated guess" can be enough to increase Performance too
And removing call and params or restructuring Code so it is not repeating the same if all over the place might also be enough for another few ms

glossy inlet
#

Yes it can. Either improve performance or break the script

orchid shadow
#

Keep up the good work dedman!

glossy inlet
orchid shadow
#

Oki don't then

karmic niche
#

Assuming you're using python 3.7+, of course

tacit timber
#

Im having issues with PboProject by Mikero. The error message im receiving at startup is in german, but you might still be able to help me. Roughly translated: The "?fs_SkipRootSpec@FilestringW@@QEAAPEB_WPEB_W@Z" Processentrypoint was not found in the DLL file "C:...\bin\pboProject.exe".
Ive allready reinstalled Pbo Project yet nothing changed. Couldnt find anything on Google, so can someone tell me something about this error?

scenic canopy
#

You need to update the dependencies

#

Mainly depbo

tacit timber
#

I would have never guessed that.

tacit timber
#

Im having another issue related to the Toolbox. The Enviroment Path is not correctly added so PBOProject cant launch rapify. ive started the SetPath.exe manually, and while dong it from commandline i receive the error, that "The required library hostfxr.dll could not be found." It feels like i need the .NET Framework to run this, but it says you just have to run the installers to get going.

scenic canopy
#

Probably not packed with self-contained flag

tacit timber
#

But is there something i can do about this?

#

Or do i just have to manually add the PATH to the enviroment?

scenic canopy
#

either add the path our you could probably install the dotnet core runtime

empty kindle
#

Can anyone recommend good config parser? I would like to batch process some old configs (even OFP ones). I tried https://github.com/BrettMayson/Config2JSON and all mentioned ones in README in there without luck. Usually those parsers can't handle for inline comments, non-string values, ...

PS: I asked in wrong channel before. :/ #arma3_config message

karmic niche
#

@empty kindle

empty kindle
#

πŸ‘€

karmic niche
#

and all mentioned ones in README in there
Mine is mentioned in the README so simply head to "issues" and submit yours 😁

#

Although I probably won't update the parser if it's something that's not compatible with A3

empty kindle
#

yup, problems as well

#

it is OFP valid config Β―_(ツ)_/Β―

karmic niche
#

If you don't tell me what's the problem you're never gonna see it fixed Β―_(ツ)_/Β―

empty kindle
#

can't handle this part probably

units[] = {UKFLR110GPMG};

#

Should that be quoted in A3 to be valid? Sorry, I'm not really familiar with A3 configs.

#

seems so

#

units[] = {"UKFLR110GPMG"};
passes

I'll check if that is the only problem for this config

#

even true is not valid value?

autoFire=true;

should be

autoFire="true";
❓

blazing needle
#

true is not a config value. usually it is handled via the define:

#define true 1
neon flax
#

Any valid OFP config should be valid A3 config.

karmic niche
#

So it should be a string? 🀨

empty kindle
#

So I have found out 2 main problems with that historical config (I picked really random one actually, I'll do more testing later).

  • quoting is needed for strings
  • semicolon is required at the end of statement (probably end of line = end of statement where it does make sense)
neon flax
empty kindle
#

I can try to contribute to the project. Would that be welcomed @karmic niche ?

karmic niche
#

Sure

neon flax
#

Relying on autoqute is a bad practice imho but well... Arma supports it.

empty kindle
#

Any idea about the semicolon requirements @neon flax ?

#

I'm 100% sure this config is valid in OFP.

neon flax
#

Idk, easiest way would be throwing it into description.ext or something and checking if arma will crash.

karmic niche
#

and checking if arma will crash.
Good error handling is good πŸ˜‚

neon flax
#

Error handling is for the weak. bloblgrimace

karmic niche
#

@dusky dune you too πŸ™„

empty kindle
#

Sure, I'll add the problematic parts in there. I'm not big pythonist, but since there is .travis.yml I know at least how to run tests πŸ™‚

#

I'll see what I can do in there. Thanks for the help everyone, heading to sleep for now. 🀝

dusky dune
#

Semicolon isn't required but will print warning to rpt

#

Strings don't need quotes

empty kindle
#

@dusky dune thanks for the clarification, I can try to mimic the same in the parser.

dawn palm
#

As mentioned by @dusky dune paramfile strings don't need quotes.
when binarised:
hello world // and
"hello world"
are stored indentically in the binarised output. The only reason "quotes" are sometimes need is to avoid mis-interpreting a #define, eg
hello WORLD

#

be that as it may, as a convenience to the text editor such as np++ , tools that debinarise configs set the "strings" in qoutes purely as a convenience to the editor which will often color "strings" differently"