#arma3_tools

1 messages ยท Page 22 of 1

nocturne basin
#

Terminology is Important

dapper pivot
#

Aha, you're wrong though, = isn't a command.

nocturne basin
#

Never said that

dapper pivot
#

You said everything other than literals are commands. And literals aren't constants either.

nocturne basin
#
SQF;0;8;_pi = pi
	ASSIGNMENT;0;8;
		VARIABLE;0;3;_pi
		NULAROP;6;2;pi```
dawn palm
#

thingy = rad + 60 produces a constant.

but never let the obvious get in tha way of <bamboozle speak>, or sheer common sense.

nocturne basin
#

Never said that in the meaning you try to insinuate @dapper pivot

#

But I guess dogs are also just barking cats

dapper pivot
#

Mayyybe, but literals definitely aren't constants.

glossy inlet
#

What X39 means is the difference between a value that is directly in the assembly aka push 1 or puish "string" which is very fast.
And something that needs a command call like callNular pi.

#

push 1 are the closest thing to real constants.

#

and yeah = is a command on assembly level

smoky halo
#

๐Ÿฟ

dawn palm
#

callNular pi.
as if anyone not delving into the inner workings of the sqX interpreter gives a damn what it's called.

the sqrt of 9 is 3, it doesn't matter which language is chosen, it has no association with nullar values, and doesn't need further explanaion. In ANY language, that the value is a constant.

glossy inlet
#

The result is a constant yeah. But it is still dynamically retrieved. And I could easilly change it to return 4.

dawn palm
#

who cares?

glossy inlet
#

X39

dawn palm
#

how this discussion degenerated from a simple, informative piece of text about only constants can be used in config.cpp., boggles the mind.

glossy inlet
#

Yeah what X39 started talking about is not related to the config talk

dawn palm
#

well, the people who would have benefited greatly by using exec eval in their configs will have lost interest almost instantly. Very few examples exist of how to because it's coded out by the pre-processor, but bis use it for almost all hud configurations and thermal progressions. This message will have been lost in the noise about nothing.

#

So,,, for anyone still brave enough, read the documentation that comes with my tools on the use of use of exec eval and it's limits. I wont bother here again.

nocturne basin
#

Sqf does not knows constants and even if you do not bother, terms are wrong

glossy inlet
#

does not know*

nocturne basin
#

Anyways

dapper pivot
#

You called a literal a constant though, so I'm not sure what your definition of constant is. It isn't the one programmers use.

nocturne basin
#

Where the hell i did that again?

#

Is it the same way I called it that way as when you took a sentence out of context?

dapper pivot
#

Just that there is only one constant in sqf and that is a value

#

I assume you actually meant literal there, because values can be mutable, which makes them even less constant.

glossy inlet
#

Values are compiled into the assembly. They are not mutable

dapper pivot
#

Why are you calling them values?

#

That's not the terminology for a literal.

#

If we're going to hammer Mikero for calling a constant a constant we can at least call literals literals.

smoky halo
#

guys... ๐Ÿ™„

glossy inlet
#

Don't even know what they are called. A assembly push instruction with a constant passed to it. push 1 instead of push eax or something like that.
How's that called?

#

Is that a constant or a literal or a value?

dawn palm
#

The most helpful thing about exec eval is contained in the following example:

#define THINGY sqrt(6)

var = THINGY;

simply cannot work in a standard c compiler. sqrt is a function.

var = _exec(THINGY);

is what many of you folks have been wishing for.

dapper pivot
#

"Push immediate" in Intel-ese at least. But how that's implemented under the covers really doesn't change the nomenclature one uses to describe the language. Python for example wouldn't have constants either (or M_PI from C wouldn't be one) otherwise.

dawn palm
#

well,, being nular value ian, it's astonishing how most of the world copes with M_PI in just about any trig(function);

dapper pivot
#

In C++ in fact there's a whole bunch of things that don't look like constants but compile that way (especially now with complex mathematical expressions being marked constexpr).

dawn palm
#

ah, but then again, it could be a scalar, as if that matters one brass razoo

#

it's like someone telling me 3.1417... is a tomato plant.

#

so i better stop using M_PI and try desperately to remember it's actual value, remembering of course to always put (float)3.1417 for the terminally anal retentive

dapper pivot
#

You're trying to trick someone into telling you that PI's slightly different from that number, right? ๐Ÿ˜‰

dawn palm
#

haaaaaaaaaaaaaaaaaaaaaaaaaaa

#

what number? apparently it's not a constant, it's a scalar_float, so get your jargon right please

#

someone better tell bis to change their biki and stop using the word too.

karmic niche
#

Woah... I tried to understand this whole today's drama :O

Isn't what X39 is trying to say is that if you use the constant M_PI in C++, it will always be M_PI and can thus be optimized by the compiler (i.e. if someone uses 2*M_Pi, the asm for that will be push 6.28) whereas with SQF you will always have a function call getting the pi value, which incurs a massive time penalty each time? (In which case he's right)

nocturne basin
#

More or less

dawn palm
#

no matter which way you swing the cat, the result of 2*M_PI is a constant, and consequently, it too, allows it to be 'optimised by the compiler' into binary code via the use of exec eval. (in model.cfg's exec eval is always implied, hence no requirement to state it literally)

#

it's pointless arguing that becuase it's a series of function calls in sqX (not just sqf btw) it's not really constant and can could change. The result at the time of the compile is known, and that is all that matters.

#

the end result is that the compiler produces push 6.28 for that sqX expression.

#

2*pi is a bad example to use since there's no need to use exec eval at all. 'sqrt 9' in exec eval produces push 3 because the result is known at compile-time There is NO equivalent in a c compiler for that expression.

#

and the 'time penalty' for using sqX is not relevant to baking code except in so far as the crunching will take a little longer.

#

please bare in mind, that you will never, can never, see these sqX statements in config.bin, they have been replaced with constants

#

...and before someone shouts, ah but init="some sqX expression". That aint sqX, it's a "string"

#

bis did a tremendously good job with this. First introduced in OFP when they knew a thing or two. By the time of model.cfg's they realised that the exec and eval calls weren't even necessary. The pity of it is, they did not follow thru with that and modify the other paramfiles such as rvmat and config.cpp to react similarly. A much larger audience would be aware of this inbuilt functionality of the bis compiler if they had. (including btw, some of their own devs)

nocturne basin
#

@dawn palm as I already said: in Config context that May be true but not in sqf context

#

Which was the whole thing to begin with

dawn palm
#

without wishing to increase the argument, you mean paramfiles in general, not just 'config.cpp' The same rules apply, even to fsm files.

nocturne basin
#

Everything that gets baked

#

But sqf itself is not capable of that

dawn palm
#

and neither, in your context, are any sqX statements. sqF, sqS or 02script.

#

one tends to get myopic about sqf, it's a larger subject than that.

dawn palm
#

tools Update

deFxy and Eliteness re-coded to handle the shiny new fxy 1.02 fonts
full unicode (or utf8) listings to NameOfFxy.txt for all displayable glyph characters. Their kerning properties, widths and etc

Ofp's codepage850 is fully supported and displayed 'properly', including the russian and korean codepage kludge replacements for this font.

#

Stunning new noto CJK font introduced with version 1.02 that supports 15, 845 glyphs of Korean AND chinese AND Japanese AND us-ascii, all in one font. Remarkable, and well worth a look.

#

well bloody done, bis.

glossy inlet
#

The result at the time of the compile is known, and that is all that matters. It's not though. I can change the pi function to return something different. And because it's a dynamically called function and not a constant. I can do that.
:kappa:

dawn palm
#

then whatever you change it to, becomes the baked in constant or is irrelevant if already baked. exec evals, aka sqX statements are replaced with constants. in the binarised bin. How difficult is it to understand that basic.

dapper pivot
#

You can change the page flags on a .text section memory page in a C program and start changing constants. Doesn't mean the C reference manuals meticulously avoid calling them "constants" because there's a way to hack them to different values.

dawn palm
#

rad +30 produces a float. it's ridiculous to make comments that you can 'change it'

#

I rarely encounter so much bullshit coming from otherwise very clever people.

dapper pivot
#

You've just never had the pleasure of working with an office full of programmers before.

dawn palm
#

i've run an office of programmers.

dapper pivot
#

That's different, they probably fear you.

#

๐Ÿ˜‰

dawn palm
#

indeed they do. I wont tolerate blabble.

#

you want to talk nonsense. go to the pub, at work, work.

#

always put your money where your mouth is.

glossy inlet
#

I mainly care from the performance viewpoint.
A command call is way more expensive than the push of a constant

#

writing the value of pi in your SQF code is faster than using the pi command.

dawn palm
#

here we go again, 'performance' has almost no relevance to simply crunching a config.cpp. Real time performance in game is a different story, but let's not twist the plot dedmen to make this nonsensicel argument rational.

dapper pivot
#

And if you want fast you could probably just "#define pi" in the preprocessor.

dawn palm
#

for all that it matters, you can:

#define PI "my mother's underwear"

THAT produces a constant,. so let's move on please to something a little more educational and informative .

dapper pivot
#

No reason you can't do it with the lowercase pi token. ๐Ÿ˜ƒ

#

Mulle also discovered something amusing about Enfusion, it has constant folding but only one level; i.e., "1 + 2 + 3" becomes "3 + 3".

dawn palm
#

#define pi 6 *angstroms

produces a constant. What the hell is so difficult to understand about that?

glossy inlet
#

Yeah. But X39 and I were mostly talking about SQF and not configs. Which we both told you before ๐Ÿ˜„ And you keep arguing about config.

dawn palm
#

the discussion was about configs.

#

if you want to talk about the inner workings of sqf, join the sc ripters channel where it will be appreciated.

dapper pivot
#

...and he (Mulle) also discovered that the VM isn't that slick.

glossy inlet
#

The argument was started by there is no constant Known at compiletime in sqf Talking about SQF right from the beginning.

 thing is still: sqf does not knows constants 
They May be baked by executing it in Configs
But they are not actual constants

The discussion was never about configs. Except that X39 talked about SQF and you swung back to config every time

dapper pivot
#

Why does it matter if you're talking about SQF or configs?

dawn palm
#

this might not be relevant to the question,. but there's another category of sqf. 'Apparent' constants known only at game/engine load time, vs constants known at compile time.

this started the sillyness.

glossy inlet
#

Because they are different. What X39 was talking about is true for SQF. But completly false for baked configs.

dapper pivot
#

Didn't Mikero say that the engine's normal SQF evaluator is used to evaluate the config?

dawn palm
#

anyone who needed to take advantage of sqX constants in configs has already done so and already looking at the documentation for exec eval. So i've nothing more to add.

#

yes it does

glossy inlet
#

Sure it does. But for baked configs that doesn't matter. As the final result will always be a constant that's compiled into the baked config.

dawn palm
#

hoooray!!!!!!!!!!!!!!

#

nothing but nothing beats, being able to say IN A C COMPILER

thingy = _eval(sqrt 22);

bis should be congralutaed for this bit of cleverness.

glossy inlet
#

I find it a bit sad that you can't compile the expression into the binarized config. So that it get's evaluated at game start instead of config pack.
Could be way more useful that way. But can still just pack unbinarized config to get around that

dapper pivot
#

There's some experimental versions of C that do neat things like that. They're designed for embedded systems. Some of the code gets run on the desktop, and then the results are "frozen" and the rest of the code runs in the little memory starved chip.

dawn palm
#

yes to above dedmen. productVersion is one such example of what you talk about

dapper pivot
#

Doesn't using the proprocessor during binarization do exactly that?

#

(Compile the result of an expression into a binarized config)

dawn palm
#

in the case of product version it is only known at engine load time (not game time)

dapper pivot
#

As is anything to do with screen size.

dawn palm
#

it's that 'time' in the process where the engine is desperately building the master config.bin anyway

#

another excellent example Ian

#

but, in fact, this is the reason why desc.ext can never be (pre) binarised

#

there is in fact one more 'type' of variable that was last used in xbox elite:

thing= rad +60; // produces a string
var=@thing;

replaces var with the contents of thing

#

cfgConvertFileChange and it's friends still support that syntax, but it's never been documented (by me, anyway)

feral nova
#

Ok fixed that one, but its still not letting me use postInit = 1, I can pack with pbo manager, and it all works fine.

glossy inlet
#

post your full config where you have the problem

feral nova
#

if I remove postInit = 1, its packs fine.

glossy inlet
#

Line 33 missing semicolon

feral nova
#

i have tried

class houseInit{
          postInit = 1
        };
``` and 
```cpp 
class houseInit{postInit = 1};
#

have tried that too.

#

sure

glossy inlet
#

moving it up one line won't fix a missing semicolon

feral nova
#

i have tried with a semi colon

#

welp, I did try with a semi colon, .. now it worked just to prove me wrong -.- ty

glossy inlet
#

See. I told you it's #arma3_config and not a problem with pboProject ๐Ÿ˜‰

feral nova
#

๐Ÿ˜‰

dawn palm
#

also the 1st url you posted had nothing to do with the problem of missing semi colons, that was a mismatch between the dll version and the pboProject version. Since then, obviously corrected.

native kiln
#

@dapper pivot enscript gets weirder and weirder with the second

sick verge
#

?

#

What do you mean?

nocturne basin
#

anyone already REd the instruction set enscript uses?

#

and scope system?

glossy inlet
#

yep

dapper pivot
#

X39: If you go back a bit in this channel I mentioned how you can write your own Enscript and have DayZ or ToM dump out the bytecode.

#

Mulle has found quite a few new features in the DayZ version of the script engine so that's probably the best reference.

#

There's also a reference .chm in both and of course all of the DayZ/ToM code that can be used as a language reference.

nocturne basin
#

i do know that @dapper pivot ๐Ÿ˜‰
question was just if somebody already did the efford to actually figure out the different instructions
but already got in contact and enfusion looks more like confusion right now so no custom VM yet

glossy inlet
#

There is custom VM

nocturne basin
#

mhh?

glossy inlet
#

Have seen that somewhere

#

but there is a custom VM behind that

#

Or what do you mean?

nocturne basin
#

custom, open-source, community-made VM

#

pretty much my SQF-VM project but for enscript

dapper pivot
#

If you enjoy that kind of work have you ever considered working on a non-game language VM or an emulator?

nocturne basin
#

already thought about creating a VM language myself

#

but i lack ideas for useful languages

#

SQF-VM was my last project but it lacks contributors

dapper pivot
#

Have you played with parser generators and grammars?

nocturne basin
#

i used to use them

#

but nowadays i just use a generic pattern to write them myself

dapper pivot
#

Yeah, SQF doesn't really lend itself to a parser generator as well as something like C.

nocturne basin
#

C would neither do good in that regard

#

but would be simpler to implement as you do not have to solve the pred. yourself

dapper pivot
#

C's fine for LALR parsing..

nocturne basin
#

but could introduce rules for it

dapper pivot
#

From what I recall C is strictly LALR(1); C++ not remotely.

nocturne basin
#

but btt: i lack ideas for a custom lang
was thinking about some useful scripting language that allows easy async work

#

simple threading, all working etc.

#

but i cannot come up with a useful syntax

#

or actual specs

dapper pivot
#

You might want to spend some time learning older languages then, they're a treasure trove of good and abandoned ideas.

nocturne basin
#

i may just do another dive into the graphics world as next project
OpenGL or DirectX
not sure

dapper pivot
#

Like Smalltalk (people say Java is like Smalltalk but that's a joke if you've ever learnt Smalltalk).

#

Yeah, or do that. ๐Ÿ˜‰

nocturne basin
#

last time did not ended so well ๐Ÿ™ˆ
had massive FPS problems when actually rendering simple scenes but with shaders etc.

#

and my font rendering was horrible too

#

but it was just to learn a few things

#

thus it was ok

dapper pivot
#

In OpenGL?

nocturne basin
#

yeah

dapper pivot
#

Read more about how GPU's work internally and use the GPU performance tools to capture and time frames.

#

But yeah, Arma VM's are a bit limited in usefulness because there's only a small number of people writing SQF serious enough to warrant testing it outside of missions.

nocturne basin
#

@tawdry gazelle is useful for testing small expressions

dapper pivot
#

Although a good lint'er is always popular. ๐Ÿ˜‰

#

You could look into how the LLVM static checker works; it executes the program in a kind of VM but instead of having regular values it tracks the set of possible values a particular variable has in time.

glossy inlet
smoky halo
#

That is looking pretty tasty

glossy inlet
#

Maybe I can add the diag_captureFrame stuff to that too later.
This feels much better to use than the ingame viewer

#

Also I can't take credit for the UI ^^ I only made the Arma side backend of that and some minor tweaks on the UI.
This can also profile over network. meaning you could now profile unscheduled scripts on server

dapper pivot
#

Looks fantastic, how'd you get it going? Does it tap into existing profiling support in the engine?

glossy inlet
#

Intercept

#

redirects the compile and compileFinal commands and injects custom VM instructions

#

They set a local variable. And start the measurement. And when the variable goes out of scope the measurement stops

dapper pivot
#

Neat, how much slower do scripts run under profiling?

glossy inlet
#

don't know yet

dapper pivot
#

Would it possible to do line based profiling?

#

(Assuming the overhead doesn't swamp the line timings)

#

Though I suppose with SQF it's more about finding hotspot functions when you've got 100's of scripts running rather than looking at line level performance.

glossy inlet
#

"test";"test"; profiler loaded but disabled 0.0024ms 0.0024ms 0.0023ms
It's a bit hard to measure that low. I think that's getting into the precision limit.
profiler enabled 0.0032ms 0.0041ms 0.0038ms

#

Though this is running two profilers now. My custom one and the brofiler one for the UI.
Gonna change it later to only run the one that's wanted

#

Yes line based is possible. But i don't see use. Right now it profiles every call and there are scripting commands to create custom scopes wherever you want

#

I also thought about profiling every script command call. But that's overkill and would most likely kill performance

dapper pivot
#

What if you did it for each scope. (i.e. for fnc_blah it spent a total of 4 seconds doing 20 calls of setPos)?

glossy inlet
#

What do you mean?
Accumulate the time spent in setPos?

dapper pivot
#

Yeap, in each scope.

glossy inlet
#

would still need to measure each setPos call then

#

unless they all happen to be next to eachother

dapper pivot
#

Yeap but that's not really different from a C++ profiler.

glossy inlet
#

C++ profilers are usually sampling profilers. This is event based

dapper pivot
#

I suppose one issue with profiling too is it changes how much work the scheduler does per frame if you make it too slow.

glossy inlet
#

no

#

I only profile unscheduled

#

Because scheduled would pause the script in middle of a scope. And I only measure start/end time

#

That would make a scheduled script show up as running over multiple frames

dapper pivot
#

Couuld you hook into the scheduler and somehow pause the timers?

glossy inlet
#

yep

#

But that wouldn't be battleye compatible

dapper pivot
#

Unscheduled is the hotspot though given that it's the one that can drop framerates.

#

And what you're doing now is? ๐Ÿ˜ƒ

glossy inlet
#

And it's the most interesting for everything I have to do with CBA/TFAR/ACE/etc

#

I am not hooking anything. I'm just calling engine functions and doing "legit" stuff

#

I know battleye can detect hooking. So that's not an option.

#

I'm planning to make a non-battleye version that also displays everything from diag_captureFrame

dapper pivot
#

How are you hooking compile though?

glossy inlet
#

Intercept RSQF.
replace the function pointer in the SQF command table

dapper pivot
#

And that doesn't upset Battleye?

glossy inlet
#

nope. Atleast not that I know

#

Battleye can't know who added/changed something in that table

dapper pivot
#

Is Intercept whitelisted?

glossy inlet
#

not yet ^^

#

too heavy in development to be worth requesting whitelisting for

dapper pivot
#

Is Intercept statically linked with the code that uses it? Or does it LoadLibrary the actual application?

glossy inlet
#

Intercept core loads the plugins.

#

And the plugins have the clientside library statically linked

dapper pivot
#

Yeah, so the plugin would need to be whitelisted too?

glossy inlet
#

yeah

dapper pivot
#

Wouldn't hooking an SQF function be the same as replacing compile?

glossy inlet
#

That's why I'm quite sure that intercept itself will be whitelisted. Because it cannot be used to do bad stuff. Unless the plugins do bad stuff, which also need to be whitelisted

#

No

#

Function hook writes into Arma's read-only memory

dapper pivot
#

Oh, we were talking about the scheduler though, where you would have to mess with other things.

glossy inlet
#

replacing a pointer in a dynamically allocated array on heap is undetectable

#

Yeah. I already did that in my Script debugger which also had a profiling function

onyx helm
#

Does anyone know why Buldozer would try to start normal arma 3 even with params

dapper pivot
#

Sure it isn't grouping -buldozer with some other part of the command line?

#

(maybe you've got unclosed quotes?)

onyx helm
#

"P:\buldozer_x64.exe -buldozer -name=Buldozer -window -noLand -exThreads=0 -noLogs -noAsserts -cfg=buldozer.cfg"

#

pulled from Object Builder

dawn palm
#

it possibly ? can't find buldozer.cfg.

you are also an accident waiting to happen using P:\buldozer. Use arma3(x64) directly. If you don't know how to set that, use arma3p to do it for you.

onyx helm
#

I'm assuming thats the "Use Buldozer from the install directory of the game" option in configurator?

dawn palm
#

I do not know why bis persist with this unless it's deliberate and intentional gotcha.

#

yes

#

I am unaware of how bis setup anything

onyx helm
#

hmm still no joy

#

E:\Games\steamapps\common\Arma 3\arma3_x64.exe -buldozer -name=Buldozer -window -noLand -exThreads=0 -noLogs -noAsserts -cfg=P:\buldozer.cfg

dawn palm
#

check there is, in fact, a p:\buldozer.cfg

onyx helm
#

there is

#

I've tried deleting it and re-doing configuration

dawn palm
#

well the above lien lokks fine to me too

#

aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaah

#

bang

onyx helm
#

it may be worth noting I originally had an issue with it saying "Operation takes a long time" everytime I tried to open Buldozer

dawn palm
#

E:\Games\steamapps\common\Arma 3\arma3_x64.exe

#

"E:\Games\steamapps\common\Arma 3\arma3_x64.exe"

onyx helm
#

so I tried completely reinstalling

#

does it need to be in quotes inside Object Builder?

dawn palm
#

irrelevant. spaced filenames need to be in quotes. always

#

(sorry, it is relevant of course, but the above is generic to everything)

onyx helm
#

changed that no luck ๐Ÿ˜ฆ

dawn palm
#

well fine. but that aint your original problem is it.

#

of course you'll 'allow game launch'

onyx helm
#

well the problem i was having was everytime I tried to open Buldozer it would time out and say "OPERATION takes too long"

#

so I reinstalled

#

now it does that

#

and just launches normal arma 3

dawn palm
#

temporarily change to arma3.exe, not x64

#

bis might have moved goalposts

onyx helm
#

no luck

dawn palm
#

well it needs someone cleverer than me, because your launch line looks fine.

onyx helm
#

bis pls

#

watch im gonna try it one day and it will just magically work

dawn palm
#

not if they can do anything to stumble you.

onyx helm
#

sure seems that way

dawn palm
#

it is that way. They aint your friend, they don't want you modding their game, but they have to give the appearance of providing (what turns out to be) bullshit tools

scenic canopy
#

That steam popup breaks buldozer for me

dawn palm
#

is this a newly introduced thing?

onyx helm
#

dunno

#

havent heard of it happening to anyone else till now

dawn palm
#

just wondering if latest game update has caused this panel to happen, or, if it's beeen around for some time.

scenic canopy
#

I had it for a few weeks and couldnโ€™t use buldozer

#

Then it disappeared and buldozer worked fine again

dawn palm
#

scary

#

at the least it appears scorch aint doin nuthin that he shouldnt'

chilly breach
#

I usually get that steam popup when I forgot to start steam / run steam before trying to use buldozer. (Steam would start itself, the popup gets shown but on confirmation it does nothing) But I am sure you can't have missed that right.

onyx helm
#

yeah no am running steam

jade brook
#

the response for mod ist always null

vague shard
jade brook
#

Ok i will do that thanks

karmic niche
#

Why aren't you using already implemented and proven to be working libraries instead of implementing one yourself?

#

And even if you really don't want to use libraries, you could probably take a look at them and compare with your code

jade brook
#

I found querymaster but mods return there also as null

jade brook
#

Name Players etc works fine but mods dont

glossy inlet
#

could be that they just don't work then

#

I know I used that before to get playercount and missionname

#

but I don't remember if mods worked

jade brook
native kiln
#

Slowly but steadily making my self hostable api.. annoying work ๐Ÿ˜„

#
{
    "errors": [],
    "isValid": true,
    "body": {
        "arguments": "+login --- --- +workshop_download_item 107410 779552248 validate +quit",
        "status": 1,
        "result_code": 0,
        "result_standardout": "Steam Console Client (c) Valve Corporation\r\n-- type 'quit' to exit --\r\nLoading Steam API...OK.\r\n\r\nLogging in user 'ij1andv56og1Hr0RpjXR' to Steam Public...Logged in OK\r\nWaiting for user info...OK\r\nDownloading item 779552248 ...\r\nSuccess. Downloaded item 779552248 to \"H:\\Dev\\CSharp\\XSV\\XSV\\bin\\Debug\\netcoreapp2.0\\Components\\Instances\\steamcmd\\BLK5Z6PAYQ\\Bin\\steamapps\\workshop\\content\\107410\\779552248\\433861180661208955_legacy.bin\" (1826750 bytes) ",
        "result_standarderror": ""
    }
}```
scenic canopy
#

๐Ÿ˜ƒ

nocturne basin
#

I hope you sanitize your input

native kiln
#

@nocturne basin The normal way is to use specific endpoints for specific tasks, this one is just for direct access if you need it for some reason

#

but yeah I do

vague shard
rancid relic
#

quite risky

dawn palm
#

certainly seems to be, but anything restoring the marvellous first game is worth a look

#

the campaigns, for ofp, especially by mod authors are better than anythng that's ocurrred since. It's become just play for the stupidly named blufor with an american flag attached.

#

bis have forgotten that what made this engine something other than a 'me too' shoot em up is their European heritage where you wanted to play on the Russian side.

#

Back to basics bis, if you dare, instead of just another 2035 storyline with BFG

#

I bet most of them don't even know who viktor troska is because he never drove a sci-fi tank.

#

oh, and while on that subject, i bet it never occurred to you bis to make civilians something other than a 4th side with same weapons. If you need a lesson to learn try any of the Bardosy missions of ofp.

#

Bardosy incidentally took one look at the mess you made of your own game and left.

#

Ah I was wrong about the civilans, bis have misogny++ where the females can only carry handguns. And you wonder why you lost half your audience. I'm betting you never heard of the Israeli sgt Maam (The AvonLady), who provided you with the first, uniform addon manager, She took her female squads to other games that 'allowed' her to be who she is.

dawn palm
#

i wait for the day Bis where you just go away, so that a revamped flashpoint, waiting in the wings, can be released. I might even call it Dragon Risen,.

scenic canopy
#

Iโ€™m torn between wanting JIP or not for OFP

#

If it had JIP I wouldnโ€™t have bothered with Arma 1 at least

#

But it was quite charming to not have JIP too

#

Starting a game of cti / bastige island an early weekend morning

#

If you didnโ€™t arrive in time then you had to wait until next event or a ctd restart ๐Ÿ˜›

dawn palm
#

oh, yes, how well i know that feeling. In that galaxy far away and a long time ago, we all assumed arma = ofp+ jip. It took being part of arma1 beta to dissolution all that took part in that fiasco.

#

They did not even know who Kegetys was, nor the galaxy of stars that ran like hell.

dawn palm
#

dll update. another layer of obfuscation added to keep the parasites screaming in frustration.

rancid relic
#

Well, you would be surprised then - there are still quite few veterans from ofp in BI

#

There is even some internal back up of a von lady faq ;)

spiral forge
pearl beacon
dapper pivot
#

Mikero isn't a tool maker?

glossy inlet
#

You might have missed the now deleted messages

dapper pivot
#

Aww, what happened?

glossy inlet
#

small rant about how crap Arma 3 is ๐Ÿ˜„

dapper pivot
#

Everyone's getting restless being that it's the silent time just before the Arma 4 announcement.

#

...When they should be reverse engineering DayZ to get a head start on Arma 4 tools.

sick verge
#

I would if I owned DayZ ๐Ÿคท

normal wigeon
#

restless already? well, guess everyone needs to learn to keep their feet still for another 2 years at least^^

sick verge
#

True that ๐Ÿคท

spiral forge
sick verge
#

I have even done that today ๐Ÿ˜›

nocturne basin
#

@normal wigeon nevar
Will have an emulator ready when arma 4 Releases

Not filled with arma 4 Infos but the full Script lang will be Supported!

nocturne basin
#

rly need to start memorizing the terms for shit ...
currently need something that acts like this:

magic = circlemagic(5); // 5 --> size of the circlemagic
magic.push(1);
magic.push(2);
magic.push(3);
magic.push(4);
magic.push(5); //circlemagic is full, internal array index is set to 0
magic.push(6);
magic.push(7);

//magic--> { 6, 7, 3, 4, 5 }
//magic[0] --> 6
//magic[6] --> error```
pop etc. not needed
nocturne basin
#

current implementation i use for it:

#pragma once
#include <array>

template<class T, size_t size>
class circularbuffer : public std::array<T, size>
{
    size_t curindex;
public:
    inline void push(T val) { if (curindex >= size) { curindex = 0; } (*this)[curindex] = val; curindex++; }
};```
maybe this gives better imagination of what i am seeking for
glossy inlet
#

What is the problem with the implementation?

#

insert. Then curIndex = curIndex >= size-1 ? 0 : curIndex+1
Buit that's essentially what you just wrote

nocturne basin
#

memorizing the terms for shit

#

naming

glossy inlet
#

It's a circularBuffer yeah. What other naming? ^^
c++ std standard would be push_back/emplace_back instead of push

nocturne basin
#

just that it would not "push_back" but rather push where the index is ๐Ÿ™ˆ

#

currently fiddle around with vulkan and that is why i need to floor eg. frames
thats why i need those "fancy" things

glossy inlet
nocturne basin
#

which is horrible ... push_back simply does not makes sense here :/

glossy inlet
#

why?

nocturne basin
#

though

glossy inlet
#

It pushes to the end

#

but the end moves around

nocturne basin
#

that can do more stuff

glossy inlet
#

and you need push_back to be standards compliant

nocturne basin
#

that is the point
it moves around

#

i guess i need to ... not happy with it
but well

#

will alter ๐Ÿ™ˆ

glossy inlet
#

I guess alternative is what std::map uses.. aka insert but that's not really.... Like.. usually insert takes iterator

nocturne basin
#

y

dapper pivot
#

push_back is part of the SequenceContainer concept which needs a lot more than just that to be satisfied.

eternal falcon
#

Hey! Any param to open a map to the Eden Editor from the exec?

#

Ignore me, found it

normal wigeon
#

what is it?

vague shard
eternal falcon
#

Just put the mission directory and it opens in EDEN, for example arma_x64.exe "C:\Users\user\Arma 3\mpmissions\SomeMissions.Stratis"

broken anvil
#

Is there a way to access what profiles a player has from a external program?

glossy inlet
#

Yes. They are by default stored in my documents/Arma 3 or My documents/Arma 3 - other profiles

#

If the user is using a different profile directory via a custom start parameter that you don't know.. then no.

broken anvil
#

hmm ok

karmic niche
#

Although I'm not using the Arma 3 directory (without the - other profiles suffix) because I've never seen any of my (test) profiles end up there.
Do you know when that directory is ever used to store profiles, actually? @glossy inlet

#

Fun fact: the profiles are saved on disk utf-8-encoded and then urlencoded.
...and the official Arma 3 launcher reads them wrong ๐Ÿ˜‚ (try having a + in your profile name, for example, AFAIR)

glossy inlet
#

Only the main profile is in Arma 3 directory. Aka the one with your username

karmic niche
#

Good to know. Might have to fix my code, then. Thanks

broken anvil
#

Thanks Stack, however I am doing a similar project towards use but using C# D:

elfin oxide
#

Look at my pm for an invite link

full drift
#

@dawn palm your skype is sending out dodge links

dawn palm
#

thanx 4 heads up

full drift
#

np

vague shard
#

As a note, many of you have been asking for a 64-bit version of Binarize and also the return of the sources of the core configs. These will arrive in the Tools Dev-Branch in the upcoming weeks. We just need a little more time to polish them.

loud sapphire
#

nice update to name sections in this last update

dawn palm
#

note also re the 64 bit version, new mapinfo icons have been introduced for minForestSquares/Rocks on the 2d display of maps. They are used in conjunction with the existing shaded areas and are a new wrinkle in the wrp format. (credit snakeman)

vague shard
#

@dawn palm but no change in the config definitions (cfgWorlds or otherwise) right?

dawn palm
#

Correct. None. The new mapinfo icon 'types' are only relevant to the Glandscape code of the engine (which generates the 2d map). The types themselves are a new wrinkle, only when decoding the wrp format. This alteration is pure bis binarise which will do the same thing to old, or new, maps & configs.

#

It remains to be seen however if the engine itself has been updated too. Snakeman has not reported any visual differences.

rancid relic
#

@vague shard some params were added in January, not sure if you are aware of them
minTreesInForestSquare = 3;
minRocksInRockSquare = 3;
minObjInTownSquare = 1.4;

midnight kernel
#

The first two have been around for longer than january (been using them for 1-2 years). The thrid one is new. What does it do (as Towns are have no special marks on the map besides keypoints)?

keen owl
#

How to get Mikero's MakePBO to find my include path properly?
I have folder:
myAddon\main\config.cpp
myAddon\main\$PBOPREFIX$ with the line z\IRG_WW2\hotfix\main
myAddon\main\script_component.hpp
myAddon\main\script_mod.hpp

In script_component I have: #include "\z\IRG_WW2\hotfix\main\script_mod.hpp"

Yes when I pack I get an error it cannot find script_mod.hpp

#

Also later I also plan to include #include "\x\cba\addons\main\script_macros.hpp"

#

Note I run MakePBO on myAddon\main

#

Alternatively can I get it to not verify include paths?

keen owl
#

I temporarily get around it using -NG but would still like to know a proper procedure

dawn palm
#

#include "\z\IRG_WW2\hotfix\main\script_mod.hpp"
answer is simple. That file does not exist at "p:\z\IRG_WW2\hotfix\main\script_mod.hpp"

#

you've convinced yourself it does, but file P:\file\refere\rences\cannot\lie

onyx helm
keen owl
#

@dawn palm No it does not. I am not even using a P drive. But it does exist when Arma loads it (the pboprefix-ed paths)

#

What about CBA then, or other addons? Will I have to unpack every dependency onto P drive?

#

And then my dependencies, dependencies and so on.

onyx helm
#

ok well now buldozer just crashes on "Processing Command Line..."

#

so progress...i guess

#

alrighty I fixed my issue with Buldozer by setting it to run from the a3 install in the configurator

dawn palm
#

Will I have to unpack every dependency onto P drive?
of course. my tools are never going to accept your word for it that you have no typos in your file paths.

#

My tools go much deeper than the simple test of seeing if you know\what\your\talking\about. They inspect the p3d to 'see' if it's the right type, ditto, rtm files for static cargo poses, ditto rvmats. and, especially, wrp, fsm, and model.cfg's

#

They also ensure that the addon you think you need, is in fact 'there', and will add to that list if you've got it slightly wrong.

#

If you ever move into terrain making, you have a snowball in hell's chance of creating a wrp that works, unless the P:\drive is fully populated. Bis binarise relies on that as a fact.

#

Unkown to you, binarise silently populates p:\temp\folderS (plural), with every addon you have ever made, and every addon.config you accessed from your addon. (and every rvmat too)

vague shard
#

@Muzzleflash#7409 makePbo -N

dawn palm
#

he's already using that and was asking how to avoid doing so.

onyx helm
#

is it not possible to view textures in buldozer when running from the install directory of the main game?

#

I get this error "SteamAPI initialization failed. Steam features won't be accessible!" whenever running it from P Drive and it launches fine when running from game install but textures dont display

dawn palm
#

running from the game is the correct method. you have an issue telling buldozer where the p drive is. probably it's cfg. either that or your p drive doesn't exist in admin mode etc.

onyx helm
#

hmm

dawn palm
#

object builder or terrain builder?. look at your cmdline settings

onyx helm
#

ok yeah that was it

#

admin

#

thanks mikero

#

finally fixed this shit weeks later

dawn palm
#

yep. we all wear the same Tshirt

onyx helm
#

and BIS takes every opportunity to splash mud all over it ๐Ÿ˜ข

dawn palm
#

wherever possible, avoid the temptation to be a super user. the drives vary from non-existent, to different, to possibly the same. PLUS admin mode is not what you think it is. It is 'microsft office use only', not, a super user like linux, and has several restrictions on what you are able to do in that mode.

#

most people think it's a go-anywhere, do anything you like mode, when, in fact, it severely restricts what gui dialogs are allowed to do. drag n drop for instance is disabled.

#

... and for almost all installs of anyone's software, the registry settings for that software don't exist.

keen owl
#

@dawn palm Thanks for the explanation. Certainly appreciate the effort you have put into detailed error handling in your tools.

For me, right now, I am only doing config and script addon so I will probably stick to -N for now. Not sure I understood the parameters properly, is -NG in effect different from -N?

onyx helm
#

for some reason my work drive only extracts DLC game data. Anyone know why?

vague shard
#

use arma3p

onyx helm
#

good point

dawn palm
#

is -NG in effect different from -N
almost all error checking options have no effect with -N. -G is ignored.
it is about as close as you can get to addon breaker's behaviour.

My tools are notably quite weak with sqX script and you are probably as good with -N as without. Note however that with -N the resulting pbo does not have my signature inside and hence users of your addons will trust them less.

#

oh and your comments are appreciated. thank you.

keen owl
#

Not sure I understand some of the optiosn then. So what does -B do then? It says Rapify, but that is already default?

dawn palm
#

yes

#

i'll have to check the code, i think the config.cpp remains as a config.cpp, perhaps not.

shrewd osprey
#

does not have my signature inside and hence users of your addons will trust them less.
because users check for that shit obviously..... riiiiight

dawn palm
#

not all of them. but it's increasingly being used to look elsewhere (not blame the addon), when the user strikes trouble.

shrewd osprey
#

So, what is your "signature"?

dawn palm
#

mikero=depbo.dll version 1,2,3

shrewd osprey
#

......

#

you must be joking right?

dawn palm
#

why? it's a very standard addition to the properties field of a pbo, which, incidentally you can do for yourself with a pboprefix.txt

#

version = 123;

shrewd osprey
#

which, incidentally you can do for yourself with a pboprefix.txt
that's the entire point i'm making here

dawn palm
#

author= I am famous.

#

I have no idea what you're objecting to alganthe, i've simply stated what my dll will do.

#

There's plenty of folks who are unaware of how to add property pairs to a pbo, and there's equally, plenty of folks who do, and also check what made that pbo.

vague shard
#

he suggests ppl can fake the signature

glossy inlet
#

And saying people won't trust addons as much because they weren't built with your tools...

dawn palm
#

they don't

glossy inlet
#

I especially don't trust addons that were built with your tools. If they are also obfuscated.

dawn palm
#

ok, time to mute this channel again. I'm tired of the pettiness.

smoky halo
#

Is this a bad time to ask how to fix "failed to create P:\a3.txt"? ๐Ÿ˜ƒ

feral nova
#

@dawn palm any idea on crashed with pbo projects latest update ?

dawn palm
#

like some other tool makers I won't respond in this channel. it's too poisonous. PM me if you have issues. That way the kids can't have inane sniping contests

pliant lynx
#

who dosnt respond here?

scenic canopy
#

I can answer about Megadeth's issue, he didn't have Arma 3 installed when trying to run arma3p lol ๐Ÿ˜›

broken anvil
#

When launching the game using steam://rungameid/107410// is there a way to skip the launcher and just pass the application parameters from your launch. (Just need the launch bit not the params)

smoky halo
#

Lol, i feel like a total dick

spiral forge
#

-noLauncher

broken anvil
#

Thanks, I am at school and they blocked BI website

spiral forge
#

no probz! ๐Ÿ‘

south copper
#

my uhh arma 3 tools does this thing where it starts for a second on steam, and then it closes

#

i've tried uninstalling it and reinstalling it, verifying game cache

glossy inlet
scenic canopy
#

๐Ÿ˜

#

I was thinking about adding the intercept library as a cmake dependency, would that be relevant/interesting for the template?

#

instead of using git submodules

nocturne basin
#

//New scope to allow the thread_lock to lock and release each cycle
you mean to release it before the Sleep happens?
because to me that sounds like some "magic" that is happening here

glossy inlet
#

I changed all the "here is a 10 minute step by step tutorial on how to set up your visual studio project" into
"Download the template and open the CMakeLists in VS"
Yeah. I don't know how cmake dependencies work. Would like it alot.
Already have to make a release with a packed up zip file. Because if you just "Download .ZIP file" on github it doesn't include submodules

scenic canopy
#

@nocturne basin sleep lock is released after the block ends

#

since the variable is released

glossy inlet
#

Yes. That's what's meant. I actually didn't write that code. I wouldn't comment that much and I personally prefer a lock.unlock() before the sleep. Instead of adding a level of indentation

scenic canopy
#

alright, I'll look into it

nocturne basin
#

@scenic canopy talking about the actual client::invocker_lock that would get deallocated
because the comment "chain" reads like it is some vodoo, SQF-like scope magic

scenic canopy
#

looking into migrating from stuff to intercept, might as well have a simple project to reuse

#

since that would also remove the dependency on git entirely

#

not that it matters to me but hey, might make intercept adoption easier ๐Ÿ˜„

spiral forge
#

I'm going to be a PITA, but invocker and not invoker?

glossy inlet
#

The packed up zip download already removes the dependency. But I really don't like it.
Also currently.. Or atleast till today it was said everywhere that you need to compile the intercept_client.lib yourself and link it into your project which is a absolute chore.
Now it just adds the sources into the project and turns that half an hour job into a 2 minute job

scenic canopy
#

then it's just the question if it should use a tagged release or master branch I guess... ๐Ÿ˜„

#

probably can have it as a variable in CMake

#

and have it default to master

glossy inlet
#

yeah. Atleast currently release is quite a bit behind. And later when we only release stuff after battleye whitelist it might be even more

scenic canopy
#

@nocturne basin I would guess on destructor

nocturne basin
#

it is @scenic canopy

#

there is no scope-magic in c++

#

but the usage looks weird due to the extra scope and the comment

scenic canopy
#

sure is, when variable goes out of scope

nocturne basin
#

which suggests something like that

glossy inlet
#

invoker_lock works just like a c++ lock_guard. Most c++ programmers now what that is.. So the commend is kinda useless. But also no real need to remove it

nocturne basin
#

would just reword it tbh

#

though ... not like ppl could not work around

#

if they are using intercept, they should already know what is happening there

glossy inlet
#

yeah. The head of that page also says that it requires a basic c++ knowledge

scenic canopy
#

great work with the sample and docs @glossy inlet , now I might finally get going ๐Ÿ˜›

glossy inlet
#

I think github should allow you to edit that wiki page. So feel free to make any changes that makes it more clear

scenic canopy
#

yep!

glossy inlet
#

I'm not really a good tutorial writer

nocturne basin
#

still ... ppl may walk into this without prior c++ knowledge
i may edit it at some point to something more clear

scenic canopy
#

github wiki works a bit weird ๐Ÿ˜›

nocturne basin
#

i personally now focus more on my very own EBNF-code-generator
for fun

glossy inlet
#

If you need more samples https://github.com/dedmen/Intercept_CBA is probably the biggest and best organized project so far.
Using signal/slot to distribute events throughout the subsystems. And examples on the more advanced stuff like registering functions or own datatypes.

scenic canopy
#

super ๐Ÿ‘

vital chasm
#

CBA will be replaced with an intercept version, or this will be only an another project on side of CBA one @glossy inlet

glossy inlet
#

side

#

Intercept_CBA can make CBA faster and give more additional features

#

but it won't replace it

scenic canopy
#

Almost got the template working now with automatic fetch

glossy inlet
#

How does it grab the files from github without git? using the zip file download?

scenic canopy
#

zip/tar.gz

scenic canopy
#

@glossy inlet intercept is not compatible with clang? ๐Ÿ™€

glossy inlet
#

I only tested GCC and MSVC ^^

scenic canopy
#

guess I have some more work to do then ๐Ÿ˜›

glossy inlet
#

Don't use clang personally so.. I'd say not yet

scenic canopy
#

just a few errors

glossy inlet
#

Also I don't know if it will even work after you get it to compile. Because the memory layout needs to match. And it seems like the Arma linux server was compiled using gcc where the layout matches nicely
Or MSVC on windows. Clang works on Windows too right?

scenic canopy
#

yeah

karmic niche
#

yes

scenic canopy
#

fair enough

scenic canopy
#

got it working nicely now but I'm unable to build the example project with either gcc or clang

#

seems like gcc mixes up static with shared

glossy inlet
#

PM me error messages. I'll try to fix it tomorrow. GCC builds were working with master branch 2 weeks ago. I updated the CMakeFiles today on a seperate branch but not on master.
oh.. but I did these changes in the template project too.

vague shard
karmic niche
#

@vague shard link not working

#

...which is strange since Discord has shown me the preview text above

vague shard
#

probably thread was deleted or moved

ornate wasp
#

Grr, does somebody know if ArmA somehow magically blocks HTTP Requests made by extensions? I get DB results, I get requests to other applications or system information, but HTTP requests? No chance. Not even with workers / async ๐Ÿ˜ก

#

Calling the same DLL via my debug console gets the request results without problems

glossy inlet
#

no it doesn't.

#

"my debug console" means outside of Arma?

scenic canopy
#

works fine in ours using boost asio

karmic niche
#

means outside of Arma
If it's the case, then Arma is simply blocked by your firewall and your curstom application isn't

#

And also... people are still writing ArmA in 2018? It's what... "only" 9 years since BI changed that ๐Ÿ˜„

ornate wasp
#

I got too used to "ArmA" ๐Ÿ˜ฌ will probably never change xD oh, yea... and I noticed it worked in 32 bit mode all the time while I was testing (in ArmA) with x64 xD that explains everything... wrong compilation of cUrl

nocturne basin
#

@karmic niche my ide nobody uses also is named "ArmA.Studio"

glossy inlet
#

And people continuously complain about that mistake

pearl beacon
#

that's why no one uses it ^^

nocturne basin
#

It is no mistake

pearl beacon
#

if you did it on purpose, it's just that much worse ๐Ÿ˜‰

nocturne basin
#

Doubt that that is the reason @pearl beacon ๐Ÿ˜‚

pearl beacon
#

๐Ÿ˜›

karmic niche
#

How do you guys copy the RVExtension() call data back to Arma?
The wiki suggests to do a strncpy which is ridiculously stupid because:
destination is padded with zeros until a total of num characters have been written to it.

...so each call to RVExtensions is then basically almost a memset(output, 0, 10240).

Using strncpy_s helps with that but works only on Windows.
How to do that in a portable and way and also with good performance in mind?

nocturne basin
#

Uhm.... Strncpy

glossy inlet
#

strncpy_s in TFAR
Oh wait.. portable way ๐Ÿ˜„

#

just strcpy and manually set the nullchar at end

#

also the incoming buffer shouldโ„ข already be nulled

glossy inlet
#

It isn't in debug mode. But it should be in release

karmic niche
#

@nocturne basin destination is padded with zeros until a total of num characters have been written to it.
Congratulations ๐Ÿ˜‰

nocturne basin
#

Yes

#

Up to x

#

Not buffer size

glossy inlet
#

@karmic niche just pass the length you need +1 to strncpy. And it will only add atmost 1 null

nocturne basin
#

Exactly

glossy inlet
#

it won't truncate then. But you can just do that yourself std::min(maxLength, stringToCopyLength+1)

karmic niche
#

If I pass the length I need +1, then I don't need strncpy since I've most probably spent the time to count the bytes I have in my string

nocturne basin
#

Uhm... Wut?

#

Why you do not know how long your string is?

glossy inlet
#

If you use a "anonymous" char pointer which you don't know what's inside then... Well.. u dun goofed

nocturne basin
#

Strlen

karmic niche
#

Mental shortcut:
If I know the length of my string, I can cut it myself. Hence I don't need strncpy at all because I know that the length is alright

nocturne basin
#

Why what?

#

What are you trying to do?

glossy inlet
#

strncpy also calculates the length of the string internally anyway. It has to look for the null byte to know when to stop

nocturne basin
#

Strcpy*

#

Strncpy takes what you give

karmic niche
#

Yes but I'd assume it uses some SSE magic or other stuff that will perform better than me implementing it by hand

nocturne basin
#

Seriously... What are you trying to do?

glossy inlet
#

I generally prefer to keep the length of my strings

#

because then you don't even have to think about that

nocturne basin
#

There barely is a Situation where you do not know the string length

karmic niche
#

Actually, you may be right and I just should rewrite stuff to not use strncpy_s at all

glossy inlet
#

Btw Arma strings don't store length and call strlen everytime

#

so... Your implementation will probably not be worse than Arma's

karmic niche
#

Yeah but why add additional microseconds to what's already slow? ๐Ÿ˜‰

nocturne basin
#

Strlen is not taking that much time tbh... It is literally an empty for loop

karmic niche
#

But as I said, you're probably both right

#

Still. Doing nothing will always be faster than calling strlen ๐Ÿ˜ƒ

nocturne basin
#

Unless you got huge strings and count thousands of times, you will not get any Problems with strlen

#

Question still remains why you got no string length

karmic niche
#

Actually, looking at my code, I DO have those lengths, hence I'm saying that you're right

nocturne basin
#

๐Ÿ˜‚ as said
Barely there are Situations

karmic niche
#

A classic example of the X Y problem ๐Ÿ˜„

nocturne basin
#

Only exception being User input

#

In console

#

Using scanf

toxic nest
#

How would i go about seeing if a word exists inside a string? (Cpp)

glossy inlet
#

std::string::find

toxic nest
#

No way ๐Ÿคฆ , im dumb. Thanks!

#

I also hear a lot of people using boost for operations like this, is it worth utilizing a library like boost?

glossy inlet
#

things like this probably not

elfin oxide
#

@toxic nest try not to use boost when ever possible. It's bloating your project and build time by alot

#

Only when boost offers alot of solutions that are helpful for you then use it

toxic nest
#

@elfin oxide i'm not, i was just curious if i should or not

vague shard
#

@glossy inlet how much is different and how much the same in terms of data formats in DZ SA 0.63?

glossy inlet
#

In Addons folder everything is the same as before. Probably just legacy.
dta folder has FBX models. dds/edds/tga textures. c for enscript files. I don't see config.cpp anywhere

#

Animations seem to be proprietary anm format.
rvmat requivalent seems to be emat
Here the water one

material "Materials/water/dayzwaterpond.emat": MatWaterPool
{
    Color "0.12 0.12 0.06 0"
    ZWrite 0
    WaterExtinction 2
    DepthScattering 0.8
    NormalMap "{00043BD4DA5F1244}Graphics/Textures/Water/dayzwater1_no.edds"
    NormalPower 0.1
    NormalMapping 0.1
    SunPower 256
    SunInfluence 4
    RefractScale 0.5
    ChromAberation 0.2
    EnvironmentMap "{001392F222D3EC22}Graphics/Textures/Water/envForest_co.edds"
    ReflectionColor "0.2 0.3 0.4 0"
    CausticMap "{EA764AD7A6112284}Graphics/Textures/Water/caustic.edds"
    Caustic 0.5
    WetFloor 0.5
    WindInfl 0.2
    FoamMap "{CF1EAFEB98ED672B}Graphics/Textures/Water/foam_ca.edds"
    FoamTerrainBlend 0.5
    FoamMapping 2
    FoamMove 0.5
    FoamPower 1
    FoamColor "0.6 0.6 0.5 0"
    TimeMul 0.7
}
#

UI layouts seem to be proprietary .layout format in config style.

TextListboxWidgetClass PlayersListboxWidget {
     position 0 10
     size 0.95 0.95
     halign center_ref
     hexactpos 1
     vexactpos 1
     hexactsize 0
     vexactsize 0
     style Default
     "title visible" 1
     colums "#players_name"
     lines 25
    }
dusky dune
#

dds/edds/tga textures
Yes

glossy inlet
#

UI elements can apparently backed by a script class which takes care of functionality.
scriptclass "Bouncer" in UI config and

class Bouncer
{
    reference float amount;
    reference float speed;

    protected float m_orginal_width;
    protected float m_orginal_height;
    protected Widget m_root;
    protected ref AnimatorTimer m_anim;

    // -----------------------------------------------------------
    void Bouncer()
    {
        m_anim = new AnimatorTimer();
    }
    
    // -----------------------------------------------------------
    protected void Update()
    {
        if (m_root)
        {
            float p = amount * m_anim.GetValue();
            m_root.SetSize(m_orginal_width + (m_orginal_width * p), m_orginal_height - (m_orginal_height * p));
        }
    }
    
    // -----------------------------------------------------------
    void OnWidgetScriptInit(Widget w)
    {
        m_root = w;
        m_root.GetSize(m_orginal_width, m_orginal_height);
        m_anim.AnimateLoop(speed);
    }
};

The class behind that.

#

Seems like OFPEC tags will have to stay and we won't get namespaces. Atleast currently looks like that.

nocturne basin
#

how is that supposed to work?
Bouncer being a control?

glossy inlet
#

Bouncer is the class behind that specific control. In this case taking care of animating it to bounce

#

control is of type ImageWidget

vague shard
glossy inlet
#

There are currently 4093 servers online with 132 different maps.
The most common in descending order Altis, tanoa, Malden, chernarusredux, Statis, Takistan, Chernarus, lythium, Jackson County.
Most played missions in descending order Exile, Altis Life RPG v5.0.0, [SP/CO]- Antistasi 1.8.0 Altis Blufor, Epoch Mod, Tanoa Life RPG v5.0.0, Altis Life RPG
3735 serveres on windows. 358 servers on Linux.
Currently 9249 players on these servers.
3723 servers require v1.82 and host 9236 players.
321 v1.80 6players, 26 v1.76 0players, 7 v1.72... 1 server is on 1.63 (dev branch??) with 7 players on it.

Something like that?

#

That 1.63 server is a russian DayZ server.. Oh that's Arma 2. Didn't even notice there is Arma 2 data in there

There are 34 servers with 396 players on the latest perf/prof branch. and 41 servers with 626 players on the older perf/prof

#

Using SteamAPI I get 5001 servers.
Weird.. latest perf/prof is 144709. There are 36 servers on that. And there is one server on 144710. 0 players on chernarus... Why is there a server on a version that was never publicly released. ๐Ÿค” It's the server of a reddit community..

There are actually 2 servers on 144710. The one above was from steamapi.
swec has a german exile server with 0 players running 144710

1720 servers without battleye out of which 1519 on current game version.

#

@vague shard Is it such data that you wanted?

#

I used two datasets. One is the xml you can get from swec.se and the other is steam query api.
steam query has more servers. But it seems info like mission name is queried manually by swec. Steam doesn't return that data by itself

vague shard
#

@glossy inlet thanks buddy for looking into it ๐Ÿ‘
overall the main interest would be about historical data/for different time frames - like last (maybe week), last month, last 3/6/12 months and i guess why not total (probably pointless now though)

glossy inlet
#

I could set something up to record the data from when it starts into the future. swec stores past played missions per server. I guess that could be scraped if really needed

vague shard
#

like bit similar to workshop stats but based on actual "use"

#

especially for not top 10-100 mod/mission maker this seems insightful to get a better sense how people actually make use of their work

#

atm you have only downloads/subs and feedback basically

glossy inlet
#

ofcause would only work if the server actually displays that mod as being used. But I think serverbrowser shows a list of all loaded mods right?
Besides the buggy arma launcher workshop mod detection?

vague shard
#

is the world/terrain name returned by the steam API, or does swec query this from the mission somehow too?

#
Address: 213.181.201.130:2332
Server version: 182144647
Required game version: 1.82.141764

Map: Takistan
Mission: ExileHydraPVE
Players: 2/40```
#

this is from the A3 launcher

#

(copy server info)

#

for mods there is a button "more details"

glossy inlet
#

There are 116 servers without battleye, without signature verification and with filepatching enabled ๐Ÿ˜„ Sadly I cannot query passworded status. So far my own servers are also in that list.

SteamAPI doesn't return that. But Arma's own query thingy does. I'll look for the documentation about it. I used that myself already.

vague shard
glossy inlet
vague shard
#

it appears this is not limited, but probably does a direct server query

toxic nest
#

Are there any good resources for learning the cpp structure? How did you all learn? I understand only the most basic functionality and i want to learn more. The ms documentation is slightly confusing, and their tutorials it seems to be of the most basic.

glossy inlet
#

If that's not it then I don't know what the other thing is called. But wireshark and time can give you all you need. I think for my last implementation of that I was basing it off of reversed wireshark captures

#

I learned by.. Eh.. Looking at code and understanding it... Eh...

toxic nest
#

So a gift was bestowed upon you to just "understand" :D

glossy inlet
#

Well. Question is.. C++ or Arma config structure? you referenced microsoft documentation so I'm guessing you don't mean arma configs

toxic nest
#

C++ . Cpp as in the format arma config is plenty understood

glossy inlet
#

Do you "like" video tutorials? that walk through things with explanations and stuff? I have a couple

toxic nest
#

Whatever works. Text, video. I can learn from both

glossy inlet
#

I have a very nice c++ video learning thingy on one of my servers ๐Ÿ˜„ Only need to find it...

#

English only? Or german too?

toxic nest
#

English pref. German if i can translate it.

fallen stone
toxic nest
#

Sweet. :+1:

karmic niche
#

Dedmen: Okey I think https://developer.valvesoftware.com/wiki/Master_Server_Query_Protocol might return them. But steam web API doesn't.
Yeah, I was about to say that you should be able to fetch the number of players, their names, etc... by querying the servers through the UDP steam protocol

hollow granite
#

@vague shard Yes, world name is provided by steamquery.

hollow granite
#

More specifically, this is what is returned

  "IsObsolete": false,
  "Address": "195.2.253.152:3090",
  "Protocol": 17,
  "Name": "WOG ArmA 3 Server #1",
  "Map": "ProvingGrounds_PMC",
  "Directory": "Arma3",
  "Description": "WOG 78  ะšั€ะฐั‚ะตั€ 1.1",
  "Id": 0,
  "Players": 0,
  "MaxPlayers": 64,
  "Bots": 0,
  "ServerType": "Dedicated",
  "Environment": "Windows",
  "IsPrivate": true,
  "IsSecure": false,
  "GameVersion": "1.82.144647",
  "Ping": 67,
  "ExtraInfo": {
    "Port": 3089,
    "SteamId": 90114418614151171,
    "SpecInfo": null,
    "Keywords": "bf,r182,n0,s1,i3,mf,lf,vt,dt,g65545,h3d0a416b,f0,c38-56,pw,e0,j3.40282e+038,k3.40282e+038,",
    "GameId": 107410
  },
  "ShipInfo": null,
  "IsModded": false,
  "ModInfo": null
}}```
vague shard
#

what are the keywords?

glossy inlet
#

Just added e till y yesterday

vague shard
#

ty

vague shard
#

is there some dll extension already out there to read a text file and pass it onto sqf land?

scenic canopy
#

in what sense?

glossy inlet
#

Why not just enable -filePatching at that point?

vague shard
#

reyhard's DebugSuite makes use of diag_loadTextFile; he wants to release it but needs a replacement for the cmd

#

he uses it to support mergeConfig multiple configs in one go and functions

nocturne basin
#

??

glossy inlet
#

!?

vague shard
#

@X39#2180 what confuses you?

nocturne basin
#

what exactly is the problem?

#

merging configs during runtime?

#

or loading files during runtime

#

that stuff @vague shard

vague shard
#

diag_loadTextFile [...] needs a replacement for the cmd

#

@nocturne basin

#

aka parse a file and hand over the strings to the game/sqf land

nocturne basin
#

what exactly is that doing?

#

just a loadFile but using system paths?

vague shard
nocturne basin
#

what exactly is that doing?

vague shard
#

the handling of the "parsed" text

#
    private _input = call compile (diag_loadTextFile _debugFile);
    private _config =_input select 0;
    private _functions = _input select 1;```
nocturne basin
#

so it is just a loadFile?

#

recommendation then is indeed, file patching and loadFile
otherwise i doubt there was an extension already written
though ... not like the task of doing so is a hard one

#

in case one wants to use intercept, a simmilar command could be added too

#
__declspec(dllexport) void __stdcall RVExtension(char *output, int outputSize, const char *function)
{
    unsigned int read;
    FILE *file = fopen(function, "rb");
    if (0 == f) return;
    read = fread(output, sizeof(char), outputSize, file);
    fclose(file);
    output[read == outputSize ? read - 1 : read] = '\0';
}```
there is your replacement, error checks skipped
#

besides ... now that i am looking at it, the whole extensions page in the biki looks like it could use some major rework

hollow granite
#

It could

#

Like the missing x64 define in the c# example

#

Which is used, but never actually defined

glossy inlet
#

What? The WIN64? That is defined automatically

#

Oh no. Actually it is _WIN64 the underscore is missing

nocturne basin
#

c# ANY CPU is not automatically doing 32 and 64

#

it is using 64 if your windows is 64

#

and 32 if it is again, 32

#

one of the more common problems one can experience

glossy inlet
#

It's essentially important to use threading to prevent errors. If the extension is taking too much time to process a request it will be abandoned by Arma with an error code.
Yeah. Good example why that page should be atleast a little reworked.
And References could be example projects on Github

dapper pivot
#

Arma now abandons callExtension's?

glossy inlet
#

Extension existence/version checking doesn't even mention RVExtensionVersion

#

no. It never did.

hollow granite
#

Well, docs do mention that if the call takes too long to respond it will be abandoned

#

But never bothered to test that one out

glossy inlet
#

Arma call's it in it's main thread. It can't just force unwind the stack and jump back. I guess technically that would be doable on a very low level.. But they aren't doing that.

dapper pivot
#

It's insane to do it at any level.

nocturne basin
#

Currently reworking the page

dapper pivot
#

It isn't even safe to do it on another thread.

nocturne basin
#

thus will continue talking in there

dapper pivot
#

If the other thread locks some resource and you kill it in an uncontrolled manner you get a lock.

#

i.e. if you're using a malloc that happens to take out a lock on some part of the heap and you happen to kill the other thread in that malloc then it's bad news.

glossy inlet
#

The Arma eh.. Don't have the real name in my head. The "freeze watchdog" will throw a exception and throw you into the debugger. Or if you don't have a JIT debugger it will crash your game. Maybe that's what that comment meant.

nocturne basin
#

anybody knows the exact locations arma will look at to find the DLLs?

#

====Where to put Extensions?====

glossy inlet
#

Windows default. Plus loaded mod directories

dapper pivot
#

Does it look in A3 too?

glossy inlet
#

Main directory yeah. Next to arma executable

hollow granite
#

Iirc yes

glossy inlet
#

and yeah. The DLC's and stuff are also normal mods

#

loaded like the -mod parameter. Though internally.

scenic canopy
#

the limit of how much can be outputed by extension might be a limiting factor for reading files

#

might have to read one line at the time etc

dapper pivot
#

The plugin knows how much it can return, you can have it return more than a line at a time.

glossy inlet
#

Just cheat and write into the input string ๐Ÿ˜„

scenic canopy
#

Sure, but if the file is bigger than allowed output youโ€™ll need to call it more than once

#

You could of course calculate how many times in the initial call to open the file

karmic niche
#

Assuming that the file is not greater than, let's say 10MB and that the SQF script is not malicious (i.e. it won't try to make the extension eat all the available memory purposely), you can just read the whole file in one go in the extension (and keep it in memory between the calls) and then return it in chunks.
The SQF side reads and concatenates the received chunks as long as the extension doesn't return an empty string. Then it assumes the file ended.

scenic canopy
#

Sure, as long as itโ€™s handled

nocturne basin
hollow granite
#

Are there any pbo tools for a mac?

glossy inlet
#

You should be able to compile armake on a mac

#

But there is no precompiled binary for mac afaik

hollow granite
#

Ah, great, that should do just fine. Thanks!

dapper pivot
#

Is there anything for the Mac? Now that it's app store only I can't imagine anyone is bothering to get A3 tools signed.

glossy inlet
#

Mac is app store only? Ewww

dapper pivot
#

Yeah, it's gross. You can switch it to allowing an app but then it times out after some fairly short period of time and you have to dig around in the control panels again.

#

Windows will go the same way, they're just warming up to it a bit slower.

#

They'll continue to experiment by doing things like making newer API's store only.

smoky halo
#

can you run a console program (compiled for mac ofc) downloaded somewhere?

hollow granite
#

Um, unless i dont know something

#

But of course you can

smoky halo
#

just wanted to get that app store only thing clear

dapper pivot
#

I think Gatekeeper will still fire on command line apps.

#

Never tried it though.

hollow granite
#

Well, you gotta install node somehow

#

So its definitely possible

native kiln
#

@dapper pivot i hope windows wont go that way

dusky dune
#

The threat of windows going that way is why Valve has been looking more into linux

dapper pivot
#

...to the extent that they're contributing funding to Vulkan's development.

scenic canopy
#

@dapper pivot no, gatekeeper won't block cli applications by default

#

@smoky halo most popular tool for managing CLI tools is Homebrew, https://brew.sh/

#

I have a formula on my GitHub to include armake in their list of apps to install, I should probably submit that PR ๐Ÿ™ƒ

#

the current stable release of armake differs a lot from current dev so I might wait until next release though

dapper pivot
#

Dahlgren: So clearly it's to protect the app store's profits rather than protecting your PC from trojans?

scenic canopy
#

no, most users won't open terminal apps, it's to block execution of apps when double clicking them basically

#

there is also a quite hard guard against modifying the FS

#

you need to boot into recovery mode and flip a switch to write to root FS except for /Applications, /Users and /usr/local (probably some more)

#

so unless your shell is modified (PATH) to run cli apps from other locations you're quite safe

#

for average joe it's quite good

#

the Gatekeeper blocks all unsigned applications unless you override it by rightclicking and opening the desktop app that way

#

and since apple can revoke certificates from malicious apps that are properly signed it makes it quite hard for users to run bad stuff

#

not impossible of course

#

but my grandma probably won't do it at least

dapper pivot
#

They've changed it from last time I played with it then, you couldn't right click from what I remember.

scenic canopy
#

it's been that way since mountain lion at least

#

by right clicking and pressing open you'll get a prompt if you want to run the unsigned app anyway

dapper pivot
#

Also how does a granny even get a dodgy .app? They're folders that usually ship in .dmg's. ๐Ÿ˜ƒ

scenic canopy
#

like when downloading a signed app from Internet where you have to approve it

#

dmg or pkg

#

scam emails

#

"click here to download your invoice" etc

karmic niche
#

That's for noobs. Real men use "click here to enable excel macros". Let me find that talk by mikko hypponen...

scenic canopy
#

safari often auto unzips archives that could contain .app folders

#

๐Ÿ˜„

glossy inlet
#

auto unzip? That sounds nice... I guess...

karmic niche
scenic canopy
#

nice ๐Ÿ˜„

#

@glossy inlet since that's what you would do in most cases yeah, not sure if they check the archive for bad stuff first

#

@karmic niche someone asked me if I would consider browsing the Internet harmful and dangerous to your computer and if you should be scared that you might be infected by malware, virus etc ๐Ÿ˜„

#

Malvertising is probably the easiest way to get fucked today

#

don't even have to visit phisy sites

#

totally relatable to arma tools ๐Ÿ˜„

karmic niche
#

Btw. this talk is actually about the 2016 (2015?) attack on the Ukrainian power grid (see at the end) and... spoiler alert: the button "enable content" has played a big role in that ๐Ÿ˜‚

#

So it's not like a purely theoretical problem that the guy is discussing ๐Ÿ˜„

scenic canopy
#

there is a really nice presentation about hacking printers, basically the update mechanism for the printer is contained inside postscript code... but that can be embedded inside a normal PDF... but it has safeguards with recovery firmware and fuses! which is also exploitable from postscript

#

TL;DR; send your CV to HR, get access to entire network from installed backdoors into printers which can't be removed without replacing the hardware

pearl beacon
#

you can easily become a serial killer using IoT devices today ^^

scenic canopy
#

that too, IoT is scary

#

many large scale DDoS attacks with IoT devices

pearl beacon
#

smart ovens or stuff like that, with barely any protection

scenic canopy
vague shard
#

oukej

And sadly I gotta say anyway that the engine development has more or less come to a conclusion :/

#

@dawn palm your time has come finally ๐Ÿ˜‰

vague shard
#

@glossy inlet you did try this one already, didnt you?

glossy inlet
#

no. never saw that

vague shard
#

its from RscDisplayPhysX3Debug

#

according to "sources" its quite useful

nocturne basin
#

RVExtensionArgs what exactly is that returning int for?

glossy inlet
nocturne basin
#

yep
just saw it

#

it is way too early still ..

nocturne basin
light trellis
#

I think some words about getting your extension whitelisted would be cool ๐Ÿ˜ƒ

nocturne basin
#

never did that simply because i never needed my extensions getting whitelisted

#

thus cannot add that information

#

or more: cannot add it reliable

glossy inlet
#

Also thought about that. Thought to just link to the battleye page about whitelisting in the FAQ.. But there is no battleye page about whitelisting ๐Ÿ˜„

nocturne basin
#

otherwise i will just take the info from there

light trellis
#

maybe Torndeco or the ACE guys know more about the process?

nocturne basin
karmic niche
#

Since Arma 3 1.46, extensions need to be whitelisted in order to get loaded.
"...when BattlEye is enabled"

spiral forge
#

@glossy inlet yeah, no error, returns empty string

#

for both

karmic niche
#

Using strncpy in the C++ / Visual C++ example is a bad idea because it will zero the bytes at the end. We've had this discussion already, I know, but it's easy to just copy/paste the example code and then forget about it for the next year ๐Ÿ˜‰

nocturne basin
#

Feel free to suggest something better @karmic niche

karmic niche
#

For Visual Studio, IIRC strncpy_s works correctly. It was used in an old revision of the wiki page @nocturne basin

#

That or you can reuse the strncpy_safe from the C example

nocturne basin
#

Only viable on Windows

karmic niche
#

Yes, that's why I said in the C++ / Visual C++ example ๐Ÿ˜„

nocturne basin
#

Strncpy safe Was kinda rejected by Dedmen

#

Strncpy with output minus is enough though

#

Will work

glossy inlet
#

It's supposed to be a minimal example. Thus I would rather keep it minimal than top performance

karmic niche
#

While I understand that and fully agree, people will assume this is the right way to make calls; they will copy that code to check if a "hello world" extension works for it, and then probably move on to extending it, without remembering to replace strncpy with something else because if it ain't broken, don't fix it!

#

And if the other examples either for C or C++ with GCC have the strncpy_safe used instead, there is no point in having strncpy just for Visual Studio there

dapper pivot
#

And it's good to have overflow bugs in whitelisted extensions.

karmic niche
#

It's even better to have backdoors in signed Windows Kernel Modules! cough Capcom cough

dapper pivot
#

Also I just "got" your username.

nocturne basin
#

could you please make up your mind now @glossy inlet @karmic niche

karmic niche
#

I'm on the "give an example that is safe AND performs well, even if more complicated, because that's not much code anyway in this case" team.

nocturne basin
#

it is safe

#

though ... now i also added the missing dest[num] = '\0'

#

which means now it really is safe for usage

karmic niche
#

That's why I said AND performs well

nocturne basin
#

same thing here

#

strncpy + a single write at the very end

karmic niche
#

The strncpy(num -1) will do a memset(0) for the whole 10239 bytes on each call because num will be 10240

#

Well, not literally but you get what I mean, I hope

#

That's the padding at the end that I was referring to, when I was talking about performance

nocturne basin
#

feel free to replace it with something better which is available in the std library

#

for me, that page now is pretty much done simply because i moved it into the Extensions page

#

ohh ... crap

#

forgot something ๐Ÿคฆ

#

strncpy requires an additional include

glossy inlet
#

remember to check the "minimal edit" checkbox

#

For Intercept I ended up using std::copy/std::move for everything. But MSVC doesn't want you to use that with raw char pointers.

karmic niche
#

@nocturne basin the something better is strncpy_safe if you don't want to use strncpy_s, I already said that

nocturne basin
#

you can argue about it with @glossy inlet
i personally do not really care if i use one or the other

karmic niche
#

That's why I don't understand why you're using strncpy_safe in C but insist on using strncpy in C++ examples

glossy inlet
#

we already talked about that a couple weeks ago ^^

nocturne basin
#

btw.

#
  • as i said: do not care, tell me what i should use and i will use it
scenic canopy
#

@nocturne basin great improvement! the examples are a lot cleaner than before

nocturne basin
scenic canopy
#

sure!

nocturne basin
#

did not wanted to start discussion about it in here but rather get people who are not commonly looking into the #community_wiki channel to look into the page to give feedback there or edit it directly

nocturne basin
#

anybody remembers when RVExtensionVersion got added?

spiral forge
#

it's available on callExtension I believe

nocturne basin
#

ahhh forget it

#

yes

spiral forge
#

the info

nocturne basin
#

saw that right now

nocturne basin
dapper pivot
#

That's any job at any large company.

onyx helm
#

I'm guessing there's no way to stop RePbo from being able to de-obfuscate pbos? @dawn palm

dawn palm
#

I don't discuss anything in this channel, Telling you repbo does not work as advertised, and the reasons why, is just an invitation for the snipers in here to start a pointless war (and let the world know how clever they are). The intent being to write so many walls of contradictory text that the original message and the information it contains is lost to the people who might benefit from it.

prisma dragon
karmic niche
#

Wait, wasn't KK "done with Arma"?

#

Addiction is a bitch, I guess ๐Ÿ˜„

glossy inlet
#

I prefer to have a executable build for my extensions and then just test them from the main function

#

that way I also immediately have the debugger attached.. Much faster that way

dapper pivot
#

You can have a debugger attached to a DLL by specifying the hosting .exe.

glossy inlet
#

yeah. But build, run callExtension binary, attach debugger, copy-paste callExtension line.
versus press F5 and done

dapper pivot
#

No as in you can make F5 run a completely different executable.

nocturne basin
#

I Still should get that Method into sqf-vm

orchid shadow
#

@onyx helm don't bother with the obsfucation ;)

nocturne basin
#

or, you can build sqf-vm yourself as i just added callExtension support to it (and the most updated release has no callExtension added to it)

#

thus you can now even test possible SQF methods that utilize callExtension in one go

#

without ever starting arma

stoic cove
#

Hello
Recently I have decided to pursuit the great art of modding in arma 3
Yet one obstacle I have encountered is lack of good, recent guides
Would love if someone pointed me towards some nice guides that are mostly still relevant and the best tools for the job

#

For now I'm mostly interested in retextures etc, you know, lighter modding although in the future I might try doing some bigger projects
I have IT and programming background and extensive knowledge of C++.

vague shard
#

@stoic cove https://pmc.editing.wiki/doku.php is a good starting place - note also the Video Tutorials at the bottom. what setting are you interest in? modern, WW2, etc?

stoic cove
#

@vague shard I will probably make all kinds of stuff
for now I'm just messing around, making ahegao uniforms etc lul

stoic cove
#

okey, thanks a lot

nocturne basin
#

@stoic cove you May then want to first understand how sqf works

#

Talking About binary unary and nular operators and that sqf is nothing but a gigantic "math" expression with extra datatypes

glossy inlet
#

He wants to do retextures and light modelling... You don't need SQF for that at all

nocturne basin
#

Ohh.. Indeed
Just saw the c++ stuff and made assumptions

stoic cove
#

SQF is the one for scripting in arma, right?
I might do some bigger mods in the future that might include scripts, I don't have any real plans of what I want to do.
For now my plan is to just go texturing -> moddeling - > maps etc
And even if I need to learn SQF...it's just another easy langauge, only some syntax is changed. And it's ugly ๐Ÿ˜‚

nocturne basin
#

Sqf confuses at Start due to no actual language structures exist but rather operators that do the job

pearl beacon
#

It's all a command

glossy inlet
#

except the private keyword. And = is technically not a command but you can still call it that.
Can anyone think of more things that do stuff but are no commands? I think private is the only one.

smoky halo
#

private not a command? How do you define command?

glossy inlet
#

a command that takes a parameter on right or left&right or none

#

private is a modifier of = and the equal is neither left nor right of the private

keen owl
#

Agreed, but the "old" uses of private is still command?

glossy inlet
#

Or rather. It's a pack of three private _var = belong together. But _var is not a command

#

private array and string are commands of course

#

which is why I specifically said keyword ๐Ÿ˜‰

keen owl
#

Sure, but that has low signal-to-noise ratio, since you would still have said that did you believe all instances of private to be a keyword ๐Ÿ˜‰

glossy inlet
#

Profiling how long the whole EachFrame EH takes using the profiing branch is not enough for you?
Profiling each script function seperatly is not enough for you?
Profiling each scope seperatly is not enough for you?
Then welcome to the world of profiling every single SQF script VM instruction seperatly! (now also displaying time to the nanosecond)
https://s.sqf.ovh/Brofiler_2018-05-18_22-50-16.png

onyx helm
#

anyone know why WorkDrive would just fail to mount? .rpt claims "tasks were executed"

native kiln
#

@glossy inlet Who wrote that article about random positions on sqf.ovh?

glossy inlet
#

@dim phoenix
Interesting.. The layout doesn't show the author. Gotta fix that. Thanks

onyx helm
#

resolved my issue, WorkDrive.exe was running as admin when it shouldn't have been

dim phoenix
#

OPTiX, I did. Anything wrong with it?

native kiln
#

@dim phoenix All good, I read it and liked it.

#

I'm amazed by the donut

#

*oblong ring

dim phoenix
#

Writing this made me learn one new thing.

#

That "oblong" is a word and what it means.

vague shard
#

@glossy inlet looking great ๐Ÿ‘

sly skiff
#

@onyx helm you can replace workDrive exe functionality with simple .bat file with subst p: "Z:\ArmAWork" in it

#

where of course you put your own path for your work folder

thorn hawk
#

I just took the time to refactor our BattlEye Golang Library to, well... be better in terms of go code structure and quality which will directly benefit our ongoing gorcon rewrite.
If anyone here is either currently using this or was looking for BE Go Bindings, check the changes and feel free to get back to us: https://github.com/playnet-public/battleye

vestal jewel
#

Hi together,
I made a Discord Bot which starts /stops / changes config /etc. from my Arma 3 Server.
It is written in Java and works. However I want to know if there is a way of grabbing the Console Output of the Arma 3 Server?

glossy inlet
#

on linux the console output goes to stderr for RPT and stdout for normal log that would show in the UI on windows

vestal jewel
#

Thanks. Will have a look on it later

scenic canopy
#

and for windows you can read the RPT file

hollow granite
#

Windows console output is in a different file though

#

Although, its easier to parse rcon output, if BE is enables and you need the console log

vestal jewel
#

@hollow granite how can you parse the rcon output

#

because I could read the rpt log but I want it to be "live"

#

and then I would have to keep to rpt log open

hollow granite
#

Well, use an rcon client implementation and connect to the rcon port of the server

#

As for how you do that - there are a lot of ready libraries available

#

There is a list along with the protocol description here

#

But, plenty of implementations not mentioned here, so if you simply google something like "java rcon" i guess you will find plenty more

meager falcon
#

BE RCon is different tho

#

But idk what is send via this RCON port. Do you know if all Console output is sent through it?

hollow granite
#

iirc it is

#
  • chat
#

but that should probably be rechecked

glossy inlet
#

@hallow rapids never.

karmic niche
#

Selfbot detected ๐Ÿ˜„ @glossy inlet

glossy inlet
#

I deny all claims made

karmic niche
#

You must be telling the truth, obviously!

spiral forge
#

you're not a furry @glossy inlet !

glossy inlet
#

๐Ÿ˜ข

hallow rapids
#

@glossy inlet hmm? I typed vim in to the browser instead of the console, if that's what you're on about? ๐Ÿ˜›

glossy inlet
#

yush

hallow rapids
#

removed it pretty much immediately though so either you have a very quick eye or you're caching something ๐Ÿ˜›

glossy inlet
#

I have two eyes. One is always ready to catch anything that I might miss

hallow rapids
#

hehe ^^

vague shard
#
                //--- Upload
                _uploadData = format [
                    "action=update-wounds&mise=%1&hrac=%2&data=%3",
                    _missionName call bis_fnc_filterString,
                    profileName call bis_fnc_filterString,
                    _missionResults
                ];
                ["Uploading '%1'",_uploadData] call bis_fnc_logFormat;
                diag_radioHttpPostLog [
                    "http://splendid.bistudio.com/wounds.php",
                    "application/x-www-form-urlencoded",
                    _uploadData
                ];```
seems like BI did some tests with stats logging (from fn_diagHit.sqf)
#

also some ingame issue reporting to their jira instance along with screenshot upload ๐Ÿ˜ƒ

glossy inlet
#

never saw that diag_ command in Intercept.
They already had direct reporting to their bugtracker in a BIS_fnc for a long time. I guess that's for QA

vague shard
#

well above isnt new. so you may refer to the same. another approach in their functions seems via htmlLoad

solar mason
#

guys, is there any tool like Silent Map Converter up to date and working?

keen owl
#

Anyone know any reason why the exported EMF files create a font resource and then do not use it?

keen owl
#

Apparently it also creates a gazillion brush/pen resources that are not used either.

glossy inlet
#

Anyone here interested in integrating my debugger into VS Code? I'm currently rewriting parts of my Debugger to work with Intercept. But as Arma.Studio development is at halt while noone interested in using it, my debugger would go to waste. And a Debugger without a Interface isn't that useful.

The API to the debugger is JSON encoded strings via a NamedPipe.
Example of such a API message for when a breakpoint is hit: https://gist.github.com/dedmen/b3079dbd22d761c0c98e1b957432672e
I don't know JS enough to make it on my own. And I also don't have enough time for it.

neon flax
#

Sounds like an interesting project, I've never written an VS Code extension but I do have some nodejs knowledge. Do you target into some release date? Liberation takes most of my after work dev time currently.

glossy inlet
#

No targeted release date. Just don't want to let my debugger rot away unused

neon flax
#

Maybe dev of vscode-sqflint will be interested.

vague shard
#

can it be combined with Eclipse too? ๐Ÿ™ˆ

glossy inlet
#

sure. As long as you can do JSON over NamedPipes

#

Maybe TCP in the future. But not soon

vague shard
#

@sick verge are you interested?

glossy inlet
#

If anyone is interested I made a Discord server for development questions https://discord.gg/vbFje5B There is no wiki for the API and I don't have time to make a good one :x
The sqflint dev is looking at implementing it into VS code. Thanks for the tip

neon flax
#

Awesome ๐Ÿ˜„

sick verge
#

@vague shard yeah I'm going to look into this

thorn hawk
#

@vestal jewel if you still need help with Rcon feel free to get in touch.
We got an open source implementation for speaking to be rcon and are building a solution to manage server using it. Depending on what exactly you need i guess we can help

hallow rapids
#

should be a fairly easy read to figure out how it works if you want to write your own

karmic niche
#

Best way to confuse people ๐Ÿ˜‚ (talking about the name)

#

"Just use BattleNet!"

hallow rapids
#

oh yeah... not my idea, blame Vipeax ๐Ÿ˜›

pearl beacon
#

Blizzard sueing it already :D

native kiln
#

@hallow rapids I don't why I always had some issues with your library

#

Maybe its not the library but the rcon protocol thats producing some weird behaviour

hallow rapids
#

well I don't know what the issues are that you're talking about ๐Ÿ˜›

#

all of the issues that were ever reported to me have been fixed in it's almost 6 years of existence

#

the protocol implementation should be pretty much flawless but some extra stuff like connection loss detection and reconnecting might be a little bit flaky at times

native kiln
#

i think the only real big thing was the stackoverflow stuff

#

but i see that has been taken care of now

hallow rapids
#

oh yeah, the fix that's in is mostly just a quick hacky fix someone contributed but it works I guess ๐Ÿ˜›

native kiln
#

yeah seen the commit lol

#

but i mean if it works

#

better than a crash

#

ill try it out again when i need some be implementation ๐Ÿ‘

hallow rapids
#

well you have your own implementation now so you should just use that ^^

native kiln
#

i do? oO

hallow rapids
#

oops.. I assumed that you meant you moved to something else with the had some issues

#

past tense and all ๐Ÿ˜›

native kiln
#

nah, just fixed it in a different way back then ^^

#

not going to reinvent the wheel if your solution is working

hallow rapids
#

๐Ÿ˜ƒ

#

@thorn hawk is your implementation public?

karmic niche
#

OPTiX: i think the only real big thing was the stackoverflow stuff
Don't drag me into this, okay? ๐Ÿ˜›

harsh steeple
#

would anyone like this released? i got sick of looking up all the arguments and their format for making addactions when i or mission makers needed them so i made a generator tool https://puu.sh/AzprT/4475e8d3e9.png

vague shard
#

@harsh steeple pretty sure people find it useful. however #arma3_scripting and the forum is probably more the audience

glossy inlet
#

Looks more like it could be a web-tool.

scenic canopy
#

@glossy inlet aren't you supposed to advocate for C++? ๐Ÿ˜›