#arma3_tools
1 messages Β· Page 29 of 1
(was looking atm into the workaround using sandboxie to run a second install: https://steamcommunity.com/sharedfiles/filedetails/?id=311943358 )
is also done via vdf file for arma?
ok thanks. thats the one i found too
but you can't set/update the tags/kvtags with steamcmd - at least I haven't found a way to do it
@glossy inlet I think your profiler doesn't receive parameters passed to arma from file with -par parameter, right?
oh. yeah
That is engine internal parameter stuff. I grab it directly from the windows API, not from Arma engine
Damn, I remember I could pass custom parameters to arma through its launcher some time ago, did they disable it...
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?
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
does cfgFunctions without any mods pass _fnc_scriptName before calling such a function by default?
or did you add it
CfgFunctions add's their own header
Just try diag_log'ing a function that was compiled with CfgFunctions and you'll see it
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 ^^
jup. Another reason why CBA PREP is better. It doesn't do that
how does it work around this if you need the _fnc_scriptName anyway?
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
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 π€
where is that script file compiled from?
all the stuff above is in init.sqf
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
I think you could redirect the = operator?
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?
Yeah you are right
I can only think of
(allVariables missionNamespace) select { (missionNamespace getVariable _x) isEqualType {} }
then mess around with them
And when should I scan missionNamespace? every frame? say bye to your framerate then
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
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
I compile my code 'manually' because I have these preprocessor based OOP wrappers
I guess I'm fucked then... π¦
Or enable engine profiling. It can detect engine internal compiling too
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}; ?
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?
You can just move your stuff to script.sqf
and do a call compile preprocessFileLineNumbers "script.sqf" in your init.sqf
Even if inside script.sqf it is setting the functions with = or missionNamespace setVariable ?
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
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?
yeah
Even with profiling branch, -profilerEnableEngine, -profilerEnableInstruction, with the code above it doesn't show these instructions inside fnc_dummy thingy
https://ibb.co/3hpNcWB
π€
Could other mods interfere?
I'm also running the ADE
maybe it's intercepting stuff
most things are working though. So I assume not
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? π
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
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
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
Iβll use it great idea .
https://steamcommunity.com/sharedfiles/filedetails/?id=1658179429 here we go.
ExecOnUnit and ExecFromUnit might not work, didn't test in MP yet.
Source: https://github.com/dedmen/ArmaWebControl
Would be very happy to accept pull requests for more useful presets. Should be self explanatory how the preset files work.
This should technically also work on a server, to execute scripts on the server from remote.
You need php server?
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..
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
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
Have you reported it? Crashes are priority, the target is stable platform even if EOL. Diag crashes help to find sources of release crashes
yes multiple times
@smoky halo You need php server? no integrated server in the dll. "Boost beast"
And only html and javascript with websocket
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.
Do I need DLLMain inside an intercept addon?
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 Β―_(γ)_/Β―
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
it searches for https://github.com/intercept/intercept-plugin-template/blob/master/addons/main/config.cpp#L19 that plus _x64.dll on 64bit
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?
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 π
So to make your problem not happen. Should the wiki explain exactly what to change in the cmakelists and config.cpp?
https://github.com/intercept/intercept-plugin-template/blob/master/CMakeLists.txt#L6 this line needs to be same as your pluginName in config.
I think the wiki misses telling you that
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 π€·
mysupercewl != mysupercewlplugin π€¦ who wrote that page π
Senfo! π«
I updated the wiki page
maybe I missed that, but is it possible to not restart arma if I have rebuilt my client .dll?
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
π€ I guess I could make my client DLL a host for another client DLL then
hmm or that VS feature might do as well
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
Never worked with CMake... maybe there is a standard VS solution template for an intercept plugin somewhere?
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
Allright will try that!
I'm going to try to make sqf wrappers for the VS concurrency visualizer
Concurrency visualizer is multithreading stuff. SQF is not multithreaded
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
I can give you API for the script profiler so that you can use that to display your own events
π€ but it's going to go to Tracy, right? Can tracy do that nicely?
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
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.
Yeah. I'll implement the interface anyway. Combining it with the debugger should make profiling of scheduled easier
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)
nice! did you have to hack into tracy much?
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
Yay it's working \o/ Only need to find the way to make it not collect megabytes of data per second π€
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?
My concurrency visualizer thingy
Yeah I'd love just to see stuff I make manually if possible
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
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
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
There you go. I even updated the wiki with the new parameter already
https://github.com/dedmen/ArmaScriptProfiler/wiki/Command-line-parameters
Yes.. Yes I'm fast.
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
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?
https://forums.dayz.com/topic/240638-tools-changelog not much going on
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
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)
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?
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
@vague shard follow this weird guy if you are interested in DayZ SA modding, he posts tuts now on YouTube https://twitter.com/TheDeanosBeano
which is the first battle royal that got me hooked too this is why you disappeared all over sudden?
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
Just tried it. Now my washing machine stopped working, the toilet doesn't flush and it started raining!
// 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 ...
@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?
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
Selling π
I was 15 okey?!
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
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β¬ π
Open-source would be even better :D
Tell that to Swifty
ripoff!
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
I do tell that to @orchid shadow every time
Bugs would be fixed a lot faster...
Sounds like a great group and person
Yep. Group went down a couple months after I left.
They lost their servers and their mod update tool soo.. No wonder.
so what did he hope to accomplish?
wait, I have a better question, why did he want to kick you!?
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
he had a fair reason then π
Open sourceing swifty is more about my pride then aything
^ same
I am not sure anyone should look into that shit ever
fuck your prides, bring it out
The backend is decent now.
Plus the fact there would be quickly be rebranded into 300TacticalArmyMen updater
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)
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 ^^
same way that I don't care about them
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?
do you use steam publisher or steamcmd?
not PublisherCmd.exe?
"%Publisher%\PublisherCmd.exe" update /id:%WORKSHOPID% /changeNote:%CHANGELOG% /path:"%WORKSHOP_PATH%"
yeah, that's not steamcmd
sorry
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
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
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
i see, so we move the mountain to mohammad so to speak, and force visualsvnserver to run as a user?
ok peachy thanks. at least we have an idea where t ostart fixing this π
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
here's a decent example, https://steamcommunity.com/sharedfiles/filedetails/?id=539821860
"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
OK no problem, I figured it wasn't public for a reason.
@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
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
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
thanks
C:\Program Files (x86)\Steam\steamapps\common\Arma 3 Tools\publisher\publishercmd.exe yada yada works in this cmd file the hook calls
can you run the steamcmd outside the hook?
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
sounds right, try typing "login username password"
C:\Users\arma\Downloads\steamcmd.exe +login xxxx xxxx +workshop_build_item D:\checkout-repos\workshop.vdf +quit
that's from outside
each of the + is a command inside the prompt
or so
or something like that
ahhh so i double click on the steamcmd.exe
i was tryingto run it using powershell to start it
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
in the hook above, can visualsvnserver run the steamcmd?
yeah, first time you need to provide steamguard if enabled
i can tr ythat i guess once i have this steamcmd working on its own
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?
should be correct yeah
is there an ywa yto have the line you just typed show up again like wit hdown arrow etc
no π
in this console?
copypaste π
ah, the exit code 1 from the post commit hook might be due to failed login π
no it failed - file not found
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
poss the folder path, fixing
still cant paste into this steamcmd
so have t otype it manually
right clicking should be paste in cmd
works in pse but not in steamcmd window
aww
"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
sounds correct
π
it could've failed before since you hadn't logged in yet
C:\Users\arma\Downloads\steamcmd.exe" +login xx yy +workshop_build_item D:\checkout-repos\workshop.vdf +quit
skip the password
I think it will reuse your existing login then
someone reported that behaviour for my steam web admin panel at least π€·
ok if i go int opse, how do icall this prog? cd C:\Users\arma\Downloads\ &.\steamcmd.exe +args
should work yeah
ok ill try it in pse
works
ok now it wants my 2 factor auth code
this aint gonna work for an automated process
did you supply the password?
yes
login and then try without password
how is that different? im logged in to steam client o nthe server already
steamcmd and steam works separately
steamcmd will even sever your steam connection
ok so i leave steamcmd running all the time logged in yeah?
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
works!

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
but using steamcmd won't update the kvtags like bis_signature, bis_shortHash and bis_longHash
what are these used for - the mod matching via A3 launcher?
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)
@prisma dragon any clue/advice?
_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. π
sqf gets nice when you can create your own commands, yes
Like #
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?
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.
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.
And again, sqf-vm could do a lot π€·ββοΈ
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.
@nocturne basin I suppose you could make obfuscator in 3 seconds with your sqf-vm
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
that is what I thought having the actual code makes it easy
no danger to break the code
could even charge for it
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
moved
gotcha, will move my post
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
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
I feel your pain
Seen many vids with people doing it in old blender, but couldn't find any tools for 3Ds or blender 2.8 beta
It's so new there is not much
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
Isn't there some script in tools?
bitxt export yeah
aight thx, will look into that
Oxygen can also import FBX, not sure how much better it is after update
Didn't have any problems with fbx, atleast not with the simple stuff that I do
regarding armatoolbox and blender 2.8
https://forums.bohemia.net/forums/topic/145290-arma-toolbox-for-blender-arma-23-exporter-script/?do=findComment&comment=3328347
Thanks, will give it a try if dedmens tip in #arma3_model doesn't work
@glossy inlet I remember you said something about global macros with intercept... can they be done and can I easily make one?
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 .
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
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
you may also want to use a tool to test the DLL (eg. KKs Arma 3 Extension Tester or SQF-VM https://community.bistudio.com/wiki/Extensions#External_applications) so you do not have to start arma everytime
@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
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
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
because the _number I get inside the SQF command handler is const, right?
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
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
well sometimes we treat object as handle/pointer to actual data, sometimes as actual data itself
game_value is just a pointer to a game_data object that does hold the actual data
oh nice, so I can fake the C++ stream << operator xD what will be the left arg?
I guess same as with the c++ stream operator.. Left arg will be a stream
so you gonna add gamedatatype stream?
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
i've decided to put it on the forum btw
https://forums.bohemia.net/forums/topic/222022-intercept-arma-ofstream-text-output-to-multiple-log-files/?tab=comments
This site canβt be reached
forums be broken
I tried to have a look at how to make a custom data type... probably wasn't worth the effort for this case
the user could put a different string into there and crash the game?
nah... it converts it to pointer(number), then I keep track of pointers to created stream objects
so the string is a number? "2198739218"?
wouldnt it be easier to have index of the array of pointers?
this way you cannot pass illegal data
index would shift if you remove a element on the front
range check is easy
and you want to remove things after close
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.
I thought he wants standard streams in there so const array
but if it is filestreams then of course
with "023FA97" you can directly see that it's some special voodoo and you should probably not mess with it π
is there any recent "offline BIKI/sqf command "comref"?
well for how long. see #community_forum
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)
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) π€·
@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.
π€ π€
You mean ADE overwriting my addon's config.cpp or something else? Because my addon's config.cpp has unique names everywhere
mh... dunno then ^^
Maybe arma addon load order? Is there even such a thing?
shouldn't matter
hmm... I've made it from the template at github, and it has old intercept I think? could it matter?
... lack of certificate? (no certificate = in the config)? π€·
other than that I have no idea what's wrong with my plugin
if you are not overwriting vanilla commands then you don't need cert
checked intercept logs?
Arma 3/logs
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 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 ()"
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
so... if I recompile str my code and then compile it back, it's gone forever, right?
oh, right, but the #line is added per file, not per myFnc = {...} of course π
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#).
Afaik these replay files are not recorded from the arma traffic directly but with serverside logging of everything
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.
overcomplicating things ftw π
@thin rose too much paranoia wont do you good π
@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.
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"};
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 π
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.
I don't think anyone has made a beautifier for sqf yet. Hoping I'm wrong though.
Please @ me if you find one.
@nocturne basin ^ You had one right?
Sqf-vm, Yeah
Limited but usable
Might fuck up some lengthytarrays though π π
@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.
NΓΆ idea @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.
Nope
@smoky halo This one works: https://www.alofa.tk/sqf/convert.html. I have taken the code from here and wrapped it in a VSCode extension, I will try and release it soon(tm)
Okay thanks, I have seen it, it looks pretty awesome.
@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?
@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.
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
sooo ... the one from alofatk probably is not better then SQF-VMs test implementation π€·
@nocturne basin do you have command line processing and configuration available?
no configuration as it was just some quick proof-of-concept like thingy
but it is command line based
aka for commit hooks and build pipeline use
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.
...```
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?
Yeah it wouldn't make sense on reflection
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";```
An auto formatter that breaks code is pretty bad :/
So only the escaped quotes are broken in the first one right?
- the missing space after private
That is an error? Weird!
Wellllll
I agree it isn't pretty but I don't judge other peoples style π
I just fix it then submit
nothing to judge, it is just plain wrong
How so?
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
Yeah code-formatting is planned to be implemented at some point @vague shard
gets even worse, when one uses eg. private wrong
private "foo" --> private " foo"
ohh ... even if used correctly
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).
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)
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
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
@sick verge Pycharm support pretty please π
Isn't PyCharm based on either IntelliJ or Eclipse? π€
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
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
Because by default they will only load on IntelliJ
> 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)
I have approached him twice on the github issue tracker. He's not interested AFAIR
Ah okay - Then I'm afraid there's not much I can do π€·
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)
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
what's Orinoco-SQF?
Yet another SQF parser&preprocessor
repo?
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
Hi Guys, One question is there a tool where i can pack several PBOs at the same time?
any pbo tool with command line in a batch file?
@pearl beacon cuz magix
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
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
@pearl beacon as I said: magix
@odd rapids same time or after another?
@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 ?
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)
@odd rapids pboproject and makepbo
Ok thanks
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? π€
Correct
Oh you are that Krzmbrzl! π
Yep that's me π
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
It's just the name afaik
It essentially is a wrapper for armake2 with some extra features
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
π€·
Like Arma is not confusing enough already
You'll have to ask @rough grove
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
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. Β―_(γ)_/Β―
I made a real rough logo the other day https://github.com/HEMTT
It's even rusty!
@rough grove what about test automation, is it capable to do that
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
got people who already contacted me about using SQF-VM for unit testing π€·
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
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?
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"
nice, thanks π
https://s.sqf.ovh/Tracy_2019-02-27_01-14-13.png Teasing the next Profiler update π
https://s.sqf.ovh/Tracy_2019-02-27_01-17-27.png CBA_fnc_supportMonitor be creating lots of config type script values, but atleast it's destroying them again and not leaking π
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?
custom counters are already there
Then I would be able to attach those plots to my actual objects, to track when I create/delete one of specific type
STRING profilerSetCounter NUMBER
Oh cool
probably forgot to document that one π
Hmm I think I've seen it in your profiler intercept logs π€
Then I should integrate it ASAP
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...
teased update is out. Allocator plots need to be enabled with a start parameter
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.
it says what it does. Atleast the description.
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',
But I like how it works, I could dump the counter values in a file but it's so much better with a nice graph
https://media.discordapp.net/attachments/520592520280014860/550366669055328281/unknown.png?width=960&height=780
Ramps/falls are when something spawns/despawns, gonna be useful to identify memory leaks π
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?
Yes @nocturne basin has such a bot at his SQF-VM discord server
Ah okay thanks, thought I had seen something like it somewher
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
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. π€
Aaaaah cool this will be very helpful thanx for the invite π€πΌ
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
Ah, nevermind.
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
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)
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)
extractPbo.exe folder p:
@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?
you can extract all
How i can do that, @scenic canopy?
like kju said
extractpbo [-options...] NameOfPbo[.pbo|.xbo|.ebo]/aFolder/AnExtractionList [SomeFolder]
@scenic canopy can you give me an example?
extractpbo.exe -P c:\arma3\addons P:\extracted
just p: as target for P drive setup
you might need a trailing slash so P:\
or that might have been a specific broken version
@scenic canopy @vague shard Thanks a lot! It's works! π€
where to find information on v3 bikeys creation/signing?
There is none
there are only changes in the bisigns, not bikeys
What information do you seek?
how to create them - is there some parameter?
Dssignfile automatically creates v3 sigs
there is a parameter to go back to v2 if you need to
alright. how to detect v2 vs v3 signatures - is the header different?
Yes
One sec I have that somewhere
https://github.com/dedmen/armake/blob/cpp/src/sign.cpp#L321 look for BISIGN_V2 if you wanna see the differences.
The "header" is in the middle of the file though
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
but the offset to the end should be constant
Yeah. End-0x10C is the start of the 4 bytes
you can check v2 or v3 with https://dahlgren.io/bisign/
Fyi: nice backdoor gets installed too
as if they would need one ^^
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 π
I'm gonna wait until the source is released (the github page was only a "placeholder" as of this afternoon)
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.
Are there any up to date stringtable.xml editors with all of the https://community.bistudio.com/wiki/Stringtable.xml#Supported_languages ?
The tool links provided only give a few languages
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
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
Please remind me in... 5 hours. 5PM CET. I'll fix it and push a new build
did you make a bug report on Tabler repo?
nah I'll go do so now
π
@glossy inlet reminding you π
I legit forgot about it.
Doing it now
https://github.com/dedmen/de_stringtabler/releases/tag/0.14 there ya go @shadow trail
I added
Swedish,
Slovak,
SerboCroatian,
Norwegian,
Icelandic,
Hungarian,
Greek,
Finnish,
Dutch,
I guess that's all
Are these all languages supported by A3?
I have never seen them... but wiki says so
Cheers bud ππ
Anyone have the link to where Mikero is selling his tools now?
yo when i pack my pbos with pbo project after editing map ... this thing gives me never ending amounts of errors ... any fixes?
Apply a never ending amount of changes to remove the never ending amount of errors
Also terrain stuff best kept on #arma3_terrain
Is there a way to bind animation source change in bulldozer to something other than mousewheel?
those change the animation phase/value. Enter and backspace change the source back and forth
π

anybody ever had to build libstdc++?
make fails due to libsupc++ having No rule to make target 'all'. Stop. ...
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
new issues arise with recompiling
this fucking garbage
somehow #include <mutex> is no longer including mutex
success i would call this
It's not Linux's fault if you do something wrong β
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"
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.
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
Also, if you have to mess with Makefiles yourself, read this first: https://www.gnu.org/software/make/manual/make.html#Makefile-Conventions
GNU make
ha ha, space vs tab by death π
@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```
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.
Which Linux distro is best? 
mine
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
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
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?
That's included in the gcc-version provided in the ubuntu-repos though
you can use c++11 with experimential/filesystem for it or switch your compiler version to c++17
which is 8.2
And there are gcc compilers for c++17 ... by default with most linux distros people use

searching for a linux distro nobody uses to fight for it without a reason
Red Star OS best OS
If you use anything other than Commodore OS Vision you're irrelevant
everyone knows that
Sorry X39. Offensive behaviour and I cannot delete single messages here. Do your last half dozen has to go
@elfin oxide https://gcc.gnu.org/projects/cxx-status.html#cxx17 that page is nice and all. 100% C++17 support.. Awesome right?
Well. They just chose to not list the things they don't support. Such that it looks like 100% is supported while it isn't.
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.
@glossy inlet The list isn't wrong, you're looking at the wrong list
You're looking for libstdc++
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
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
~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
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
If you find 8.X doesn't have filesystem two times in a row, you've really made a pig's ear of it π
instead of cluttering the OS FS you could just build it inside a container π€·
Eww.. Newmodern container stuffz
true dat @scenic canopy ... but i cannot be bothered to get into containers just to be able to run a simple discord bot
that would've saved your OS installation π
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
Same Argument as with Containers
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
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
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?
Yes. Could. But for that you still need latest gcc on some linux OS
And if you only have one linux install...
...then back to square one: run a VM on your own machine, compile, scp π
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
Yeah it's useful to have linux vm 
Especially for the devs working on the x64 #server_linux
@obsidian sluice I see we are on one level here
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 π
I'd install some nice distro there.
That's what i got, manjaro for a dual boot.... almost never boot it π
Then we're exactly on the same level π
most times i just use my laptop for basic browsing and other stuff i can do in linux, but no foobar2k setup for it.... π
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 π
I usually have a VM with Ubuntu on my windows systems, just in case something useful needs to be done
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? 
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
Oh man...yeah OT... π
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 π
I can't install linux on my laptop because I need it to run Arma to test TFAR
Implement TFAR for linux.
Problem solved! π
Give me native linux Arma with extension support then
Can't? oh.
I'm gonna forward your problem solution to BI then
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 π¦
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
lel good luck with BE though
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
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)
#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
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
Isn't the server a native linux application and the client a windows version that's ported using magic and incantations?
That'd explain it
Non-native - the ports use specialized porting technology developed by our partners Virtual Programming.
https://dev.arma3.com/ports
in #linux_mac_branch there's a comment about that: https://discordapp.com/channels/105462288051380224/105467328782692352/474901668274765825
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.
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
Nice! Looks like I get to download eclipse again.
^^
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 π
Can I just point it to an empty directory and read/pull the RPT files individually?
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
@glossy inlet Antergos is based on Arch, it's not Arch, so "Arch (Antergos)" is the other way around and thus wrong π
@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
Yeah that's what I mean, all good. @sick verge
Perfect π
@plush shard Thanks for the link. Interesting discussion there!
@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
It seems I have found my new tool (was one of first hits on google), it's LogExpert β
It has filter mode
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"? π€
as i said, needs to be the second
context:
the first makes sense if one expands first, then applies operators
true. But that's not how preproc works
second is how it is actually, note operators, expand, apply operators on expansion result
yup
Oh yeah - just saw that I misread your message and we were all thinking the same π€¦
Anyways - it certainly is clear now. Thanks anyways ^^
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.
Here's a link to the issue report: https://github.com/unitedoperations/UnitedOperationsFramework/pull/81#issuecomment-473113121
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.
@bold narwhal aside from Dedmen you find most ACE people on their slack server
Question was answered on ACE slack I think.
@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.
It seems people at Epic are considering adding some intermediate script language between C++ and Blueprints
https://www.reddit.com/r/unrealengine/comments/aezhdv/it_seems_people_at_epic_are_considering_adding/edxslvy/?context=1
Looks like a "what scripting language should we add?β post. Did anyone suggest SQF yet?
@smoky halo did you read it?
Just what he posted
They already have a Python interface for tooling, it'll likely be Python, they've been saying that for a long time now
Best answer already: blueprints break our Code Review process
π€¦ββοΈπ€¦ββοΈπ€¦ββοΈ
People just don't know how to adapt their tools to the problem at hand
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
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?
Did we hae a tool for derapifying binarnized SQMs?
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
Arma 3 tools CfgConvert
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.
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.
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
Commy had a cba tool for that. Don't know if it's already merged into CBA or still WIP
So an ingame-solution?
Yeah. A in-3den UI thingy with slotlist. Where you can reorder them and also name them
does anyone have a phabricator to discord integration/bot? (besides CUP)
That sounds awesome
@smoky halo is that tool finished already? π
He created that account accidentally. He doesn't use that
https://github.com/CBATeam/CBA_A3/pull/996 here it is
Thanks to Raven for pushing that into my notifications π
Oh wait.. It was you who asked the question originally
@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
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?
"monitor alarm"?
Freeze? or crash?
create a logs directory in arma directory. Intercept will throw it's logs into there then
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.
like this warning volume!:
https://www.youtube.com/watch?v=YkQVK6LKtEY
wtf
yep, second time i ever had it. fixed by turning on and off again
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
throw your latest rpt at me. Already found a bug in the intercept pbo today that I should push someday
is release on github older, newer?
i want to replace it so i can exclude corruption of the files
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
yeah no CPU no ram changes
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
well i have VS
Can you do a live share?
https://marketplace.visualstudio.com/items?itemName=MS-vsliveshare.vsls-vs
That would probably be easiest for me
Atleast I hope that works with just debugging π€
gonna try using the github version first
Think live share doesn't even work when debugging a random process ^^
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?
just replace the intercept dll in your intercept folder with the one from the zip
pbo won't have any relevant changes anyway
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()
Thanks. That's good. (well bad but.. yu know)
you want dmp?
yeah. If you can get one without memory ^^
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
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?
NtQueryObject shouldn't freeze.. like.. ever.. Maybe really just a windows bug..
/* Query the object name (unless it has an access of 0x0012019f, on which NtQueryObject could hang. */
you already check?
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
its okay i can build my own now π
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 π
should have continue; in there as well?
oh.. yeah
it got to main menu now thanks, i guess the access violation exceptions are expected?
yeah. On the loader
http://www.muppetlabs.com/~breadbox/software/tiny/teensy.html
For the assembly level programmers in here (I know you're hiding in here!). Very fun and interesting read read.
Haha what an interesting read! 


"read read" π€
Haha what an interesting read! 
@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.
kk, im just waiting for team to run testing on my mission branch that switches to it
@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?
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.
Right, that was the big question (thread safety). So that's an SQF script checking Intercept to see if results are waiting?
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
Okay cool, useful.
Sounds like just the ticket for an AI mod.
Pushing game state as strings through callextension being pretty wasteful/ugly.
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 ^^
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).
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..
yes
Oh man almost forgot that fact π
In my debugger I wrote a workaround for that I think
Ah okey..
I just overwrote the IsDebuggerPresent library function apparently. In Kernel32
https://msdn.microsoft.com/de-de/library/windows/desktop/ms680345.aspx
"just"?
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
Perfect chance to use Visual Studio Live share :3
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.
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 π
bad signs so far after installing it my VS is frozen on start up :/
.-.

