#arma3_tools

1 messages Β· Page 29 of 1

vague shard
#

ok thats great. do you have page at hand with the params?

vague shard
#

is also done via vdf file for arma?

scenic canopy
#

yep

#

decent guide

vague shard
#

ok thanks. thats the one i found too

plush shard
#

but you can't set/update the tags/kvtags with steamcmd - at least I haven't found a way to do it

cinder meteor
#

@glossy inlet I think your profiler doesn't receive parameters passed to arma from file with -par parameter, right?

glossy inlet
#

oh. yeah

#

That is engine internal parameter stuff. I grab it directly from the windows API, not from Arma engine

cinder meteor
#

Damn, I remember I could pass custom parameters to arma through its launcher some time ago, did they disable it...

cinder meteor
#

I don't get it. To test the profiler I have put this into an empty mission init.sqf:

fnc_dummy = {
_this setPos ((getPos _this) vectorAdd [0, 0, 0.6]);
};

fnc_eh_eachFrame = {
player call fnc_dummy;
};

addMissionEventHandler ["EachFrame", fnc_eh_eachFrame];

I pass -profilerEnableInstruction to arma exe.
Tracy displays only lowest level sqf commands (setPos, getPos, ...) in one single topmost line. But it shows something like cba_xeh_fnc_initDisplay in multiple lines. How do I make it show my stuff in multiple lines?

glossy inlet
#

use cfgfunctions

#

it cannot detect the names of your functions. It can only see the code inside.
Which is

{
player call fnc_dummy;
}

Can you infer out of that that the function is called fnc_eh_eachFrame? Right. Neither can the profiler

#

Dirty but easiest way might be

fnc_eh_eachFrame = {
private _fnc_scriptName = 'fnc_eh_eachFrame ';
player call fnc_dummy;
};

The profiler looks for _fnc_scriptName = in the text of the code

cinder meteor
#

does cfgFunctions without any mods pass _fnc_scriptName before calling such a function by default?

#

or did you add it

glossy inlet
#

CfgFunctions add's their own header

#

Just try diag_log'ing a function that was compiled with CfgFunctions and you'll see it

cinder meteor
#

oh yeah I see it

#
    private _fnc_scriptNameParent = if (isNil '_fnc_scriptName') then {'CBA_fnc_createNamespace'} else {_fnc_scriptName};
    private _fnc_scriptName = 'CBA_fnc_createNamespace';
    scriptName _fnc_scriptName;

'cfgFunctions increases performance' yes with three more lines of code ^^

glossy inlet
#

jup. Another reason why CBA PREP is better. It doesn't do that

cinder meteor
#

how does it work around this if you need the _fnc_scriptName anyway?

glossy inlet
#

I don't

#

I also read the "#line 1 ..." macros that the preprocessor adds if you preproc with line numbers.
And I also (not yet released) added special code that detects whether compileFinal was called from CBA's compile function or initFunctions and then grab the function name directly out of a local variable

cinder meteor
#
fnc_dummy = {
{
    private _fnc_scriptName = 'fnc_dummy';
    scriptName _fnc_scriptName;
    _x setPos ((getPos _x) vectorAdd [0, 0, 0.6]);
} forEach _this;
};

fnc_eh_eachFrame = {
private _fnc_scriptName = 'fnc_eh_eachFrame';
scriptName _fnc_scriptName;
allPlayers call fnc_dummy;
};

addMissionEventHandler ["EachFrame", fnc_eh_eachFrame];

I still see no creation of new scope πŸ€”

glossy inlet
#

where is that script file compiled from?

cinder meteor
#

all the stuff above is in init.sqf

glossy inlet
#

Yeah profiler cannot see that. (unless you have profiling binary and engine profiling enabled)
The profiler redirects compile/compileFinal script commands, and instruments the code they generate.
So it can only see stuff that went through compile
init.sqf is compiled directly in engine, not going through the script command

cinder meteor
#

I think you could redirect the = operator?

glossy inlet
#

no...

#

I can't

#

it's not a script command

#

And even if I did. What about setVariable? or params. Or all the others ways to set variables?

cinder meteor
#

Yeah you are right
I can only think of
(allVariables missionNamespace) select { (missionNamespace getVariable _x) isEqualType {} }

#

then mess around with them

glossy inlet
#

And when should I scan missionNamespace? every frame? say bye to your framerate then

cinder meteor
#

Haha no πŸ˜„ I'd leave it to mission creator, he'd call some function to scan them when he's sure he has initialized all his code

glossy inlet
#

So then the profiler won't just work out of the box, but only if you put a special script into the mission? yeah no

#

Just use CfgFunctions.

#

I don't want to support the stupid shit that some idiots do anyway

cinder meteor
#

I compile my code 'manually' because I have these preprocessor based OOP wrappers
I guess I'm fucked then... 😦

glossy inlet
#

Or enable engine profiling. It can detect engine internal compiling too

cinder meteor
#

I'd still have to mark all the code I've made with _fnc_scriptName = ... somehow... it has to be inside of the {code}, right? Or can I _fnc_scriptName='myfncName'; _params call {code}; ?

glossy inlet
#

yeah

#

inside

#

profiler can only see the text inside the code

cinder meteor
#

Can I str fnc_my_function, add the _fnc_scriptName = ... part by manipulating strings in sqf, then compile it back into its previous code-variable?

#

if fnc_my_function was compiled with preprocessor previously, will preprocessor's things like line numbers break?

glossy inlet
#

you could yeah

#

no preproc should stay

glossy inlet
#

You can just move your stuff to script.sqf
and do a call compile preprocessFileLineNumbers "script.sqf" in your init.sqf

cinder meteor
#

Even if inside script.sqf it is setting the functions with = or missionNamespace setVariable ?

glossy inlet
#

yes

#

once a function goes to compile. It and all the code contained inside it get's instrumented

#

i recurses into {} statements in the code

cinder meteor
#

Interesting. I will try.

#

So... like this inside init.sqf? call compile preprocessFileLineNumbers "init1.sqf";
And inside init1.sqf I have exactly the code I posted above. Or I still need the special arma build?

glossy inlet
#

yeah

cinder meteor
#

Even with profiling branch, -profilerEnableEngine, -profilerEnableInstruction, with the code above it doesn't show these instructions inside fnc_dummy thingy
https://ibb.co/3hpNcWB

glossy inlet
#

πŸ€”

cinder meteor
#

Could other mods interfere?
I'm also running the ADE

#

maybe it's intercepting stuff

glossy inlet
#

most things are working though. So I assume not

glossy inlet
#

https://s.sqf.ovh/2019-02-17_01-33-07.mp4 new project shaping up nicely.
In-Browser remote debug console. Had the idea when I once again was searching for a certain script line in my 700 lines of scripts so I wanted something organized.
And If I make something organized already, why not make it a website so I can execute scripts from my phone? πŸ˜„

sacred flume
#

cuz webapps are gross

#

but that may be bias from working at companies that thought they were awesome and turned all their standalone apps into webapps

#

using IE

glossy inlet
#

Never made any so I'm learning new stuff.
My alternative was a desktop app and a android app.. which is just a waste of time and makes it less useable

sacred flume
#

c# WPF app

#

use the 'new' core libs

#

nah, im just biased against webapps

glossy inlet
#

https://s.sqf.ovh/firefox_2019-02-17_04-07-00.png You choose the target unit, load a preset and press exec and it executes that code onto that unit.
Basically what many people already built as ingame debug consoles. But this one works from your remote laptop or phone or whatever. And you can add new presets on the fly and just press F5 to reload new presets.
Really dunno if that will be useful for anyone else, only making that for myself but I think I'll still release it anyway

craggy lake
#

I’ll use it great idea .

glossy inlet
smoky halo
#

You need php server?

vague shard
#

Forced crash: array access out of range: 1 index: 1

#

anyone knows more about this?

#

from what i recall BI introduced this bug trap in diag some patches ago

#

but no more details about it

#

makes diag unusable for such situations..

smoky halo
#

I’m assuming this is not script array that is out of range, it is some engine array, right? Would make sense to kill the app as you are trying to access memory that is not yours

vague shard
#

it seems related to models/anims

#

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

#

problem is RV engine is EOL and no more support is given essentially

smoky halo
#

Have you reported it? Crashes are priority, the target is stable platform even if EOL. Diag crashes help to find sources of release crashes

vague shard
#

yes multiple times

glossy inlet
#

@smoky halo You need php server? no integrated server in the dll. "Boost beast"
And only html and javascript with websocket

true gazelle
#

https://gumroad.com/l/ozGyc Just released a set of batch files that will convert TGA to PAA and FBX to RTM. (Again, it's free, just put in 0).

#

Texture convert is much faster than waiting for Addon builder or PboProject to manually convert textures

#

FBX to RTM only works with certain rigs, compatible with my most recent rig, and BI's motion builder rig I imagine.

cinder meteor
#

Do I need DLLMain inside an intercept addon?

glossy inlet
#

Actually... I don't know why you don't need one πŸ˜„ Intercept libraries don't add one
And the intercept readme example shows a dllmain in there Β―_(ツ)_/Β―

cinder meteor
#

Allright, I've seen it in some intercept documentation
anyway it looks like to be loading now, looks like intercept was looking for a match in the config to my .dll

#

I was purely following the getting started wiki page

glossy inlet
#

the getting started page should tell you to use the template.. yeah it does.

#

And the template project should automatically build _x64.dll but I think the wiki page doesn't tell you that the name in config has to be without _x64?

cinder meteor
#

In the config.cpp of the template there is this:
pluginName = "Intercept Template Plugin"; //Change this.
while the generated .dll. is called like template-plugin (defined in cmake)

#

so I just checked the config of your profiler πŸ˜„

glossy inlet
cinder meteor
#

IDK, I was looking at this page as it seemed to answer my question most
https://github.com/intercept/intercept/wiki/Writing-Plugins
and it says pluginName = "mysupercewlplugin";
And then it says Intercept will try to load "mysupercewl.dll" from all of the following directories until it has found it.
never mentioning that it needs a match 🀷

glossy inlet
#

mysupercewl != mysupercewlplugin 🀦 who wrote that page πŸ˜„

#

Senfo! πŸ”«

#

I updated the wiki page

cinder meteor
#

maybe I missed that, but is it possible to not restart arma if I have rebuilt my client .dll?

glossy inlet
#

You can load/unload dll via script commands, but only if you don't use self registered sqf commands.
Visual Studio also has a feature called Edit-And-Continue

cinder meteor
#

πŸ€” I guess I could make my client DLL a host for another client DLL then

#

hmm or that VS feature might do as well

glossy inlet
#

With that VS feature you can only do small-ish modifications. Like adding new functions might not work. But if you like need to fix a off-by-one error or change a variable or something simple that will work

cinder meteor
#

Never worked with CMake... maybe there is a standard VS solution template for an intercept plugin somewhere?

glossy inlet
#

There is a standard VS CMake solution

#

You shouldn't need to edit anything in the cmakelists besides the plugin name

#

You can use CMake-Gui to create a VS solution out of the CMake project

cinder meteor
#

Allright will try that!

#

I'm going to try to make sqf wrappers for the VS concurrency visualizer

glossy inlet
#

Concurrency visualizer is multithreading stuff. SQF is not multithreaded

cinder meteor
#

I know, I just want its visualizing capabilities because I want to visualize what's going on with multiple things in my mission

#

it can create multiple 'lines of events' per actual thread so it will do

glossy inlet
#

I can give you API for the script profiler so that you can use that to display your own events

cinder meteor
#

πŸ€” but it's going to go to Tracy, right? Can tracy do that nicely?

glossy inlet
#

If you display it in a seperate thread in Tracy then yeah I think so. Though if you also have the profiler data in there you might get lots of data that you don't care about

cinder meteor
#

yeah, I think it's possible to make the concurrency visualizer display only what I generate manually, but I'm not sure right now

#

also not sure if it can show stuff live πŸ€” I will ask you if my idea fails, allright? Want to try to use Intercept for something useful finally. Thanks for help so far.

glossy inlet
#

Yeah. I'll implement the interface anyway. Combining it with the debugger should make profiling of scheduled easier

glossy inlet
#
class ArmaScriptProfiler_ProfInterface {
public:
    virtual game_value createScope(r_string name);
    virtual game_value createScopeCustomThread(r_string name, uint64_t threadID);
};
//code
auto iface = intercept::client::host::request_plugin_interface("ArmaScriptProfilerProfIFace", 2);
if (iface) {
    auto profilerInterface = static_cast<ArmaScriptProfiler_ProfInterface*>(*iface);
    auto scope = profilerInterface->createScopeCustomThread("testy"sv, 1337);
}

The scope ends as soon as scope variable is deleted/set to nil.
Might push that to steam this evening (~7 hours)

cinder meteor
#

nice! did you have to hack into tracy much?

glossy inlet
#

I just needed to add a function so I can specify a custom threadID instead of tracy automatically getting the calling thread.
Like 5 lines of changes in tracy

cinder meteor
#

Yay it's working \o/ Only need to find the way to make it not collect megabytes of data per second πŸ€”

glossy inlet
#

Your thingy or the tracy thingy?
Want a Start parameter for the profiler that disables automatic script instrumentation? such that only your own stuff will show up?

cinder meteor
#

My concurrency visualizer thingy

#

Yeah I'd love just to see stuff I make manually if possible

cinder meteor
#

probably to make the concurrency visualizer not collect everything from arma process I could create another process with minimal activity which would receive data from the intercept plugin 🀦 no that's just lame, I guess I'll use your Tracy then

glossy inlet
#

So I'll add a start parameter to ASP to disable automatic instrumentation and make a build for you? I can get that in 10 minutes if you say "yes" now

cinder meteor
#

Do I get it right that you already have the SQF commands to make tracy plot things?
I'm leaving after an hour till the rest of the day
Yeah do it when you can, I'll try to attach it to my code then and we'll see how amazing it looks

glossy inlet
#

Yes I do. But the commands are disabled in scheduled because they go through the whole pipeline and they are in mainthread.
The API goes directly to the profiler adapter

vague shard
#

whats the state of DZ SA modding by now - anyone still following it?

#

havent seen any reports about fixed tools, docu, or even plans/roadmap from BI - is there anything?

glossy inlet
vague shard
#

sad :(
player stats going down, albeit somewhat slowly: https://steamcharts.com/app/221100#3m
cant see the game to recover unless some "killer/hype" mod made by the community gets done somehow

nocturne basin
#

dayz like games are pretty much dead nowadays

#

thus it is what it is

#

unless you get the general public to stop playing pubg and fortnigt

#

or the latest competitor: Apex Legends (which is the first battle royal that got me hooked too)

vague shard
#

well BI cant do such games anyway. however the community can come up with popular concepts
could even do such/similar/other popular stuff on Enfusion right now I'd assume

#

AI/COOP and vehicles besides cars (or none) is more the limiting part right now, isnt it?

karmic niche
#

Personally, until some kind of callExtension is implemented, there is no reason for me to touch DayZ (I'm not going to reimplement numpy nor matplotlib in Enscript :P)

#

Even though, I'd really be interested in porting our mod

smoky halo
#

which is the first battle royal that got me hooked too this is why you disappeared all over sudden?

nocturne basin
#

I did something horrible today .... in C# ... as the generics could no longer cover my usecase here

#
// Actual values changed to make this shorter
this.ActualType.CreateInstance(this, "string", 12345);

// Method gets generated with up to 10 args
public static object CreateInstance<TArg1>(this Type t, TArg1 arg1)
{
    var constructor = t.GetConstructor(new Type[] { typeof(TArg1) });
    if (constructor == null)
    {
        var ex = new InvalidOperationException("No matching constructor existing.");
        ex.Data.Add("Target", t);
        ex.Data.Add(typeof(TArg1), arg1);
        throw ex;
    }
    var exp_parameters = new Expression[] { Expression.Constant(arg1) };
    var exp_new = Expression.New(constructor, exp_parameters);
    var result = Expression.Lambda(exp_new).Compile().DynamicInvoke();
    return result;
}
#

do not try this at home kids

smoky halo
#

Just tried it. Now my washing machine stopped working, the toilet doesn't flush and it started raining!

nocturne basin
#
// Black Wizardry!
// Do not attempt at home or without a Witch-Hunter.```
this actually is now a comment in the code-base here
#

and you have been warned (kind of) @smoky halo

#

the worst part actually is: it fucking just works

#

or is it good? idk ...

smoky halo
#

@glossy inlet I understand you have a mod update tool something similar in approach to swifty and Armasync. I didn't spot it obviously in your github, do you publish it somewhere? Kind of getting fed up waiting on a bug fix for Swifty that has stopped us migrating to the new version and the old one is just really buggy. Rather than write my own I was wondering if I could test yours out?

glossy inlet
#

No it's private sorry.
I planned on selling it someday

#

It takes quite a lot of backend setup. Do you have a linux or windows server?
I guess we can get something going, but it will take some time configuring everything.

It was only used once for a different group 4 years ago, Probably needs a bit of work to split the data apart into two seperate groups
I can send you a link to my groups version if you wanna test out the usability and stuff

pearl beacon
#

Selling πŸ˜‚

glossy inlet
#

I was 15 okey?!

pearl beacon
#

Guess you didn't think that entire groups of people would have to buy it and no group would want that because everyone likes more members? XD

glossy inlet
#

No. I thought like.. 5€ per month for the whole package.
Mod updates, Mission planning, server management tool maybe too.
Also have a Android app for mission planning now.
I'd say that's worth 5€ πŸ˜„

pearl beacon
#

Open-source would be even better :D

glossy inlet
#

Tell that to Swifty

smoky halo
#

ripoff!

glossy inlet
#

In 2014 a guy from my then-group tried to hack my database and the updater wanting to steal it and kick me out of the group.
Back then it was actually open-source. But he was too dumb to find the googlecode repo.
But since then I've decided to keep it closed, I don't want such a thing to happen to me again.
It has been my first big project, and converting it to C++ was how I started learning the language. It's my baby :u

pearl beacon
#

I do tell that to @orchid shadow every time

#

Bugs would be fixed a lot faster...

#

Sounds like a great group and person

glossy inlet
#

Yep. Group went down a couple months after I left.
They lost their servers and their mod update tool soo.. No wonder.

pearl beacon
#

so what did he hope to accomplish?

#

wait, I have a better question, why did he want to kick you!?

glossy inlet
#

Well he wanted to keep the tool, because he know that he couldn't if he kicks me.
Actually don't remember. I was probably some mid-puberty asshole or something

pearl beacon
#

he had a fair reason then πŸ˜„

orchid shadow
#

Open sourceing swifty is more about my pride then aything

glossy inlet
#

^ same

orchid shadow
#

I am not sure anyone should look into that shit ever

pearl beacon
#

fuck your prides, bring it out

orchid shadow
#

The backend is decent now.

#

Plus the fact there would be quickly be rebranded into 300TacticalArmyMen updater

pearl beacon
#

that's the great thing about open-source though, but if you really don't want that, throw a restrictive license on it, it won't prevent people from doing that but every normal group will actually respect it and not do it (one would hope)

glossy inlet
#

But the bad groups full of idiots that already steal everything would just take it and won't care if you tell them to stop ^^

pearl beacon
#

same way that I don't care about them

quick fog
#

hey guys, do any of you know how to fix this problem: we are trying t ouse an SVN-commit-hook to run a cmd file to autopublish a svn folder of pbo's to steam workshop. now the cmd file works if we run it manually. the issue appears to be that visualsvnserver is run under username "network service" (win 2k16 server) and publisher is running only as a normal user on the server (me or admin for example), so our cmd file fails to publish. i can execute the cmd file and it will publish fine. but i cant get the svn commit hook to ru nthe cmd file cleanly. any ideas?

scenic canopy
#

do you use steam publisher or steamcmd?

quick fog
#

is there a way to force username for publisher?

#

steamcmd

scenic canopy
#

not PublisherCmd.exe?

quick fog
#

"%Publisher%\PublisherCmd.exe" update /id:%WORKSHOPID% /changeNote:%CHANGELOG% /path:"%WORKSHOP_PATH%"

scenic canopy
#

yeah, that's not steamcmd

quick fog
#

sorry

scenic canopy
#

PublisherCmd.exe requires steam to be running in the same session

#

which headless services doesn't

#

either change to use steamcmd for uploading

#

or run your script in the same session

#

same session == see both windows on the desktop, more or less

quick fog
#

sounds good. we can't work out how to make them the same session, as svnserver is running as "network service" and not a regular user

scenic canopy
#

so if you start the visualsvnserver in the user session it should work

#

you can't run it as a service, publishercmd.exe won't have access to steam

quick fog
#

i see, so we move the mountain to mohammad so to speak, and force visualsvnserver to run as a user?

scenic canopy
#

yep

#

that should work

quick fog
#

ok peachy thanks. at least we have an idea where t ostart fixing this πŸ˜‰

scenic canopy
#

we use it for one of our jenkins slaves

#

switching to steamcmd might be easier πŸ˜›

#

you need to create a VDF which basically describes what you are uploading

#

it's a simple text file

#

and then just calling upload in steamcmd

#
"workshopitem"
{
 "appid"        "107410"
 "publishedfileid"    "12345" <-- either 0 for new upload or your workshop id
 "contentfolder"    "C:\visualsvnserver\eggbeast_awesome_mod"
 "previewfile"        "C:\visualsvnserver\eggbeast_awesome_mod\preview.jpg"
 "visibility"        "0" <-- 0 = public, 1 = friends, 2 = hidden
 "title"        "EggBeast's Awesome Mod"
 "description"        "My Totally Awesome Mod"
 "changenote"        "BFG9000"
}
#

c:\steamCMD\steamcmd.exe +login eggbeast s3cr3tp455w0rd +workshop_build_item C:\visualsvnserver\eggbeast_awesome_mod\workshop.vdf +quit

smoky halo
#

OK no problem, I figured it wasn't public for a reason.

hallow rapids
#

@dawn palm fyi, the Linux DeWrp (with the -O parameter) version doesn't seem to work properly

#

it seems to get stuck in some kind of loop and keeps spamming the same line forever

#

haven't tried any other maps though

quick fog
#

can confirm that user account switching for visualsvnserver didnt help. Initializing Steam... Steam initialized. Result: SteamInitializationFailed
this is happening despite the user being arma in the visualsvnserver, and steam and arma tools are running in that user account

#

so thanks dahlgren, we'll regroup and try your steamcmd suggestion

scenic canopy
#

it's not enough to set a user on the service

#

you need to run the visualsvnserver in the user session that runs steam

#

i.e. your desktop

#

@quick fog

#

steamcmd works regardless of session, so that's probably easier

quick fog
#

thanks

#

C:\Program Files (x86)\Steam\steamapps\common\Arma 3 Tools\publisher\publishercmd.exe yada yada works in this cmd file the hook calls

scenic canopy
#

can you run the steamcmd outside the hook?

quick fog
#

but for some reason C:\Users\arma\Downloads\steamcmd.exe yada yada does not

#

i'll try onesec

#

idk

#

i tried running it in powershell, i just get a double >> icon and no report or progress

scenic canopy
#

sounds right, try typing "login username password"

quick fog
#

C:\Users\arma\Downloads\steamcmd.exe +login xxxx xxxx +workshop_build_item D:\checkout-repos\workshop.vdf +quit

scenic canopy
#

that's from outside

#

each of the + is a command inside the prompt

#

or so

#

or something like that

quick fog
#

ahhh so i double click on the steamcmd.exe

#

i was tryingto run it using powershell to start it

scenic canopy
#

that should work too

#

if you just call or open the steamcmd without any params you should get the prompt above

#

if you supply arguments with + it should autorun them

quick fog
#

ok thanks

#

so it says i need t oauthenticate. waiting for an email...

scenic canopy
#

in the hook above, can visualsvnserver run the steamcmd?

#

yeah, first time you need to provide steamguard if enabled

quick fog
#

i can tr ythat i guess once i have this steamcmd working on its own

scenic canopy
#

after that I think it's enough with login username

#

so just skip the password

quick fog
#

its not sent an email damn

#

ok i logged in using mobile authenticator

#

so do i use workshop_build_item D:\checkout-repos\workshop.vdf t osee if it publishes?

scenic canopy
#

should be correct yeah

quick fog
#

is there an ywa yto have the line you just typed show up again like wit hdown arrow etc

scenic canopy
#

no πŸ˜„

quick fog
#

in this console?

scenic canopy
#

copypaste πŸ˜›

quick fog
#

damn

#

ok its publishing from the steamcmd command line

scenic canopy
#

ah, the exit code 1 from the post commit hook might be due to failed login πŸ˜›

quick fog
#

no it failed - file not found

scenic canopy
#

wrong path to vdf, image or content?

#

you can omit the image if you don't want to change it etc

#

appid needs to be the arma 3 id

#

and publishedfileid should either be 0 for new item or an existing item id

#

and contentfolder is the folder you want to upload

quick fog
#

poss the folder path, fixing

#

still cant paste into this steamcmd

#

so have t otype it manually

scenic canopy
#

right clicking should be paste in cmd

quick fog
#

works in pse but not in steamcmd window

scenic canopy
#

aww

quick fog
#
"workshopitem"
{
    "appid"                "107410"
    "publishedfileid"   "xxxxxxxxxxxx"
    "contentfolder"        "D:\checkout-repos\pbo\@vn"
    "previewfile"       "D:\checkout-repos\pbo\skull.jpg"
    "visibility"        "1"
    "title"                "xxxxx"
    "description"       "Mod Test"
    "changenote"        "BFG9000"
}```
#

i know the field id works

#

@vn is where my addons folder is

#

and my mod.cpp etc

scenic canopy
#

sounds correct

quick fog
#

path to image was wrong lol

#

ok it worked!

scenic canopy
#

πŸ‘

quick fog
#

so now i need to get the hook t ocall this process

#

any idea what syntax to use?

scenic canopy
#

it could've failed before since you hadn't logged in yet

quick fog
#

C:\Users\arma\Downloads\steamcmd.exe" +login xx yy +workshop_build_item D:\checkout-repos\workshop.vdf +quit

scenic canopy
#

skip the password

#

I think it will reuse your existing login then

#

someone reported that behaviour for my steam web admin panel at least 🀷

quick fog
#

ok if i go int opse, how do icall this prog? cd C:\Users\arma\Downloads\ &.\steamcmd.exe +args

scenic canopy
#

should work yeah

quick fog
#

ok ill try it in pse

#

works

#

ok now it wants my 2 factor auth code

#

this aint gonna work for an automated process

scenic canopy
#

did you supply the password?

quick fog
#

yes

scenic canopy
#

login and then try without password

quick fog
#

how is that different? im logged in to steam client o nthe server already

scenic canopy
#

steamcmd and steam works separately

#

steamcmd will even sever your steam connection

quick fog
#

ok so i leave steamcmd running all the time logged in yeah?

scenic canopy
#

try calling from command line with +login username without the password

#

the fallback shitty solution is to disable steam guard 😦

#

but users of my web admin panel reported being able to use steamguard if they only supplied the username after first successful login

quick fog
#

works!

scenic canopy
quick fog
#

ok got it working thanks so much @scenic canopy I really appreciated your advice tonight. case of virtual beer sent lol

#

we switched the visualsvnserver to a new user account, and had that user account login to steam automatically on startup. and that fixed the issue as the hook called the command, and the command did your suggestion with steamcmd in place of publisher.

#

publisher still crapped out saying steam initialization failed, EVEN when steam client and steamcmd were both up and running in the background

#

so that sucks

#

steamcmd was perfect, once we ironed out the correct pathways

plush shard
#

but using steamcmd won't update the kvtags like bis_signature, bis_shortHash and bis_longHash

vague shard
#

what are these used for - the mod matching via A3 launcher?

plush shard
#

probably (there are additional tags for displayname, size and platform)
but I haven't looked into it further because I can't use the launcher (linux/wine)

vague shard
#

@prisma dragon any clue/advice?

cinder meteor
#
_mystream = ofstream_new "myCustomReportFile.rpt";
_myStream ofstream_write "Text one";

Intercept is such a nice thing. It was quite easy to make custom SQF commands with that and handle string arguments so far. Didn't try many other features yet. Hope to use it in some mission some time. πŸ˜„

nocturne basin
#

sqf gets nice when you can create your own commands, yes

smoky halo
#

Like #

nocturne basin
#

no

#

just no

sick verge
#

I am currently thinking about creating a SQF language server that would serve as the backend for any Editor/IDE one would want to create.
So basically it would be responsible for preprocessing content, lining it, providing information about available commands and the like.

But I also think that there are quite a few editors out there already so I was wondering whether it would even be worth the effort. What do you think?

glossy inlet
#

SkaceKamen's VSCode thingy already has one. I think even written in Java

It needs some help getting preprocessing correctly implemented though
I looked at it once but... Java.

smoky halo
#

Enhancing that one if possible would be really nice as it has a lot of good work done already and it mostly just needs some work on macros so they don't throw errors (which is why I have it off right now). Incidentally the latest VSCode/SQF extension seems to have issues and doesn't work currently.

nocturne basin
#

And again, sqf-vm could do a lot πŸ€·β€β™‚οΈ

sick verge
#

I'm not only talking about the linting though. What I have in mind is a backend that would only need some interfacing for the respective editor in order to provide syntax highlighting, command-information (description, link to BIKI, etc), functionality to refactor SQF code in projects (like renaming variables), etc.

smoky halo
#

@nocturne basin I suppose you could make obfuscator in 3 seconds with your sqf-vm

nocturne basin
#

well ... it would take me a lil bit longer then just a few secs
but indeed, i could do a lot simply because i already have literally everything i would need for that

smoky halo
#

that is what I thought having the actual code makes it easy

#

no danger to break the code

#

could even charge for it

nocturne basin
#

well ... technically, you still need to link everything together
SQF is an interpreted language --> no actual relations

#

but as there is an CST generator and a preproc

#

i can do all of that

#

even could provide you with SQF assembly

daring niche
#

moved

nocturne basin
daring niche
#

gotcha, will move my post

smoky halo
#

No, they need a converter

#

Regardless if you find one or not, knowing how to use Oxygen is beneficial if you want to make shit for Arma

daring niche
#

You are 100% right, but since oxygon is so horrendous imo I want to do as much as possilbe outside outside of oxygen before importing the model in there

smoky halo
#

I feel your pain

daring niche
#

Seen many vids with people doing it in old blender, but couldn't find any tools for 3Ds or blender 2.8 beta

obsidian sluice
#

It's so new there is not much

daring niche
#

what about 3Ds? I preffer it anyway

#

I've seen toadie2k's videos on animations i 3Ds for arma, so I figured it couldn't be impossible

obsidian sluice
#

Isn't there some script in tools?

glossy inlet
#

bitxt export yeah

daring niche
#

aight thx, will look into that

obsidian sluice
#

Oxygen can also import FBX, not sure how much better it is after update

glossy inlet
#

Didn't have any problems with fbx, atleast not with the simple stuff that I do

daring niche
#

Thanks, will give it a try if dedmens tip in #arma3_model doesn't work

cinder meteor
#

@glossy inlet I remember you said something about global macros with intercept... can they be done and can I easily make one?

feral nova
#

trying to do something, for getting a large string inputted into arma with extension, how would i go about doing something like

string = "string over 1000 bytes";

if (string > 1000 bytes) {

    stringOutput = max arma output;
    std::strncpy(output, stringOutput, outputSize - 1);
};
#

i have the basic, call >> store to global variable >> fetch working, just working out how to split the string, so I can output it to arma .

sick verge
#

I experienced the std::string::copy(...) (that is the copy method of std::string) to be better for Arma. had a few game-crashes while using std::copy. They went away once I started using the string's method.

#

Aside from that you'd need to just need a buffer inside your program that you will write the remaining string into and you need to mark the returned message in a way that you can detect in SQF in order to call the extension again to get the rest.
Then assemble the complete String in SQF

nocturne basin
#
int strncpy_safe(char *output, const char *src, int size)
{
    int i;
    size--;
    for (i = 0; i < size && src[i] != '\0'; i++)
    {
        output[i] = src[i];
    }
    output[i] = '\0';
    return i;
}
char[] GiganticString = "...";
int GiganticStringLength = sizeof(GiganticString);
int curIndex = 0;
void RVExtension(char *output, int outputSize, const char *function)
{
    curIndex += strncpy_safe(output, GiganticString + curIndex, outputSize);
}
private _str = "";
private _tmp = "";
while { _tmp = "ext" callExtension ""; count _tmp > 0 } do { _str = _str + _tmp; };```
hf @feral nova
feral nova
#

thats what im doing πŸ˜„

#

ty

glossy inlet
#

@cinder meteor can they be done and can I easily make one no and no. Required custom stuff that I once had in the debugger but that's broken too

#

@feral nova you can write into the input string, and it should directly modify the content of the variable in SQF. But that's bad practice ofc

cinder meteor
#

Thx.

#

Btw, can I register a binary << operator? I remember you told me I can't do unary ++, but I don't recall all the conversation >_< and can't find it

glossy inlet
#

Don't see why not

#

Also don't remember saying you can't do unary ++

cinder meteor
#

oh nice, so I can fake the C++ stream << operator xD

#

I remember we were talking about doing a _number++; and you said it's not possible

glossy inlet
#

yes

#

But not because you can't register that command

cinder meteor
#

because the _number I get inside the SQF command handler is const, right?

glossy inlet
#

no

#

because you don't know that _number came from a variable

#

and if you wanted to increment it you wouldn't know where to write the incremented value to

cinder meteor
#

hmm... ok
I wanted to ask, is there some documentation on how to treat the game_value and its relation to the game engine, how SQF allocates memory, etc? Also I remember X39 saying many times that variables in sqf are all referenced

glossy inlet
#

"how to treat" ?

#

Dunno what you wanna hear ^^

cinder meteor
#

well sometimes we treat object as handle/pointer to actual data, sometimes as actual data itself

glossy inlet
#

game_value is just a pointer to a game_data object that does hold the actual data

smoky halo
#

oh nice, so I can fake the C++ stream << operator xD what will be the left arg?

glossy inlet
#

I guess same as with the c++ stream operator.. Left arg will be a stream

smoky halo
#

so you gonna add gamedatatype stream?

cinder meteor
#

well. for now it's just a stringified pointer to a previously opened stream πŸ™„ but user won't need to care much if it's a separate type or a special string

smoky halo
#

This site can’t be reached

glossy inlet
#

forums be broken

cinder meteor
#

I tried to have a look at how to make a custom data type... probably wasn't worth the effort for this case

glossy inlet
#

the user could put a different string into there and crash the game?

cinder meteor
#

nah... it converts it to pointer(number), then I keep track of pointers to created stream objects

smoky halo
#

so the string is a number? "2198739218"?

cinder meteor
#

hex, yes

#

well, I could actually return a number ID πŸ€”

smoky halo
#

wouldnt it be easier to have index of the array of pointers?

#

this way you cannot pass illegal data

glossy inlet
#

index would shift if you remove a element on the front

smoky halo
#

range check is easy

glossy inlet
#

and you want to remove things after close

cinder meteor
#

well probably yes. I was kinda ill when I made this so I just implemented the first thing that came into my mind xD

#

Now it doesnt close the file at all. It gets closed when arma gets closed.

smoky halo
#

I thought he wants standard streams in there so const array

#

but if it is filestreams then of course

cinder meteor
#

with "023FA97" you can directly see that it's some special voodoo and you should probably not mess with it πŸ˜„

vague shard
#

is there any recent "offline BIKI/sqf command "comref"?

smoky halo
#

It just had to go down on weekend πŸ€¦β€β™‚οΈ

#

It’s up btw @vague shard

vague shard
cinder meteor
#

If it totally breaks I can share my local copy of SQF command pages from wiki (made it for a long internet-less trip once)

sick verge
#

Almost all important information should be available as a file inside my SQDev-plugin as well (or even in the plugin itself via the content-assist) 🀷

cinder meteor
#

@glossy inlet I've just noticed, for some reason my intercept client addon doesn't get loaded when I also load Arma Debug Engine (but ADE gets loaded).
But my addon gets loaded together with Arma Script Profiler fine, both get loaded.
πŸ€” πŸ€”

glossy inlet
#

maybe classname conflict in the config

#

overwriting eachother

cinder meteor
#

You mean ADE overwriting my addon's config.cpp or something else? Because my addon's config.cpp has unique names everywhere

glossy inlet
#

mh... dunno then ^^

cinder meteor
#

Maybe arma addon load order? Is there even such a thing?

glossy inlet
#

shouldn't matter

cinder meteor
#

hmm... I've made it from the template at github, and it has old intercept I think? could it matter?

glossy inlet
#

shouldn't matter

#

either it always loads, or never

cinder meteor
#

... lack of certificate? (no certificate = in the config)? 🀷
other than that I have no idea what's wrong with my plugin

glossy inlet
#

if you are not overwriting vanilla commands then you don't need cert

#

checked intercept logs?
Arma 3/logs

cinder meteor
#

Yeah I just don't see it to want to load my stuff:

[20:30:37]-{info}- Load requested [SQF-Assembly]
[20:30:37]-{info}- Load completed [SQF-Assembly]
[20:30:37]-{info}- Load requested [BIDebugEngine]
[20:30:37]-{info}- Load completed [BIDebugEngine]

And this is when I loaded it with the script profiler:

[20:29:33]-{info}- Load requested [SQF-Assembly]
[20:29:33]-{info}- Load completed [SQF-Assembly]
[20:29:33]-{info}- Load requested [ArmaScriptProfiler]
[20:29:34]-{info}- Load completed [ArmaScriptProfiler]
[20:29:34]-{info}- Load requested [Arma-ofstream]
[20:29:34]-{info}- Load completed [Arma-ofstream]
glossy inlet
#

wtf

#

Ah!

#

two main.pbo without pboprefix

#

they overwrite eachother

cinder meteor
#

haha cool

#

thanks, would take me long to find it out πŸ˜„

cinder meteor
#

@glossy inlet where does ADE get file path from for each scope it outputs when it dumps callstack?
I tried to post-process my functions like this to add the _fnc_scriptName (not for Script Profiler but for my own logging things). I did it like this:

private _fnc = missionNamespace getVariable <function name>; 
private _fnc_array = toArray str _fnc; 
_fnc_array deleteAt 0; // Delete the '{' at start
_fnc_array deleteAt ((count _fnc_array) - 1);  // Delete the '}' at the end
private _fnc_str = (format ["private _fnc_scriptName = '%1';", _x]) + (toString _fnc_array); // add the private variable at start
missionNamespace setVariable [<function name>, compile _fnc_str]; // Compile it back

Everything is fine except that ADE can no longer figure out the file path:

21:51:21 "    [] L13 ()"
21:51:21 "    [] L5 ()"
21:51:21 "        _fnc_scriptname:handleMessageEx"
21:51:21 "        _msgtype:500"
21:51:21 "        _thisobject:o_AIGarrison_N_1"
21:51:21 "        _msg:[""o_AIGarrison_N_1"","""",0,16,500,0]"
21:51:21 "        _this:[""o_AIGarrison_N_1"",[""o_AIGarrison_N_1"","""",0,16,500,0]]"
21:51:21 "    [] L0 ()"
21:51:21 "        ___switch:500"
21:51:21 "    [] L7 ()"
glossy inlet
#

From the source location info in compiled code

#

same as what arma uses when it prints script errors to RPT

#

cannot get it in SQF if that's what youre asking

cinder meteor
#

so... if I recompile str my code and then compile it back, it's gone forever, right?

glossy inlet
#

no

#

#line directives in the code

cinder meteor
#

oh, right, but the #line is added per file, not per myFnc = {...} of course πŸ˜„

vital yoke
#

Has anyone done anything with the network traffic of ArmA?
I am currently dumping each packet into a database.
Got ~800.000 Movement packets, most of them look fine, but about 100 of them have a timestamp that doesn't make any sense.
Not sure if I should just drop them or if there is any reason for them to have these strange timings.
Idea is to kinda create replay files (maybe for ArmA itself if possible) from the packets or a Web-Interface like R3 (e.g. https://aar.ark-group.org/1954/ark-gtvt20-dune-buggy-death-race#).

elfin oxide
#

Afaik these replay files are not recorded from the arma traffic directly but with serverside logging of everything

vital yoke
#

Yeah thats how R3 is doing it, I went a step further and try to use the traffic. Still bugs me out why some packets have these strange timings.

thin rose
#

Hmm, Arma network packets ...

#

... and peeking into them...

hallow rapids
#

overcomplicating things ftw πŸ˜›

vague shard
#

@thin rose too much paranoia wont do you good πŸ˜‰

vital yoke
#

@thin rose getting and parsing the packets is already done, so if I would want to write a cheat I would just not care about the ~100 packets (that is 0.0125%, so basically nothing)
My ultimate goal would be to have replay files that you could replay into ArmA and have a Free Camera to do recordings.
BIS_fnc_UnitCapture is nice to capture one Unit, but during a mission we have > 100 Units.

smoky halo
#

Does anyone have something to convert all contents of a folder into lowercase? IE:

//hey.hpp
class SADFAF {
};
//test.sqf
if Player == Player then {Hint "yes"};

into

//hey.hpp
class sadfaf {
};
//test.sqf
if player == player then {hint "yes"};
fickle void
#

Backup first!!!

smoky halo
#

Yeah!!

#

I was thinking if someone had a nice "tool" made where you can just define the path and then run. I'll look into that though πŸ˜ƒ

fickle void
#

That is a nice tool, just paste it into a .ps .ps1 file, easier than installing something in my book

#

Does anyone know what extension for Visual Studio Code supports auto-format (Shift-Alt-F) of SQF? I have installed every one I can find, and it still says no extension can do it.

smoky halo
#

I don't think anyone has made a beautifier for sqf yet. Hoping I'm wrong though.
Please @ me if you find one.

glossy inlet
#

@nocturne basin ^ You had one right?

nocturne basin
#

Sqf-vm, Yeah

#

Limited but usable

#

Might fuck up some lengthytarrays though πŸ˜‚ πŸ˜‚

fickle void
#

@nocturne basin How does it compare to spoodys online one? I wrapped that one into a VSCode extension, and I got spoodys consent to share it.

nocturne basin
#

NΓΆ idea @fickle void

fickle void
#

Yeah that wasn't a good question sorry!

#

But this Sqf-vm isn't available as a VSCode plugin regardless right? I can't find it anyway.

nocturne basin
#

Nope

fickle void
nocturne basin
#

It is a standalone Utility, a linkes library and a static library

fickle void
#

Okay thanks, I have seen it, it looks pretty awesome.

nocturne basin
vague shard
#

@fickle void lightweight standalone extension sounds useful

#

is it "only" for open file, or can apply also on multiple/folder (trees)?

#

also is the definition xml based or how?

fickle void
#

@vague shard It just implements a formatter using the standard VSCode entry point, so it works with Alt+Shift+F and formats the whole document. I will add format selection as well. The implementation is here: https://github.com/billw2012/vscode-formatter-sqf

#

I would like to format an entire project in one go though, so I will look into it.

vague shard
#

ty

#

@sick verge was planning such feature for his SQDev eventually too if i am not mistaken

#

some fun code in there

#

would be good to have some configuration available down the line to avoid programmer wars

nocturne basin
#

sooo ... the one from alofatk probably is not better then SQF-VMs test implementation 🀷

vague shard
#

@nocturne basin do you have command line processing and configuration available?

nocturne basin
#

no configuration as it was just some quick proof-of-concept like thingy

#

but it is command line based

vague shard
#

aka for commit hooks and build pipeline use

nocturne basin
#

and was implemented literal ages ago

#
sqfvm.exe --help
...
   --pretty-print <PATH>  (accepted multiple times)
     Loads provided file from disk and pretty-prints it onto console.
...```
fickle void
#

I did find what I think is a failure in the spoodys one already:
"blah""escaped quotes""blah2" will format to

"blah"
"escaped quotes"
"blah2"
#

I don't know SQF language anymore than has been necessary for me to write what I want to though, so maybe this still works?

nocturne basin
#

nah

#

it won't

fickle void
#

Yeah it wouldn't make sense on reflection

nocturne basin
#

private ["_query"];switch (_side) do { case west: {_query = format ["blablabla'", blablabla];}; }; _queryResult = [_query,1] call DB_fnc_asyncCall; [asd, asd,asd,asd,asd,asd,asd,asd,asd,asd,as,da,sd,asd,asd,asda,sd]; [aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa,aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa,aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa,aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa,aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa,aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa]; "test""test""test"; as test "source"

#

the online thingy makes:

#
switch (_side) do {
    case west:{
            _query = format["blablabla'", blablabla];
        };
};
_queryResult = [_query, 1] call DB_fnc_asyncCall;
[asd, asd, asd, asd, asd, asd, asd, asd, asd, asd, as, da, sd, asd, asd, asda, sd];
[aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa, aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa, aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa, aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa, aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa, aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa];
"
test ""
test ""
test ";```
SQF-VM does:
```private ["_query"];
switch (_side) do {
    case west : {
        _query = format ["blablabla'", blablabla];
    };
};
_queryResult = [_query, 1] call DB_fnc_asyncCall;
[asd, asd, asd, asd, asd, asd, asd, asd, asd, asd, as, da, sd, asd, asd, asda, sd];
[aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa, aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa, aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa, aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa, aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa, aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa];
"test""test""test";```
fickle void
#

An auto formatter that breaks code is pretty bad :/

#

So only the escaped quotes are broken in the first one right?

nocturne basin
#
  • the missing space after private
fickle void
#

That is an error? Weird!

nocturne basin
#

nah

#

but it is an error in regards of pretty printing

fickle void
#

Wellllll

#

I agree it isn't pretty but I don't judge other peoples style πŸ˜ƒ

#

I just fix it then submit

nocturne basin
#

nothing to judge, it is just plain wrong

fickle void
#

How so?

nocturne basin
#

theoretically, SQF-VM can do all one wants 🀷 but nobody will take the time to implement it into any known IDE anyways
neither will i simply because doing so causes me headache

#

if you pretty print that like this, you pretty pring inconsistent

sick verge
#

Yeah code-formatting is planned to be implemented at some point @vague shard

nocturne basin
#

gets even worse, when one uses eg. private wrong

#

private "foo" --> private " foo"

#

ohh ... even if used correctly

fickle void
#

Well if SQF-VM can format a file via command line it would be easy to implement it into VS Code (assuming it allows calling external tools, which by its nature seems a given).

sick verge
#

Though I believe it is more likely that this will be based on the new Orinoco-SQF framework I am about to build in cooperation with K-Town (The guy that is developing the SQF-IntelliJ plugin)

nocturne basin
#

private "_foo" --> private " _foo"

#

@fickle void there is an application available
though ... if one wants to spend the time, one could improve a lot or build a separate application that provides more options

sick verge
#

We'll provide a framework for processing SQF (with or without caring about precedence) which will allow the input to be processed in a stream-like fashion. Creating a code-formatter on top of that should be rather trivial

karmic niche
#

@sick verge Pycharm support pretty please 😭

sick verge
#

Isn't PyCharm based on either IntelliJ or Eclipse? πŸ€”

karmic niche
#

I have given up trying to compile K-Town's plugin myself to test that one-liner fix for his plugin :[

#

YES it is based on it! :[

#

Maybe you don't remember that but we had a discussion about that on this channel

#

I believe that you just have to set one variable differently in the configuration of the plugin, while building to make it compatible with all IntelliJ-based editors

sick verge
#

The new Orinoco-SQF will be stand-alone without being tied to any IDE. That's the big advantage. So the type.checker we'll implement with that can be used as a standalone program. You'd just have to find a way to hook that up to PyCharm

karmic niche
#

Because by default they will only load on IntelliJ

sick verge
#

> Maybe you don't remember that but we had a discussion about that on this channel
I think I do remember that we talked about it before. Though you have to talk to K-Town for that. I have never touched the IntelliJ-plugin and have nothing to do with that xD

#

But as I said: Orinoco-SQF will be standalone as will be everything based on top of it (except GUI-integrations of course)

karmic niche
#

I have approached him twice on the github issue tracker. He's not interested AFAIR

sick verge
#

Ah okay - Then I'm afraid there's not much I can do 🀷

karmic niche
#

Yeah, it just sucks that for someone who can set this thing up, it's literally a one-line change (maybe even one word, don't remember)

sick verge
#

I feel you and if it was me developing the plugin I'd do it right away. But as things stand I have no clue about how to do that either

pearl beacon
#

what's Orinoco-SQF?

nocturne basin
#

Yet another SQF parser&preprocessor

pearl beacon
#

repo?

sick verge
#

We're still in the planning phase though - so not much code to look at yet ^^

pearl beacon
#

ohkay

#

I am starting to wonder why everyone is doing their own thing instead of stepping together and making one that will actually get finished πŸ˜›

#

good luck though

odd rapids
#

Hi Guys, One question is there a tool where i can pack several PBOs at the same time?

orchid yew
#

any pbo tool with command line in a batch file?

nocturne basin
#

@pearl beacon cuz magix

sick verge
#

I'm quite confident that this one gets finished. Though I guess that's what everyone's saying πŸ˜…

#

Besides the only other Java tool I know of is the one of Skaceman (sorry if I remembered this name incorrectly) and it works on some sort of grammar-generated code which won't give us the needed flexibility. Plus if I interpreted it correctly it can't check types inside an array and AFAIK K-Town is currently the only one that has a system in place that will do this (SQF-VM aside of course).

#

And we both have experience in writing that kind of a system so in theory it shouldn't take too long to develop the framework once we settled on the API

pearl beacon
#

Java though :P

#

/shrug @nocturne basin no, because this is a hobby and everyone gets to do what they want

#

It's just funny at times

nocturne basin
#

@pearl beacon as I said: magix

vague shard
#

@odd rapids same time or after another?

odd rapids
#

@vague shard for example i have my p drive there i can select some folder of my stuff and the programm pack all folder that i select as pbo

#

Can i do this with Mikeros tools stuff ?

sick verge
#

Don't know about mikero's tools but I know for sure that you could do it with armake(2) and a simple bash/batch-script (Linux/Windows)

vague shard
#

@odd rapids pboproject and makepbo

odd rapids
#

Ok thanks

pearl beacon
#

HEMTT ;)

#

Don't need a script wrapper anymore

sick verge
#

Isn't HEMTT designed to work on a single project?

#

So as long as all PBOs are in the same project that would obviously work but if they are part of different projects? πŸ€”

pearl beacon
#

Correct

sick verge
#

I opened an issue for removing that restriction. Feel free to improve it πŸ˜‰

pearl beacon
#

Oh you are that Krzmbrzl! πŸ˜‚

sick verge
#

Yep that's me πŸ˜…

smoky halo
#

Does HEMTT project has anything to do with the actual vehicle in Arma or it is just the name that is the same

#

It wasnt immediately clear from the page

sick verge
#

It's just the name afaik

#

It essentially is a wrapper for armake2 with some extra features

smoky halo
#

Build System for Arma 3 powered by armake2 for Linux and Windows - Heavy Expanded Mobility Tactical Truck for Arma 3 mods why is it mentioned here?

#

the truck I mean

sick verge
#

🀷

smoky halo
#

Like Arma is not confusing enough already

sick verge
#

You'll have to ask @rough grove

smoky halo
#

I guess he likes the truck a little too much

#

But not enough to make a HEMTT tattoo

pearl beacon
#

I wrote that, it was an inspiration for the name

#

Feel free to PR a better one ;)

#

It's not really just a wrapper, it's a full build system, with fast addon bootstrap creation, fast component creation and nice configuration around armake2

#

Logo is still needed also :P

rough grove
#

The project name HEMTT came from Rust's package manager Cargo. The first version before armake2 was based on Cargo's usage and CLI appearance. Since a HEMTT carries cargo. Β―_(ツ)_/Β―

pearl beacon
#

It's even rusty!

nocturne basin
#

@rough grove what about test automation, is it capable to do that

pearl beacon
#

What exactly do you mean?
We have plans to add additional custom build steps, so one way would be using that and a HEMTT test utility if anyone writes it

nocturne basin
#

got people who already contacted me about using SQF-VM for unit testing 🀷

rough grove
#

I've already doing some experimenting with SQF-VM for test automation using something like hemtt test, but it is currently low on my list of priorities

fickle void
#

Funny I was considering asking about how suitable SQF-VM would be for unit testing "my" auto-formatter. Any hints on what the best way to do this would be? I imagine the naive approach would be check that there are no errors or warning after auto-formatting. But something more robust like AST comparison might be better. However perhaps comparing pretty printing results before and after my autoformatter runs would be easier and just as robust?

nocturne basin
#

well ... you can get the AST by using SQF-VM
an example way of doing this would be:

  • Create folder
  • Put SQF-VM inside of it
  • Put Original File inside of it
  • Put Fixed File inside of it
  • Start SQF-VM and do the following:
private _orig = tree__ loadFile "original.sqf";
private _other = tree__ loadFile "fixed.sqf";
if !(_orig isEqualTo _other) then {
    diag_log "ERROR";
};
#

afterwards, you will be either greeted with nothing or "ERROR"

fickle void
#

nice, thanks πŸ˜ƒ

glossy inlet
cinder meteor
#

Oh that's nice actually, amazing

#

So I will see if my oop is leaking memory, yay \o/

#

Oh wait, I have an amazing idea, can you add registering of custom types?

glossy inlet
#

custom counters are already there

cinder meteor
#

Then I would be able to attach those plots to my actual objects, to track when I create/delete one of specific type

glossy inlet
#

STRING profilerSetCounter NUMBER

cinder meteor
#

Oh cool

glossy inlet
#

probably forgot to document that one πŸ˜…

cinder meteor
#

Hmm I think I've seen it in your profiler intercept logs πŸ€”

#

Then I should integrate it ASAP

glossy inlet
#

ASP-A

#

implementation for memory counters is ready, now go to sleep and hopefully not forget to release it tomorrow πŸ˜„

#

It also shows the number of allocated callstack items, quite interesting to see if you are currently in a 3 level deep exitWith callstack ^^
Though I kinda want to filter these out, but overhead on every memory allocation is a bit much to handle...

glossy inlet
#

teased update is out. Allocator plots need to be enabled with a start parameter

cinder meteor
#

Right, but if I disable default allocator counters, will I still be able to use mine?

#

Also don't you think that -profilerNoInstrumentation Disables automatic instrumentation of every compiled script. might be confusing to understand? If I looked at it without you explaining here what it is, I would probably have no idea what it does.

glossy inlet
#

it says what it does. Atleast the description.

cinder meteor
#

I guess it's not very important, but it seems if I do something like
("string_A_" + "string_B") profilerSetCounter 666; in preInit
Then the counter will get wrong name in the Tracy plot. The name can be quite random and weird. Once it was smth like '*%', now it's 'PROFILE_START_INFO',

fickle void
#

Did anyone make a code eval bot (e.g. using SQF-VM) for discord? So @ the bot with an expression and it evaluates and returns the result?

cinder meteor
#

Yes @nocturne basin has such a bot at his SQF-VM discord server

fickle void
#

Ah okay thanks, thought I had seen something like it somewher

glossy inlet
#

Then the counter will get wrong name in the Tracy plot. Yes make sure you use a static string if possible, if not string get's cached indefinitely and it ends up bad

#

I could dump the counter values in a file There is a Tracy command line application for recording traces

nocturne basin
#

@fickle void @tawdry gazelle is the bot

#

though ... not on this discord

lucid patio
#

I'm very much hoping the answer to the next question is a resounding 'yes' but.... Are @dawn palm's (complete) tools still available? I'm pretty sure my tool updater fails because my subscription has expired but when I look on the Maveric Application web site, I no longer see the DOS tools. 🀞

glossy inlet
#

moved to own website

#

yes still available

atomic quartz
#

Aaaaah cool this will be very helpful thanx for the invite πŸ€™πŸΌ

noble spoke
#

pboProject help: For some reason the directory selection dialog does not show my P drive when trying to set my source dir. I can confirm the P drive is there and other applications can see it in their dialogs as well. Any suggestions? Thanks

noble spoke
#

Ah, nevermind.

glossy inlet
#

Model Property Checker has been updated and now displays position of selections in memory lod.
In case anyone here wants to make ACE compats with ACE_scopeHeightAboveRail or ACE_railHeightAboveBore
https://github.com/arma3/ModelPropertyChecker/releases/tag/1.0
ODOL support is very minimal, you're better off running this on MLOD's directly.
I don't know how to do railHeightAboveBore, atleast I cannot figure out the correct memory points on the RHS M107.
https://s.sqf.ovh/ModelPropertyChecker_2019-03-04_19-27-44.png

vague shard
#

does someone here keep old binarize exe versions (+ dta folder)?

#

we are getting crashes (100% reproducible) for models that were working in the past with no changes from our end (as far as we can tell)

hardy bay
#

Hi everyone! I have a problem with P drive in Arma Tools. By default i can easily extract data from Arma 3 folder, but i alse need to extract data from several number of addons (ACE3, RHS, etc). Is there any way to do that, like i extract vanilla data? (sorry, if this message is written in wrong channel)

vague shard
#

extractPbo.exe folder p:

hardy bay
#

@vague shard extractPbo.exe extracts only one pbo in one time. Can i use it to extract all addon files?

#

Or i should do it one by one?

scenic canopy
#

you can extract all

hardy bay
#

How i can do that, @scenic canopy?

scenic canopy
#

like kju said

#

extractpbo [-options...] NameOfPbo[.pbo|.xbo|.ebo]/aFolder/AnExtractionList [SomeFolder]

hardy bay
#

@scenic canopy can you give me an example?

scenic canopy
#

extractpbo.exe -P c:\arma3\addons P:\extracted

vague shard
#

just p: as target for P drive setup

scenic canopy
#

you might need a trailing slash so P:\

#

or that might have been a specific broken version

hardy bay
#

@scenic canopy @vague shard Thanks a lot! It's works! πŸ€—

vague shard
#

where to find information on v3 bikeys creation/signing?

glossy inlet
#

There is none

#

there are only changes in the bisigns, not bikeys

#

What information do you seek?

vague shard
#

how to create them - is there some parameter?

glossy inlet
#

Dssignfile automatically creates v3 sigs

#

there is a parameter to go back to v2 if you need to

vague shard
#

alright. how to detect v2 vs v3 signatures - is the header different?

glossy inlet
#

Yes

#

One sec I have that somewhere

#

To get to it, first skip over the name by reading till the null character. Then script 0x11C bytes and then you have the 4 byte version

plush shard
#

but the offset to the end should be constant

glossy inlet
#

Yeah. End-0x10C is the start of the 4 bytes

scenic canopy
smoky halo
nocturne basin
#

Fyi: nice backdoor gets installed too

smoky halo
#

as if they would need one ^^

dull parrot
#

Just visiting the link has you on the NSA's list... though we were probably all there beforehand as potential "problems"... all the killing of IDAP folks going on you see. Anyway, OT πŸ˜‰

karmic niche
#

I'm gonna wait until the source is released (the github page was only a "placeholder" as of this afternoon)

bold narwhal
#

Alright, I'm want to setup a CLI to automatically build my add-on when I uploaded a commit to GitHub. What would be the best way to go about doing this? Please @ tag me with responses.
I saw how ACE3 has circle CI setup with Armake but I'm not sure how to configure a workflow etc in order to build the addon.

shadow trail
#

The tool links provided only give a few languages

glossy inlet
#

Tabler and de_stringtabler should support all languages πŸ€”
Oh crap.. de_stringtabler doesn't.
I can fix that in an hour if you need it.
Tabler I think automatically adds the languages present in the stringtable. So should be enough to just add one entry with the language you are missing

shadow trail
#

I tried using tabler but it never stopped loading, tried existing, working tables too, I like the flow of your one but not all languages :c

#

Not an urgent thing, not pushing an update till like next week so I'm happy to wait

glossy inlet
#

Please remind me in... 5 hours. 5PM CET. I'll fix it and push a new build

shadow trail
#

Wilco

#

πŸ‘Œ

pearl beacon
#

did you make a bug report on Tabler repo?

shadow trail
#

nah I'll go do so now

pearl beacon
#

πŸ‘

shadow trail
#

@glossy inlet reminding you πŸ˜‰

glossy inlet
#

I legit forgot about it.
Doing it now

#

I added
Swedish,
Slovak,
SerboCroatian,
Norwegian,
Icelandic,
Hungarian,
Greek,
Finnish,
Dutch,

I guess that's all

smoky halo
#

Are these all languages supported by A3?

glossy inlet
#

I have never seen them... but wiki says so

shadow trail
#

Cheers bud πŸ˜‰πŸ˜

tame tartan
#

Anyone have the link to where Mikero is selling his tools now?

scenic canopy
smoky halo
#

yo when i pack my pbos with pbo project after editing map ... this thing gives me never ending amounts of errors ... any fixes?

karmic niche
#

Apply a never ending amount of changes to remove the never ending amount of errors

sly skiff
toxic berry
#

Is there a way to bind animation source change in bulldozer to something other than mousewheel?

obsidian sluice
#

Well also [ and ] work for that

#

With Ctrl and Shift being modifiers

sly skiff
#

those change the animation phase/value. Enter and backspace change the source back and forth

obsidian sluice
#

Oh wait, I read that wrong

#

Goat is right

sly skiff
#

😎

obsidian sluice
nocturne basin
#

anybody ever had to build libstdc++?
make fails due to libsupc++ having No rule to make target 'all'. Stop. ...

nocturne basin
#

common ... it WAS build as i expected, but now resides in usr/local/lib

#

whilst the usr/lib one is used ...

#

wich is obviously outdated

#

either i just killed my debian, the moment i restart something ... or i just solved this mess of libraries

#

literally have libstdc++ now installed on 20 different locations

#

partially with the old lib crap

#

partially with the new "multi arch but not fully yet"

#

partially with the new actual "multi arch"

#

this fucking mess is disgusting

obsidian sluice
#

Linux

nocturne basin
#

new issues arise with recompiling

#

this fucking garbage

#

somehow #include <mutex> is no longer including mutex

#

success i would call this

sick verge
#

It's not Linux's fault if you do something wrong ☝

nocturne basin
#

it is totally linux fault for having literally 12 different locations for libraries

#

and GCC then not putting everything together properly

#

not finding half of the dozent libraries used

#

and me then trying to just fucking fix what never had to or was ever broken

#

it is totally intransparent to me how anybody ever could have thought "hey, lets mess around with ppl and make them reinstall linux everytime they want to update their libraries"

#

because right now, that is the only fucking way how i probably could ever get this mess of library hell fixed and running proper

#

as GCC refuses to install proper by building

#

libstdc++ is a mess with 1200000000 installations

#

and some headers that just vanished out of existance

#

so yes, i did something wrong ... i tried to build GCC and expected those people who maintain it not to be total idiots

#

though, you are free to tell me why all of this happened by doing make and make install with the latest GCC sources

#

the error message btw.:

#
/home/x39/projects/sqfvm/vm/src/netserver.h:20:7: error: 'thread' in namespace 'std' does not name a type
   20 |  std::thread _currentThread;
      |       ^~~~~~
/home/x39/projects/sqfvm/vm/src/netserver.h:9:1: note: 'std::thread' is defined in header '<thread>'; did you forget to '#include <thread>'?
    8 | #include "networking.h"
  +++ |+#include <thread>
    9 |
/home/x39/projects/sqfvm/vm/src/netserver.h:25:7: error: 'mutex' in namespace 'std' does not name a type
   25 |  std::mutex _inLock;
      |       ^~~~~
[...]
CMakeFiles/libsqfvm.dir/build.make:62: recipe for target 'CMakeFiles/libsqfvm.dir/src/Entry.cpp.o' failed
make[3]: *** [CMakeFiles/libsqfvm.dir/src/Entry.cpp.o] Error 1
CMakeFiles/Makefile2:183: recipe for target 'CMakeFiles/libsqfvm.dir/all' failed
make[2]: *** [CMakeFiles/libsqfvm.dir/all] Error 2
CMakeFiles/Makefile2:195: recipe for target 'CMakeFiles/libsqfvm.dir/rule' failed
make[1]: *** [CMakeFiles/libsqfvm.dir/rule] Error 2
Makefile:157: recipe for target 'libsqfvm' failed
make: *** [libsqfvm] Error 2
x39@x39:~/projects/sqfvm/vm$ cat netserver.h
cat: netserver.h: No such file or directory
x39@x39:~/projects/sqfvm/vm$ cat src/netserver.h
#pragma once
#include <iostream>
#include <string>
#include <sstream>
#include <thread>
#include <mutex>
#include <queue>
#include "networking.h"
wide cedar
#

If you have to reinstall Linux because of how you installed a library it's not Linux that fucked up, just saying...

#

Why are you even manually compiling libstdc++? And if there is a good reason for that, you should read some sort of introduction to Makefiles and how installation is usually handled through them and not just randomly enter commands and then blame the operating system when that doesn't work.

viscid verge
#

it's often easiest to grab the package source for the software you need in another version and start from there. All the specific patches and what not should be part of the source and you can see how the rpm/deb is compiled for the system

wide cedar
viscid verge
#

ha ha, space vs tab by death πŸ˜ƒ

nocturne basin
#

@wide cedar the linux installation now "survived" 2 major distribution upgrades, inbetween pathing changed
manually compiling libstdc++? because i need latest gnu compiler features that require latest libstdc++
the way to compile gcc?
((Note that this is not actual commands but rather pseudo))

wget GMP
configure GMP
make GMP
make install GMP

wget MPFR
configure MPFR
make MPFR
sudo make install MPFR

wget MPC
configure MPC
make MPC
sudo make install MPC

wget GCC
confgigure GCC
make GCC
sudo make install GCC```
#

aftewards, you will be greeted with the latest gcc version

#

even though, compilation takes ages

#

problem: make install now grabs from different locations which have been seemingly broken by the upgrade, because otherwise i cannot fucking explain why it is unable to install proper

#

problem solution: manually link to the locations using ln

#

problem: headers seem to be missing because (?????????)
solution: fuck you GCC

#

the actual locations for the mutex.h header for example are:

/home/x39/gcc/gcc9/gcc-9-20190310/libgomp/config/rtems/mutex.h
/home/x39/gcc/gcc9/gcc-9-20190310/libgomp/config/posix/mutex.h
/home/x39/gcc/gcc9/gcc-9-20190310/libgomp/config/linux/mutex.h```
wide cedar
#

Maybe you should do what @viscid verge wrote or read my link because then you won't have to link to the final location. But sure, blame your inability to follow instructions on one of the most widely used pieces of software in history. Surely those guys are idiots...

#

That won't help with your Linux install...

#

But they literally would. You would not have encoutered your /usr/local/lib problem had you read my link or done what @viscid verge recommended.

obsidian sluice
#

Which Linux distro is best? Kapp

pearl beacon
#

mine

viscid verge
#

most distros will add extra patches to those tool software packages to make them adhere to std paths for that distro, so the packet is nicely integrated later on

sick verge
#

Just a little comment on this: As you describe it if anywhere there is a problem with the way gcc handles its installs (I never tried to build it so I can't say whether or not this is the case) so even if it is the case it's not Linux's fault.
You can't blame Linux for a piece of software that someone wrote for it. That's just not how it works.

Just wanted to clarify that as I see that conclusion being made quite often

elfin oxide
#

Often enough if you find yourself in the need to make custom compilations for standard or widely used libraries, there is a design flaw. One of the only real reasons to make custom versions of something is if it is the instructed way to go for things like having a minimized build of boost, or opencv etc that would normally contain lots of useless stuff. So you can slim it down to only what you need. But yet again for all libs that I used or the companies I worked at, there are public distro platforms that contain prebuilt versions of every combination possible. Universities often offer these, or the developer themselves

#

So check if instead of making something complicated, there is an alternative that works just as well but is easy to get by

#

What is new for you? c++17 or later?

sick verge
#

That's included in the gcc-version provided in the ubuntu-repos though

elfin oxide
#

you can use c++11 with experimential/filesystem for it or switch your compiler version to c++17

sick verge
#

which is 8.2

elfin oxide
#

And there are gcc compilers for c++17 ... by default with most linux distros people use

native kiln
#

@obsidian sluice All of them

obsidian sluice
elfin oxide
#

searching for a linux distro nobody uses to fight for it without a reason

wide cedar
#

Red Star OS best OS

ocean cloud
#

If you use anything other than Commodore OS Vision you're irrelevant

#

everyone knows that

glossy inlet
#

Sorry X39. Offensive behaviour and I cannot delete single messages here. Do your last half dozen has to go

#

Also that page says Because the final ISO C++17 standard is still new which... Look at the date..
Those are the C++17 feature as they were in the working draft probably mid 2016. everything that was voted in late is missing
I manually compiled (with 0 issues btw, configure and make and make install without problems and all was fine) latest GCC 9 trunk in february. Still can't compile most of my projects because I like to use Parallelism TS which GCC doesn't support.

fallen stone
#

@glossy inlet The list isn't wrong, you're looking at the wrong list

#

You're looking for libstdc++

nocturne basin
#

just a tiny info: the version i compiled previously, was GCC 8.2, no filesystem support
though ... cannot tell you exactly when compiled, but that is possible too by just looking up when dedmen "introduced" optional to sqfvm

fallen stone
#

8.2 has file system support

#

If you needed it badly, pretty sure the experimental spec even goes back to 6.X

#

Perhaps you forgot the std flag? @nocturne basin

nocturne basin
#

~5 month ago
need it to compile it on linux to get the bot running again
already redid literally all steps ... recompiling right now, will see how it works out

glossy inlet
#

Thanks! noone else I asked in the last half year managed to tell me about that

#

Otherwise I can compile for you on my server. I got month old GCC9 trunk ready to do my bidding

fallen stone
#

If you find 8.X doesn't have filesystem two times in a row, you've really made a pig's ear of it πŸ™ƒ

scenic canopy
#

instead of cluttering the OS FS you could just build it inside a container 🀷

glossy inlet
#

Eww.. Newmodern container stuffz

nocturne basin
#

true dat @scenic canopy ... but i cannot be bothered to get into containers just to be able to run a simple discord bot

scenic canopy
#

that would've saved your OS installation πŸ˜„

karmic niche
#

cannot be bothered to get into containers
Then you can create a simple chroot or even simpler: run a new VM with a full linux installed (takes you 10 minutes to install one)

#

Also, with a VM, you can quickly rollback to an older snaphot

nocturne basin
#

Same Argument as with Containers

karmic niche
#

You mean same response ("cannot be bothered")?

#

Actually, nevermind. I was just suggesting a solution. If you don't want to use it, so be it

nocturne basin
#

nah ... requires setup etc.
it just has to run literally 🀷 diving into the configs etc. on a small-scale server to run the VM is just nuts
literally just some email, webserver and the bot runs on there

karmic niche
#

Haven't really followed the discussion but maybe you can also just compile what you want to compile statically and copy the whole binary to the server as is?

glossy inlet
#

Yes. Could. But for that you still need latest gcc on some linux OS

#

And if you only have one linux install...

karmic niche
#

...then back to square one: run a VM on your own machine, compile, scp πŸ˜›

glossy inlet
#

I also run Arch (Antergos) VM at home and work. It's always useful to have a linux vm ready. And on arch you don't need to compile manually to get the latest versions

obsidian sluice
#

Yeah it's useful to have linux vm Kapp

glossy inlet
native kiln
#

@obsidian sluice I see we are on one level here

obsidian sluice
#

Nah, just teasing here. I am not really some Linux hater, just for me it's not usable on daily basis πŸ˜„

#

Maybe if I had laptop, I'd install some nice distro there.

#

But I have to find some laptop first πŸ‘€

dusky dune
#

I'd install some nice distro there.
That's what i got, manjaro for a dual boot.... almost never boot it πŸ˜„

native kiln
#

Then we're exactly on the same level πŸ˜„

dusky dune
#

most times i just use my laptop for basic browsing and other stuff i can do in linux, but no foobar2k setup for it.... πŸ˜„

glossy inlet
#

yeah sadly not enough for everyday use. And I can't install linux on my laptop because I need it to run Arma to test TFAR πŸ˜„

viscid verge
#

I usually have a VM with Ubuntu on my windows systems, just in case something useful needs to be done

obsidian sluice
#

Haha, well. I'd have to buy some laptop and yeah...not really in mood for this kind of spending. Since they can get really expensive πŸ˜„

#

Anyone selling laptop? Kappa

dusky dune
#

super offtopic obviously, but you could look into secondhand. i got a secondhand dell latitude and really happy with it. obviously not suitable for games though

obsidian sluice
#

Oh man...yeah OT... πŸ˜„

sick verge
#

yeah sadly not enough for everyday use.
Speak for yourself - I only have Linux on my Laptop and I can do everything I need with it πŸ˜‡

karmic niche
#

I can't install linux on my laptop because I need it to run Arma to test TFAR
Implement TFAR for linux.
Problem solved! πŸ˜„

glossy inlet
#

Give me native linux Arma with extension support then

#

Can't? oh.

#

I'm gonna forward your problem solution to BI then

karmic niche
#

Not sure what's the state of Arma and extensions on linux.
Didn't really bother checking it since during 90% of the time, linux and windows versions are not MP compatible 😦

glossy inlet
#

Linux port has been suspended after 1.84.

#

Extension support never added

#

But you can run the windows version on proton now. No idea how well extensions work there. And I doubt shared memory connection to a native teamspeak client would work

karmic niche
#

lel good luck with BE though

plush shard
#

no idea what's the state with proton, but with wine I had to use wine-staging because the ImageLoad implementation was missing (and wine-staging has a patch for that) to use extensions

karmic niche
#

It's just sad that you can see that they tried to make the linux version happen but the way it was done ruled out actual (real) usage IMO.
No MP compatibility almost all the time, no BE support. You can't actually play, in practice (unless you find a group of 10-20 other people that will all want to either all play on linux or downgrade their Arma version and on a private passworded server so that they can all play together)

sick verge
#

Extensions are supported on Linux

#

Just not 64bit

glossy inlet
#

#linux_mac_branch Seems like ACE/TFAR extensions are loadable in proton. even 64bit. But only if you do some manualy work adding system dll's that proton doesn't have

#

We are talking about linux client port @sick verge not dedicated server

sick verge
#

Ah right - forgot that they are different 🀦

#

Though one might wonder why they didn't use the code for extension handling from the server in the client version

karmic niche
#

Isn't the server a native linux application and the client a windows version that's ported using magic and incantations?

sick verge
#

That'd explain it

karmic niche
plush shard
tepid stag
#

Anyone have any ideas of easy ways to filter RPT files? I get extremely long files that I'd like to filter out a few messages that repeat a lot. Any applications already out there to help me do this easily? I'm done scrolling through notepad++ or visual studio code for hours on end. I read somewhere that it can be done with regrex, but I'm not adept enough yet to create my own regrex, anyone have anything out there already? I've used Splunk before and would be interested in something similar, but I don't mind a new interface.

sick verge
#

My SQDev eclipse plugin has RPT-filtering available

#

So you just have to tell it what kind of lines to ignore and you'll only see the other ones

#

It will also remove duplicate lines showing it only once and how often it repeats instead of all repetitions

tepid stag
#

Nice! Looks like I get to download eclipse again.

sick verge
#

^^

#

The RPT filtering is a bit buggy at times though. But if you don't ask it to do crazy things it should work properly πŸ˜‰

#

Oh and you probably want to delete all old RPT files as I didn't come around implementing the plugin to ignore older files if there are too many. Not sure how it behaves in that case πŸ™ˆ

tepid stag
#

Can I just point it to an empty directory and read/pull the RPT files individually?

cinder meteor
#

What other programs do exist for it though? I have quite many logs in which I'd like to search data by some criteria(regular expression)

#

I use SnakeTail, it doesn't have such capability, it can only highlight lines
Looks like LogExpert can do filtering

pearl beacon
#

@glossy inlet Antergos is based on Arch, it's not Arch, so "Arch (Antergos)" is the other way around and thus wrong πŸ˜„

sick verge
#

@tepid stag no that is currently unsupported. Unless you mean pointing the Plugin to an empty directory and then copying the RPTs of interested into that directory. That's totally doable ☝

#

@cinder meteor Notepad++ has the option to search through a bunch of files and AFAIK it can also do regex searches on them

#

No filtering though

tepid stag
#

Yeah that's what I mean, all good. @sick verge

sick verge
#

Perfect πŸ‘Œ

karmic niche
#

@plush shard Thanks for the link. Interesting discussion there!

glossy inlet
#

@pearl beacon "arch, specifically antergos"

#

Anyone have any ideas of easy ways to filter RPT files? Yeah I have filter code in my server management tool. Basically regex. Spam stuff isn't even written to logfiles and goes directly into garbage

cinder meteor
#

It seems I have found my new tool (was one of first hits on google), it's LogExpert ☝

#

It has filter mode

sick verge
#

As we just had a discussion about it, I'll ask here. What is the outcome of this?

#define STR(VAL) #VAL
STR(problem here)

"problem" here or "problem here"? πŸ€”

nocturne basin
#

as i said, needs to be the second

glossy inlet
#

second

#

First doesn't make sense

#

VAL is problem here not problem

nocturne basin
#

context:
the first makes sense if one expands first, then applies operators

glossy inlet
#

true. But that's not how preproc works

nocturne basin
#

second is how it is actually, note operators, expand, apply operators on expansion result

#

yup

sick verge
#

Oh yeah - just saw that I misread your message and we were all thinking the same 🀦

#

Anyways - it certainly is clear now. Thanks anyways ^^

bold narwhal
#

if any ACE3 team members are available, my team is in need of assistance.

#

We're working on a editor module collection called the UO Framework but recently we've ran into an issue with animation syncing using the ACE3 doAnimation function.

#

Basic idea being, the animation fails to propagate in MP to all player clients and instead seems to only change the animation of the hostage when they are rescued on the server side.

vague shard
#

@bold narwhal aside from Dedmen you find most ACE people on their slack server

glossy inlet
#

Question was answered on ACE slack I think.

bold narwhal
#

@glossy inlet thanks for the heads up

#

Apologies for posting this everywhere, I'm mostly just a docs guy trying to pick some slack up.

vague shard
smoky halo
#

Looks like a "what scripting language should we add?” post. Did anyone suggest SQF yet?

vague shard
#

@smoky halo did you read it?

smoky halo
#

Just what he posted

pearl beacon
#

They already have a Python interface for tooling, it'll likely be Python, they've been saying that for a long time now

nocturne basin
#

Best answer already: blueprints break our Code Review process
πŸ€¦β€β™‚οΈπŸ€¦β€β™‚οΈπŸ€¦β€β™‚οΈ

pearl beacon
#

People just don't know how to adapt their tools to the problem at hand

dusky dune
#

the question is if we can see somehting like that in Enfusion :3

#

Or BI is fully focussing on enscript, instead of using already established language as their primary way of changing the game

fossil moth
#

https://imgur.com/a/kxCx0PG @dawn palm I have just gone through the process of re-installing your tools but I am having this issue when I try to launch PBO Project. I don't suppose you could point me in the right direction here?

orchid shadow
#

Did we hae a tool for derapifying binarnized SQMs?

scenic canopy
#

same as the usual derapify

#

so armake or mikero's

#

@opal wedge at least one of your mikero tools are incompatible with the others

#

problably depbo.dll vs pboproject

glossy inlet
#

Arma 3 tools CfgConvert

rough grove
#

HEMTT 0.5.0 has been released!
This version introduces powerful scripting and template systems. Download, changelog, and links to the docs can be found at https://github.com/synixebrett/HEMTT/releases/ If you are on Linux you can use hemtt update to grab the latest version.

dawn palm
#

at least one of your mikero tools are incompatible with the others

πŸ‘Œ

The Maverick/Mikero/Bytex updater tool clearly shows in red, which files are out of date.

sick verge
#

Is there a tool that helps me reorganizing mission files? Like Arma did mess up the order of the entities in my mission so now the slotlist when connecting to the server is totally messed up. Therefore I have to change the order of the respective class entries in the SQM around. But doing this manually is a pain

glossy inlet
#

Commy had a cba tool for that. Don't know if it's already merged into CBA or still WIP

sick verge
#

So an ingame-solution?

glossy inlet
#

Yeah. A in-3den UI thingy with slotlist. Where you can reorder them and also name them

vague shard
#

does anyone have a phabricator to discord integration/bot? (besides CUP)

sick verge
#

That sounds awesome
@smoky halo is that tool finished already? πŸ˜‡

vague shard
#

he was banned

#

you need to get to ACE slack probably

glossy inlet
#

He created that account accidentally. He doesn't use that

sick verge
#

Wtf - okay then ^^

#

Thanks guys πŸ‘

orchid shadow
#

Commy was banned?

#

Very spicy.

glossy inlet
sick verge
#

Indeed πŸ˜…

#

But now all that might be interested have a link - which is nice πŸ˜‰

scenic canopy
#

@vague shard simplest is probably to use a phabricator to slack integration that uses webhooks and use the slack compat webhook available in discord. Discord translates the slack payloads

#

Otherwise a simple service could take the phabricator webhook and translate to discord webhook

fickle void
#

I updated Windows and now Arma won't start with intercept enabled, it coincided with my monitor alarm (which apparently I have) going off while Arma was starting up as well. I tried verifying files and unsub and resub to the intercept minimal ver in workshop. Any other ideas?

glossy inlet
#

"monitor alarm"?
Freeze? or crash?

#

create a logs directory in arma directory. Intercept will throw it's logs into there then

fickle void
#

ah okay good point i will check thanks

#

wrt monitor alarm i can't find out much info, other people have had it but no concrete explanation as to what it is. probably from the gfx card via hdmi, and it is as loud as a fire alarm.

glossy inlet
#

wtf

fickle void
#

yep, second time i ever had it. fixed by turning on and off again

fickle void
#

It never outputs to the intercept_dll.log, last modified time is before it stopped work.

#
22:14:59 Initializing stats manager.
22:14:59 sessionID: 32f3c1e49bc611e16d89b89849fe19de5abdc069
22:15:02 Item str_a3_to_c01_m02_036_ta_mechanized_briefing_SOLDIERC_0 listed twice
22:15:04 File z\intercept\rv\addons\core\config.cpp, line 68: '/Extended_PreStart_EventHandlers/Intercept_Core.init': Missing ';' prior '}'
#

from the normal log

#

but i think it is there before

glossy inlet
#

throw your latest rpt at me. Already found a bug in the intercept pbo today that I should push someday

fickle void
glossy inlet
#

πŸ€”

#

hmpf

#

I have no idea πŸ€”

fickle void
#

is release on github older, newer?

#

i want to replace it so i can exclude corruption of the files

glossy inlet
#

when it freezes, 0% CPU load? No change in ram consumption?
Github should be same.. optimally

#

github is probably not same, but should work. the 0.11

fickle void
#

yeah no CPU no ram changes

glossy inlet
#

Okey so it's not what I had in mind then :/
I guess deadlock on a mutex, but afaik there are no mutexes in the initialization...
Don't think that can be found without attaching a debugger

fickle void
#

well i have VS

glossy inlet
#

Atleast I hope that works with just debugging πŸ€”

fickle void
#

gonna try using the github version first

glossy inlet
#

Think live share doesn't even work when debugging a random process ^^

fickle void
#

okay not obvious to me how to do that, i see dlls and pdbs, but no pbo or key, so i just put the dlls/pdbs in a mod folder or what?

glossy inlet
#

just replace the intercept dll in your intercept folder with the one from the zip

#

pbo won't have any relevant changes anyway

fickle void
#

Flagged    >    18300    0    Worker Thread    MainThrd    intercept_x64.dll!intercept::search::plugin_searcher::generate_pbo_list
                              [External Code]
                              intercept_x64.dll!intercept::search::plugin_searcher::generate_pbo_list() Line 321
                              intercept_x64.dll!intercept::search::plugin_searcher::plugin_searcher() Line 13
                              intercept_x64.dll!intercept::extensions::extensions() Line 14
                              intercept_x64.dll!`dynamic initializer for 'intercept::singleton<intercept::extensions>::_singletonInstance''() Line 40
                              intercept_x64.dll!_initterm(void(*)() * first, void(*)() * last) Line 22
                              [External Code]
                              GameOverlayRenderer64.dll!00007ff94724b8f0()
                              dxgi.dll!00007ff955c3855d()
glossy inlet
#

Thanks. That's good. (well bad but.. yu know)

fickle void
#

you want dmp?

glossy inlet
#

yeah. If you can get one without memory ^^

fickle void
#

it is on latest github code

#

170mb compressed

glossy inlet
#

I don't see anything in that function that could freeze.... woah.. gosh.. that func is crap... I SO need to rewrite that

#

If you can tell me which line in generate_pbo_list() it freezes on that would also be enough

#

Oh wait.. Line 321 I'm blind

fickle void
#

yeah it is one of the handles, i guess something not related to your mod got fked up and now it can't read the handle info or something?

glossy inlet
#

NtQueryObject shouldn't freeze.. like.. ever.. Maybe really just a windows bug..

fickle void
#

yeah i agree but here we are πŸ˜ƒ

#

just after windows update

glossy inlet
#

I'll try something

fickle void
#

/* Query the object name (unless it has an access of 0x0012019f, on which NtQueryObject could hang. */

#

you already check?

glossy inlet
#

yeah it's already checking for access. But maybe there is a new thing we need to check on now

#

I'd try the if (GetFileType(dupHandle) != FILE_TYPE_DISK) thing first though

fickle void
#

its okay i can build my own now πŸ˜ƒ

glossy inlet
#

Line 297

    if (GetFileType(dupHandle) != FILE_TYPE_DISK) { //Don't want to query pipes or network resources
        CloseHandle(dupHandle);
    }
#

I need to add more logging for this. Can't be that it prints literally nothing to intercept logs before it freezes itself πŸ˜„

Oh gawd.. Welp.. No logging it's gonna be πŸ˜„

fickle void
#

should have continue; in there as well?

glossy inlet
#

oh.. yeah

fickle void
#

it got to main menu now thanks, i guess the access violation exceptions are expected?

glossy inlet
#

yeah. On the loader

glossy inlet
obsidian sluice
#

Haha what an interesting read! Kapp

native kiln
glossy inlet
#

"read read" πŸ€”

obsidian sluice
#

Haha what an interesting read! Kapp

glossy inlet
#

@sacred flume on your InterceptDB feedback from almost 2 months ago.

It's now officially released on BIF and I started adding documentation on the github wiki
#production_releases
https://github.com/intercept/intercept-database/wiki/Commands

I think most of your feedback should be handled now with the commands that I plan to add in the future.
A global per-connection error handler that will be executed on errors.
A "ping" function which is really only a shorthand for synchronously executing SELECT 1.
A way to check if a connection is connected (more easily).
And commands to retrieve the actual errors that happen in queries, instead of just printing to RPT.

No idea when I'll implement them, but they are all definitely on the TODO.

sacred flume
#

kk, im just waiting for team to run testing on my mission branch that switches to it

amber heart
#

@glossy inlet It's on my list to understand more about Intercept but I'll confess I don't really like C++ and I haven't yet summoned the time/inclination or a pressing need to dig into it. Was very intrigued though by No need to constantly poll the extension if you are waiting for a asynchronous resultο»Ώ and wanted to ask if you could post a (very) brief description of the mechanism by which you achieve callbacks?

glossy inlet
#

Intercept calls the SQF call command when it has a callback ready

#

with your callback script code as argument to call

#

There is only the problem that SQF commands can only be called in the main thread.
So to synchronize there is actually some polling internally, once per frame it checks a bool flag that says if there are callbacks ready to be called, and if true then it calls all of them.
That's very efficient though.

amber heart
#

Right, that was the big question (thread safety). So that's an SQF script checking Intercept to see if results are waiting?

glossy inlet
#

no. Intercept add's it's own EachFrame handler using a self-registered SQF command that's then actually executed in SQF.
The actual checking happens in C++ land in the eventhandler there

amber heart
#

Okay cool, useful.

#

Sounds like just the ticket for an AI mod.

#

Pushing game state as strings through callextension being pretty wasteful/ugly.

glossy inlet
#

Intercept get's less efficient the more stuff you need to do in mainthread.
All the AI sensors and reactions you need to do via SQF commands, so in the end the benefit is probably not that big.

Certainly alot faster than just executing stuff in sqf but not record breaking.
But yeah, don't need callExtension bridge with serialization/deserialization and the huge return buffer and all that crap

The further you can get away from using SQF commands inside intercept, the better it get's.
Which is why a database plugin makes so much sense ^^

amber heart
#

Was thinking of threading AI decision making then polling from SQF to see when new results are ready but this would be much tidier (on top of not having to parse strings each way).

fickle void
#

I'm trying to debug an issue with an intercept based plugin via VS and it seems arma stops outputting to rpt when VS is attached is that correct? At least my diag_log was doing nothing..

glossy inlet
#

yes

#

Oh man almost forgot that fact πŸ˜„

#

In my debugger I wrote a workaround for that I think

fickle void
#

"just"?

glossy inlet
#

yeah πŸ˜…

#

If you've done it literally a hundred times. It's a "just"

fickle void
#

so i have a perfectly reproducible crash in "my" logging extension any chance you could look over it and see what the issue might be? it is only 20 lines or so

glossy inlet
#

Perfect chance to use Visual Studio Live share :3

fickle void
#

kk gimme sec

#

although probably the problem will be obvious to you just from the code, i have no idea what assumptions i can make about the execution of extension code, the memory allocator, threading etc.

glossy inlet
#

As long as you're not trying to start a thread in dllmain, it should all be fine. You use your own allocator/ the one from the VC libraries

#

I never used live share "in production" so I'm very hyped πŸ˜„

fickle void
#

bad signs so far after installing it my VS is frozen on start up :/

glossy inlet
#

.-.