#arma3_tools
1 messages ยท Page 3 of 1
I have just the thing for you then verox
Accidently made that a gif
but fuck it.
@silent trellis
ahh excelent
I have actually been meaning to do that for aggess, can you push it?
I suppose XML isn't all that bad, it's just expensive
Its really its fatness.
That bother me so much wasted space unless you trim it a bit
aye it's pretty needlessly bloated too but that contributes to it's expensive parsing
Check PR's.
Aight merged it, cheers head
listbox.GetItemCheckState should return either 0 or 1 correct?
That is what I would have thought too. But from the few things I have read online it appeared some of them got an int returned
Either way I don't want an int to be returned. I wan't it to return either "Checked" or "Unchecked" to a string. Which I thought it was doing but appearntly it is not according to my XML file where it stores the string.
Then you have to write some custom logic
enum default type is int
There is some hackish way to get a string from a enum.
But eh.
ToString()?
Sure it dosen't just eval to int?
I know there is an easy way of getting the text of the enum
I hate this right now...like really. So I usually type my code up in notepad++ and then copy it over into my project in VS. Simply because I prefer to write my code in notepad++. But anyways I created my code for my mod manager feature and it was setup to save all of the enabled mods. And for some reason when I copied the feature over into VS it didn't like it. And I couldn't figure out why. So I have been trying different alternatives to storing the enabled mods. But I decided to just rewrite the original code I had made in notepad directly in VS...and it works. I didn't change a single line from what I made in notepad yet it works.
Aye just checked it
@silent trellis yeah default format for enum.ToString is G = name
I think it was old net that it was the value
" So I usually type my code up in notepad++" THAT is a bizzare workflow
^
Yeah was going to say
You have the best IDE and you use notepad.. a text editor..
Who needs a intelisense!
Or a typo
Not directgame xD
I bet you it isn't xD
VS + Reshaper = godlike.
I keep hearing about Reshaper, I still haven't tried it
I agree it is a bizzare workflow but for the most part it works...key word most part.
Resharper
Reshaper.. is amazing...
even
Now I will clean up the code so Head doesn't have to murder me xD
Usually when I run into a problem that I can't figure out what it is causing it my code gets rather messy and I don't bother tidying it up until I fix the problem.
Which I should get out of the habit of doing...especially when I am working on my big project. That will be a pain in the a** to clean up every time I test different things out.
I just rewrote swifty for the past two weeks.,
felt good.
@silent trellis https://i.gyazo.com/bdc0e2baf175e7dfb3e042056c17eeb2.gif
I do imagine that'd be extremely useful but i'd very quickly become unmaintainable for me because I have literally 0 idea how LINQ works
Eh, 5% idea how LINQ works
Linq is the shit.
LINQ is magic. I love LINQ
I should probably learn it at some point
Its not as hard as it seems.
It's sorta like JS digusting chain link/promise things
Verox, resharper has you covereed btw
I pasted the wrong link
xD
There.
I think gyazo failed me.
Oh it goes backwards as well
Ah, its when you don't give it the full link.
That becomes much more useful
DAMN that's annoying
Whenever I click out of Discord it scrolls up slightly
so I can't see new messages
Not showing for me yet
Time to release my second patch for they day for the same software. I released one this morning and I fixed part of the problem. But when I did that I forgot to set the minimum and maximum values that can be set for memory and vram and all that good stuff. So they were limited to setting it at 100MB of memory and vram.
Its pretty sad when you are out paceing winforms ;(
xD what are using winform for swifty?
I don't blame you. I got so used to winform and then I started using wpf and it took me some time to get used to xaml
My launcher that I released the other day is winform. It is my super basic launcher, I made it so that hopefully everyone can use it and have the use of launch parameters without messing it up. Got a few things to add to it to make it even more dummy proof but as it is you have to try and mess it up.
Gotta write.. a control pool.
Well this is annoying. So I used installforge to create an installer for my software usually. And I checked the installer exe after I made it and online it says that the file has a trojan.
Never heard of install forged
It just creates a quick simple installer for your software. I have never had a problem with it until now. So I guess I will look for other options.
OK, let me ask better. What's the best way to check if file is valid PBO?
try {
# read and parse whole file content
} catch {
return LOL_INVALID
}
Any better idea?
That's something that you're gonna have to do anyway, because even a real pbo file can be corrupted
From what I can see others are saying, all you can do is add some heuristics here and there to fail earlier
headers should be valid key and value, list of items should match with declared, items should be >= 0 in size, name should be valid, sha should match (pbo manager will fail here?)
size of each element should match stated size
and for that you'll need to handle compression
so in the end parse whole file, clear
If I were to check that, I'd parse the headers and just check "if they make sense". Or the first X entries if you're afraid of the file being malicious and containing a gazillion of entries just to make you waste your time parsing it
sha should match
That would require reading the whole file, which make take too much time in case of 2GB PBOs
SHA ๐ธ, I'm still mostly facing OFP PBOs
for valid then you'd need to check all ๐
checking if it's a pbo or not would be different
For that one I do currently plan to browse index (at least partly).
otherwise you might mark certain pbo manager pbos as valid ๐
probably more tools creating invalid pbos as well
usually they will just fail signature checks
but sometimes missing textures and other funky stuff can happen
it is scary world in there - outside of your testing suite
hallo I want to ask how can I Obfuscate with Mikero premium tools?
When I pack my building mod in pboProject without ofuscation checked, all works fine.
But when i use obfuscate the buildings are completely gone on my terrain. No collision, no shadow, nothing.
Completely vanished. is there some information somewhere how to use that correctly or something? or does this tool have a different scope than i use it for? Does https://bytex.market/products/item/arpc3ydo0qbxbufuncdh/ObfuSQF still work after my subscription for the tools has ended? can my mod be protected with any of these tools?
This must be the bane of your existence @orchid shadow: http://i.imgur.com/U8MiHVM.jpg
xD
"my building mod" "on my terrain"
Are you trying to obfuscate a terrain or a mod with buildings?
Obfuscation probably changes the filenames and such of buildings, so if your terrain then references them by their old name, it won't find them and stuff will be empty.
if your terrain is separate, you need to obfuscate the names in it too (no idea how you do that)
I believe it dont work on terrains
the buildings, if obfuscated, must be done first, followed by the map crunched
the map itself can also be obfuscated but theres nothing of value in it to make it worth botheriing with
@uncut whale Is this going to be an essay because you've been typing for a while
Huh? Discord must be doing something weird
What do you guys use to create a setup.exe for your software?
I thought about making my own. Did you just create a compiler that you you can create a script with like the others or how does yours work?
I just abstracted each stage into its own usercontrol and remove and add them to master control
@ocean shard btw. what's the reason for obfuscation?
What edition of VS are you using?
better hiding of easter eggs
hallo thank you for your answers. I'm working on a huge stadium building I still have to work on it for 2-3-4 months and searching the internet if it is possible to save the work against unwanted use. i just want anzus gaming and i can use the stadium on my map if possible. is there any documentation about an obfuscation workflow for mikero tools? first I only want to save my building and later my map if possible. if it is not possible is also ok. but I want to have informed at least times
Anzus is still up? Guess we have to shoot them down again..
I give the mod to doug. what is going on with anzus server i do not know exactly
Just as info, in case he tries to do that again. He cannot pay you for making that mod for him.
And I recommend you find other people to work together with, being associated with anzus is generally bad
ok thanks for the info i will rethink this
Do I understand it well discussing EBO format in public is forbidden?
yes
@ocean shard obfuscation is particularly good at protecting p3ds. It is close to impossible for it to be altered or used in a different pbo. I won't explain further. The theif can discover for himself the pain without me giving him hints why.
just remember, every time you obfuscate that pbo, any other pbo that uses it MUST be re-crunched afterwards. A simple rule to follow. Republishing your map each time is the price you have to pay
12
@dawn palm thanks for the answer. i'll try to understand.
So if I crunch with obfuscate checked my structures.pbo which contains the buildings placed in terrainbuilder on my map,
do I have to crunch my map.pbo again with obfuscate? Or simply crunch my map.pbo without obfuscation?
we cant support any kind of affiliation with anzus gaming so please dont ask here again when you are working for them
@ocean shard last and final time. the pbo must be recrunched. with /without obfuscation is your choice not mine
@sly skiff ok understand, will distance myself from anzus
Like what edition of it though. I think VS 12 had like Ultimate, Premium, and Pro?
Pro
There wasn't much reason to get Ultimate for hobby developers or not-in-a-team developers
But with 2015 i'm not sure standard gets the profiling tools in the top package
Which is really nice
we cant expect god to do all the work
I get my VS through work. we had pro but the boss man decided that he needed to pay to get enterprise today so I got an upgrade. We have no need for enterprise but I guess I won't complain maybe it will become handy for me down the road.
is there any way to reverse obfuscation -- I'm not asking in an attempt to reverse engineer but instead to ensure my stuff (discord bot key) can't be reverse engineered
obfuscation != encryption
putting your discord bot key in pbo is plain stupid.
if you can interact with discord that means you have an extension, if you already have an extension you should read the key in it. be it from env var, config file or whatever.
need users to be able to change which key is in use so they can use their own bots though 
completely stumped on how that'd work without the key being exposed somehow
config file on a server?
don't actually know why I didn't think of that, thanks :))
I used a chat command for that in an old project
So the mod does nothing until an admin runs like #mymod register 4235234523452345, then it stores that locally somewhere
That would also work but you could run the risk of someone mistyping the # and showing it to everyone online versus server config file it'll always be kept hidden even if they fuck it up somehow
At the moment it looks like I'll make something like
@KJW_Bots
|_ addons
|_ keys
|_ commands
|_ commandmodule.cs```
then people just add their commands into the commands folder or something similar. extension registers all commands at runtime and so on
I am can't seem to create an installer for my software without antivirus saying that the installer .exe has some sort of threat.
Out of all the installers I have ever created this gives me the only problem that I can really think of.
Hmm interesting enough it no longer detects it as a threat. Today has been the weirdest day for me.
And it now detects it as a threat
a team member tried to use Dedmen's ArmaScriptProfiler. unfortunately all logged events are saying this "too small"
anyone here has experience with the ArmaScriptProfiler? do you need to define profiling tags/labels in your unscheduled code for it to provide any meaningful output?
(also is there a version compiled with the latest tracy version?)
zoom in. Mouse wheel.
Yeah - if there are too many events that would overlap at the current zoom level, you get exactly what you described. If you increase the zoom level enough that the individual events can be rendered separately, you'll start seeing the actual events instead.
i see. zoomed in close, but by far not close enough as it turns out
can you filter out too small footprint events?
also is there anything to get more detail on the rendering part (or simulation) - or would that require the engine source with VS/some special profiler respectively?
seems the old tracy version doesnt support that. only for messages, but those mostly have rpt logging events in them ๐
if you run profiling branch (or maybe diag binary) you can enable engine profiling
I think its on top left clicking on the options thing to enable it
I don't know what you mean by old tracy version
Ah actually you need to set -profilerEnableEngine start parameter to enable engine profiling.
I ahven't tested if that still works ๐ค
@orchid shadow Just thought I would let you know the launch swifty option at the end of the installer is broken.
thanks! we will give it a go
i had to use Tracy-0.8 to be able to load the tracing log (latest should be Tracy-0.9.1)
Yep, Tracy 0.9 dropped support for pre-0.8 traces
The correct Tracy version is included in the ASP workshop Download.
There are some changes to the networking code between ASP and Tracy client, so you need that specific version to connect to it.
Though i don't remember the reason for it, probably something with callstacks. Are script callstacks even enabled by default? ๐ค
Indeed.
FYI for Intercept users that register custom script types.
There was a API update fixing issues on current dev branch and with Arma 2.14
The new intercept host can load your old plugins, but if your plugins are loaded on profiling branch or dev branch, your custom types will be broken.
I recommend to update to the new intercept version in the next couple months.
When Arma 2.14 releases, the old API stuff will be completely broken (IF you use custom types)
(Here I go having to update my plugins that I haven't touched for 4 years ๐ข )
found some old files of my server from 2016 in mod ebo format is there any way to get back pbo files out of the old modded ebo files? don't have the old source files and i dont want to host ebo files in 2023. thats no request for a tool more than a service to get back the file as pbo.
as proof can name steamid's of cfgMods author which should be in that file.
there are no legal tools to make ebos so what you have is something not allowed and you need to delete it
such "mods" are just bunch of stolen assets anyway and we have 0 tolerance on that
aight. thats why i already said "i dont want to host it and no tool request." you know too that it was common back in the days to do modded ebo's to secure your data. I have no intention of breaking any rules. I only found that old mods. I'll go to deleat them:
no it was not common
I hate XAML...
Embrace the XAML
sigh
I just shift+deleted everything on my desktop.
Ahhh no I didn't
Someone help please one of my screens is eating desktop icons
I move stuff to that screen and it just vanishes
Interesting xD If you haven't fixed it yet on your taskbar on the very right there is the button that takes you to your desktop. Press it and see if that fixes it?
is it possible to apply the header/prefix tag to pbos shown in the A3 rpt via makePbo/pboproject via command line? (or other software)
dta\bin.pbo - 150301
Is creating a pboprefix.txt file before you pack an option for you?
$PBOPREFIX$.txt format is like
//<'bin.pbo' properties via Mikero's dos tools, dll version 7.46>
version=150301;
prefix=bin;
PboType=Arma Addon;
//</properties>
You can just create such a file before you pack, and I would expect makePbo to pick it up
I would love to test it and tell you if it works, but sadly makePbo refuses everything I throw at it, I guess until I write a proper config with correct CfgPatches entry... So good luck testing yourself if that would work for you
thanks. we do already have them. i guess with regex i can overwrite the version tag on each build
my tools will do nothing to assist anyone in over-writing bi's primary bin.pbo.
Any way to quickly unpack a lot of pbo's??
:harold: ๐ข
mikeros extractPbo accepts a folder path
jup that works, you can drag&drop a folder onto extractPbo.exe and it will extract all pbo's inside
Depending on your usecase, you could also use DokanPbo to create a virtual disk drive that contains all the contents of the PBO's without having to unpack them
Thankyou!
Not sure how to put my question.
What is the encoding that is being used by mission.sqm and any other config files, in case of non-ascii content?
It is supposed to be utf-8 or is it dependent on the encoding on the local machine?
I'm asking because I'm rewriting/optimizing my Armaclass parser.
I dumped the config using diag_exportConfig. Eveything in there seems to be in utf-8, but there are instances of textOrig="%1.1 \x97 Cancel target"; (\x97 seems to be a -- in cp1250, not a valid char in utf-8).
Should I assume that both the config and mission.sqm are in utf-8 and the strings content may be containing some stuff in "old style" encoding as part of "legacy code" (but still easy to parse, because 1-byte encodings will never reuse " as part of their codepoints)
depends on each pbo's config.cpp/bin?
someone might save their cpp file with mac os roman, pack it into a pbo and ship that
That's precisely my question.
Does Arma try to decode everything in utf-8, meaning a " will always be a " or does it use the local OS encoding?
\x97 is End Of Guarded Area?
Because then I'd have to defer the decoding to the user. But if I do decoding prior to parsing, then I the decoder protests because \x97 is not a valid utf-8 char.
And if I decode using cp1250, the other utf-8 strings fail
It is, BUT it's then encoded as 0xC2 0x97 in utf-8
Dump the config yourself and do a search for Cancel target
The \x97 will be a single byte (preceded by a space [\x20]), just before that string above
is it in config or stringtable?
So we have \x20 \x97 in the file
sounds like stringtable?
class SentNoTargetDefault: NormalCommand
{
versions[]=
{
"__1_1___Cancel_target",
"(1 - (Combat))",
"__1_1___No_target_1",
"Combat",
"__1_1___Cancel_target_1",
"Combat",
"__1_1___No_target",
"(1 - (Combat))"
};
class __1_1___Cancel_target
{
textOrig="%1.1 ๏ฟฝ Cancel target";
text="$STR_A3___1_1___Cancel_target";
wordsClass="Normal";
speech[]=
{
"XMIT",
"%1.1",
"CancelTarget"
};
gesture="";
};
No idea, honestly, that's the part of the config that I have
the engine is unconditonally utf8, with some oops involved with sqf
is this dumped via game or unpacked?
I dumped the config using diag_exportConfig
From the console, in the editor
ALL paramfiles (rvmat,config. model.cfg etc) are expected tobe utf8 encoded
as a general rule the engine would not know what to do with winansi (cp1252)
fonts etc are utf8 as are stringtables
I'd assume these are remnants of legacy code (or legacy data) and that that string is always translated ingame anyway, so no one actually sees that one
Not sure where to ask this. But is there any explanation for
#if __has_include("\userconfig\ENH_Config.hpp")
#include "\userconfig\ENH_Config.hpp"
#endif
this to work when I start the game via Arma 3 Launcher, but not if I start it via a desktop shortcut? The snipped is placed in mod config
Modsets are the same. I also removed all startup parameters because that's the only difference I see.
I also tried starting it directly from root folder, same result
Once the game is loaded, hasInclude works fine (tested via description.ext)
@junior beacon if the file exists it will be included if not, it causes noerror
The file is there.
then it works per normal
if not, the lack of features prvodided in the header simply don't happen
is the file in PBO?
do you have the config path for it? might be good to double check ingame
Yes.
If not it will only load with filepatching enabled
no it does not. You can use filepatching.
userconfig requires filepatching
irrespective, the file that expression is in cannot be (pre) binarised
That's it indeed. I had it enabled in launcher but not im param file
how does it relate to his question? at all?
?
Thanks for your help you three โค๏ธ
binarisation 'relates' because the file can only be binarised by the engine, not beforehand.
but revo asked about file being included or not depending on how he starts the game.
I'll DM you the file
I don't want export, I want to see what the game sees ๐
can you check the config path to the class in the file? I'm not that bored ๐ซฃ
I'll have you reminded that I'm an SQF noob. I'm just good at pretending
mostly lazy 
(like, seriously, I have not idea what you're asking of me nor how to obtain it)
class hierarchy, i.e. what parent classes between it and root of config
I just have that dumped file
๐
Looks like RadioProtocolENG -> SentNoTargetDefault -> __1_1___No_target_1
thanks, people started calling me into meetings ๐ฆ
For text rendering we use
Arma rarely parses strings. Most comparisons are in binary, only when it goes to rendering its translated using ^
Thanks, Im guessing that you don't have MB_ERR_INVALID_CHARS in dwFlags?
anyone use HEMTT to do their packing? got a question that I must not be understanding from the documentation
HEMTT dev is in ACE discord see #channel_invites_list
but you could also just try posting question
When I'm looking to build/dev in HEMTT, I want to exclude an entire folder from a PBO build. I have the following in my project.toml:
# some stuff above here
exclude = [
"addons/mission_template" # doesn't work
"addons/mission_template/" # doesn't work
"addons/mission_template/*" # doesn't work
]
will this exclude that folder itself? or will I have to tell it to exclude all my file types in that folder with glob?
https://github.com/BrettMayson/HEMTT/blob/3751949f79ff815a7859b691c32263d7ccec8b58/bin/src/modules/pbo.rs#L109
https://github.com/BrettMayson/HEMTT/blob/1e076bf83467c7de6f7dd04fbdf4655e59cc38f8/bin/src/config/project/files.rs#L9
looks like exclude is read as a pattern
if my search found the right exclude here
dumb that down a tad for a hobbyist that doesn't know that language?
"full filename or glob that matches. No raw foldernames."
ok thx
although after a bit more of reading it seems to check folder paths before any files inside, so it may work (?) Long story short: just try it 
https://github.com/BrettMayson/HEMTT/blob/3751949f79ff815a7859b691c32263d7ccec8b58/bin/src/modules/pbo.rs#L95
https://docs.rs/vfs/0.9.0/vfs/path/struct.VfsPath.html#method.walk_dir
Directories are visited before their children
let expected = vec!["fizz", "fizz/buzz", "foo", "foo/bar", "foo/bar/baz"]...
https://github.com/acemod/ACE3/blob/f67ae06d2153874639d2ded8b1c1ff1c68cfb595/.hemtt/project.toml#L28 seems to be used in the wild as well?
either without ending / or with /* I'd expect
So this matches the dwFlags == 0 ๐ค
Actually... I'm not so sure about that, but whatever
Starting with Windows Vista, the function does not drop illegal code points if the application does not set this flag, but instead replaces illegal sequences with U+FFFD (encoded as appropriate for the specified codepage).
So I guess, you have an U+FFFD there that's not being rendered
๐
Someone at BI, just replace this char with a - and let's forget about this monstrocity, as if all of this was a bad dream! ๐
Yes please someone fix
Yup, now if only there were BI devs on this Discord ๐ฅฒ
Yeah that's so sad.
Way too common for gaming discords to not have any actual devs on it

none of these work. I'll ask on the other discord you linked.
Is there a way to tell Arma 3 Tools to not mount a P drive but use an existing "real" drive?
Nevermind. I think I found it
technically you dont need to do anything with arma 3 tools if you dont mount virtual drive
except run it once to get the tool registry entries
gamedata can be unpacked without it (and can result in better set of unpacked data anyway since the tools only unpack limited amount of stuff)
What's the better way of unpacking the data?
well I prefer mikeros arma3p for it doing the work for me
but they can be manually unpacked too
ok. Thanks for the info
and depending on what you want to do and what tools you use you dont necessarily need to unpack anything
Hello ! Is it possible to run this tool without the UI and make it directly build an addon if we pass some arguments to it?
I'd like to write a "build" script for my addon but i don't know whether it is possible with the tool I am using
yes, that is possible
you can find the arguments here https://community.bistudio.com/wiki/Addon_Builder
I would highly recommend to use pboProject or HEMTT instead of Addon Builder as they have better detection of issues and are easier to use from CLI / CI
I'll opt for HEMTT instead, it seems to be a much more popular builder ๐๐ป
Hi! Does anyone have experience with the bis-file-formats library? I'm trying to use it to compress entries in PBO but it doesn't work. Also I noticed that data encoded with WriteLzss can not be decoded with ReadLzss (checksum mismatch). So, Is it bug in library or I'm doing something incorrectly?
Also can you point me to other LZSS encoder implementations that are compatible with the game? (any programming language)
just fill in the issue at https://github.com/Braini01/bis-file-formats, but it seems not maintained anymore
๐ค ad bis-file-formats, I like the goal and vision of that project, but the technology selected is totally in opposite of the plan
I'll opt for HEMTT instead, it seems to be a much more popular builder ๐
I still dream about opened tools used by engine itself, official content builders and community content builders as well ๐ค.
the source code on the biki for reading lzss comes directly from my tools
writing lzss is not so straightforward since it depends how well you utilise the 16k sliding window
tim dittmar's version mentioned above was developed from the original code in Apple Next pcs which was designed for Big Endian (motorola) cpus. It would be unlike t_d to get it wrong when he recoded it.
thats why i came here, unfortunately issues are disabled on forks by default
so it can be used to test the compatibility of an encoder with the game decoder?
no
well, is there a way to test compression implementation without creating a pbo and running the game?
make one with another tool confirmed to work, compare output data
Where is arma 3 directory stored in the registry on a 32 bit and a 64 bit? Because where it used to be stored on my computer it is no longer there.
I know for 64 bit it is stored in HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\bohemia interactive\arma 3
or so I believe. Thats where mine was until it disappeared. Which I manually added it back.
Different versions of the code in bis tools produce different results simply because the way the 16k window is utilised. one version eg 'prefers' the longest producable string, another version 'prefers' the most repeated string instead. 'foriegn' compressors (such as mine) produce another prefrence. None of them will compare with another but all produce the same as the original source. Only way of knowing all is ok is by using the oommon, unalterable, decompressor. this can be via using bis, myself, or the biki. any other decompressor has, at least in the past, turned out to be deficient and unreliable in decoding (exception, amalfi for operation flashpoint). they work until they suddenly don't.
no
hence pick one as reference, don't compare with multiple ๐
Thank you! I didn't plan to compare the compression output, I planned to check that the compressed data is decoded back to the original using some close to the game decompressor.
mikero's extractpbo should be able to do that for you
Either:
"HKLM\SOFTWARE\Wow6432Node\Bohemia Interactive\Arma 3" /v "MAIN"'
or
"HKLM\SOFTWARE\Bohemia Interactive\Arma 3" /v "MAIN"'
Does DSUtils work differently then the -checkSignatures parameter?
As I'm trying to run a mod, which has one broken bisign (out of 2 bisigns in total) according to -checkSignatures.
But DSUtils is not showing any errors.
there is any way to convert png and jpg files from linux cli? i want to add that function to a discord bot ๐
To convert to what?
brain fart.
i want to add a function to a discord bot to convert images to .paa
but im writing it in python, and its hosted on a linux server 
Oh. Okay ๐
I was about ti suggest ImageMagick, but I won't, in that case ๐
im not sure if i can use https://paa.gruppe-adler.de in some sort of api
may be worth consulting their discord
I'm quite sure that there was some software that could convert to/from paa on linux, but I used it around 6 years ago, so I don't even remember the name
time to use chadGTP
yea afik there is no mikero tool for that, maybe using wine... it might work
Please no... ๐ฉ
Armake's github claims that it can do that, FYI
Maybe that's what I used back then, but I really can't tell at this point
there is no replacement tool for pal2pace in my toolset since it hasn't altered since flashpoint times and consequently bi have been unable to break it.

404 Not Found [IP: 185.125.190.52 80
but there is no pal2pace linux version isnt it?
https://github.com/KoffeinFlummi/armake2#building
ยฏ\_(ใ)_/ยฏ
gh&hf
You can also check the .travis.yml file if you want precise steps to build it
but there is no pal2pace linux version isnt it?
there are NO bi tools for linux. the task is too hard for them to implement
the game itself remains marvellous but they don't invest anythying that doesn't directly affect a game sale
it worked ๐
i hope that changes with future arma titles ( a man can dream)
paa2img Convert PAA to image (PNG only). (not implemented)
img2paa Convert image to PAA. (not implemented)

You can always try armake1
yep, ill use armake1
I mean, it all depends on what you want to convert from and to. Remember that you can use Armake to convert to png and then something else to convert that png to a jpeg 
same if you use -deep?
Is that for DSUtil? As I can't find it on the wiki page for arma.
DSCheckSignatures.exe from C:\Program Files (x86)\Steam\steamapps\common\Arma 3 Tools\DSSignFile
Nope, no failures as well.
interesting. linux server by chance?
Yes, but also happens on my Windows machine on the client. So game is doing different check than the DS tools 
I wish you could like ignore a single bisign... Now i have to open up the whole server for an 40 player op... I can try something with ACE pbo checking i guess ๐ค (never used it)
which tool du you use to create the pbos? if they are not created correctly then signing will fail in game
Nah its not my mod. But one (of the two) bisign works.
And the creator said he resigned them in april. But im wondering if the private key he is using is just broken somehow 
But the weird thing is that DS tools is fine with the broken bisign while the game is not.
This is the mod in question btw: https://steamcommunity.com/sharedfiles/filedetails/?id=2618329388
If people want to have a look ๐
I asked as apparently some signatures/bikeys work on windows server but not on linux - either seems to be related to special character set or messed up windows (on the mod creation pc)
Maybe the author still uses the old signature tools. BI had them updated during A3 or late A2:OA
I dont think that old but hes published it in 2021 and uses the same key for his other terrains... My guess Maybe hes using an older version but its weird that only 1 out of 2 is giving issues. Maybe something in combination with the pbo is the problem
.
I was actually thinking about overhauling the dssignfile checks a few days ago... Yeah it doesn't do the good proper checks as the game does
For example i think it doesn't verify file order
If one of the pbos was touched with pbomanager, that could be enough to break it
We had that huge issue with a cdlc once because they packed with mikero and it sorted ONE! file wrongly and it broke the whole signature verification and all multiplayer servers. So we had to have them unpack and repack with BI tools.
That may have been around 2021 maybe, or 2020... Maybe it's the same bug with this mod
That ordering issue was in end of 2020. And in may 21 there was another update for sqfc.
So if he used pbomanager, or mikeros tools from a version before early 2021 (I don't know when mikero released the sorting fix ) that could be it
I mean, pbos in workshop mod being signed by a bunch of different keys with not all if their matching pubkeys being present isn't unheard of. If you want - you can check first, like, 150-200 bytes of signature files, they contain their matching pubkey there, so you'd see if they differ
totally not what's happening here, though. Disregard me.
Thx for the clarification. Ill try to reach the creator and check what packing tool he uses.
I am not sure if this is the correct channel for this but I have a question about extractPBO
extractPBO was working fine until one day I get this message any time I attempt to extract.
Any ideas?
----------
extractpbo Version 2.33, Dll 9.10 "rhsusf_c_hmmwv.pbo"
Opening E:\SteamLibrary\steamapps\common\Arma 3\!Workshop\@RHSUSAF\addons\rhsusf_c_hmmwv.pbo
mkdir:P:"\rhsusf\addons\rhsusf_c_hmmwv\anims
cannot make folder(s)
E:\SteamLibrary\steamapps\common\Arma 3\!Workshop\@RHSUSAF\addons\rhsusf_c_hmmwv.pbo: DePbo:Cannot make folder, or illegal folder
----------```
I have no idea what "DePbo:Cannot make folder, or illegal folder" means
If I attempt to use the default BankRev tool I get this
Added: 100
Processing rhsusf_c_hmmwv (280 KB)...```
It hangs up here and wont move past.
Yeah it something I am doing on this specific PC. I just installed all the tools on my other PC and it extracts no issues.
Possibly you try to unpack to existing folder
just noticed that my PBO Manager stopped displaying directories, it just shows a long list of files like on screenshot. Is there any setting to make it show stuff like it used to be, so in collapsible branches?
Looks like itโs incorrectly packed, paths should use \ and not /
I will investigate more. Going out of town soon so I will get to this in two weeks.
I can't read any of the actual text in the GIF. I can just see that you deleted something.
he deletes a file inside a pbo, swifty then downloads and patches in only that file instead of the whole .pbo
how does swifty know which exact file is different? does i create hashes for every file in every pbo and matches them agains server-side hashes?
You wouldn't nessecarily have to hash every single file for every single pbo
Hash the PBO, if that's different only then do you need to hash every file in the pbo
@plush copper protip, press open original
I did xD still too small to see
Yeah click the link above the picture
bloody discord being derp and linking the thumb
anybody used an extension to run a different one and has an example of what they did up anywhere? at my wits end trying to get .NET 7.0 to behave how i want it to, going to try use .NET 4.7.2 extension to run .NET 7.0 extension
You mean, like "chaining extensions"? So that your extension acts like Arma and loads another one?
Effectively, yes -- though it's an exe so easier than I thought, should just be a matter of Process.Start once i get the file path to it
So you're basically writing an extension tester, right?
uhh
dont think so
I can't get a dll made in .NET 5.0 or above to work in Arma so logic is I just make one in .NET 4.7.2 that runs something created in 7.0
Since you're mentioning Process.Start, does that mean that you want to run that in a separate process?
probably as it's a discord bot
And then comunicate with it, somehow
b-but how are you going to shut it down, then? ๐
when the server shuts down ๐
But since it's a separate process you'll have to kill it yourself
oh
i see
immortal discord bot then ๐
just kidding, not actually got a clue; any suggestion?
Well... if that's what you want to do, then I don't really see what may be the issue that you're facing. Just spawn that new process with the exe from your extension
(communication aside from shutdown isn't needed as i can write database lookup in .NET 4.7.2, i couldn't get Discord.NET to work in 4.7.2)
Yeah but your shutdown point is valid; not got a clue how I would do that ๐
The harsh way of doing this would be to get the PID of the new process and then to kill that PID on your extension shutdown
There's no entry point for extension shutdown though isn't there? Or am I misunderstanding you
Although I don't think that you'll ever get a notification of an extension being shut down, in the first place ๐ค
Yup, you're right
I think I talked about that with dedmen and he said he doesn't plan on adding that
I could just make a command for the bot that ends the process? ๐คท
...though if discord api changes and the command breaks i now have an immortal bot
You could rely on destructors, but AFAIR they weren't called on Linux or sth...
Or your bot could be called with your arma3.exe PID and wait for it to terminate, and if that (parent) process vanishes, your bot will shut down automatically
how would you call it with the arma3.exe PID?
can't see anything in process.start method docs
arguments
Like from the commandline
Although, tbh it would be cleaner if you used regular IPC (inter-process communication)
I have no C# experience but maybe this will push you towards a solution: https://stackoverflow.com/a/23332938
Obviously, in this case, what I'd rather do is not use IPC to transfer the PID but try to use that IPC itself to figure out if the other end is still alive
Thanks, will give it a look -- thanks for the pointers; currently working on a command to shut down the bot regardless as that's probably helpful
Then just use that Stackoverflow's link above to pass that command to the "child"
how does swifty perform with big pbos? like a 20 gig modpack. Does it hash that on every startup? or does it cache the results and only checks the last modifed date and filesize?
It caches.
I just rewrote it
:)
The current version that you get has cacheing and such but does not have the PBO patching features
They are hopefully showing up next build
Thinking about it, that sounds like a fun obfuscation strategy, probably not very efficient though ๐
Thatโs actually quite funny ๐
I wrote a C++ thing to load a encrypted .NET dll from disk, decrypt into ram and load from ram ๐ค
Part of that could probably be used to load your thing but i don't know where I put it.
Question is do you really want it to run in a separate process (as that would be much easier)
You get dll unload which should usually call destructors
Yeah I think that bug existed at least once upon a time. But when I checked... Two ish years ago, i couldn't reproduce and we were running all the correct code to make constructors to be called.
But i think in Linux land it also depends on the compiler doing the right things for you
I'm too lazy busy now to check my discussion history, but I think it boiled down to dlclose not actually calling destructors on unload and it even was by desingn or something like that.
As a result, your destructors didn't fire.
It must have been a year ago or so, because that's when I was rewriting Pythia (and I refuse to believe that I've been doing that for more than one year ๐ฌ )
OMG... that was in November 2021 โ ๏ธ
I forget the timing of things alot.
Maybe it also depends on OS?
Well whatever it was I determined it to not be a real problem 
I shall just trust my past self 
Ah unique symbols compiler special sauce thingymabob
Yeah... ๐ฉ
Anyway, what whas it that we were discussing? Oh yes: programming sure is fun fun fun! ๐คช
I also thought about that ๐
[slightly unrelated] The engine picks the first matching entry in the PBO, right?
(btw I now need to check how my library behaves on linux... ๐ฌ )
Yeees... But not sure what you're getting at, there can't be multiple matching ๐ค
I rewrote that file lookup stuff last year to binary search (before it was sequential over all files in all pbos โ ๏ธ)
I rewrote that file lookup stuff last year to binary search
Oh, didn't know that. I wrote my pbo lib years ago.
Well it should work the same so it shouldn't matter ๐ค
there can't be multiple matching ๐ค
There can, you just create several entries with the same name ๐
I think it went into public build in 2.10
Mh. I didn't try that. I'd think it would detect duplicate and overwrite but don't remember
Have fun i guess ๐
Tbh I have never actually tested that either. Wasn't interested, but noticed that there was no way to prevent doing that
You might also get different behaviours intra and inter pbo with dupe names
We have a CTF in roughly 2 weeks. I'm still sitting on a fence whether I want to spend the next 2 weeks learning and creating an Arma task with PBOs and sqfc ๐
I know a few people out there who'd solve that task in half an hour though ๐
Should've added encryption support to sqfc xD
Btw that's also (partly) why I was asking about whether the new VM's assembly would be exposed to the end user. That and I was also contemplating whether to make a processing module for that assembly in umm... That Pro Software for fun and to learn the ropes of doing that [I believe there would be no real harm on doing this ๐ค ].
But if it won't be exposed, there would be no reason to even try loading it anywhere.
No idea how much work that would be or if it would even be possible, though ๐คทโโ๏ธ
It is translated from old assembly so you can infer what will come out based on what you put in but.. eh
No, I mean, it actually (finally ๐ ) looks like proper assembly, so it may be possible to write a disasm module for that
I'm planning to support caching for the new assembly, as it's somewhat expensive to re-generate every time (still fast enough to get a 9x speedboost tho..)
If you could read that memory there, you could disassemble it
However, I know only what I can see on this Discord so maybe my view of it is skewed
The majority of it is still "execute that command" instructions. But the data structure is like real asm instead of pointer chasing everywhere.
If you could read that memory there, you could disassemble it
Seems dodgy, tbh, and I'd prefer to stay clear of things that could be misused
Since I'm doing that for fun, anyway
I can have the script command spit out binary of the instructions. It's position independent as of next update too (or well. The assembly itself. The pointers to script commands are still pointers that are different every game run)
(as I don't see any actual useful purpose for making a disassembler module for the new vm ๐ )
Eh, process.start stuff would probably do the same as the mod is only going to be run on server I don't need all that much special handling
just a way to terminate the process when arma shuts down ๐
you can give the process'es PID as start parameter
then let the bot process just regularly check if the process with that PID is still running
That's basically what i said at the start ๐
Could also check parent process at startup, check if arma binary or running as standalone
Or just do socket / shared memory communication
i couldnt figure out how to pass it as a start parameter 
Pick one with arguments
oh bruggin i want third down i think
then just take parameter into process and while loop every second or so checking if the process exists still?
Dude... convert int to string and put as argument to the function ๐
Literally nothing more
i know, i couldnt figure out which syntax of process.start was required lol
why do i need to give it as a start parameter as opposed to checking if a process matching the name exists every second or so though? just performance?
You could do that as well.
...until you start running two servers at once on one physical machine ๐
oh yeah, fuck
but how would i know the arma process is the correct one and not someone else's server by using PID? 
oh wait because its running on the same thread or w/e innit
ok, last thing, i promise 
how should i be checking for the program still existing? got code to do it, starting a new thread which checks every second sounds like overkill ๐
Check if pid is running arma binary
im using Process armaProcess = Process.GetProcessById(armaProcessID); thus far but have not got much of a clue where to use it as its not as simple as shoving a while loop at the bottom of my main program.cs
in my head starting a new thread is what makes most sense but it sounds like an awful idea on paper
im running a new thread to check every second
Checking a PID every second shouldn't really be "overkill"
i meant on a seperate thread but i think im used to poor memory allocation
Not even every 1ms ๐
no I don't do that...
Well use GetCurrentProcessId. it should return the PID of the Arma instance that the extension is running from
yeah ive got it working perfectly now
thanks though ๐
@torpid valve sorry for ping, but were there any reports of ADT config viewer not working on the current/recent dev build(s)? Like, right click - "Find in config viewer" in 3DEN displaying empty interface or inheritance mode of hierarchy viewer only showing the selected class and no parents?
nope
I haven't updated my game for a while tho (since the new vm stuff) so I haven't been able to check myself
if it's broken it's 100% not my fault so you should wait for a game fix (and this is exactly why I haven't updated)
i was more in the line of "is it's not a me-problem i should probably ping Ded" ๐
can you show a picture of how it looks like?
interface not bugged, but no contents
yes you should probably ping ded
and someone somehow tell me which configClasses/configProperties lookup is failing
not even when you press reload? (under File)
after reload it shows root configs, but nothing is selected
what if you try again? from 3den?
if i close config viewer and right-click - find again - i get the empty window again
and if you reload and check the hierarchy is it still empty?
same 0-deep result. Switching to release branch fixed it. Switching back to dev broke it again 
it could be because configName is broken? well there were some changes to config str thing lately
but it was just str config iirc
do any of those contain anything related? Array index out of range โฅ Context: [] L24 (/DEV_TOOLS/functions/general/fn_addSchd.sqf) [] L59 (/DEV_TOOLS/functions/general/EHs/fn_eachFrame.sqf) [] L53 (/DEV_TOOLS/functions/general/EHs/fn_eachFrame.sqf) [] L55 (/DEV_TOOLS/functions/general/EHs/fn_eachFrame.sqf) [] L33 (/DEV_TOOLS/functions/console/fn_replaceDebugConsole.sqf) [] L54 (/DEV_TOOLS/functions/general/Windows/fn_initWindow.sqf) [] L20 (/DEV_TOOLS/functions/console/watch/fn_initWatch.sqf) [] L19 (/DEV_TOOLS/functions/console/watch/fn_initWatch.sqf) [] L18 (/DEV_TOOLS/functions/console/watch/fn_initWatch.sqf) [] L11 (/DEV_TOOLS/functions/console/watch/fn_updateWatch.sqf) [] L237 (/DEV_TOOLS/functions/console/watch/fn_updateWatch.sqf) [] L13 (/DEV_TOOLS/functions/console/watch/fn_addWatch.sqf) [] L383 (/DEV_TOOLS/functions/console/watch/fn_addWatch.sqf)
well it makes no sense to me but veteran reported it in #perf_prof_branch
I'm sure I don't make any "index out of range" mistakes
and I use param when I'm in doubt ๐
ah, yes, that's from variable watch, disregard me in this part
well if it breaks the scheduler it could be related yes
did you try expanding the trees and scrolling a bit?
if that part is broken it means the scheduler is broken
mouse-wheel scroll works, PgUp/PgDown don't (i'm totally not sure they're supposed to). On closing/opening the selected class remains selected, but newly opened Config Viewer doesn't have treeView scrolled to it.
well if the config tree part is working then I don't think it's related to configClasses/configProperties
my guess is it's related to the new VM?
private _cfgRoots = [configFile, missionConfigFile, campaignConfigFile];
private _cfgRootsStr = ["configFile", "missionConfigFile", "campaignConfigFile"];
private _lastPath = "";
private _classPath = "configFile/CfgVehicles/C_man_casual_7_f";
private _splitPath = _classPath splitString "/";
private _fnc_splitToCfg = {
params ["_split"];
(_split apply {if (_x in _cfgRootsStr) then {_x} else {str _x}}) joinString ">>"
};
private _classCfg = call compile ([_splitPath] call _fnc_splitToCfg);
private _inheritanceTree = [];
private _fnc_cfgToPath = {
params ["_cfg"];
(configHierarchy _cfg apply {
_cfgRootsStr param [_cfgRoots find _x, configName _x]
}) joinString "/";
};
private _fnc_addPath = {
params ["_path"];
private _idx = _inheritanceTree findIf {_x in _path};
_inheritanceTree insert [_idx, _this, true];
};
private _fnc_getParent = {
params ["_cfg"];
private _parent = inheritsFrom _cfg;
if (isNull _parent) exitWith {};
[[_parent] call _fnc_cfgToPath] call _fnc_addPath;
[_parent] call _fnc_getParent;
};
for "_i" from 1 to count _splitPath do {
private _split = _splitPath select [0, _i];
[_split joinString "/"] call _fnc_addPath;
private _cfg = call compile ([_split] call _fnc_splitToCfg);
[[_cfg] call _fnc_cfgToPath] call _fnc_addPath;
[_cfg] call _fnc_getParent;
};
reverse _inheritanceTree;
_inheritanceTree
@robust vessel can you test this plz?
what does it return?
["","configFile","configFile/CfgVehicles","configFile/CfgVehicles/C_man_casual_7_f"]
wait why does it start with ""?! ๐
this is what it should return:
["configFile","configFile/CfgVehicles","configFile/CfgVehicles/All","configFile/CfgVehicles/AllVehicles","configFile/CfgVehicles/Land","configFile/CfgVehicles/Man","configFile/CfgVehicles/CAManBase","configFile/CfgVehicles/Civilian","configFile/CfgVehicles/Civilian_F","configFile/CfgVehicles/C_man_1","configFile/CfgVehicles/C_Man_casual_1_F","configFile/CfgVehicles/C_Man_casual_7_F","configFile/CfgVehicles/C_man_casual_7_f"]
well that's weird
so yeah it's not related to the scheduler or configClasses or props
you'd laugh but i was having nearly identical code in the next tab from my own digging ๐
I guess inheritsFrom is broken or something
@glossy inlet repro code btw
but I have no idea what's exactly broken there
private _fnc_addPath = {
params ["_path"];
private _idx = _inheritanceTree findIf {_x in _path};
diag_log ["addPath", _idx, _this];
_inheritanceTree insert [_idx, _this, true];
};
``` gives ```["addPath",-1,["configFile"]]
["addPath",-1,[""]]
["addPath",0,["configFile/CfgVehicles"]]
["addPath",-1,[""]]
["addPath",0,["configFile/CfgVehicles/C_man_casual_7_f"]]
["addPath",-1,[""]]
["addPath",-1,[""]]
["addPath",-1,[""]]
["addPath",-1,[""]]
["addPath",-1,[""]]
["addPath",-1,[""]]
["addPath",-1,[""]]
["addPath",-1,[""]]
["addPath",-1,[""]]
["addPath",-1,[""]]
``` 
so I guess configHierarchy is broken
configHierarchy (configFile/"CfgVehicles"/"C_man_casual_7_f") returns []. What's the expected result?
configFile then CfgVehicles then that class
configHierarchy (configFile/"CfgVehicles"/"C_man_casual_7_f") apply {configName _x}
["bin\config.bin","CfgVehicles","C_Man_casual_7_F"]
example from wiki returns empty array as well
configHierarchy (configFile >> "CfgVehicles" >> "Car"); this one
so that confirms it then ๐
"gib ticket" in 3..2..
i've checked after like 10 minutes if you'd create one and only started filing mine after that 
sad sqfbin.com down noises
New vm? What did I miss?
search the discord for Dedmen's posts containing words "short circuit". Basic idea (as i understand it) is/was to heavily optimize short(-ish) loop bodies compared to what was happening before.
Dedmen genius
Before
if isclass cfg then get hierarchy
after
if (!isClass cfg) then cfg = getClass cfg else return;
if isclass cfg then get hierarchy
I wrote a nonsense return that broke config hierarchy
Doesn't really explain the array index thing though, this wouldn't cause that?
Made new VM that has more real instructions closer to real assembly, or how one would write modern VM's, is about 9x faster in most cases
my first guess would be that -1 index and "" are caused by shoving an empty array into the code that doesn't expect it somewhere in sqf 
I don't think so no
it's probably related to the VM
Its a engine error, script should never be able to even get so far
isn't that kinda already there with script exception EH?
talking about those fancy script errors of other peoples code
aka: You write a framework or something among those lines and cannot be sure about the code you call, because it might contain a script error, causing your code to stop executing
exception control flow is something different and already supported using try catch throw in SQF ๐
i guess my memory is playing tricks... again. I somehow remember EH that works like those pesky black script error popups, but now i can't find anything about it. Consider me crazy 
uh, no
What is this then Oo
ohh
okay
that has been there for quite a while
Never noticed as my scripts are too small rn ๐
<#community_wiki message>
<#dev_rc_branch message>
2.14 apparently and i'm not totally crazy? O_o
So if I set the Foreground color of a listview it doesn't actually change the color of the items in the listview?
Items in a listview are their own object
ListViewItem iirc
Modify the properties of those objects
So I should just create a style for the listviewitem?
Because I don't have any actual items preset. It creates a new item for every mod detected
How would I launch A3 with BE enabled?
๐ค dumb question to ask... Maybe launch the arma3.exe that says battleye ๐
Does anyone know what happened to ConsolePboTool? Listed here: https://community.bistudio.com/wiki/ArmA:_Community_Tools
Link for download is dead
Made by Flea, had source available.
Thanks
so it's not really related to mikero but to your Win11 setup, you don't have write permissions in the folder where you're installing the tools
@limpid sky use the aio installer
Hi yall, I tried to download the bohemia tools to get the Emf to Png converter, however windows won't let me run the installer. Any ideas? I do have the arma tools, is there a emf to png converter in there?
are you sure you want to download Arma2 tools?
that's what i was reccomended to convert Emf files to Png files
is there a better alternative? like an arma 3 version of the tool?
dont recall if arma3 tools came with it but Ive used irfanview
this is the exe that I've always used for making R3 map tiles. It was linked on their wiki: https://github.com/alexcroox/R3-Web/wiki/Adding-new-terrains
Any chance a 64bit PAAPlugin for Photoshop will become available anytime?
seems rediculous we're still having to use 32bit image software, and type in strings / load filters for image conversion
Unlikely?
there is a 32bit paa plugin?
the old half-broken one by kegetys?
wasnt that a little buggy?
why do you need a paa plugin anyways?
I'd hazard a guess that he wants to open and save PAA files in photoshop
you can use texview and palpac for that
a proper workflow means you use TGAs for everything
let O2 convert to PAA only for buldozer
if you use either SVN/GIT, you can choose not to push TGA textures
I am sorry i hope this is a right channel for me to post.
So I wonna create Pdrive with Mikero Tools and Arma3P.
So to create P Drive take storage space from D drive instead of C.
Do i have to create P drive on C first and then create bat file and run this to change to D drive ?
Also is there a way to set it on D Drive direcly?
subst p: /d
subst p: d:\my_p_drive
subst p: /d
subst p: d:\
would make your entire D: also be available as P:
So do i run this first then Arma3P.cmd or other way around ?
run this first, then arma3p
I think i mange to make it same drive
https://imgur.com/a/NMrswZH
Is there anything else i need to do.
I saw in This video he did something for a startup do i need to do that as well or no ?
https://www.youtube.com/watch?v=2YMC6MrTLII&t=769s&ab_channel=a26mike
Talked about development environments, and how it helps development in Arma 3.
Downloaded and installed Arma 3 tools.
Downloaded and installed Mikero new all in one installer.
Created a P-drive using arma3p
Learned how to have the P-drive stay mounted using windows.
Windows + r and add shell:startup
Copy and place the .bat file in the p-...
I have restarted my PC and I don't have P drive any more.
But All the files that I got when I mounted Arma3P are still there.
Is there a way to get back mounted P drive and set it up with out the need to get all the files.
And set it up everytime i launch pc he is automaticly mounted ?
add the bat script to your autostart items
this script ?
subst p: /d subst p: d:\
fyi: you could use D: directly simply by specifying d:\my_project
alternatively, you could change the drive letter from D to P (or any other such a Z: for dayz) in disk properties
I am really sorry this is my first time doing this so these are the steps i have done so far.
1.I created Bat file and ran the file. Code:
subst p: /d subst p: d:\
2. Then I ran the Arma3P.bat File and mounted P drive with limited stuff not full.
3.I checked the D drive and i didn't want A3 stuff mix with a Other stuff I have in D so I created a folder called my_p_drive and put everything in there.
4.I have restated my computer and now the P drive is gone.
Q: How can I mount back the P Drive back to the D drive and the folder my_p_drive , with out running arma3P again. So I don't have to extract the files again.
Unless it has a check in there that checks are all files there?
Q: How can i make it when i restart/shutdown computer the P Drive is there
subst p: /d
subst p: d:\my_p_drive
Press Windows key and R, type shell:startup, press enter
Add the script there
Thank you very much. It fixed my Problem. Also I am sorry for not understanding at the first.
anyone knows if there is some way to see the files inside a mod with out downloading it?
ill be nice to have a tool to know how much a preset weigts before doing it, since steam is really unreliable
Can't look at data that you don't have ๐ค
Maybe arma workshop crawler would help
However:
Currently reindexing data due to a database upgrade. Please come back again later.
so no idea if that's something it offers
depends on what inside means. if you mean the pbo files themselves then that's included with the cdn manifest. if you mean the files inside the pbos i.e. p3d, paa etc then no without extra service like the crawler
yea just a manifest with the pbos and it weigts, just to add them and have the real weight.
That information is stored somewhere, since when you try to download a mod, steam pre-locates that memory
it's stored in the manifest that steam fetches from their cdn
In that case, I think that https://github.com/ValvePython/steamctl was able to fetch that data.
If you want lower level control, then you can use https://github.com/ValvePython/steam (used by steamctl).
I've used it to fetch games data, in the past, not workshop mods, but it should work just as well
ill try with that ๐ thank you
I thought that I also had code using that steam library laying around, but it looks like the very part interfacing that library has not been comitted to my github repo (only the rshash part, because it seems that that's why I was downloading the data, years ago ๐ค )
Maybe it's on one of my old hard drives
there's also https://github.com/SteamRE/SteamKit which is most often the reference implementation
as long as you use steam pipe
SteamKit which is most often the reference implementation
True, but I remembered that FlyingTarta didn't shy away from Python, in the past, hence why I posted that link ๐
as long as you use steam pipe
Is there anything (recent or Arma-related) that doesn't use SteamPipe? I'm not knowledgable in that area ๐ค
the one you linked defaults to web api with fallback to steam pipe for workshop ๐
Oh, I always thought that steamctl was merely an application built on top of the steam library (second link)
yep, i only can handle python lol
and two follow up on the second question, missions use the legacy workshop which can be interacted with from web api
Why, though? 
Is there a way to load the Arma 3 Launcher with a specific preset with command line options?
Maybe ask in #arma3_launcher
Well, officially, this is my first webpage, lol.
http://tools.flyingtarta.com
I used the Steam API, but it requires a token. So, I created my own API to handle the requests using my token (although I'm not sure if this is a good idea).
To reduce the number of requests, I implemented a database using Pocketbase to store the previously requested mods.
Basically, I'm not entirely sure what I'm doing, but now you can evaluate your presets before downloading them.
In the future, my plan is to integrate this API into a Chrome extension... if I can figure out how to do it 
http 
He likes to live dangerously
although I'm not sure if this is a good idea
Maybe create a new account for free if you want to be sure nothing happens to you?
But regarding that http thing, check out https://letsencrypt.org/ and try to set up https for your website. It sure will come in handy in the future, for you
Just remember that you have to recreate the cert every 90 days, so you better automate that right away
ill try... or ask chatgpt to help me ๐
fuu i need to spend more than 5usd
breaks if you load a html with local mods in btw 
Literally unusable!
I'd say that I'm willing to pay that for you if it weren't for the fact that it would be my credit card that would then be at risk, should you do something funny with that account later ๐
Is this the right place to get help with HEMTT and setup of the work drive and such?
I seem to have everything set up ok, but I'm not sure how to include CBA onto the work drive, even though the wiki recommends the CBA dependency.
And I'm a little murky on the intended file structure of said work drive.
You don't need cba there
, you can refer to it through requiredAddons array in cfgPatches class of your config
?
Do you use the macros?
config.cpp has requiredAddons[] = {"CBA_main"};
I will almost certainly be using them, yes
not in this build but in the work I do like, a week from now
Well in that case you will need to unpack the cba data yes
And it will need to be in its original folder structure
So p:\x\cba...
Okay.
Your data would preferably be in p:\yourProjectTAG\folders/files
hmmm makes me wonder if hemtt will know how to look up a dir
let's find out
ok, most assuredly not
Yeah, I don't know
P:\ has x with CBA in it, REVA with my mod, and a symlink to A3_Retail
I don't want to pack CBA, I want to reference it, but if I put it into REVA it'll pack it
You need to setup an include folder for it to look for them, https://github.com/acemod/ACE3/tree/master/include like so
HEMTT does not use a P drive
I set up a P drive just so I could do this D:
@orchid shadow will SwiftPBO compile with Mono?
Ya
No Win32 APIs used?
Nay
Good news, ty
Might need higher then like 3.5
That should be fine
4.0 > is most likely best
I got a question dont know where to ask but is it normal that steam hides my Published Mod until its validated ?
If you havenโt accepted latest EULA or if your account is flagged because of breaking rules in the past, yes
I dont have a flagged account so far i know
Iโm fixing it, but Iโm trying to make it work with https And failing epicaly ( Iโve problems with the api ๐ฆ )
different domain and port, hello CORS!
flyingtarta.com:5000 is set to use cert for tools.flyingtarta.com
I want to change it to use tools.flyingtarta.com/api
Iโve made an proxi (or tried at least) to redirect the traffic to 127.0.0.1:5000
But still canโt find a way to do it properly
are you using nginx or something else?
traefik maybe
otherwise caddy is super simple, both with reverse proxy as well as let's encrypt https
apache2
I am truly sorry for your lots 
i can change to caddy if its easyer lol
but you should be able to do it with ProxyPass plus ProxyPassReverse
i ve this on the virutalhost 443 of tools.flyingtarta.conf
ProxyPass /api/ http://localhost:5000/
ProxyPassReverse /api/ http://localhost:5000/
make sure it's just /api and not /api/
or you can use a location block
<Location /api>
ProxyPass http://localhost:5000/
</Location>
well the error changed lol
im runing the api with flask, i need to have the ssl certification there too? or just by re-directing to a internal ip and port it should work?
with this i have error 500 now
but there is no hit in the api
does your flask app expect /api or without the prefix?
no, you can TLS termination at apache
@app.route('/api/modweight', methods=['GET'])
yep is specting a /api/
ah, apache is cutting it off
<Location /api>
ProxyPass http://localhost:5000/api
</Location>
this should go insde or outside the <virtualserver> ?
dont use both location and proxy pass outside ๐
well for some reason nothing seems to work ๐ฆ
apache log should say what it tries to request
[Mon Jun 19 02:13:41.418895 2023] [mpm_event:notice] [pid 37068:tid 140213297798208] AH00491: caught SIGTERM, shutting down
[Mon Jun 19 02:13:41.483608 2023] [ssl:warn] [pid 37170:tid 139712419425344] AH01909: flyingtarta.com:443:0 server certificate does NOT include an ID which matches the server name
[Mon Jun 19 02:13:41.504132 2023] [ssl:warn] [pid 37172:tid 139712419425344] AH01909: flyingtarta.com:443:0 server certificate does NOT include an ID which matches the server name
[Mon Jun 19 02:13:41.505048 2023] [mpm_event:notice] [pid 37172:tid 139712419425344] AH00489: Apache/2.4.41 (Ubuntu) OpenSSL/1.1.1f configured -- resuming normal operations
[Mon Jun 19 02:13:41.505060 2023] [core:notice] [pid 37172:tid 139712419425344] AH00094: Command line: '/usr/sbin/apache2'
if i do
https://tools.flyingtarta.com:5000/api/modweight?id=767380317
the request get to the server, but i have this weir output on the console
- - [19/Jun/2023 02:24:22] "\x16\x03\x01\x02\x00\x01\x00\x01รผ\x03\x03<\x1bjยพ<รยฌยฝ\x0eBรj\x97ยผยขรช`รยข\x0cp[wรทรฝp~ร\x81 ยญ\x1b ร'รฒรฌbรKยจ`รท\x9f\x9f\x1fรฟEรฝร^EรรฅIรฃ{ยฑรงยฟ:ยคยถC\x8f\x00 \x1a\x1a\x13\x01\x13\x02\x13\x03ร+ร/ร,ร0รยฉรยจร\x13ร\x14\x00\x9c\x00\x9d\x00/\x005\x01\x00\x01\x93\x1a\x1a\x00\x00\x00\x00\x00\x1a\x00\x18\x00\x00\x15tools.flyingtarta.comDi\x00\x05\x00\x03\x02h2\x00" HTTPStatus.BAD_REQUEST -
because your python server expects http request
so in theory when apache redirects to the local adress its decoded?
that means that for some reason apache isnt redirecting the request
apache handles TLS termination since the certs are configured there and the proxy call is set to use http
oh i have the flask running on all adresses
* Running on all addresses (0.0.0.0)
* Running on http://127.0.0.1:5000
thats why that https://tools.flyingtarta.com:5000/api/modweight?id=767380317 worked.
so the problem is on the proxy
ok i think i found where the problem was, i have duplicated parameters in 000-default.conf
that won't help ๐
ok now i have this problem:
when i send this https://tools.flyingtarta.com/api/modweight?id=767380317 the browser is redirected to http://127.0.0.1:5000/api/modweight?id=767380317 
<Directory /var/www/html/tartaTools>
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
<VirtualHost *:80>
ServerName tools.flyingtarta.com
Redirect permanent / https://tools.flyingtarta.com/
</VirtualHost>
<VirtualHost *:443>
ServerName tools.flyingtarta.com
DocumentRoot /var/www/html/tartaTools
ErrorLog ${APACHE_LOG_DIR}/tools.flyingtarta_error.log
CustomLog ${APACHE_LOG_DIR}/tools.flyingtarta_access.log combined
SSLEngine on
SSLCertificateFile /etc/letsencrypt/live/tools.flyingtarta.com/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/tools.flyingtarta.com/privkey.pem
<Location /api>
ProxyPass "http://127.0.0.1:5000/api"
ProxyPassReverse "http://127.0.0.1:5000/api"
</Location>
</VirtualHost>
i hate web development 
well... this is right, just need to clear the cache of the browser ๐
finally https://tools.flyingtarta.com is working, thank you @scenic canopy โค๏ธ
nice ๐
feature request, make it support drag&drop
What's up. I'm trying to binarize a model but I'm getting "Build error. Error code 1"
How can I fix it?
Did it go down? As I can't seem to reach it.
Also do you have the source code somewhere?
Been looking for a reliable way to find mod sizes myself without any avail.
the actual data is only kept in the steam cdn workshop manifest files
yep the server is on maintenance
Pastebin.com is the number one paste tool since 2002. Pastebin is a website where you can store text online for a set period of time.
with that you can access the value, is what the api i made does ( but is in the same server as the page
)
PD: is already up again ๐
What package does that use? Ive tried doing similar things with other steam api packages. But it still retrieved the wrong size.
just as a heads up, KV bis_size won't exist for anything not using the bohemia publisher i.e. anything uploaded with other tools like steamcmd
Itโs a kvtag (no idea what is it really ) but there is one that is bis_size with the real size.
I didnโt found another way to measure the size of a mod with out downloading it (almost all big and heavy mods have this, so is quite accurate)
I mean what does webapi.get come from :P, as I've tried python-steam-api before, or did you not use that in the end?
Is just โsteamโ pip install steam
Yea seems to work great. Thanks, gonna have fun with this
web api does not contain actual manifest with files metadata, only steam cdn (steampipe) does
the bohemia provided uploader publisher(cmd) adds the KV tag bis_size but other tools won't unless manually added by the uploader
KV (key-value) is arbitrary key and value that the uploader can add when publishing items to steam workshop
it's not decided by steam so each game (and uploader) can decide what to add on their own
Do you know of any mods that use a different uploader than the publisher?
I've checked RHS and CUP, which use automated upload systems I believe, and they seem to have the KV tags.
What I could probably do though is that if kv tags are missing it would then use the file_size that steam uses as well.
AFAIK ACRE2
the steam cdn manifest contains a list of all files with the current uploaded version and their hashes and sizes
and that manifest is always updated regardless of upload tool used
{'key': 'bis_signature', 'value': 'acre_2.8.0.1037-02748c87'},
{'key': 'bis_size', 'value': '261345702'}```
Seems to be present.
the size isn't correct though 
current version is 2.11.0 so likely those are from old uploads ๐
from memory they are part of the item, not the current manifest
but I might be wrong there
I wonder then if it's an safe assumption that the largest of either bis_size or file_size would be correct.
How often do mods remove large amounts of files?
I'd be more worried about mods adding a lot of files ๐
done ๐
I'm trying to implement my CfgFunctions generator script (based on 7erra's original script) as VS Code extension. It's quite a new area to me in development, but I'm making slow (but somewhat steady) progress ๐ We'll see in how many ways it'll blow up in production if I manage to release it eventually ๐
Arma Language Package for Atom has just been updated to 2.0.0! Check out the BI Forums topic: https://forums.bistudio.com/topic/185849-arma-languages-support-for-atom/
I hope Google approves me this time.
What does Google have to do with mods on Workshop? 
Insider information. Alphabet plans to buy BI and continue development on arma 3. 
Probably a good chrome extension to see the mod weight size
Don't tell me that your uncle works at Google too! ๐ฑ
That would help a lot, although how do you get that information (other than manually checking and filling a database)?
I have said too much๐
when you upload a mod there is a kv_tag where the real weight of the mod is stored
since its not really common that ppl use another thing than publisher, is quite acurate
sadly need an api key to read this value, so i made an API, and also store in a database the already "asked" values to speed up the process ( can test it on tools.flyingtarta.com) ๐
I just need the real size for an excel file which I maintain for my unit (which now automatically gets the size as shown by default), and now have to manually check on my HD what the actual size is.
So if this extension gets public it would help me a lot (still some manual work, but a lot faster than now).
Might take a look at the API as well, shouldn't be too hard to work with
here is the code i used to interact with the api
@pearl beacon Very cool. Great job!
Thanks go to all the contributors, have fun with it :)
WTB SQF linter
Small update of Poseidon Tools (0.91.2):
https://forums.bistudio.com/topic/155514-poseidon-advanced-text-editor-for-scripts-configs/?p=2935109
Page 16 of 16 - Poseidon: advanced text editor for Scripts & Configs - posted in ARMA 3 - COMMUNITY MADE UTILITIES:
i have a question. ive been using poseidon for awhile now no issues but i put a new windows on a new hdd, got everything working, poseidon is installed, yet it only runs if i open it. i cant open it by double clicking an SQF file anymore, it gives me an unspecified error. poseidon error: file path is what it looks like. i can access my SQFs manually if i open poseidon f...
Ah.. its my turn to announce then..
Made some tweaks for Config Browser, added RHS, ACE sets:
http://configs.arma3.ru/155.133232/configfile/CfgAmmo.html
I made a wrapper for calling sqf functions in c#. Just keep in mind that it's in alpha, and probably has some bugs in it
Is it not possible to create a new LoD with o2script?
Not copy and existing and rename.
Create a new.
@glossy inlet Sorry for the ping but is this up your alley at all?..
I know enough to say "I think so, probably"
but can't tell you how. I only messed with O2 oence to generate proxies
https://github.com/reyhard/o2scripts Maybe you'l find something here
Yeah, checked there as well. ๐
Here's a slightly newer pooled one from the couple I've been linked to/found.
Thanks anyway though.
Maybe I'll have to try and create a new LoD using the menu commands.. see if that's one of the working ones.
Here's a slightly newer pooled one
no dude.. don't just take other peoples stuff, put it onto your profile making it look like you made it and give zero credit to the real creators. Thats a dick move
Kk. Hidden until I can add the direct links.
References fixed
Also managed to achieve what I aimed to do.
Adds an "Origin" memory selection and point to "0 0 0"
If it doesn't find a memory lod, adds one and adds the point.
Useful for height check situations where autocenter 0 isn't applied to geometry lod for some reason.
No idea what the right channel is so I'll post here.
I am using HEMTT 0.7.6 to build my addon, but I just received a message from a user claiming that the generated keys are faulty because the suffix of the .bisign file doesn't match the name of the .bikey. Is this true, do they need to match for the key to work?
Edit: I am indeed getting error 0x22 with the current set of keys... What gives? I've made the suffixes match and all lowercase using signature version 3
did you sign on linux?
Nope, using win10. There are no spaces in the names so it should be linux friendly though
DSUtils tells me No signature found for P:\Overthrow\addons\overthrow_main.pbo even though the files are definitely where they need to be
what's the bisign filename?
bisign: overthrow_main.pbo.overthrow_community_2.3.0.0.bisign
bikey: overthrow_community_2.3.0.0.bikey
Just a thought I just had when drinking morning coffee: would it be possible to write a TypeScript style transpiler with typing for SQF so that it would have e.g. wrapper functions for commands with multiple input types to maintain type safety? But are there any scripting commands with multiple possible return value types? I guess that could break it totally unless the return type(s) would be deterministic.
I've pondered about the idea before but didn't realize that there could be the wrapper functions for calling the scripting commands with multiple input types
buildingPos can return single coordinates arraybor array of arrays. createUnit can return object or nothing. select is a nightmare in that regard...
Sounds... bad ๐
Been there, did it too (in fact: did it twice already)
It even is integrated in sqf-vm, namely "sqc"
This one even has technical aid for what is available in dev branch with creazeHashMap by syntactic sugar
Nice, I forgot to check SQC (me dumb). Looks like what I was thinking of indeed ๐
If I'm reading this right you have method calls on objects no?
ah yeah I see it now
I don't know why no one has targeted the bytecode yet
Hey guys, have someone a blender rig for driver models?
Maybe try #arma3_model / #arma3_animation ?
break it pls
https://github.com/X39/ObjectOrientedScripting/releases/tag/v0.6.0-ALPHA
OOS just hit 0.6.0
known issue:
InstanceOf is giving invalid results
Because arma byte code is not really doing anything for you
There is no fancy new things you really can implement because everything is operator based
Bytecode lets you write SQF assembly directly
but SQF assembly isn't that nice really
make another another VM with nicer assembly, call "Alternative Interpreter", ship as "AI improvements"
And then call it NicerVM
AI enhanced VM ( i just asked chatGPT a few things to build it )
@silent trellis not a linter, but you might be interested in this python script, it checks missing semi-colons, braces, parentheses and such things https://github.com/acemod/ACE3/blob/master/tools/sqf_validator.py
for full linter accessibility to SQF engine features would be very nice, basically access to compile from outside, best explained here http://feedback.arma3.com/view.php?id=25747
uhm ... reverse engineering those lil code passages should do it
well... steam Enhanced i guess lol
Usefull things i think will be nice to have:
- Direct download for pbos (missions)
- Colection => .html
- html => colection
- Real weight of mods on steam page
- calculate weight of both html and colection
Any other ideas?
Nitpick, but change โReal Mod weightโ to โReal Scenarioโ or โReal Compositionโ depends on the type might be an idea
Or use "Real weight" instead and ignore the type completely ๐
This yeah
Does anyone have a FULL skeleton config including all the bones mikero's tools now report as missing?(e.g SLOT_BackWpnL, CHeek_LF)
yea, i will make it just for mods, to save some unnecessary API usage
@vital stone Check this message ๐
I've made quite a bit of progress on the automatic CfgFunctions generator VS Code extension, but it's my first time both writing actually functional JS/TS code and creating a VSC extension. So I assume that the code could probably be more robust still. Could someone more experienced here take a look at my code and suggest fixes/improvements and ways to clean the code up before I release the extension to the public?
Model.cfg in Samples
they are missing because you have created your rtm with p3d that has wrong bones
soz sturm was supposed to ping @vital stone
you must not export any extra bones into your rtm
CfgFunctions automatic generation for VS Code, would appreciate feedback a lot before I post it elsewhere ๐ https://marketplace.visualstudio.com/items?itemName=Ezcoo.cfgfunctionsgeneratorarma3
Why restrict it to VSCode? I feel like it could be a command line tool so anyone can use it regardless of IDE.
I am not certain if I am in the correct channel. But-
Does anyone know of a PBO-viewing/unpacking tool that works in a Mac OS environment?
You should be able to compile Hemtt on Mac. But don't think they have pre built binaries
armake1, armake2, pbo-fuse. there's a repo with brew formula for the armake tools on my github
mikero tools should work as well
though the mikero tools mac binaries are probably not publicly available, let me know if you want them
@pearl beacon I've noticed the ace3 toolchain has a lot of hardcoded stuff in it (lots of hardcoded "ace_", hardcoded expectation of optionals, etc) -- any chance of getting a more "generic" release of the toolchain? It's really neat, but adapting it to other projects is currently a bit of a pain
We have plans to set up a more generic version of the ACE tools @hidden mist
Ohhhh, looking forward to that
Porting the tools over to a different project is actually pretty easy to do as well.
Oh, I know, I've done it a few times, it's just that you have to do a bit of Search&Replace/remove stuff like optional handling if you don't want that
If all the project specific stuff lived in a settings file/settings block it would make live a lot easier :)
Yes. What would be awesome if some kind of generated build script.
โค
Hi I keep running into this error with Mikero's ExtractPboGUI, and it stops the process. "...\config.cpp already exists. Will not overwrite it. DePbo:file already exists, while attempting extraction."
Any help is appreciated
@hidden mist which parts more specifically do you see yourself finding/removing? few months ago I un-hardcoded a lot of them, for example ace_ prefix is not longer hardcoded, it's in a variable at the beginning of the scripts
youll have to clear previous data
This can also be a thing if somebody has put a config.bin and a config.cpp in the same folder of their pbo
It's a lazy way of stopping mikeros depbo from opening the mod.
@frozen meadow I've found the Real Mod Weight has the initial weight when I release the Mod despite I've updated the Mod already and the weight has been reduced. I don't know anything with Steam API so here is just the report
Yea I need to make the values update in the database when you update the mod
@pearl beacon Pretty much those parts, thanks for un-hardcoding them! I did this quite a while back so I assume my experiences where before your changes
๐
it should be fixed now, if you have another mod recently updated to test it, will be nice ๐
I just bought a skin to the webbased administration tool... i dont know how i feel about it, but damn it's nice to be able to focus more on server-side code
how can i read the workshop mods folders ? i have tried with
for (const auto& file : std::filesystem::directory_iterator(path)) {
if (file.is_directory()) {
folders.push_back(file.path().string());
}
}
but it returns nothing
That's because they are not directories but symlinks/hardlinks to directories, stored elsewhere
So your file.is_directory() will always return false
They usually point to:
<directory>\steamapps\workshop\content\107410\<mod_id>
ok thanks that makes sense why its returning nothing 
ok the problem wasnt on the .is_directory() check, it was on the path
thanks anyways for the explanation stack
I'm also after a more dynamic tool chain to use on a project, still only a concept at the moment.....not much more than an idea in my head
Probably talk about it more in the ace slack
Symlinks are designed to be transparent, so std:filesystem should read through them as if they are normal folders. Unless you explictly handle it specially
If you is_directory on them directly, they probably still return false though
Here's an example of an Arma extension that implements intelligent/self-learning and fully autonomous (once set up) team balancing system for PvP/TvT gamemodes.
It e.g. measures the recent ingame performance of players (based on score data) and forms a skill value based on it. As an intentional side effect, it encourages teamplay indirectly if you add score for individual actions of players only ingame, as teamplay isn't being taken into account in forming the combined skill of team in that case.
If you're interested, read the README carefully. It's WIP and a learning project, so there are some very ugly things and bad practices left.
The concept itself is more important here; if you want to use the extension in production, you should really rewrite the parts mentioned in README at least (or rewrite the whole system by copying just the concept itself).
MIT license, poggers. Perhaps we'll find use for the parts of it, thanks a lot for your work on this!
I don't understand why would you need to use the code if you "can write C# code better than anyone ever" ๐ But yeah, it would be nice to know if anyone is interested in the system or concept of it (can DM me if necessary)
you could try to go AOT for unmanged exports to get this linux compile ready
I'll probably leave it as is (for now at least). I got a slight burnout when it comes to the system as there was some drama related to it. I might continue developing it later, but no promises. I'm flattered by your interest in any case though, so thanks! If you're really interested in it, I can explain the concept in depth and the relevant details e.g. in DMs though (so that you can code a more robust solution) ๐
Had to mention this earlier, didn't have time unfortunately tho. This is just PSA for anyone who is planning to use the system.
As a server host where this system was ran until it just broke the whole balance of the games, I think that the system itself is great, however it has a few flaws that the users should take in to account and try to fix before pushing it to production.
Most of the time it was running well, and this was proved by the high player count and me monitoring the database values. However, if in your specific game mode there's a possibility that a player might gain very high skill value, there might start to be problems when those players leave the game. Think about it, if you are very highly skilled player (30 vs average lets say 5 for example), do a lot of work for your team, put them at a huge advantage, then you just suddenly leave with the skill score being at 90-80, it's going to be 60-80. That hole is going to take a while to fill, and the other team might feel frustrated because their team is already at disadvantage, and now any of the players can't join their team. There should be a mechanic that slowly decays the skill of that given player over some x amount of time. And if he joins back then the skill will be restored. The other problem with the current system in regards this is also that allowing the player to leave to lobby without slowly decaying his skill value, it allows him to let other highly skilled players back in to the team (provided that you have anti-team swap mechanic in your mission, like we have in ours).
Also, if player gains huge amount of score suddenly, leaves to the lobby (before the next tick of the db save comes in), the database will try to take the negative value that causes, causing warning in the logs of the extension .dll. As the database refuses the entry, this is mostly fine, but none the less should be fixed cuz it spams the logs that could catch other errors in your system/mission/or even hackers in the server.
Regarding the discord bot side of the project, perhaps implement something simple that will serialize the message that it sends to the status of the game, so the program can check that it doesn't need to post the message again. Before this is implemented, admins of the server must always remove the old message when the bot is rebooted which is not quite optimal. Let me know, if anyone works further on this system and needs help with such implementations (dm maybe?). Other thing too regarding the bot, the logging could be visible on a channel that admins have access only and if something critical/error/warning happens (on the discord bot and extension side), it automatically posts that message there and pings the admins.
Player leaving to the lobby and letting someone else join is kind of intentional because it's designed to let friends to play on the same side, but it can cause temporary misbalance at low player counts indeed. On popular servers it's not that much of an issue.
Other than that, yeah, it's WIP because I got burnout with it and I ended up releasing it rather as a showcase of the concept. The project has MIT license indeed, so if anyone feels like continuing the work, you're free to do that
hi everyone, would anyone be so kind to help me a little, im trying to mount the P drive, but im getting this error
"WorkDrive cannot start because the install seems corrupted. Do you want Steam to verift the integrity of Arma 3 Tools?"
i have already verified, and reinstalled Arma 3 Tools, Running on Windows 11, something to note the P drive does mount but its not dteected by programs like Pbo Project
when i run Arma 3 Tools as admin its gets stuck on a weird loop@vague shard
@neat lantern probably best to reach out to them on their discord directly
You can mount P drive with more simple methods too. The tools launcher can be problematic.
Find PMCwiki P drive mount guide
ho, yeah Thank you Goat ^u^ will try that
So when a mission file gets packed into a pbo, is it just zipping the folder?
What do you mean? Do you mean PBO == ZIP?
Nevermind. Im asking a stupid question
Essentially yes, pbo is a file archive with LZSS compression, so not a "zip" but the same idea
i had once converted the folder to zip, and change it to .pbo
For some reason the server didnt like it
For those that know linux, I'd rather compare it to a .tar file with an optional .gz
The answer is essentially yes and "technically" no. It appends the tiniest bit of its own data to the file. I had a few questions because I was looking at making a tool for a few of my missions. This answered everything I needed to know.
im not sure why this is happening but, im creating a new preset with js
and the presets have this tags on head:
<meta name="arma:Type" content="preset" />
But for some reason when i have this in a string, and use
const parser = new DOMParser();
const doc = parser.parseFromString(emptyPreset, "text/html");
the output is changed to
<meta name="arma:Type" content="preset">
And for some reason the launcher dont like it (when trying to import it):
2023-08-01 11:40:18,630 [ERROR] 1: PresetsViewModel: System.Xml.XmlException: La etiqueta de apertura 'link' en la lรญnea 83 posiciรณn 10 no coincide con la etiqueta de cierre de 'head'. lรญnea 86, posiciรณn 11.
en System.Xml.XmlTextReaderImpl.Throw(Exception e)
en System.Xml.XmlTextReaderImpl.Throw(String res, String[] args)
en System.Xml.XmlTextReaderImpl.ThrowTagMismatch(NodeData startTag)
en System.Xml.XmlTextReaderImpl.ParseEndElement()
en System.Xml.XmlTextReaderImpl.ParseElementContent()
en System.Xml.XmlTextReaderImpl.Read()
en System.Xml.Linq.XContainer.ReadContentFrom(XmlReader r)
en System.Xml.Linq.XContainer.ReadContentFrom(XmlReader r, LoadOptions o)
en System.Xml.Linq.XDocument.Load(XmlReader reader, LoadOptions options)
en System.Xml.Linq.XDocument.Parse(String text, LoadOptions options)
en Launcher.Extensions.ViewModels.ExtensionListSharer.LoadPresetFromFile(String text)
en Launcher.ViewModels.PresetsViewModel.<ImportPresetExecute>d__39.MoveNext()`
ive tryed everything, but always the output es set
with out />
Even with createElement, setAtribute, apend, even adding the string into the doc.head.innerHTML + '<meta name="arma:Type" content="preset" />'
i can remove this lines and it works.. but yea, is kind of annoying ๐
XHTML would use trailing slash, otherwise no
Isn't this an xml, actually?
(not sure if i formatted it correctly, though - I'm at work and don't have access to real presets ๐คทโโ๏ธ )
yes/no, HTML
but they use XHTML, so it's declared with xml header
and hence they also using closing slash for their meta elements
Anyway, what I wanted to point out was that when I used "text/xml" in the parser, then the closing of the tag showed up
yep, xml enforces it
In that alternate form, of course
text/html enables HTML mode, the other types will use XML mode
text/xml, application/xml, application/xhtml+xml, image/svg+xml
and using xml mode will allow you to use XHTML with closing meta elements
based on your exception the launcher will use plain xml reader, hence rejecting plain HTML which isn't XHTML
trying to feed the full sqf command list to parser framework that only supports case-insensitive matching with regexps like [cC][aA][sS][eE] leads to very funny compile times ๐คฃ
treesitter. Just to try it out, i guess. With "good enough" goal being minimally usable SQF syntax highlight in neovim
when i use parser.parseFromString(emptyPreset, "text/xml"); i have this output
Do you have a BOM character?
there is some easy way to know ?
check first character of the read string
I opened a random HTML preset I had on my drive and looks like some garbage at the start
yep, it's BOM
good old EF BB BF
See https://en.m.wikipedia.org/wiki/Byte_order_mark for more
The byte order mark (BOM) is a particular usage of the special Unicode character, U+FEFF ZERO WIDTH NO-BREAK SPACE, whose appearance as a magic number at the start of a text stream can signal several things to a program reading the text:
The byte order, or endianness, of the text stream in the cases of 16-bit and 32-bit encodings;
The fact that...
function removeBOMFromString(str) {
if (str.charCodeAt(0) === 0xFEFF) {
return str.slice(1);
}
return str;
}```
this shoud delete it?
meh i deleted the fist line and it worked lol
yep, that would delete it
Tho... Not really the reason that works..
Skipping a line, in this case, skips the bom too as a line end is defined by... Well... The line end
Leaving this here, just in case
https://github.com/X39/UnitedTacticalForces/blob/master/source/X39.UnitedTacticalForces.Api/Helpers/Arma3ModPackParser.cs
The utf App I created also features a way to manage mod compositions
it works because the first line is the xml declaration ๐
but the bom removal code also works
do we have a tool to generate a stringtable.xml from a initSettings.sqf?
don't think so
