#arma3_tools

1 messages Β· Page 43 of 1

barren grove
#

I hate steam -_- especially because the error message isnt giving any hints at all

#

But I am kinda confused why it is working with an different account

scenic canopy
#

Check that your Steam client is connected

#

If you've used for example steamcmd it will break your regular steam desktop client until restarted

barren grove
#

My Steam Client is connected and i already restarted it a couple of times (as I mentioned i even tried it on a different PC)

barren grove
#

Ok it seems to be a problem with my Steam Cloud, because I cant even upload screenshots

scenic canopy
#

Any pending license agreements?

barren grove
#

Nope, but i contacted the steam support

vague shard
#
src\common\globals.cpp (181) : Assertion Failed: Invalid CRT parameter : file , line 0
src\clientdll\remotestoragefilesynccontext.cpp (859) : Assertion Failed: Failed to write file after download (2)

.......src\clientdll\userremotestorage.cpp (3780) : bRet```
#

getting these when trying to update IFA3 from a contributor account

#

also the workshop item page now shows:

Sorry!
An error was encountered while processing your request:

The item is either marked as hidden or you do not have permission to view it.```
#

"%_APPPATH_STEAMCMD%\steamcmd.exe" +login %_USER_PUBLIC% %_PW_PUBLIC% +workshop_build_item "%_RELEASE_FILE_PATH%\@ww2_objects.vdf" +quit

#
"workshopitem"
{
    "appid"            "107410"
    "publishedfileid"    "937438041"
    "contentfolder"        "E:\SteamUploads\@WW2_OBJECTS"
    "previewfile"        ""
    "visibility"        "0"
    "title"            "WW2_OBJECTS"
    "description"        ""
    "changenote"        ""
}
glossy inlet
#

The workshop page showing sounds like the account needs to accept new EULA

vague shard
#

kinda tricky if you cant get to the mod page 😬

glossy inlet
#

Ev.. eh.
Even not with the owner account?

vague shard
#

its accessible via the account page on the right:
https://steamcommunity.com/sharedfiles/workshoplegalagreement#

#

but needs the owner acc to confirm it (too), it seems

#

aka contributer updates are somewhat limited by this

glossy inlet
#

Yeah.
I guess that might be a problem for very old workshop uploads. The EULA accept only triggers when uploading a new version right?
And I'm not sure if you could even revert it was contributor meowsweats

sly skiff
#

@dawn palm seem like i have received a future version of dewrp?

sly skiff
#

@dawn palm thanks, works now! πŸ˜„

#

Dewrp split needs rvmats to be in ascii format yes? at least it did not seem to work with rvmats generated with this turned off

sly skiff
#

@dawn palm nope seems like it was not that.

#

any way to tell what the error is?

sly skiff
#

hmm using the dewrpDos it seems to do something different but still fails

#

and the split folder naming is still a bit booped. could it perhaps be self defined?

sly skiff
#

now it runs. apparently .paa was missing. the console version does not though

dawn palm
#

huh?

sly skiff
#

for X reason not all tile pngs were converted to .paa which threw error with deWrpDos. And for unknown reason deWrp GUI does not start the split process at all due to rvmat error

sly skiff
# dawn palm huh?

and as a minor inconvenience the split folder naming breaks with underscores in the original folder name and LoDR_Map_Necropolis_layers becomes LoDR_Map_Split

#

also cant DM you anymore crycat Though I can understand turning off DMs on big servers.

dawn palm
#

wierd, i've only just recieved a friend request from you,where you were previously a 'friend' anyway. and i have no idea at all why you can''t contact me. I've done nothing here, afaik.

sly skiff
#

odd.

#

#discordThings

dawn palm
#

nah, goats

glossy inlet
#

Btw mikero.
Have config.cpp and config.bin in a folder, try to pack with makePbo -> you get PBO with TWO config.bin files in it.
To files with identical filename in a pbo shouldn't happen think_turtle

pliant lynx
dawn palm
#

you get PBO with TWO config.bin files in it.
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaargh

spiral forge
glossy inlet
#

second one sounds O2

dawn palm
spiral forge
spiral forge
#

moved to Oxygen 2 Misc Documentation - thank you lads!

sly skiff
#

πŸ˜‰

grave owl
#

Hi. Yesterday I released a new version of FFAA mod. This time I used pboproject in batch mode to generate all .pbos. It went good, generating all necesary .pbo signed with our private key.
Now I can't join to any dedicated server with those .pbos. It says that "ffaa_*.pbo is not signed by a key accepted by this server".
I tested this myself running arma 3 as a dedicated server and with the bikey in /keys folder.

#

I also tested this in the GUI tool, but nothing work as expected. I found I works using addon builder so I suppose I'm missing something configuring pboproject.

#

The cmd I'm using is call PboProject -B -P P:\NAME_ADDON +Engine=Arma3 -S -O +Z -N +C -W -Mod="P:\NAME_FOLDER_MOD" +Key="P:\MY_PRIVATE_KEY" in a .bat

#

I also did some checks, like signing again the pboproject's .pbo files (using DDSUtils) or other privatekey and updated mikerotools to the lastest version.

dawn palm
#

pboProject simply uses DsSignFile to produce the bikey/bisign.

there's nothing spooky within pboPro that twiddles it to something else.

my guess is you simply aren't supplying the 'proper' private key

what's not clear to me, is the outcome of you manually using dsutils yourself, whether result was good, or bad.

scenic canopy
#

you can also check if the signature is valid against a key with dsutils

grave owl
#

I did dsutils myself with a bad result

#

It somehow worked using MakePBO, and later signing myself manually. Don't know why it's not working with pboproject (and I mean by "not working" as producing a playable .pbo but unable to use it in dedicated server, dropping the previous error)

dawn palm
#

ultimately, pboPro uses makepbo. With the potential exception of the 20 byte SHA at the end of a pbo, ALL pbos are born equal.

#

my opinion is, you cannot possibly have a difference manually signing pbos, both sets work, or, both sets fail.

grave owl
#

Exactly. I'm not saying there are differences on that. To make it clear, I did the following steps using the same .biprivatekey

  1. I packed in dos mode using pboProject with +K sign option.
  2. I packed in GUI mode using pboProject with +K sign option
  3. The same as 1. but signing again using DSutils
  4. The same as 2. but signing again using DSutils
  5. I packed in dos mode using MakePBO and signing with DSutils
  6. I packed with Addon Builder with sign option.
  7. Ultimately I created a new biprivate key and checked all the above conditions.

For all the adobe, I created a dedicated server using arma 3 launcher (server option) using the -mod parameter and putting the .bikey in /Keys folder.
Then I launched a new arma 3 and tried to join my own server. The results.

  1. Fails
  2. Fails
  3. Fails
  4. Fails
  5. Works
  6. Works
  7. All fails excepts for 5 and 6 conditions.
#

So this lead to me to think about pboproject is doing something arma 3 don't like when checking the keys against each pbo

dawn palm
#

I packed in dos mode using MakePBO with +K sign option.
there is NO +K option for makepbo

grave owl
#

Wops, copy and paste, I meant using Dsutils my self

dawn palm
#

k

#

pls show me an example of the makepbo cmdline you are using.

#

I notice you are using UNbinarised configs

grave owl
#

call MakePbo -B -P -X="*.xcf,*.psd,*.psb,thumbs.db,*.txt,*.h,*.dep,*.cpp,*.bat,*.bak,*.tga,*.png,*.log,*.pew,*.lbt,*.tpp,source" -Z="*.wss,*.ogg,.jpg,.wav,.fsm,.pa*,*.fsm" P:\!pbo! %mod_folder%\Addons\

#

Yes for now it's unbinarized, I'm just checking if there was something wrong with pboproject. As a workaround I thinking by binarizing it first with pboproject/addon builder and later generate the .pbo with the MakePBO

grave owl
#

My current version of pboproject is 3.19, MakePBO 2.12 dll 8.41

dawn palm
#

apart from source and destination, makepbo of the gui, and the above should be identical

#

it is listed in the output.log btw

grave owl
#

Ok, I'm checking with the same cmd line of MakePBO except for the source/dest, let me check again

#

Ok. I created this config.cpp and it also doesn't work in dedicated server using pboproject, through the previous message

{
    class ffaa_test
    {
        units[] = {};
        weapons[] = {};
        requiredVersion = 1.76;
        requiredAddons[] = {"A3_data_F","A3_Weapons_F","A3Data"};
        version = "6.1.5";
        versionDesc = "FFAA";
        author = "FFAA MOD Team";
    };
};

class CfgMods
{
    class Mod_Base;
    class FFAAMOD: Mod_Base
    {
        dir = "FFAAMOD";
        action = "http://ffaamod.es";
        name = "Spanish Army Force Modification";
    };
};```
grave owl
#

Oh, and I tested also the pboProject 3.06.8.16 version with no results.

dawn palm
#

with no results makes no sense to me.
i need to know the version of the dll you used to get 2.89.working

#

in theory it's 7.87 but mistakes are made with assumptions.

grave owl
dawn palm
#

makebo command line will list it as part of the syntax

#

(all my tools do that)

round pecan
dawn palm
#

your files aren't in shevrons. for reasons best known to you, they are in @ancient gladed\shevrons

dawn palm
#

how about p:\shevrons?

#

why you have your source in an OUTPUT folder is a mystery

#

if you don't understand this, you should learn like everyone else by examining bi's configs and data and where they live on the p:\drive

round pecan
#

And that's why I'm asking here

dawn palm
#

fair enough

#

the bis engine is linux. NOT windows.
everything in linux begins at
not c:\blah blah
not D"\my documents

\

#

you have to emulate that with a 'p:' drive

round pecan
#

then it is emulated for me - wrong

#

?

dawn palm
#

when your config says:

model=some\where

the engine looks in (p:) \some\where

#

yes is the answer to your question.

your files for THIS pbo, start at
P:\shevrons

#

and @ancient gladed folder is assumed to mean the location of where the pbo will be stored.

round pecan
#

Ok, I'll try to do as you said, if of course I understood you correctly

dawn palm
#

you are probably better off using pboProject, which, for many errors, can help you through the process. Eliteness is good for quick 'n dirty, and pboPro has a steep learning curve. BUT, using any tool, you need that learning curve , to be successful

#

i know my english is hard for you, I appreciate you speak Russian better than I can.

round pecan
#

ahahaha, thank you πŸ˜…

vague shard
#

what tool can be used to extract a1/a2 these days?
armake fails silently, extractPbo stops when ca.pbo tries to extract into existing ca folder..

dawn palm
#

temporarily move that pbo out of the way. bis re-organised things 'better' in a3

#

you might notice i don't support arma2p anymore for that reason

scenic canopy
vague shard
#

yes please

desert hawk
#

Extracts the BI public key file (bikey) from BI signature files from addons (bisign), tested with v3 key/signatures for both ArmA 3 and DayZ. Mainly targeting multiplayer mods that don’t upload the public key files.

https://github.com/wrdg/Bisign2Bikey

shadow trail
#

@glossy inlet Using your de_stringtabler, it crashes when using - in the string.

glossy inlet
#

I can't fix it

shadow trail
#

Oh

#

damn

#

...why? πŸ˜„

glossy inlet
#

I don't have my computer

scenic canopy
shadow trail
#

Okay

#

Thanks!

scenic canopy
#

thanks, I'll have a look at it

scenic canopy
#

Yep, I can repro the issue with charaters

scenic canopy
#

Do you have something that causes the "crash randomly" as well?

scenic canopy
#

might be the same reason actually

elfin oxide
#

Wouldn't it make more sense to ask on the GitHub issue so he gets a notification there and you got your info all in one place?

karmic niche
#

Is there a way to somehow obtain SteamIDs of players that are playing with me on the server (the ones that are not set to invisible, obviously).

I'm talking about the players that show up on the Steam Overlay when I click the "view players" (IIRC) button, not about the ones that are available in the A2S_PLAYER packet - these contain only username strings, not real IDs.

Does the steam API allow me to somehow login as myself and then fetch the user IDs? Or maybe there is another way to do that?

karmic niche
#

(meaning you don't have access to the player ID, just his profile name)

#

Or maybe it is the server that reports these IDs to the client (using Arma's network protocol), which in turn passes them to the steam overlay? Because if that's how it works, then it's basically impossible to obtain that list of players from outside

shadow trail
scenic canopy
#

submitted a fix for your issue and setup CI with automatic builds

shadow trail
scenic canopy
#

the build is only in my fork until merge

shadow trail
#

ahh got you πŸ‘

#

Cheers for fixing it!

spiral forge
#

meow, trying to write my first extension, it is not going super well

  • I write in C#
  • my main class is in the global namespace
  • it is public
  • it is named the same as the project and as the dll
  • I use DllExport
  • I disabled BattlEye
  • the dll seems recognised by the game
    (no CallExtension 'xxx' could not be found)

yet all the call returns is an empty string, I am a bit stuck. does anyone have suggestions?

dawn palm
#

sacrifice three goats.

spiral forge
#

is a Horrible one OK?

nocturne basin
#

Source code?

scenic canopy
#

the most common issue I encounter is compiling as wrong arch

#

visual studio defaults to "any cpu"

spiral forge
#

I use DllExport, and properly set x64 to dllname_x64 ofc

scenic canopy
#

ideally set platform to win32 or x64 in visual studio instead of default "any cpu"

dawn palm
#

IF your dll is adjacent to the exe, it should find it auto magically

spiral forge
#

I use the

#if WIN64
  [DllExport("RVExtensionRegisterCallback", CallingConvention = CallingConvention.Winapi)]
#else
  [DllExport("_RVExtensionRegisterCallback@4", CallingConvention = CallingConvention.Winapi)]
#endif
```from the doc here
https://community.bistudio.com/wiki/Extensions#Creating_Extensions
scenic canopy
#

Yes, but you need to select platform in visual studio dropdown

#

right next to debug/release dropdown

spiral forge
#

yes yes, that is covered πŸ™‚ and the flags are set as well

scenic canopy
#

πŸ‘

nocturne basin
#

Dependency walker anything?
You're sure it gets called?
Maybe use the Alt of callExtension to get more info?

#

What dotnet framework/runtime?

spiral forge
scenic canopy
#

I usually forget that one πŸ˜„

nocturne basin
#

Or sqf-vm 🀫

spiral forge
spiral forge
nocturne basin
#

DependencyWalker then to the rescue

spiral forge
spiral forge
#

I break everything

scenic canopy
#

wait

#

did you add the Dll target to your project file?

#

with correct version etc

karmic niche
scenic canopy
#

and did you select the correct C# project type?

#

Class library .NET Framework unless I'm mistaken

spiral forge
scenic canopy
#

I don't think that's right no

#

make sure you use "Class Library (.NET Framework)"

#

that's what was needed before at least

spiral forge
#

I restarted from scratch, still no avail… hmmmmmm

#

so, technically, the file's content is good, it must be some compilation/config issue?

#

ah yep must be an issue somewhere

#

ah well, I'll see that tomorrow I guess. x86 "works" (dll dependencies found yet extension not recognised), x64 doesn't (dll dependencies not found)

nocturne basin
karmic niche
#

I mean, when you click the LouDll_any.dll, you should see the exports there

spiral forge
#

x64 is even worse

karmic niche
#

I just realized than I'm exporting too many symbols with my extension πŸ˜‚
EDIT: or I guess this is how it should look like, after all, using all these python macros and all... πŸ€”
but the results should be as follows:

#

(damn that policy that requires me to upload every screenshot to imgur 😩 )

spiral forge
scenic canopy
#

did you make sure the dllexport targets include is part of your project?

#

the <Import Project="packages/UnmanagedExports.1.2.7/tools/RGiesecke.DllExport.targets" Condition="Exists('packages/UnmanagedExports.1.2.7/tools/RGiesecke.DllExport.targets')"/> or whatever matches your project

spiral forge
#

I put that there, but the file itself is not there

scenic canopy
#

you are using UnmanagedExports 1.2.7?

split fox
#

I'm curious: how ArmA calls a .NET extension under the hood?

#

I mean I know how would it call a native extension: LoadLibrary and so on. But how does it deal with .NET?

coarse fossil
#

it doesn't have special handling for .net. hence the need for something like UnmanagedExports, to make it look like a native dll to arma.

split fox
#

so anyways under the hood (somewhere in unmanaged exports?) there will be a native code like "launch .NET and feed it the assembly?"

spiral forge
scenic canopy
#

what file is missing, the targets file?

spiral forge
#

yes, the file in the ParentProject\packages\

scenic canopy
#

well, that sounds like your issue

spiral forge
#

sniff
I'll dig that one out then, thanks
I will install the NuGet from the project itself and not the sub-project, maybe it will do

scenic canopy
#

just created a plain class library .net framework project, had to downgrade from 4.7.2 though

spiral forge
#

4.5.2 I heard is the minimum needed?

scenic canopy
#

should be fine, UnmanagedExports is probably just a bit outdated by now πŸ˜›

#

looks like the WIN64 didn't work ootb either but that's easier to fix

#

I installed the nuget package on the actual project and not the solution

spiral forge
#

hmm thonk

scenic canopy
#

the auto added import of dllexport looks like <Import Project="../packages/UnmanagedExports.1.2.7/tools/RGiesecke.DllExport.targets" Condition="Exists('../packages/UnmanagedExports.1.2.7/tools/RGiesecke.DllExport.targets')" /> for me

split fox
#

Or maybe make a native extension that would catch messages from ArmA and send them to your .NET process through a socket?

scenic canopy
#

you can also compile dotnet core to native

split fox
#

is there an example?

karmic niche
#

Ooooh! Maybe it would be a good idea to move the examples from the Biki there and refer to the github repo on the Biki?

nocturne basin
#

The main goal pretty much is that examples are placed there indeed

#

But unless my memories are wrong, #community_wiki decided against that, keeping the examples close to the biki for simplicity

#

Could also be that there was no discussion πŸ€”

spiral forge
#

I believe there was no discussion? also it would be nice if the wiki had an official github in order to not rely on 3rd party πŸ™‚

#

wait, I can do that

nocturne basin
#

It kinda is not πŸ˜‚

glossy inlet
#

Would be cool if we could move the RVExt examples to BI github but... I guess that might not happen

spiral forge
#

(I believe we don't have one btw?)

karmic niche
#

Would be cool if we could move the RVExt examples to BI github
Next step could be to make them cross-platform so that they don't rely on strncpy_s which is kinda portable but in fact is not πŸ€·β€β™‚οΈ

#

(yes, I know, I can do that myself on the biki right now)

glossy inlet
#

you can also do it on github right now πŸ˜„

desert hawk
#

@vague shard @smoky halo sorry to mention you both, but will you be supporting BI's RSA public/private key formats in bis-file-formats? if not, is it ok if i make a PR?

vague shard
#

@desert hawk i am not involved in the coding part. T_D is also no longer active here, but seems he did an update recently on github, so you can try PR

gritty radish
#

it got support for callback stuff

scenic canopy
#

with dot net 5 yes

#

the biki uses old .net framework

gritty radish
#

who wants to use older stuff anyway lol πŸ˜„

scenic canopy
#

πŸ˜‰

spiral forge
sly skiff
spiral forge
desert hawk
scenic canopy
#

That’s still way newer than the biki example, it’s probably like .net framework 4.5 πŸ™‚

nocturne basin
glossy inlet
#

FYI for anyone who uses Intercept.
You'll want to either patch your pbo with this https://github.com/intercept/intercept/commit/ff29c3b01a635ce4b442b7580e3e618e536eff76
Or update it from https://steamcommunity.com/sharedfiles/filedetails/?id=1645973522

Intercept always returned true for all config eventhandlers, which is wrong.
That didn't matter so far because luckily there was a Arma bug where all config entity eventhandlers ignored their return value, but that bug is fixed on dev-branch now.
So now Intercept always returning true blocks things like Inventory opening.

gritty radish
#

.net standard was a child of a time were the runtime was split between .framework and .net core

#

it was only a link

safe crypt
#

Is there someone that might be able to help me out with getting my ArmA Dev extension for VS Code working? I keep getting an error FileBank not found when I try to build my addon.

dawn palm
#

there are NO environ path settings for bis tools. Instead, they prefer to use registry settings.

#

filebank is located in:
C:\Program Files (x86)\Steam\SteamApps\Common\DayZ Tools\Bin\PboUtils

#

you could hard wire it as above, or, seek it's location via the registry

safe crypt
#

@dawn palm How would I go about hard wiring it?

dawn palm
#

hmmmmm.

#

if you're 'simply' calling addon breaker, i haven't a clue why it can't find filebank.

safe crypt
#

Lol, I figured it out, due to my steam library being located on a different hard drive instead of the drive steam is installed on, the tool was unable to locate the filebank. I updated the arma-dev steam path on the extension to where my steam library is, now it works

light jolt
#

64

spiral forge
elfin oxide
#

Nice.

quick fog
#

has moveobject changed?

#

moveobject P:\mm\mymod_02\x mm\mymod\x mm\mymod_02\x

#

this does nothing for me right now

#

doesn't change folder paths in p3d or rvmats present in x folder

#

i can list the files present using moveobject P:\mm\mymod_02\x

#

but the file path change won't take, and produces no error

#

moveobject Version 2.73, Dll 8.40 "no_file"

#

@dawn palm

quick fog
#

ok i managed to update to 2.74

#

and what seems to be happening is that moveobject on a folder no longer correctly changes the included p3d and rvmats.

#

it seems to get about halfway through the rvmats and breaks

#

leaving half of them binarized!

#

and pathnames inside the rvmats are changed to paa instead of tga

#

the source files are fine (just needed repathing) but the output from moveobject is scrambled - some binarized, some renaming of tga to paa, and only partial contents of the folder repathed

#

can anyone check if moveobject works for them on a set of rvmats and a p3d?

#

yep, so i made a test file

#

using bohemia sample model

#

and moveobject on a rvmat converts all tga paths to paa

#

and it does this to some of my rvmats

#

binarized!

#

one of the files binarized and then the rest of the repathing stalled

#

when i replaced the file and started again, a different file binarized

#

after 3-4 goes half of my rvmats were fubar

#

so it seems like moveobject is currently broken

dawn palm
#

will look into the broken problems. changing to paa is a perfectly normal thing to happen. it is part of the binarization process. Which, itself, is in order to make path\changes easily. MoveObject is not going to spend any processing sweat parsing text files. png, bmp, tga and paa are all born equal. The exception being: paa must be the ultimate reference.

#

later on, pboProject is not concerned what graphic ext is physically present, everything converts to paa. If this prevents buldozer from working 'properly', then object builder needs revising. vbs have no issues with it.

wary verge
#

Is there a tool that lets you make PAA with dimensions not in power of two? I see that official Arma 3 Units does that, but is there a tool us mortals can use?

#

Need it to make UI in-line (inside text) images, can't leave blank spaces with power of 2 sizes

scenic canopy
#

The Arma 3 Tools can do that, TexView

wary verge
#

@scenic canopy Tried ImageToPAA,

Failed to convert 1 file(s)
```Works for files with power of 2 dimensions
scenic canopy
#

Try the TexView program, I’ve used it before with weird PNGs

wary verge
#

Huh, that works, the texture appears almost invisible in the game though

wary verge
scenic canopy
#

are you using some color profile or something?

wary verge
#

No, its a usual 24bit PNG file as source.

neon flax
#

Non power of 2 textures have broken colors usually.

#

Can't you just resize the image via structured text/control size whatever?

#

Stretch it to power of 2 and resize in game.

spiral forge
#

that's the usually recommended step I believe

scenic canopy
#

maybe try converting to tga first as well

#

shouldn't matter but blobdoggoshruggoogly

wary verge
neon flax
#

Wut? You can use width and height on img tags in structured text

wary verge
#

Need to keep it customizable, single structured text to edit

nocturne basin
#

So you're just too lazy to do that

wary verge
nocturne basin
#

Because you could also just put the image normally in the background, using controls and resize the actual part of the text according

#

And avoid all the hazzle

wary verge
#

No, its you who doesn't get it. It should be easily customizable by hosts, without having to understand and create Arma UI configs

#

Not the point of my question anyway, I was looking for a tool to reliably create non-standard sized paas

neon flax
#

Non standard sized paas won't work correctly.

wary verge
#

Seems that Arma 3 Units squad logo converter manages to make them work right with any size

wary verge
dawn palm
#

paas are fed directly to directX 'as-is'. Their raw mipmaps are converted by hardware to pixels in most graphic cards.
How? Why?, because, with some very rare exceptions, the format used is DXT1...5 and these formats all require the image to be 2^n x 2^n
There are other formats available via texview/pal2pace/img2paa, and remain supported, but haven't been seen since arma1, and even there, were scarce.
This is not a bis restriction, it is, for dxt, an industry restriction, First introduced by Apple as 'STC' in the 1990's

wary verge
#

Thanks for the insight, I've seen several squad logos working fine with non-standard dimensions before though

nocturne basin
#

Pure and utter luck usually afaik

glossy inlet
#

DXT splits the images into blocks.
It doesn't actually need to be power of two (though thats easier to say) in all cases.
As long as you have a correct number of pixels to fit the blocks and not cut one block up in the middle, it'll work

#

I don't know the size of the blocks, but having your image be multiples of 32 or 64 might be sufficient

severe lava
#

IIRC S3TC blocks are 8x8 pixels, but it has been ages since I had anything to do with that stuff.

#

Ah no, it's 4x4 pixels

nocturne basin
#

I would love to argue against the "need to understand configs" argument ...
but i kinda stopped working on the ui editor (or my ide general) due to lack of ... everything πŸ˜„ https://www.youtube.com/watch?v=8Hbwy2QJ0oA
which means that this is pretty much all one can do as of now

However, there is also that jetbrains plugin and plenty other tools

neon flax
#

<img image="path" width=123 height=312 />

#

But you're right is does not seem to work in structured text/parseText thomp

#

is briefing not a structured text?

glossy inlet
#

I think html is seperate

dawn palm
#

It doesn't actually need to be power of two (though thats easier to say) in all cases.
ummmm, yes, it does. but it was sloppy of me. The correct formula is 2^a x 2^b

each ''mip' is a rigid cell of 2x2 consisting of 4, separately colored, 'dots'. and is possibly the 'block' you refer to.

the formula for encoding and decoding these mips is exactly the same across all of the dxt series 1...5. The only difference between them is the depth of alpha transparency which ranges from binary on or off (dxt1) to 64? bits of greyscale (dxt5). Each decreasing 'map' of the mipmap is a fixed in concrete quarter of the one before it. You cannot have a starting width eg of 2043. Each overall block must be in the progressive series of 4.8.16,... smaller 'blocks' from it's parent. Encoding mip size could handle 2043, but ultinateky, it is filled with black, full transparency, to the next highest 2^n

as for bis, i am unaware of them accepting anything other than incoming 2^a x 2^b for dxt formats

sly skiff
#

preview jpgs are exception I recall

dawn palm
#

the above only applies to paas and only applies with ones using dxt compresssion. Other formats exist such as greyscale, pallette index, and AI88

#

bis also introduced a strange size png for direct use with images in the game's editor

#

using my tools to scan the entire suite of bis pbos for arma3. ALL paas use dxt compression

fiery hemlock
#

is there an existing tool to convert an rtm pose to fbx?

sly skiff
#

dont recall anyone speaking of such πŸ€” good question

severe lava
#

In theory, you can do that with Blender, there is an addon to import RTM.

fiery hemlock
#

I think i'll just make my own for direct conversion both ways. Already implemented binarisation and debinarisation. I need it for A2 anyway so there may be some incompatibilities

karmic niche
#
//--- Called by Engine on extension load 
__declspec (dllexport) void __stdcall RVExtensionVersion(char *output, int outputSize);

Called by Engine on extension load

So, to make sure I understand this correctly: can I treat this function as a init_extension() kind of function that is ALWAYS called right away and unconditionally?

coarse fossil
#

afaik it is called the first time you try to call the extension with callExtension

karmic niche
#

I was previously using DLL_PROCESS_ATTACH to perform extension initialization and, when porting to linux, started using __attribute__((constructor)) but then ran into issues with initialization order (for the curious, I stumbled upon this: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=52477#c6).

So I'm considering ditching detecting the library being loaded and instead lazy-initializing.
But having a guarantee of a reliable initialization function/callback would be nice

karmic niche
#

Thank you!

#

I stumbled upon this
The TL;DR is that if you have such code:

std::string s = "<unset>";

__attribute__((constructor)) void init() {
    s = get_some_value();
}

then init() will be called and your s may still be <unset> afterwards because the assignment in line 1 may be executed later πŸ™‚

fiery hemlock
#

that's not an assignment and it's uninitialised

karmic niche
#

Okay, technically I should have written "the std::string constructor in line 1 may be executed later"

#

Which it was for me, hence I noticed something was wrong πŸ˜„

fiery hemlock
#

using a static initialiser instead of __attribute__((constructor)) would allow you to initialise in the same set along with other static initialisers, though it would still be subject to SIOF

karmic niche
#

using a static initialiser instead
Yeah but my code was doing more than that. That was my minimal repro.

though it would still be subject to SIOF
That's also why I was using DllMain on windows and wanted to switch to lazy-initializing now that I'm porting it to linux

fiery hemlock
#
std::string s = "<unset>";

static void init()
{
    s = get_some_value();
}

static char dummy = (init(), 0);
karmic niche
#

But after Dedmen's response I'll just init it inside RVExtensionVersion

#

This way I have the guarantee that all variables in all Translation Units are already initialized

nocturne basin
#

Use static methods instead with static variables imo

fiery hemlock
#

yes, explicit runtime initialisation is certainly the right solution, precisely because of SIOF

#

i would personally argue that having static initialisation in the language at all was a mistake

nocturne basin
#

Bigger issue is the unload in my opinion

karmic niche
#

Maybe std::auto_ptr for that

fiery hemlock
#

no

#

i hope you meant unique_ptr? otherwise you've got some studying up to do...

nocturne basin
fiery hemlock
#

auto_ptr is just unique_ptr with an auto_ptr& constructor

elfin oxide
#

What reasons can you guys come up with why windows does not find a dll via DllImport(NAME) - the file was present in app dir, and also system32. Windows anti-virus was disabled. I have checked the dll and it has no further dependencies that are not present on the system.

glossy inlet
#

just run procmon and check what file paths it looks up

elfin oxide
#

oh does it tell me which dlls it looked for?

glossy inlet
#

it shows all filepaths it checked

elfin oxide
#

funny ... i can see a load image operation with success ... yet it still won't work. I will try on a fresh windows and see if that helps ... i thought it might be a path problem but it clearly found it. Thx for the tip

fiery hemlock
#

what is the error you get?

elfin oxide
#

Unable to load DLL '<name>': The specified module could not be found.

fiery hemlock
#

i think a missing symbol gives the same error

elfin oxide
#

i checked the dll and it loaded successfully in dependency walker. Hyper sp00ky. I will dig around more and let you guys know when I find out what it was.

glossy inlet
#

it might be a dependency not being found/loaded

#

That prints the same error afaik

fiery hemlock
#

you could try loading each dll in the graph individually starting at the leaves

glossy inlet
#

its usually a first-level dependency. Just check in dependency walker whats in there thats not part of windows, if anything.
I assume you're talking about C#?

karmic niche
karmic niche
nocturne basin
#

Issue I see with this is that memory gets allocated but not freed because of static memory regions being allocated somewhere

fiery hemlock
#

where are you envisioning a leak happening?

karmic niche
# nocturne basin Issue I see with this is that memory gets allocated but not freed because of sta...

So the funny part is that my C++ code that I'm testing from Python (so not arma itself) seems to work as expected... but only on Windows:

void __stdcall RVExtensionVersion(char* output, int outputSize)
{
    static std::unique_ptr<library> libraryInitPtr = std::make_unique<library>();
}

This calls library::~library() as soon as FreeLibrary (Windows) is called. However, this doesn't seem to be the case with dlclose (Linux), for some reason, but I'll keep digging πŸ€”

#

By that I mean that the destructor is, indeed, called but only when my python script is terminating (which may very well be an implementation detail of Python - I have no proof against that and am too lazy to test this in C++ for now)

nocturne basin
#

Because it should not according to my understanding of c++

#

As that variable is never destructed, causing leaking memory

#

Tho it might be that library memory space is specially handled eg.

karmic niche
#

I would assume that since (manually loaded) dynamically linked libraries do not exist in memory when the program is started, then memory has to be allocated to store everything from them, including static variables and hence that same part of the memory could then be freed when the library is unloaded

nocturne basin
#

Even then, only freeing the memory is not enough, given that libraries might hold handles to things

karmic niche
#

I don't understand the point you're trying to make. For example, It's obvious that if your library mallocs something and then throws the pointer away then you're going to leak memory even if you unload the library itself, until the program itself terminates and the kernel frees its memory

#

I mean, if you're handling the memory incorrectly, you're going to leak stuff anyway and loading/unloading DLLs has nothing to do with that fact

nocturne basin
#

It is about not being able to call the destructor if a library just vanishes (especially if the ram is staying untouched)

Another thing is if a file handle was opened using a library, that now may stay open until the whole application ends, as the handle ram getting freed, does not free the resource held by the handle

karmic niche
#

That's why I suggested using a smart pointer to automatically call your destructor when the library is unloaded.
This seems to work on Windows while not so much on Linux but I'll investigate the latter case later

nocturne basin
#

Yeah
As I said, it is some interesting question especially because it is runtime depending and not based on c++

fallen stone
#

@karmic niche This is expected if your library contains unique symbols.
Check nm <lib> | c++filt for u type symbols

#

Unsure what <side effects> can come from not using STB_GNU_UNIQUE, and further details are likely buried in glibc

#

(currently you should see deconstruction @ exit(), I assume when your "python script is terminating")

fiery hemlock
nocturne basin
#

Normal program exit ain't the same as library unload

fiery hemlock
#

library unload is not defined

#

windows kind of views each dynamic library as a separate program

nocturne basin
fiery hemlock
#

regardless of library unload, when the program in which main resides exits, the destructors of all variables with static lifetime are called

nocturne basin
#

I actually want to question that too
Given the library being unloaded, code that previously existed now should no longer be existing, which should in theory result in an access violation or in some arbitrary code being executed

fiery hemlock
#

yes that can happen because we're essentially dealing with multiple programs from the pov of the standard

#

if the depended-on library refers to the dependant

nocturne basin
#

Yup

fiery hemlock
#

that does not happen in the case that was being discussed

#

the extension does not refer to arma

#

presumably it doesn't anyway

nocturne basin
#

But the memory allocated might hold a handle to system resources which are held for an eternity

fiery hemlock
#

elaborate

nocturne basin
#

Given you open a file using fopen, store the file handle in a static variable, it would not be freed

#

Same game with new anything

#

Or any other thing that is not actively managed

fiery hemlock
#

well of course not using RAII leads to leaks

nocturne basin
#

Yeah
But what if instead you want an open database handle?

#

Read collection etc.

#

And, given it is undefined behavior on Linux, what if raii is used.. Things are not freed

fiery hemlock
#

database handle is no different

#

what is UB on linux?

nocturne basin
#

Unloading a linked library

fiery hemlock
#

it's not undefined behaviour

nocturne basin
#

Long story short simply is that libraries are kinda a special thing in cpp land

nocturne basin
fallen stone
#

Still situations where they don't run when calling dlclose(3)

#

(such as the unique symbols I mentioned above)

glossy inlet
karmic niche
#

Fun story:
After two nights of coding and trying to figure out segfaults (my python tester for my arma extension was crashing), and later updating my old C++ tester that I (previously) wanted to ditch in favor of the python version, I realized something.

I realized that a Python script, which is executed by the python interpreter (and thus loads libpython.so and then calls PyInitialize()) may not be the best way to test loading a C++ extension which... loads libpython.so and then calls PyInitialize() πŸ€¦β€β™‚οΈ
Yeah... and I was wondering why the old C++ tester was working fine πŸ€¦β€β™‚οΈ

Don't code at 5am (twice). Not worth it.

sick verge
#

Hehe ^^

quick fog
#

using moveobject today got this message

scenic canopy
#

it's built into depbo dll

quick fog
#

also with the updater it says every time a new updater is available but there is no link for it or option to install it

glossy inlet
#

"latest dll is 8.53, yours is 8.53" so.. You have the latest version but it still shows updates available popup?

quick fog
#

yeah every time i use it

#

as in every time i press enter in the window 😦

scenic canopy
#

I would guess the metadata file for updates is out of sync with latest released version

#

Or a bug with latest dll

dawn palm
#

@quick fog your dll was a beta copy sent you privately, the error have above us fixed in the later released versions

fiery hemlock
#

@dawn palm do your tools binarize 3d assets, or do you defer to bohemia's binariser?

scenic canopy
#

Bohemia’s binarize

fiery hemlock
#

i ask because i wasn't able to get arma to read data compressed by lzo, though the i can decompress the existing binarised files

dawn palm
#

lzo is not used for file compression, only specific structures within a p3d

fiery hemlock
#

yes i know that

#

what i mean is that suppose i read an rtm, decompress the compressed sections and then compress them again using lzo, the game will fail to read it

dawn palm
#

ok

fiery hemlock
#

but i suppose if you're not binarising anything yourself and are instead deferring to bohemia's binarise, you would not have had to solve this either?

dawn palm
#

let me check if i use a compessor

#

ok ,yes i do. the a decompressor will afaik, decompress any of the formats. to compress for bis, you need LZO1X-999

#

so called 'mini lzo' isn't good enough

fiery hemlock
#

i think i tried LZO1X-1-11 and that didn't work. i'm not sure if i did actually try LZO1X-999

dawn palm
#

nothing else even came close for me.

fiery hemlock
#

i'll give that a go

fiery hemlock
#

LZO1X-999 does work. thanks!

vague shard
#

didnt armake's dev(s) start to recreate binarize functionality? (for p3d)

fiery hemlock
#

i've looked at it a few times but i never got the impression it had working binarisers for 3d assets

#

maybe they never finished it

#

my interest right now is mainly in animation so i've only done RTMs so far, but i've got a working tool now for any conversion between fbx/rtm/binarised rtm

split fox
neon flax
fiery hemlock
neon flax
#

Stuff that should be transparent was appearing opaque.

fiery hemlock
#

is transparency encoded somehow in P3D?

#

that sounds to me like materials weren't assigned correctly

neon flax
#

IIRC the faces need to be marked as transparent.

scenic canopy
#

Which can visualize as some interesting issues if one pixel is transparent by accident in your texture etc πŸ˜›

dawn palm
#

is transparency encoded somehow in P3D?
Yes. And...
No.
the rvmats that affect the p3d, are baked into the p3d. That should answer the Q. There is nothing in the visible lods themselves which affect transparency directly (except of course the rvmat). There would, in future be, nothing to stop making a special lod that is pure alpha channel if they wanted to, but it's not there at present.

glossy inlet
#

There is.
The faces store a transparency flag.
Which is read from the rvmat, but also encoded into the faces in the LOD too.

dawn palm
#

ouch, forgot them

glossy inlet
#

That is why you cannot just put a transparent texture/rvmat onto a model which didn't have transparency in the texture when it was binarized

fiery hemlock
#

kinda weird to partition meshes and not objects

daring drift
#

What PBO manager is hot now?

sly skiff
daring drift
#

for using it for dayz addons getting the gloves and all that shit

sly skiff
#

this is Arma discord?

daring drift
#

ye but same company ennit

sly skiff
#

and getting the gloves from where and for what?

daring drift
#

to re-texture them

sly skiff
#

Id suppose using mikeros tools to set up the P drive and mod development environment works for DayZ too

daring drift
#

ok thanks im very new to this shit

sly skiff
#

things go easier if you lose the shits

daring drift
#

ye, i'm currently in a games design course so im trying to self teach myself other stuff along the way

severe lava
#

Maybe someone can help me, I have a problem with pboProject not including my config.bin in the output pbo. It worked fine, but I had re-installed my entire system, installed a clean copy of the paid tools, and just pointed pboProject to the same folder that the original was in. However, I don't get a config.bin, and the package log contains the line

P:\temp\CUP\TrackedVehicles\CUP_TrackedVehicles_T90M\config.bin :ignored. A config.cpp exists internally

Anyone has a clue what is going on?

dawn palm
#

@severe lava , mea culpa, update to latest tools

#

@daring drift , pboManager is not useful to you for several reasons, but the magor ones are:
a) it does not unbinarise config.bins or rvmats, making them useless for your purpose:
b) major issues with how it deals with the pbo's prefix.

c) if you add UNbinarised items to the pbo, that's what the engine gets.

Use extractpbo from my tools. bullet proof and simple

severe lava
severe lava
#

Can confirm that it works now!

#

Can confirm that it works now!

dawn palm
#

apologies

severe lava
#

No worries, shit happens πŸ™‚

scarlet sparrow
#

My TADST keeps crashing whenever the server loads the missionfile, anyone know a possible fix / what is causing the problem

fiery hemlock
#

is the binary rtm known to store the inverses of local bone rotations?

dawn palm
#

not as i recall, however ALL bone positions (stages) are relative to the previous one. In unbinarised, all positions are absolute (relative to the model of course)

#

dertm will show you the data for plain jane and binarised. As well as convert from any one of the four rtm binarised formats and vice versa

fiery hemlock
#

yes, that's what i meant by local rotation. unbinarised would be global. the thing is though that i can only get it to work out if i invert the binarised rtm quaternions, i.e. negate the imaginary components

#

or alternatively transpose the rotation matrix after conversion of course

dawn palm
#

ah yes, you hit a memory jog here. you are right. they are 'negative' eg the reverse of what you think they should be. In my case i simply accept it when converting

fiery hemlock
#

just to be absolutely clear, since there is also a change of coordinate system with the x and z axes flipped for unbinarised rtm, that you do really mean the binarised rtm quaternion imaginary components?

dawn palm
#

yes i do

fiery hemlock
#

alright, perfect. thank you. i was really confused for a while with those binarised rotations

dawn palm
#

i can pass you my qnion code but i doubt it's any better or worse than what you've already done.

fiery hemlock
#

ah, there's no need. i have working binarisation/debinarisation as well as fbx import and export. just wanted to double check this for my own sanity

dawn palm
#

lovely. congrats

#

when you say fbx, which version. dayz dayz sa or ??

fiery hemlock
#

well the fbx version i'm using is 2020 if that's what you mean. i'm doing this with A2 in mind

dawn palm
#

k

#

fbx is the kind of 'standard' when there isn't one. It's undocumented, and alters each revision. I think everyone has the same problem that importing into blender (eg) works for some versions of fbx, but not others.

fiery hemlock
#

yeah and it's terribly convoluted as well

#

i'm using motionbuilder for animation editing though, and fbx is the native motionbuilder format

dawn palm
#

understood. afaik, autocad dominates the market.

fiery hemlock
#

in character animation?

#

autocad is a cad tool

dawn palm
#

no, in cadcam

fiery hemlock
#

yeah, that may be but what i'm after here is animating human characters for A2 πŸ˜›

dawn palm
#

but a spinning ball bearing is just as animated as a perseon walking

#

ooooo, give me a moment, the rtm changed from a2 -> a3. let me check something for you.

#

ok, the differences between all three are quite minor.

#

(slightly re-arranged and added properties, the qnions are all the same)

desert hawk
#

hey @glossy inlet, i have a few questions about BI's signatures and private/public keys, which are used to verify PBOs for clients connecting to a server. to start, i've released a tool in which i black boxed the format to pull out the public key (bikey) in a pbo signature (bisign). this BI format isn't exactly documented anywhere that i know of online. a certain community's administrators, do not like the idea of the tool because some mod authors use it as protection to prevent other server owners from using it.

  1. is my implementation of removing the public key from a signature breaking EULA? (as the key is the header of a signature file)
  2. why does BI store the public key in signature files? in typical asymmetric key pairs the public key shouldn't be shared with the output/signature in this case
fiery hemlock
#

2009/24/EC probably applies

glossy inlet
#

"prevent other server owners from using it"
Well get F'ed :D
Open modding for everyone!
If people want to restrict mods to their server, they can easily add a script for that, I don't see why people think that keeping back something called a "public key" would work

  1. Reverse engineering can be problematic, but there are tools that can do signing and document the format in their code (armake, hemtt) so you don't have to reverse something on your own. But the bisign format is so simple and safety irrelevant that I wouldn't care.
  2. Noo idea, i didn't know before I saw your tool.
neon flax
#

Extracting few bytes from the header of the signature file is hardly reverse engineering. IMHO the tool is fine.

sly skiff
#

And people complain dlcs divide player base when server hosters are the ones doing it with mods.

#

Sorry, private mods

wild hollow
#

Does anyone with knowledge of CBA know if it must be run on all clients? I am setting up a server with a couple lightweight clientside mods but want it to be compatible with completely vanilla players. AFAICT so far it seems okay. I assume some CBA features would be limited, but I mostly just want the custom keybinds UI and extended debug console.

glossy inlet
#

It must be yes

#

Well depends

#

It is intended to run everywhere.
Depends on what features the mods you are using need

wild hollow
#

Ok. I assume CBA features like broadcasting messages to all clients would not work of course, but I am just looking at clientside mods that should not do that kind of thing. E.g. CH View Distance, DUI Squad Radar...

glossy inlet
#

If you run CBA as serverMod, and the players with DUI also run it, everything will probably fine

wild hollow
#

Ok, will try, so far it seems to work. Thanks!

cosmic mango
#

(Apologies in advance if this isn't the right channel for this stuff)
I'm currently have trouble making a PBO using hemtt.
When having added https://community.bistudio.com/wiki/PreProcessor_Commands#has_include to any file, then trying to pack it, it fails saying

thread 'main panicked at 'assertion failed: level > 0', <::std:macros::panic macros>:2:4
thread '<unnamed>' panicked at '
Removing the macro allows hemtt to build the PBO.
I'm guessing hemtt 0.7.6 doesn't support macros from after (and including) 2.02 (if not maybe earlier)?
Is there a way to fix this issue? Is there a newer version of hemtt that I can download? Because I can't find a version higher than 0.7.6.

glossy inlet
#

Afaik hemtt just doesn't support the new preprocessor stuff

neon flax
#

Yeah it doesn't.

dawn palm
#

my tools do. (with credit to @glossy inlet for always supplying reliable info)

rancid relic
#

I ignored it for quite long but here we go - does anyone know if buldozer automatic conversion of texture got broken at some point? It seems to me that .tga are no longer converted to paa
edit: disregard, seems its due to usage of internal exe πŸ€¦β€β™‚οΈ

rough grove
#

Big update to https://github.com/BrettMayson/arma-rs for anyone creating extensions. It is completely redesigned and will now let large projects organize themselves in a much better way. It also includes stability improvements, more consistent formatting, proper error reporting, and best of all, all the functions don't have to go in lib.rs anymore!

fiery hemlock
#

does rust not have any kind of link time open set data structure?

#

see in C++ i write an extension function like this

static float Add(float a, float b)
{
  return a + b;
}
My_REGISTER_EXPORT(Add);

no big dumb list of all functions in one place

dawn palm
#

is it really My_ or did you mean MY_ because nothing but FULL_UPPER_CASE is deemed a macro nowadays

#

not even micro$oft break that rule.

fiery hemlock
#

My
I reserve exactly one namespace, not my, My, MY, mY

#

All macros and program entities i define meet at least one of these requirements:

  • defined in namespace My
  • name begins with My_
  • is only visible within one translation unit
dawn palm
#

that's a sensible approach for nametags. But, #defines are global in scope. The only way of knowing that

class My_THING

is always a define is using MY_THING because the 'rules' are that nothing else can be full upper case.

#

bis code is twenty years old, so these ''rules' didn't apply then, when no-one knew any better. It took the coding industry time and experience to realise it's necessity.

fiery hemlock
#

I don't agree that all macros must be SCREAMING_CASE. they must all be prefixed.

#

I reserve all identifiers starting with My_ and for you to spell one without my permission is to be considered akin to spelling an identifier containing a double underscore or starting with underscore followed by an uppercase letter

desert hawk
#

#pragma balls

nocturne basin
#

Otherwise it has to be ignored by others parsers or be output as warning

karmic niche
#

...but does sqfvm support it? πŸ€”

nocturne basin
#

Tbh I don't know
When introduced them first, I started implementing some rather simple, but not all due to rl reasons that keep me still from really having time to work on sqf-vm

coral egret
#

just a general PBO signature question, a lot of mods have started versioning their individual PBOs and signatures. Is there a tool for this or can I just use PBOProject to pack and sign PBOs and then manually add a version to it?

#

We've had some instances where we pushed an update last-minute, and some players didn't have the latest version so they couldn't see certain items or units

vague shard
#
rem Prepare
CALL ___configureSettings.bat
rem ----

cd /D "%_SIGN_PATH%"

rem ----

set _BUILD_PATH=%_SOURCE_PATH_RELEASE%\@XXX

rem ----
set _KEYFILENAME=%_KEY_FILENAME%
rem ----

DSCreateKey.exe %_KEYFILENAME%

cd /D %_BUILD_PATH%

del /S /Q *.bikey
del /S /Q *.bisign

FOR /R "%_BUILD_PATH%" %%i IN ("*.pbo") DO (
    "%_SIGN_PATH%\DSSignFile.exe" "%_SIGN_PATH%\%_KEYFILENAME%.biprivatekey" %%i
)

mkdir "%_BUILD_PATH%\keys\"
copy "%_SIGN_PATH%\%_KEYFILENAME%.bikey" "%_BUILD_PATH%\keys\"

move "%_SIGN_PATH%\%_KEYFILENAME%.bikey" "%_SIGN_PATH%\oldKeys\"
move "%_SIGN_PATH%\%_KEYFILENAME%.biprivatekey" "%_SIGN_PATH%\oldKeys\"
#
set _SOURCE_PATH_RELEASE=x:\release\XXX

set _SIGN_PATH=x:\Programs\A3T\DSSignFile

rem ---------------------------------------------------------------------------

set MYTAG_YEAR=%date:~-4%
set MYTAG_MONTH=%date:~-7,2%
set MYTAG_DAY=%date:~-10,2%

set MYTAG_HOUR=%time:~0,2%
if "%MYTAG_HOUR:~0,1%" == " " set MYTAG_HOUR=0%MYTAG_HOUR:~1,1%
set MYTAG_MINUTE=%time:~3,2%
if "%MYTAG_MINUTE:~0,1%" == " " set MYTAG_MINUTE=0%MYTAG_MINUTE:~1,1%


rem ---------------------------------------------------------------------------

set _KEY_FILENAME=XXX_%MYTAG_YEAR%_%MYTAG_MONTH%_%MYTAG_DAY%__%MYTAG_HOUR%_%MYTAG_MINUTE%```
fiery hemlock
#

oh lawd that is horrid

vague shard
#

date and time depends on OS settings

dawn palm
#

@coral egrethere's an interesting, simple idea for you.

you can call your pbo ANY name that gives you a thrill. the engine does not use it.

so how about:

PinkHelicopterV.1.01. pbo
PinkHelicppterV.1.02.pbo when you update, and so on.

pboProject allows you to call that pbo anything that suits you.

#

if versioning above is too simplistic then try dates instead, 011221 (1st december 2021)

fiery hemlock
#

wouldn't you say that dates are the less simplistic one next to semver

dawn palm
#

yes

fiery hemlock
#

semver isn't useful unless you expose some kind of program interface though

coral egret
coral egret
dawn palm
#

@coral egret Another thing you might not be aware of is a $pboprefix$.txt can have:
author=I amFamous;
version=199;

fiery hemlock
coral egret
fiery hemlock
#

typescript?

coral egret
#

yessir

fiery hemlock
#

yikes

coral egret
#

nah

#

ezpz cross compatibility

#

can run this stuff in github actions if I want to

fiery hemlock
#

you can run lots of things in github actions

coral egret
#

ye but like, also on my windows PC

#

It's just what I'm comfortable with, idk why we need to gatekeep automation script languages..

coral egret
dawn palm
#

of course, but only because the values are different

coral egret
#

yeah I mean, that makes sense πŸ˜‚

#

Epic, that might actually be the easier solution then

neon flax
#

The simplest solution is just having new private key for each release.

#

Adding version to the pbo name is asking for trouble for workshop users.

dawn palm
#

^yep

neon flax
#

Steam is not good at removing files that are not in the manifest anymore and you will have people with multiple "versions" of same PBO

#

which they will have to remove manually. Fun times.

scenic canopy
#

unique key per version is the correct solution πŸ‘

coral egret
severe lava
#

@dawn palm I might be doing something wrong here, but I have an issue with latest sub tools (pboProject 3.21). I have a pbo with a $PBOPREFIX$ file, but regardless of whether I call it such or $PBOPREFIX$.txt, the resulting PBO (when I unpack it) always has the path of the mod folder. I.e. my $PBOPREFIX$ contains ca\structures_c, but when I unpack and check the included file, it says prefix=CUP\Terrains\cup_terrains_ca_structures_c;

Any idea what may be wrong?

#

(sorry for the tag)

dawn palm
#
  1. the prefix in either of those files are always ignored. totally. (subsequent properties, if any, are not). this has been true for at_least 8 months

  2. the prefix is determined by the location\on\the\p:\drive
    this means you are packing from a cup folder.

  3. if you wish to force this elsewhere read up on using the @= option for makepbo

glossy inlet
#
  1. but that wasn't like that before?
    Why the sudden change that suddenly breaks tons of mods?
dawn palm
#

i don't call 8 months a \sudden\ change

#

what is the prefix you wanted to use?

glossy inlet
#

Well, it would break all my mods, going back to even Arma 2 if I'd update your tools to that version, that's pretty sudden to me.
Also it would break all of ACE (who didn't notice this issue yet afaik, if it's really 8 months old that'd be weird for them to not notice, maybe it only came recently to the free tools?)
And it breaks all of CUP, who noticed it today

Alwarrens $PBOPREFIX$ contains ca\structures_c and he wants exactly that as prefix (like how it worked the last 10 years)

dawn palm
#

k. will re-enable

dusky dune
#

@karmic niche

karmic niche
#

No, srsly, wtf mention? πŸ˜„ @dusky dune

#

You mean that thing with Pythia?

dusky dune
#

Yes!

karmic niche
#

Yeah, maybe it will fix itself (by Mikero), or maybe the guy using an ancient Linux port of Arma is at fault πŸ€·β€β™‚οΈ

#

@glossy inlet stop hitting me! That's probably against the rules! 😩

karmic niche
#

No, it's not okay!
Actually, it may be okay because you're probably right, but it's still not okay!

dawn palm
#

release 8.59 restores $pboprefix$[.txt]

severe lava
#

Thanks!

scenic canopy
glossy inlet
#

Unless you pack CBA/ACE without a p drive

scenic canopy
#

ACE won't build then, p3ds etc will fail on file refs. Maybe CBA as well.

glossy inlet
#

I build with a old mikero version that lets me ignore file refs

#

Saves a F ton of time and setup if you only want to quickly test some PR you're working on

But I'm transitioning to just pack with old cpbo now, so that I can have a newer mikero tools version in case I need something newer.
Having to have two mikero versions installed in parallel is just too annoying to use

#

There once was a day where you installed mikeros tools and you were able to do what you wanted to do.
Nice dev builds with all errors ignored.
And full error checked clean release builds.
But then a certain someone decided to rip out features because oh god no people actually used them! And since then everything only goes further down and everyone is trying to escape to other alternatives that are all less than half done because no one has enough time to invest into it

dawn palm
#

you forgot to mention that when a bug appears in my code, or a bis update, i actually fix them asap.

#

as for ignoring filerefs: never going to happen because experience tells me that's what many people will use to avoid fixing their errors. They prefer instead to flood forums with "why doesn't it work" when the answer was in front of them. The same people btw who tell me "but addon breaker works"

glossy inlet
# dawn palm release 8.59 restores $pboprefix$[.txt]

Did you actually do that? I heard that without .txt extension still doesn't work?

ACE has pboprefix files that haven't been touched for 7 years, do you really now want to force everyone to change it?

I don't understand the reasoning of suddenly breaking stuff that was fine for the last decade and that about everyone was using..

dawn palm
#

support for pboprefix without ext was an oversight on my part from the urgent need to get something out the door for people. fixed on next release. the file was 'invented' by kegetys and myself during xbox elite days. What sort of reasoning we used for making a file without out an extension, making it difficult to use in text editors, has been lost to history. During arma1 we changed it to .txt but continue to live with the pain.

karmic niche
#

But is it really that much of a problem? I literally never had any issue with the file without the extension. Maybe because I come from a Linux background where these are normal? πŸ€”

dawn palm
#

well. the penguin relies on mime-type in the first two bytes of a file to establish what app is required;. windoze uses ..ext

karmic niche
#

Yes, but I mean: I never really had any issue with such files on Windows

#

And to edit I either rclick->open with notepad++ (for one offs) or I use an IDE that doesn't care about the extension anyway, for more serious projects

#

But maybe me is me πŸ€·β€β™‚οΈ

dusky dune
#

creating a new file with no extension in windows explorer with default windows settings is not a thing

spiral forge
#

no, but you can in Notepad "save as" and use quotes around the name: "fileWithoutExt", or "description.ext" πŸ™‚

neon flax
dawn palm
#

the main point being, windoze is far easiier to use with .ext. the whole dbl click business is geared to it.

#

plus. in this case. .txt is self-documenting.

#

bis, cleverly, use the lack of any extension on their files in configs that they auto fill with the expected .ext

sound=burp; //eg
model=red)house; // eg

neon flax
#

Easier or not removal of that feature did not make sense. No one is forced to use files without extension but removal of that support breaks a lot of addons.

elfin oxide
feral spruce
#

Issue, when I update my mod into workshop, new and modified pbos dont work. However if I pack them with PBO manager instead of Addon builder, they work, but give bikey missmatch

#

any ideas?

scenic canopy
#

Don’t use pbo manager, you need to resign if you edit a pbo as well

feral spruce
#

I did the signing process with addon builder, than put it though workshop, but once in workshop, the content from new pbos dont appear ingame

#

However does with pbomanager

#

Addon Builder: mod works on server, but new PBOs dont
PBOmanager: all pbos work, but bikey missmatch when on server

#

any ideas what might be the issue?

scenic canopy
#

when editing pbos with pbo manager they end up in a broken state and can't be signed properly

#

you should create new pbos from scratch using addon builder

#

or use one of the better tools such as pboproject or hemtt

feral spruce
#

But I will try your thingy aswell

feral spruce
#

Okay, so I have a PBO which is basically 3 config files and few .paa IF I pack it with addon builder, ingame it doesnt work.....wtf

#

and when I check the errors this is literally it:
<MakePbo...>
</MakePbo>
MF_T_201X.pbo not produced due to error(s)

scenic canopy
#

that doesn't sound like addon builder

#

if you're talking about mikero's tools then check the logs for what is the actual issue

sly skiff
#

That's all addon builder gives isn't it.

#

In way of error messages. If one wants debug, pboProject is the tool.

feral spruce
#

I have tried both. Addon builder pbos dont work for some reason. And PBO project gives an error which I dont know how to check

#

PBOProject log says: <MakePbo...>
</MakePbo>
MF_T_201X.pbo not produced due to error(s)

scenic canopy
#

Check the log files, not just the console output

dawn palm
#

...and turn noisy on

feral spruce
#

okay...I dont get whats the problem from the log

#

here are the both logs

dawn palm
#

In File \Steam\steamapps\common\Arma 3\@MF Retextures and Repacks Release\addons\MF_Plane_Configs\MF_T_201X\config.cpp: circa Line 807 extraneous character(s). Expected class, define, or varname

#

PLUS my tools only work with a virtual drive such as P:\ The engine has no idea what a steam\steamapps would be

feral spruce
#

because when I pack it with PBOmanager, it works, I just cant sign it for the server

dawn palm
#

pboMangler cannot create addons. only missions

feral spruce
#

I understand but what I mean I use it for testing. When I create smth, I pack it to pbo using pbomanager, test it ingame. It works. Than I pack it using Addon builder and put it in folder I later use Behemia Publisher on.

#

But now, when I use Addon Builder, my pbo get sign and stuff, but dont work when ingame

#

Used to work before, now it doesnt anymore

dawn palm
#

that.s at least because of the error i pasted above

feral spruce
#

Ye no idea what that error means, I am looking at config right now. 807 is last line of config

dawn palm
#

typically, it happens when you have insufficent closing };

feral spruce
#

in that case I would get an error and it wouldnt work ingame

dawn palm
#

dunno.

feral spruce
#

yet if I pack it with pbomanager it works ingame just fine

#

see, its weird, I made ~20 updates for this mod, and it used to always work

#

now it doesnt

dawn palm
#

well, there's been a spate of 'bad bisigns' recently. and they are due to the server using verion 3 checking but the keys were generated using version 2

#

create a new key and try that

feral spruce
#

what do you mean try that? Change server checking version?

dawn palm
#

use dsCreateKey to generate a new public and private key

feral spruce
#

altho the thing is that when I create a pbo using addon builder now, it doesnt even work in single player. It does work if its created with pbomanager

#

I am sooooo confused wtf

dawn palm
#

all i can tell you that pboProject has found errors. the rest is up to you.

#

you need a good text editor such as notepad++ which will color code each:

{
blah
};

feral spruce
#

Ye I get it, but like I said, it works perfectly with pbo manager, if it was "};" error than it wouldnt work ingame with pbomanager either and arma would give me error (like it did in the past)

elfin oxide
feral spruce
#

what puzzles me the most that it works completely fine when it is in my dev mod folder, than I copy it, put in, in "for release" folder, put it in pbo using addon builder and it stops working. It is such bs

sly skiff
#

your whole modding environment setup is basically wrong.

#

you cant make working mods like that

#

and saying making pbo with pbomanager "works" is nonsense as it basically just shoves the stuff into pbo container without cheking anything

#

its same as you packed up a zip

#

or copied files to a folder

fiery hemlock
#

it can work. it might not be the easiest solution

sly skiff
#

sure technically you can work from any folder

#

but if you do that then you really should know what you are doing

#

its not even worth mentioning in 99% of cases when people dont have the expertise to make that work

dawn palm
#

it can work
allow me to show you why that's not true:

"it works completely fine when it is in my dev mod folder, than I copy it, put in, in "for release" folder"

fiery hemlock
#

if it worked completely fine than that shows it can work, wouldn't you say?

sly skiff
#

but it cant work

fiery hemlock
#

i agree it's probably not a good solution or the one that OP should be using

sly skiff
#

what he means by working is that pbo is created

#

the pbo itself is shit though

#

and will throw probably all possible errors

dawn palm
#

it's abundantly clear he's not familiar with bis architecture (which is not a crime). He's using useless tools expecting them to do the work for him, via magic. Believing, falsely, that somehow somway, pboMangler would be perfectly fine if he could just get it to produce a bisign and new sha key.

#

he then gets a surprise, moving folders, and expecting addon breaker to change the prefix (and alter code in the config.cpp

#

@feral spruce , PLEASE don't read above as insulting you. Everyone starts here. You need a p:\ drive to put your addons in the proper place. Yes, that part can be done by addon breaker without one. But you'll learn nothing.

feral spruce
# sly skiff what he means by working is that pbo is created

No, what I mean by working is that I went in game, opened my editor, spawned a modified jet and flown in it. But when I take that same folder and turn in into pbo using addon builder (instead of pbomanager). Than it stops working, I cant find that aircraft in editor when I am ingame

dawn palm
#

it's more than certain you have the wrong prefix. all the files the config.cpp wants (and separately the p3d) simply aren't where they say they are.

#

the reason why pboMangler 'works' is because it is still using the prefix it read from the pbo, along with it's config. BUT, since it can't make a new bisign......

#

I think everyone here will agree, you are wasting your efforts using it. It's a superb, intuitive, and quite easy to use tool FOR MISSIONS.

feral spruce
#

I dont have a p3d, it is just config files using existing aircraft, but modifying them and their skins (well other ones do, but seeing that even this one doesnt work)

dawn palm
#

fair enough, i assumed some p3d, and the comment remains valid if you used them. If you don't, it doesn't change my overall comments,

#

I've said enough, you're beginning to make excuses.

feral spruce
#

doesnt prefix get generated by addon builder?

fiery hemlock
#

listen to the man, it's time to open up your wallet and purchase pboProject 😜

dawn palm
#

not at all

#

no WAY!!!!!

#

save your money

fiery hemlock
#

yeah there is a free version too πŸ˜›

feral spruce
#

I have pboproject it gives me error for a code that I am pretty sure has no errors, but I will recheck

#

I am just confused why I can use the assets when they are packed with one program, but not with other and it worked for last 3 months and 20 updates on workshop, but now it suddenly stops even tho I didnt make much changes

#

maybe I was just lucky for that long

dawn palm
#

the free version contains the core subscriber modules. The subscriber version simply adds more features. Point being, you will use the very same modules whether free or subscriber. I have no reason or need to rip you off.

scenic canopy
#

I guess the difference when it works is that its a non binarized config.cpp forced into a pbo by pbomanager but addon builder by default will try to binarize it and fail since the code might not be valid

feral spruce
#

soo bottom line that prefix and config might have problems?

feral spruce
#

Okay I am at work, but I have a simple mod which is just config file and a mask retexture. Code is like 5 lines long so impossible to mess up.

dawn palm
#

the prefix, baked into the pbo, is the deciding factor of thingy=prefix\some\where\texture.paa

#

you need to understand it before advancing further in your bis modding career.

#

in my tools prefix is automatic by the simple fact that the texture lives at
P:\prefix\some\where\texture.paa
no matter which tool you use, keep referring back to this until you understand the mechanics.

feral spruce
#

Thanks, but I think I found the problem...

#

In addon builder....in advanced options, I had bs typed in prefix category.
I was trouble shooting smth maybe a month ago during my last update and forgot to delete it...

#

So ye there was a problem with prefix, it was just I am an idiot

dawn palm
#

-options that must change for each pbo made should be on the front panel. Not, hiding away.

scenic canopy
#

Eager to hear of any speed improvements in latest subscriber version of pboproject πŸ™‚

opal vortex
opal vortex
#

A fuck yeah I took the hardcoded path in the main file but forgot the discord bot. Thanks man that really helps out

scenic canopy
opal vortex
#

Ah shit I didn't even know they had an API. That would've made life a lot easier lol

#

Thanks man I really appreciate it

scenic canopy
opal vortex
#

Fixed both things. Thanks guys

rough grove
zealous ivy
#

I have a bit of a problem with Eliteness. I'm trying to make a PBO file, but it says that some of the files mentioned in my config file are missing. They're not. The path is correct. Is there something I'm missing?

dawn palm
#

Y

#

your files must exist in the correct place on the p:drive

#

use pboProject, not elitness, to make pbos

bright whale
#

I am attempting to make a batch file to mass convert paas to tga in a folder and its subfolders using the following:

 pause```
Using that in an individual folder works fine, but if I add `/R` to apply it to subfolders as shown below
``` for /R %%f in (*.paa) do ( Pal2PacE "%%~nf.paa" "%%~nf.png" )
 pause```
all I get is an error for each paa saying `(Loading of img failed)`
What am I doing wrong?
fiery hemlock
#

well you're using batch

bright whale
#

Is that the wrong tool for this? Everyone I've seen mass converting uses batch.

fiery hemlock
#

yeah batch is pretty dumb. if you're on window powershell is a pretty good automation language, it's a pretty good automation language overall but especially so on windows.

scenic canopy
#

pboproject now does multicore paa conversion

bright whale
#

I'm trying to do paa -> tga in this case.

fiery hemlock
#

doesn't pal2pace.exe do that?

scenic canopy
#

Go for powershell πŸ™‚

fiery hemlock
#

yeah for automation batch is so 80s

#

powershell is an actually good automation language

bright whale
#

(which is what I am doing)

fiery hemlock
#

so, that's perfect

#

what else are you looking for?

bright whale
#

Sorry, did you see my message above? I can mass convert all the paas in a given folder, but if I add a parameter to run the command in subfolders it gives me an error.

fiery hemlock
#

no, i don't care to parse your batch syntax

#

tell me in prose what it is you're trying to achieve

dawn palm
#

~n is not parsing the subfolder correctly

#

change your code to echo %%~nf.paa to see what's happening

bright whale
dawn palm
#

the specific parm

bright whale
#

It's returning errors in the format of

echo  texture_co.paa->texture_co.tga
Error (Loading of img failed) echo  XP_SMDI.paa->XP_SMDI.tga```
dawn palm
#

how on earth can it be difficult to replace pal2pace with echo

bright whale
#

My bad, I misunderstood.

blazing needle
glossy inlet
#

That'd be one hell of a task, and you'll probably not do module attributes, but thatd be very cooleo

scenic canopy
#

if you unbinarize the file you should be able to use the armaclass lib

karmic niche
blazing needle
#

i have no acces to a pc with arma rn, so it will have to wait till mon/tue

#

but chances are good that it will work with armaclass (I used it before) since there are no preprocessor commands

glossy inlet
#

You won't be able to do what he seems to intend to do though.
You can import all unit positions, maybe some/most attributes.
But what you are doing is essentially replicating that export mission for editor SQF script thing that is in vanilla data somewhere.

With all its limitations and even more complex as you also have to parse the savegame instead of just doing "getpos unit1"

karmic niche
#

You just made me realize that...

Note: Starting with Python 3.7 onwards, dicts are always ordered so it doesn't matter if you use keep_order or not.
...that python 3.6 got eol'd 2 weeks ago (and there is no "starting with python 3.7" anymore) so it's high time to update that library πŸ˜…

dusty walrus
# karmic niche You just made me realize that... > Note: Starting with Python 3.7 onwards, dicts...

I first tried to extend your library to be able to also get the parent classes, after a while I tried to just recreate it with Pyparsing to achieve that. Some weird syntax made it really laborious and maybe even impossible with a PEG parser (for example: nested double quotes, ala "This is "my string"").
Everything because I was trying to parse configdumps with it and getting the parent would be awesome.

If you have a rough idea how to do it and you are ok with me contributing, let me know. Also if you are interested in the Pyparsing syntax I have created also.

dawn palm
#

the correct syntax is "blah""blah"

#

or even "blah """blah""

#

any way that you wrestle with the alligator, quotes must be paired

#

i don't think my tools would have a problem decoding savefile to mission.sqm but i'd need to know if several find it useful

#

savefiles are ginormous. converting back to text even bigger, if i recall correctly bis tools throw their hands in the air, or used to.

#

i use savefiles as stress tests for my code or to move player position if i die instantly on a restart

karmic niche
# dusty walrus I first tried to extend your library to be able to also get the parent classes, ...

Hi. As Mikero said, you use double quotes, so This is "my string" will become "This is ""my string""". That's the Windows escaping method, AFAIR.

Regarding Pyparsing: I just started the project to parse a minimal mission file, back then, so I wanted something that would not depend on anything that I could use in our scripts. Also, I have simply rewritten @snow burrow's JS parser to python and didn't attempt (nor did want to) modify it substantially, as I simply wouldn't really be able to test it later.
That's why armaclass isn't using pyparser nor any other library.

Note: I have started experimenting with porting it to Cython to speed parsing up, just for fun (available in another branch on github, but I don't remember its state). I may get back to it someday.

Regarding looking for parents, I'm not really sure what you actually want to achieve. Since we're talking about simple python objects, can't you just do a naive search and iterate over all the classes and check which one contains yours (and that would be the parent). It won't be optimal, sure, but it would work, if I understand correctly what you want to do

#

Otherwise, you'd probably need to add additional information when creating objects to point to parents when they are created (since you're in the parent when creating the child). Again: if I understood you correctly.

rigid current
#

Yo bros im trying to use pbo project

#

Im going to make a config patch with a path that leads to a file in another mod

#

But it wont crunch it saying missing file

#

Is there a way to disable the errors

#

I set all errors to disabled in setup but it still wont crunch

fiery hemlock
#

no, you can't disable missing file errors

rigid current
#

Rip, addon builder it is then

#

Thanks

#

Btw using pbo project is just simply making sure all configs are correct and then pressing crunch right

grand kelp
rigid current
#

thanks btw

grand kelp
#

No problem, you asked πŸ™‚ The dummy method is often used. You will miss out on (some) error-checks with AB, but the important thing is that it fits your workflow.

scenic canopy
dawn palm
#

haaaaaaaaaaaaaaaaa

shell egret
#

Sorry if this is the wrong place, but I don't know if there's a dedicated place to discuss intercept(-database)?-related items.

I've noticed that the callstack_item used by dbExecute in intercept-database doesn't appear to suspend as is documented, but causes visible rendering freezes.

If anyone has any documentation or information that they could offer me on the API for callstack_item so that I can figure out how to get the desired suspend/yield behavior instead of the freezes, I would greatly appreciate it.

My initial theory is that the set values for d1 from callstack_item_WaitForQueryResult::next(..) are incorrect, and that d1 = 3 does not mean wait as is documented by inline comments. ANY insight or documentation in to the intended behavior of d1 values, and the callstack_item API in general would be greatly appreciated.

Slightly more detailed writeup over on GitHub - https://github.com/intercept/intercept-database/issues/31

Thanks in advance, and if I"m in the wrong place, lmk where intercept discussion is to take place πŸ™‚

glossy inlet
#

The canSuspend detection might be broken. I think it tries to detect that directly rather than calling the script command

#

and that d1 = 3 does not mean wait as is documented by inline comments.
no thats correct

Did you actually debug what happens or are you just guessing that it might be the callstack item?

https://github.com/intercept/intercept-database/blob/e9ffe6a6d3166f82bc24ebf06c61cf2be124a918/src/connection.cpp#L294
I think its more likely that this check always returns false and thus always does the query synchronously, even if you call it from scheduled code
I don't remember when I last touched that stuff

#

and that the is_scheduled member of the vm_context is true on the intercept side.
oh.. think_turtle

#

To be extra sure I just checked, 3 is yield/wait so thats correct

tiny scroll
#

Where can I find the changelog for PboProject?

#

halp @dawn palm

grand kelp
tiny scroll
#

oh, it's in the thing itself

#

ok, thanks

blazing needle
#

is it possible to only download the arma3diag_x64.exe from steam? I have used depotdownloader so far but now I am getting errors:

@ECHO OFF

:: CHANGE THESE VARIABLES
SET USERNAME=[REDACTED]
SET /P "PASSWORD=Enter password for %USERNAME%: "
SET "A3DIR=D:\SteamLibrary\steamapps\common\Arma 3"
SET "FILELIST=FileList.txt"

:: ONLY CHANGE IF YOU KNOW WHAT YOU'RE DOING.
depotdownloader.bat -app 107410 -depot 107411 -beta development -username %USERNAME% -password %PASSWORD% -remember-password -dir "%A3DIR%" -filelist "%FILELIST%" -validate
pause
``` Output:

Enter password for [REDACTED]:
Using filelist: 'FileList.txt'.
Connecting to Steam3... Done!
Logging '[REDACTED]' into Steam3... Done!
Using Steam3 suggested CellID: 89
Got [REDACTED] licenses for account!
Got session token!
Got AppInfo for 107410
Using app branch: 'development'.
Got depot key for 107411 result: OK
Downloading depot 107411 - ARMA 3 Content
Downloading depot manifest...Got CDN auth token for steamcontent.com result: Fail (expires 01.01.1970 00:00:00)
Disconnected from Steam

```txt
arma3diag_x64.exe
#

Also: Is it possible to explore the depots of steam games to see what files I can download?

sly skiff
#

Im downlaoding it with depot downlaoder yeah

#

looks like same setup I got

scenic canopy
blazing needle
#

yep that worked

karmic niche
#

Although it was half a year ago so I can't give any details about that because I've simply forgotten

scenic canopy
shell egret
# glossy inlet > and that d1 = 3 does not mean wait as is documented by inline comments. no th...

Thanks for the reply! fantastic to get confirmation that I was barking up the wrong tree with d1 stuff. I'll re-confirm tonight that the is_scheduled() is working as intended since you think that to be a likely candidate, but I'm 99% sure I checked that when I wrote the issue initially.

I'll get back to you quickly with an answer on that, and hopefully either way we can find out what's going awry. Again, I can't stress how much I appreciate the time you give us for these things. With the lacking documentation of some of these engine internals, these projects would not be possible w/o that access and effort, so thank you πŸ™

buoyant timber
#

Does anyone have expirience with Titans F3 AAR?

We have a specific problem that it doesent support cyrillic fonts, and most of the things including nicknames in my community are cyrillic.

dusty walrus
#

I can't find the specific thing you mentioned, but if it has a https://github.com repo, maybe open an issue and ask for "Unicode"-support. (Just generally, do not even know what Titans F3 AAR is or does)

glossy inlet
#

Random note, If you are on a server then callExtension command will wait till server has sent out all messages in message queue.
So callExtension can cause some "short" freezes, but on a already networking overwhelmed server that seems like something to think about

scenic canopy
#

ooooh, that explains some issues I've seen πŸ˜„

glossy inlet
#

Tell me about them

scenic canopy
#

our AAR logging sometimes stops for a while then have a burst of data πŸ˜„

glossy inlet
#

That stuff is from early 2015, I don't know if its still needed. Might try that on prof

fiery hemlock
#

what's the rationale?

glossy inlet
#

I don't know ^^

fiery hemlock
#

πŸ‘€

#

i wonder if that's already in A2

glossy inlet
#

no its from 2015

fiery hemlock
#

ah right, i missed that

scenic canopy
#

are there any comments why extensions should be blocked by the message queue?

#

do they share any queue for processing?

glossy inlet
#

no, no

#

well some vague comment about "the might interfere"
but extensions don't send network messages. They don't touch that stuff at all

fiery hemlock
#

there is a potential ordering issue if you create a separate communication channel using extensions on both client and server

karmic niche
#

Are they running in a separate thread? (I think no) Then maybe it's a case of something timing out while waiting for the extension to return to the game?

glossy inlet
#

If you create your own coms, that would be completely seperate from Arma coms

#

Are they running in a separate thread?
yes

fiery hemlock
#

i agree. it's the only reason to do this that i can think of though

glossy inlet
#

Then maybe it's a case of something timing out while waiting for the extension to return to the game?
Extensions should never run that long, and if they do you get error logs in RPT telling you to fix it

karmic niche
#

yes
Huh? But the game freezes completely when I'm making long extension calls πŸ€”

glossy inlet
#

the networking is in seperate thread, extensions are in main

fiery hemlock
glossy inlet
#

huh idea.
async call extension. Calls in seperate thread, only returns result via callback meowsweats

fiery hemlock
#

it's user implementable (with polling)

karmic niche
#

what's your extension doing that you freeze the game? πŸ˜›
import numpy - nothing I can do about that and it's only once, during initialization. Don't worry πŸ˜‰

#

I'd do it async if it was anything else, but in this case, I don't see the need to. And that's when I noticed that the whole game was freezing for that time. Glad to have it explained by Dedmen, though

#

(and it's on the server side at the start of the first mission, so players literally don't even notice - you can only notice it when you're developing the mod)

karmic niche
glossy inlet
#

no it won't because it would be a new feature and not modifying a existing one

fiery hemlock
#

as long as it uses some new RVExtensionAsync

#

but some ```CPP
void RVExtensionAsync(
const char* input, size_t inputSize,
void(completion)(const char output, size_t outputSize, void* context), void* context);

called on the main thread would be more efficient
#

coincidentally it would also avoid the problem of maximum output size

karmic niche
#

Since we're talking about extending calling extensions, I've been wondering about something like Unload() that would be called when Arma wants to unload an extension (just prior to dlclose/FreeLibrary).

Rationale: if I understand correctly, this may come in handy on linux, since you can't really depend on anything to detect that you're being unloaded on time (since you'll see that when the whole process is closed and not when the library was closed by Arma itself).

I've noticed that my Logger::logfile->flush() (spdlog) on exit was causing segfaults, probably because it was accessing data that has already been wiped. Having something like Unload() would allow me to flush and unintialize everything while I have a guarantee that everything else is still there

#

(unless I'm misunderstanding how it all currently works - which is also a possibility)

fiery hemlock
#

i've done that for dev purposes using a proxy extension

#

to unload, rebuild and reload the actual extension without having to restart the game

glossy inlet
#

Someone once made a bug saying that destructors in linux lib didn't get called on unload.
I checked and we correctly unload and destructors are called 🀷

karmic niche
#

Can't check where it was atm

#

I checked and we correctly unload and destructors are called 🀷
Okay, I'm definitely not an expert on this, but based on my obervations of both Arma and my custom tester that loads the dll/so, the case may be (again, take this with a grain of salt!) that you're unloading correctly, and the destructors ARE called but not when you're unloading, but later, when that extension doesn't have anything under its feet anymore, because that's when the OS started freeing the whole process' memory

#

What you could do is unload a linux .so, make it print something to the console on unloading, and then wait a few seconds before shutting down Arma itself.
And then check when the message is being printed - whether it's during dlclose or several seconds later.

According to what BoGuu said (see link), you may need unique symbols in the library for a good repro, though 😦

gritty radish
scenic canopy
#

would serializing to the extension be threaded as well?

glossy inlet
#

we wouldn't need to get the buffer for the result, and also not wait for networking stuff there I think.
So that would speed up the arma->extension transition

#

and instead of going through all that to reach async. The engine could immediately push it to thread which would be much more efficient

scenic canopy
#

what's the overhead to fetch an empty buffer?

karmic niche
#

since you can do it in your extension already
Tbh less code to be written by the extension developer == less chance to mess stuff up

scenic canopy
#

unless the async callback is managed in an easier way than the current generic one you still need to handle all of that

#

spawning a thread on initial call is trivial in almost all languages including c++

karmic niche
#

I understood it as "your call won't be blocking the game so just do whathever you want and return a value using <this_thing>"

scenic canopy
#

and then comes questions like, should the async version have a limited thread pool? can you fire of a whole load of async calls at ones? πŸ˜„

fiery hemlock
#

that's why it's better not to bring threads into it

nocturne basin
vague shard
#

is there a way to determine mod dependencies via workshop APIs?

scenic canopy
vague shard
#

thanks! is there some command line tools or similar, or webservices?

#

context: we want to reach out to people with dependencies to our old IFA3 upload that has been replaced

scenic canopy
#

steamworks

#

if you want a web api you can use https://api.steampowered.com/IPublishedFileService/QueryFiles/v1/ with return_children=true

#

or even better, just query for child_publishedfileid=660460283

#

might not work since it's not "published" though?

#

so you'd have to follow the cursor paginator and the return_children

#

for example, the query appid=107410&return_children=true&cursor=* returns

{
    "response": {
        "publishedfiledetails": [{
                "publishedfileid": "2648308937",
                "title": "IFA3_AIO_LITE",
                "children": [{
                        "publishedfileid": "583496184"
                    }
                ]
            }
        ],
        "next_cursor":"..."
    }
}
#

omitted descriptions, stats etc πŸ˜›

vague shard
#

thanks!

QueryFiles has a lot of required parameters according to docu - do really have to provide all these?

scenic canopy
#

no, only key

#

note that its one of the few calls not requiring a publisher key, just a plain api key

vague shard
#

already have one, but cant get the query to return anything meaningful yet - returns a non Arma mod or Trebuchet mod (but mostly no results)

scenic canopy
#

Filter by the arma app id

#

Increase the return size and follow the cursor

vague shard
#

seems child_publishedfileid is the problem - cant get that to work

scenic canopy
#

Skip it and query all

#

It doesn’t take that long

#

I index all items every night

plush shard
#

looks like child_publishedfileid only returns parents which are collections - great documentation (as always) with VALVE 😞

vague shard
#

thanks! so no way to query dependencies via that api?

scenic canopy
#

see above, with return_children=true you get back each items dependencies

#

just fetch all items and filter by the child dependencies

#

to limit the amount of items somewhat also filter by the mod tag to avoid missions, or vice versa

#

I guess in your case you want all

rigid current
#

yo bros anyone know a fix to steam error code 2 when updating mod thru publisher

rigid current
#

it seems that error is related to steam ports and port forwarding.
Quick Solution: Boot up a mobile hotspot from your gadget, connect, then upload
Long solution: make sure to port forward steam's ports on your router

rough grove
#

arma-rs 1.5.1 is out! The main feature since 1.4.0 is building 32 bit extensions without any extra work. (Previously a cargo config and definition file were needed)

https://crates.io/crates/arma-rs/1.5.1

blazing needle
#

oh nice. just have to learn rust now πŸ˜…

foggy jungle
#

Hey, so, correct me if this is the wrong place, but I'm trying to setup my P Drive and I'm getting this error:


***warning***E:\Steam Spel\steamapps\common\Arma 3\jets\Addons\boat_f_jets.pbo:Bad Sha
Content extracted regardless, but won't process further pbos
DePbo corrupted sha key```

I tried Googling, but found nothing
karmic niche
#

I'm guessing you should verify the integrity of your files
Also, dat πŸ‘‡

sly skiff
#

dis πŸ‘†

foggy jungle
#

Cheers, that fixed it.

dawn palm
#

and....
just when you all thought it was safe to go back in the water...
pboProject updated to check the validity of mod.cpp files

sly mica
#

Hello, I am having an issue I cant seem to find anything on it for Mikeros pboProject

Below is a screen shot of the error I get when I attempt to launch the program.

https://imgur.com/AK0bZZJ

sly mica
glossy inlet
#

Dedmen* 😒

sick verge
#

Dead man

sly mica
karmic niche
#

Decesed*

upper gale
#

may be the wrong channel but are there any mods or tools to like delete player dropped items? got some players who like to drop random things lol

dawn palm
#

nope. the tool would be a cheat when used to delete other players items they're using

#

plus what's one persons' poison is another's needed item.

native kiln
#

I think he means that players on his server drop items and these items are left behind forever

glossy inlet
#

Is the wrong channel, you don't want a tool you probably want a script

sour hedge
#

Has the detection and warning message of trailing comma's in arrays been removed in latest free Mikero pboProject (3.16)? Asking for a friend, haven't confirmed it myself.

dawn palm
#

Not that i am aware of

blazing needle
#

does someone know of a program (ideally powershell, python would also be good) that can return the installation path of a steam game?

scenic canopy
#

arma can be found via registry

#

otherwise registry and/or steam vdf metadata files

blazing needle
#

yeah ideally i would not have to write it myself πŸ˜„

scenic canopy
#

so registry for arma?

#

hmm, looks like only tools is in registry

#

except some profile data

#

steam path via registry and vdf file then

coarse fossil
#

it's in the registry for me. make sure to check 32bit and 64bit tho, they are different paths in regedit

karmic niche
#

(although it's old [python 2] code, but should be easy to port; maybe will even work verbatim)

sly skiff
#

@dawn palm you happen to know why Binarize would throw this kind of error on log and a error popup for "error in config terrainConfigFolder\config.pp"

16:20:28: Error context position[]={3358.48,4379.27};
16:20:28: Error 3 while parsing

postition[]= is part of location name classes and is X Y coordinate

#

after hitting ok in the popup, binarize finishes and pbo is built

#

but it does halt the process

#

never seen such popup before

scenic canopy
dawn palm
#

@sly skiff all i can think of is that your map isn't that big or, the height is illegal for markers

sly skiff
#

hmm I'll try lowering the Y coordinate πŸ‘ πŸ€”

#

nope that did nothing

#

I'll keep prodding it

#

I'll let you know if I find anything you could add as a check

sly skiff
#

@dawn palm Turns out the location classes had names macro defined for stringtable stuff and the defined names had ; at the end plus the displayname = MARCONAME; also had the ; in the end

#

pboProject did pack the config up separately no questions asked but WRP binarize pooped on it.

drifting sandal
#

ExtractPboDos PboName[C:\Users\DmitriyBlade\Desktop\Arma 3 SCENARIO MAPS] [C:\Users\DmitriyBlade\Desktop\Unpacked]

#

what is correct command? folder of .pbo's to unpacked folders

#

error: destination must contain a drive specifier

grand kelp
#

Wrap your arguments in "

dawn palm
#

error: destination must contain a drive specifier
this restriction will be removed on next update

drifting sandal
#

gui version works great until it stuck with .pbo with
"bad sha", or "DePbo no sha key"
as i read manual, there is not option to ignore erros in gui version, right?

#

PS C:\Program Files (x86)\Mikero\DePboTools\bin> ExtractPboDos ["C:/Users/DmitriyBlade/Desktop/Arma 3 SCENARIO MAPS"] ["C:/Users/DmitriyBlade/Desktop/Unpacked"]

"invalid/faulty file"
https://i.imgur.com/hAxx43P.png

drifting sandal
#

uhh, still not sure how to use dos correctly

scenic canopy
#

Don’t add the [ or ]

#

You might have to use \ instead of / as well

drifting sandal
#

ExtractPboDos -W "C:/Users/DmitriyBlade/Desktop/Arma 3 SCENARIO MAPS" "C:/Users/DmitriyBlade/Desktop/Unpacked1"

#

@scenic canopy dankeshon!

drifting sandal
#
Opening C:/Users/DmitriyBlade/Desktop/Arma 3 SCENARIO MAPS\mTSG@87_Afganistan88_v3.Kunduz.pbo
Opening C:/Users/DmitriyBlade/Desktop/Arma 3 SCENARIO MAPS\mTSG@87_black_fox_v1.Altis.pbo

calculated='10A32E678D1B9254F624485B3DD6A3ED156D353E'
should be= '0000000000000000000000000000000000000000'

warning onlyC:/Users/DmitriyBlade/Desktop/Arma 3 SCENARIO MAPS\mTSG@87_black_fox_v1.Altis.pbo:Bad Sha detected

***warning***C:/Users/DmitriyBlade/Desktop/Arma 3 SCENARIO MAPS\mTSG@87_black_fox_v1.Altis.pbo:Bad Sha
Content extracted regardless, but won't process further pbos
DePbo corrupted sha key  s```
#

@dawn palm any option will force ignore "sha" type errors? "-P" doesn't work,
but i can manually unpack'em thru "pbo manager 1.4"

dawn palm
#

the pbo is corrupt. you are foolish to use it. better you delete that pbo so you can contiue

scenic canopy
#

it's odd that should be is saying zeroes though?

scenic canopy
#

I guess I read the message wrong, the PBO is stating zeroes

dawn palm
#

badly worded by me i guess, yes, the zeros are in the pbo. probably done by someone trying to cheat, but not sure how to.

fierce swift
#

Hello,
I've been looking for Mikero's "QueryAddons" tool https://community.bistudio.com/wiki/QueryAddons to get cfgpatches names for ACE's PBO Framework.
I don't see it listed in either the free or paid version so I'm guessing the name got changed. Can anyone tell me what it is now?

grand kelp
grand kelp
#

That page does not contain a description for it. AiO does include it and its information. The tool is available for subscribers only.

dense cove
#

pboProject premium throws dll Unknown throw Error if I don't clear the temp folder. What it could be?

#

Seems like pboProject fails to remove some of the temp folders while crunching. I can remove them manually, but pboProject can't

#

Do I have a problematic folder? πŸ€” The error happens only for a specific folder

#

Did I done what? It suddenly works...

normal wigeon
west jasper
glossy inlet
#

😬

glossy inlet
scenic canopy
#

I'll update the action with the new binary

#

done

west jasper
#

Thanks!

vague shard
#

what is the lowest mipmap size the engine will use?
is possible to remove certain? or replace?