#arma3_tools

1 messages ยท Page 3 of 1

orchid shadow
#

Heh.

#

I have just the thing for you then verox

#

Accidently made that a gif

#

but fuck it.

#

@silent trellis

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

orchid shadow
#

Its really its fatness.

#

That bother me so much wasted space unless you trim it a bit

silent trellis
#

aye it's pretty needlessly bloated too but that contributes to it's expensive parsing

orchid shadow
#

Check PR's.

silent trellis
#

Aight merged it, cheers head

plush copper
#

listbox.GetItemCheckState should return either 0 or 1 correct?

silent trellis
#

I assume it'd return a boolean..

#

It returns System.Windows.Forms.CheckState

plush copper
#

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

plush copper
#

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.

orchid shadow
#

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.

silent trellis
#

ToString()?

orchid shadow
#

Sure it dosen't just eval to int?

silent trellis
#

I know there is an easy way of getting the text of the enum

plush copper
#

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.

silent trellis
#

Aye just checked it

orchid shadow
#

@silent trellis yeah default format for enum.ToString is G = name

silent trellis
#

ToString() returns ...

#

yeah that

orchid shadow
#

I think it was old net that it was the value

silent trellis
#

" So I usually type my code up in notepad++" THAT is a bizzare workflow

orchid shadow
#

^

#

Yeah was going to say

#

You have the best IDE and you use notepad.. a text editor..

silent trellis
#

Send us the code from the notepad

#

I'll bet it's a missing dot or semi-colon

orchid shadow
#

Who needs a intelisense!

silent trellis
#

Or a typo

orchid shadow
#

Not directgame xD

plush copper
#

I bet you it isn't xD

orchid shadow
#

VS + Reshaper = godlike.

silent trellis
#

I keep hearing about Reshaper, I still haven't tried it

plush copper
#

I agree it is a bizzare workflow but for the most part it works...key word most part.

silent trellis
#

Resharper

orchid shadow
#

Reshaper.. is amazing...

silent trellis
#

even

orchid shadow
#

Ah

#

lol

silent trellis
#

Oh

#

VS2015 does that now

#

The lightbulb auto-fix things

silent trellis
#

Oh

#

Now... yeah that's pretty nice

plush copper
#

Now I will clean up the code so Head doesn't have to murder me xD

orchid shadow
#

pats directgamer.

#

Good boi.

plush copper
#

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.

orchid shadow
#

I just rewrote swifty for the past two weeks.,

#

felt good.

silent trellis
#

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

orchid shadow
#

Linq is the shit.

smoky halo
#

LINQ is magic. I love LINQ

silent trellis
#

I should probably learn it at some point

orchid shadow
#

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.

silent trellis
#

RIP

#

Eyyyy it's free for students

#

Jackpot

silent trellis
#

Oh it goes backwards as well

orchid shadow
#

Ah, its when you don't give it the full link.

silent trellis
#

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

orchid shadow
#

Yeah, i had that issue...

#

Oh.. discord update.

silent trellis
#

Not showing for me yet

plush copper
#

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.

orchid shadow
#

Its pretty sad when you are out paceing winforms ;(

plush copper
#

xD what are using winform for swifty?

orchid shadow
#

I'm a oldtimer ;(

#

And i really really dislike XAML stuff.

plush copper
#

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.

orchid shadow
#

Gotta write.. a control pool.

plush copper
#

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.

orchid shadow
#

Never heard of install forged

plush copper
#

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.

empty kindle
#

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?

karmic niche
#

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

scenic canopy
#

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

empty kindle
#

so in the end parse whole file, clear

karmic niche
#

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

empty kindle
#

SHA ๐Ÿ˜ธ, I'm still mostly facing OFP PBOs

scenic canopy
#

for valid then you'd need to check all ๐Ÿ˜›

#

checking if it's a pbo or not would be different

empty kindle
scenic canopy
#

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

empty kindle
#

it is scary world in there - outside of your testing suite

ocean shard
#

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?

Bytex Marketplace

Obfuscation for Arma 3 mods and missions

uncut whale
orchid shadow
#

xD

glossy inlet
#

"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)

sly skiff
#

I believe it dont work on terrains

dawn palm
#

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

silent trellis
#

@uncut whale Is this going to be an essay because you've been typing for a while

uncut whale
#

Huh? Discord must be doing something weird

plush copper
#

What do you guys use to create a setup.exe for your software?

orchid shadow
#

I made my own

#

It's now the bane of my existance

plush copper
#

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?

orchid shadow
#

I just abstracted each stage into its own usercontrol and remove and add them to master control

empty kindle
#

@ocean shard btw. what's the reason for obfuscation?

plush copper
#

What edition of VS are you using?

karmic niche
#

better hiding of easter eggs

ocean shard
#

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

glossy inlet
#

Anzus is still up? Guess we have to shoot them down again..

ocean shard
#

I give the mod to doug. what is going on with anzus server i do not know exactly

glossy inlet
#

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

ocean shard
#

ok thanks for the info i will rethink this

empty kindle
#

Do I understand it well discussing EBO format in public is forbidden?

glossy inlet
#

yes

dawn palm
#

@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

orchid shadow
#

12

ocean shard
#

@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?

sly skiff
#

we cant support any kind of affiliation with anzus gaming so please dont ask here again when you are working for them

dawn palm
#

@ocean shard last and final time. the pbo must be recrunched. with /without obfuscation is your choice not mine

ocean shard
#

@sly skiff ok understand, will distance myself from anzus

plush copper
#

Like what edition of it though. I think VS 12 had like Ultimate, Premium, and Pro?

orchid shadow
#

Pro

silent trellis
#

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

jaunty sail
plush copper
#

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.

kindred abyss
#

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

neon flax
#

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.

kindred abyss
#

need users to be able to change which key is in use so they can use their own bots though notlikemeow

#

completely stumped on how that'd work without the key being exposed somehow

neon flax
#

config file on a server?

kindred abyss
#

don't actually know why I didn't think of that, thanks :))

rough grove
#

I used a chat command for that in an old project

rough grove
#

So the mod does nothing until an admin runs like #mymod register 4235234523452345, then it stores that locally somewhere

kindred abyss
#

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
plush copper
#

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.

plush copper
#

Hmm interesting enough it no longer detects it as a threat. Today has been the weirdest day for me.

plush copper
#

And it now detects it as a threat

vague shard
#

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?)

sick verge
#

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.

vague shard
#

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 ๐Ÿ™„

glossy inlet
#

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 ๐Ÿคž

plush copper
#

@orchid shadow Just thought I would let you know the launch swifty option at the end of the installer is broken.

vague shard
#

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)

sick verge
#

Yep, Tracy 0.9 dropped support for pre-0.8 traces

glossy inlet
#

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? ๐Ÿค”

orchid shadow
#

Indeed.

glossy inlet
#

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 ๐Ÿ˜ข )

tawdry scarab
#

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.

sly skiff
#

such "mods" are just bunch of stolen assets anyway and we have 0 tolerance on that

tawdry scarab
#

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:

plush copper
#

I hate XAML...

silent trellis
#

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

plush copper
#

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?

vague shard
#

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

glossy inlet
#

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

vague shard
#

thanks. we do already have them. i guess with regex i can overwrite the version tag on each build

dawn palm
#

my tools will do nothing to assist anyone in over-writing bi's primary bin.pbo.

thick matrix
#

Any way to quickly unpack a lot of pbo's??

glossy inlet
#

: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

thick matrix
#

Thankyou!

karmic niche
#

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)

scenic canopy
#

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

karmic niche
#

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?

scenic canopy
#

\x97 is End Of Guarded Area?

karmic niche
#

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

karmic niche
#

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

scenic canopy
#

is it in config or stringtable?

karmic niche
#

So we have \x20 \x97 in the file

scenic canopy
#

sounds like stringtable?

karmic niche
#
    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

dawn palm
#

the engine is unconditonally utf8, with some oops involved with sqf

neon flax
karmic niche
#

I dumped the config using diag_exportConfig
From the console, in the editor

dawn palm
#

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

karmic niche
#

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

junior beacon
#

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)

dawn palm
#

@junior beacon if the file exists it will be included if not, it causes noerror

junior beacon
#

The file is there.

dawn palm
#

then it works per normal

#

if not, the lack of features prvodided in the header simply don't happen

neon flax
#

is the file in PBO?

scenic canopy
junior beacon
#

Yes.

neon flax
#

If not it will only load with filepatching enabled

dawn palm
#

it MUST be

#

it can NEVER be binarised

neon flax
#

no it does not. You can use filepatching.

scenic canopy
junior beacon
#

No wait stop

#

it's in root/userconfig/...

#

Not in pbo

scenic canopy
#

yeah

#

then you need filepatching

#

else no

dawn palm
#

irrespective, the file that expression is in cannot be (pre) binarised

junior beacon
#

That's it indeed. I had it enabled in launcher but not im param file

neon flax
#

how does it relate to his question? at all?

dawn palm
#

?

junior beacon
#

Thanks for your help you three โค๏ธ

dawn palm
#

binarisation 'relates' because the file can only be binarised by the engine, not beforehand.

neon flax
#

but revo asked about file being included or not depending on how he starts the game.

scenic canopy
#

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 ๐Ÿซฃ

karmic niche
#

I'll have you reminded that I'm an SQF noob. I'm just good at pretending

scenic canopy
#

mostly lazy sloth_laugh

karmic niche
#

(like, seriously, I have not idea what you're asking of me nor how to obtain it)

scenic canopy
#

class hierarchy, i.e. what parent classes between it and root of config

karmic niche
#

I just have that dumped file

scenic canopy
#

I'll figure it out then ๐Ÿ™‚

#

now I'm too curious!

karmic niche
#

๐Ÿ˜…

karmic niche
scenic canopy
#

thanks, people started calling me into meetings ๐Ÿ˜ฆ

glossy inlet
#

Arma rarely parses strings. Most comparisons are in binary, only when it goes to rendering its translated using ^

#

So the answer is kinda.. configs are neither, its just blobs delimited by whitespace and ;= and such
But that will also depend on what tools you use to binarize the config. Once a config is binarized you're free to have emoji's in classnames

karmic niche
glossy inlet
#

Mikero chiming in and brabbling barely related blobber ๐Ÿ˜„

#

flags is 0

weak shell
#

anyone use HEMTT to do their packing? got a question that I must not be understanding from the documentation

glossy inlet
weak shell
#

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?

weak shell
#

dumb that down a tad for a hobbyist that doesn't know that language?

robust vessel
#

"full filename or glob that matches. No raw foldernames."

weak shell
#

ok thx

robust vessel
#

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 blobdoggoshruggoogly

glossy inlet
#

either without ending / or with /* I'd expect

karmic niche
#

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

scenic canopy
#

could be

#

textOrig = "%1.1 โ€” No target";

#

when copypasted

karmic niche
#

๐Ÿ™ˆ

#

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! ๐Ÿ™

glossy inlet
#

Yes please someone fix

karmic niche
#

Yup, now if only there were BI devs on this Discord ๐Ÿฅฒ

glossy inlet
#

Yeah that's so sad.
Way too common for gaming discords to not have any actual devs on it

scenic canopy
weak shell
junior beacon
#

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

sly skiff
#

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)

junior beacon
#

What's the better way of unpacking the data?

sly skiff
#

well I prefer mikeros arma3p for it doing the work for me

#

but they can be manually unpacked too

junior beacon
#

ok. Thanks for the info

sly skiff
#

and depending on what you want to do and what tools you use you dont necessarily need to unpack anything

remote canyon
#

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

scenic canopy
#

yes, that is possible

#

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

remote canyon
ocean turret
#

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)

empty kindle
empty kindle
#

๐Ÿค” ad bis-file-formats, I like the goal and vision of that project, but the technology selected is totally in opposite of the plan

dawn palm
#

I'll opt for HEMTT instead, it seems to be a much more popular builder ๐Ÿ˜Ž

empty kindle
#

I still dream about opened tools used by engine itself, official content builders and community content builders as well ๐Ÿค”.

dawn palm
#

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.

ocean turret
ocean turret
ocean turret
# empty kindle no

well, is there a way to test compression implementation without creating a pbo and running the game?

scenic canopy
plush copper
#

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.

dawn palm
#

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.

scenic canopy
ocean turret
#

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.

scenic canopy
#

mikero's extractpbo should be able to do that for you

inland flare
#

Either:
"HKLM\SOFTWARE\Wow6432Node\Bohemia Interactive\Arma 3" /v "MAIN"'
or
"HKLM\SOFTWARE\Bohemia Interactive\Arma 3" /v "MAIN"'

quick portal
#

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.

frozen meadow
#

there is any way to convert png and jpg files from linux cli? i want to add that function to a discord bot ๐Ÿ˜„

frozen meadow
#

but im writing it in python, and its hosted on a linux server meowsweats

karmic niche
#

Oh. Okay ๐Ÿ˜„
I was about ti suggest ImageMagick, but I won't, in that case ๐Ÿ˜…

frozen meadow
kindred abyss
#

may be worth consulting their discord

karmic niche
#

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

frozen meadow
#

time to use chadGTP

frozen meadow
karmic niche
karmic niche
#

Maybe that's what I used back then, but I really can't tell at this point

dawn palm
#

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.

frozen meadow
frozen meadow
karmic niche
#

gh&hf

#

You can also check the .travis.yml file if you want precise steps to build it

dawn palm
#

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

frozen meadow
#
paa2img     Convert PAA to image (PNG only). (not implemented)
img2paa     Convert image to PAA. (not implemented)

notlikemeow

karmic niche
frozen meadow
karmic niche
#

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 blobdoggoshruggoogly

quick portal
vague shard
#

DSCheckSignatures.exe from C:\Program Files (x86)\Steam\steamapps\common\Arma 3 Tools\DSSignFile

vague shard
#

interesting. linux server by chance?

quick portal
#

Yes, but also happens on my Windows machine on the client. So game is doing different check than the DS tools notlikemeow

#

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)

scenic canopy
#

which tool du you use to create the pbos? if they are not created correctly then signing will fail in game

quick portal
#

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 thonk

#

But the weird thing is that DS tools is fine with the broken bisign while the game is not.

vague shard
#

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

quick portal
#

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 blobdoggoshruggoogly.

glossy inlet
#

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

robust vessel
#

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.

quick portal
#

Thx for the clarification. Ill try to reach the creator and check what packing tool he uses.

sly mica
#

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.
sly mica
#

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.

sly skiff
#

Possibly you try to unpack to existing folder

orchid shadow
#

Mmm..

proud heart
#

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?

scenic canopy
sly mica
plush copper
#

I can't read any of the actual text in the GIF. I can just see that you deleted something.

clear urchin
#

he deletes a file inside a pbo, swifty then downloads and patches in only that file instead of the whole .pbo

glossy inlet
#

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?

silent trellis
#

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

orchid shadow
#

@plush copper protip, press open original

plush copper
#

I did xD still too small to see

orchid shadow
#

Yeah click the link above the picture

#

bloody discord being derp and linking the thumb

kindred abyss
#

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

karmic niche
#

You mean, like "chaining extensions"? So that your extension acts like Arma and loads another one?

kindred abyss
#

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

karmic niche
#

So you're basically writing an extension tester, right?

kindred abyss
#

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

karmic niche
#

Since you're mentioning Process.Start, does that mean that you want to run that in a separate process?

kindred abyss
#

probably as it's a discord bot

karmic niche
#

And then comunicate with it, somehow

kindred abyss
#

communication not needed

#

just getting the damn thing to run ๐Ÿ˜…

karmic niche
#

b-but how are you going to shut it down, then? ๐Ÿ˜„

kindred abyss
#

when the server shuts down ๐Ÿ˜„

karmic niche
#

But since it's a separate process you'll have to kill it yourself

kindred abyss
#

oh
i see

#

immortal discord bot then ๐Ÿ™‚
just kidding, not actually got a clue; any suggestion?

karmic niche
#

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

kindred abyss
#

(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)

kindred abyss
karmic niche
#

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

kindred abyss
#

There's no entry point for extension shutdown though isn't there? Or am I misunderstanding you

karmic niche
#

Although I don't think that you'll ever get a notification of an extension being shut down, in the first place ๐Ÿค”

karmic niche
#

I think I talked about that with dedmen and he said he doesn't plan on adding that

kindred abyss
#

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

karmic niche
#

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

kindred abyss
#

how would you call it with the arma3.exe PID? thonk can't see anything in process.start method docs

karmic niche
#

arguments

#

Like from the commandline

#

Although, tbh it would be cleaner if you used regular IPC (inter-process communication)

#

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

kindred abyss
#

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

karmic niche
#

Then just use that Stackoverflow's link above to pass that command to the "child"

glossy inlet
#

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?

orchid shadow
#

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

glossy inlet
scenic canopy
#

Thatโ€™s actually quite funny ๐Ÿ˜›

glossy inlet
glossy inlet
glossy inlet
karmic niche
# glossy inlet Yeah I think that bug existed at least once upon a time. But when I checked... ...

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 โ˜ ๏ธ

glossy inlet
#

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 blobcloseenjoy
I shall just trust my past self derpWolf

karmic niche
#

That was the discussion

glossy inlet
#

Ah unique symbols compiler special sauce thingymabob

karmic niche
#

Yeah... ๐Ÿ˜ฉ

#

Anyway, what whas it that we were discussing? Oh yes: programming sure is fun fun fun! ๐Ÿคช

karmic niche
#

(btw I now need to check how my library behaves on linux... ๐Ÿ˜ฌ )

glossy inlet
karmic niche
#

I rewrote that file lookup stuff last year to binary search
Oh, didn't know that. I wrote my pbo lib years ago.

glossy inlet
#

Well it should work the same so it shouldn't matter ๐Ÿคž

karmic niche
#

there can't be multiple matching ๐Ÿค”
There can, you just create several entries with the same name ๐Ÿ˜›

glossy inlet
#

I think it went into public build in 2.10

glossy inlet
#

Have fun i guess ๐Ÿ˜„

karmic niche
#

Tbh I have never actually tested that either. Wasn't interested, but noticed that there was no way to prevent doing that

glossy inlet
#

You might also get different behaviours intra and inter pbo with dupe names

karmic niche
#

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 ๐Ÿ™ƒ

glossy inlet
#

Should've added encryption support to sqfc xD

karmic niche
#

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 ๐Ÿคทโ€โ™‚๏ธ

glossy inlet
#

It is translated from old assembly so you can infer what will come out based on what you put in but.. eh

karmic niche
#

No, I mean, it actually (finally ๐Ÿ˜› ) looks like proper assembly, so it may be possible to write a disasm module for that

glossy inlet
#

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

karmic niche
#

However, I know only what I can see on this Discord so maybe my view of it is skewed

glossy inlet
#

The majority of it is still "execute that command" instructions. But the data structure is like real asm instead of pointer chasing everywhere.

karmic niche
#

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

glossy inlet
#

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)

karmic niche
#

(as I don't see any actual useful purpose for making a disassembler module for the new vm ๐Ÿ˜„ )

kindred abyss
glossy inlet
#

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

karmic niche
#

That's basically what i said at the start ๐Ÿ™‚

scenic canopy
#

Could also check parent process at startup, check if arma binary or running as standalone

#

Or just do socket / shared memory communication

kindred abyss
scenic canopy
#

Pick one with arguments

kindred abyss
#

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?

karmic niche
#

Literally nothing more

kindred abyss
#

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?

karmic niche
#

You could do that as well.
...until you start running two servers at once on one physical machine ๐Ÿ˜„

kindred abyss
#

oh yeah, fuck
but how would i know the arma process is the correct one and not someone else's server by using PID? thonk

#

oh wait because its running on the same thread or w/e innit

kindred abyss
#

ok, last thing, i promise meowsweats
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 ๐Ÿ˜…

scenic canopy
#

Check if pid is running arma binary

kindred abyss
#

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

karmic niche
#

Checking a PID every second shouldn't really be "overkill"

kindred abyss
#

i meant on a seperate thread but i think im used to poor memory allocation

torpid valve
#

no I don't do that...

torpid valve
kindred abyss
#

yeah ive got it working perfectly now

torpid valve
#

Then just pass it as an arg to the exe

#

Ok

kindred abyss
#

thanks though ๐Ÿ˜„

robust vessel
#

@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?

torpid valve
#

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)

robust vessel
#

i was more in the line of "is it's not a me-problem i should probably ping Ded" ๐Ÿ™ƒ

torpid valve
robust vessel
#

interface not bugged, but no contents

glossy inlet
#

yes you should probably ping ded
and someone somehow tell me which configClasses/configProperties lookup is failing

torpid valve
robust vessel
#

after reload it shows root configs, but nothing is selected

torpid valve
#

what if you try again? from 3den?

robust vessel
#

if i close config viewer and right-click - find again - i get the empty window again

torpid valve
#

and if you reload and check the hierarchy is it still empty?

robust vessel
#

same 0-deep result. Switching to release branch fixed it. Switching back to dev broke it again meowsweats

torpid valve
#

it could be because configName is broken? well there were some changes to config str thing lately

#

but it was just str config iirc

robust vessel
#

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)

torpid valve
#

I'm sure I don't make any "index out of range" mistakes

#

and I use param when I'm in doubt ๐Ÿ˜…

robust vessel
#

ah, yes, that's from variable watch, disregard me in this part

torpid valve
#

did you try expanding the trees and scrolling a bit?

#

if that part is broken it means the scheduler is broken

robust vessel
#

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.

torpid valve
#

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?

robust vessel
#

["","configFile","configFile/CfgVehicles","configFile/CfgVehicles/C_man_casual_7_f"]

torpid valve
#

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

robust vessel
#

you'd laugh but i was having nearly identical code in the next tab from my own digging ๐Ÿ™ƒ

torpid valve
#

I guess inheritsFrom is broken or something

torpid valve
#

but I have no idea what's exactly broken there

robust vessel
#
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,[""]]
``` ![meowsweats](https://cdn.discordapp.com/emojis/707626030613135390.webp?size=128 "meowsweats")
torpid valve
#

so I guess configHierarchy is broken

robust vessel
#

configHierarchy (configFile/"CfgVehicles"/"C_man_casual_7_f") returns []. What's the expected result?

torpid valve
#

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"]
robust vessel
#

example from wiki returns empty array as well meowsweats configHierarchy (configFile >> "CfgVehicles" >> "Car"); this one

torpid valve
#

so that confirms it then ๐Ÿ˜…

robust vessel
#

"gib ticket" in 3..2..

torpid valve
#

well I thought you were gonna create it yourself but I made one anyway ๐Ÿ˜…

robust vessel
#

i've checked after like 10 minutes if you'd create one and only started filing mine after that blobdoggoshruggoogly

torpid valve
#

same ๐Ÿคฃ

#

blames it on lack of coordination

robust vessel
nocturne basin
#

New vm? What did I miss?

robust vessel
#

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.

glossy inlet
#

Doesn't really explain the array index thing though, this wouldn't cause that?

glossy inlet
robust vessel
#

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 blobdoggoshruggoogly

torpid valve
#

it's probably related to the VM

glossy inlet
#

Its a engine error, script should never be able to even get so far

nocturne basin
#

So thats why we stack-trace now

#

Can we get functional try-catch too? ๐Ÿคฃ

robust vessel
#

isn't that kinda already there with script exception EH?

nocturne basin
#

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 ๐Ÿ˜‰

robust vessel
#

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 meowsweats

glossy inlet
glossy inlet
#

its stack trace

#

but not related to new VM

nocturne basin
#

ohh
okay

glossy inlet
#

that has been there for quite a while

nocturne basin
#

Never noticed as my scripts are too small rn ๐Ÿ˜„

robust vessel
plush copper
#

So if I set the Foreground color of a listview it doesn't actually change the color of the items in the listview?

silent trellis
#

Items in a listview are their own object

#

ListViewItem iirc

#

Modify the properties of those objects

plush copper
#

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

plush copper
#

How would I launch A3 with BE enabled?

#

๐Ÿค” dumb question to ask... Maybe launch the arma3.exe that says battleye ๐Ÿ˜‘

silent trellis
#

omfg i've just discovered Web Workers

#

So much work needlessly done...

#

fml

tranquil cipher
#

Link for download is dead

#

Made by Flea, had source available.

silent trellis
#

If you want a console PBO tool have a look at SwiftPBO

tranquil cipher
#

Thanks

limpid sky
#

can someone please help me troubleshoot this? its for mikero tools

proud heart
#

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

dawn palm
#

@limpid sky use the aio installer

prime badge
#

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?

sly skiff
prime badge
#

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?

sly skiff
#

dont recall if arma3 tools came with it but Ive used irfanview

neon flax
prime badge
#

nice, seems like both work

#

thanks guys

#

the first few files i made

narrow bough
#

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

silent trellis
#

Unlikely?

smoky halo
#

there is a 32bit paa plugin?

sinful crescent
#

the old half-broken one by kegetys?

smoky halo
#

wasnt that a little buggy?

toxic relic
#

why do you need a paa plugin anyways?

silent trellis
#

I'd hazard a guess that he wants to open and save PAA files in photoshop

toxic relic
#

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

crimson beacon
#

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
scenic canopy
#
subst p: /d
subst p: d:\

would make your entire D: also be available as P:

crimson beacon
scenic canopy
#

run this first, then arma3p

crimson beacon
# scenic canopy 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-...

โ–ถ Play video
crimson beacon
#

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 ?

scenic canopy
#

add the bat script to your autostart items

crimson beacon
#

this script ?
subst p: /d subst p: d:\

dawn palm
#

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

crimson beacon
#

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

scenic canopy
#
subst p: /d
subst p: d:\my_p_drive
#

Press Windows key and R, type shell:startup, press enter

#

Add the script there

crimson beacon
#

Thank you very much. It fixed my Problem. Also I am sorry for not understanding at the first.

frozen meadow
#

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

glossy inlet
#

Can't look at data that you don't have ๐Ÿค”

karmic niche
#

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

scenic canopy
frozen meadow
scenic canopy
#

it's stored in the manifest that steam fetches from their cdn

karmic niche
# frozen meadow yea just a manifest with the pbos and it weigts, just to add them and have the r...

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

GitHub

๐Ÿคธ Take control of Steam from your terminal. Contribute to ValvePython/steamctl development by creating an account on GitHub.

frozen meadow
karmic niche
#

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

scenic canopy
scenic canopy
karmic niche
#

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 ๐Ÿค”

scenic canopy
#

the one you linked defaults to web api with fallback to steam pipe for workshop ๐Ÿ™‚

karmic niche
#

Oh, I always thought that steamctl was merely an application built on top of the steam library (second link)

frozen meadow
#

yep, i only can handle python lol

scenic canopy
karmic niche
#

Why, though? think_turtle

willow nebula
#

Is there a way to load the Arma 3 Launcher with a specific preset with command line options?

karmic niche
frozen meadow
#

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 meowawww

neon flax
#

http blobunamused

karmic niche
karmic niche
#

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

frozen meadow
frozen meadow
kindred abyss
#

breaks if you load a html with local mods in btw notlikemeow

karmic niche
#

Literally unusable!

kindred abyss
#

ikr, completely ruined

#

in all seriousness though, very useful and very nice ๐Ÿ™‚

karmic niche
spring anchor
#

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.

sly skiff
#

You don't need cba there
, you can refer to it through requiredAddons array in cfgPatches class of your config

spring anchor
sly skiff
#

Do you use the macros?

spring anchor
#

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

sly skiff
#

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...

spring anchor
#

Okay.

sly skiff
#

Your data would preferably be in p:\yourProjectTAG\folders/files

spring anchor
#

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

rough grove
rough grove
spring anchor
#

I set up a P drive just so I could do this D:

silent trellis
#

@orchid shadow will SwiftPBO compile with Mono?

orchid shadow
#

Ya

silent trellis
#

No Win32 APIs used?

orchid shadow
#

Nay

silent trellis
#

Good news, ty

orchid shadow
#

Might need higher then like 3.5

silent trellis
#

That should be fine

orchid shadow
#

4.0 > is most likely best

rocky canyon
#

I got a question dont know where to ask but is it normal that steam hides my Published Mod until its validated ?

scenic canopy
#

If you havenโ€™t accepted latest EULA or if your account is flagged because of breaking rules in the past, yes

rocky canyon
#

I dont have a flagged account so far i know

frozen meadow
scenic canopy
#

different domain and port, hello CORS!

frozen meadow
scenic canopy
#

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

frozen meadow
#

apache2

scenic canopy
#

I am truly sorry for your lots crycat

frozen meadow
scenic canopy
#

but you should be able to do it with ProxyPass plus ProxyPassReverse

frozen meadow
#

i ve this on the virutalhost 443 of tools.flyingtarta.conf

    ProxyPass /api/ http://localhost:5000/
    ProxyPassReverse /api/ http://localhost:5000/
scenic canopy
#

make sure it's just /api and not /api/

#

or you can use a location block

#
  <Location /api>
    ProxyPass http://localhost:5000/
  </Location>
frozen meadow
#

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?

frozen meadow
#

but there is no hit in the api

scenic canopy
#

does your flask app expect /api or without the prefix?

scenic canopy
frozen meadow
#

@app.route('/api/modweight', methods=['GET'])
yep is specting a /api/

scenic canopy
#

ah, apache is cutting it off

#
  <Location /api>
    ProxyPass http://localhost:5000/api
  </Location>
frozen meadow
scenic canopy
#

try that

#

inside

frozen meadow
scenic canopy
#

dont use both location and proxy pass outside ๐Ÿ˜„

frozen meadow
scenic canopy
#

apache log should say what it tries to request

frozen meadow
#
[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'
frozen meadow
# scenic canopy apache log should say what it tries to request

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 -
scenic canopy
#

because your python server expects http request

frozen meadow
scenic canopy
#

apache handles TLS termination since the certs are configured there and the proxy call is set to use http

frozen meadow
#

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

frozen meadow
scenic canopy
#

that won't help ๐Ÿ˜„

frozen meadow
#

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 meowsweats

<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 meowheart

frozen meadow
#

well... this is right, just need to clear the cache of the browser ๐Ÿ™‚

scenic canopy
#

nice ๐Ÿ™‚

neon flax
#

feature request, make it support drag&drop

hasty trench
#

What's up. I'm trying to binarize a model but I'm getting "Build error. Error code 1"

#

How can I fix it?

hasty trench
#

Nvm fixed it

#

It was because the folder had a space

quick portal
scenic canopy
#

the actual data is only kept in the steam cdn workshop manifest files

frozen meadow
frozen meadow
#

with that you can access the value, is what the api i made does ( but is in the same server as the page blobdoggoshruggoogly )

PD: is already up again ๐Ÿ˜„

quick portal
scenic canopy
frozen meadow
quick portal
#

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?

frozen meadow
quick portal
#

Yea seems to work great. Thanks, gonna have fun with this

scenic canopy
#

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

quick portal
#

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.

scenic canopy
#

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

quick portal
#
{'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 notlikemeow

scenic canopy
#

current version is 2.11.0 so likely those are from old uploads ๐Ÿ˜‰

quick portal
#

yea, saw that as well

#

kind of weird that it doesn't overwrite them

scenic canopy
#

from memory they are part of the item, not the current manifest

#

but I might be wrong there

quick portal
#

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?

scenic canopy
#

I'd be more worried about mods adding a lot of files ๐Ÿ˜„

frozen meadow
opal mist
#

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 ๐Ÿ˜„

pearl beacon
frozen meadow
#

CatCoffee I hope Google approves me this time.

karmic niche
#

What does Google have to do with mods on Workshop? think_turtle

whole flume
#

Probably a good chrome extension to see the mod weight size

karmic niche
tawny island
whole flume
frozen meadow
#

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) ๐Ÿ˜„

tawny island
#

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

frozen meadow
grand dagger
#

@pearl beacon Very cool. Great job!

pearl beacon
#

Thanks go to all the contributors, have fun with it :)

silent trellis
#

WTB SQF linter

inland flare
#
Bohemia Interactive Forums

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...

small vault
whole flume
#

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

autumn edge
#

Is it not possible to create a new LoD with o2script?

Not copy and existing and rename.
Create a new.

autumn edge
#

@glossy inlet Sorry for the ping but is this up your alley at all?..

glossy inlet
#

I know enough to say "I think so, probably"
but can't tell you how. I only messed with O2 oence to generate proxies

autumn edge
#

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.

glossy inlet
#

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

autumn edge
#

Kk. Hidden until I can add the direct links.

autumn edge
eager cloak
#

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

eager cloak
#

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

scenic canopy
#

what's the bisign filename?

eager cloak
#

bisign: overthrow_main.pbo.overthrow_community_2.3.0.0.bisign
bikey: overthrow_community_2.3.0.0.bikey

opal mist
#

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

robust vessel
#

buildingPos can return single coordinates arraybor array of arrays. createUnit can return object or nothing. select is a nightmare in that regard...

opal mist
#

Sounds... bad ๐Ÿ˜…

nocturne basin
#

This one even has technical aid for what is available in dev branch with creazeHashMap by syntactic sugar

opal mist
whole flume
#

ah yeah I see it now

#

I don't know why no one has targeted the bytecode yet

zealous rampart
#

Hey guys, have someone a blender rig for driver models?

nocturne basin
nocturne basin
whole flume
#

ah so, the bytecode isn't exposing the underlying game value functions

#

that sucks

glossy inlet
#

Bytecode lets you write SQF assembly directly

#

but SQF assembly isn't that nice really

robust vessel
#

make another another VM with nicer assembly, call "Alternative Interpreter", ship as "AI improvements"

karmic niche
#

And then call it NicerVM

frozen meadow
#

AI enhanced VM ( i just asked chatGPT a few things to build it )

pearl beacon
nocturne basin
#

uhm ... reverse engineering those lil code passages should do it

silent trellis
#

"assigned"

#

Oh I was expecting it to be years old

#

Only assigned in sept

frozen meadow
#

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?

dense cove
#

Nitpick, but change โ€œReal Mod weightโ€ to โ€œReal Scenarioโ€ or โ€œReal Compositionโ€ depends on the type might be an idea

karmic niche
#

Or use "Real weight" instead and ignore the type completely ๐Ÿ™ƒ

dense cove
#

This yeah

vital stone
#

Does anyone have a FULL skeleton config including all the bones mikero's tools now report as missing?(e.g SLOT_BackWpnL, CHeek_LF)

frozen meadow
karmic niche
opal mist
#

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?

sly skiff
#

soz sturm was supposed to ping @vital stone

#

you must not export any extra bones into your rtm

opal mist
torpid egret
#

Why restrict it to VSCode? I feel like it could be a command line tool so anyone can use it regardless of IDE.

chrome ocean
#

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?

glossy inlet
#

You should be able to compile Hemtt on Mac. But don't think they have pre built binaries

scenic canopy
#

mikero tools should work as well

#

though the mikero tools mac binaries are probably not publicly available, let me know if you want them

hidden mist
#

@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

untold canopy
#

We have plans to set up a more generic version of the ACE tools @hidden mist

hidden mist
#

Ohhhh, looking forward to that

untold canopy
#

Porting the tools over to a different project is actually pretty easy to do as well.

hidden mist
#

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 :)

untold canopy
#

Yes. What would be awesome if some kind of generated build script.

snow burrow
#

โค

orchid shadow
#

Finally starting to pull all this awesomeness together.

thick matrix
#

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

pearl beacon
#

@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

sly skiff
autumn edge
#

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.

dense cove
#

@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

frozen meadow
hidden mist
#

@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

pearl beacon
#

๐Ÿ‘

frozen meadow
worn anchor
#

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

zinc lynx
#

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

karmic niche
#

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>

zinc lynx
zinc lynx
#

ok the problem wasnt on the .is_directory() check, it was on the path notlikemeow redchain thanks anyways for the explanation stack

quartz thorn
#

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

glossy inlet
#

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

sick verge
#

If you is_directory on them directly, they probably still return false though

opal mist
#

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).

https://github.com/Ezcoo/team-balancing-arma

frigid mesa
opal mist
#

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)

gritty radish
#

you could try to go AOT for unmanged exports to get this linux compile ready

opal mist
# gritty radish 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) ๐Ÿ™‚

frigid mesa
# opal mist Here's an example of an Arma extension that implements intelligent/self-learning...

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.

opal mist
#

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

neat lantern
#

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

vague shard
#

might be a permission problem?

#

(run as admin on the exe)

neat lantern
#

when i run Arma 3 Tools as admin its gets stuck on a weird loop@vague shard

vague shard
#

@neat lantern probably best to reach out to them on their discord directly

sly skiff
#

Find PMCwiki P drive mount guide

neat lantern
#

ho, yeah Thank you Goat ^u^ will try that

wet frost
#

So when a mission file gets packed into a pbo, is it just zipping the folder?

dense cove
#

What do you mean? Do you mean PBO == ZIP?

wet frost
#

Nevermind. Im asking a stupid question

elfin oxide
frozen meadow
#

i had once converted the folder to zip, and change it to .pbo
For some reason the server didnt like it

karmic niche
#

For those that know linux, I'd rather compare it to a .tar file with an optional .gz

wet frost
frozen meadow
#

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 ๐Ÿ™‚

scenic canopy
#

XHTML would use trailing slash, otherwise no

karmic niche
#

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 ๐Ÿคทโ€โ™‚๏ธ )

scenic canopy
#

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

karmic niche
#

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

scenic canopy
#

yep, xml enforces it

karmic niche
#

In that alternate form, of course

scenic canopy
#

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

robust vessel
#

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 ๐Ÿคฃ

nocturne basin
#

What parser framework?

#

And what for?

robust vessel
#

treesitter. Just to try it out, i guess. With "good enough" goal being minimally usable SQF syntax highlight in neovim

frozen meadow
scenic canopy
frozen meadow
scenic canopy
#

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

nocturne basin
#

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...

frozen meadow
#
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

scenic canopy
#

yep, that would delete it

nocturne basin
#

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

scenic canopy
#

it works because the first line is the xml declaration ๐Ÿ˜„

#

but the bom removal code also works

steel crater
#

do we have a tool to generate a stringtable.xml from a initSettings.sqf?

nocturne basin
#

don't think so