#arma3_tools
1 messages · Page 5 of 1
oh
right
now that I read that again
your paths are just plain wrong
they are not complete
yeah, i think i had my P drive folder structure wrong. think i may have figured it out now, thanks
👍 happy modding
Swifty 2.1.0.5 with pbo patching has been released.
Come and break it ;)
Can be installed side by side, old client will start spitting messages in two weeks 😉
So for those who want to test ebo or try to crack it: https://www.dropbox.com/s/d2wnjin3tpys0e5/test_legacyfatigue.ebo?dl=0
please let me know if it does not work for you :)
quick question, is there a way to just tell your pdrive to move to a different folder, Or do you just gotta demount and remount it with a new file path?
that is the way to set where its mounted from so no different method
@inland flare
ye gotcha just wantewd to ask, Thanks 
https://github.com/BrettMayson/HEMTT/releases/tag/v1.11.2
HEMTT 1.11.2
- Important Bug Fixes
- Load right into a mission with
hemtt launch - Massive performance improvements. Up to 80% with
hemtt check
mikero's dos tools
arma3p has been updated
@wooden sail if your P: drive is a subst drive eg actually part of another drives folder the answer is yes.
simply change the drive letter in the bat file you are using to load the drive when you start the pc from p: to whatever
Oh ok, Cheers
hey. so I'm tryna open my PBO Manager and always getting this - does anyone know how to fix?
Without you providing any info about the error (e.g. unfolding the details tab), what pbo you are tryin to open etc no.
Exporting my vehicle from blender using the toolbox just fine. I pack the pbo and when in game, the vehicle is tinted darker. I open it in object builder and save, repack, it is fixed. Anyone know what might be causing this. Didn't need to do this extra step before.
you O2script.exe path is not set up
so vertex normals dont export right
doing stuff in OB recalculates those
there is a guide to install the toolbox in pins at #arma3_model
Yeah, seems when I moved my tools to my ssd I forgot to change the path. Thanks, Goat.
Is it possible to load unpacked mods ( not packaged into .pbos )
I want to speed up my dev cycle and if I can skip doing a package that'd be nice.
No.
But you can package it into PBO, load that, and then make it use the unpacked file instead.
See -filePatching
You'll just have to repackage PBO when you add new files.
Editing existing files you can then do on the unpacked data.
And for config.cpp changes you need to pack the pbo unbinarized and restart game. Unless diag binary mergeConfigFile
👋
Working on a callExtension thing
we're adding remoteExec information and diag_stacktrace support to RVExtensionContext so that Extensions can know which script (with full callstack) a call came from, and also who sent it in case of remoteExec.
What other things would you maybe want in Context?
Read its logfiles
https://community.bistudio.com/wiki/Extensions#Feature_Flags
https://community.bistudio.com/wiki/Extensions#Context
Here is some preview of the plans
I like how you let people fetch void** instead of strings!
A few more iterations and we'll get a CallExtension that gets a void** as well 🙃
I wanted to add remoteExecutedOwner.
And though "Hey.. why am I wrapping this into a string, to then write string parsing code to get the number back out..."
for CallExtension it doesn't make much sense. We could separate string,bool,float and thats it.. Meh. I mean.. maybe, probably not.
For context that'll also allow us to push structs. For example for the stacktrace, I can just send an array.
Extension developers are probably versed enough in coding to handle that.
And if they're not, they just use the default and get everything wrapped in string still
Actually turning this into a bigger extension overhaul..
Why is the outputSize int? Well, just in case we want to pass a buffer with negative size!
Why do we need RVExtensionRegisterCallback and other Register functions to give function pointers to the extension, when the extension can just grab them from the exports of the game instead
Why can you only choose between always getting context, or never. Even though you only need it for one specific API call. Why not be able to call a getter yourself just when you need it.
Last I tried (after the last update), it worked fine. What were you doing?
Direct sqf value return maybe?
Not in particular with the original value classes, but a simple immediate return of wrapping data structures or just immediate string to value conversion with the string remaining
The new stackTrace context, combined with the new void** feature flag.
Can even get you extra data that would otherwise have been too expensive to pass around.
Like.. The whole content of each script file in the callstack.
And performance wise, sending this much more data, is still cheaper than sending less data but converted to a string.
https://community.bistudio.com/wiki/Extensions#Utility_Header
The interface got quite a bit bigger (If you want advanced usage, the old stuff still stays as it was)
More options, more performance, more 
Is it really a cpp interface? On mobile right now so checking it out properly is quite troublesome
It's C still
But I won't provide C examples for the new stuff. Neither C#. Because time.
As long as it ain't some cpp mangling required, all is fine
Otherwise some pleb in the community might have trouble to use the new features
Browsing internet
during that
strange this is that when PC freezes, second monitor just shuts down (no input)
and main freezes
So
int(*callbackPtr)(char const *name, char const *function, char const *data) = nullptr;
void RVExtensionRegisterCallback(int(*callbackProc)(char const *name, char const *function, char const *data))
{
std::cout << "RVExtensionRegisterCallback" << std::endl;
callbackPtr = callbackProc;
}
void CALL_CONVENTION RVExtensionVersion(char *output, unsigned int outputSize)
{
std::strncpy(output, "Test-Extension v1.0", outputSize - 1);
}
Can be replaced by
#include "RVExtensionUtil.hpp"
RVExtensionCallbackProc* callbackPtr;
void CALL_CONVENTION RVExtensionVersion(char *output, unsigned int outputSize)
{
callbackPtr = reinterpret_cast<RVExtensionCallbackProc*>(FindRVFunction("RVExtensionCallback"));
std::strncpy(output, "Test-Extension v1.0", outputSize - 1);
}
callbackPtr has the same value in the end. But the new method makes it possible to do that without defining a exported function just to get it
whats most up-to-date VSC plugin for SQF? (regarding keywords and good enough macro support)
and any working plugin with static code analysis?
There the language server things from x39 which I use.
And a syntax highlighter that is fairly up to date. It is a fork of the one from armitex or so.
Sadly not at my pc right now so can't check.
If I just would have the spare time to fix the config parsing DB lockup issue...
Annoys me everytime
But just cannot spend the time to debug rn because of literally no time
how do you determine what extension VV is?
seems a little broken too
unfortunately sqlint seems too outdated, also some remarks are wrong
SQMVM seems to have problems with includes, and macros :/
uff
yep, had to stop using it for the same reason
the repo loaded into the workspace has a fair amount of code (couple MBs)
to require a few GBs seems too much tho or not?
Had the same issue with our workspace.
Smaller workspaces work fine. Although I don't mind the ram usage.
ive only got 16gb so i cant do it with arma at the same time 🫠
That’s what swap is for
Swap file, i.e. less needed memory content gets saved on disk
to be fair ... i yet have to be granted acces to one of those disclosed projects causing the ram hike
i only can speculate why it does the ram hike otherwise, which is quite complicated honestly
So if anyone is able to provide me access to a project with that RAM usage climbing to the moon, please do so
as i am literally clueless why it happens (all those nasty CDLC devs here, doing all those nasty SQF things, i know you are doing bad vodoo with ma lil girl SQF-VM
)
😄
my medical expansion ends up using ~600mb consistently but think thats somewhat normal
Hello! I'm getting this error when I use the Addon Builder
I just released a new version of the Arma Toolbox that should work with the latest version of Blender, 4.1. Get it here https://github.com/AlwarrenSidh/ArmAToolbox/releases/tag/v4.0.5
this still doesnt work
Can you be a bit more specific tghan "doesn't work"?
cant export p3d without errors
Go to Windows -> System Console in Blender and show me the error messages
i reverted back to blender 4.0 so cant
but iirc it was something with normals calc
I'll have a look. There have been a couple of code-breaking changes in 4.11, sadly 😐
I haven't found any issues; I'll need an error message. It works fine for me.
Look at #arma3_model
That looks like an old version of the toolbox
anyone got an old pbo project installer they could send my way?
you'll need a matching suite of the other mikero tools as well, the github actions repo has some older versions, https://github.com/arma-actions/mikero-tools/tree/latest/windows
Why not use the latest one though?
I been having some issues with it.
Have you ever tried your actions on a gitea install?
I've heard of people trying it with gitlab 😛
anything that has support for github actions and has powershell should be able to use it
I too am running into errors with attempting to export a p3d
That is because you have not created weights for a geometry lod.
I should’ve seen that, I’m extremely new to this rabbit hole. Thank you
No worries... error messages in Blender are easily missed 😐
is there a template for building a mod using hemtt? the hemtt new command doesnt work or i don't know how to use it
Everything you need to build Arma 3 mods with HEMTT
If you still have issue I recommend joining ACE3 discord. It has got a hemtt channel
is there a way to ignore ”rapwarning missing files” on pboproject?
making retextures for cdlc stuff, but as i cant extract its stuff to my p drive it complains about missing .p3d
You can create empty dummy files
huh, didnt know that could work, thanks!
if you inherit from original classes you dont have to declare the models again so your config has nothing to check
you only need to apply the changes you make
Well that tho
I'm using Arma 3 Toolbox and i'm a little bit curious, i can see this plugin proposes aditional LODs that are not documented in the wiki. What are View Pilot Geometry an View Pilot Fire Geometry for ?
old lods that are no longer used
i see, thank you 🙂
hello.
I want to make modpacks of various mods for Arma 3, I have noticed that sometimes I get Steam Error 8 and if it is published correctly when I want to publish any other update, even if it is a different pbo, it still gives an Error 8 and the mod on the website seems to be corrupted, and I have done several tests but I don't understand why this is happening? and I would appreciate help.
- Don't do that, there is no point to do
That's all
You can make mod collection in steam workshop that lists all the mod you want to use together.
I understand, I already made mods where I have to republish them because of this error, I mention a modpack since it is the most common thing that happens.
Still, I would like to know why this problem occurs, is it due to problems with Steam parsing binary data?
Packing up mods like that usually violates their license and is thus forbidden
And well it often just breaks things. We don't really offer advice on that since typically it is completely unnecessary and just breaks the mods along with their licenses. Using mods from their original makers uploads is the right way to use them
Thanks, I like using the original version mods and I think I understand the error better, it's still interesting how works.
is to possible to run binarize per cpu core parallel?
if so, is there more potential problems than temp folder data conflicts?
Should be, I think CUP is doing that.
yes, (newer) pboproject does that
HEMTT also runs binarize in parallel
hm it should be almost the latest pboproject
anything needed as parameter for commandline?
3.88 removed multi threading for binarise
so you'll need a version from before that then
HEMTT 1.12.0
https://github.com/BrettMayson/HEMTT/releases/tag/v1.12.0
Launch - Extending & Multiple Configs
- Specify multiple configs to customize your launch
hemtt launch default ace ws - Specify configs that extend others
P Drive - or Not!
- Projects can specify that they require a P Drive
- No P Drive? No problem! It will use your Arma 3 installation from Steam!
What's Changed
- Binarize: link all addons when using --just
- Binarize: p3d missing textures & materials
- Launch: extend configs
- SQF: smarter suggestions, also won't make suggestions unless they are proven safe
- SQF: fixes missing {} and [] in some suggestions
- SQF: suggestions preserver original string, "" vs ''
- CI - Replace deprecated actions-rs and update actions
Reminder WinGet Updates usually take 1-2 US working days
Yo, I'm making a dll extension that uses CURL library to make an API request. My problem is that when my dll code doesn't consist any curl library functions. everything compiles and the game detects the dll and I'm able to callextension. When I just add for example curl_global_init(CURL_GLOBAL_FLAGS) to my dll code and compiles it, it compiles but I get in the rpt:
Call extension 'testing' could not be loaded: The specified module could not be found.
Oh btw when I declare a variable of curl type it still works. Im pretty confused about what the issue is
The best way to troubleshoot this kind of issues is to create a small tester exe that does LoadLibrary on your dll and does some fake rvextension calls.
Most probably, your curl version adds some dependencies in the form of DLLs that are missing.
Use https://github.com/lucasg/Dependencies to check if the extension is able to resolve all its dependencies. Alternatively, make sure you compile your curl/extension statically if you don't want to provide missing dependencies yourself.
when I declare a variable of curl type it still works
I don't remember how curl works, but it looks like you probably need to have sth like libcurl.dll in the same directory as your extension if you don't compile it in, statically
As that curl_global_init that you're referring to is not present inside your extension, but inside curl's dll (that you haven't compiled in, statically)
Ill check my cmake again to see how im linking with it
If you get that dependenciesGui.exe file that I've linked above and check the dll, you'll know for sure. It'll probably come in handy more than once, so I'd suggest getting it anyway 🙂
Btw i have added a special step in my CI to make sure my extensions don't have external dependencies that I don't want, in case something changes in libraries that I'm using
Available here, if you're interested:
https://github.com/overfl0/Pythia/blob/next/tools/safety_checks.py#L157
An extension for Arma 3 that lets you write extensions in Python 3 - overfl0/Pythia
Kk ill check it out when i get home. Thx thx
default load path would be main arma 3 directory
yea its a dependency issue
god i hate handling packages in windows lol
im more of a linux dude
oh lol it tries to link with libcurl-d which is the debug dll instead of the release one. my cmake is set to debug for some reason
lol
AFAIR the DLL resolution path takes both into account
yea i had problem with the dll resolve and i think I will ditch the curl and just use winhttp it will solve some headache
linking the x64 and the x32 to curl could be a pain i think
btw anyone ever succeeded to debug the dll by attaching gdb to the server process?
sure, that's doable
aren't you using msvc on windows for your dll?
It should "just work".
You may even be able to start Arma as the executable in the debugger, without attaching (although I seem to recall I've had issues with that back in the day)
im using clion and when i attach to the process of the server or the client (just in case) it doesnt hit the breakpoints
im currently debugging with a logger tho so I'm chillin for now
Are you using the MSVC toolchain or something else?
yea I use msvc
Cause that uses LLDB, not GDB
https://conan.io/ is convenient if you want to use libraries crossplatform with C++
Conan is an open source, decentralized and multi-platform package manager for C and C++ that allows you to create and share all your native binaries.
Afaik it doesn't. In my projects that need another DLL, I think I load it manually, or set the DLL search path manually.
A3 doesn't do anything for that, and afaik default library search path is only relative to executable, not relative to the dll being loaded
Anyway to run publisherCMD with out steamclient? i am trying to make automated addon packing/signing/publishing inside docker container.
Container only has steamCMD, i tried to run it as well no luck
PS C:\Steam\steamapps\common\Arma 3 Tools\Publisher> .\PublisherCmd.exe update /id:3235471921 /path:"C:\Users\Administrator\Desktop\O_CORE" /changenote:test
==========================================
= Arma 3 Publisher
= (c) 2013-2022 BOHEMIA INTERACTIVE a.s.
= version: 1.0.0.0
==========================================
Parameters:
- Published File Id: 3235471921
- Path: C:\Users\Administrator\Desktop\O_CORE
- Change note: test
Initializing Steam...
Steam initialized. Result: SteamIsNotRunning
PS C:\Steam\steamapps\common\Arma 3 Tools\Publisher>
Not sure if this solves your issue, but you could use what the workshop-upload github action uses, instead? https://github.com/arma-actions/workshop-upload
or use steamcmd with VDF files
ref: #arma3_tools message
you need to upload new mods via publisher first to set the A3 specific tags
Steamcmd and VDF was only option and worked great! Thank you i was about to abandon the project lol
Remember that files like meta.cpp is managed by publishercmd so you’ll have to create one and add publisherid yourself
Can anyone quickly tell me the log location for PublisherCmd.exe ?
C:\Program Files (x86)\Steam\steamapps\common\Arma 3 Tools\Logs
Only publisher logs there for me. Not the CMD version
use steam publisher, my extension need that kvtag to see the real size of the mods 
Too late.

What's the kvTag anyway?
when publisher upload the mod to the workshop, saves the real weight of the mod in one "kvtag"
i guess is some kind of tags for app use
in that case probably yes, i saw a few mods that dont have that tags, and i guess is some kind of alternative uploader
but if publisher cmd is the same but with out the UI probably do the kvtag thing
Well. At least I think so.
i dont understund why steam dont have it integrated to it , its just weight the file before upload it, its not that hard lol
ive found a c-5 that someone started making on github and i think its mostly made but the github has been dead for 8 years is there a tool i can use to convert the files ive got into a working mod?
The github action I linked above DOES use steamcmd with VDF files 😉
it should with publishercmd, using steamcmd is different
Hello, facing issues with the linker while trying to 'make' armake, I have downloaded the 0.6.3 pre-release which requires old libcrypto.so.1.1, anyone with an updated armake?
Or maybe easier, get a linux version of Mikero extractpbo
Not straight forward, looking for the error cause now:
fs_DriveType: bad url or drive spec
'./extractpbo'
Well it complains, but does the job.
HEMTT can extract PBOs if you're looking for that on Linux
for anyone who finds this handy to use, i made this: https://github.com/Nelis75733126/Arma_3_FontToTGA_helper
it makes it simple and straightforward to generate TGA images from a font and it gives a ready-to-copy config to be used in CfgFontFamilies.
i updated it to version 0.2.
it is now possible to provide custom font sizes 🙂 in case you want bigger fonts than what the GUI version of FontToTGA.exe will provide.
And I thought I am the only one using powershell instead of python or so 😄
*code in notepad, be a man *
powershell might have some funky behavior compared to other languages but at least it comes included with windows, it can be easily tested and debugged without compiling it first, and the documentation is very good. although python's documentation is good too. i just wanted to use a language that anyone with a windows machine can run. without needing to install some compiler first.
Yeah I agree. It's just a very rare sight.
i have no idea why though. i mean...... for basic scripts like that, what else would one use...... batch? possibly. but most other languages need a compiler to be installed. Unless one goes the route of including the Python compiler into an exe. but i avoid .exe wherever i can simply because it adds an extra hoop to check the source. sure, one can post the source on github and then check the hash of the exe after building it from source.
i just like the straight .ps1 approach where the source can be viewed with just two mouse clicks.
oh and then there is the problem that Python or batch were somehow incapable of calling FontToTGA.exe properly. so it kept failing. until i tried Powershell.
Perhaps because the Powershell syntax is special😄
one example: to return a full array, one needs to join it together into a string.............. $array -join ","
when i found that out it was like: WHAAAAT????
at first i tried: $array and got this back: 10........ and i was like: yeah..... that is the first element..... i want the whole damn thing!
although i do like that i can do $array[-1] to get the last element. instead of _array select ((count _array) + 1) in SQF.
or even a bit trickier: reverse the array and select the first one: (reverse _array) select 0
this might be of use to you.
Cheers!
https://community.bistudio.com/wiki/select
2.12 negative index can be used to select from the end of the array, i.e. -1 means last array element.
ah, since 2.12!
This made me actually read the powershell documentation for the first time and I've only just realized that it's a .NET CLR language 🤯
It's definitely worth learning (although I hate its syntax so far
)
yeah, the syntax takes a while to get used to
Iirc tho there is an actual way of writing c# in there
Just that that's kinda for adding custom operations
But yeah, powershell is in all actuality very nice
Just in case you want to join the dark side on Linux too
@obsidian sluice If it happens again, might be good to have a look at the event viewer (On Windows, from the "computer management")
I tried it again after about 2 days and it worked without any problem
perhaps a RW issue or something completly unreleated to FuturaToP itself
is there a way to profile memory usage of A3 (RAM/VRAM) with a third party tool? (in a meaningful way)
Intel® Graphics Performance Analyzers looks decent (albeit very low level)
https://www.intel.com/content/www/us/en/developer/tools/graphics-performance-analyzers/overview.html
Intro tutorial video: https://www.intel.com/content/www/us/en/developer/videos/the-full-workflow-for-intel-graphics-performance-analyzers.html
meaningful I don't think so
A third party tool can tell you that memory usage rises, but not for what
If you have a specific usecase though. I might be able to make you a build with memory profiling.
But I don't know if that works offline or if it needs to be connected to our dev stuff while recording
@desert citrus ^
its only ram though, not vram
should be either something with a terrain or objects he wants to analyze
We got new tool since about half a year.
I gotta test on monday probably, likely I can only let you use it with the internal binary
ram only is fine.
Looking at object memory use.
Also I have internal exe so that shouldn't be a problem.
¯_(ツ)_/¯
whats seems to be causing this problem in PBO project?
Broken p3d, open and resave it with object builder
Thanks, seems to have continued on with the binarization, though im encountering a different problem now
so i know these missing files are located in "Arma Material Relocation" in alwarrens toolbox
but i dont know how i can get rid of it, theyre also not connected to the model
how can i get rid of them?
because i dont see any options to delete nor can i right click
They need to be provided in your ”p drive”
yes but i dont need them, what happened was I took one of the A2 sample models into the file, and now the these paths are stuck in the file and i dont know how to delete them
They are needed by binarize
Either provide the files or remove the references from all lods
all references were removed from lods, they didnt have any materials set yet
but i ended up just copying the models to a new blender file which seems to got rid of these paths. so its fixed
is there a commandline argument for pboproject to have it generate a private key?
or maybe another binary that can generate a private key for me
so i can set up "generate private key if it doesnt exist"
arma 3 tools includes one, https://community.bistudio.com/wiki/DSCreateKey
ah hah ty
i see tools like hemtt will generate new keys for you, the ace mod appears to re-generate its key every update.
does this mean server owners have to manually copy the key out each time theres an update? or does the arma server read the keys folder of loaded addons?
arma does not read keys from mod folders, only from the main keys folder of the server. if a mod update uses a new key the server admin must add the new key and optionally remove the old if no longer desired to be allowed.
Mikero's tools release 9.49
dll: small improvements to some error messages
dewrp: far better header info displayed to match what map makers 'see' in their terrain builder dialogs. The names for many things in those dialogs are often wrong or contradictory from one dialog to another (read snake man's pmc tutorial) , so dewrp lists it's REAL name then the terrain builder names (plural) . You can now use derwrp to list all unique p3ds and land classes too.
pboProject: maps: fixed bug where land_xx classes were baked into the pbo's wrp config. This error ONLY happened with a single pbo for textures, layers, config, and wrp. (these are normally and should be, in separate pbos)
@nimble current pboProject's setup panel has a createKey button.
Is there any .sqm file parser in Rust that's available publicly and actually works?
https://github.com/arma3modorganizer/SQM_Parser unfortunately doesn't work with some strings (easily fixable, no problem there) and multi-line strings...
Check this one
https://github.com/BrettMayson/Config2JSON
Please let it work, I don't want to deal with parsers anymore... 😆
If that fails, there are also parsers in other languages available (JS, Python), but I doubt you'd be willing to use them since you especially asked for rust 🤷♂️
I could utilize Python's armaclass through PyO3, technically. I used it before, it works just fine, it's just that I'd like to keep everything mono-Rust as much as I can
Much appreciated o7
You are a godsend for actually telling me to use this. It works!
as long as the mission file isn't binarized you can use any arma config parser
there are also tools to unbinarize config (mission) files
The main reason I specified Rust was because I have a Tauri + Yew app with a bunch of other stuff shoved in, but certainly
Cool! 🙂 👍
Hi! Basically i want to achive simple thing (i assume). I want to create a server-side mod which will at start of a mission print out Name of player and Slot in which he is in, and i want it to print it out in default Arma 3 Console.
sorry if it's a wrong channel but i want to avoid this beeing pushed on client-side and i guess it's not that hard to do it on server side?
At start of mission == when player is spawned in?
in your mission, initServer.sqf
{
private _data = [name _x, roleDescription _x]
systemChat str _data;
diag_log _data;
} forEach allPlayers;
// Handle JIP
addMissionEventHandler ["OnUserSelectedPlayer", {
params ["_networkId", "_playerObject", "_attempts"];
private _data = [name _playerObject, roleDescription _playerObject]
systemChat str _data;
diag_log _data;
}];
I don't know if that is all the info you need, but I hope that would atleast print part of the data into console at the right time
When player is spawned in game yes, this seems to be correct solution as i was going through roleDescription and thats all i need, thanks man i will try to test this out
I think @rough grove talked about wanting this, and @torpid valve is probably interested too.
Still some work to be done but there are no blockers for adding this to 2.18
It even works in thermal vision 😄
Nice!
BTW how do you set what to render to within the extension? 
Like is it just finding the HWND and passing it to imgui init fnc or is there more work needed?
ImGui needs the direct x device and context and hwnd
Now extension will be able to request the first two from game, and hwnd you can find yourself
You don't have control over the render target in the game. (Well you could create your own if you wanted to, but rendering it back into the game would be a bit offie I assume)
It will just render onto the currently active target.
Which during Draw3D will just be the main screen one.
For example calling it from a onDraw handler of a UIOnTexture...
Speaking of 3d stuff, maybe you should also give us that command for camera transform that I requested in #community_wiki before? To draw custom 3d stuff? 😅
its on the list
🤣 This is fun.
If you want to interact with UIOnTexture you would need to convert the UI position from ingame position into pixels so you can translate the mouse positions and clicks. But I think scripting should already be able to do that?
This by extension (pun intended) also means you can now render everything from external into a texture.
Images from disk, twitch streams, whatever
dedmen making another random platform update one of the biggest for stretching game capabilities lmao
https://github.com/arma3/RVExtensionImGui/blob/main/imguiRender.cpp#L78
There is the code
Its a bit annoying that it currently renders behind the game UI.
So Draw3D is called before UI render.
Will probably need to add another eventhandler that fires after the last game UI is drawn, so you can draw ontop
Might make it to profiling branch next week
Nice! I did have that working, but having the game provide it will be much easier than what I was doing
The main use case I thought of for it though, I definitely don't have time to implement
Could be useful for some debugging during development, if there's still major development going on, would've been interesting to see used for acre, medical, etcm development tools
...or playing doom in Arma
This looks like something that I could use for installing python (pip) dependencies in-game 🤔
could be useful to the people that were trying to make scope controls, iirc they ran into some limitations
we are one step closer lol
its just need a key to be pressed to interact with the screen like star citizen 😄
Not a random ping channel thanks.
Imo this is just the proper way to do GUI in Arma from now on
we just need arma-rs support for this.
Playing Arma Reforger in Arma 3 🤯
planned once I get some docs and time
Also added Draw2D eventhandler which runs post-ui, so you can render some toppest-level overlays (and which also don't influence HDR/eye adjustment)
Performance of that isn't too nice, it needs to wrap up async rendering before it can let the extension render.
And async rendering is supposed to be able to run a good while longer in background
UIOnTexture does the same already though so not too bad.
I'd say consider not taking a GPU lock in a Draw2D unless you really need a top-top level UI.
I can't see a noticable impact just looking at fps numbers, but I guess someone could try running a YAAB with a ui overlay and see what happens
and which also don't influence HDR/eye adjustment
as opposed to what? do draw3ds influence it?
^
You also can see there how the background brightness changes when I change the colors
@smoky halo you just got a new competitor in the ebo encryption business :D
release 9.51: large number of small bug fixes and improvements to pboProject and the dll (mostly wrp)
AIO installer now has a convenience button to select 'mikero's toolbox' in preference to chasing down a tool by other means. Thank you @pseudo reef
@glossy inlet any chance there could be some startup command or something added with buldozer to set where it reads its config from? When using A3 exe as buldozer its a bit hit and miss again where it reads the config from. arma3\dta\bin.pbo or P:\bin\config.cpp
The latter P drive config would be the preferred choice as it can be injected with real lighting config to make buldozer use a maps real lighting setup and clutter. the first is good for previewing materials in Object Builder/Buldozer and latter helps visualize terrain live when being built in Terrain Builder/Buldozer and the lighting does make it look nicer too.
Right now again using 64bit exe as Object Builder buldozer starter seems to load P:\Bin\config.cpp but Terrain Builder Buldozer does not again.
. 32bit exe reads P:\bin\config if arma3\dta\bin.pbo is not present (deleted/renamed)
ahhhhhh uh
I don't think it knows anything about what pbo to load from.
It first loads all PBO's in dta folder.
And then it loads bin/config.bin, which filePatching might redirect. And if config.bin isn't found it'll fall back to config.cpp, which again filePatching might redirect if it finds the unpacked file.
All it gets told is load "bin/config.bin", it doesn't get told to load it from pbo, or from disk

Well and truly snowed under at moment HG. will patch arna3p when time allows. (not withstanding @glossy inlet 's always excellent fixes.)
its alright, just came across this just now after refreshing P drive
load "bin/config.bin"
Its either:
Search in loaded PBO's
found:
if filePatching is on, search also in working directory if there is a unpacked version
unpacked found: load that
else: load from pbo
not found:
search for config.cpp in pbo's instead
found:
if filePatching is on, search also in working directory if there is a unpacked version
unpacked found: load that
else: load from pbo
not found: fail
or
Search in loaded PBO's
found:
if filePatching is on, search also in working directory if there is a unpacked version
unpacked found: load that
else: load from pbo
not found:
if filepatching is on, search also in working directory if there is a unpacked version
unpacked found: load that
else: search for config.cpp in pbo's instead
found:
if filePatching is on, search also in working directory if there is a unpacked version
unpacked found: load that
else: load from pbo
not found:
if filepatching is on, search also in working directory if there is a unpacked version
unpacked found: load that
else: fail.
I'm quite sure normal A3 client behavior is to only do filePatching disk search, if the file is also found inside a PBO.
It wouldn't attempt looking on disk at all, if the file isn't in pbo.
But you said it would also load it when the pbo doesn't exist, maybe thats special behavior in buldozer builds.
Actually don't know how "buldozer" exe's are built. We don't have a buldozer build configuration
i think it's literally just -buldozer on the cmdline.
I must consider P:\ as working directory then
yeah if one starts the "buldozer.exe" on P drive on its own it just starts the game
the source code seems to always incorporate it.
and in the armaTools P drive setup I recall i just makes a copy of the normal exe
yeah filePatching is always relative to working directory.
buldozer/arma client doesn't know about "P:"
the buldozer,exe should NOT be used. it rarely matches changes to the bin\config.bin and has a;ways been out of date. most especially if you using beta.
Ah I thought we had some special buldozer exe in A3Tools. Yeah we don't
it was originally supplied but arma3p always deleted it
Terrain Builder feeds this to it
Data directory then probably just a weird name for working directory? hopefully?
yah looks like it
if altered, it breaks startup and throws all the missing cfgworlds etc errors
as no config is there
(also bin.pbo was renamed)
now I named bin.pbo back and changed the data directory path and it started up, but cant load the layer data etc on P:\
so yes that seems to confirm it
'buldozer' expects to find P:\bin\config.bin/cpp
when making a map, binarise also creates some config files in P:\temp
I always refer to 'buldozer' as meaning -buldozer as the buldozer exe is asking for heart aches. (which is not anyone's fault btw)
TB started with VR world as the map config 😄 seems to work. just got to figure out why my water config parts are not loading. Im pretty sure they have worked at some point too
so yes, 64bit exe buldozer in TB does read the p:\bin\config.cpp now with launch parameters -world=vr -worldcfg=vr -buldozer -filepatching -name=Buldozer -window -exThreads=0 -noAsserts -cfg=buldozer.cfg
and in seems to work same in object builder too
so main key seems to be to use 64bit exe
funky
I would say 32bit isn't supported anymore anyways
We don't test it, and I won't invest resources into it unless its majorly broken for players (not modders, not serverhosts)
makes sense
yeah seems like in the end it does work now again with the 64bit exe.
thanks for explaining how it reads the bin
?
"configuration file was not found"
steam verify your bis tools
my guess is it can't find arma3_x64.exe
eg the main game file
you might have moved the game folder to a different drive?
could be many things. what do your settings look like in Object Builder
pretty simple question then. is that external viewer where it says it is?
in that case I agree something is nonsense
ah, hang on buldozer IS firing up , it can't find buldozer.cfg. Why? dunno
(welcome to hell)
😅
is P drive set up with Arma3p?
yes sir
as HG says. But fyi: the cause of the error is because the actual body of class Rotations is supposed to be in the parent model.cfg (if there is one).
its not really super useful class to be honest
'good' model.cfgs extend all the way back to the root of the P drive. An example would be you create an OfpManSkeleton (and a Rotations) in P:\model.cfg because it is constant for every project every p3d you ever make. Typing this crud once prevents future typos.
and thus, you then create a model.cfg containing all 800 wheels <grin> for every tracked tank. etc etc
the bis wiki contains the best description i've ever read (from bis) about model.cfg heirarchy. Don't leave home without it.
its strange because this only happens with my friend with his own pboproject (and im pretty sure we have the same settings)
same files too config, p3ds, and everything
and now he has this problem, while i dont
locate his/your tank_F
his has sth like
{
a,b
c << missing d
e,f
}
tank_F will be in a parent model.cfg NOT the project folder you/he are using
skeletonInherit = "Tank";
skeletonBones[] = {
"zasleh","otocHlaven",
"recoilHlaven", "otocHlaven",
"hatch_gunner","OtocVez",
"hatch_commander","OtocVez",
"commander_turret","OtocVez",
"commander_gun","commander_turret",
"otocHlaven"
};
};``` this is it i think
i swear im literally just giving him the model.cfg file and this error only pops up for him
should be
"otocHlaven", ""
every bone has a pair
in this case "otocHlaven" has no other attachment. eg ""
how about a thank you?
arma3p version 1.66 now fixes terrain builder AND object builder to use arma3_x64.exe permanently (if not done already). No other option arguments are affected. You are strongly advised to check out the bin\scripts folder for additional buldozer tools.
Dude, let me thank you instead
EBOs
why dont normal modders have access to make them?
is it security concerns or something like that?
bc i never see EBOs get their models stolen and stuff and that would be nice for normal mods 
bc i dont see EBOs get like torn apart and have stuff stolen from them
Well security concern would be the best reason to say NO, I guess
understandable bc im guessing if they gave out the tools to make EBOs someone could reverse it or somethin like that?
the use-by date for ebo encryption is around 2 weeks before it's cracked open and once one is cracked all other ebos are cracked. there's nothing to 'crack' with obfuscation. Each one is it's own nightmare for a thief. To the best of my knowledge no-one has ever successfuly retrieved an obfuscated p3d, open one? sure, used it? no. changed it? impossible.
which tool? or you mean the basic dialog panel? I that, reinstall the tools or at least verify them.
i did
didnt help
Are you sure what you're trying to launch is Arma 3 Tools
you 'did' what exactly?
and of course if you expect help then answer the question, WHAT tool???
ok
What about launching trhough Explorer
yes! go to the arma tools folder in steam and click on Arma3tools.exe
what
same thing
what what
i didnt understand
Explorer = the folder explorer
ohh
Windows thing
Do you have OneDrive or something?
Maybe
Delete Arma3Tools.exe and verify and try again?
Still what
Restart Steam or Windows even
i did a few times
Did what
can you .zip or something you folder and ill place it in mine?
Zip what
if you STILL have "1 file failed to validate" there's your problem.
try and provide better information than the terse answers you;ve given us so far, We aren;t mind readers and we are NOT in front of your pc. for all we know your tryibg to use an external drive that's currently powered off.
im sorry i didnt understand...
- Summary is not useful detail to solve anything
- Do not abbreviate ANY words even if you think that is obvious
- Answer every questions correctly if one asks multiple questions in one post
i'm trying to check update for 28 mods via steamcmd, while its working fine its a bit slow. I tried to multithread it by starting each job in its own thread but steam is throwing a fit about Rate (Limit Exceeded) and eventually temp blocking ip. Any one know there thresholds ?
parallel invocations with same data folder can also corrupt your ACF metadata files
If you have issues with models getting stolen, there'll be a new thing for that in 2.18, DM me about it after it's released
alrighty thx
👀👀
may not help with what you are asking - still may be of interest https://github.com/BytexDigital/SteamCLI
@glossy inlet ?
@smoky halo i got it working
cool. you have an example ebo?
Issues with packing my pbo, hopefully this is the right place for this:
PBO project:
Addon builder:
premature EOF usually means the file is corrupted, resave it with object builder
yup, seems to work
Thanks, I’ll test it once I get back from work
Lol if mikero himself approved the comment its gotta work
tools update
pboProject: fixed saving of -B no binarise'
dll: fixed bad relative #includes in pbo
derap: removed altering enums to a value. (left as a "text" for the engine to decode instead)
@severe lava is there a way with the armatoolbox to create export configs and add them to meshes with scripts?
export config?
Tthe export configs themselves are stored in context.scene.armaExportConfigs.exportConfigs, you can add an item and set name and filename to the appropriate config name and file name for export.
In order to add the config to a mesh, you need to add it to the object's armaObjProps.exportConfigs, it's an array of items with name equals the name of the conifg it includes.
Yeah, the toolbox supports gatering objects into a single export by means of export configs. It's a shortcut for editing and exporting multiple versions of a model from the same file. For example, if you have three different barrel length, you can make three export configs, all of them with a set of base meshes that are common to all of them, and adding the approriate config to the barrels to generate three different models.
I did that when I made the CUP Abrams, there was no way I would edit six or so separate models and keep all of them up-to-date... I'm lazy but I can code 😄
aa right that
@sand hound ATBX_OT_add_obj_config in operators.py adds the config to the model, ATBX_OT_add_config in the same file creates a new one
This right here, being lazy through coding is great
Also means that I won't get carpal tunnel trying to create 150+ configs
cheers
this here is the thing called too many variants 
don't think I can give the same name to 70 odd towns
you know those signs that marks the border of towns along roads
making those for mehland
70+ locations * 2 for start and end signs = carpal tunnel wrist be gone
hey if I can get it to a decent level of automation I might hand it to terrain makers
👍
you could also automate that by making one base p3d and swapping the sign texture with a batch script and mikero tools into multiple p3ds
thought about this approach, for this I'd either have to make individual textures for each town name, or find a way to edit the UV of p3d with code
If I can get this approach to work properly it'll spit out as many signs as you need in groups of 32
shiny new subscriber dll
*fixed bad relative #includes in pbo
*derap: replaced enums to a value from integer to unquoted string
this to allow the engine to 'see' it (similar to scope, private, and protectd
*rap: copes with multiple enums in a cpp file
'allows' enum to have a label
'forgives' trailing comma
enums can be negative.
uses ordinal values when no = assigned to any given name
this update will make it's way to the free version soon.
--- subscriber version of extractpbo updated
+added -R do not convert param files a (config.bin eg)
+ added # line
+ restored vbs lite
forgiving trailing comma my beloved
yep, you'd be surprised with binarise when it produces a untranslatable 'error3' because of them. Fortunately my tools never let binarise 'see' a param file. (ps it's actually convertFileChng that the root cause)
lame
Hello guys, how to avoid this error? (PboProject)
Binarising...
binarise.exe took 0 seconds to complete
Checking for binarised rtm...skeleton failed</Bis binarise>
Do you have a model.cfg in the folder with your p3d, having a class name identical to the p3d file name?
yes that error go away, now i have this: (Bin.log)
22:08:17: Warning: CfgVehicles missing in PreloadConfig - may slow down vehicle creation
22:08:17: Warning: CfgAmmo missing in PreloadConfig - may slow down vehicle creation
22:08:17: Warning: CfgNonAIVehicles missing in PreloadConfig - may slow down vehicle creation
I reinstalled the p drive, this seems to have solved the problem
subscriber uodates to deWss, deWrp, and DePew
mostly to ensure backward compatiblity.
@pastel isle in here mate
Hey guys, having dramas with Mikeros PBOproject, getting an error "no configs or missions found in project folder(s)", have done a reinstall and all of the tools and my project drive
Any ideas? files look ok i believe
is there a config.cpp or mission.sqm in the folder you're trying to build?
Yeah there was, it has been working fine for ages and it just stopped.
Ive managed to just reinstall it again and selected different locations and it worked yippe, love it
Hi, i'm trying to open Object builder but it won't open, it appears in the windows task but the nothing appear (I opened it a lot of times in the past, it's the first time)
its possible it opens off screen
so you may need to use the task manager to maximize it so its drawn back into the view
it work thank you
Added Ukrainian to Elitness.exe and PboProject.
Додано українську мову в Elitness.exe та PboProject.exe
Enjoy
Are there any tools to track what is impacting performance in game
https://steamcommunity.com/sharedfiles/filedetails/?id=1652506957
This is the best you can find
Awesome sauce thanks
Profiling branch, diag_codePerformance command.
Though ArmaScriptProfiler has engine profiling, If combined with profiling binary
But I don't know if that still works, long time no test
Hello,
I am currently developing a launcher that updates the player's modpack and allows them to launch Arma with it. I am encountering a problem because I can launch Arma, but when I try to connect to my server, I get a BattlEye error. I have included the -beservice argument in my launch parameters, which I believe is supposed to activate BattlEye. Do you have any idea what the problem might be?
Additionally, when I look at my game logs, I can see the parameter -beservice being displayed.
Here is my code:
string appToRun = Path.Combine(directoryPathToFolder, "arma3_x64.exe");
string a3urlPath = Path.Combine(directoryPathToFolder, "@A3URL");
// Get the path of the user's "Documents" directory
string documentsPath = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments);
// Construct the full path to the arma3.cfg file
string arma3ConfigPath = Path.Combine(documentsPath, "Arma 3", "arma3.cfg");
// BattleEye path
string battleEyePath = Path.Combine(directoryPathToFolder, "BattlEye");
// Normalize paths
arma3ConfigPath = Path.GetFullPath(arma3ConfigPath);
battleEyePath = Path.GetFullPath(battleEyePath);
// Initialize launch arguments
string launchArguments = $"-mod=\"{a3urlPath}\" -beservice";
if (File.Exists(appToRun))
{
try
{
ProcessStartInfo startInfo = new ProcessStartInfo
{
FileName = appToRun,
Arguments = launchArguments
};
Process process = new Process
{
StartInfo = startInfo
};
process.Start();
}
}
Thank you in advance for your help.
I've just tried to run my BEService.exe file before launching arma but I still get the same error. BattlEye : Game restart required
What do you mean ?
The BEService.exe is not the BattlEye exe ?
Thanks for your help
there already is
oh
it would appear im blind lmao
bc it's really annoying 💀
not half as annoying as trying to differentiate between genuine #define names and bullshit
two minutes of your time correcting it 'properly' or 5 minutes stuffing about with the warnings panel
doesnt seem like no big deal
if it's a #define name then it has #define prior to it right? or does that change sometimes
how the hell can you 'detect' a define
model-This\thing
=This\Thing
or
this\THING is a dead giveaway
how about
class apples, Apples or APPLES
which one shouts at you that it is not what it seems??
if you've never spent half a day trying to find where the hell
class apPples: fRUitis, then it remains to bite you.
simple, straightforward, golden rule, FULL_UPPER_CASE is reserved for #defines. Not even Micro$oft break that rule.
bis aren't to blame here for their mixed case 'comondefs'.h' that file was created a few years before the above rule was adopted as sensible. Not sure, not certain, but with some exceptions, they too use full upper case.
yeah no I haven’t lmao
so just go back and replace all of those with upper case?
always
Hey, this seems like the most fitting place for this. I've been having an issue with the Arma Tools program where it'll crash immediately on startup. It'll flash a white window for a second as well as a symbol in the taskbar, afterwards it'll just close down without an error message and it won't create a log (unless it creates other logs in a different place that I don't know of, all I've found is what's in the txt in the attached image). For troubleshooting I've tried reinstalling and verifying both Arma 3 and Arma Tools but nothing's worked and I'm not sure what else to try. Anyone got any ideas?
you should not really need to run it more than once
all the tools run better when started from their own exes without the launcher inbetween
but if it does not start even once then that can be a problem
Alright gotcha. All I mainly need Arma tools for is mounting the P: drive, how would I do that without arma tools?
you can path it to where you have had your P drive mounted from previously
huh? why would that even be a thing 
the launcher does not often play well with win10+ user account permission management
causing issues with the tool programs seeing/accessing P drive properly
hello, there is a way to get what mods one steam user is suscribed to via the API ?
i want to add this feature in a webapp, but i dont know if there is a way to do it even with SteamVerification
Which API?
You mean the steam web API?
Or Steamworks SDK ?
Web api has the ability, but only for game publishers. Not for users to check their own
https://steamapi.xpaw.me/#ISteamRemoteStorage/EnumerateUserSubscribedFiles
https://steamcommunity.com/profiles/7656119949378XXXX/myworkshopfiles/?browsesort=mysubscriptions&browsefilter=mysubscriptions&p=1
https://steamcommunity.com/profiles/7656119949378XXXX/myworkshopfiles/?appid=107410&sort=score&browsefilter=mysubscriptions&view=imagewall
Replace the steamid there by the users own ID.
This gets you a website, listing the items. I assume you could just uglily parse this
&p=2 at end for second page, and so on.
https://steamapi.xpaw.me/#IPublishedFileService/QueryFiles Maybe you can use this somehow to filter for only subscribed ones
you'd be limited to the key owner if its even possible
Yea I’ll be a little ugly but I’ll do it this way probably
Yea in quite sure it’s limited to the key owner
Hello tool makers
Wondering if anyone knows of any exposed functions that an extension could make use of to extract image data from in-game cameras or player perspectives?
To then, for example, display on a website
I've not had much luck in my research
My only workaround which isn't ideal is limiting the "head cams" to real players by running the screenshot command on an interval with the DLL mod uploading it to the backend
Not a thing
With the latest DirectX access, you could capture a screenshot of the game
Its currently not possible, but it would be possible to expose access to the texture that the R2T textures are using, so you can dump the contents of it out.
But that requires the client you're grabbing it from, to actually be updating the texture. Which it only does if its visible on-screen
Make a feedback tracker ticket about it, and I'll take a look at it for 2.20
@glossy inlet Well that would be incredibly awesome. I'll do that now. In the meantime I'll see if there's some kind of workaround doing what you described by rendering R2T onscreen somewhere not annoying for the main host, unless 2.20 wouldn't be extremely far away?
2.20 mooost likely will not be this year
@glossy inlet T183724 - Let me know if you need further details. Thanks mate. Fingers crossed this happens in the near future!
Could we render the same scene from 2 slightly adjusted points too?
Like literally.... i need a second camera just slightly offset (and the main camera slightly offset too) for some fancy thing 😏 
yaaay, stereo photos
panoramic images would be really cool tbh
Probably. But you'd need to find the right point in the rendering pipeline to do it. I don't know if the current available ones are suitable
I tried to get Nvidia Ansel going, which should be able to produce 360° screenshots.
But I couldn't figure out the correct camera adjustments
anyone here tried DXVK with arma?
a lil unrelated to the current conversation but i just remembered it and im curious if there would be a performance improvement
Virtual reality mod is more my thought here
Finally playing arma as it was supposed to: puking when running for 5 minutes, full speed, 80kg straight
Full realism archived
May I suggest adding cartoon-like boxing gloves with extenders that punch you whenever you take a hit, for a fuller immersion?
Real force-feedback!
so much fun wooo
I have seen others use it
think imma try it for a big op tonight
iirc DXVK relies on a cache so performance will be bad for the first bit then get much better
As far as I remember it was just all around bad
💀
welp
i just tried it out with optre with max settings on madrigal with 12000 view distance and it was running like a solid 50 with a LOT of ai placed down and fighting
i guess ill find out tonight
when making an extension that relies on lots of other libraries, will arma 3 handle it if I bundle them into a single dll?
Presently it seems to work if I dump the required dlls into the root arma 3 directory
Using c#
Maybe I'm misunderstanding you, but why are you expecting that it could "not handle it"? Not handle what exactly?
I'm probably just too tired and overthinking it, had made the assumption that for whatever reason it wouldn't load the bundled references into memory for access by the extension, for some reason
When compared to dumping in the root directory
And, for the record, if you want to store several DLLs somewhere else, you can SetDllDirectory/AddDllDirectory from your extension, before loading them. You may have to use a different stub extension to do that, if your extension required these dlls at load time
I'm not using C#, so I can't really comment on the bundling that you're mentioning (since i don't know how it works), but if it fails, you can then try the AddDllDirectory method
Will do, thanks mate, I appreciate the insight
Alrighty, bundling worked, not sure why I thought it wouldnt, haha
Need some sleep!
We just have to convince dedmen to get into vr 😏
So that he implements it on a weekend, off time 🤪
If someone sends me a index then I might 🤣
You Son of a Bitch, I'm In
Let's goooooooo!
💸 💸 💸
100/1079€ archived
nah just get urself oculus quest
way cheaper and more features 💀
I seriously think I would be freaking thankful to have A3 in VR without any interaction but just moving and flying around
Tried getting there ... but my hook skills are very lackluster and i ended up not being able to get the second render pass going at all 😦
tho ... then again ... it ain't like i was able to try a lot
A3 VR would be amazing
A whole generation of hyper fit gamers playing A3 in VR with cardio fitness never seen before
hyper fit?
Sitting in your chair and turning your head? .. wat
I was thinking of VR with a 5x5~ space for running around, extra fitness if you have a treadmill for running those endless kilometres lol
Nah, they've a point
Arma vr would be the perfect platform to lose weight
With you emptying the contents of your stomach every time you got armad
The walking part happens with mods 😏
If extensions could provide UI controls.
A:
UI config contains name of extension and uiClass
engine calls extension to get the ui implementation:
RVExtensionRequestUI(string uiClass, interfaceStructToFill*)
B:
Extension calls engine and "registers" their uiClass.
UI Config then only needs to contain that uiClass name.
A means the UI config needs to contain the name of the extension.
B means differently named extensions, could implement the same UI class, and it would be easier to move a UI from one extension to another. B would also need to handle duplicates some magic way..
B is quite a bit more work, and I think someone needing to move a existing UI from one extension to another is probably not a thing?
I feel a Advanced Developer Tools update on the horizon 🤣
omg
I think I have a use case for that. Can't wait to give it a try.
It'll also be on next prof branch, but not in changelog
i have a use case its called not having to touch gui in rv4
Documentation
https://community.bistudio.com/wiki/CT_EXTENSION
https://community.bistudio.com/wiki/Extensions#Extension_UI
Sample ImGui and WebBrowser: https://github.com/arma3/RVExtensionImGui/blob/main/dllmain.cpp#L38
Native webbrowser
https://community.bistudio.com/wiki/CT_WEBBROWSER
This will go into 2.20 so we'll have plenty time. But I'll need some feedback about it to refine it.
Will be usable in next profiling/dev-branch.
Is there any way to call back from JS to sqf?
Can’t find it in the docs
(Except confirm / alert)
confirm/alert is the way
Hmmm 😕
So the only way to pass "complex" values or more than two events to SQF is to encode something into the message?
Extending this just a tiny bit would make it soooo powerful. I would imagine something along the lines of the following:
- Allow dispatching events to SQF:
window.dispatchCustomArma3Event("event_type", [1, "two", true])
This takes a Event type (string) and a payload. For the payload it would be enough o allow just basic primitive types (number, string, boolean) and maybe an array of these types. - In SQF you have another control EventHandler
JSCustomEventwithparams ["_control", "_eventType", "_eventPayload"]
And the cherry on top would be to allow returning s primitive in the EH that then is the return value of the window.dispatchCustomArma3Event (or even better make it Promise)
Thats enough of me just dreaming 😂 Either way: Love the changes! Great work! 🥳
I do not have the power to extend it.
I am limited by what API steam offers. Otherwise I would extend it and add security improvements
Ahh god dammit. Hoped for CEF or something 🥲
It is CEF, but on steam's side, And they offer limited access through Steam API
send entire mission as json via in game browser 
any clue on binarizing floating objects in p3ds
bc i want to binarize them 100% it's intentional
why on earth would you NOT want to binarize any p3d?
and better yet, how would you achieve that miracle?
your description of a 'floating object' probably means proxies. Which in themselves are p3d and which in themsevles are also binarised
hell, even the rvmats they use are auto binarised if they aren't already, because they are baked into the binarised p3d itself.
recomend you use Eliteness (it's free) to getter a better feel of what p3ds contain. It can inspect any p3d you ever come across from the very first 'demo' version of Flashpoint. xbox, vbs, bis, and the latest DayZ p3ds. Don't leave home without it if you're keen (as most are) in changing textures. And yes, it also decodes every type of paa while it's at it.

i think i misworded that
i have a p3d im trying to bin
this was never in p3d, it's being sent to arma for first time
then use pboPro to find out what, if anything is errored
because sure as hell, Addon Builder can't help you. Not, won't. Can't.
it would also help to know what a 'floating' obect is, because from the perspective of binarize, all objects are equal.
💀 yeah it was addon builder
everyday i wake up and try to convince my friend to use pboproject
and she keeps using addon builder
@ripe marsh this person right here

I will strangle you
no further comment then except to say, when she encounters issues it's not up to you to ask the questions! @ripe marsh you have your own reasons for sticking to bis tools, and it doesn't trouble me at all. But do the hard work yourself.
for the record I use pbo project when bis tools don’t want to work- and I was importing a model for scout >:( big fat liar.
I get why I should use your version of the tools, I just don’t feel the need too for my simpler projects.
a3 tools is the IOS of the arma modding toolbox and im ok with that
fyi: the complication here is they are the IOS tools for Bis devs internally. There are too many assumptions made for their usability outside the bis dev environmnent. A typical example among many, is the internal tooset bis use automatically binarise all p3ds before wrp processing eg occurs. Externally, tests need to be made to check this is true.
that’s actually an incredibly interesting piece of info
it's the best example i can find. another, eg, is it is impossible, using their toolset to binarise any rtm which uses a skeleton other than ofp2mansskeleton. Bis use an unpublisged tool to achieve tha.t
whenever I delve into custom skeletons or terrains ill end up using your tools for sure, but if im just making an Aux mod for a unit and the most complicated part is the custom TFAR dialog, Addon builder does the job just fine
o7
no arugument there. the assumtion you make is that ALL your file\referen\ces are correct,
(this more started from a silly joke when queen would have those horrible error codes with addon builder and I kept making a jest of it and saying use pbo project lmao)
<grin>
but ye thanks for the info tbh I didn’t know a lot of that
a now well known bug in unbinarised p3ds is they can have a 'P:' drive embedded agains their textures with consuqent rpt logs becoming so noisy (the log) is ignored.
PboProject when I don’t have a texture yet but im testing another part of the code
WITHOUT THIS FILE YOUR CODE WILL EXPLODE 
thank god I don’t build without binarizing
it copies into the Odol
not binarizing a P3D is a weird thing to do (unless im crazy and there are reasons)
it WHAT
LMAO
That’s hilarious
arma 3 tool lore 😔 god help us all
pboproject (actually the dll) has 20 YEARS!!!! of arresting known bugz
let's talk about her while she's gone 😎
OH YUM camambert
Head you so negative over it
How opening the extension .vars?
rename to .bin and use CfgConvert
I run depot downlodader to grab latest diag exe etc with this command:
depotdownloader.bat -app 107410 -depot 107411 -beta development -username %USERNAME% -password %PASSWORD% -remember-password -dir "%A3DIR%" -filelist "%FILELIST%" -validate
that I've grabbed from interwebs while back. today it said the app has no branch called development and didnt download anything.
Might anyone know if something has changed here?
you'll have to update your depotdownloader to latest version
Hello all I've been getting a strange issue with AddonBuilder. When I pack and binarise a mod it finishes at about 200,000KB though the project should be closer to 600,000KB. For some reason it randomly stops quarter of the way through. Has anyone encountered this before or does anyone know of an alternative packer with a binarise function ? Cheers all
- Are you sure it lacks some files anyways?
- Are you sure you meant 200,000 KB, not 2,000,000 KB (2 GB)?
- 100%. After unpacking it it lacks my model.cfg, all textures & RVmats. When loading up the game it acts like all those are missing. When packing with another program (which I can't binarise with) it all works fine. It's also making all files MUCH smaller than they should be, for example a backpack should be 9,671 KB but is coming out as 2,136 KB
- Yeah, this particular mod is indeed coming out at 200,000 KB (220 MB) and not the needed 600,000 KB
I've not done anything different, it has just decided to stop working
- After a quick look I've also discovered there are whole models just missing. There should be about 50 though when it finishes there are only 38
- Binarize does a binarize process aka compression. So file size will not be a concern. model.cfg is also included into these P3Ds so not a sign of concern too
- Why you can be sure it has to be 600MB?
- Do you mean 50 P3Ds should be there but only 38?
Probably be easier to just show you. The first photo is before it goes into Addon Builder & the second photo is how it comes out. As you can see it's not actually adding some models, vest folder & my data folder (which houses my textures). I know it should be at least higher than 200MB but seeing as it's not transferring those files I can hazard a guess to why the PBO comes out light
(My naming conventions make sense to me and that's all that matters) Also a quick shoutout for model: BagBedCUM.p3d. A truly legendary name
Please show Addon Builder settings and its Options
OR simply use pboProject , it will scan all model.cfgs for 'correctness'
What mikero said is seriously correct though
I do have it, just don't know how to use it; is it a help tool or can it pack mods with binirisation ?
It IS the tool to make a PBO
Gottcha
that or hemmtt
At least Addon Builder is easier to consider to categorize put it into garbage bin
hahaha
I'm getting this with it, how could I be missing files ?
I have indeed
One of the first things I did when starting modding
Strange, I've never had to store my mod projects in the P drive in the past
Are the files above that line the ones missing ? I'd assumed it was the program loading up what to pack
why don't you paste the last few lines of the log?
well, p:\webbing does not exist
So then I assume this is the issue, do I have to output it to the P Drive or something then?
you're surely smart enough to realise that D:\webbing does not exist!
using == is foolish
might look good in your eyes, too many tools will get upset with it. pyton eg
I have no clue where you're getting D:\webbing from? The path is defined as D:\ARMA STUFF\BlenderFiles\Assets== Infantry Divisions ==\Webbing? So then I need to remove the == Infantry Divisions ==\ or what? I do apologise that my lack of coding is frustrating but this shit isn't common sense to everyone
you chose to use D:\ as your source folder. D:\ automatically becomes the start of all files.
\webbing means D:\webbing
Right I think I understand it's not searching for :
D:\ARMA STUFF\BlenderFiles\Assets== Infantry Divisions ==\Webbing
But it's searching for
D:\Webbing
which is wrong. everything starts at \ there is no relative addressing
I have no idea what that means. Would moving the Webbing folder to the base of the D Drive resolve it?
Can you elaborate why?
use virtual folders (symlinks/junctions) to avoid moving/duplication
how many others have called their pbo the same thing?
What happens for users who want to use yours? How will they know the differrence? History will tell you ALL 'webbing'.pbos get consigned to the trash can.
simply use a mytag_ just like bis do,
@quick turret if you still have trouble, contact me.
@stark cypress out of curiosity: did you ever get your extension whitelisted? I remember you complaining that it was taking a long time
Interesting. I had parts of my extensions whitelisted "against my will" (as in: I never asked) so I was wondering how long it took for you
Oh hey mikero himself joined the convo 👀
@stark cypressthe use by date for encryption is around two weeks before it's cracked. That's the comercial reality for bi's ebos. THe other thing worthy of note is once the key is found, it's found for ALL ebos.
you also misunderstand (as many ppl do) obfuscation remains intact EVEN when read by the engine. What you and other fail to appreciate is the files and their contents are a dog's breaksast. To date no-one in the past 5 years has succesfully ported a scrambled p3d to some\where\else.
To a lesser extent, but still a nightmare, config.cpp is not worth the effort.
vbs use that approach in ther 'ebos'
the great advantage of your java scrambler is each pbo it makes, is singular. there's nothing that can be used when hacking open the next jbo.
no
an pbo has no context to discover which server it's on. sqf maybe, but the code must remain unscrambled, unbinarised.
you open a can of worms relying on the server owner to get it right, AND get the AES encryption key.
At which point does the stealing part take place? Because if you're worried about someone dumping something when it has been loaded to game's memory already, then it doesn't matter how it looks on disk, since it's already been "decrypted"
Otherwise... just don't share it on workshop and distribute it yourself 😉
I'm still trying to figure out what is your threat model
Who exactly is the one who would be stealing from you and at which point in time and having access to what at that point in time?
Define "stealing our mods", seriously
By what means?
Bypassing BE, running an SQF script dumping the scripts? Or something else?
Sure. I'm going to sleep so you have the whole night to do so 😉
Basically, we have our own assets and map, vehicles, etc. People just basically CTRL+C CTRL+V the .pbos with the assets and all that, and put them in their mods for them to make use of without permission of any kind
Thats my definition of stealing, somebody blatantly running our assets, vehicles, buildings, map on their servers without our permission, just yoink it and claim it is yours because you like it
Drop the name!!!
I am a Spaniard, no new york server at all. Most of the community is stuck at Jackson County / Lakeside and we gotta give them our own Lakeside lookalike 😂
Dude that server scares me
Owner definitely has a Malware embedded in the mods or smth
Talked to him and he doesnt really care about their content being stolen, smth must be going on
Oh I heard about the Germany map thing
They blatantly copied a german community's map
A Spaniard guy opened his server (he got the mission and all that) and he DMCA'd the whole mods from the workshop
The anzus owner
That server is not surprising in my opinion tbh
I dont think theres much love put into it
@karmic nichesince it's already been "decrypted"
for aes yes. Obfuscation is a different fish which remains scrambled. It all 'makes sense' to the engine but scrambling remains in effect causing little joy to the parasites. (nothing of course prevents putting THE Opbo in another server tho). But, trying to alter it in some manner produces hair loss.
not having a slap at you , Stack, am attempting to correct most people's misunderstanding that extracting an Opbo, or reading the config gains them anything useful.
Quick correction here, obfuscation does a poor job on sqf coz people should share the ideas in them. Sth that was inherent in all flashpoint realeases btw before monetising what they shouldn't.
2cents deposited.
I have such a thing. Its been used by some CDLCs and terrain mods for their closed beta's.
- No
- Yes. An d you are going about this the wrong way.
To date no-one in the past 5 years has succesfully ported a scrambled p3d to some\where\else.
As far as you are aware that is.
Yeah, actually I know what's the difference between obfuscation and encryption quite well 😉
I was trying to pinpoint the actual need of McIvan and he was asking about the real encryption, hence me asking these questions
HEMTT 1.13.0
https://github.com/BrettMayson/HEMTT/releases/tag/v1.13.0
Use winget upgrade hemtt!
Reminder WinGet Updates usually take 1-2 US working days
Nice! How do you set it up so that winget has your program in its "repository"?
It's in the official repo, you just use winget install hemtt if you're installing for the first time
😄
is there a tool to automate upscaling of RTMs
aw
chop chop some random college student arma 3 modder 😔 god bless them
Mainly pointless
Game loads and decrypts everything anyway
Models are binarized anyway
what does upscaling mean?
changing the scale of of the animation larger
k
that's the only way it could make sense to me. thank u.
since bone positions are just math it could be done programmatically im sure
rtm movements are in fixed increments, they work in relative position from an original position (unbinarised) or relative to their last position (binarised). Only difficulty with binarised is that addon builder has no ability to pass any skeleton to bis binarize. (ofp2manskeleton is default)
Scaled movements would be quite easy to implement with either of the rtm formats
Hello mikero
Guys, is there any extensive documentation on PBOs rather than what we alreary have?
the biki provides all the info you need. Am wondering what you think might be complicated.
ok so
stuff like the halo spartan skeleton is literally just upscaled
so would that mean it's that shrimple?
its made via retargeting as far as I know
it's literally just upscaled lmao
im an optre dev 
have fun
im just curious if there's a tool that could automate it cuz iirc the hard part was going through 2k anims and upscaling them manually
not saying u dont know it im just saying what i remember
i've never had a request for deRtm.exe to do that.
the actual method for doing it was done like FOREVER ago
so at this point im just trying to figure this out lmao
the bikini?
Hey folks, i'm trying to pack and binarize a pbo with my custom truck from one of my mod's project folders as test for binarization, by using addon builder. Reason for using AB is tied to the usage of 2 cdlcs as core dependencies, especially regarding animation, sounds, and penetration mat, so i guess i would need to have the cdlcs folder structure in my pdrive in order to get pbo project to pack my stuff. This is why i decided to try AB instead. With this said, when i pack and binarize my truck pbo, all metal/armour plates penetration rvmats (vanilla ones assigned in these trucks) get lost, while it looks like the process of binarization retains the wood and tyres' rvmats. Also, the glass transparency looks not good, despite having moved alpha faces on top, but this might be related to the transparency values of my alpha channel of the _ca glass texture. It is two days i'm trying to understand what the hell is going on. I pack with AB from my P drive, i tested different "list of files to copy directly" into my AB options ( i currently use this list .pac;.paa;.sqf;.sqs;.bikb;.fsm;.wss;.ogg;.wav;.fxy;.csv;.html;.lip;.txt;.wrp;.bisurf;.xml;.hqf;.rtm;.rvmat;*.shp; )
As you can see, just dirt when hitting the metal. Wheels texture rvmats are missing on purpose atm (rvmats are dependent on another folder which wasn't loaded)
you can create dummy files for EBO references. i think only rmvat, and in some specific cases rtm and textures do matter for binarize. @sly skiff probably can confirm
rvmat + bisurf you probably also can extract via loadFile+copyToCB (sqf in console)
Correct yes. It can be a little tedious, but it is possible.
For sogpf we have already packaged bunch of our paa and rvmat on our drive modding support package. And more come in once I have moment to process next batch
This is a total new thing to me, i will try to google this and see what it is
I use it for my groups Music. Music is not binarized and can easily be unpboed and put into another pack. And we already had one group steal our music so its a legit protection for us. We already had our own encryption but with ebo now we can give our music away and be sure that the real author will always be displayed for everyone who uses it and no one can just put their own name on it.
lol.
Dummy files for ebo references are related only in case i use pbo project, correct?
Yes
not sure why you're so against it head
Oh actually for making properly working P3d may also require dummy file for things like transparency being written into the model through using _CA texture
its not effecting you in any way, shape or form is it?
unless ofc you're trying to rip off other peoples work
Mm so, if I understand correctly, i need the vanilla glass_veh.rvmat into my P drive, which i used for my glass? If this is the case, it is already in my P drive amongst other vanilla sources, just like the penetration rvmats
yes you need any and all referenced materials and textures in your p drive
because the rvmat gets binarised into the model when its binarised
so if they don't exist arma just uses defaults
Alright, so if binarization doesn’t get them properly, then i guess it’s a path related issue
Might not be related to the paths assigned in the p3d, which works correctly when unbinarized. So it must be related to my p drive. This assumption might be correct in this case?
i may have found the issue
my path for textures in obj builder wasn't set up to the P Drive
encrypted pbos are nonsense
it hurts those who would do no harm (eg. those who want to unpack for learning) and those, which shall be "locked out" know how to decrypt it anyway ...
so in fact: you just do harm
but that discussion was up in so many discord channels already
path should always be relative - not absolute like p:\...
For some types of data sure like scripts and stuff.. but not for our music or videos for example.. you dont have to learn how ogg files look like... And we dont want to lock out those hackers like me who can decrypt that themselves. We want to lock out those guys who just want to copy stuff and pretend they made it.
It's a simple method to ensure peoples work is not stolen by the basic of script kiddies and Life servers
see
that is also some thing ...
in theory: you place yourself better then thousands of scripters out there just because your work might not much to learned from
practically you should be treated as everybody else
however ... i am aware of the fact that most content creators do WAY more then 99% of the scripters ... but thats more some "same treatment" thingy as encryption for non-script content looks like "scripters put as much work as we do into it"
((yes ... loost track of my typing twice))
set it this way, packed with this list (.pac;.paa;.sqf;.sqs;.bikb;.fsm;.wss;.ogg;.wav;.fxy;.csv;.html;.lip;.txt;.wrp;.bisurf;.xml;.hqf;.rtm;.rvmat;*.shp;) and still the same results..im gonna go for pbo project, i'm tired of this
People that are intelligent enough to reverse engineer the encryption are probably intelligent enough to just script/make that stuff on their own
^ that
@full drift ye ... you have no idea about script kidz ...
those script kidz get their scripts from people like me who dig through that stuff to annoy the admins with their gigantic security holes in their scripts which they pretend are non-exisitng
but that gets too much off-track now 😃
Binarization issue was solved with pbo project. All hail to mikero and his tools, fr
@glossy inlet if you really have a criticall script you dont want clients to rip off just do
Server Side:
topSeeeeeeecret = compileFinal "hint 'its a secret'"; publicVariable "topSeeeeeeecret";
good vs 99% people
and for thoes 1% who can get it sill they can probably make it themselfs soooo
Hi all,
Is there a register key to get the location of %userprofile%\Documents\Arma 3 (which is the default I guess)?
use regedit, search for bohemia (there are differences for each engine)
I did, found a lot of things but this user profile arma3 folder.
I have read that it is hardcoded, and if you want to change it, you must go with symlink cause it has to be there. Is that true?
I cannot find "\Arma 3" inside value/data, which smells bad...
Dunno if it is correct or not: first answer in https://steamcommunity.com/app/107410/discussions/0/541907867755198583/
Looks to be hardcoded from the wiki: https://community.bistudio.com/wiki/Profile
That's my code that I used to use years ago. Maybe it will help you: https://github.com/overfl0/Bulletproof-Arma-Launcher/blob/next/src/third_party/arma.py#L57
I switched to linux, but will check what it does tomorrow, thank a lot bro 😉
Wait! Just 2h ago you were asking about the windows registry and now you're saying that you switched to Linux? Does not compute xD
Oh wait, you meant that you're dual booting? Nevermind 😅
Yep. I am developing under linux, but will bring my ruby code under windows to complete the tool by creating the Inno Setup installer soon. ^^
Huh, it's been a while since I saw someone developing in ruby here 🤔
Since one of the goals of the tool is generating custom compositions, I wonder what is the best way to get the \compositions folder...
As in: actually never
Ahaha, just the best language ever.
I beg to differ 🙃
No offense 😂
I already did a tool in ruby a few years ago, in my OMTK, a TvT mission toolkit, there is a small stand-alone to redefine the units loadouts into an SQM thanks to external YAML files. Doing v2 now.
I am not sure about the channel where to ask for that... Any public repos containing OCAP maps tiles for lots of Maps (Icebreakr and others)?
maybe ask here (too): https://discord.gg/r98bDxgZbV
Thank you!
how do i put my mods in diag.exe?
shortcut/batch file with -mod launch parameter
some custom pbo's I'm signing in DSSignFile are not being accepted by the server even though the key is there, I've tried to get others to create a key for them, sign them and try it and same thing, people will be kicked for having file not signed by server.
do you mind if you could be more specific on that?
i have this set up, but it seems to only run normal arma when i open the diag exe
im currently in stable
arma3diag_x64 should be located in the same folder with arma3_x64.exe
Do you mean you relocated the diag_x64 and you got this
yes thats what i mean
I seriously don't know how/why you got diag exe from somewhere
maybe i misunderstood the texts ive read
but my main point on why im doing this is because im not sure how to make my mods to work in diag exe
because it seems to only show vanilla assets
I prefer the way in pinned #arma3_config
The diagnostic exe is only available when you are on the Development branch and multiplayer is disabled.
You can put it on stable, if stable is otherwise compatible with it.
Currently it isn't, because Dev branch ahs the RTDynamics dll and stable doesn't.
If you also copy over the dll, it would work
diag exe works exactly the same as normal exe, in relation to mods
the -mod parameter. There is no difference
do you mean this line in the parameters?
You are seriously thinking it overcomplicatedly
What I suggest is this
A really easy way to switch between diag and normal exe is to use hemtt. You can just have two launch settings and pass the arguments through.
this error comes up when i try to run the merge file line
i managed to get my mods working in diag.exe, but would like to try out the on the fly editing too
merge file line
What is this
That means your config is broken
I don't even know what you really mean
The error itself is very straightforward. The config is broken
how do i fix it? i dont have anything relating to cfgammo in my own configs
We cannot fix anything you don't know. Why you're diag_mergeConfigFile a extremely long config
But it clearly is inside the P:/config.cpp, which you are trying to merge into there
ok maybe i should just delete that one, because last time i merged it was months ago and i probably may have accidentally edited some things without knowing
ok so, i created a new config.cpp file. However, nothing happens if I try to execute it. I tried to move this in other folders but nothing seems to happen as well
diag_mergeConfigFile ["P:\config.cpp"]
this is the line, and there is an empty config.cpp in the P dirve
puting it in some C folder also doesnt work
What do you expect to happen when merging a empty config.cpp file?
Merging a empty file does, nothing. So if nothing happens, then that's correct
merge config file, merges a config file, into the game. Overwriting entries that were in that file.
im just following polox's tutorial on on the fly config editing and it says i need to prepare a config.cpp file... I figured that you just need to make an empty one?
You probably don't know what mergeConfigFile does
i guess i dont 
i swear ive done it before a year ago, but i forgot how i did it correctly
Maybe explain what you try to achieve?
I'm trying to follow POLPOX's On-the-fly config modifying tutorial in #arma3_config. But I got stuck trying to run diag_mergeConfigFile because it doesn't seem to do anything when I execute it. I already have the for the config.cpp location next to the line.
Even more specific, I'm trying to fix my hitpoint values of my vehicle.
This is what I was after
So do you merge your vehicles altered config?
No, I thought diag_mergeConfigFile would do that already?
How if you don't feed it the material you want to merge in.
crikey.
thanks a lot, I had to re-read this sentence a couple times to be able get what the line actually did
I completely misunderstood the point of what the command does 
i got it working now
👍
Is there anything for PAA previews in windows shell? I found this thread from 2014 but it's gone quiet. https://forums.bohemia.net/forums/topic/173552-paa-preview-in-windows-shell/
Hi there! Im working on extension for windows shell that lets you to view paa images content, its format and other info directly in windows explorer without any extra tools. Will that work be interesting among content creators?
cant say I recall anything regarding that from past years
Likewise from what I've found from google-fu. Thanks
Yes. PboExplorer has it
From my github
Thank you!!! This is literally perfect and will save so much time.

Now have heard of it if hadnt before. 👍
Maybe needs more advertising.
But I don't trust it on being crash free and fast enough. And as a explorer integration that's quite important.
Though it does seem to be fine currently
It is combining wonderfully with Voidtools Everything, reminds me of using Hammer's texture browser (in the best way possible)
Huh, unexpected. Cool!
Now you just need dokanPbo to have a full virtual p-drive without having to unpack anything
From technical interest does doken 'simply' scan each bis pbo and record it's prefix so that any subsequent references it knows what to grab? does it handle user pbos too? if so, how? (or have you pre-wired the prefix list?
It has an in memory table of every file within every scanned pbo including full prefix
so the table is built by scanning pbos then, before it's accessed by a user. There is only one prefix irrespective of the number of addons in that pbo.
It builds a internal filesystem/directory.
Same as the Arma game itself does.
It builds the whole directory tree in one big array/hashmap.
When you start it, it finds all pbos (same as Arma does with -mod parameter)
Then for each pbo combines it's prefix with every filepath inside and puts it into big lookup table.
At the end there is no "prefix" at all, it's just one directory table
Arma uses (since I changed it) one big sorted array of all filepaths, and binary search on it.
I think Dokan is hashmap
HashSet


