#arma3_tools

1 messages · Page 2 of 1

glossy inlet
#

i dont know what the standart is if you dont have it set but 0 = SW_HIDE which hides the window of the process

plush copper
#

hm still nothing. Is it possible that you can't launch using the arma3.exe but you have to launch through steam?

glossy inlet
#

nope

#

but you have to have stream open and logged in

plush copper
#

yes

glossy inlet
#
		SHELLEXECUTEINFOA ShExecInfo;
		ShExecInfo.cbSize = sizeof(SHELLEXECUTEINFOA);
		ShExecInfo.fMask = NULL;
		ShExecInfo.hwnd = NULL;
		ShExecInfo.lpVerb = NULL;
		ShExecInfo.lpFile = program.toStdString().c_str();//path to arma3.exe
		ShExecInfo.lpParameters = startparameterConnected.toStdString().c_str();//startparameters
		ShExecInfo.lpDirectory = MU->GlobalVariablesO->ArmaPath.toStdString().c_str(); //workdir
		ShExecInfo.nShow = SW_MAXIMIZE;
		ShExecInfo.hInstApp = NULL;
		ShellExecuteExA(&ShExecInfo);
plush copper
#

I fixed it xD

glossy inlet
#

nice ^^

plush copper
#

I thought I had set the window style to normal....but it actual read hidden facepalm

plush copper
#

Too lazy to make an installer lol. Who needs that

orchid shadow
#

pEWPEW

#

Someone mentioned my launchers

#

thats cool

full drift
#

@plush copper what language are you using for your launcher?

plush copper
#

C#

full drift
#

not thought about using process.start to launch it?

plush copper
#

I actually did switch it to that now

full drift
#

it's easier and takes two seconds to get it working

plush copper
#

that is what it looks like

#

pretty simple and clean look

full drift
#

yea its not that bad

plush copper
#

I have the extra tabs for a mod that I will probably convert it over to eventually

full drift
#

i had fun when doing the wasteland launcher

plush copper
#

I just made this one up this morning xD

#

When I create it for the mod in the works I will create a custom tabcontrol and all that good stuff

full drift
plush copper
#

Yeah there is always something lol. Same language?

full drift
#

yea c#

orchid shadow
#

Alltough a bit older screenshot

full drift
#

swifty :P

#

what a name

#

@orchid shadow is that using torrents for the downloads?

orchid shadow
#

No.

#

I used to use that exact interface lib for the early builds

full drift
#

what the mahapps?

#

oh delta patching, atleast you've got it done nicely

spice jungle
#

I’m trying to get cupcore2p to work but it keeps telling me I don’t have cup terrains core installed which I do. I deleted and reinstalled both cup core and cupcore2p and it’s still saying I don’t have cup core

My path to cup terrain core is “drive\steamlibrary\ steamapps\ workshop\ content\107410\ 583496184”

Setting path to steam workshop for cupcore2p is “WSPATH=$steampath$\steamapps\ workshop\ content\107410

plush copper
#

So on my launcher it will only detect a mod if the folder is named "@ModName" it can't just be "ModName" any way around that?

#

I haven't come up with any work around other than making them select each mod folder

full drift
#

so you want it to auto detect anything wit @ in the folder?

plush copper
#

I already have it set to autodetect. But I was wondering if there is anyway to make it detect any mod folder even if it does have @ in it

#

when you have a cut on the tip of your finger and are coding...really sucks

full drift
#

@orchid shadow that's actually a really good idea with switfy :P
How many people are using it currently for their mods?

clear urchin
#

check if it has an addons subfolder containing .pbo files

plush copper
#

I suppose I could, I would just have to make sure I exempt the default arma folders that are configured that same way.

orchid shadow
#

@full drift 1tac, Folk Arps, Shacktac and some other smaller communitys

sly skiff
empty kindle
#

Is it known what AVGCTAGG (average color tag) is used for in PAA textures? Is it used for background? 🤔 Or is each pixel multiplied by this color? 🤔 Is it used to detect anything else?

#

I'm crafting custom PAA renderer (OFP compatibility oriented for now only to keep it simple), wondering about this tag currently 🤔.

dawn palm
#

damn good question

glossy inlet
empty kindle
#

It seems useful to detect transparency of the texture only in OFP. 🤔

#

=> useless for texture renderer if I understand it well

dawn palm
#

that's a little surprising since transparency is handled by the dxt1 or 5. Perhaps it's only useful for the non dxt mipmaps

#

(if i remember correctly tho, AVGC is a mandatory tagg. (I can check that if you need that info)

#

my better guess is dxt mipmaps can only have (up to) 4 colors. it might be the biasing shade.

empty kindle
#

it is not mandatory per my understanding, I have valid testing greyscale paa (PAA_8080) with offsets only tag

#

but maybe PAA 8080 is the only exception (as on wiki mentioned)

full drift
#

we cant admire something we cant see

#

and we still might not admire it

empty kindle
#

paatool assigns just 0xFFs -> non-transparent if I understand it well

dawn palm
#

well, as you prolly know, pal2pace and texview have not changed since ofp. So Bis probably don't know either.

dense cove
#

https://github.com/SnakeManPMC/ofp-PAATool/blob/336638db40f121c5b9eecdcd92bc47f7a57731fb/PAAFile.cpp#L39
from @empty kindle , damn our bot sucks

empty kindle
#

got muted for 10 minutes for GitHub link 🤦

#

anyway thanks for some hints @dawn palm, I'll explore original OFP files to get more info

#

at least for now it seems only AVGC, FLAG and OFFS tags are supported in OFP

dawn palm
#

you can use my tool depax to rapidly scan thru folders looking for specific TAGGS or lack of them

empty kindle
#

I do have fun creating custom tools. That's all about the fun.

#

I'm trying to learn and understand the OFP file formats and document them finally. It is finally time 🙂

dawn palm
#

the biki for paa files is accurate. it was written by T_D with some help by me too. As mentioned, it hasn't changed since ofp times so bis haven't broken it.

empty kindle
#

I'm still a little lost sometimes, like currently with AVGCTAGG :/

#

and it mixes all versions together

dawn palm
#

it can of course always to with further examples

empty kindle
#

but indeed, it is super useful source

dawn palm
#

all bis engines understand the formats with the sole exception of ofp's pallet index if .pac

empty kindle
#

it depends on what "understand" means, OFP ignores unknown tags in PAC for example

dawn palm
#

true. I was thinking forward compatibility

glossy inlet
#

its basically 1 pixel resolution mipmap

#

could also be used for transparency detection, not sure

empty kindle
#

Clear, but is it really used in OFP?

#

For this default color?

#

thanks for this info, it all finally makes sense btw 🙏

plush copper
#

Don't you love when your power goes out...

glossy inlet
#

In A3 it is, and Mikero said it didn't change since OFP so maybe
But in general the 1 pixel mip is basically never visible so does it matter much? eh

empty kindle
#

I think I seen that few times in crCTI OFP when engine is having hard time to load thingies quickly when there is a lot of different objects on scene. Some surfaces are just one color for short amount of time.

opal mist
dawn palm
#

imho it is

opal mist
# dawn palm imho it is

What do you think, should I rather remove the original post and just link it here or delete the message above?

#

I'm not sure which channel is the better one

dense cove
#

I don't think I will count it a crosspost if the initial post is there and you're just referring to it

dawn palm
#

all i can tell you is this is a centralised funnel for all tool makers so we each get an idea of what tools are happening. Many if us probably mute (most of) the other channels. I 100% agree with @dense cove

#

I rarely rarely post in other channels but if a major update has happened for maps (or p3d), I am likely to cross post

dense cove
#

Anyways the thing is you can generate CfgFucntions one click? I think that's cool addition

dawn palm
#

damn right

opal mist
dense cove
#

Since CfgFunctions is really straightforward to generate automatically, nice to have it in PboProject as well maybe

opal mist
#

I should add a license to it tbh, but not sure since the original script is 7erra's, I just modified it (quite a bit though)

dense cove
#

Hmm

#

He should be here, in this Discord, so maybe you can ping him

opal mist
#

Yeah, I just have pinged him because of that many times already so I'm trying to avoid it lol

#

Probably making him annoyed already 😄

#

Oh well, once more. @blazing needle can you add a license to the original script so that I can license my own script? I would like to let others do whatever they want with it, but it's yours originally so it's up to you 🙂

dawn palm
#

if i were ferra i would not agree with that. his intention was different. simply credit him with the original and leave the rest alone.

#

without being too rude, most licences are ego instead of commons sense.

blazing needle
opal mist
blazing needle
#

Also there is a little flaw with the config format. When trying to view CfgFunctions in the config editor it throws an error about not being able to read empty classes, e.g. class MyFunction; (no brackets after classname). not sure if this is an issue with Arma, the config or the config viewer...

blazing needle
plush copper
#

@glossy inlet obviously it is a launcher I know that but what is the updater? Does it just update the launcher or mods or the game or what?

glossy inlet
#

Update our groups Modpacks

glossy inlet
empty kindle
opal mist
# glossy inlet Everything needs webapp nowadays 👀

As much as I like CLI too, I prefer some GUI apps like GitKraken (especially). It gets bugged in some rare cases but it's such a pleasure to use Git with it. It's just not nice to have 10 Electron apps running at the same time notlikemeow

glossy inlet
#

I mean, Webapp because you don't need to download any script, you don't need to install python on your system.

You open a website in your browser, click a button that opens a folder select. Select your folder with scripts.
Boop website now displays your CfgFunctions config.

And ideally the website also offers you the option to download it as a single html file which you can then run offline too (Very hard if it includes things like jquery, but.. technically you can merge it all into html with a bit of effort)

And because its html, you already have the webbrowser to execute it, no need to install anything extra

opal mist
#

Ah, you meant it like that

glossy inlet
#

I think in browser file processing is a awesome possibility that I only see veeeery rarely used.
Lou did it with https://save.arma3.io/
That loads a file from disk, and spits out a edited file all inside a single webpage and offline without uploading your file to some server.
(technically its 3 files, html, js, css but they could be merged into one html)

Sadly I don't really have projects that could use this approach
But for little tools like yours, that would easily fit into such a format.

karmic niche
#

But then you have to write it in JS 😢

opal mist
karmic niche
#

Actually, I guess you could just host the js files of the python installation locally and pyscript would then do the trick 🤔

opal mist
#

Python is available in Microsoft Store nowadays btw, it's quite handy

karmic niche
#

Yes, but we're talking about python-in-the-browser-for-lazy-genZ-people 😛

glossy inlet
#

The script fits in a single discord message.
Converting to javascript is probably easier than trying to run python inside javascript 😄

plush copper
#

Ah not sure why the message duplicated.

karmic niche
#

Well, it depends on what you want to do.
But for some people out there, that would entail learning how tf JS handles IO in the browser 😛
And some people out there have been avoiding JS like SQF the Plague 😛

karmic niche
#

And also, as you can see in that demo I posted, both numpy and matplotlib are used, so you can do pretty advanced mathematical computations (and you can do image manipulation as well)

neon flax
#

Would be handy as VSCode plugin

opal mist
#

Not a bad idea. Will/would just have to learn how to create VS Code plugins 😄

scenic canopy
karmic niche
uncut whale
#

We'd love to use swifty, but rehosting mods is the sticking point for us

vagrant moss
#

Just have chatgpt convert it from python to js and watch as it refers to a non-existent library it just made up that has feature parity with python

blazing needle
opal mist
blazing needle
#

oh hell yeah, I've been looking for some good introduction. either the tutorials online are only about front/backend or it wants to sell some product

scenic canopy
#

you can do a PBO file browser as a web site 🙂

#

including viewing PAA files

plush copper
#

Would you have to rehost the mods?

smoky halo
#

aloha

empty kindle
#

^ that's btw something I have plan to do (at least for OFP)

dawn palm
#

Anything that equals the intuitive nature of pbo manager is winner, The app itself is quite useless because it doesn't de/binarise param files. To modernise it into web space (and fix it's short comings) would be heavily used.

blazing needle
scenic canopy
#

I think I have a WIP one somewhere with working file tree

zealous pelican
#

Can anyone please send me an invite to Mikero's Tools discord , thanks 🙂

#

@dawn palm Maybe the man himself

sly skiff
quick portal
#

^

dawn palm
nocturne basin
#

Heck ... just wrote a basic cfg parser for my webapp recently to be able to create a list of all slots in a mission

#

it is horrible code

#

but it works and thats, in this case, enough

blazing needle
#

And i'd argue that js is fairly similar to sqf

#

but using wasm for already existing pbo libraries would be useful

dawn palm
#

And i'd argue that js is fairly similar to sqf
god help us all then.

scenic canopy
#

writing the pbo library in js was easy, writing paa to image not as much 😄

#

easier to go down the wasm route there, even more so since there are already paa wasm libs

empty kindle
dawn palm
#

the disappointing thing with wasm is it can only be run on a server. This adds some additional annoying steps when you want to test something, or, just look at the appearance of the 'page'. Not a biggie but a definite irritation.

#

It's also questionable how much use binarised code is when internet/lan speeds are no where near as fast as the cpu. You generally just end up waiting a lot faster.

scenic canopy
#

what do you mean? you can run wasm in the client browser

fiery hemlock
#

Right. The whole point of wasm is running "native" code safely in the browser. It's just VM.

scenic canopy
#

well, it's also available as an alternative to run containers on servers 😉

empty kindle
#

there are also local wasm environments like wasmtime

scenic canopy
#

it's a binary like any other, it just needs some runtime love

empty kindle
#

wasmer as well

scenic canopy
#

if that's the browser, your hypervisor or some runtime process that's all the same to the wasm binary

empty kindle
#

seems quite flexible these days

scenic canopy
#

just like running a jvm

bright gull
#

and works 100% offline, after you've visited the page once

#

Still: WASM is usually not quite as fast as a desktop application, or at least it's way harder to optimize WASM

empty kindle
#

yup, there are sources as well on github for this

bright gull
#

especially when talking about multi threading, but that's getting a lot better over the last few months

scenic canopy
#

just use a service worker trollface_2

nocturne basin
#

And multithreading is pretty much depending on the browser thanks to some pending standardization

bright gull
#

jep

#

although since SharedArrayBuffer are widely supported (again), multithreading is at least (kinda) possible

#

through web workers

#

which isn't as easy and as performant as just OS threads

#

but doable

nocturne basin
#

We talk native threads for wasm

#

Not web workers

fiery hemlock
#

There's no good channel, so i'll ask here: is there any valid case where there exists an ambiguity regarding which pbo contains a given directory path? In other words, can two pbos have the same prefix?

sly skiff
#

Required addons array would dictate the load order I think

fiery hemlock
#

But would two pbos with the same prefix, or two pbos with nested prefixes actually get loaded?

dawn palm
#

no you can't. the 2nd pbo will obliterate ALL content of the first.
you can of course have
pbo1 prefix=a\b\c
pbo2 prefix =a\b\c\d

IF pbo1 had, by error, a subfolder called d, all 'd' contents would be destroyed by pbo2.

load order is important here that pbo1 must happen first

fiery hemlock
#

Thanks. This is just the information i was looking for.

dawn palm
#

to add one small wrinkle, addons with addon are common. In this case, one pbo is involved which includes d, but the d\folder contains it's own config.cpp (and consequently it's own cfgpatches). This technique is used to publish one, single big pbo, but provide 'hot patch' pbos which only overwrite d (eg)

fiery hemlock
#

The game never unloads an addon after loading it, right?

empty kindle
#

so I have some PoC for Rust/WASM PBO metadata reader

#

notice I'm Rust/WASM total noob, this is my first Rust and also WASM project

#

it took me ~6 hours to craft together, not bad IMHO

dawn palm
#

@fiery hemlock no it can't be. You can use file patching to overwrite it

#

(operates in the same manner as a pbo with same prefix was loaded after initial one)

#

similarly the config,cpp is 'fresh' because cpp's aren't (despite appearances) merged into one big one

plush copper
#

Question how would I auto detect the ArmA 3 directory for my launcher?

glossy inlet
#

pbo prefixes are put in sorted array, longest matching path is looked up (binary search) to find the pbo the file is in
But that was changed only recently, late last year I think, before that it was without binary search just iterating all pbo's

glossy inlet
#

But that's exactly the kinda app I meant.
I'd love to see more "you don't have to install this, it can just run in your browser, but if you want you can also download it" kinda applications like this. I'm kinda stonished that there are so few.
VS Code in browser is probably the biggest example, and its amazing

rough grove
#

HEMTT 1.0 is out!
https://github.com/BrettMayson/HEMTT/releases/tag/v1.0.0

Thank you for everyone that provided testing, feedback, or code contributions.

I think HEMTT is now in a state where most projects can start migrating over. There are still improvements and features than can be done, so continue to provide your feedback and bug reports!

dawn palm
#

with minor differences in flashpoint, pbo structure is universal.

fiery hemlock
#

Yes, but presumably this tool does more than just pack PBOs.

dawn palm
#

it could wash dishes and mow the lawn too. the answer to your question is all arma pbos are universal hence a2 = yes.

#

As for extra goodies, the code comes from Armake by koffien flummie. A tool that was overly ambitious. I know nothing about any 'extra' features. So best bet is for you to try it.

#

In my never humble opinion, the code is not part of the C family of languages. (perl, Java, dotnet eg) so won't be well supported by a host of coders.

empty kindle
glossy inlet
#

I thought PBO format didn't change 🤔
Oh the tags at the start maybe

empty kindle
#

tags are indeed not supported in there, but the are after "index" part if I understand it well, it should not be affecting this

#

I'll check on that file.

glossy inlet
# fiery hemlock Does it do A2?

The things that didn't change between A2 and A3, yes.
So preprocessor yes, PBO signing no, PBO packing yes, config rapify probably yes if you don't use array append

dawn palm
#

cwc is the only pbo that does not have a properties list in the first entry

glossy inlet
empty kindle
#

cool, I'll add support for them

glossy inlet
dawn palm
#

ALL pbos have an unchanged series of header entries, followed by a data block followed by an optional checksum/sha
three header entries are special having no filename
the first, the last, and the optional checksum
the first entry is same as all the others but has concatenated property strings "value","something", after the 21 byte entry itself. strings in bis are utf8 encoded.
the last is almost always zero filled but except for vbs, it's values are ignored.
the optional sha key (or 4 byte checksum for Xbox elite) is only used for MP. it is ignored for SP and has no meaning filled or otherwise

#

cwc specifically does not have a 'first' entry. and neither it nor Resistance have the optional checksum.

fiery hemlock
#

Well i need at least p3d binarisation, which afaik is different between A2 and A3. I use pboProject, but i'm not entirely happy with it. The incremental builds are lacking, and i think it doesn't allow custom build steps.

dawn palm
#

p3d binarisation is not too sensible. Bis can and do change the format quite often. Leaving you with a tool that (probably) won't be updated.

#

if you meant for HEMTT to call bis binarise, that's a fairly advanced and elaborate step.

fiery hemlock
#

Either is fine by me, as long as i get the output i need.

glossy inlet
#

The first pbo header entry (The Vers one) is also optional

dawn palm
#

agreed

#

(forgot that)

glossy inlet
#

HEMTT supports p3d binarization by calling A3Tools Binarize.
It may be able to do that for A2 too you probably need to adjust it a bit to find the A2 tools variant though

dawn palm
#

it can only be optional when no prefix is required. In this case the NameOF..pbo is substituted.

scenic canopy
#

thought HEMTT wont verify that all assets required by binarize is present

#

so you might end up with wrong face properties i.e. transparency

fiery hemlock
#

The BIS binarize doesn't give any dependency information, does it?

#

So you wouldn't easily be able to do incremental builds on top of that?

dawn palm
#

it supplies a dep file
i have no idea what an incremental build means.

dawn palm
#

bis don't rebinarise p3d if it's already in p:\temo

#

this has it's own drawbacks because they don't detect if an rvmat or texture has been modified

fiery hemlock
clear matrix
#

I get this error, I'm making a custom grenade for the grenade launcher and i cant figure out what might be causing this

fiery hemlock
#

Idk if it's pboProject or bis binarise, but a build with no changes still takes an eternity with lots of assets.

dawn palm
#

@fiery hemlock check the time taken between a full build and not. Should be around 4 times faster

#

pboProject gives you two elapsed times in seconds. one for bis binarise and one overall

#

having 'noisy'' set affects speed considerably
if you haven't done these things already, you don't have much to complain about.

vague shard
#

is this channel best to ask about mission.sqm data structure with 3den or another channel?

#

trying to figure out why a tank commander isnt effective commander of the tank but the driver..

#

it seems either flags=6; (highest value per crew) or class CrewLinks (but this isnt set always for vehicle crew)

glossy inlet
#

Is that mission.sqm?
I'd expect that to be config

#

the slot defines if you're the boss? And mission just stores what slot you're sitting in?

orchid shadow
#

@uncut whale It's kinda the point of swifty to be in control yourself.

rough grove
rough grove
rough grove
nocturne basin
#

It's funny how difficult launching and stopping sub processes can be... But I think I managed to do so now with what I did

small vault
#

@plush copper Use registry keys. Once Arma 3 is launched in Steam - some records (incl. install path) are made.
HKLM\SOFTWARE\Bohemia Interactive\ArmA 3\Main

#

@plush copper Also, dont forget about executable selection (mainly because of perf builds).
Something like this:

nocturne basin
#

because otherwise i wasted a few days on this crap

smoky halo
#

@plush copper

small vault
#

@smoky halo Why Wow6432Node?

#

What if someone is using x86 OS?

smoky halo
#

hmm lol ur right

#

just replace it with the key you wrote in the chat

#

@small vault 32 bit is dying

empty kindle
nocturne basin
#

Linux ain't the thing here that concerns me

rough grove
toxic relic
#

if anyone would be using 32bit os...they wouldn't be running arma

hot nest
#

i haven't found the right chat to ask but my mod signs just do NOT work and i have zero clue why

small vault
#

Why not?

glossy inlet
hot nest
glossy inlet
#

how do you know they don't work

#

check signatures tool says they don't, server says they don't?

hot nest
#

Check signatures says there is servers say they don't.

#

i tried making different keys, i tried packing with PBO project

#

no luck.

dawn palm
#

for pboProject you either have a pboname.bikey in the @mod\keys folder or you don 't check that first and ask again

hot nest
#

The problem isn't that I didn't receive the keys, they just don't work on servers

#

I have zero clue what I've done wrong

dawn palm
#

i don't know what that means. either the bikey is there, or it isn't

glossy inlet
#

Have you put the bikey into the server's keys folder?

#

what other keys are in that folder

hot nest
#

Just the one i made, no others

dawn palm
#

as @glossy inlet says, it needs to ALSO be in >your mod folder on the server

hot nest
glossy inlet
#

Server reads keys from
Arma 3 Server/keys
folder, thats where they need to be in. Not in @mod/keys

dawn palm
#

ouch

hot nest
#

damn lol

dawn palm
#

that's a very new wrinkle for me

hot nest
#

I've had commenters on my mods say they do not function

#

Also experienced it myself, Literally have zero idea why its doing this

dawn palm
#

your possibly using an earliy version of dssignfile

glossy inlet
#

it should be next to a3.bikey file
Maybe the commenters also did it wrong?

hot nest
#

I just checked, a commenter said other mods worked fine, it was just mine.

hot nest
#

i dont think i have any public keys there.

dawn palm
#

you certainly won't have private onesnotlikemeow

scenic canopy
#

You should have at least a3.bikey

#

Otherwise your server install is corrupt

hot nest
#

In the server, all keys are there

#

including the ones for my mods

#

my public keys are all located inside the keys folder inside the mod, and everything was signed. I've remade keys several times to see if i just borked it some how but everything has been fine.

#

Regarding my setup atleast

dawn palm
#

looks like bis reverted to arma1 making a mods folder pointless.

#

this, together with a cfgMods class that should never have happened

glossy inlet
#

What specifically does the server say?
not signed by a key on the server smth smth

hot nest
#

precise, im gonna launch my game with the parameter check for signatures

#

and for another test ill remove that file to single it out

glossy inlet
#

To confirm a second time, 100% sure that pbo was packed with Arma 3 tools (Like Addon Builder) ?

hot nest
#

Yep

#

binarized and all that checked, the pbo wasnt signed on output though.

glossy inlet
#

These Error 0x22 that pretends like it tells you something useful, but actually doesn't tell you anything because there are 3 different things that all print 0x22

hot nest
#

yeah, havent found much about it

#

just assumed i did something wrong

dawn palm
#

taking @glossy inlet 's other valid commnets. THE message doesn't acutally state it a signfile problem. could be sth wierd./ wonderful in your config/p3d etc

#

try making a simple hello world config.cpp to sort this out

glossy inlet
#

Yeah with this problem, its a bisign vs pbo issue (I don't think bikey is involved at all at that point)

scenic canopy
glossy inlet
#

My idea would be invalid file order in pbo. But that is fixed if you use addon builder (that's not 2+ years old)
Other idea might be bad dssignfile version? Kinda unlikely.

Or you're hitting some extreme edge case that noone hit before and that our tools cannot handle.
In which case, I need a feedback tracker ticket with the pbo that shows this issue

and you can probably workaround by adding some dummy empty sqf file into your pbo

hot nest
#

What do you recommend i do

glossy inlet
#

try the lasrt thinh, add dzmmmx filrs

dawn palm
#

My idea would be invalid file order in pbo
pboProject (texheaders) sensitivity also fixed a long time ago. 😎

#

i'll back out of this as I'm causing too much noise

hot nest
#

No worries at all my friend, i tried pbo project and addon builder similar outcomes

toxic relic
#

why would anyone choose 32 bit windows 7 over 64 bit

#

windows 10 is only 64 bit either way

#

and btw, you can switch between 32 and 64 bit on the same license for win 7

prisma dragon
#

you can switch W10 32bit to 64bit , after update to 32bit version ... you do full reinstall using 64bit version with the same code

smoky halo
#

but i really dont know any arma3 player who is using 32bit

toxic relic
#

is there a 32b windows 10, reallt?

smoky halo
#

yes

#

there is

prisma dragon
#

pufu yes, 32b windows are usable if you have 1,2,3 GB memory

small vault
#

@toxic relic The thing is that W10 is designed as a multi-platform OS including tablets, phones and etc

toxic relic
#

i can't be bothered to updated yet my PCs to windows 10. i forsee some fuckups

#

will have to do it during the winter vacation

#

regarding my question about 64b, i was sure that they said windows 8 is suppose to be the last 32b os from microsoft

#

hell, my phone is running a 64b platform...

smoky halo
#

does someone knows a way to get the amount of players on a side on a server by using Query or Rcon?

small vault
#

you can list players via rcon and query :)

#

0x55 if you are using query

smoky halo
#

@small vault i got so far but i cannot see the playerside of a player

small vault
#

Ah.. sorry I'm wrong

#

Actually you cant see the side

rough grove
#

HEMTT 1.2.0
https://github.com/BrettMayson/HEMTT/releases/tag/v1.1.0

  • Added --no-bin to hemtt build and hemtt release, to pack objects without going through BI's binarize.
  • Added --no-rap to hemtt build and hemtt release, to pack configs, rvmats, and exts without being processed by HEMTT.
  • Added --no-sign to hemtt release, and a config option under [hemtt.release].
  • Show when there is a new release of HEMTT, checks once every 12 hours on run.
uncut whale
#

@orchid shadow Wasn't intended as a critisism :) I just meant it's unfortunately not practical for our unit right now, but that the tool itself looks much better than other options out there atm

dawn palm
#

updates for pboProject:
+fixes mistakes made by bis binarise when processing p3ds
+dos consoles now fully international with it's character displays irrespective of your local language settings.
+improvements tp the d;ll

#

+updates to the sdk for those brave enough to use it.

glossy inlet
#

mistakes made by bis binarise
We're these reported to feedback tracker?

dawn palm
#

i don't

#

i don't remember any time bis fixed anything significant like the classic mistakes in p3d properties or road snap points or.....

#

you personally are an exception to this

scenic canopy
#

They fixed the hardcoded sleep 🙂

glossy inlet
#

Wasn't that also me?

scenic canopy
#

yep 😛

orchid shadow
#

@uncut whale hah, didn't take it as such, just merely started its why i made it.

onyx helm
#

@dawn palm any idea why .hpp files would suddenly start getting deleted from all the pbos I pack despite my exclude list having them listed?
*.h,*.hpp,*.png,*.cpp,*.txt,thumbs.db,*.dep,*.bak,*.log,*.pew,source,*.tga,*.bat,*.psd,*.cmd here's my full "Exclude From Pbo" line (its just default)

#

I've tried reinstalling my entire tool suite and the issue still persists

neon flax
#

"Exclude" means do not include...

#

remove *.hpp from the list.

onyx helm
#

oh ya this is in regards to pboproject since i forgor to mention

onyx helm
#

ok for w/e reason the third reinstall resolved it

#

no clue why

scenic canopy
#

none of those files would ever be binarized anyway 😄

white cedar
#

🍤

dawn palm
#

well, it does say exclude from pbo !!!!!

opal mist
#

Muh team balance system is finally working properly (I think)

karmic niche
#

You should join OPFOR
Now if only people were doing what they should be doing... 😄

smoky halo
#

anyone here who has an idear?

opal mist
#

This is how it looks when you try to join the more skilled team

leaden elm
#

if i uncheck "clear temp folder" in the addon builder, will it skip copying the files that are already in the temp folder when i rebuild my mod?

sly skiff
#

no. Addon builder has no such fancy features as far as I know, fi you want fancy, try pboProject

leaden elm
#

thanks

dawn palm
#

it does not copy, it binarises. the difference being if the file is already present, it won't rebinarise again. This you may think is wunderbar, but, it doesn't account for any changes you made to rvmats or paa, nor, if my memory is correct, does it recognise that the binarised file is staler than the unbinarised. (for a3 i can easily be wrong about that)

ocean turret
#

Hi! I've improved GrueArbre's PboExplorer tool to view/extract pbos. Maybe someone find it useful, any feedback appreciated!
https://github.com/rvost/PboSpy

vague shard
glossy inlet
#

well ticket then i guess, dunno

rough grove
opal mist
#

I.e. it would be a huge amount of work

rough grove
#

Ah Arma 2

nocturne basin
#

hehe ... some open-source community management web-panel might be comming soon
got the game-server installation done for the most part and event creation + slotting already done

rough grove
vague shard
# glossy inlet well ticket then i guess, dunno

Its not necessarily a bug, is it? Usually Eden creates class CrewLinks - not sure when it does not.
I would assume its from messing with vehicles and their crew (ie changing type, moving in and out).
Anyhow dont think this needs "fixing" - rather to share some docu on the mission.sqm format if available internally would be nice to have.

glossy inlet
#

There is no docu besides the code itself

full drift
#

@smoky halo you can't use the rcon for that

#

you'd have to pull the information from the game it self

#

and pass it to what ever tool you're making

smoky halo
#

@full drift any idear how to pull the information out of the game?

silent trellis
#

Alternatively, instead of polling the information you could have the extension only scan for players and return that information when you ask it to

#

Which is probably the better option

smoky halo
#

@silent trellis thank you very much. This is something i can work with :)

silent trellis
#

You could even use some kind of caching if you plan for this to be a public API, so you don't hammer the game engine

#

np

#

What programming languages do you use btw?

smoky halo
#

i use c# for all my projects

silent trellis
#

mk one sec, extensions for arma are in C++ but you can use c#

#

I have a guide somewhere give me a sec

#

Just make sure you compile with Mono and don't use any WIN32 API functions if you plan to use this on a Linux server

smoky halo
#

When did bohemia release a serverversion for arma3 ?!

#

for linux..

silent trellis
#

Last year

#

They started seriously supporting it a few months ago

smoky halo
#

i never noticed... :/

#

@silent trellis do u think sockets would run well for an api ?

silent trellis
#

?

smoky halo
#

na forgett it

silent trellis
#

I assume you mean getting info out of the extension

#

I mean, if you want it to be accessable to the internet you're going to need a socket of some kind :D

smoky halo
#

thats what i thought^^

#

but i will simply use txt documents with the last time of update

#

for the first trys

tulip shuttle
#

Help guys. I am doing A soldier in arcenal, and i wanna use balaclava and glasses together, but they are in one category "Face protection", so i can't use them both. Who knows any mods who let me use a couple of things from 1 category together.

#

pleasemeowawww

fallen prism
#

Unless you get a mod which has those things together (as in, their own model of that, not a mod that combines them)

dawn palm
#

important fix to obfuscation at release 9.34

tulip shuttle
plush copper
#

Would anyone happen to know how to integrate IPS.Board forum accounts into my launcher?

#

I am working on a launcher for a community and I am trying to make it so that they have to log into their forum account on the community website to use the launcher.

silent trellis
#

You want IPS Connect

#

Using v3 or v4 of IPB?

plush copper
#

v4

silent trellis
#

You want a slave

#

Scroll to Handling Logins

#

You fire off a HTTP GET request to the board's ipsconnect.php file with a few params (I extremely highly recommend you send over HTTPS considering it handles unsalted MD5 hashes of passwords) and it responds with JSON of the result

#

Including some basic data of the user

#

If you need any help beyond that just give me a prod, done quite a bit of work with IPB

orchid shadow
#

Not using swifty

#

Life is not worth living

plush copper
#

I have never used done anything with IPB xD other than use the forums like a normal person.

silent trellis
#

Trust me, you don't want to

#

IPS Connect is ok, it's just a glancing blow

plush copper
#

Swifty is only for A3. They need a launcher that supports all of their games

silent trellis
#

Which community is it?

plush copper
#

A3 is one of them.

#

Reminiscence

#

I have a personal project as well :) secret for now. Because it could turn out a complete failure.

plush copper
#

I must be a fool or something. Something that should be super simple and I can't figure out why it is not working.

#

I wan't to make the username Capitalized right. But it is still lowercase?

silent trellis
#

ToUpper returns the capitalized version

#

it doesn't modify the variable

#
string userName = Enviroment.UserName;
userName = userName.ToUpper();
#

That'll make it capitalized

plush copper
#

See rubbish mistake. Always something simple that you forget.

silent trellis
#

Yeah that one used to get me quite a bit : )

plush copper
#

What if I later decide to make just the first letter of the name capitalized?

smoky halo
#

just remember that C# strings are immutable. you simply cannot change them

silent trellis
#

If you later want to make the rest of the name lower case

#
string str = userName.Substring(0,1) + userName.Substring(1).ToLower();
#

(Someone is going to come along and tell me why that's horribly inefficent)

orchid shadow
#

Eh.

#

It works .D

twilit meteor
#

Object builder seems broken, I consistently crashes after 50 seconds

sly skiff
twilit meteor
#

It freezes and shuts down after a delay no matter what I do, even if i do nothing at all

scenic canopy
#

did you try reseting all arma 3 tools settings?

graceful laurel
twilit meteor
scenic canopy
graceful laurel
#

Hmmm... I'll try that thank you

twilit meteor
#

Done that, now the viewer has stopped working & it crashes after 50 seconds. Got an error at least.

empty kindle
#

sooo

#

I found time to study PBO headers finally.

karmic niche
#

...aaaaand? 😄

empty kindle
#

and I can't find out how to bypass Chrome wasm file caching 🙂

#

it supports A3 files finally

#

or any with headers

empty kindle
#

it is probably related to GitHub Pages 🧂

scenic canopy
#

I guess just the usual cache busting mechanics

#

like adding file hash to file name / query

empty kindle
#

now I need to learn how to structure Rust project better and continue to "pax" (I have already greyscale aka PAA_8080 "previewer" ready)

dawn palm
#

the url you refer to is only good for flashpoint files. and possibly only for the original cwc. resistance adds some structures and arma, even more. refer to the biki instead, it's not difficult to comprehend.

empty kindle
#

Are you using latest version @dawn palm ? I was able to read PBOs with headers (properties).

dawn palm
#

a pbo is nothing more than the equivalent of a zip container.

empty kindle
#

sure

dawn palm
#

then the above is probably fine if it supports resistance

empty kindle
#

I think there is still more to support regarding reading. There is file compression and checksum/signature. I'll see how useful that is for OFP/OFP:R over the time.

dawn palm
#

what you pasted is only good for the original cwc

empty kindle
#

Is it?

dawn palm
#

and yes, it doesn't cater for compressed filles

empty kindle
#

I'm able to read properties + header entries for various PBOs I tested from OFP to A3.

dawn palm
#

oh well i can't read wasm properly then.

#

and damn right ofp aint dead either.

empty kindle
#

there are still new addons being developed lol

dawn palm
#

not that i am aware of. missions? sometimes

karmic niche
dawn palm
#

ofp lan parties yes

karmic niche
#

I mean, I ran it a year ago, goofed around for a bit in the map editor but then left because... well... it's an old game 😄

dawn palm
#

(most are co-op0

empty kindle
#

We're playing crCTI each Thursday.

#

and also Battlefield is played in 20 players over weekend evenings usually

#

that's PvP mission name (like team DM capturing places for score)

dawn palm
#

huh?

karmic niche
#

I guess you should check the logs, if you have any

#

Otherwise, we've all left our crystal ball in our other pants, today 😢

dawn palm
#

switching to dresses doesn't help either

karmic niche
dawn palm
#

yep

#

gonna quote your msg stack in future

twilit meteor
karmic niche
#

You tell me.
Anything that looks like a warning message, an error or something that should not be happening

twilit meteor
#

Nope, gets to
WELCOME TO ARMA 3 ADDON BUILDER
VERSION: 1.5.146305
then just stops

dawn palm
#

iwhat's object builder? is it bi's p3d editor??

twilit meteor
#

yeah

dawn palm
#

if so the answer is pretty damn simple, your'e trying too look at a binarised p3d]

twilit meteor
#

But its my .p3d and it crashes even if nothing is opened

dawn palm
#

but since you don't give any info on what your trying to do, we have to use crysal balls.

twilit meteor
#

Object builder crashes after ~50 seconds no matter what I do]

dawn palm
#

my cat mews no matter what i do too. why?

twilit meteor
#

Oh the .log says buldozer keeps on failing, it wasn't doing that earlier

dawn palm
#

step 1: verify bis tools
step2: 'play steamtools ONCE
step3: never EVER open that gui again (use shortcuts0

twilit meteor
#

Its that bad?

karmic niche
#

Does it crash if you open any other p3d? Does it crash if you don't open anything? [I don't remember how it works, just blindly trying to help troubleshoot the problem]

#

If yes / yes, then as mikero said, verify the tools in Steam. Maybe consider reinstalling

twilit meteor
#

It crashes after ~50 seconds irrespective of if I try to open a p3d, the p3d I do have doesn't cause a crash but simply wont open, likely cause im new to trying to import/export them

dawn palm
#

what about not opening anything?

twilit meteor
#

Still crashes

karmic niche
#

Like, literally, you open the program, wait and it crashes?

dawn palm
#

reinstall, play ONCE, use shortcuts to open object builder

#

do NOT use that gui. bis dont. so why should you?

plush copper
#

I think I need to sleep good lord

twilit meteor
karmic niche
#

Perplexing. Is the program responsive? Does memory keep increasing for some reason? [otherwise why would it crash after some time 🤔 ]

dawn palm
#

why? bis......

twilit meteor
#

Program seems to work fine otherwise

karmic niche
#

Antivirus issue? Try turning it off for 10 mins

#

do NOT use that gui. bis dont. so why should you?
I guess because it's there so it ought to be working? 😄

twilit meteor
#

One would think

dawn palm
#

haaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

karmic niche
#

Does it do the same on another computer, at home?

sly skiff
#

try to get DX view mode turned on in settings so its default

#

a bit of a long shot maybe but the other render mode is not exactly stable anymore

karmic niche
#

Tbh I'm out of ideas at this point. I'd look at what events AddonBuilder is generating using (I think) one of the Sysinternals tools, but I've forgotten which one that was

#

Process Monitor it was, I guess...

#

But my gut feeling tells me that it's just something stupid that we've all overlooked 😄

sly skiff
#

post objectbuilder.log from OBs install folder to pastebin.com and link here too

dawn palm
#

object builder is well known not to work if invoked from the gui. Shortcuts only to it and terrainbuilder and addon breaker

#

the only reason why that gui exists at all is to set the registry entries

#

hence 'play' once

twilit meteor
#

It seems to have cleared the buldozer install again

twilit meteor
sly skiff
#

well this looks same as mine when I just close it

dawn palm
#

if you're not usingg short cuts you are wasing everyone's time here.

#

pasting logs is NOT comunicating btw

#

you are expecting us to figure out what you are doing.

sly skiff
#

this is not the exe name btw

#

dunno how it then tries to run buldozer exe instead after that

twilit meteor
sly skiff
#

its arma3_x64 with underscore

twilit meteor
dawn palm
#

am gonna find the ignore button. why you couldn't state that in the first place defeats me.

twilit meteor
twilit meteor
#

noticed the missing .exe

#

OB Has stopped bull buldozer still refuses to start

sly skiff
twilit meteor
#

been 9 minuets without a crash

sly skiff
twilit meteor
#

that is a silly question, guess i should start it up now

sly skiff
#

once when testing things I could not get buldozer to start with the 32biit arma3.exe but turned out I had never ran it

#

after I did, it worked

twilit meteor
#

Booted it up all the way to the menu, made no difference to the external viewer or OB

#

On startup OB is now throwing out
00:31:21 - 2B50 Loading D:\Steam\steamapps\common\Arma 3 Tools\common.dll
00:31:21 - 2B50 Invalid module. Missing link to InitPluginModule function (127)
repeated for 7 other .dll that are present at the location.
Also D3D throws out an error
00:39:16 - [0DD4]ERROR! D3DCall fail line 972, d3drenderer\d3drenderer.cpp <D3DERR_INVALIDCALL>

sly skiff
#

The d3d error seems normal I get that too

twilit meteor
#

So this is all running on start with no clear cause for the crash that comes 60 seconds later

twilit meteor
#

D3D does need to be on and autosave is causing the crash after 60 seconds due to that being the autosave delay. Im going to leave the settings alone now that everything is kinda working. Thanks a ton for the help

silent trellis
#

Sleep is for the weak

#

Coffee is for the programmer

plush copper
#

I've had coffee gotta love it. I do very much enjoy spending late nights when there is no activity going on around me with some quiet music just going to town. But I can't get the simplest things done for some reason.

#

I literally have created a single button within the past hour xD

empty kindle
#

Btw. is there any reason why "MimeType" in PRO PBO entry is little endian? 🤔 And is just reversing the string enough to get it in proper order? Or do I totally not understand the problem?

glossy inlet
#

What is example MimeType what u mean?
What is a PRO entry

empty kindle
#

as described at wiki

#
struct standard entry
{
    Asciiz    filename;        // = 0
    char[4]    MimeType;        // 0x56657273 'Vers' properties entry (only first entry if at all)
    ulong    OriginalSize;    // = 0
    ulong    Reserved;        // = 0
    ulong    TimeStamp;        // = 0
    ulong    DataSize;        // = 0
} // end of 'standard' entry
#

reading MimeType as stored gets sreV actually

empty kindle
glossy inlet
#

The real (our) name for that is "Magic"

They are written in C++ as uint32 = 'Vers'
and int's are little endian
They are not "MimeType" nor are they a readable string. They are a magic number, and setting it this way was just convenient when it was created. Them also being readable as strings is a coincidence/accident

empty kindle
#

So better to read and compare as uint32?

glossy inlet
#

Also originalSize/Reserved/TimeStamp/DataSize are not ulong, they are signed 32bit int

empty kindle
#

yup, I have managed that already

#

reading those as 32 bit ints

glossy inlet
#

yes, engine also reads as int

#define EncrMagic 'Encr'
#define CompMagic 'Cprs'
#define VersionMagic 'Vers'

  int magic = stream.getil ();
  if ( magic != 'Vers' )
empty kindle
#

unsigned ones

dawn palm
#

you have no chouce mimetypes are not 0 terminated

glossy inlet
empty kindle
#

but is fixed length of 4

#

And is if ( magic != 'Vers' ) portable in C?

glossy inlet
dawn palm
#

my preference has always been
#define VERS 0x...
#define CPRS 0x....
#define ENCR 0x...

empty kindle
#

Since I have seen some special handling of those for Linux (GCC) like casting to int manually somehow.

#

So TL;DR best is to define constants with 0x56657273 like value and don't try to use those as a string/char[] to keep it portable?

#

thanks all 🤝

dawn palm
#

introduced in linux as a preference to using file.ext, a genuine mime type is always in the first 4 bytes of a file. Bis use it in their binary files (ODOL MLOD RAP\O 8WVR .....)
I use mimetype as a convenient phrase to describe any four byte entity that has this characteristic

#

Vers="Resistance" was originally intended to define which engine the pbo was intended for. It has since grown a little larger😎 and alters the 1st entry of a pbo to a non standard format from the rest of the header contents since after the standard 4 byte entries (20 bytes) it has catenated strings which can be as long as. (well) a piece of string.

empty kindle
#

yup, let's say it is a little wild 🙂

dawn palm
#

maybe, but look how carefully crafted it is. every engine from resistance ->vbs and dayz can read the same pbo without crashing. Usable, no, but crash? never

fiery hemlock
#

The problem is that the value of a multi character literal is implementation defined.

dawn palm
#

huh?

fiery hemlock
#

So they write 'XYZ' and it ends up as \0ZYX in the file because they happened to use MSVC.

dawn palm
#

why is that a problem?

#

Rap\0 is param file

fiery hemlock
#

Well it is the reason that the value in the file seems reversed.

dawn palm
#

so what?

fiery hemlock
#

And also why it doesn't work the same way on Linux.

dawn palm
#

nonsense

fiery hemlock
#

Which part is nonsense?

dawn palm
#

you;re confusing apple mac big endian with windoze

fiery hemlock
#

No, i'm just familiar with the standard. See here:
http://eel.is/c++draft/lex.ccon#3

A non-encodable character literal or a multicharacter literal has an implementation-defined value.

dawn palm
#

anyone who intends to use (the equivalent of) a unix mac is already aware of taking special steps. OUR MacOS compatible tools have no issues with this

#

it's the cost of doing business on a multi platform OS

#

you can run ExtractPbo Makepbo On a mac as easily as an Intel

fiery hemlock
#

Well sure. I'm just explaining how the use of multicharacter literals is problematic and how it lead to the situation that the original question was about.

#

Here's a better way to deal with these magic numbers:

template<std::unsigned_integral T = uint32_t, size_t Size>
consteval T magic_number(char const(&string)[Size]) requires (Size == sizeof(T) + 1)
{
    std::array<uint8_t, sizeof(T)> data;
    for (size_t i = 0; i < Size - 1; ++i)
    {
        data[i] = string[i];
    }
    return std::bit_cast<T>(data);
}

constexpr uint32_t vers = magic_number("vers");
dawn palm
#

It's Vers not vers and i'm not sure why you're accounting for a non-existent fifth character

fiery hemlock
#

C++ string literals contain a null terminator.

dawn palm
#

the code above is useful

#

We do a far far less convoluted method:
write_uint32_tLE(uint32_t str);

fiery hemlock
#

But where does the value come from?

dawn palm
#

from macos

fiery hemlock
#

I mean the the 'Vers' that you write.

dawn palm
#

#define VERS 0x......

fiery hemlock
#

Right. I would just spell that as constexpr uint32_t vers = magic_number("Vers") instead.

glossy inlet
dawn palm
#

this is the same guy who complained that our tools were not 'incremental'.

fiery hemlock
karmic niche
fiery hemlock
dawn palm
#

haaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

karmic niche
#

I mean... it's neat, in some way.
But... ugh...

#

But it seems like it's needlessly overcomplicated and people will be spending their time trying to figure out what that code does first, instead of just going "ok, that's a magic number comparison, moving along!"

glossy inlet
#

Compiletime comparison for both too

dawn palm
#

the build does nothing when things haven't changed, but you haven't taken the trouble to discover that @fiery hemlock

glossy inlet
#

I mean yes true but.. come on.. We have things to get done

karmic niche
#

On the other hand, I have to admit I'm genuinely [somewhat positively] surprised you can even implement such a thing in C++

glossy inlet
#

Modern constexpr stuff is A-MA-ZING

fiery hemlock
#

I'm not going to die on this hill. I'm just offering a well defined alternative that i think also reads better. And an explanation for why that magic number appears reversed in the file.

empty kindle
#

Btw. my original question wasn't C++ related. I'm writing my tools using Rust. I was just wondering why is file format defined this way.

glossy inlet
#

Recently implemented a helper, instead of adding a parameter in literally 7 places.
Just create a compile time bobble that lets you put all parameters in one compile-time "array", and in the 7 places iterate over that array at compiletime.

Same resulting assembly code as if you had put the parameters in multiple places, but now you only need to put it in one.

#

It crashed MSVC compiling.... I reported it, they refused to fix because VS2017 is out of support and VS2019 has it fixed already

fiery hemlock
torpid valve
#

Maybe you check full build?

fiery hemlock
fiery hemlock
glossy inlet
dawn palm
#

once unbinarised p3ds have been binarised in temp the code only checks the file date. 2) if ANY rvmat or paa is out of date, ALL p3ds are deleted from temp.

empty kindle
#

That's actually good answer as well. If that's related to time how things were done 23 years ago and there is no real meaning of that today (it is just kept that way to keep it compatible), that's ok IMHO.

karmic niche
glossy inlet
#

Should've made them 0xB00B1E50

karmic niche
#

...because they could have used 0x72f41277 instead 😄

karmic niche
empty kindle
karmic niche
#

There was a twitter drama not long ago about someone who wanted to add sth like 0xcafebabe to unit tests and it was rejected 😄

#

Srsly 😄

empty kindle
karmic niche
dawn palm
#

I've always assumed that "magic numbers are just magic numbers"
which is why 'Vers' has no meaning. It's there only as a convenient, self documenting tag on what the magic does. That's it.

empty kindle
dawn palm
#

😖

#

you can always alter the Biki and improve it

empty kindle
#

I'm going to do my own writeup later once I'll get full PBO lib done. I can donate some parts to biki if welcomed.

dawn palm
#

sure. go for it.

empty kindle
#

Btw. I was looking for some standard way of describing binary file formats, but I found out there is none (except some kind of proposal by some unversity students).

karmic niche
#

Kaitai's yaml is interesting

#

Because you can then generate parsers out of it

dawn palm
#

uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuurghhhhhhhhhhhhh N@)($+)+U+@%%+#

empty kindle
#

omg, no YAML please 🙏

karmic niche
#

Not sure if it's flexible enough to declare everything in that yaml, without adding custom classes for some parts

scenic canopy
dawn palm
#

hell i even detest xml as a waste of space

empty kindle
karmic niche
glossy inlet
#

What was that binary format reverse engineering tool I used notlikemeow I think it used some XML

dawn palm
#

even bis have reverted to stringtable.csv in dayz. xml has no other sane use in the engine

karmic niche
#

Sadly, Kaitai only supports reading (and not writing) files at this time (but there is some discussion to change that)

empty kindle
#

I wonder why I missed Kaitai actually in my searches.

#

yup, the benefit is clear

glossy inlet
#

Ah! yes that sounds right

empty kindle
#

and Kaitai is not using YAML 🤷 , but custom KSY file format, which seems to be limited structured YAML 🤦

karmic niche
#

You may be right - I never actually looked into what that was, I just used it

karmic niche
empty kindle
#

I was looking in generic tool, not Rust related.

scenic canopy
#

rust colleagues all praise nom

plush copper
#

Does anyone here use Mahapps UI toolkit?

karmic niche
empty kindle
#

and nobody cares 😨

karmic niche
#

Welcome to Open Source development! Make yourself comfortable! 😄

empty kindle
#

I spent last 10 years doing OSS, I'm feeling comfortable already 🤗.

karmic niche
#

I realized that, don't worry; that was just a joke 😉

empty kindle
#

but indeed seems Kaitai is not maintained on daily basis

#

even not on weekly one 🙂

karmic niche
#

But ooooh... I also just realized that they have added support to Python serialization! 😮
I might write a PBO format .ksy file and port my yapbol library to that, instead of implementing everything manually 😮

karmic niche
# empty kindle but indeed seems Kaitai is not maintained on daily basis

Well... I'm not going to play the Kaitai Evangelist (because I'm not one). I just happened to use both python-construct and Kaitai to write a parser for the steam server browser (used by Prairie Fire's backend) and "it just worked", so I didn't actually need any support nor maintenance of anything from the Kaitai developers 🤷‍♂️

empty kindle
#

Clear, I'm in process of learning how to deal with (read/write, specify) binary formats. So I'm trying to keep as low as possible.

karmic niche
#

And I really liked the idea of generating "ugly" but performant parser code, while keeping the description of the format clean 😄

empty kindle
#

That's on eof the biggest problems of "old-school" Bison-like generators.

#

no idea if anyone understand what's happening even in the definition

#

called grammar properly in its terminology if I understand it well 🤔

#

🤯

nocturne basin
#

Wrote a parser generator myself a few times by now

#

That's kinda funny

nocturne basin
#

Created some installation guide for the web-interface i developed: https://github.com/X39/UnitedTacticalForces
Only fully tested on linux as of now (hence the lack of documentation for windows ... if somebody owns a windows server license and wants to give it a shot, feel free to send me the steps :D)
The server management part should work on windows without any issues* too tho (*logs are not working for the arma server due to different ways of running this)

empty kindle
#

step 3. in Linux-SystemD install steps 😨

nocturne basin
#

Mhh? Links to the Microsoft Page on how to install dotnet on Linux

#

Feel free to ask me any question about what is unclear so I can improve upon the Readme

#

(also @ me if you want a quicker answer 😄 )

scenic canopy
#

provide a docker image 😛

neon flax
#

Installing web apps manually, what is it? Early 2000`s? 😛

empty kindle
#

installing .NET to Linux 😿

opal mist
glossy inlet
#

I run all my web services in .NET since I discovered blazor. it's just too simple and powerful ;3

fiery hemlock
#

Don't you know that Micro$oft is bad because... well i don't know... but it just is??!1?

dawn palm
#

it's a monoculture. That, makes it deadly

nocturne basin
#

And I highly agree on the versatility of blazor

nocturne basin
scenic canopy
nocturne basin
#

Will look into it

#

Tho as said... Right now no idea how to create one

nocturne basin
#

Also not sure how that would affect the arma installation and upgrading capabilities 🤔 tho... Should work

kindred abyss
#

hello fellows i have been directed here -- has anyone managed to get a DLL working in A3 using .NET 5.0+? Only progress I've been able to get over it doing nothing when using UnmanagedExports has been Arma crashing when using a repackaged version

#

using .NET 4.7.2 to target future versions of .NET doesn't work sadly

torpid valve
kindred abyss
#

not yet but I'd imagine I'd run into the same issue due to it being framework versioning though?

#

Currently looking at UnmanagedCallersOnly in .NET 7.0 but can't figure out how that'd work with the biki example etc so I'm stumped there

torpid valve
#

I'd imagine .NET is even more lenient blobdoggoshruggoogly

kindred abyss
#

It'd be using dllimport wouldn't it? thonk

torpid valve
#

no how would that be any different? meowsweats

#

I think .NET has its own version of "dll linking".

kindred abyss
#

oh you can just add dll reference ignore that

#

time to figure out how to reference them meowsweats

#

I get how to link them to pre-built .dlls -- but how do I do it once they're built? thonk

#

i.e one version is now built with reference to one dll, but that'd have to be an older version of the other surely?

#

helpful diagram for what i mean (im probably wrong)

torpid valve
torpid valve
#

build the Arma interface using C++
then just export an interface and import it in your .NET 6 extension

kindred abyss
kindred abyss
torpid valve
#

time to learn it then blobdoggoshruggoogly

kindred abyss
#

i can barely use c# notlikemeowcry

#

i however have got progress

#

callback debugs are showing up 🙂

torpid valve
#

then you won't need any DllExport mess in C#

kindred abyss
#

Oh you mean still do the DLL in c# but all the dllexport stuff in c++?

torpid valve
#

yes

#

actually you still need one DllExport to run your C# extension from the C++ one meowsweats
and even then that's still a circular reference thing

kindred abyss
#

I have the dllexport bits working fine now

#

i.e i have callback ingame where it should be

#

just misunderstood the entry point

#

exporting this is a bit of a pain though notlikemeowcry

torpid valve
kindred abyss
#

well its got export working fine

#

i didnt put the call to the other dll in the right place so im finding that out now

#

crashes the game notlikemeowcry

#

and rpt has nothing useful, it's to do with the call to the other dll most likely seeing as thats all that changed

kindred abyss
#

to confirm I'm not doing anything wrong, the function parameter is literally just a string and I can do whatever I want with it, right?

#

As soon as I introduce Worker.WorkerClass.EngineHandler(function); it crashes arma

karmic niche
#

(this includes the arguments to the RVExtension function)

kindred abyss
#

odd thats the issue

dawn palm
#

engine strings are utf8 char character streams.
windoze is widechar UTF16LE

kindred abyss
#

yeah so long as its a string its not the issue

#

crash only occurs when using another dll from the called one

#

called one is .NET 4.7.1 and other one is .NET 6.0

karmic niche
#

Write your own testing exe that will load your original dll

#

This will allow you to debug and iterate much quicker, without the need to reopen Arma

kindred abyss
#

I presume that'd identify any issues with exporting it causing it to crash? The code in isolation works fine

karmic niche
#

That simply should replicate your Arma environment, but without actually using Arma.
If you're serious about developing extensions, you'll write one such exe anyway to do tests, so better write it right away and save yourself the trouble of debugging from Arma already

kindred abyss
#

Gotcha, thanks -- I'll give that a try soon but don't have much of a clue where to begin as I've never done it (loading dlls myself) before 😅

karmic niche
#

I'm on a phone until Monday so I can't really help much.
But maybe learning about calling functions from DLLs by yourself would be a good idea? 🙂

#

From a self-improvement pov 😄

kindred abyss
#

ya this is mostly a learning experience for myself (and i wanted to be able to talk to arma with my voice 😄 )

karmic niche
#

In C++ you basically call one function to "open" a dll, then another one to get a pointer to function X from an opened dll (and another one to close the DLL when you're done) and you just call that function then

kindred abyss
#

Gotcha, I'm using c# but would imagine principle is the same, using DllImport or something if needed

#

Will be able to figure it out soon

karmic niche
kindred abyss
#

I think there might've been but I'm making one for the sake of learning and couldn't find it before 🤷

karmic niche
#

But i think that the guy did it with an external program and autohotkey, or something similar

kindred abyss
#

I'm hearing impaired so idea would be to be able to have subtitles over players who're talking and so on

#

As well as ability to talk to npcs blah blah blah

karmic niche
kindred abyss
#

this is when you're using the cortana recognition engine too

karmic niche
#

Nah, I was thinking about that thing from openai. But that literally was just an idea. Didn't implement a single line of it

kindred abyss
#

I've got the recognition shit working fine, my issue is just getting it working in arma as can't export .NET 5.0 projects as far as I'm aware

kindred abyss
karmic niche
kindred abyss
#

I have done, but the issue as far as I can see is there's just nothing for exporting dlls with c# for .NET

karmic niche
#

The way to correctly do it with .net should be universal

kindred abyss
#

been trying to for the past 2 days 😅

#

oh it's in c# i forgot to mention

#

i think

#

unmanagedexports doesn't work in .NET 5.0 and above and dllexport doesn't either as far as I can tell

karmic niche
#

I'm not a .net guy so I can't help you with that

kindred abyss
#

Yeah that seems to be a recurring theme in when I've been trying to get assistance 😅

karmic niche
#

Don't worry, being a Python developer makes you feel even more lonely, around here. Speaking from experience 🥲

kindred abyss
#

ouch, i gave up with python after trying to make regex tools 😅

gritty radish
#

however you will lose almost all reflection features

#

i had it working for a couple of things, also callback is working fine

kindred abyss
gritty radish
#
public static class Extension
    {
        public static Mediator _mediator;
        public static unsafe delegate* unmanaged<string, string, string, int> Callback;

        [UnmanagedCallersOnly(EntryPoint = "RVExtensionRegisterCallback")]
        public static unsafe void RvExtensionRegisterCallback(delegate* unmanaged<string, string, string, int> callback)
        {
            Callback = callback;
            Console.WriteLine("Loaded Callback");
        }

        [UnmanagedCallersOnly(EntryPoint = "RVExtension")]
        public static unsafe void RVExtension(char* output, int outputSize, char* function)
        {
            var method = Marshal.PtrToStringAnsi((IntPtr) function) ?? "";

            var result = "";
            switch (method)
            {
                default:
                    result = "Method not implemented";
                    break;
            }

            byte[] byteFinalString = Encoding.ASCII.GetBytes(result);
            Marshal.Copy(byteFinalString, 0, (IntPtr) output, byteFinalString.Length);
        }

        [UnmanagedCallersOnly(EntryPoint = "RVExtensionArgs")]
        public static unsafe int RVExtensionArgs(char* output, int outputSize, char* function, char** argv, int argc)
        {
            var method = Marshal.PtrToStringAnsi((IntPtr) function) ?? "";

            var parameters = new List<string>();
            for (int i = 0; i < argc; i++)
            {
                var tmp = Marshal.PtrToStringAnsi((IntPtr) argv[i]) ?? "";
                tmp = tmp.Replace("\"", "");
                parameters.Add(tmp);
            }

            var result = string.Empty;

            switch (method)
            {

                default:
                    result = "Method not implemented";
                    break;
            }

            byte[] byteFinalString = Encoding.ASCII.GetBytes(result);
            Marshal.Copy(byteFinalString, 0, (IntPtr) output, byteFinalString.Length);
            return 100;
        }

        [UnmanagedCallersOnly(EntryPoint = "RVExtensionVersion")]
        public static unsafe void RVExtensionVersion(char* output, int outputSize)
        {
            Application.BuildApplication(Callback);
            Application.ReadConfiguration();

            var scope = Application.ServiceProvider.CreateScope();
            _mediator = scope.ServiceProvider.GetRequiredService<Mediator>();

            
            byte[] byteFinalString = Encoding.ASCII.GetBytes(Constants.Version);
            Marshal.Copy(byteFinalString, 0, (IntPtr) output, byteFinalString.Length);
        }
#

something like this

#

I had another project more refined but i am not finding it anywhere right now

kindred abyss
#

Ah, thank you -- I thought unmanagedcallersonly would've been the avenue of approach but I couldn't figure out how to make it work for the life of me. I'll take a proper look once I've got time but looks significantly different to how I had envisioned it which probably leads to my issue lol

gritty radish
#

you need to enable unsafe code and compile with the commandline though with setting the flags for aot

kindred abyss
#

Oh right, slightly more of a ballache but shouldn't be completely unreasonable; should be able to avoid splitting into 2 dlls then and having to jump across .NET frameworks meowsweats

gritty radish
#

why would you want to use .net framework?

kindred abyss
#

windows voice recognition api

gritty radish
#

should be available in .net6/7 as well

kindred abyss
#

ya -- i was using 4.7.1 to handle the exported dll then call a method in a .net 6.0 dll prior but that also caused crashes 😅

gritty radish
#

maybe you need to get the package from nuget and it make the code windows plattform dependent

kindred abyss
#

I think I've possibly got terminology with framework wrong there; one dll (the one called by arma) was in 4.7.1 and the one with the voice recognition was in 6.0

gritty radish
kindred abyss
#

Wrong api but yeah I've got it working isolated in .net 6.0, just arma integration was being a ballache

#

Now should (hopefully) be much easier, thanks 🙂

#

it does however have some interesting results but tbf I've not trained it with my mic yet

#

either way; shall update on progress once I have the energy to give it another shot

karmic niche
neon flax
#

🐟

kindred abyss
neon flax
#

nice one

wooden fulcrum
#

hello, when i want to pack with pboproject i have this error

#

creating a texHeaders.bin...
data*ðºð│ÐØð»ð┐ð«Ðòð║.paa: Error. AlphaFlag value is not 1 or 2. is -255
failed: detex module found an error in (one or more) paas

glossy inlet
#

Looks like corrupt texture. Dunno what that stuff before .paa is, is that supposed to be a name thonk

wooden fulcrum
#

yes have do not know the name of picture

plush copper
#

What would be the simplest way to put a twitter timeline in C#?

thorn marsh
#

probably a dumb question, i'm just getting into this, but is it possible to make a http request to a web api from within a mod running on a server?

#

e.g. after someone gets a kill/triggers some event

crimson beacon
thorn marsh
#

Ah perfect, thanks

viscid fox
# thorn marsh Ah perfect, thanks
#

All attempts with Go > .dll to this point have worked fine in the callExtension tester but Arma itself calls a runtime abort breakpoint & crashes everytime I call it
Have tried numerous variations on this template which has been brought up in this Discord back in 2019
https://github.com/code34/armago_x64
Taking the opportunity to mention/ask since I've been banging my head against a wall for a few days on it

karmic niche
thorn marsh
#

Thank you, I will certainly understand all that at some point 💀 As someone who doesn't play and has never modded arma this is going to be an experience

karmic niche
thorn marsh
#

Nothing for the average javascript fan then 🫠

karmic niche
#

Actually, now that you mention it, I find it strange that there's not been any extension to write JS extensions in Arma that I know of and that feels... well, strange 🤔

thorn marsh
#

Maybe when I inevitably ditch this current side-project..

karmic niche
#

Yeah, good call! Make it your main project, instead! 🙃

orchid shadow
#

C# API?

#

C# Lib?

plush copper
#

either or

orchid shadow
#

Well just google.

plush copper
#

xD I already finished it. Just made one small error like usual so it wasn't operating correctly.

#

I am prone to making stupid errors in everything I make. And when I am looking for the error I usually look right over it more times than I'd wan't to admit.

silk hawk
#

So I switched to Windows 11 and in Windows 11 it does not give you the option to pack folders into PBOs when you right click with PBO Manager v1.4 installed. Anyone know a way to get this working?

I dont like mikeros or arma tools and I already know about them before we get off topic about why im using pbo manager

dense cove
#

pboManager is always not the tool to pack one

#

It always have the chance to break anything and not efficient

silk hawk
#

I understand all that. But the other options require way too many steps to get something packed. Im not making complicated stuff that im worried about the disadvantages of pboManager

dense cove
#

I get the point, but... not sure what would satisfy you in this usecase, since I really doubt pboManager has an up-to-date version

#

Wait a min there is 🤔

silk hawk
#

let's see what this one does

#

Yes, this one works a lot better with W11. Thank you very much. I didn't find that github page in my searches for some reason

viscid fox
karmic niche
glossy inlet
#

If only I'd have time to finish PboExplorer 😢

#

Just imagine clicking on a pbo and opening it like a zip.
Just for your whole explorer to crash when you try to look into a subfolder

#

With arguably the best ever "pack pbo" menu action, not constraining you to anything

#

Sadly seems like all but FileBank are broken blobdoggoshruggoogly
Addon builder starts but isn't autofilled with correct folder, Same for pboProject. MakePbo refuses because no mission.sqm found and PboExplorer does nothing 😢

empty kindle
#

Any idea what's powering Launcher UI? Is that WPF?

#

The best would be if official PBO library would be extracted from game and open sourced. 🤔

nocturne basin
#

WPFSnoop says yes

#

But with some weird modifications done at least (the window created is acting weird ... which should not happen)

empty kindle
#

thanks for a tip

#

WPFSnoop looks good

nocturne basin
#

One of the essentials when working with WPF imo

empty kindle
#

I'm total WPF noob.

#

Is that current preferred way for Win apps?

nocturne basin
#

Pretty much
tho technically there is loads of other frameworks too
and if you would ask me personally, go the web way instead (using Blazor WASM to use a proper language)

empty kindle
#

I need some system calls like scanning disk and running new processes.

dawn palm
#

Same for pboProject
pboProject/MakePbo will only ever work when the full path on a 'Pdrive' is specified. There is no circumstance for that ever changing because the tools must know where to find external references.

#

Bis rely on the exact same mechanism when crunching maps to find land classes, (some) proxies, most rtms all fxy fonts and any p3d that has almost any model.cfg worth bothering with.

#

filebank is a unique case where it (quite properly) only packs the already massaged files.

dawn palm
#

pboManager is an excellent, intuitive, gui that let itself down by not debinarising/rebinarising param files for the user, and troubles with a pboprefix.Presumably, these shortcomings have been fixed in version 3.

glossy inlet
glossy inlet
# dawn palm `Same for pboProject` pboProject/MakePbo will only ever work when the full path...

Nah, actually works just fine without pdrive path. Atleast on my old version of your tools. (Probably newer versions broke useful features like that, which is why I stopped updating)
But as a user you gotta know what you're doing. (If you're not referencing Files, it doesn't matter)

It's just my code that passes start parameters and puts the settings into registry isn't working right.

I give you the choice to use every tool easily. That doesn't free the user from knowing how the tool works and how to use it correctly.
Most people who are fine with a quick right click->pack, are probably not packing a terrain

empty kindle
#

What's the purpose of having 110% quality packed PBO when game can't read it. 🤔

scenic canopy
#

If game can’t read it then it’s not 110% quality

dawn palm
#

@smoky halo, the pbo structure is fixed in concrete irrespective of which code is creating it. Dedmen is saying the way the 1990s code does this is a spider's web of spaghetti. It also got mangled when bi introduced a 20 byte sha key at the end of the pbo file, + another mangle dealing with prefixes. There's nothing that my code, or, I have to assume, anyone else's, can or does deviate from the pbo concrete structure. (I'd hazard a guess I do it quicker).

what you might be thinking about is binarising configs, and here, yes, my code does differ from bis, where i accept syntax that the bi compile should do, but doesn't. That's more of a case of improving the compiler to 100% rather than bi's 90%. It does make (some) config.cpp's incompatible with addon breaker, BUT, at the end of the day, the binarised output is also rigid concrete and compatible.

dawn palm
#

$+)+@%%U+_)U+)^+^^)(#

empty kindle
#

I do follow, but this is thing where OSS usually shines when done properly. All this could be fixed already if opened.

#

but thanks for the insight, it is interesting and informative as usual 💪

#

I have hard time parsing old OFP configs since the game parser is really (let's say) "benevolent".

dawn palm
#

array[]={one;two;three}; is one of them

nocturne basin
nocturne basin
glossy inlet
glossy inlet
empty kindle
glossy inlet
#

I don't want to write any more C++14 code than I have to

#

that won't happen

#

I think if it works the same as the game, its good. Doesn't need to be same as the game uses

#

Especially, because game has several encryption thingies support, which the game needs but the public shall never get

empty kindle
#

as usual, that's nothing blocking this request, you can keep that part private

#

You mean ebo support?

glossy inlet
#

also yes

#

"keep that part private" that would mean I either have to write two separate libraries, one with private parts and without. Which doesn't match your idea of the game using the same lib.
or I have to rewrite all the pbo handling in the game to be more modular to allow for these parts to be more easily separated out, which isn't gonna happen

empty kindle
#

not really

dawn palm
#

@glossy inlet how about a __has_include to solve the dual needs?

glossy inlet
#

And split each of the dozens of code sections into separate include files so we can put them where we want them? meowsweats

#

Or macros i guess

#

Which would make our internal code very unreadable

dawn palm
#

well i was thinking more along the lines of simply separating the code you want to hide

glossy inlet
#

Well thats basically what I already answered above.

dawn palm
#

ok

#

i think i lost the plot here,would this 'lib' be for bis binarise? If so, don't lose hair follicles over it. The code as it is is unreadle with dreadful, impossible to read, <templates>

glossy inlet
#

no, pbo

dawn palm
#

ok

glossy inlet
#

A simple format that is somewhat well documented and for which dozens of libraries already exist where most of them are better written than the code the game uses

dawn palm
#

the original reason for depbo.dll <grin> The difference being i would only release an api to prevent 6,004 variations

#

you can bet your arse 6000 of them break something

#

if you released a dll api for people to use different outcome imho

#

any shortcomings get fixed by you, not 4,000 others

#

and that way you get total consistency for everyone who uses it.
2 cents deposited

plush copper
#

Any ideas on what I need to change to make this work?

#

So I have a entry for like maxMem and all that good stuff. I take the inputted value by the user and change it to an integer and then save it to an XML. But since I have tried to save them as integers it quits actually saving them to the XML?

plush copper
#

:P finally realized that I used a domainUpDown and not a numericUpDown

autumn edge
orchid shadow
#

I see that.

#

And kinda wanna murder you.

autumn edge
#

got it.

plush copper
#

For the way I created it?

empty kindle
#

Is there any reason why PBO format has actually no magic/signature at the beginning of the file?

#

Clearly it is not needed to make PBO format work, but in theory, it is not needed for any format 🤔.

fiery hemlock
#

Maybe the designer flipped a coin and it landed on tails.

karmic niche
#

If it weren't for the Asciiz filename; at the start I guess you could be checking for the Vers (sreV) MimeType? 🤔

empty kindle
#

Vers (sreV) is optional and not present in OFP PBOs.

#

Asciiz filename; is too generic IMHO

karmic niche
#

Yes, by that I meant that you'd have to skip it first, to check for Vers, but if you're saying that even that one is optional, then 🤷‍♂️

empty kindle
#

Let me ask the other way, what's the best way to check if file is PBO? Check for first entry? Check for whole index first? Check if entries and files sizes matches? ...

#

Or at least, is there any best/unwritten practice for this?

dawn palm
#

\0sreV is about the best you'll get. an unsafe check for cwc pbos would be to check for another filename 20 bytes after 1st

glossy inlet
#

I'd say just check for file extension to find out if its pbo 😄
Why else would you try to see if a non-pbo file is a pbo

rough grove
autumn edge
#

@rancid relic
Sorry for the ping and I'm not 100% sure this is the right channel as there's a bunch in here but none are specially about it..
In regards to 02 scripting I've seen you and a few other's git repos about them, and various snippets in here as well but would you happen to know of any old documentation about it in general?

#

Been sent here from the enfusion discord in search of as much info about it as possible, and it's seemingly a not very well documented thing.

#

(My use case is dayz tools object builder. Not quite sure what other things specifically use it as well.)

dawn palm
#

originally intended for maps and made obsolete at arma3 time since maps are generated by vbs 2 who will NOT share their 02script

#

there's a complete folder of 02script tools and docs in arma2's personal tools. I don''t have them loaded to give you nameIOF folder.

#

fyi: addon breaker was originally written in 02script (and pboProject too!)

#

02script was the precursor to sqf . it is mostly compatible with it with extended functionality to create windoze gui dialogs (not to be confused with rscDialogs)

#

it has some minor, but, irritating bugz, which, as usual never got fixed

autumn edge
#

Thank you very much for a direction to head, and the information. Very helpful. 🙂

silent trellis
#

xmol

#

xml

#

sad