#arma3_tools

1 messages ยท Page 15 of 1

dawn palm
#

not sure if i can or can't ! i just went thru all the commands and cherry picked all that can only produce constants

#

my only interest in sqXshit is the damage bis can do with exec and eval in configs.

glossy inlet
wind elm
#

"functions": { ๐Ÿ˜ญ

forest trellis
#

Thanks a lot!

glossy inlet
#

Thank Arma.Studio for that ๐Ÿ˜‰ WIthout it I would have never written that code

smoky halo
dawn palm
#

Welcome to Hell.

pboProject updated to stop, cease and desist, if bis binarise lists errors in it's log.
warnings are warnings. Errors are stop.

pboProject now checks worldname = nameOfWrp = cfgWorlds.NaneOfWrp = cfgWorldsList=NameOfWrp. If not, your save games won't.

MinForestSquares and friends fixed by specifically looking for the appropriate config. If pboProject can't find it, it's up to you to tell it where it is.

pboProject now fills the binlog from bis binarise regardless of 'noisy'

#

generally, only a full build will reveal p3d errors with bis binarise

dawn palm
#

Cutscenes if present in a wrp pbo are 'warnings-are-errors'. You condemn your map to only work when these 'vehicles' are available.

elfin oxide
#

๐Ÿ™‰

glossy inlet
#

if bis binarise lists errors? So that will break TFAR builds. Because Default bis binarize also binarizes the configs and fails on all my macros and throws an error. But Mikeros preprocessor works just fine on them. And binarize is only used for the models anyway but for some reason also tries to preproc configs...

dawn palm
#

binarise dies a death with nested #ifdef/ndefs. Been broken since ofp. I have changed 'errors' in the binlog to warnings-are-errors in the dll. I may have got a little too enthusiastic with this, forgetting who I was dealing with.

glossy inlet
#

Problem is binarise is reporting these errors that really are no errors. Because it's processing files that it shouldn't even process. If that will cause pboProject to consider the whole packing process as failed because of that. It would become useless for me.
My preference would be to just don't let binarise preprocess the config. Because that message box that pops up also breaks my CI builds

dawn palm
#

my preference too.

#

caught in that traditional rock and a hard place. if I only warn of errors the user simply will not fix them. preferring instead to fill forums with 'why doesn't it work'

#

I've pretty much prevented binarise looking anywhere else other than the project folder when making maps. I wasn't aware of it reading any config.cpp at all when packing p3ds. previously it did not, if the bin was a later date

forest trellis
glossy inlet
#

yes

#

Isn't that in my dump? should be

#

only operators have it

#

But you could probably do them manually.. There are only a few

#

Oh yeah.. It's not in the dump

forest trellis
#

๐Ÿ˜ƒ

#

I asking because one thing is to have them manually, another is to have a systematic way of building them. The latter is easier to maintain

glossy inlet
#

I'll rebuild the list.. Gimme a min

forest trellis
#

awsome. Thanks a lot. If you have a link to the script that you use to build it, let me know so I add to my source code, so the steps are reproducible by others.

dawn palm
#

this awful language has no precedence 'rules' you can stick to.

a op b op c op d op f
depends entirely on what op is, and to a lesser extent what a,b,c, are. you have to know in advance if an op is a binary or unary operator, and bis will add new ones when it suits them. which is why, with a lexical parser, you need to constantly maintain and update a 'dictionary' of verbs.

glossy inlet
#

Could also do that with Intercept if you modify it a little

#

There are only a few operators that have higher priority than the rest

dawn palm
#

having said that, i agree with dedmen's url above

#

it's not a question of higher, it's a quesiton of discovering if a verb, eg an op, is a binary or unary.

#

since bis can add them and do, at any time that suits them, you are permanently in deep doo doo trying to keep up.

glossy inlet
#

Except if your Parser has access to a Debugger that can give the parser all that information from my dumps at startup ^^

#

But that's really just integrated self updating

dawn palm
#

a op1 ; // unary
a op2 b // possibly binary

forest trellis
#

@dawn palm, the problem of the gramar/verbs is solved long ago. I'm already at the point of finding errors in mods (e.g. Exile), and fine-tune the analyzer for edge cases (like unknown precedences)

glossy inlet
#

fun fact.
a op2 b // possibly binary is always binary for Arma. a is evaluated at runtime whether it's a variable or a nular

forest trellis
#

(mostly thanks to @glossy inlet full list of words)

dawn palm
#

that' s true

glossy inlet
#

Which is a several months old performance bug report that didn't get much attention yet.. Same as the thing about recompiling eventhandlers before every execution...

#

Got the feeling BIS is like never touch a running system about the SQF backend. It worked well since OFP so why touch it? ^^

dawn palm
#

well, the thing is, when bis introduce a new command (operator/verb) called 'apples', what can a lexical parser do about it?

forest trellis
#

obviously the parser has to be updated with new functions. That is true for any programming language... supportInfo allows to get that list; Dedmen is able to compile the return types and precedences

dawn palm
#

no, it's not true.. you don't have to 'know' what a command/verb/operator is to understand in c that result= function( .....)

#

eg you can create a reasonable lint checker. which is what it's all about.

forest trellis
#

that is because the operator = has a very low priority. If apples has lower priority than =, then you do not understand result = 1 apples 2

#

the point being: knowing precedence is a necessary condition for a good checker

dawn palm
#

indeed. and the precedence rules change with bis each time they introduce something new. it can mean pi , rad+60, or var select 3

#

so , you need a dictionary of what each 'verb' is, starting with 'and' and ending with 'zebra'

forest trellis
#

sure, but BIS functions are also affected by a change, and they need to be changed accordingly. Thus, BIS needs to be very careful when decide to change anything in SQF, or risk breaking their own code.

dawn palm
#

bis? carefull ? are we on the same planet?

#

obviously the parser has to be updated with new functions

which, more or less is the story of Squint. sbsmac got tired of updating it every single week.

#

I'm in a luxurious position, that bis are unable to break verbs that produce constants (and can't change the rules on me)

forest trellis
#

I am missing your point: are you persuading us to not pursuit this? are you telling us that your approach will work forever? That BIS breaks things a lot?

pearl beacon
#

but you don't have to update it every single week, just on big updates, and all that can even be automated

dawn palm
#

i'ts good to see people making any attempt to tackle this.

#

'my approach' has no relevance outside of exec evals in paramfiles (desc.ext, config.cpp, bisurf)

dawn palm
#

pboProject/makepbo/dll

Bis Binarise is now prevented from ever reading a config.cpp (except for a rarely used wrp option)
The days of ctd's from legal, trailing commas in arrays, legal, superflous semicolons, and screwed up ifdef/ndef pairs are over.
Infamous 'error 3' and 'error 23' can no longer happen.

You can now safely write 'proper' configs without risk or annoyance.

forest trellis
dawn palm
#

very nice. congrats.

forest trellis
#

There is still a minor issue with precedence, but already checks the full source code of Exile with only one false positive for a bunch of true positives (mostly missing privates). It helped finding a wrong while () do {} in Exile's source code, so it was already helpful for a community.

dawn palm
#

indeed. And, have you corrected the many mistakes in the desc.ext?

#

notably, the mis-use of a config.cpp ?

#

the obsolete (potentially dangerous) array[]={one;two;{three;};};

#

one other howeler that i can't remember at moment, but it's present in about 40 lines of code

forest trellis
#

I am not following, @dawn palm; this only parses sqf code.

dawn palm
#

ok.

#

it's good stuff. exile mod is one of the better ones, but suffers from some nasty mistakes in it's coding. your work is important.

pearl beacon
#

I'll run the linter through ACE3 and ACRE2's code @forest trellis in a bit or tomorrow

#

what do you use to run through all the SQF files in specific folder?

dawn palm
#

welcome to hell:

pboProject now correctly binarises NON human rtm (anim files). It also checks that binarise can, in fact, produce binarised rtm for any unbinarised. If not, you have some_work.cfg to do ๐Ÿ˜Ž

vague shard
#

@dawn palm i dont quite understand. was it broken before or just not done? (we have all our rtm already binarized, so dont have much experience with that)

dawn palm
#

prebinarised is not affected. yours come from ifa directly and they were binarised during that development. You can, if you wish, convert these back to plain jane, from their existing arma2 binarised format and then rebinarise them to the greatly improved (read faster) arma3 format, using deRtm (gui)

#

what pboProject wont, now, tolerate is UNbinarised rtm in the output pbo. It's a clear indication of some seriously wrong input.

#

you've already been partly thru this cycle, because your original ifa binarised rtms were unusable in a3 due to the 'wrong' skeleton. So you used deRtm to make them usable in a3 by stripping the head bones.

#

it would have taken a leap of imagination from bis to call the new skeleton ofpTHREE_manskeleton and solve all problems that they caused for themselves, let alone us.

vague shard
#

cheers ๐Ÿ‘

vague shard
versed kernel
#

nope

glossy inlet
#

No. I'm building my stuff on Appveyor

#

But from the screenshots it looks awsm

scenic canopy
#

yes

#

it very annoying to test locally ๐Ÿ˜›

vague shard
#

hm jonpas said a while ago ACRE uses jenkins, so does it not (no longer)?

scenic canopy
#

the old way still works

#

our pbo builds are using the "old" freestyle builds and invoke our gradle build pipeline

#

but our ingame autotests uses the new pipeline build but also invokes our gradle pipeline

#

both are shown in the new "blue ocean"

#

since we have our entire pipeline in gradle it doesn't matter for us how we start them as long as all dependencies are present

#

we also tested using teamcity

glossy inlet
#

@pearl beacon

pearl beacon
#

Yes we do

#

Why?

glossy inlet
#

Blue ocean thingy

pearl beacon
#

Idk, we don't use that yet afaik, can check later

karmic niche
#

Since you're talking about AppVeyor - Does anyone know of a trick to "merge" two artifacts for a concrete build set?

I can make two zipfiles that contain:

  • PBO files + x86 DLL (x86 build artifact)
  • PBO files + x64 DLL (x64 build artifact)

And I would like AppVeyor to produce me a zip file containing:

  • PBO files + x86 DLL + x64 DLL

Is this possible at all or do I have to postprocess AppVeyor artifacts?

#

I thought about using AppVeyor permanent storage to keep dlls between builds (since x86 and x64 builds are done separately) but the order of the builds is not deterministic, so doing that would not be safe, I think

glossy inlet
#

I'm using custom buildscript. And just build x64+x86 in one build

sonic geode
#

@vague shard thanks for the tip, will investigate

pearl beacon
#

doing x64+x86 build in one go? CMake or not?

hallow rapids
#

you can't do 32 and 64 bit builds in one go

#

but you can have a script that does one after the other ๐Ÿ˜›

pearl beacon
#

well that's what I do ๐Ÿ˜›

#

but @glossy inlet said "in one build" so ยฏ_(ใƒ„)_/ยฏ

hallow rapids
#

and he said "I'm using custom buildscript" before that ๐Ÿ˜

pearl beacon
#

ah I see what he meant now

karmic niche
#

Good thing that I already understood what he meant before you guys started to "help" ;P

glossy inlet
pearl beacon
#

1.-1.0 version xD

robust bison
#

Shit, Jenkins Blue Ocean looks really good

dawn palm
#

nasty error introduced for pboProject in 1.98. it can corrupt your config.CPP. fixed @1.99
(credit, eggbeast and TeTet)

#

missing file summary (at end of job) now lists rapify missing files too. it should have, it didnt'. (credit lappihuan)

#

bisign names, produced correctly (again). Credit Tetet.

#

I hate them all. ๐Ÿ˜Š

scenic canopy
#

thanks ๐Ÿ˜ƒ

hard locust
#

mikero in pboProject.Fixes.txt you have 1.98 listed twice ๐Ÿ˜›

cold slate
#

WoW

dawn palm
#

eek!

#

thanx, fixed. only too pleased that people RTFM!!!!!

cold slate
#

@dawn palm Wow Mikero, get your head in the game mayun.

dawn palm
#

600+ revisions to the dll over 12 years ain't a bad effort. ๐Ÿ˜Ž That averages 1/week

cold slate
#

Wow, that's actually pretty fucking good.

dawn palm
#

or sad, depending on your point of view

cold slate
#

ยฏ_(ใƒ„)_/ยฏ

forest trellis
#

Need some help: in the SQF parser, I am planning to parse #include by visiting the file and parse it. However, I am not sure what is the search strategy.

Specifically, in a file /addons/x/fnc/t.sqf with a statement #include "include.hpp", where will the engine search for "include.hpp"?

vague shard
#

in the local/relative folder

#

you can use proc mon and filter for arma3.exe to see what locations it tries to access/read from

#

@forest trellis

#

there is also
include "subfolder\file.ext"
include "\absolute\path\to\file.ext"

dawn palm
#

in the same folder is the answer

#

as Q haas said, the lack of a preceding \ means it's relative to the <current dir>

vague shard
dawn palm
#

i saw that <grin>

#

desc.ext includes (probably not sqf includes) are also subject to some insane crap where if it's a campaign, the relative path also searches for a ~\sounds folder, and all missions can look for a path relative to ~arma3.exe

forest trellis
dawn palm
#

first things first. because it's in an addon (not a mission.pbo). standard rules, standard conventions apply. that's a \hard\address in the pbo prefix name space.

#

in fact. (kju might correct me on this point, we went thru this nightmare together) , any \hard\address, is a \pbo\prefix

#

mission.pbo's do not have prefixes

#

mission addons do have prefixes.

#

welcome to hell.

forest trellis
#

ok, so the path changes depending on whether it is a mission or an addon. That is not good news for me since from the path of the script I would have to guess whether it is a mission or addon

#

Will have to think about this; anyway, thank you all for the help!

dawn palm
#

basically, you have to maintain two dir references. where you came from (former dir), and where you are now (current dir). Each time you get an include (and end the include) you have to update them.

#

you're fairly safe using standard relative vs hard\addressing calculations. (accounting for things like dot/slash and ../)
for the idiotic phantom 'default' places like ~arma3.exe\ and ~sounds\ i just wouldn't bother. If they want to use your lint-checker, then they can stick to the rules you impose.

vague shard
#

there is also dialogs. maybe best to ignore desc.ext for now

dawn palm
#

nice find Q. nice url, but it doesn't account for alternat default locations such as arma3.exe\think_if_wednesday. or IsCampaign? desc\sounds : !isAddon? sounds : nul

#

MikeRo thanks his goat god, that he never goes near this stuff.

cold slate
#

All that is thrown towards the mission config i believe.

#

I believe its compiled in scheduled or something

dawn palm
#

not really. it's generally a precompiled, binarised, mission.sqm that's inside a pbo. Except bis managed to break it in addons, so that mission.sqms in addons must be plain text.

#

the 'scheduler' (for want of a better word) concerns itself with pause and spawn and wait, for sqf loops. and sqf isn't anything to do with mission.sqms which behave like config.bins, in as much they are baked in concrete at game start.

#

(which is why you can pre-binarise the damn things)

karmic niche
dawn palm
#

i think i put them on maverick for that reason

#

snakeman also has a mirrror

karmic niche
#

Cool, thank you. You may want to update the wiki with the current links

dawn palm
#

๐Ÿ˜Š

hallow rapids
#

aww did withsix kill their dev thing? ๐Ÿ˜ฆ

dawn palm
#

doubt it, but it seems to be very unreliable, which is the reason why I moved my files to Maverick, who, btw, have been excellent.

karmic niche
#

Which part of site is "yours", @dawn palm ?
Only /MikerosDosTools or the whole armaservices subdomain (with those obfusqf, etc...)

wind elm
#

Optix and Arkensor run that page.

native kiln
#

@karmic niche Only the mikero page

dawn palm
#

Broadly speaking, obfusqf is server based and mine are addon based. We share our technologies where they are mutually beneficial.

#

Of the two I would say obfusqf serves the needs of mission makers 'better' whearas mine concentrate as an entree into good coding practices.

orchid shadow
#

Talking about standards, lets talk about pbo headers :)

forest trellis
rigid frost
#

hey @dawn palm , the last update of pboproject stops crunching after it checks for the cfgworlds, do i need to do something different in the config because it doesnt give a error or warning

smoky halo
#

if nothing else works, read the documentation ๐Ÿ˜‰

#

header of all the tools

#

unless @dawn palm did not update yet ๐Ÿ˜ฎ

rigid frost
#

i have read the documentation and im still stuck. my config is next to my wrp. in the docu it says that when thats the case "this setting is cleared automatically". But it looks like it clears over the rest of the procedure too because it doesnt give a answer in the logs it just stops.

vague shard
#

name of wrp = class name in cfgWorlds = class name in cfgWorldsList

rigid frost
#

i know but it doesnt work

hard locust
#

I just updated, I get this error there is class map_test.wrp in cfgworlds. think @slow epoch was getting same error

#

think I'll leave packing my main map for the moment

rigid frost
#

@hard locust thats right im having same issue

hard locust
#

I downgraded, while we find out how to fix it. you should have the old installer in Program Files (x86)\Mikero\DePboTools\downloads if you want to do same

rigid frost
#

@hard locust THANKS will do

scenic canopy
#

yeah, half our islands builds fails with same error since update

slow epoch
#

@hard locust I will also do that thanks

vague shard
#

@dawn palm

delicate plinth
#

Anyone here messed with making extensions for arma?

wind elm
#

Just ask your question, there are some ppl reading here ๐Ÿ˜‰

karmic niche
#

Make a small program to load your dll or use Dependency Walker to see why your extension doesn't want to load ๐Ÿ˜‰

delicate plinth
#

I'm still in planning phase of making a mod. Basically what I'd like to do is send player data like positions, kills, shots fired...etc.. to a web server. Now I need some way of sending the data from the game server to the web server. I figured I'd do that with sending either data in a post request or opening a web socket.(still didn't completely figure it out, as I said still in planning phase)

My question is would it completely lag the game server if I did let's say send an update to the web server every second?

glossy inlet
#

no.. If you do it right it won't cause any noticable lag

#

Meaning doing it asynchronous

delicate plinth
#

Alright, wanted to make sure it's even possible before starting. Will come back here once again when I get stuck somewhere. Thanks for the help.

glossy inlet
#

Windows or Linux server?

delicate plinth
#

Current game server we have is on windows, web server is on linux.

karmic niche
#

@delicate plinth Depending on how hardcore you would like it to be done, my guess is that the "state of the art" way would be to dump this data somewhere locally (mysql/sqlite or a queue system like rabbitmq) and then have a worker that would then send this data elsewhere completely independently.

#

But that may be waaaaay overkill for a small project ๐Ÿ˜ƒ

forest trellis
#

or possibly a premature optimization ๐Ÿ˜‰

delicate plinth
#

I'd like it to be able to run on a rented server where people don't have root access to the game server.

karmic niche
#

Premature optimization is the source of all goodness in the world ๐Ÿ˜‰

#

@delicate plinth if you want to keep if very simple, you can try making HTTP calls directly in SQF, without the need for any extension

wind elm
#

dafuq

karmic niche
wind elm
#

take a look (or use) extDB 3 for Database stuff.

delicate plinth
#

@karmic niche Honestly I like C# so I think I'll go with an extension.

#

Dscha I'll take a look. Thanks

wind elm
#

Might be better, than writing your own (why reinvent the wheel. ExtDB works fine)

karmic niche
#

As you wish. It's just that I remembered that my group made a simple "APEX checker" that was checking some classes to deduce whether the player had APEX or not and then called http://ourserver/apex/yes.html if it had it or no.html if it did not.
Simple and effective, and done in 5 minutes.

Then we were parsing the server logs to make statistics.

#

Yes, this should make any normal programmer cry, but we just needed to get it done quick, at the time :).

delicate plinth
#

I don't need to do it quick, it's more of an learning experience to me.

scenic canopy
#

we offload all our AAR events to a queue in the extension and send them in batches

#

to limit the number of concurrent requests

delicate plinth
#

@scenic canopy How do you send them? Sending a POST to a web api or somehow else?

scenic canopy
#

Yep, POST with a json array

#

Store all events as jsonb in a postgres db

delicate plinth
#

Thanks

scenic canopy
karmic niche
#

@scenic canopy since you're here, could you tell me if your AAR solution handles players changing sides during the game?

scenic canopy
#

yeah, they will get updated side value

#

about 20GB of data

karmic niche
#

I'm asking because we have everyone starting as independent and then have a script that assigns players to the right side (round-robin or opposite side than last game played if player played last round)

scenic canopy
#

does it update the side property of the unit?

karmic niche
#

Uhh... I don't really know, actually. I haven't coded that. I'll ask the guy that has made it.

delicate plinth
#

Thanks alot for the links, I'm sure it will help quite a bit.

scenic canopy
#

our focus was to make sure it worked with both linux and windows, both compiling (to both targets) and running

#

the sqf code is quite messy sadly ๐Ÿ˜ฆ

karmic niche
#

I need to learn SQF some day. I will hate myself for doing that, though...

scenic canopy
#

yeah, I did the backend and one of our members did the arma parts a few years ago

#

but no one really wants to improve the sqf parts ๐Ÿ˜„

dawn palm
#

no-one puts 'sqf' on their CV's when looking for a job.

karmic niche
#

๐Ÿ™€

#

Unless you're applying to BI ๐Ÿ˜‰

#

The Only Exception ๐Ÿ˜„

dawn palm
#

they'd ask you "what's sqf?"

scenic canopy
#

would be nice to do the game parts using interceptor

#

and have all the code in c++

karmic niche
#

You mean Intercept?

scenic canopy
#

but that only works with windows currently

#

yeah ๐Ÿ˜ƒ

#

and breaks when the game get's patched sometimes

#

the only change we've really needed to do was to compile a x64 lib version ๐Ÿ˜›

karmic niche
#

@dawn palm I've got a strange issue with your linux version of makepbo (makepbo x64Version 1.97, Dll 6.18)

I'm trying to pack a mission and makepbo hangs on mission.sqm :scanning for about 35 seconds. After that it returns with an error, but I don't know if it's related at all because it shouldn't hang at all.

If I strace makepbo, it's stuck in a select(1, [0], NULL, NULL, {0, 1000}) = 0 (Timeout) loop.

If I build the same mission on windows, on makepbo x64UnicodeVersion 1.92, Dll 5.66 it seems to build fine (does not hang and produces no errors)

#

I'm not sure if the error is related at all because on gitlab's CI environment I "just" get the error, without hanging.

The error is:
`In File /home/####/tmp/missions_overflo/Frontline/FL_Hedgerow.Colleville/description.ext: Line 47 Cannot include file
</end entries>

Rap lintchecking error`

The line in question is:
#include "cfg\cfgBaseSettings.hpp"
Which I think points to a valid file (looks like it is here)

#

I can provide the full strace as well as the mission, if needed.

dawn palm
#

i'll pass the 'hang' over to killswitch. he makes the linux compiles.

dawn palm
#

fixed embarrasing error in pboProject when crunching wrp pbo's. (credit Lappihuan)

hard locust
#

ideal, thanks for the speedy fix!

#

@Ghost#4782 @slow epoch it's fixed, just tested it

rigid frost
#

@dawn palm thank you mikero for the quick fix

slow epoch
#

@dawn palm @hard locust thanks

scenic canopy
#

big thanks, all our issues resolved ๐Ÿ˜ƒ

dawn palm
#

well, part from being little too klever and introducing an 'undocumented feature', all the frustrating issues with crunching maps have gone away, for ever. you can no longer get:

1)land class errors
2)missing icons on maps
3)no forests (or rocks)
4)the pernicious worst fault of all, binarising crashing due to a totally unknown config.cpp some\where on your Pdrive.
5)inabiity to select the map in the game editor.
6)savegame crashes

and lotsa warnings for you folks who put cutscenes in the pbo

hard locust
#

I regret spending money on arma, more than I do on your tools ๐Ÿ˜‚

dawn palm
#

in addition, this update also means the following frustrating 'errors' in any config.cpp on your pDrive no longer exist:

  1. you can have as many extra, spurious, semi colons as gives you a thrill. They were frequently generated by badly thought out #defines. But they are accepted in the C language for what they really are. Whitespace. Binarise can no longer report the infamous 'error 3' and crash.

  2. you can now have trailing commas in arrays. this is standard stuff in C when you are using a C code generator. It too is treated as whitespace in standard C. Binarise can no longer report 'error 23' and crash.

  3. you can now use as many ifdef/ndef pairs as you might want. biarise threw error21 (and crashed) on certain combos of nesting.

all of these have gone away because i never let binarise 'see' a config.cpp

smoky halo
#

๐Ÿ”’ binarize

scenic canopy
#

amazing @dawn palm ๐Ÿ˜ƒ

surreal wolf
#

@karmic niche Include processing in the Linux 6.18 build is indeed broken. Mikero should be able to set you up with a 6.24 build which should work better.

dawn palm
#

uploaded and done.

karmic niche
#

@surreal wolf Nice to know. I spent three hours (after midnight) yesterday, trying to figure out what I was doing wrong ๐Ÿ˜ƒ

dawn palm
#

๐Ÿ˜Š

#

yet another case Stack of me being a little too klever

karmic niche
#

@dawn palm Just tested the new version and it seems to work (builds the PBO).

Just a note: it looks like you have removed the Line XX part of the error message. Any reason for doing so? I realized yesterday that I has a case issue in one of the included filenames, thanks to that.

Finding it was really easy using the old version - it told me the line that causes the problem and I immediately noticed the case problem. Right now, it just says :
File .../description.ext: Cannot include file

Now, go figure what is the cause! ๐Ÿ˜„

dawn palm
#

if the lineXX is missing , it's an 'undocumented feature'

#

will check

karmic niche
#

I'm fine with undocumented features as long as there are undocumented switches to turn them off ๐Ÿ˜‰

dawn palm
#

haaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

hallow rapids
#

๐Ÿ˜‚

delicate plinth
#

I need some help from someone who makes C# extensions. I'm making an AAR system and I'd like to use websockets for communication between the extension and a web application. I'd also like to keep that connection alive trough the whole mission. I'm wondering if I initialize a class that is holding the connection can I reuse it? As it wont try to reconnect each time I do a callExtension?

karmic niche
#

It should work fine but you will have to watch out for timeouts.

delicate plinth
#

Yep will do a check before every transaction so I don't accidentally loose any data. Thanks.

karmic niche
#

There was also a thing about freezing the thread that called callextension after the call so my python background threads were frozen and were not working, but I should double check that...

delicate plinth
#

Please do, any help is appreciated. :)

karmic niche
#

I'm on mobile right now so I can't really type much but I've run a cpython interpreter as my extension and noticed that Python threads were working as long as the main function called by callextension->cpython was running. As soon as that one was finished, the whole Python interpreter was paused and the background threads stopped executing until the main function was called again

#

But I'm not sure yet how that is implemented so I don't really know the cause. I suspect that creating a separate thread for running the python interpreter might fix that but if not tried that yet

delicate plinth
#

I'll start off with trying and making everything async. If I get problems I'll go with making background worker threads.

scenic canopy
#

you can retain variables between calls to callExtension

#

haven't bothered implementing threads for that one but we had no apparent issues when using threads in C++

delicate plinth
#

Awesome thank you. That's how I started doing my project, with static classes. The only difference is instead of using split I am using regex to divide stuff.

dawn palm
#

my own sad experience, over the years, is that static classes and structs have come back to bite me only after my product is released to the public. There are exeptions to every rule, but i make it a rule, to avoid them.

forest trellis
#

@dawn palm, what are the pros of static classes?

glossy inlet
#

No need to fiddle around with passing pointers that don't change anyway

dawn palm
#

yep. less memory is used because with pointer-> a copy of the original has been placed in memory (generally the heap) for each and every 'instance' of that class. The disadvantage is any multithreading, any condition where two of your functions might access the same struct / class will inevetitably, and worse, randomly, produce inexplicable results

#

struct thingy
{
int some_val;
void clear(){some_value=0;} //2nd thread
void printme(int value)
{
some_val=sqrt(value);
printf("%d\n",value); // oops
};
};

hallow rapids
#

undeclared identifier ๐Ÿ˜

dawn palm
#

traditionally these 'accudents' were catered for with:

{
....
while (lock) ;
lock++;
do stuff()
--lock;
}

smoky halo
#

i am wondering why a BIS heli model has 93 sections

#

with the majority of them not being deifferent

dawn palm
#

cut 'n pasta

#

they do similar (I suppose we all do) with properties. Errors such as untrimmed white space in 'LodNoShadow ' = just keep propogating.

smoky halo
#

well you cannot copy and paste sections in OB, I guess

cold iris
#

probably they forgot to sort the parts out ๐Ÿ˜„

smoky halo
#

that's the thing. the faces are sorted. but for some reason binarize seems to split it into way too much sections

hallow rapids
#

@vague shard any plans to update the cmb repo or did you stop maintaining it? โค

vague shard
#

@hallow rapids plans to move it to github yes

#

when we are done with IFA3 Airborne update (1st June)

hallow rapids
#

awesome ๐Ÿ˜ƒ

vague shard
#

anyone good with dos/batch cmd? ๐Ÿ˜ฌ (or can recommend easy alternatives)

trying to dynamically mlink multiple git repositories (folders) into each others to have one merged that is easier to work with

this is what i came up with so far: http://paste.ubuntu.com/24625103/
but cant get the set variables to work properly within the for loop ๐Ÿ˜Š

basically the proccess is meant to be:

  1. detect all relevant folders based on filters
  2. get the relative path
  3. merge that with the target folder
  4. create the mlink (and folder tree first if necessary)
  5. add path to gitignore
dawn palm
#

welcome to hell

vague shard
#

been there since 15 years or so - cant get worse i guess ๐Ÿ˜‰

hallow rapids
#
or can recommend easy alternatives

BASH and/or Python ๐Ÿ˜›

#

and why echo.!_str1! and not echo !_str1!?

#

I guess new line but maybe it's causing whatever is happening ^^

dawn palm
#

or Python

i use perl. amounts to same thing. anything is better than !~dps to get current dir and other such made up, arbitrary, nonsense.

#

you might try perl under cygwin Q. it might be something you can deal with.

#

bash, ash, cash, and sh, aren't much of an improvement over bat script. they're all the same family.

hallow rapids
#

PWD=$(pwd) vs !~dps etc ๐Ÿ˜›

dawn palm
#

yeah, true. an improvement of sorts.

hallow rapids
#

but kinda true, batch and the bash likes are best used for simple stuff

#

oh PowerShell is another option

dawn palm
#

and for that reason they are bloody excellent, when kept simple.

#

perl is my preferred poison because it's so close to c, that i don't have to 'learn' a bazillion new functions.

hallow rapids
#

when I got into Linux as a kid I was told to not even touch it with a stick ^^

#

internet ๐Ÿ˜›

dawn palm
#

.py is as you say another good choice, but a) it's too far off the bare metal for me, and b) needs to be compiled?

hallow rapids
#

compile?

#

it's interpreted ๐Ÿ˜›

#

anyway, enough options ^^

karmic niche
#

What is str2???

pearl beacon
#

Python is the obvious choice :p

#

But then as mikero has no python experience, I have no perl experience (although as much as I know about it I don't want to either)

karmic niche
#
import os
import subprocess

from fnmatch import fnmatch

source = 'p:\\ww2\\assets_t'
target = 'p:\\ww2\\assets_t_merge'

os.chdir(source)

for (root, dirs, files) in os.walk(source):
    for directory in filter(lambda d: d.startswith('I44'), dirs):  # Or lambda d: fnmatch(d ,'I44*')

        full_path = os.path.join(root, directory)
        target_path = os.path.join(target, directory[:16])

        print('Creating link to: {}'.format(full_path))
        subprocess.check_call(['mklink', '/J', full_path, target_path])
        #os.symlink(full_path, target_path)  # linux

# pause <= raw_input()
# echo <= print('obviously...')
#

Maybe not as concise as bat files, but a lot more extendable

dawn palm
#

indeed

#

and readable!

karmic niche
#

Actually, if you're using python 3.5 you could replace the double for loop with something like for filename in glob.iglob('**/I44*', recursive=True): but I've never checked it that it worked

pearl beacon
#

it does work

#

at least something like what you wrote

#

as for cross-platform you can use sys.platform

karmic niche
#

btw. I've seen a few (disclaimer: not all!) setup.py files for some arma projects and it pains me they are all in one big function and everyone seems to be copying that function and using it as a template for their mods ๐Ÿ˜ฆ

pearl beacon
#

I don't see a reason to split this tiny script into anything really ๐Ÿ˜›

karmic niche
#

I can't really afford to look at this one in detail right now and also maybe only the copycats were badly written, but I remember I had issues with bad error handling when running those scripts.

pearl beacon
#

eh, who cares, it's a tiny setup script, and if you don't follow the ACE dev setup instructions you are calling for errors anyways ๐Ÿ˜„

karmic niche
#

Also I'd move the whole subprocess...mklink to a function for future portability, etc...
But I don't want to feel like an armchair general now ๐Ÿ˜‰

pearl beacon
#

as I said such tiny script not worth investing too much time into

#

and any script in the world could use improvements always ๐Ÿ˜„

karmic niche
#

While true, I guess I'm the one calling for errors - I don't have any P drive on my computer and I'm routinely running stuff on linux (CI and general automation)

pearl beacon
#

that too

#

we already have CI prepared for armake ^^

#

just that this @wide cedar guy is a lazy ass

karmic niche
#

So that's why I'm generally ticked off when I see things like mklink and winreg "hardcoded" into one main function ๐Ÿ˜‰

#

@pearl beacon your mklink in that setup.py will fail silently. You should use check_call if you want it to raise an exception on an error

#

Btw. you are re-raising the exception here so you will never print anything

    except:
        raise
        print("Something went wrong during the link creation. Please finish the setup manually.")
        return 6
pearl beacon
#

That's not true because it does print it

#

I am not the one who wrote it btw:p

karmic niche
#

This code will never execute anything below the raise line (unless you do some crazy monkey patching)

#

If you've seen the message, then someone must have removed that line in the code you executed

pearl beacon
#

Then we are not looking at the same line :p

forest trellis
#

men, parsing #ifdef is damm hard.

#

almost 4 days around this.

nocturne basin
#

@forest trellis parsing ifdef is hard? Oo what?
text processing on that level is blindly simple
doing it so that the rest of the chain will not completly blow off in text possition ... that is a different story

forest trellis
#

yeah, that. Finally finished implementing the parser that builds the lexical tree with #ifdef, oh boy it did hurt.

dawn palm
#

the wrestling with if(n)def is detecting it's else/endif pair. it means the 'code' between the two isn't dead and still has to be parsed, looking for further, nested if(n)def pairs. All quite logical, but not five minutes work.

nocturne basin
#

macro expansion is way more complicated if you would ask me
the simple "hiding" of code can be done in seconds
even 100% like arma does it ๐Ÿ™ˆ (nested #if foo takes maybe 2 seconds)

dawn palm
#

actually, arma doesn't 'do it' if you mean bis binarise. it crashes to desktop for certain combos of nested ifndefs

#

it's one of the most pernicuous errors available since there's no indication of which file is causing the problem accross the entire pDrive when binarise goes hunting for land classes and cfgWorld entries

#

nor does it matter if that file isn't actually used in anything. if it's "there", binarise will find it, and, faithfully crash.

#

but yes, for sure, expansion of defines can be a huge## ##task##

#

(and surprisingly, bis do a very good job of that)

tired crater
#

A long time ago pboProject would fail on some of ace's macros, so we ran our configs through CfgConvert twice to get a demacroed version.
Of course AddonBreaker failed with ace, but their macro handling was good ๐Ÿ˜„

dawn palm
#

Ace and Acre and Cba keep me honest. But it's been a long time since you guys managed to give me any heartache ๐Ÿ˜‡ I normally rely on Varanon to give me hell.

#

pboProject no longer lets binarise 'see' any config.cpp, nor does it let binarise wander anwhere on the pDrive at all. so the #ifdef issues have been solved in that way. As for macro expansions, i'm always learning some new trick.

rough python
#

Hey there, anyone else having issues with last version of mikero paid tools

#

(especially pboproject p3d binarization) ?

#

I already contacted mikero but maybe if i'm not alone we can find the issue quicker

tired crater
#

From someone in ace's slack

Anyone using the latest mikeros tools having an issue with it being overly sensitive on model configs?. Its saying cannot find inherit class , but everything is inheriting correctly, as it used to pack fine on the old tools

rough python
#

I have the same issue

#

thanks @tired crater taking contact with him

dawn palm
#

important update for pboProject (model.cfgs) . Sorry for the 'undocumented feature' folks, I don't normally get it this badly wrong.

slow epoch
#

@dawn palm not sure if this is related in any way but I am having an issue where my models simply won't work in game for seemingly no reason. My older models work just fine, it's just when I add a new one, it doesn't appear in game, no error messages or anything. I have even copy pasted a working model and renamed it and tried spawning it with createSimpleObject and it doesn't work, while the original model appears just fine. I posted more details in the model makers chat if it helps. I am at a loss as to what the cause of this issue could be, so hopefully you can provide some answers

sly skiff
#

@dawn palm Thanks for the update! Solved just the issue I was just about to ask about. ๐Ÿ˜„

normal wigeon
#

@smoky halo did you cancel your odol converter hosting/tool? I get a 502 proxy error

smoky halo
#

just checked, get 502 aswell

smoky halo
#

@normal wigeon it's up again

smoky halo
#

On the off chance anyone makes a extension which uses OpenSSL & ran into issues with linuxserver.
Linux Server in 1.70 has updated OpenSSL to 1.1

meager falcon
#

does arma dliber the libs for it?

#

I used to do stuff with openssl, but always needed to deliver my own openssl libs

smoky halo
#

Its statically compiled in armaserver, if you statically /dynamically link openssl 1.0 in an extension. You get a segfault in OpenSSL. Didn't trace down fully the issue

tiny path
#

@dawn palm I am having some trouble with the P:./source popup using pboproject - tried quite a bit, restarted my computer and ran pboproject alone but it still pops up saying it might be open still any tips on what to try?

glossy inlet
smoky halo
#

@tiny path P:\.source exists, move it to the actual destination and remove the dot

dawn palm
#

+1

karmic niche
#

I love the "but why?" type of comments :D

dawn palm
#

btw stack, lastest releases of my tools fix that annoyin gmissing line# in rapify

karmic niche
#

Oh, cool, thanks :)

tiny path
#

@smoky halo is it supposed to be in the main dir of p drive? Is it a hidden folder? I wasn't seeing it at all anywhere or I would have done it

smoky halo
#

not sure how windows handles it, but . in linux is hidden

#

and yes pboPro moves your source dir to P:\ and renames it to .source to hide it from binarize

#

if binarize or pboPro crashes it could remain there, this is why pboPro refuses to pack while such a P:\.source exsists

#

you might want to check your explorer settings on hiding files/dirs

tiny path
#

Ff

#

Thats probably my problem

#

It did crash when binarizing my map but i do have hidden folders enabled

#

Ill try again when im at my computer

#

Thx

tiny path
#

it all sorted out overnight and another restart so

#

think im good to go

tiny path
wind elm
#

check if something is still open in the Background (TaskManager)

tiny path
#

@wind elm ill try again tomorrow after a fresh restart, but I was able to place them in TB but not binarize everything

#

If addon breaker half worked I would try that but nah

glossy inlet
#

Wow.. Battleye just whitelisted my script debugger. Which hooks into the script engine and could manipulate any running script. GG Battleye

native kiln
#

@glossy inlet I heard you needed some money ( อกยฐ อœส– อกยฐ)

glossy inlet
#

what? always.

native kiln
#

How did you do it? Just sent an email? ๐Ÿ˜„

#

Can't believe that actually works

glossy inlet
#

No. They whitelisted it themselves. Probably autowhitelist because so many people tried to load it over a long period of time

#

As most people just leave the debugger in their Arma directory and trust on Battleye to block it from loading.

#

Maybe someone else sent an E-mail or something though.

karmic niche
#

I don't know where but I already heard that the extensions are whitelisted by themselves, after a period of time. So this seems to confirm that.

#

In theory, this would make sense: they probably assume that if someone is using an extension to cheat, someone is going to report the guy rather sooner than later. And if no one reports him, the extension is probably benign.

Of course, as with any method, there are always false-positives ๐Ÿ˜ƒ

#

But this suggests that Intercept could get whitelisted too, if enough people start using it!

glossy inlet
#

Yeah. Already thought about Intercept ^^ But I think just asking to get it whitelisted might be faster. If they don't want to. We'll just wait

karmic niche
#

Lol, add Intercept along with a callExtension('ping') call to all your other releases, so that it builds a reputation in a parasitic manner ๐Ÿ˜„

dawn palm
#

If addon breaker half worked I would try that but nah

what you mean is, you'd prefer to use a tool that doesn't tell you about any errors, but can't, because it deosn't tell you anything about errors!

hard locust
#

I remember someone on the forum saying about pboproject, gives them errors on their terrain, but addon builder didnt. So it was better to use that! ๐Ÿ˜‚

tiny path
#

@dawn palm im unsure if the error is due to the object being from argo and brand new or if it was my end ๐Ÿ˜› thats why I wanted to see if the other worked

#

So if you have any pointers, but the error doesn't exactly give me any direction to go in ๐Ÿ˜„

dawn palm
#

the baked in model.cfg in that p3d is faulty. since it's a binarised p3d, you can't do anything to fix it. so, simply. don't use it.

#

faulty binarised p3d's are few and far between, but when they are faulty, they are accidents waiting to happen, in game. and you and your map get the blame for it.

tiny path
#

Doesn't make sense though, its an official BI asset from argo and they all throw the same error

smoky halo
#

I would say @dawn palm just thinks that this is faulty although it is probably valid ^^ ๐Ÿ˜›

#

probably minValue and minPhase is not equal (that's how I interpret the error message) but imo this is not an error

tiny path
#

@smoky halo yea you are correct there - the minValue and minPhase are different in animations for door locked rotations

hard locust
#

Are the objects from the dev channel? I saw them in there, just didnt add them to my terrain

tiny path
#

yea they are, in pbo format as well @hard locust

hard locust
#

Then I shell put off adding them to my terrain till it's fixed lol

tiny path
#

haha yea no kidding ๐Ÿ˜›

dawn palm
#

@tiny path

#

fixes:
dll 6.05
dep3d:
model.cfgModel: minmax phase is now different to minmax value when decoding on release 1.63 of dev game
when different it is shown in the model.cfg decode

#

the free tools consider it an error

tiny path
#

๐Ÿ˜„ awesome

#

you are a legend ๐Ÿ˜ƒ

dawn palm
#

yea they are, in pbo format as well

where? I'm on dev and cannot see any 'pbo', only structures_f_exp EBO

tiny path
#

@dawn palm the malden objects are pbo but in sitrep today it says "This change will become active with Update 1.72, but Dev-Branch players can already benefit from it right now."

#

not sure if that means pbo update hasn't pushed yet or if they will stay EBO objects or what really

#

Malden objects are in Argo -> Addons -> Structures_f_argo

dawn palm
#

oh

#

ok. these are NOT apex objects as per those placed on the original map

#

but thanks for the heads up

tiny path
#

no they are not

#

but the apex objects on original tanoa, will be?

#

thats what sitrep seems to hint at

dawn palm
#

it hasn't happened yet, and has only happened, because people are using origami

tiny path
#

pretty much all stemmed back to you, kudos to that ๐Ÿ˜„

dawn palm
#

making these objects available 'so that people without the dlc', can use the communty map. is an inevitable by product of providing pbo for people WHO DO HAVE THE DLC. Bis aren't being generous here, it's just a consequence. The real deal is, bis are just officially letting dlc owners to finally make maps with dlc assets!

#

you'd have to ask where the logic was in providing a much more IP sensitive weapons.pbo ages ago. but locking everone out of making maps.

pearl beacon
#

but that's the reason why they are making those objects available

#

I can totally see this being a thing that just slipped through when they were packing and no one really thought about it

dawn palm
#

that's what is confusing me Jonpas, i cannot see any evidence of anything slipping thruu.

#

argo assets are not tanoa assets

pearl beacon
#

wait what

#

Malden has nothing to do with Tanoa

#

I just read the convo above

tiny path
#

it has retextured apex objects

#

as part of its map

dawn palm
#

well that's right, so I;m confused by spurious reports about them making a mistake.

pearl beacon
#

what is EBO are Tanoa objects right now, and those will be PBO in 1.72, because they realized people want to use that on community terrains without Apex, they could've just said "well you need Apex", so they are being rather generous

#

they probably just packed the new Malden stuff into PBO as it's simpler for dev-branch updates, as they will make Tanoa ones PBO as well

#

so why bother with EBOing and huge downloads ๐Ÿ˜ƒ

dawn palm
#

that makes sense

pearl beacon
#

that's at least what I gather from the SITREP + what's on dev-branch

tiny path
#

thats what I read that segment in the sitrep as

#

yea

pearl beacon
#

so I guess we read correctly if we agree ๐Ÿ˜„

hallow rapids
#

I don't think it's a bad practice to get some income from it and then make it "public" later

#

feels good to me ๐Ÿ˜ƒ

dawn palm
#

that's how they handled karts and marksman, i think every one 'accepts' that.

hallow rapids
#

mhm ๐Ÿ˜ƒ

dawn palm
#

but, there's been misinformation fkying around in forums and skype/discord channels that the tanoa structures have been released as pbo. this is wrong, it's argo assets.

#

,,, and now, it seems tanoa will be unlocked.

hallow rapids
#

well @rancid relic mentioned that all the APEX assets will be part of vanilla once 1.72 hits

dawn palm
#

yep, but that's a different story to the original misleading, misinformation, that the community has been spouting.

hallow rapids
#

ahh gotcha

tiny path
#

yea the only thing is argo assets are pbo, tanoa will be open later for all in next stable

pearl beacon
#

^

dawn palm
#

welcome to hell:

6.31 changelog
made further improvements to rapify
rtm: better throw error messages (credit kju)
fixed write lzo compression when stripping bones (credit kju)
makepbo: (credit kju)
c:>
makepbo d:\some\where placed pbo in some\where, not some
makepbo: now automatically places a version= in header of pbo (if not over-ridden by pboprefix.txt)

the last mentioned is an important bonus for you folks.

you will always be able to track WHICH version of your pbo is being used, whenever you get a complaint.

the value produced is equvalent to what you see for bis addons in the rpt file.

glossy inlet
#

So it writes the version to RPT at game start? That's neat :3

dawn palm
#

no the engine reports the version at game start ๐Ÿค“

#

providing you keep a note of the version on each release, your 'customers' can no longer lie to you.. In gerneral terms, to swear on bibles they are using the latest.

glossy inlet
#

What does "the engine reports the version" mean? Where can it be seen?

sinful crescent
#

@glossy inlet in the rpt (under "Loaded addons") the pbo name (with full/rel. path) and version (if available in the pbo header - else: unknown) is listed

glossy inlet
#

Thanks. I hope as many addon makers as possible use that then... A lot of people don't have any version inside their pbo or in their bisign name. So even I sometimes don't know what version of something I have

sinful crescent
#

sadly that part of the rpt is missing on linux servers

pearl beacon
#

does that mean we have to manually add version to every single pboprefix though?

#

otherwise it will be different from what is in CfgPatches?

#

never mind

#

I properly read it now

#

it is for example 15:59:48 addons\3den.pbo - 114846

#

great, we already do that in CBA/ACE/ACRE through our build scripts (commit ID), will be good to see it basically being forced for everyone to have some form of identification

dawn palm
#

yes. cba use the hash of the git repository, bis use the svn rev number, i use checksum, and a datestamp would be the same sweet smelling rose.

pearl beacon
#

๐Ÿ‘Œ๐Ÿป

glossy inlet
#

What is the length limit for the version information?

dawn palm
#

it's as long as a oiece of string

glossy inlet
#

strings can be long..

wind elm
#

Nah, max was... erm... something

#

At least in the diag_log output ๐Ÿ˜„

dawn palm
#

%s can be any length. windoze Cstrings are limited to 32k

#

as for what bis do, don't do, change their mind, break, and above all don't document anything. the answer is yes.

#

for instance, the engine is built round utf8, but bis don't know that so mistakenly list pbo properties as winansi

smoky halo
#

properties are of custom type RString which basically is a char array

dawn palm
#

all based on std:string which they all are. But for eurpean languages the actual nChars is around 10% less than the nBytes used to encode them in utf8

#

so max len is a little problematic.

smoky halo
#

it's not based on std:string

dawn palm
#

oh, tha's a surpsie, i looked, and assumed it was, don't know why. saw something that told me it was. obviously wrong.

smoky halo
#

the code always feels like they wrote everything themselves. math, strings, file system... everything is custom

dawn palm
#

vectors eg

#

i agree with that.

dapper pivot
#

That was the C++ style de jour when the engine was written though.

#

Using the STL was often problematic because C++ compiler implementations of templates were very poor.

#

And the underlying semantics of std::string (that relate to performance) have only been specified in recent C++ specifications.

dawn palm
#

my ignorance of templates is deep since i won't create them in any of my code and limit my use of outside ones to CStrings which are bad enough. Seems like 50% of the world still 'prefers' to use #defines to achieve similar.

glossy inlet
#

Feels like 50% of the world is still on C++98 ^^

pearl beacon
#

why wouldn't you create templates in your code, rather writing same functions multiple times, cool I guess -.-

karmic niche
#

While I'm on the "use templates" team, the answer to your question is that some people don't like to read 1.5GB of error messages ( https://tgceec.tumblr.com/ )

dawn palm
#

why wouldn't you create templates in your code,
<<be><<cause><t><eyre>><unread<<a>>ble>

karmic niche
#

Good thing they're making them more and more readable with each C++ standard

dawn palm
#

yes. i agree that they're improving

glossy inlet
#

using becauseTheyreUnreadable = <<be><<cause><t><eyre>><unread<<a>>ble>

dawn palm
#

my biggest beef with them, is i don't want hintlines with func(<burble>)

i want func(float)
func(float*)
func(double)

meager falcon
#

I dont really see the point in using templates since std::variant .. usually templates arent even used for that many different types

hallow rapids
#

std::variant is a template though ๐Ÿ˜

meager falcon
#

but "nicer"

#

it atleast gives you and insight in whats going on in 300 line error messages

pearl beacon
#

not wanting to write <> is just a silly argument

dawn palm
#

not wanting to READ meaniingless gibberish is not so silly

pearl beacon
#

except it's neither, so just not wanting to read? XD

dawn palm
#

i want my hintlines to make sense.with specific variants on what parms can be passed.

#

i also do not want six versions of some quirte comlex code exposed to the outside world. and I don't want to force a recompile of all the sources that use that template because i've made a change to it's inner workings.

#

i also don't waant my complier wading thru 300 lines of template each time it needs to select one of the variants.

#

templates are like #defines, they're very neat to write and look clever and efficinet until you come back to them two months later and try andfigure out what the hell they actually do.

pearl beacon
#

and that's where proper use of templates comes in

#

they can be used in a very ugly and retarded way

glossy inlet
#

templates are sometimes very useful sometimes not.

#

You can code a template to do a 100 different things. But you can also code 100 classes that are all similear named and do basically the same thing..
Not going for the template is just horrible code

#

Like.. Implementing dozens of variants for an array or map container just because one doesn't like templates.. just no.

pearl beacon
#

๐Ÿ‘†๐Ÿป

dawn palm
#

yep agreed

tropic condor
#

How would you roll back arma 3 tools? putting in "Arma3Legacy168" for the beta code doesnt work...?

dawn palm
#

arma3p updated to extract argo

for those of you with headless servers, there's a headless switch at top of file so that you guys get no pausing

#

depbo.dll updated to polll once/day looking for updates

scenic canopy
#

@dawn palm โค

#

could you add some parameter to enable the headless mode? then I don't have to remember to change it after each update ๐Ÿ˜ƒ

#

the same for full extract would also be appreciated

dawn palm
#

never thought i'd think of cmd script as being worse that bis script.

i now know better

#

!\usr\bin\perl please Mr Goat God

scenic canopy
#

๐Ÿ˜„

dapper pivot
#

Pft, templates are wonderful. They're often the only way to write very abstract modular code that can be statically compiled down to monolithic high performance code (e.g. see AGG/Anti-grain geometry).

glossy inlet
#

And to crypting error messages with templates.. just put some static_assert's in there. If you're error messages are still to crypting make better static_assert's

dawn palm
#

haaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

#

like #defines which I've also come to detest because my code is riddled with them, i no longer remember how the define or the template actually worked.
i've used templates (and defines()) for the reasons you point out Ian, and come to regret it whenever i have to debug. I acknowledge their usefullnes, their versatility, but it's a personal choice that I now avoid them. I am not alone. There will be a group who swear by them, and can use them succesfully and properly, i acknowledge that too. But this dog is too old to learn new tricks which turn out to be re-invention of the wheel.

#

I also have no use for c# and it's friends, but reccomend to anyone starting out that they go straight to c# and avoid c++ because it's not that useful to them. Because of that, <templates> have probably taken on a better usage in C# and it's friends, than I have knowledge of.

pastel isle
#

Hello, so i am trying to use PBO project to obfuscate a file, but i keep getting obfuscation is disabled, makepbo failed. i have installed everything in the mikero tools updater, and it has no errors in the view outputs

glossy inlet
#

You are using the subscriber tools right?

pastel isle
#

yes

dawn palm
#

the free tools must be totally replaced with new ones. use the maverick updater to do so.

pastel isle
#

Hmm, I think my install location is different for the newer ones, could the old ones being installed somewhere else be the problem?

pastel isle
#

Yes, it because the old tools were installed somewhere else, all working now, thank you

orchid shadow
#

I ALWAYS OBSFUCATE MY WORK BECASUE IM SO GOOD AT MODDING

#

Ehh.

#

I mean, cool stuff i like stuff.

grand orchid
#

@dawn palm what was the update on the armaA3p ? is it a must to re run ?

glossy inlet
#

Btw. What is the reason that you still need a P drive? Mikeros tools can unpack PBO's. Mikeros tools also know where Arma is installed. Why not just grab the files needed directly from Arma pbo's ?

nocturne basin
#

never understood the need for PDrive at all tbh ...

#

never had one (or more: removed it when it appeared on my system)
never wanted one

#

the whole idea of the PDrive is screwed anyway

smoky halo
#

for scripters it has usually no meaning

#

but as soon as you work with models or terrains you appreciate it

nocturne basin
#

neither for anybody else
it is just waste of a sym link
piling up shit on your system
and you have to relink in case your HDD fails where the PDrive is linked to

smoky halo
#

at least i do

nocturne basin
#

the technology we use for ages is called "File System"

#

and PDrive is nothing else but a virtual HDD linked to a folder in that ...

smoky halo
#

yea it simulates what the engine sees in a unpacked form

nocturne basin
#

which is absolut waste of a drive letter

glossy inlet
#

Only experience I ever had with Arma 3 Tools pdrive was recurring bluescreen on boot that I could only fix by editing the registry from a linux boot stick. Because Arma 3 workdrive doesn't properly clean up and fucked up my ramdisk driver

smoky halo
#

clean project space and lookup table

#

no idea about BI tools, a simple virtual drive and arma3p works since ages for me

glossy inlet
#

I'm using a ramdisk as pDrive right now. Works fine for me. But I really don't see the need that a tool that can unpack or read PBO's itself needs PBO contents pre-unpacked.

nocturne basin
#

i see no need for a PDrive ... there is litterally no difference to setting a root dir path

smoky halo
#

afaik pboPro does not need it, it's just the design of it that it requires you to have the files in place to check if it could find them ingame aswell

glossy inlet
#

True. It needs them to either check if they are really there. Or it needs Headers that you include in your configs.

smoky halo
#

i think binarize requires some stuff but from what i read mikero is locking that away as much as possible

#

yes binarize needs access to a lot of models when converting terrains

#

and I think binarize does not read from pbos

vague shard
#

it does not

#

rvmat are merged into p3d by binarize - another sample why unpacked data is needed

#

virtual drives help to separate different projects

#

mikero's tools have been made to ignore other data, so is not longer necessary for them, but thats not true for BI tools

dawn palm
#

ALL file addressing in the bis engine, it's rvmats. it's p3ds, it's configs. it's wrps, begin at \

there is no such thing as a C:\ a d::\ and certainly not a c:\my documents in the bis universe.

ALL addrssing begins at \

this means, translated to the windoze world, ALL objects in bis start from

drive:\one\common\folder

the file reference inside an rvmat (or any other file) has no knowledge of \one\common\folder. It's world begins at \

as a sheer convenience to people's sanity this is shortened to a 'p' drive. not necessarily P:\ but the beginnig of the windoze world and engine's world have a common point of origin.

#
  1. you don't have to use this sanity if you don't want to. pboProject is just as happy to work within a '<workspace>'

  2. pbos are not relevant to any discussion here, they are not part of the DEVELOPMENT, they are part of the end result.

there's no eathly point trying to find out which pbo contains a spotted\girrafe when that girrafe hasn't even been packed yet

pearl beacon
#

but you do need a pbo for development, just not binarized or anything so you can make use of filePatching

dawn palm
#

yes, sure. but that's nothing to do with crunching he stuff. which is what P: is all about.

pearl beacon
#

yes indeed

dawn palm
#

p:\ or Q:\ or Z:\ is the common meeting point, it garantees, that no matter how many differern pbos and mods you make, they all sing from the same song sheet, they all use the one, common, extracted a3, they all use the one, common, just made pbo, and they all use the one, common, E76\roads from some\other\mod

#

yes. you can achieve the same miracle, by always using the c:\same\common\folder. But how long do you think that bit of discipline will last?

#

the point of confusion here is for mission makers and scripters who rarely use \addon\addressing. their world starts and ends at the description.ext boundary (for campaigns), and rely on nebulous calls to named classes (eg cfgvehicles) and named functions, not,the files themsleves. Mission pbos's are not addons and don't have prefixes .
But the moment they say loadfile \x\cba\bla,. they are subject to the p: drive.

#

...and it is a foolish foolish mission maker who assumes that file exists and is spelt correctly.

boreal night
#

can someone please upload a .sql file for arma 3 lakeside the sql file im trying to execute for my DB is failing

#

when i try to execute my sql file it fails

fallen stone
#

Learn to make something yourself

#

And stop stealing it

glossy inlet
#

@boreal night If you don't know how to use a Database and SQL. Why do you have a Server that uses a Database and SQL then?

boreal night
#

i fixed it

#

calm down

#

aye

fallen stone
#

๐Ÿ‘

scenic canopy
#

regarding "p drive", it is possible to mount the pbo files as a virtual file system that can be used as "p drive"

#

takes away the need to recreate it when a new patch is released

#

and wastes no space

#

just a drive letter

glossy inlet
#

@scenic canopy Thank you very much. I've needed something like that for a looooong time

scenic canopy
#

probably not updated to the latest release of Dokany

#

uses quite a bit of ram for all arma 3 pbos ๐Ÿ˜›

#

should be up to date now

#

haven't finished implementing search in the virtual file system

glossy inlet
#

With that I can probably build PBO's live from my C++ code and let Arma think they are just normal pbo files :3 A lot of fun to be had

scenic canopy
#

here's a python based for unix fuse I've created as well

fiery sable
#

nice share ty @scenic canopy

nocturne basin
#

as i do not want to install ArmA right now, anyone knows if there is a "PID" file for arma3 to check if it is running already?

#

and while we are on that topic, does anybody by chance knows the registry key that says where the arma key is?

glossy inlet
#

Don't think so and.. yes. searches

#

"HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Bohemia Interactive Studio\ArmA 2 OA", "main"
"HKEY_LOCAL_MACHINE\SOFTWARE\Bohemia Interactive Studio\ArmA 2 OA", "main"
You can translate that to A3 yourself ^^

nocturne basin
#

ty

dawn palm
#

arma3 uses hkcu, arma2/1 use hklm for the tools at least.

#

arma3p looks for arma3 registry in one of several places at very top of the bat file.

#

syswow is only relevant to a2 scribbling into hklm

limber garden
#

I'd imagine there is a PID somewhere, since the Arma 3 Launcher knows when you have the game open. @smoky halo might be able to provide more information.

smoky halo
#

@nocturne basin -pid=<filename> is you're start the instance yourself; otherwise you've to do it the old fashion way ๐Ÿ˜ฆ

nocturne basin
#

meh ...
need to detect users arma3

#

hoped for not being in need to do that via process list

glossy inlet
#

If the Debugger is there you can detect the Named Pipe opening

karmic niche
#

Actually, the registry entry for A3 is:
software\bohemia interactive\arma 3 (main)
(without the "studio" part in the name)

dawn palm
#

not for everyone. there is no 'main' in my registry. I use dwarden script which sniffs at steam (valve)

for /F "Tokens=2* skip=2" %%A In ('REG QUERY "HKLM\SOFTWARE\Wow6432Node\Valve\Steam" /v "InstallPath" 2^>nul') do (set _ARMA3PATH=%%B\steamapps\common\Arma 3)
if defined _ARMA3PATH goto found_A3

#

welcome to hell

#

the full list of regkeys (6) of where it might be on a person's pc is in the top lines of arma3p

#

bis progressiively moved it's setting from arma3 alpha,beta,to present day

#

all credit for above info to Dwarden.

nocturne basin
#

a dialog prompting the user might also be doing it ๐Ÿ™ˆ

karmic niche
#

You have no main? Huh? How is it possible? That entry should be created by Arma launcher...

#

The only"issue" I've ever had with my custom launcher was that checking integrity on steam deleted those entries, but as I said they were recreated as soon as Arma launcher was run afterwards

smoky halo
#

main value in there registry is created either by Steam install script or the game when it starts, Launcher only uses the value when it is available. Otherwise what you S(O) said is true, Steam has it's moments and deletes the existing entry.

karmic niche
#

Hmm... I'm not really qualified to say what program does what but, at least from an end user perspective, the launcher (or maybe just steam?) recreates those registry entries.

I've got a workaround that when the registry entries are not found, it launches [steam_exe_path, '-applaunch', '107410'], waits until the entry appears, kills any arma3launcher.exe process that may have spawned and continues its regular work.

#

Since I've implemented it, I don't think I've received any complaint about "arma not found"

glossy inlet
#

Steam creates the Bohemia\Arma 3\main entry on first start

#

Atleast starting once in Steam creates them

karmic niche
#

Btw. now that I had the time to look at your script, mikero, this is only going to work if you installed Arma in the default Steam location. If you create another store on another drive, it's not going to be found, obviously.

dawn palm
#

I've never had a reason to use arma launcher. But as wizard says, it's a reader not a scribbler (I assume). In my case, neither steam, nor the game itself write 'main' to the registry. (arma2 did). It could simply be that because i do have an arma 3 KEY in all the right spots, it doesn't check that I have a token pair called 'main'. This might be caused by some historical hiccup from the days of alpha pre-releases ( eg when all sound files were wav).

As for the above dwarden script not working: there would be a conservative 10,000 copies of arma3p out there. It has never been reported as not found. One of the six registry keys seems to yield a result. (but i also agree you can phool the steam entry)

#

correction to above. prior to dwarden supplying the above script which added the valve scan, some arma3p's did fail.

#

putting foot in mouth and hazarding a guess, someone at bis discovered that steam does not reliably write the 'main' token pair to the registry, so came up with this fix.

karmic niche
#

Heh, that would be quite probable ๐Ÿ˜ƒ

#

So, I took a look at arma3p, and basically, you're looking at HKLM\SOFTWARE\Bohemia Interactive\ArmA 3 (+the Wow6432Node which is a "subregistry" for 32-bit applications, AFAIK) and also at HKLM\SOFTWARE\Bohemia Interactive Studio\ArmA 3.

Now that I think of it, I actually remember that I had one case with a person having the arma keys in the second location but as it was only once, I dismissed it as him doing funny stuff with his computer.

dawn palm
#

yes to above stack (notably syswow comment). There are actauly 3 variants:

hklm vs hkcu
bI vs bi studio
software vs syswow\software (poetic license used)

#

you can see this progression better in bis personal tools 2.5.1 versus the steam tools equivalent. Not, of course relevant to where a3.exe is, but a better understanding of where the variants come from.

vague shard
#

@glossy inlet @nocturne basin

  1. did you guys measure packet size/traffic of pV vs setVar vs remoteExec?
  2. does your IDE/tool set have the capability (or plans for it) to measure/calculate/estimate MP traffic?
glossy inlet
#

No. No.

#

We can't really know who might at some point in time call a script that might depending on external conditions potentially send a variable whose contents we don't know over the Network.

#

Intercept is getting an external Networking Plugin though. So you can share Variables and other Data through a seperate Network pipe detached from the Game itself.

vague shard
#

sure of course. yet you could log outgoing and incoming traffic (and if you can break that down to the specific source, one would have excellent detail already)

glossy inlet
#

Arma network stuff is encrypted. And undocumented.

vague shard
#

like BI did a simple variant with mpStatistics.log

#

well the leaked source should give some idea, does it not?
in regard to encryption - forgot about that.. can you not inject your code at the right place to intercept/sniff the traffic (probably hard though)

#

at least back in the day the internal exe was writing the traffic type in mpStatistics.log instead of the ids - maybe BI is open to share the mapping finally..

glossy inlet
#

They probably obscured it to protect themselves from Hackers.
But as I said a few months ago I could write a deobfuscator for that.

vague shard
#

well let me rephrase it - is there any insights currently on pV vs setVar vs remoteExec use in terms of optimization?

glossy inlet
#

No.

vague shard
#

YAY ๐Ÿ˜ฌ

#

thanks anyway!

#

i ๐Ÿ™ for you guys doing some more magic in the future

glossy inlet
#

The debugger could detect which variables are being publicVariabled. and what is remoteExec'ed. Won't help you much in Optimizing your code. But will help on finding Problems

vague shard
#

well (good) statistics is the/a first step to real optimization

meager falcon
#

Dunno if its even possible to differentiate between pV, setVar, remoteExec and normal traffic
I could however setup a small test envo in which a HC is the only connected "player" on the server and let the server send a specific amount of variable of a certain size (lets say numbers, because they are all 32bit), measure the cause traffic over time and substract the a default traffic usually cause over this amout of time
the problem is: Thereby I can only measure the amount of overhead each type is causing (and how much traffic it actually causes) but not how fast each on is and wether the order is the same

#

and only overhead is quiet useless

nocturne basin
#

@vague shard there is lots of space and adding a plugin that would allow such a thing is no magic
if there is a way to gather that data, we can display it using ArmA.Studio

dawn palm
#

depbodll update
a few small bug fixes of no real consequence, but a very nice fix to the 1024 char limitation when setting the environ path. This annoying 'feature' where you sometimes had to do it manually has gone away forever. A nasty bug in the windoze setX command was the cause.

small cosmetic changes to eliteness to make your lives easier.

#

for those who like to know about such things, my tools are now fully HKCU, HKLM is no longer used for anything.

tiny path
#

@dawn palm any idea what this error means http://i.imgur.com/BCGWQV3.png I re-upped my subscriber tools and now have this error popping up with the new install of tools

#

not sure what changed but they worked before, now they don't and I don't have anything that is named class 1

#

its on a ported a2 datsun as well, model.cfg works in OB fine + no changes besides tool upgrade

tiny path
dawn palm
#

I don't have anything that is named class 1
you don't but the 'master.cfg' found in a root parent class does

tiny path
#

reinstalled/updated + cleaned out temp folders seemed to have fixed it

#

so not sure what was up

#

but its working now lol

sour hedge
#

@dawn palm Reference the discussion from a few days ago about registry entries and Arma3p, I've just had the issue on my PC during a reinstall that non of the 6 entries in the cmd file were valid. I had to edit your code to set the path to arma3 manually. I believe the problem may be related to having multiple Steam libraries (on different drives), and Arma is not residing on the default Steam installation drive.

dawn palm
#

you will be 100% correct about that. stack has advised me of that issue and am scratching head trying to resolve it. Have to say, the problem you faced is rarely encountered. All previous occurences were genuinely bad installs, but yours isn't. Thank you for the heads up

#

Unsurprisingly, if you run bi's steam tools 'diagnostic' which produces thousands of lines good quality info, not even bis know or list where arma3.exe 'is'.

fiery sable
#

anyone know of a linux RCON->SQF bridge? found both ASCT and sqf-rcon, bbut they are windows only. looking into how to compile a .so to make a linux version of sqf-rcon but that'll be a long journey at my current skill level

sour hedge
#

Would it be possible within Arma3p.cmd for it to detect the path automatically, as at present, but then ask the user to confirm if it is correct, and if not, to enter the path manually?

#

path not found > ask user to enter manually
path found > ask user to confirm correct Y/N > if N then enter path manually

dawn palm
#

yes. it would

#

i don't need confirmation if the path is correct. only when i can't find one.

sour hedge
#

Actually that wouldn't have worked for me.

#

It found a path, but it was incorrect.

dawn palm
#

there's no point them telling me the path is wrong, because it means their installation is wrong.

#

BUT, there's always shades of grey in this.

sour hedge
#

Because it couldn't find the correct arma installation (multiple steam library), it went on to use the default Steam installation folder, but arma isn't located there.

dawn palm
#

yep. that's my error for sure.

sour hedge
#

You probably can't always guarantee that an auto discover is correct, so a chance for the user to over-ride might be worthwhile.

dawn palm
#

I agree with that. i have some truly excellent py code from stack overflow (bless him), just have to tweak it for my own needs.

sour hedge
#

Excellent. By the way, many thanks for your tools, they're superb. Especially the error reporting from pboProject.

dawn palm
#

thank you for that. I do give my best.

#

There's a phase shift that's occured over the past 12 months where, previously, if i reported an error, i'd get complained at that the user had some work to do. Nowadays it seems to have been accepted that it's far far better to fix the problem than pack, load game, find a fault, pack, load game, find a fault, pack......

sour hedge
#

Definitely. Having all the errors pointed out, along with which file and even the line numbers has been brilliant.

dawn palm
#

The only dissapointing thing is fully 40% of my processing crunch is spent checking what bis binarise screwed up.

sour hedge
#

That's how you make the big bucks though ๐Ÿ˜‰

dawn palm
#

๐Ÿ˜Ž

sour hedge
#

This may have been asked here before - what causes Buldozer to stop showing textures? Sometimes we install and get textures, other times not. Some people have 'fixed' it by moving buldozer + dll's to P:, but it's not 100%.

#

talking about Object Builder buldozer

dawn palm
#

...and other people have 'fixed' it by using the only buldozer you have on your pc. it's called arma3.exe

sour hedge
#

That's what I'm using. Arma3.exe no textures

dawn palm
#

if you're talking object builder , not t/b. you haven;t fully extracted all game files.

sour hedge
#

I used arma3p. Anything else I should have done after that?

dawn palm
#

never run as admin.
always use a shortcut (never start from bis tools)
'play' steam tools once.

#

that's the mantra, laid down by bushlurker among others from the very begiinnig of ALPHA arma3. bis may or may not have fixed each issue, but that's the mantra.

sour hedge
#

OB is run by double clicking .p3d's. Not running it as admin. Steam Tools was run once. Same process as I used last time when I had textures. I think there's something else aside from the 3 mantra points, no idea how to figure it out as there's no errors in the buldozer rpt.

dawn palm
#

ok. i accept tthat.

#

whish i had a better answer, but i'm tired of bis screw ups.

smoky halo
#

are you viewing a p3d you made with your textures?

#

could be your path to the textures are wrong

#

also make sure to set the options in OB for texture path prefix

sour hedge
#

Textures show fine in Object Builder itself. They're tga's and no errors on paths.

#

I have a texture path prefix, but not sure if it is correct. I tried a few, lol.

dawn palm
#

it's p:\

sour hedge
#

Will quickly try p:\ again, although think I already did.

dawn palm
#

unless you really really want to go back to the days of arma2 where you had to copy the enture contents of the p drive into each p:\project you made (if you were silly enough to use binpbo)

sour hedge
#

P:\ didn't fix it. Still all white objects.

dawn palm
#

Textures show fine in Object Builder itself.

sour hedge
#

yes

dawn palm
#

how does that reconcile with "Still all white objects."

sour hedge
#

When viewing the object in Buldozer, it loses it's textures.

dawn palm
#

ah ah sorry sorry

#

misread

#

it probably can't handle tga

sour hedge
#

It always used to.

#

Others have it working ok with tga's too.

dawn palm
#

it depends what they screwed up in binmakerules.txt

#

and really, you have no good reason for using tga at all.

#

it's just a lag monster and time waste

sour hedge
#

The reason is that it shows the textures in Object Builder, really useful when editing.

#

And no apparent slow down that I've noticed.

dawn palm
#

a paa can't show the same thing?

sour hedge
#

BIS use tga's too.

dawn palm
#

no. they do not. there's no driver in the bis engine that 'shows' tga

#

pac/paa is a direct feed into directX

sour hedge
#

.paa's don't show textures (at least for me, or any one else in our team)

dawn palm
#

there is a driver for jpeg. but not tga

#

well sth severely screwy

sour hedge
#

When you build the project it auto-converts the tga's into paa's, which is what gets packed into the pbo.

#

(lol, talking like I'm an expert...just an enthusiastic amateur)

smoky halo
#

Tga can be used in OBS viewport when using directx, buldozer should automatically convert tgas to paas as the engine does not read tga

dawn palm
#

i do that yes, and i treat pac.paa.bmp and tga as born equal. i also alter the p3d' to say 'paa' and the configs and the rvmats, and if i 'discover' tga i automatically call pal2pace without disturbing you.

#

bis binarise never 'sees' tga

smoky halo
#

Did you try to pack the addon yet to see if pboPro catches any issues with your data?

dawn palm
#

good point

sour hedge
#

Yes, it packs fine with no errors. These are mods we have released. Yesterday buldozer showed textures. Today's install doesn't. Another person with the same mod sees textures.

#

To be clear, I'm only talking about textures in Buldozer, run from OB. In game all is fine.

dawn palm
#

my imho opinion is if you can't use paa as mutually equivalent, something is screwed at your end.

smoky halo
#

check if your pdrive is visible by opening "File > Open..." in OB

sour hedge
#

Yes, p drive is visible from File>Open.

dawn palm
#

if you can't use paa, you can't convert to paa, hence, white textures.

smoky halo
#

make sure the dll folder in OBs options is set to your a3 tools path > object builder

sour hedge
#

It is.

smoky halo
#

i use these startup options for the arma3.exe in the external viewer option:
-buldozer -nologs -name=Buldozer -window -exThreads=0 -noAsserts -cfg=buldozer.cfg

#

do not use the x64.exe for OB only for TB

sour hedge
#

mikero, if you open an object in OB, and switch on solid view, do you see textures when they are .paa? We never have. Only when using tga in directx.

smoky halo
#

^ only tga

dawn palm
#

oh that;s interesting lappi. never knew that.

sour hedge
#

Using arma3.exe, not the 64bit version for buldozer.

smoky halo
#

then i'm out of ideas :S something is weird with your pdrive to be sure

dawn palm
#

the issue for you Apolllo is you're using tga, and you're praying bis get it right.

smoky halo
#

buldozer automatically converts tgas that do not have a newer paa version on buldozer startup

#

it opens a cmd

sour hedge
#

It's worked for well over a year of modding. Reinstalled, now not working. Defo something 'wrong' my end, accepted, but as with others with the same issue, we don't know what.

smoky halo
#

you will end up with a tga and a paa of each texture in your project anyway, pboPro will take care to oply include the paa into the pbo

dawn palm
#

damn right

#

on v large projects such as cwr exceeding 9gig of source we removed all references to tga from svn repositories. It was just too damn painfull otherwise.

sour hedge
#

We at 3CB have a VERY large GIT. Shh, don't tell.

dawn palm
#

haha

sour hedge
#

They're necessary though because .paa is compressed, and the compression gets worse on each edit.

dawn palm
#

huh?

#

you don't edit paa. you edit tga source and take it from there.

sour hedge
#

exactly, that's what I'm saying

#

you need to keep tga's in source

dawn palm
#

we chose not to keep them on svn, just one of the reasons was binarise got confused about file dates.

sour hedge
#

btw, I just converted a small object to use paa's in OB, and still no textures in buldozer

dawn palm
#

converting stale png or tga, and ignoring fresh ones.

sour hedge
#

Yes, that is an issue. When you edit the tga, it's necessary to delete the associated paa so that it reconverts it. Bit of a pain.

dawn palm
#

9gig of pain

sour hedge
#

no pain, no gain ๐Ÿ˜‰

dawn palm
#

re your texture point it to something pre-existing in the a3\folders and check the result.

#

doesn't matter if it's blue black or green with pink spots.

smoky halo
#

gotta run to a exam, good luck with buldozer ๐Ÿ˜›

sour hedge
#

thanks for the help Lappihuan

#

repointed texture to blue/pink spots texture from a3 (took ages to find it), no texture in buldozer

#

I have to head off too. Thanks for your help too Mikero, much appreciated.

limber garden
#

I may have missed if this was mentioned, but in your OB options do you have "Path for textures" set to P:\ ?

sour hedge
#

Buldozer texture issue solved... for good reasons which escape me at the moment (need @vernal cosmos for that), we (3CB) do our development within a sub-folder on P:. Inside this subfolder (P:\UK3CB) we have a symbolic link for the a3 folder.

So no, our OB texture path reference was set to P:\UK3CB\ . However, changing it to P:\ didn't help either during tests earlier, presumably because it broke the path to texture.

What I have found does fix the issue is to copy the P:\bin\ , P:\core\ and P:\dta\ folders into our P:\UK3CB\ folder. Presumably these can be symbolically linked too, will need to check that.

Thanks to those that helped. Now I've found a 'fix', we can decide how to optimise our work environment. I've typed it all out here, in case any other groups have similar issues with what is probably a non-standard set-up.

candid scroll
pearl beacon
#

sizes have to be powers of 2

#

eg 64*64, 64*128, 256*256, 512*1024... etc

candid scroll
sour hedge
#

Doesn't he need to add the correct extension to the file name for the conversion process? ...insignia_co.paa or ...insignia_ca.paa

candid scroll
#

I don't see how a file name could possibly influence colors ?

candid scroll
#

Allright, I just need to rename it or reconvert with the new _ca or _co suffix ?

sour hedge
#

Yes.
Change the name of your tga to ...insignia_co.tga. Then convert it to .paa with TexView2.

candid scroll
#

Even if it is .png files ?

sour hedge
#

As far as I understand it, at some point your image will get converted to .paa for packing in the pbo, and at that point it has to have the relevant suffix.

candid scroll
#

Thanks @sour hedge
But still no changes.

sour hedge
#

Did you try bringing the object to the top of the stack?

smoky halo
#

@sour hedge why would you have a3 symlinked in your project dir?

#

a3 needs to ve referenced via P:\a3 otherwise your references wont work ingame

#

And if you decide to do a full pack of your namespace by crunching P:\UK3CB you will repack the whole a3 data into your namespace

sour hedge
#

Yes, apparently we don't need to use a project subfolder with symbolic links anymore. I've moved the mod dev into the root of p:\ and all is well once again with the universe.

candid scroll
#

@sour hedge What do you mean by Did you try bringing the object to the top of the stack?

sour hedge
#

Select the object with the insignia texture. Faces > Move Top.

pearl beacon
#

mod.cpp also has some color parameters, and CfgMods I think

dawn palm
#

we don't need to use a project subfolder with symbolic links anymore.

this brilliant piece of logic was caused by binpbo for arma 2. which required a copy of (most of) the p: drive to ALSO be in your\project

#

arma2 wasn't at fault here, binpbo was never fixed by bis.

#

Arma2p (not arna3p) created a WRP_OBJECTS folder that you had to copy into every single project you worked on because at that time mklink wasn't easily obtainable for the os.

#

pboProject came into being specifically to get rid of that bullshit because bis couldn't.

#

and the same perverted logic persists to this day with bis binarise which requires a duplication of almost everything on p:\ into p:\temp.. But since this is managable by coding, most of you don't notice that pboPro silently does that for you.

#

and along comes addon breaker from the same company that gave you above ๐Ÿค“

dawn palm
#

arma3p update:

  1. headless operation now achieved by patching as before OR command line

arma3p/Z

will automatcally extract to the Z: drive

if you don't have a z: drive, that's your problem. you are supposed to know what you're doing if you don't want prompting.

  1. shortcut and icon now placed on desktop (optional)

  2. good bye bis registry coz you keep moving goalposts.

I now use Stack (overflow)'s heavily modified Py script to achieve the impossible. Thank you thank you thank you.

arma3p will now correctly locate your game on non-standard steam installs.

fiery sable
#

๐Ÿ˜Ž

candid scroll
#

Well I still didn't find a solution to the blue/green tint when converting .png or .tga files in .paa format...
http://i.imgur.com/hfo3e5Q.jpg

I tried using 24bits, _co suffixes... no changes

nocturne basin
#

x^2 is usually the problem for theese things @candid scroll

candid scroll
#

Ratio 2:1 or 128x128, 256x256 have been tried too.

tiny path
#

8bit?

candid scroll
nocturne basin
#

@candid scroll thats because the ORBAT screen adds blue to a certain degree

#

those flags you see there, their texture actually is gray

#

some config entry decides which color they will have

candid scroll
#

wat. I just spent 6hours looking to find out. So I should let it go

nocturne basin
#

you should have asked ๐Ÿ˜„

candid scroll
#

Is this just... random then ? I can't choose my color ? Jeeeesus

nocturne basin
#

you do can
there should be some config entry which decides that stuff

pearl beacon
#

can game binarization (on load) handle model.cfg merges if you have them in same structure on P drive and file patching enabled? or can only pboProject do that?

dawn palm
#

well assuming your model in-game is an mlod, i think the answer is yes, and the reason i say that is because buldozer must look at your config.cpp/bin to activate doors. (am scratching head whether it looks at model.cfg too)

#

whether it will reload with alterations via file patching is in the laps of the Bis Gods

#

i suspect models are not re-applied

#

BUT you can, in fact answer it yourself via the config browser. cfgSkeletons and cfgModlels are built as the game loads just like configs

pearl beacon
#

not really interested in file patching it

#

but just using a higher-level model.cfg to be merged into like pboProject does

#

is what I mean

dawn palm
#

ah ok

#

again, i think the answer is yes, on the assumption that buldozer would behave similarly

pearl beacon
#

hmh, in that case I am doing something wrong or the answer is indeed no

dawn palm
#

haha

#

in truth i've never tried to put doors anywhere but the adjacent config.

#

but pboPro/binarise will, unconditioanally 'work' properly if they're in a parent folder.

pearl beacon
#

yep

#

pboProject does it before it starts bisbinarise

dawn palm
#

what' you're 'seeing' is the result of a test-verify, not the finished result to binarise. which does it's own thing.

pearl beacon
#
building master.cfg from \...\model.cfg
adding \...\model.cfg
#

that's checking then?

dawn palm
#

yes

pearl beacon
#

hmh k

dawn palm
#

and model.cfg is an invention of bis binairse. it actually uses a different rapifier. it's highly probable, that the engine knows nothing about how that mechanism works. if it 'sees' class rotation; it expects it to be in the config.BIN

#

in reality you have to see model.cfg's as a series of hidden and implied

#include "../model,cfg"

the engine itself knows nothing about that unless they coded it to know. and i think we all know the answer to that.

pearl beacon
#

mhm

#

which won't work with CUP's structure

dawn palm
#

well, it has to conform to bis binarise

#

it's a very clever piece of tooling that some guy at bis 'invented' but as usual they don't follow thru fixing the wrinkles.

pearl beacon
#

yes, but game won't go searching for a model.cfg that's not in that pbo already

dawn palm
#

not quite right there jonpas. there's nothing stopping it looking ..\back thru it's virtual file system

#

but yes, it implies the parent model,.cfg is indeed in another pbo with a shorter\prefix\string

pearl beacon
#

yeah, I'll try hacking that tomorrow

#

would save me a lot of time if game would just binarize it instead of clicking back and forth

dawn palm
#

why would you want to impose the lag penalty of the game binarising anything?

pearl beacon
#

because it's faster to allow the game to do it and do something else during that time instead of clicking back and forth to binarise the whole thing

dawn palm
#

i definitately don't understand where you're coming from there. not arguing with you, just can't see the logic.

pearl beacon
#

doesn't matter ๐Ÿ˜›

#

it's way too late to think straight

fiery sable
#

anyone ever had issues when opening object builder and it crashes and closes arma tools? w10, fresh install

pearl beacon
#

opening binarized model?

fiery sable
#

opening nothing, the tool itself doesn't launch and crashes arma tools as well

dawn palm
#
  1. 'play' steam tools once
  2. never run as admin
  3. always use a desktop shortcut, never from steamtools

these are the mantras since the beginning of arma3 alpha when there were hardly any tools for it at all.

fiery sable
#

tyvm

dawn palm
#

welcome to hell:

pboProject now checks when making maps that cfgSurfaces, surfaceChars, and cfgWorlds.clutter are syncronised correctly (no missing or mispelt classnames)

This check can currently be turned off in Setup->, in case i've made a booboo.

vague shard
#

Tweaked: The diagnostics executable should now crash earlier in case of invalid memory addressing. Please report all crashes, especially when the "Forced crash: array access out of range" message appears in the RPT file. We hope to use fixes of such crashes to make Arma 3 more stable in the long run, but need these more drastic measures to track them more effectively.

#

thoughts?

glossy inlet
#

Couldn't they just create a crashdump. Show a message. And continue running?

mental terrace
#

@dawn palm is there anything that can be done about using #include "..\blahblah"

#

inside a cpp/hpp it gives In File ..\ADT\ADT_Defines.hpp: Line 5 drive: specifiers can't be placed in pbo, and have no context in linux servers but works fine in pbomanager without obf

dawn palm
#

that sounds like an 'undocumented feature' to me, lookin now.

dawn palm
#

pboProject

was remiss in not giving bludclot and friends the credit for cfgSurfaces et al. Thank you folks.

#

new version 2.16 fixes an embarrasing (but minor) ctd.

mental terrace
#

@dawn palm if its an #include in an sqf for macros its works, just ..\ in cpp or hpp

dawn palm
#

k

scenic canopy
#

@dawn palm headless arma3p works perfectly, big thanks!

dawn palm
#

@mental terrace ../../ fixed

how this glaring error has survived so long is just one of those mysteries.

mental terrace
#

Thanks ๐Ÿ˜ƒ

dawn palm
#

welcome to hell:

dll:rapify now supports EXEC/EVAL(selectRandom ....); for description.ext only

this produces a non-constant, which can only be used in above file

pboProject now validates source\layers.cfg and checks cfgSurfaces and frendz have stated the probability array correctly

dawn palm
#

wlecome to hell:

prepare for more hair loss

pboProject now validates roadslib.cfg

all hate mail to Uro please

native kiln
#

Thanks @narrow bough

narrow bough
#

lol

scenic canopy
#

@dawn palm damnit, I spent the entire yesterday fixing issues on our Islands ๐Ÿ˜พ

dawn palm
#

burp. send all hate mail to Uro & frendz

scenic canopy
#

Hehe, big thanks for the new checks ๐Ÿค—

dawn palm
#

yep. they come as some surprise. Don't they. the inter<>connection between layers.cfg ->cfgSurfaces->chars->clutter, is all obvious in hindsight. it's getting there without typos and mistaken classes, that takes awhile.

#

Good to hear tho that I haven't made any howling mistakes. so thank you.

scenic canopy
#

where did you get the list of valid values for the road map type?

dawn palm
#

Uro (and from biki re geolod map=)

#

'road'
'track'
'main road'

#

technically you could have any of the other types. rock, house, view-tower

#

but the above 3 are the only road map types

scenic canopy
#

cool

#

noticed both in our and in others maps the usage of path, hide etc

#

I guess those just won't show on the map

dawn palm
#

i'm not entirely confident of that document, even tho i had a hand in writing it.

scenic canopy
#

at least I managed to fixed a couple of invalid types in our layers.cfg

#

very nice ๐Ÿ˜ƒ

dawn palm
#

yeah. layers.cfg is not explained at all, in any of the major map making tutes. Just examples shown, with a wish-and-pray-it-works.

#

so you've reminded me that i too have seen 'path' and it is probably acceptable.

vague shard
#

did anyone ever consider to decode the TB file format?

#

the benefit would be 1) to potentially avoid TB completely at least for certain use cases and 2) to have a working object import for scale and tilt

smoky halo
#

You mean the tv4p or whatever fileformat?

vague shard
#

yep

#

(i guess the other caching formats from TB are not relevant)

dawn palm
#

I've always considered that vbs file formats don't need fixing, compared to mistakes made in odol.p3ds and wrps eg. Perhaps naive, but that's the reason i've had no reason to analyze them.

smoky halo
#

Considering the upcoming BTT from miro which makes TB obsolet i don't think its woth the effort

dawn palm
#

and any problems with BTT will be acknowledged and (good heavens) fixes will be attempted.

#

think i'llhave to go and have a lie down before I faint from amazement.

vague shard
#

well once BTT is here, it may change matters - for now it doesnt exist and given the history to rely on it seems risky

dawn palm
#

damn. balloon punctured.

scenic canopy
#

hopes deleted ๐Ÿค–

smoky halo
#

people were able to survive TB without the X and Y rotation import for over 3 years now ๐Ÿ˜›

#

last time talked with miro he was pretty optimistic about a release soon (tm) ๐Ÿ˜„

vague shard
#

well TB is not fun to work with people say

#

especially the crashing and occausional freezes

#

therefore being able to do pitch and scale in MB/X-Cam would be a BIG relieve

smoky halo
#

the freezes seem to occur only on win8 and win10 and seem to be fixable with compat mode set to win7 or xp

scenic canopy
#

Is it possible to do scaling of objects in game yet?

smoky halo
#

i've seen 1 guys in the terrain_makers channel that couldn't fix it with that iirc it was @violet hare , did it get better since then?

#

@scenic canopy scaling of objects is not possible via sqf afaik, the only thing possible is scaling particle p3ds

scenic canopy
#

Yeah, that would help too ๐Ÿ˜ž

smoky halo
#

MB and xcam get around this by scaling the displayed bounding box of the object

#

but there are to many limitations for such tools to be a real replacement for buldozer

vague shard
#

can you give some examples of those please @smoky halo

smoky halo
#

examples of what?

#

limitations?

violet hare
#

@smoky halo mine works great after about 1-2 minutes of maybe freeze maybe not, I have another friend who freezes on start and can't recover ever

#

he already gave up arma modding

native kiln
#

Either you break ArmA or ArmA breaks you

vague shard
#

@smoky halo yep

too many limitations for such tools

smoky halo
#

@vague shard
first and biggest for me is edit heightmap, constantly ajust the heightmap while placing objects (switching between HM brush and object placer in BD)
no visual representation of object scaling (other than the boundingbox)
no road shape drawing
the need to export it to TB and boot up bd to actually see what you get (why not use bd in the first place?)
and obviously no X and Y rotation

i agree the TB/bd combo is quite oldbaked and limited in features aswell such as brushes, but i prefer it over these ingame editors

#

some stuff might be just my opinion/preferation

vague shard
#

i guess adjusting heightmap is becoming more important with the lower cell size

#

i guess one could do some object visualization via particles or such (but limited and not great either)

#

isnt road shape usually done first/before object placement?

smoky halo
#

depends on workflow, you might need to change some streets to ajust your city layout while you pump it down

vague shard
#

why do you need BD to see what you get? ingame should show you want you have/get - or is this about the slope preview for example?

#

X and Y rotation could be done when an import would be available, no?

smoky halo
#

regarding the heightmap editing, just even leveling the heightmap for buldings, if you place it in xcam and later in bd level the heightmap you can pretty much redo the house composition

#

yes, X and Y would be possible if the transofrmation matrix wouldn't be such a bitch ๐Ÿ˜›

#

regarding what you get, lets say you place something and you scale it, how can you place objects around/in/on it unless you really see the object scaled

#

so what you need to do is export it to txt import to TB now either bake it into a wrp or boot up bd

#

why not just do it in bd where the only place is WYSIWYG

#

oh and i forgot another one, TB/bd works mostly with boundingbox to position the object while the game works with [0,0,0] pos in the p3d, that might be solvable but afaik neither xcam nor MB account for that

vague shard
#

@smoky halo thanks for the insights ๐Ÿ™‡

dawn palm
#

TB/bd works mostly with boundingbox to position the object while the game works with [0,0,0] pos in the p3d, that might be solvable but afaik neither xcam nor MB account for that

umm umm umm.

visitor 3 was totally, 100% accurate in it's placement of objects, and used centre of gravity of the p3d. There are disceprencies in how mb/xcam export that information, or much more likely, how t/b imports that info, but it's placement in t/b using the 2d editor is 100% accurate because it's visitor3 based.

#

as we've come to expect from bis, there are more wrinkles added to sqf functionality to get 'real position' and 'real bounding box size' whatever that means, but the above is factual.

#

put another way, t/b does not use bounding box to place objects. it uses cog.

#

bounding box is used to calculate the dimensions of the icon which has no bearing on the axis point of the object relative to the absolute sea level (and slope) of the terrain

#

whatever mess bis have made of this and will NEVER fix, they've been unable to break the above.

smoky halo
#

what do you exactly mean by center of grav?

#

since when you extend the bounding box of a p3d it shifts the object on the terrain

#

hence why i expected it to position them based on the bb

dawn palm
#

no. there's a setting in the binarised p3d that's centre of gravity of the object, plus it's offset from one of the corners of the bounding box. i don't know and keep forgetting what it's called in oxygen/object builder

#

t_t keeps reminding me, but it doesn't stick.

#

typically, for a building it's central to the bounding box but the height is typically above ground level to account for foundations or basement.

smoky halo
#

hmm center of bb would make sense to me, which also explains why it shifts on extending the bb

dawn palm
#

for roads, it's typically at the lower left corner. it is the position around which an object will rotate or tilt

#

it's not center of BB, it can be, but it's a different measurement.

#

damn, you'd think after all this time, i'd get the name right.

smoky halo
#

center of gravity is not relevant here ^^ that is the point in a model where the mass is evenly distributed to all sides

dawn palm
#

k it's the other one then, offset?

#

either way, you're not being helpful t_d

smoky halo
#

as always ๐Ÿ˜›