#arma3_tools
1 messages Β· Page 43 of 1
Check that your Steam client is connected
If you've used for example steamcmd it will break your regular steam desktop client until restarted
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)
Ok it seems to be a problem with my Steam Cloud, because I cant even upload screenshots
Any pending license agreements?
Nope, but i contacted the steam support
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" ""
}
The workshop page showing sounds like the account needs to accept new EULA
kinda tricky if you cant get to the mod page π¬
Ev.. eh.
Even not with the owner account?
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
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 
@dawn palm seem like i have received a future version of dewrp?
@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
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?
now it runs. apparently .paa was missing. the console version does not though
huh?
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
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
Though I can understand turning off DMs on big servers.
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.
nah, goats
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 
PMC Editing Wiki: ArmA 3 Terrain Separate Data\Layers into Smaller PBOs https://pmc.editing.wiki/doku.php?id=arma3:terrain:separate-data-layers
HorribleGoat: and the split folder naming is still a bit booped. could it perhaps be self defined?
you get PBO with TWO config.bin files in it.
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaargh
to any tool old-timer, e.g Oxygen etc: what is this? related to O2?
https://community.bistudio.com/wiki/General
same, is this O2-related? @dawn palm perhaps?
https://community.bistudio.com/wiki/File_Commands
second one sounds O2
https://forums.bohemia.net/forums/forum/11-model-editing-oxygen/
https://forums.bohemia.net/forums/forum/47-ofp-oxygen-beginners/
Oxygen Light by Bohemia Interactive @ Addons Depot
Oxygen = OFP model viewer and editor
Oxygen 2 / O2 = since A1/ArmA is seems
my god!! I wrote that stuff over 10 years ago, it's related to O2script. (pboProject was originally written in it, as was Bi's Binpbo)
you can call me the grave digger π I want to keep these ones, only name & categorise them adequately
moved to Oxygen 2 Misc Documentation - thank you lads!
I know, I just like to do it with dewrp. Mikero fixed it already
π
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.
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.
you can also check if the signature is valid against a key with dsutils
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)
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.
Exactly. I'm not saying there are differences on that. To make it clear, I did the following steps using the same .biprivatekey
- I packed in dos mode using pboProject with +K sign option.
- I packed in GUI mode using pboProject with +K sign option
- The same as 1. but signing again using DSutils
- The same as 2. but signing again using DSutils
- I packed in dos mode using MakePBO and signing with DSutils
- I packed with Addon Builder with sign option.
- 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.
- Fails
- Fails
- Fails
- Fails
- Works
- Works
- 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
I packed in dos mode using MakePBO with +K sign option.
there is NO +K option for makepbo
Wops, copy and paste, I meant using Dsutils my self
k
pls show me an example of the makepbo cmdline you are using.
I notice you are using UNbinarised configs
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
That cmd is making the pbo of !pbo! foldername inside P:\ into P:\@FFAAMOD\Addons folder
My current version of pboproject is 3.19, MakePBO 2.12 dll 8.41
apart from source and destination, makepbo of the gui, and the above should be identical
it is listed in the output.log btw
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";
};
};```
I rolled back to the pboProject 2.89.7.87 (the older i had in the downloads folder) and it's succesfully working. Now with the same command line as before it signs itself and I can now join to the dedicated server.
If there is something I can do in my hand to debug something to improve your tools just tell me.
Oh, and I tested also the pboProject 3.06.8.16 version with no results.
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.
Where I can get the version of the dll?
What is it and how can it be solved?
https://imgur.com/a/FfPjSzu
your files aren't in shevrons. for reasons best known to you, they are in @ancient gladed\shevrons
How should it be?
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
It's hard to find "Lessons" with a good translation, I think all my problems come from this
And that's why I'm asking here
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
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.
Ok, I'll try to do as you said, if of course I understood you correctly
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.
ahahaha, thank you π
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..
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
https://github.com/Dahlgren/arma-data-extractor could probably do it. I can send you a binary if you need it
yes please
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.
@glossy inlet Using your de_stringtabler, it crashes when using - in the string.
I can't fix it
I don't have my computer
can you submit an issue on github with a file that crashes it?
thanks, I'll have a look at it
Yep, I can repro the issue with charaters
Do you have something that causes the "crash randomly" as well?
might be the same reason actually
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?
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?
Doesn't it just handle the A2S_PLAYER packet? Because from what i can see, the callback seems to be with the name as a string, the score and the time played, which seems to be the same data as is contained in that packet
(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
sorry only just seen, yes I think it is because of the same reason, couldn't get the random ones without special chars
submitted a fix for your issue and setup CI with automatic builds
Im not seeing the build in github
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
(noCallExtension 'xxx' could not be found)
yet all the call returns is an empty string, I am a bit stuck. does anyone have suggestions?
sacrifice three goats.
is a Horrible one OK?
Source code?
are you using any of the helper libs?
the most common issue I encounter is compiling as wrong arch
visual studio defaults to "any cpu"
I use DllExport, and properly set x64 to dllname_x64 ofc
ideally set platform to win32 or x64 in visual studio instead of default "any cpu"
IF your dll is adjacent to the exe, it should find it auto magically
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
Yes, but you need to select platform in visual studio dropdown
right next to debug/release dropdown
yes yes, that is covered π and the flags are set as well
π
Dependency walker anything?
You're sure it gets called?
Maybe use the Alt of callExtension to get more info?
What dotnet framework/runtime?
(I don't want to appear demeaning but reassuring, thanks for checking the basics π)
I usually forget that one π
you can use this to avoid having to test in arma as well, http://killzonekid.com/callextension-v2-0/
Or sqf-vm π€«
I call
"hurrdurr" callExtension "test"; // "CallExtension 'hurrdurr' could not be found"
"realname" callExtension "test"; // nothing in the log
```I will try the alt
"Method is not implemented" indeed 
DependencyWalker then to the rescue
here's the file
first time I use it, it seems only the DLL is listed
I break everything
wait
did you add the Dll target to your project file?
with correct version etc
Open letter to everyone reading this: please stop suggesting Dependency Walker, and start suggesting https://github.com/lucasg/Dependencies instead.
Dependency walker is old and unmaintained. Use the above instead!
and did you select the correct C# project type?
Class library .NET Framework unless I'm mistaken
this link basically says "no .NET dll can do since Arma does not load it", am I reading that correctly?
I don't think that's right no
make sure you use "Class Library (.NET Framework)"
that's what was needed before at least
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)
Ty, did notice that but never really looked for a better suggestion
Make sure you're exporting the right symbols (RVExtension, etc...) in the window in the middle to the right (with the "E" column)
I mean, when you click the LouDll_any.dll, you should see the exports there
true, I have nothing
x64 is even worse
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 π© )
https://imgur.com/a/lvs6iVq @spiral forge
yep, thanks π’
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
I put that there, but the file itself is not there
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?
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.
so anyways under the hood (somewhere in unmanaged exports?) there will be a native code like "launch .NET and feed it the assembly?"
yes
what file is missing, the targets file?
yes, the file in the ParentProject\packages\
well, that sounds like your issue
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
just created a plain class library .net framework project, had to downgrade from 4.7.2 though
4.5.2 I heard is the minimum needed?
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
hmm 
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
Or maybe make a native extension that would catch messages from ArmA and send them to your .NET process through a socket?
you can also compile dotnet core to native
is there an example?
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?
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 π€
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
It kinda is not π
Would be cool if we could move the RVExt examples to BI github but... I guess that might not happen
wai not?
(I believe we don't have one btw?)
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)
you can also do it on github right now π
@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?
@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
as already mentioned you dont need unmanaged exports
maybe take a look at my draft (good reminder to update it :D)
https://github.com/arma3/RV-Extension-Examples/pull/4
it got support for callback stuff
who wants to use older stuff anyway lol π
π
Thanks, I will try again this Friday night (I have no life)
Make Arma not Life?
not making any life at the moment iykwim
definitely skip .net standard 2.1, and move forward with .NET 5, it's beyond pointless to use .NET Standard now
Thatβs still way newer than the biki example, itβs probably like .net framework 4.5 π
which is kinda insane, given what .net standard was supposed to be
It used .net standard 2
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.
it is definitly not
.net standard was a child of a time were the runtime was split between .framework and .net core
it was only a link
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.
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
@dawn palm How would I go about hard wiring it?
hmmmmm.
if you're 'simply' calling addon breaker, i haven't a clue why it can't find filebank.
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
64
+5
Nice.
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
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
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.
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
The Arma 3 Tools can do that, TexView
@scenic canopy Tried ImageToPAA,
Failed to convert 1 file(s)
```Works for files with power of 2 dimensions
Try the TexView program, Iβve used it before with weird PNGs
Huh, that works, the texture appears almost invisible in the game though
are you using some color profile or something?
No, its a usual 24bit PNG file as source.
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.
that's the usually recommended step I believe
This
I need the image to be used in-line, inside structured text, no way to specify dimensions there, only size
Why is this tho?
Wut? You can use width and height on img tags in structured text
Need to keep it customizable, single structured text to edit
So you're just too lazy to do that
I don't think you can
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
But that is too much #arma3_gui by now
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
Non standard sized paas won't work correctly.
Seems that Arma 3 Units squad logo converter manages to make them work right with any size
Yeh, didn't help
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
Thanks for the insight, I've seen several squad logos working fine with non-standard dimensions before though
Pure and utter luck usually afaik
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
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
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
I'm using this in all of my task descriptions...
<img image="path" width=123 height=312 />
But you're right is does not seem to work in structured text/parseText 
is briefing not a structured text?
I think html is seperate
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
preview jpgs are exception I recall
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
is there an existing tool to convert an rtm pose to fbx?
dont recall anyone speaking of such π€ good question
In theory, you can do that with Blender, there is an addon to import RTM.
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
//--- 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?
afaik it is called the first time you try to call the extension with callExtension
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
ju
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 π
that's not an assignment and it's uninitialised
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 π
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
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 usingDllMainon windows and wanted to switch to lazy-initializing now that I'm porting it to linux
std::string s = "<unset>";
static void init()
{
s = get_some_value();
}
static char dummy = (init(), 0);
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
Use static methods instead with static variables imo
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
Bigger issue is the unload in my opinion
Maybe std::auto_ptr for that
Is that actually guaranteed to unload when a library unlinks? I am honestly not sure at all here how that works
auto_ptr is just unique_ptr with an auto_ptr& constructor
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.
just run procmon and check what file paths it looks up
oh does it tell me which dlls it looked for?
it shows all filepaths it checked
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
what is the error you get?
Unable to load DLL '<name>': The specified module could not be found.
i think a missing symbol gives the same error
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.
you could try loading each dll in the graph individually starting at the leaves
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#?
Well tbh I happened to be reading Effective C++ today (which came before C++11 AFAIK) and I just mindlessly repeated what I read there, my bad.
Although, in my particular case of setting a global variable once and not copying it anywhere, it would have worked just fine π
But yeah, kids, don't use auto_ptr, use unique_ptr, instead! π
I'd be surprised if that's NOT how it works. I can check that for you in the near future since I'll be working on it anyway
Issue I see with this is that memory gets allocated but not freed because of static memory regions being allocated somewhere
where are you envisioning a leak happening?
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)
Given a static variable for value storage inbetween calls (eg. Open sql connection), would the destructor be called on a unique_ptr
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.
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
Even then, only freeing the memory is not enough, given that libraries might hold handles to things
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
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
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
Yeah
As I said, it is some interesting question especially because it is runtime depending and not based on c++
@karmic niche This is expected if your library contains unique symbols.
Check nm <lib> | c++filt for u type symbols
If you for example load/unload/load, your static library ptr will be constructed once.
https://gcc.gnu.org/onlinedocs/gcc/Code-Gen-Options.html (-fno-gnu-unique)
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")
Destructors of static variables are called at normal program exit in reverse order of their construction
Normal program exit ain't the same as library unload
library unload is not defined
windows kind of views each dynamic library as a separate program
That is the point π
regardless of library unload, when the program in which main resides exits, the destructors of all variables with static lifetime are called
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
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
Yup
that does not happen in the case that was being discussed
the extension does not refer to arma
presumably it doesn't anyway
But the memory allocated might hold a handle to system resources which are held for an eternity
elaborate
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
well of course not using RAII leads to leaks
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
Unloading a linked library
it's not undefined behaviour
Long story short simply is that libraries are kinda a special thing in cpp land
https://linux.die.net/man/3/dlclose those constructor and destructor things actually are also able for usage with Linux
Still situations where they don't run when calling dlclose(3)
(such as the unique symbols I mentioned above)
this doesn't seem to be the case with dlclose
There was a FT ticket about that, turns out it was also a problem in their library, but that person blamed us for it and threw a rage/spam fit on FT and then unsubscribed from all his tickets and probably never saw the reply that its not our fault π
https://stackoverflow.com/a/38573692 Here's a ref for what BoGuu was talking about
Thank you for mentioning that again because I missed your previous message (even though you pinged me π€¦ββοΈ ) as 6:25AM is the middle of the night to me π
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.
Hehe ^^
it's built into depbo dll
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
"latest dll is 8.53, yours is 8.53" so.. You have the latest version but it still shows updates available popup?
I would guess the metadata file for updates is out of sync with latest released version
Or a bug with latest dll
@quick fog your dll was a beta copy sent you privately, the error have above us fixed in the later released versions
@dawn palm do your tools binarize 3d assets, or do you defer to bohemia's binariser?
Bohemiaβs binarize
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
lzo is not used for file compression, only specific structures within a p3d
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
ok
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?
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
i think i tried LZO1X-1-11 and that didn't work. i'm not sure if i did actually try LZO1X-999
nothing else even came close for me.
i'll give that a go
LZO1X-999 does work. thanks!
didnt armake's dev(s) start to recreate binarize functionality? (for p3d)
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
Hi, there. The PBO Manager v1.1.0 is out. Ui improvements and bug fixes:
https://github.com/winseros/pboman3
Yeah, it was working but not fully, some issues with transparency in models IIRC. And probably some other bugs ;D
what do you mean by transparency?
Stuff that should be transparent was appearing opaque.
is transparency encoded somehow in P3D?
that sounds to me like materials weren't assigned correctly
IIRC the faces need to be marked as transparent.
Which can visualize as some interesting issues if one pixel is transparent by accident in your texture etc π
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.
There is.
The faces store a transparency flag.
Which is read from the rvmat, but also encoded into the faces in the LOD too.
ouch, forgot them
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
kinda weird to partition meshes and not objects
What PBO manager is hot now?
for what purpose
for using it for dayz addons getting the gloves and all that shit
this is Arma discord?
ye but same company ennit
and getting the gloves from where and for what?
to re-texture them
Id suppose using mikeros tools to set up the P drive and mod development environment works for DayZ too
ok thanks im very new to this shit
things go easier if you lose the shits
ye, i'm currently in a games design course so im trying to self teach myself other stuff along the way
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?
@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
Thanks, will try when I'm back at my computer
apologies
No worries, shit happens π
My TADST keeps crashing whenever the server loads the missionfile, anyone know a possible fix / what is causing the problem
is the binary rtm known to store the inverses of local bone rotations?
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
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
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
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?
yes i do
alright, perfect. thank you. i was really confused for a while with those binarised rotations
i can pass you my qnion code but i doubt it's any better or worse than what you've already done.
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
well the fbx version i'm using is 2020 if that's what you mean. i'm doing this with A2 in mind
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.
yeah and it's terribly convoluted as well
i'm using motionbuilder for animation editing though, and fbx is the native motionbuilder format
understood. afaik, autocad dominates the market.
no, in cadcam
yeah, that may be but what i'm after here is animating human characters for A2 π
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)
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.
- is my implementation of removing the public key from a signature breaking EULA? (as the key is the header of a signature file)
- 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
2009/24/EC probably applies
"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
- 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.
- Noo idea, i didn't know before I saw your tool.
Extracting few bytes from the header of the signature file is hardly reverse engineering. IMHO the tool is fine.
And people complain dlcs divide player base when server hosters are the ones doing it with mods.
Sorry, private mods
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.
It must be yes
Well depends
It is intended to run everywhere.
Depends on what features the mods you are using need
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...
If you run CBA as serverMod, and the players with DUI also run it, everything will probably fine
Ok, will try, so far it seems to work. Thanks!
(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.
Afaik hemtt just doesn't support the new preprocessor stuff
Yeah it doesn't.
my tools do. (with credit to @glossy inlet for always supplying reliable info)
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 π€¦ββοΈ
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!
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
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.
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
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.
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
#pragma balls
As long as a given compiler has support for the pragma balls, that will work
Otherwise it has to be ignored by others parsers or be output as warning
...but does sqfvm support it? π€
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
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
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%```
oh lawd that is horrid
date and time depends on OS settings
@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)
wouldn't you say that dates are the less simplistic one next to semver
yes
semver isn't useful unless you expose some kind of program interface though
oh alright that's epic. Yeah I'm familiar with semver.
Thanks for this too, does give me a base to start from
@coral egret Another thing you might not be aware of is a $pboprefix$.txt can have:
author=I amFamous;
version=199;
don't use batch...
I know, all my scripts are TS
typescript?
yessir
yikes
you can run lots of things in github actions
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..
will server signature verification also block people from the server if the version in that file mismatches?
of course, but only because the values are different
yeah I mean, that makes sense π
Epic, that might actually be the easier solution then
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.
^yep
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.
unique key per version is the correct solution π
ah yeah, had a few players who had that issue in the past with Grupple Adler mods
@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)
-
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
-
the prefix is determined by the location\on\the\p:\drive
this means you are packing from a cup folder. -
if you wish to force this elsewhere read up on using the @= option for makepbo
- but that wasn't like that before?
Why the sudden change that suddenly breaks tons of mods?
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)
k. will re-enable
@karmic niche
?
No, srsly, wtf mention? π @dusky dune
You mean that thing with Pythia?
Yes!
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! π©
I forgot okay
No, it's not okay!
Actually, it may be okay because you're probably right, but it's still not okay!
release 8.59 restores $pboprefix$[.txt]
Thanks!
CBA and ACE sets up proper P drive with correct paths, not impacted.
Unless you pack CBA/ACE without a p drive
ACE won't build then, p3ds etc will fail on file refs. Maybe CBA as well.
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
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"
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..
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.
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? π€
well. the penguin relies on mime-type in the first two bytes of a file to establish what app is required;. windoze uses ..ext
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 π€·ββοΈ
creating a new file with no extension in windows explorer with default windows settings is not a thing
no, but you can in Notepad "save as" and use quotes around the name: "fileWithoutExt", or "description.ext" π
add dot at the begginingend of the filename and it will create it.
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
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.
Ok choose file type * (All) in the drop-down and just put the name as you wish
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?
Donβt use pbo manager, you need to resign if you edit a pbo as well
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?
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
Kind of did no? I would extract pbo into a folder and than pack it again with addon builder for "release version"
But I will try your thingy aswell
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)
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
That's all addon builder gives isn't it.
In way of error messages. If one wants debug, pboProject is the tool.
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)
Check the log files, not just the console output
...and turn noisy on
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
because when I pack it with PBOmanager, it works, I just cant sign it for the server
pboMangler cannot create addons. only missions
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
that.s at least because of the error i pasted above
Ye no idea what that error means, I am looking at config right now. 807 is last line of config
typically, it happens when you have insufficent closing };
in that case I would get an error and it wouldnt work ingame
dunno.
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
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
what do you mean try that? Change server checking version?
use dsCreateKey to generate a new public and private key
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
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
};
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)
Unfortunately that does not work. There are lots of ways arma accepts faulty code without throwing a warning. As soon as it's processed and for example the formatting is changed the invalid syntax becomes in-tolerable and you end up with the error
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
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
it can work. it might not be the easiest solution
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
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"
if it worked completely fine than that shows it can work, wouldn't you say?
but it cant work
i agree it's probably not a good solution or the one that OP should be using
what he means by working is that pbo is created
the pbo itself is shit though
and will throw probably all possible errors
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.
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
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.
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)
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.
doesnt prefix get generated by addon builder?
listen to the man, it's time to open up your wallet and purchase pboProject π
yeah there is a free version too π
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
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.
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
soo bottom line that prefix and config might have problems?
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.
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.
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
-options that must change for each pbo made should be on the front panel. Not, hiding away.
Eager to hear of any speed improvements in latest subscriber version of pboproject π
I made a reddit recruiting bot w/ a discord bot attachment and was wondering if I could get some feedback on it. It's my first public code. Thank you. https://github.com/TheodorObukhov/Arma-3-Reddit-Bot
avoid hardcoding paths to your environment, https://github.com/TheodorObukhov/Arma-3-Reddit-Bot/blob/3da6db150160a591b0c9cf5b17a6b08f51fc5f16/src/bot.py#L11
put that in an environment variable
A fuck yeah I took the hardcoded path in the main file but forgot the discord bot. Thanks man that really helps out
use reddit's API instead of scraping their website, https://www.reddit.com/dev/api/
there's a bunch of API wrappers for python such as https://praw.readthedocs.io/en/stable/
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
you have the migrations in both migrations folder and in migrations.py
Fixed both things. Thanks guys
arma-rs is now published on crates.io with a new update!
Now featuring testing functions. Test your functions and callbacks without launching Arma!
https://crates.io/crates/arma-rs
https://github.com/BrettMayson/arma-rs#testing
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?
Y
your files must exist in the correct place on the p:drive
use pboProject, not elitness, to make pbos
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?
well you're using batch
Is that the wrong tool for this? Everyone I've seen mass converting uses batch.
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.
pboproject now does multicore paa conversion
I'm trying to do paa -> tga in this case.
doesn't pal2pace.exe do that?
Go for powershell π
yeah for automation batch is so 80s
powershell is an actually good automation language
Yes, but only through command line.
(which is what I am doing)
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.
no, i don't care to parse your batch syntax
tell me in prose what it is you're trying to achieve
~n is not parsing the subfolder correctly
change your code to echo %%~nf.paa to see what's happening
Do you mean the whole batch file or a specific parameter?
the specific parm
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```
how on earth can it be difficult to replace pal2pace with echo
My bad, I misunderstood.
this piqued my interest: https://forums.bohemia.net/forums/topic/237273-load-mp-savefile-into-eden-editor/
Opinions on feasability? Imo it would be doable with a python script to convert the save file to a mission.sqm. If it is possible to parse the save file, maybe with https://github.com/overfl0/Armaclass
That'd be one hell of a task, and you'll probably not do module attributes, but thatd be very cooleo
if you unbinarize the file you should be able to use the armaclass lib
I think you would have to give it a try and check if it works by yourself, because from what I know, the guy who made the library that you mentioned has no idea what he's doing so it'll either work or it won't π€
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
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"
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_orderor 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 π
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.
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
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.
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
no, you can't disable missing file errors
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
Either provide the source of the other mod, or use dummy files.
right, but addon builder is easier for this case
thanks btw
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.
and more likely to let a config error slip by π
haaaaaaaaaaaaaaaaa
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 π

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..
To be extra sure I just checked, 3 is yield/wait so thats correct
PboProject docs:
C:\Program Files (x86)\Mikero\DePboTools\docs\pboProject\
PboProject changelog:
pboProject.Fixes.txt
All installed tool docs:
C:\Program Files (x86)\Mikero\DePboTools\docs
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?
Steam CDN changed recently, update your depotdownloader
yep that worked
The last time i checked with steamctl (python) it was possible
Although it was half a year ago so I can't give any details about that because I've simply forgotten
You can browse the contents of depot on the steamdb website
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 π
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.
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)
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
ooooh, that explains some issues I've seen π
Tell me about them
our AAR logging sometimes stops for a while then have a burst of data π
That stuff is from early 2015, I don't know if its still needed. Might try that on prof
what's the rationale?
I don't know ^^
no its from 2015
ah right, i missed that
are there any comments why extensions should be blocked by the message queue?
do they share any queue for processing?
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
there is a potential ordering issue if you create a separate communication channel using extensions on both client and server
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?
If you create your own coms, that would be completely seperate from Arma coms
Are they running in a separate thread?
yes
i agree. it's the only reason to do this that i can think of though
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
yes
Huh? But the game freezes completely when I'm making long extension calls π€
the networking is in seperate thread, extensions are in main
what's your extension doing that you freeze the game? π
huh idea.
async call extension. Calls in seperate thread, only returns result via callback 
it's user implementable (with polling)
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)
That could break all current extensions that assume all calls are made within a single (OS) thread π€
no it won't because it would be a new feature and not modifying a existing one
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
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)
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
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 π€·
Yes, but it's Linux behaviour. There was a talk about that in this channel.
If you do dlclose, the library won't call the destructors until you close your process, on Linux
Can't check where it was atm
I think this was it: #arma3_tools message
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 π¦
I was just thinking about that yesterday. I totally would love to see this :)
do we need it as engine/script feature? since you can do it in your extension already
would serializing to the extension be threaded as well?
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
what's the overhead to fetch an empty buffer?
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
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++
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>"
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? π
that's why it's better not to bring threads into it
Fire and forget is +1
But please MissionUnloaded rvcall first π₯΄
is there a way to determine mod dependencies via workshop APIs?
GetQueryUGCChildren
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
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 π
thanks!
QueryFiles has a lot of required parameters according to docu - do really have to provide all these?
no, only key
note that its one of the few calls not requiring a publisher key, just a plain api key
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)
seems child_publishedfileid is the problem - cant get that to work
looks like child_publishedfileid only returns parents which are collections - great documentation (as always) with VALVE π
thanks! so no way to query dependencies via that api?
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
yo bros anyone know a fix to steam error code 2 when updating mod thru publisher
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
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)
oh nice. just have to learn rust now π
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
I'm guessing you should verify the integrity of your files
Also, dat π
dis π
Cheers, that fixed it.
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
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.
RESOLUTION: For some reason I did not see this the first time I searched the Discord but it worked.
Per dedmen
missmatched versions between the different parts
for example old DePbo version, but newer ExtractPbo version```
Dedmen* π’
Dead man
Deceased males
Decesed*
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
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.
I think he means that players on his server drop items and these items are left behind forever
Is the wrong channel, you don't want a tool you probably want a script
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.
Not that i am aware of
does someone know of a program (ideally powershell, python would also be good) that can return the installation path of a steam game?
yeah ideally i would not have to write it myself π
so registry for arma?
hmm, looks like only tools is in registry
except some profile data
steam path via registry and vdf file then
it's in the registry for me. make sure to check 32bit and 64bit tho, they are different paths in regedit
One python for you, sir!
https://github.com/overfl0/Bulletproof-Arma-Launcher/blob/next/src/third_party/arma.py#L57
(although it's old [python 2] code, but should be easy to port; maybe will even work verbatim)
@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
good catch, good old wow6432
64 bit
(Get-ItemProperty -Path "HKLM:\SOFTWARE\WOW6432Node\Bohemia Interactive\arma 3").main
32 bit
(Get-ItemProperty -Path "HKLM:\SOFTWARE\Bohemia Interactive\arma 3").main
@sly skiff all i can think of is that your map isn't that big or, the height is illegal for markers
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
@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.
tick this π
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
extractpbodos "my/pbo/path" "my/extraction/path" works as intended.
Wrap your arguments in "
error: destination must contain a drive specifier
this restriction will be removed on next update
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
uhh, still not sure how to use dos correctly
gui version https://i.imgur.com/bDaIsu6.png
ExtractPboDos -W "C:/Users/DmitriyBlade/Desktop/Arma 3 SCENARIO MAPS" "C:/Users/DmitriyBlade/Desktop/Unpacked1"
@scenic canopy dankeshon!
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"
Found workaround π€ Fully multithreaded
https://www.nextofwindows.com/how-to-open-more-than-15-files-at-once-from-context-menu-in-windows#:~:text=But there is a limit,The magic number is 15
the pbo is corrupt. you are foolish to use it. better you delete that pbo so you can contiue
it's odd that should be is saying zeroes though?
I guess I read the message wrong, the PBO is stating zeroes
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.
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?
QueryAddons is part of the subscriber toolset.
I don't see it listed here https://bytex.market/products/item/weodpphdknnzm70o0h8q/Mikero's Dos Tools thats why I'm asking.
That page does not contain a description for it. AiO does include it and its information. The tool is available for subscribers only.
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...
Polpox compromised once again - confirmed π
How can I get the latest SQFC binary? I found this: https://github.com/dedmen/ArmaScriptCompiler
But there are no releases and when I check each workflow from CI it says the product is expired and I can't download the latest. I originally was using this one https://github.com/arma-actions/sqfc but its outdated and doesnt support 2.06 script commands
π¬
https://github.com/Dahlgren/ArmaScriptCompiler/actions/runs/1909388351 in about 10 minutes available
I've made a new release with 2.08+ script commands
https://github.com/dedmen/ArmaScriptCompiler/releases/tag/0.02
Thanks!
what is the lowest mipmap size the engine will use?
is possible to remove certain? or replace?
You can edit the mipmaps with https://github.com/arma3/MipMapTool
