#arma3_tools
1 messages ยท Page 13 of 1
"feature" ๐
actually, it was such a glaring error I am surprised it took this long. only way it survived is that no-one seems to want to use anything else except P:\
Finally soon I can reenable the pbo Delta patching
what?
What?
Minor update of "Visual Studio Code: SQF Language", includes fixes for the latest VS Code release.
I programmed an Extension in Visual Studio C++ and it worked perfectly fine. I used the wiki entry ( https://community.bistudio.com/wiki/Extensions ) as a reference. Now I want to switch to an other IDE (CLion from JetBrains) which workes with CMake and the MinGW GNU compiler. I cannot get any code to work with Arma. It seems like the interface is not set up correctly, because when I try to load the extension in Arma, the .dll is locked (I cannot delete the file). But I cannot get any response out of the Extension. [My set up: Win7, 64 bit but Arma + DLL still at 32bit] Has someone Experience with stuff like that?
well, what does the interface look like?
did you statically link libstdc++? If not, did you place the libstdc++ dll in path?
Always use an external program to load your dll manually and check if it loads and works correctly. It really helps and is about 20 lines of code!
It's really astonishing so few people do this...
probably just missing the leading underscore of _RVExtension@12 because of the different function decoration of mingw
Thx to you all, I solved my problem. @sinful crescent you were exactly right. I already thought it might have something to do with the decoration but I couldn't figure how to fix it.
@wide cedar my apologizes for not adding page to your tools earlier, thank you for your hard work! http://pmc.editing.wiki/doku.php?id=arma3:tools:armake
if I missed someone elses tool(s), please let me know and they will get added promptly.
@pliant lynx thanks man
bloody crap ... anybody knows why i get Application load error Q:0000065432 when ArmA gets started from visual studio? need to debug my extension and being too lazy to start it by hand all the time ...
My guess is that it's some steam protection (a very weak one, if that's really a protection because of the workaround).
Workaround: run Arma (Ctrl+F5) and then attach with the debugger.
yup ... after some time googling now ... it seems to be ...
but the "fix" seems to be that dump ...
You can install the ReAttach plugin for Visual Studio which then makes things even easier:
You do a: Ctrl+F5, Ctrl+R, Ctrl+1 in quick succession and you are already debugging
sigh ... fuck you steam ...
What do you mean "that dump"?
Been there, done that :P
Really, use ReAttach and it works like a charm. Ctrl+[F5, R, 1]
build an intermediary extension that forwards the commands to your extension. So you can unload/load yours as you wish.
Build an application to debug the extension instead of doing that in Arma.
I've got a .exe compile of my extension that i use to test. Otherwise i attach after Arma started
no need actually
CTRL+F5, F5 and changing debug options is enough @karmic niche
now just need to solve why my dll is getting ignored
which is probably (or most likely) me being stupid
If your DLL is ignored, first check it with Dependency Walker and then try to load it by an external 20-line C program.
Once THAT works, troubleshoot by debugging with real Arma
ye ... think i will just grab some old extension project and rip it apart
You may be surprised but that will actually be faster than starting Arma over and over again ๐
do not want to speak too much about what i plan as i am not yet sure if i will follow up and do not want to make hopes ... but just need a very basic command set to get working
it essentially is right now just "callExtension" returning an empty string that i need
great ... it is the same ... gah -.-'
@nocturne basin I would suggest you use a dedicated server instead of the client, put in a emtpy mission just with a init.sqf to make the calls to your extensions and fetch results etc
That way you can test every 30 seconds or so, that should be short enough, and you dont need to think about battleye
Also for basic extensions with the new interface check out this: https://community.bistudio.com/wiki/callExtension
just to close at least that possible problem ... the location of the DLL is supposed to be at "@<AddonName>\MyDll.dll" ... right?
yes
It will also work if the DLL is in the same directory as Arma 3, as far as I remember
Not for production use, of course ๐
Stacks suggestion with a simple c program that hooks up the dll and executes it is the better way in development btw
saves alot of time, and can make some problems visible that arma won't tell you
Especially that the required C code is already written in https://community.bistudio.com/wiki/Extensions
Copy-Paste!
...or not? ๐
Nope, I see no LoadLibrary in there...
ok ... to note why that is no solution (would do it exactly like so) is fairly simple: i started thinking about debugging SQF with proper break points ETC.
to do that, i need to hook the script engine
as that bloody issue fucks up not only visual studio but also my x64dbg, i cannot find the ptr of the function handling the script execution that easy ...
--> it is no option to write a sub-tool for testing
Yes, but you were saying that you cannot make your DLL work at all
So first you try to load your DLL with an external program and once that works, you fix all the other problems, including ending world hunger ๐
Agreed, and @karmic niche i meant have the dll code there in the wiki, not a techbench to run it sry ๐
#define _CRT_SECURE_NO_WARNINGS
#include <Windows.h>
extern "C"
{
__declspec (dllexport) void __stdcall RVExtension(char *output, int outputSize, const char *function);
}
void __stdcall RVExtension(char *output, int outputSize, const char *function)
{
//https://github.com/intercept/intercept/blob/4360bf568d401614b45fed477a97e858dbfaad7b/src/host/intercept_dll/intercept_dll.cpp#L80
uintptr_t game_state_addr = (uintptr_t)*(uintptr_t*)((uintptr_t)output + outputSize + 8);
strcpy(output, "foobartest");
}
BOOL WINAPI DllMain(_In_ HINSTANCE hinstDLL, _In_ DWORD fdwReason, _In_ LPVOID lpvReserved)
{
switch (fdwReason)
{ }
}``` wanna double check?
there is nothing inside litterally
but the basic RV hook and a single file containing the DLLMain
For my hacky stuff I always just inject the DLL using an injector. Would also work if it would be loaded via RVExtension. But I also don't depend of the Stack from the RVExtension call
you can remove the dllmain btw, since you dont use it at all
not yet @elfin oxide
ok ๐
@nocturne basin Why don't you do it in small steps? First make an echo extenstion. Check that it works and then try other stuff
ohhh intercept you want to use your dll that way
nope
just got the ptr from there
echo will work fine
checked intercept if it was possible with it
gave up after 3 hours
it is right now a simple echo extension @karmic niche
maybe it is the name ๐ค
The big intercept comment fooled me. So that code is not working for you?
there is nothing working yet
dll never gets callen
never gets bound
maybe it is the name ... checking right now (RVExtension.dll)
exactly
No sign it attaches, and you don't get a result either
Seriously...
Whats your filename and whats your script callExtension line?
Check Dependency Walker
Check your rpt, if arma tried to attach it ti should contain a: unable to get version file for <name>.dll
"RVExtension" callExtension "asd" @glossy inlet
- Dependency Walker
- https://github.com/overfl0/Pythia/blob/master/PythiaTester/PythiaTester.cpp#L70 (until the end of the file)
Also open in Dependency Walker and check if the DLL exports are correct
@nocturne basin If you're refusing to check the most basic things, I will have to start refusing to help you
when did i refused to check? Oo
Did you check with dependency walker? No
want to get it working so i can continue
just that i am not able to perform 7000 tasks at once
Did you check with a custom program? No
custom program: can write you one in 2 seconds
will work
depencendy walker: never heard of it, you just posted the link and raged about me not testing with it
The link is for the custom program actually ๐
noticed that too right now ๐
Will you bet 1000$ on that it will work with your current compiler settings? :>
Btw MulleDK19 already built a realtime SQF debugger. Maybe he can help you with that ^^
i know
though, i am borred and UI-Editor gone insane mode a little @glossy inlet :3
So you have experience in reverse engineering yeah? Because you will need that to make something like that. From what i read your C++ knowledge is not that high.. But whatever ^^ none of my business
well ... we will see
as i said, do not know if i will get this working at all or not
if i do, i successfully REed something
๐ Have fun then. RE is always an adventure
tried once already ...
IDA ran the whole day
and was never finished with analyzing
and in the end i lost interest :3
the dependency checker shows up some missing libraries for whatever reason ... not really familiar with the tool too though ...
just opened the dll
Close all tree entries. If you only see WIndows kernel stuff youre fine. Check the Exports section on the Right. It should have _RVExtension@12
_RVExtension@12 yes ...
gah ... plan b ...
ohh .. well ... plan b works
for whatever fucking reason -.-'
Arma engine already has a very nice script debugger builtin btw. But I would guess its disabled in release builds
just call ScriptVM::SetBreakpoint with file and line and a unique breakpoint ID and..... Youre basically done
When that breakpoint is triggered you can step through the script and anything ๐ But there are probably some external tools required to use that to its full extent
yep http://imgur.com/BEbLBaN ๐
@glossy inlet is there some docs on that?
BI has a debug DLL that uses that whole interface. So they basically have a fully dll accessible Script debugging system.
If you can get at BIDebugEngine.dll (which i can probably) maybe that will even work in the diag build. But I'm very confident that BI disabled that in all Public builds
no
Ask BI if they could #define SCRIPTVM_DEBUGGING in the diag build. If you get them to do that then I'll build a dll to access that interface. Have fun.
The calls that load the debug engine dll are available in the prof build. but SCRIPTVM_DEBUGGING is not defined in prof build. Don't have access to the real arma3diag.exe right now
You can even step per Line, Statement or Instruction! It would be so beautiful if People had access to that.
This ofcause can't be enabled in Release build. Because performance and hackers and stuff. But I don't see any reason to not enable that in a diag build. But i guess if arguing like that they could also disable JNI in the diag build :D
You can try creating BIDebugEngine.dll in the Games workdir and check if it is being loaded at startup. There is some fun to be had with that ^^
And if they enable It I'd be happy to provide the documentation for all of that
@prisma dragon Any chance to see that happening? Opening the Script debugging stuff in a diag build? Don't care about performance in a diag build anyway. And alsoi don't think the performance impact of the script debugger is that heavy.
Scripters would be veryyyy happy about that I think.
I've seen a SQF editing tool thing that had breakpoints working and all
haven't used it but there's some video floating around of it
yes i know
Yeah.. MulleDK19's one. Afaik he is hooking the script engine. Which I could also implement. Basically redefine all the disabled Debugging functions. But why do all that if BI can just set one define at compile time and make it all accessible
Just saw diag.exe can't MP. Thats not that nice but I think people can manage
because BI wont do
I guess it's more about their internal tools than the interface thing
(for disabling it)
@ornate wasp have you seen my PR?
is there a way to read out the model mass via some tool or o2scripting?
for the latter i found only
<loper>mesh</loper>
<lopertype>ObjectData</lopertype>
<roper>index</roper>
<ropertype>Number</ropertype>
<returntype>Number</returntype>
<description>Gets vertex's mass. Mass is valid only for Gemometry Level</description>
<example>_mesh getMassPoint 10;</example>```
as i am not familiar with model structure and such not sure if i get this right.
does one have the loop through all points the geo lod, and add up the mass assigned to each point (with most having none)
Well the MLOD has a mass variable. For the whole p3d file. But you'd need a parser I think
hm from what i know o2/OB shows the total mass in the bottom or so. however actually its just the sum of all mass "boxes" distributed over the model, is it not?
Not sure if you mean that but:
does one have the loop through all points the geo lod, and add up the mass assigned to each point
Ctrl+A -> Set the mass -> Mass will be evenly distributed
If you select one vertice of it and set the mass -> Mass will be increased by that point by Mass X and X will be reduced by all the non-selected points. (i hope its understandable)
we want to read out the information to make an overview about vegetation to know what are sensible values
(context is despite setting same range of value of armor geo property, cars and tanks can drive them over with no/less resistance compared to BI vegetation)
in ofp times geolod armor= value was respected. no idea if that remains true.
ingame needs first classes for all vegetation..
kju, if there is no config class for the object, the engine takes it;s armor value from the p3d
@vague shard One big nearObjects with "sorting"out (pushback the filename/path to a "black/AlreadyCheck"-list) function should do it.
Wait, aint we talked about mass?
yes indeed,
Me is pretty confused
but kju is mentioning the ability to crush (say) a tree or bush
wasn't it defined by the Mass?
Or is it a mix of both?
(wich i assume, when i think about it)
mass== 'bouncability' armor= value before damage= is affected
Can you define the Armor Value inside a Model? I am not sure, seeing it anywhere.
i only know, as mentioned, ofp.
(or does it take StandardValues, when there is con config for that model?)
but i do mention it, because many/most of the characterstics of ofp remain in the game, and have been forgotten/unused.
true
in any case, there's one hell of an easy way to find out. ๐
Blow it up?
@wind elm armor=10000 to be defined in geo lod as named property
1000 = infinity
nope
BI settings for trees:
6 armor=1500
1 armor=3000
1 armor=5000
15 armor=10000
7 armor=15000```
bushes:
```20 armor=700
11 armor=800
1 armor=1500```
I must be thininking of accuracy= then.
Rly? Okay. Never seen/noticed it before.
accuarcy = 1000 => type is not shown, use parent
the obvious point there kju is to set it to some large enough value to expect a difference when a car smacks into it.
dammage or damage for ArmA
Usage: Geometry LOD. This setting defines what happens to object after it is destroyed.
Please note that armor value can be set via config.cpp.```
https://community.bistudio.com/wiki/Named_Properties#Named_Properties
"can", hmm.. should it?
sorry my bad.
can = when sth isnt supposed to have a class then you have to use named properties
in other words BI introduced this workaround
they say class for vegetation and some other things would degrade performance
Would explain, why there is none for all trees/bushes
(i mean, its a 10min thing to add them all to classes)
the above would be obvious, it's 'faster' to react to the p3d which is, after all, being read anyway, than process a config 'somewhere'
Yeah, instead of "searching" for the Class -> Values -> blaa.
and they weren't 'introduced' geolod properties were even present in the models for ofp demo
classed objects are over-rides of the default game mechanics
@bux Sure, will be merged. However you'd have to enable CBA commands/functions via settings.
small update to the dll:p3d to account for minor changes at 1.67 dev release of the game.
@dawn palm what changed?
He'll probably be along later to explain it more, but he told me sourceaddress=mirror now has different min and max phases.
tanoa_map_objects.1.03.pbo released with more objects. The extras goodies are somewhat redundant as bis have now released the same extras as pbo. but, there you have it,
thanks @dawn palm
Don't know where this community would be without Mikero.
the parasites and thieves wouldn't agree with you ๐
Hey @dawn palm could you provide a little guidance for me? I'm trying to build a release build from the ACE3 git using these instructions https://ace3mod.com/wiki/development/setting-up-the-development-environment.html and I've run into a few snags
When I attempt to execute make.py with the specified commands, pboproject then opens and tells me that the source folder is not apart of the workspace (P:)
Sorry for bothering you, I was unsure of who else to inquire to so I figured I would ask you because your tools are part of the process
if you want to build a pbo, the folder of that pbo must be in the same 'virtual addressing space' as everything else. Eg, since all your other files are (presumably) on p:\ (items like p:\a3) then your pbo folder must be there too in the 'correct' location.
Okay. Thank you for the response. Unfortunately, now it's simply telling me "Cannot open source folder. Packing failed"
well it aint where you said it was.
p:\some\where
you presumably already have p:\x and p:\z (part of ace3 setup)
other than that i don't know very much about this mod.
I think I may have discovered my mistake. Hold on.
Ah yes, silly me. I was pointing it to the wrong direction
Hmm
Still did it wrong apparantly
I don't understand. Why is it failing to open the source folder? I'm executing the make.py command from the source folder
and I don't understand why your're asking me. I know almost nothing about ace3 or it's setup.
I figured since they're your tools that are a part of the process that you may have an idea. I apologize for bothering you, hopefully I can figure it out on my own.
i'd assume one of the ace devs is here and will reply as and when
Hopefully. Your tools are very useful though and I know you probably already hear it a lot, but, they're very much appreciated
thank you.
I suggest you get on our Slack @shy salmon more people there to help you, I am on phone atm so can't do much.
@pearl beacon Okay, will do!
has anyone looked deeper into the binarized wrp format?
i am trying to rebuild a terrain made for A1/A2 in with A3 tools,
yet i am getting different results using eliteness to compare them (namely no clutterMask and extFlags)
I planned to but didn't get to yet.
Whoop whoop, Swifty 2.1.5.0 is out. -> http://getswifty.net/download.html
2.1.4.6 [Fixed]Rewrote several core functions. speed++ [Added]Reimplemented pbo delta patching [Added] New icons for window toolbar [Fixed] Issue with window menu icons with high DPI screens [Fixed] SPDs are dead!. .. and much more..
If you ever wanted to develop your ArmA projects with eclipse (including features such as a live syntax check) I have somehting for you: https://forums.bistudio.com/topic/202181-sqdev-sqf-developing-in-eclipse/
@sick verge such efforts are always much appreciated ๐ looks pretty decent and well presented :)
will load in my game mode code as "torture test"
Formatter: A mechanism that puts the code into a proper pre-defined format (indenting and newLine-management) to increase the readability of (your) code.
did you consider to do this with a 3rd party tool, or does eclipse have good functionality for that itsef?
Logger: A logger that will get notified when something went wrong so that potential errors/bugs can be isolated and solved
how does this relate to the rpt?
Debugger: A debugger that lets you execute your code step by step and that lets you see and manipulate the content of your variables during runtime. No more endless print-statements to find out where the problem in your code is!
this is quite ambitious - i believe someone else is trying to get this tackled too
also you may want to talk to @severe lava - maybe he is happy to share some of his code or contribute to some extent
ref: https://forums.bistudio.com/topic/118498-armadev-eclipse-plugin/
Actually I thought about writing the formatter myself... But I must admit that I have not yet looked into it too deep...
The logger is meant to be logging the Plugin problems and nothing ArmA related...
Yeah I know... That's why the debugger is pretty much the last point on my todo list
ive used this one: https://sourceforge.net/projects/uncrustify/
mainly for configs, but to some extent it worked also for sqf
Uncrustify Code Beautifier download. Uncrustify Code Beautifier 2016-10-14 13:28:51 free download. Uncrustify Code Beautifier Banish crusty code with the Uncrustify C/C++/C#/D/Java/Pawn source code beautifier. It indents, adds newlines, aligns, etc, and is highly configurable.
Oh yeah I already have... He gave me access to the source code of ArmADev but I think it's almost more complicated to strip something out of it than actually writing it myself
Okay I'll look into it when I'm approaching this feature... Thanks :)
some armake progress: https://puu.sh/u1YGR/0bcdd659ea.jpg
things are starting to look right
Nice!!!
๐
armake progress with virtual arsenal image, I dont understand the context?
ah I see, good job then! ๐
and this is usefull for? (no offense, i rly got no clue)
being able to completely build mods without any bi tools (on linux, on continuous integration etc.)
Ah, nice.
anyone feels helping out in a small coding project?
to optimize the LITE creation process (resizing textures) a small tool would be handy that makes sure only change files are "rebuilt"
comparison based on "create/updated" file stamp
"LITE creation process" ?
Which language and windows/Linux?
basically resizing texture (can be also more)
windows for now, yet to have for both would be neat (linux for automated build process uses)
the basic probably would be:
- read input and output path as parameter
- if file does not exists on input, return false
- if file does not exist on output, return true
- if file in input is newer than in output, return true
- otherwise return false
C++
bool shouldCreate(std::string inFile, std::string outfile) {
HANDLE inputFileHandle = CreateFileA(inFile.c_str(), GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
if (!inputFileHandle) return false; //If I can't open the input File I also can't convert it.
HANDLE outputFileHandle = CreateFileA(outfile.c_str(), GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
if (!outputFileHandle) return true; //If output file doesn't exist I'll create it.
FILETIME LastWriteTimeInputFile;
FILETIME LastWriteTimeOutputFile;
if (!GetFileTime(inputFileHandle, NULL, NULL, &LastWriteTimeInputFile)) return true; //If we can't get time just convert it anyway
if (!GetFileTime(outputFileHandle, NULL, NULL, &LastWriteTimeOutputFile)) return true;
//If input file was lastEdited after output file
if (
_ULARGE_INTEGER{ LastWriteTimeInputFile.dwLowDateTime, LastWriteTimeInputFile.dwHighDateTime }.QuadPart
>
_ULARGE_INTEGER{ LastWriteTimeOutputFile.dwLowDateTime, LastWriteTimeOutputFile.dwHighDateTime }.QuadPart
) return true;
return false;
}
if you're on linux you could just use make
@glossy inlet looks good ๐ do you mind building an exe for cmd line use to have a test with it please?
uggghhhhh :/ I hate command line parsing with spaces and crap
"life"
https://ideone.com/p0Pnac Couldn't find a online compiler that supports windows and downloading the executable.
So if I'm making an arma extension for 32 bit linux in C then it should have the signature
"extern void RVExtension(char *output, int outputSize, const char *function)"
correct?
Why don't you use the code from https://community.bistudio.com/wiki/Extensions ?
From what I can see, you're missing __stdcall
It's a linux library, __stdcall doesn't exist.
Are you sure? I mean, sure, it's not used in linux but Arma will probably call it with that convention anyway as it's a Windows program ported to linux.
There is __attribute__((stdcall)) in gcc I think
you don't need an exe for the above simple need. a bat file is more than sufficient:
if exist thingy then exit/b 1
etc etc
including bash btw
Actually, I never wrote extensions for Arma that were used on linux so I can't tell. Try your code as it is and if that fails, add the stdcall attribute to see if that fixes it
gcc was unhappy with it.
Took a quick look at ACE3 github and they are using __stdcall but they define it to be empty on non-windows platforms:
https://github.com/acemod/ACE3/blob/master/extensions/common/shared.hpp#L92
So you're probably safe if you omit it.
However, I'd got with the cross-platform way if I were you ๐ (ifdef)
Well, I'll just add the ifdef anyways. Also, are extensions loaded at mission start or at server start?
From my (small) experience, on first extension call.
So if you want to fail early in case of issues, make some kind of init routine that returns "OK" so you know that it has been loaded and it works
And you call that as soon as you can
I'm just making it echo back what it gets as arguments, just so I can get the loading process ironed out.
#if(n)def _WIN32 is a universal define for micro$oft including 64bit compiles
just so I can get the loading process ironed out
Even after that stage it's good to have a safety check put in place.
Let's say it works on your computer and you give it to your community members but then BattlEye blocks the extension. You will be wondering why X doesn't work. Of course that doesn't apply if you're doing a server-only extension but I always prefer to stay on the safe side, check things and fail early while I still can.
+1
is it possible to execute code when arma loads the extension as opposed to when it gets called?
Hmm... dllmain for windows. I don't remember what is executed on linux.
Make a C++ constructor ๐
sigh all this just so I can just write to a file
If you want to open a file on start you can use a static variable in your function that will hold the file handle opened on first call of that function
no, no I actually have an extension I'm trying to use, but I can't get arma to recognize it, so I'm trying to determine what is wrong with it.
I'm trying to get https://github.com/mistergoodson/OCAP working. By default it comes with a .dll version. Someone made a pascal version which nobody can get to compile, then that same person made a very simple C version that I can get to compile, but can't get arma to recognize.
Have you written a program that opens your dll/so and calls your extension manually and why did't you do that? ๐
well I can see what my so has in it using readelf or nm
but I have nothing to compare it to
Also checking, I'm using the debug console to execute my callExtension on the server. This shouldn't cause any problems related to security protections or anything, right?
ha ha!
I forgot I was working on a 64 bit linux, but 32 bit arma
for those who aren't aware of this (because i'd forgotten too) dep3d +Fx will automatically remove P:\ from file references which are sometimes wrongly inserted by object builder.
@dawn palm I've been getting some crashes with makepbo lately, most of the times it works just fine but sometimes it just crashes once or twice and then suddenly works fine without any changes to the source. makepbo is started by pboproject, both are latest subscriber version. any logs I can send you?
define 'crash' please. genuine crash to desktop is verboten
it sounds like a memory error of some kind.
yeah, I'd guess so too. it's an actual crash where the Windows Crash Report is shown
@dawn palm http://pastebin.com/m09qj8Nm
<rant>
Context: For the last two years I've been working on a torrent installer/launcher (yes, because I like to pointlessly redo the same work that has already been done by others) that can be used to make your own custom looking launchers and this guy turned-up. We've been talking for a few hours when I was trying to help him with setting the launcher up, and then he drops this...
...aha... can't upload images to this channel ๐
veeeeeeryyyyyy looooong siiiiiigh
</rant>
aww
Just released a new version of my SQDev plugin: https://forums.bistudio.com/topic/202181-sqdev-sqf-developing-in-eclipse/
Windows Crash Report
it's almost a certainty, that assuming nothing's changed in what's being packed/compiled that you have either dodgy memory, video card or hard drive, in that order of frequency.
my own experience is that memory faults turn out to be video cards (or drivers) anyway.
My tools are well known for their stability (which is not the same as saying they are bug free). It's almost, but not quite, impossible for them to cause a ctd.
same error occurs both locally and on our CI server
I'd guess it's something fishy with that specific addon we're building since it only happens for that specific folder, not the others
if it's not too large i'd like to look at it. ctd's are never acceptable.
That could probably be arranged, the addon folder is just some configs and sqfs. It might have dependencies on quite a lot of models, I'll need to check that and if it's reproducable with or without them. If they aren't required I could just email you the troublesome addon folder, it's just a megabyte or so.
yes pls. I can cripple file reference checks. my guess is i've done something dreadful with sqf
How come that the promising "intercept" project lays dead on git?
It feels like the holy grail of arma scripting, what's stopping you (the pros) pursuing it any further?
"the pros" are currently 2 people. Me and Nou. Nou has a new job and no time for Intercept. And I am working on TFAR and a couple other projects. So.. free Time is stopping us
I'm planning to work more on it once TFAR is done. And my other projects pile get's a little smaller
it is hard to believe that there are only two arma modder capable and interested in working on the project.
ยฏ_(ใ)_/ยฏ
I only read though it before I left to my vecation right now. But it got a bookmark so I will revisit it and if I find something to suggest or work on I will create a pull requuest if there is a public git :) I am working on a siries of extensioms atm, also a major rewrite of A3Log, but after that this is on my list.
If I got things correctly this is indeed a very interesting idea.
if there is a public git :)
Is Github not public enough? ;P
could have been that the cuttent dev build is located somwhere else, as I often do.
But if the up to date files are on github thats fine ๐
Currently biggest thingymabob on Intercept right now is reworking the Memory allocator. I'm already half way done with that. I think current code on Github is 1.66 compatible. So people could run it if they wanted to
latest git version crashes after trying the example files.
*the game crashes (obviously) although I had problems compiling the example so they might be older versions.
Might be a dumb question to ask but I never had the feeling that an extension would need its own mem alloc. What are the reasons you would use it? For and against it?
Because... Intercept is not just an extension. We need it so we can use the refcounted classes that the engine gives us without implementing our own cache and crap.
extdb uses memory alloc, because mysql c connector wants memory preallocated for results when you use prepared statements.
A single column in a result with medium text data type will require 16mb.
So it helps avoid some memory fragmentation issues depending on usage / query's / dB scheme.
16mb o.o
LongText is 4GB ๐
i was ... reading that. ๐
my lil tool starts to look like something
https://cdn.discordapp.com/attachments/180068993888026626/284140776743632917/unknown.png :3
lol i need some coffee + proof reading crap before i post ;P
due to the way the microsoft os allocates it's memory: you can only rely on 25% of total ram in the pc to be available for any given linear block. 16gig ram? 4gig or less is garanteed. anything more is randomly not available.
it is not available simply because another app was placed, or is placed, dead centre of two chunks.
Was something to Show The linter is working und @wind elm
There a cmdline version of linter or built into editor?
No cmd line available but you could build one easily
It is all inside a single DLL
https://github.com/X39/ArmA-UI-Editor/tree/MVVM/ArmASQFLinter/Parser/Generated
Feel free to Grab and test
Only known issue i could find in sich Quick search was That-_something) and Co Are not recogbized correctly
Kinda bugs me that
test = parseSimpleArray "[1,2]" select 1; (0.33 10000 iter)
Is faster than
test = call compile "2"; (0.45 10000 iter)
Just might be useful for someone doing extensions.
yep
and its even better with the new callExtension syntax which saves you all the param formatting
I was just optimizing a function. And formatting all params into a string to send to the extension takes 0.02ms. Horrible! Desperatly awaiting callExtensionArgs
Really wish they didn't mess with the return format from an extension ๐ฆ
@smoky halo Hey I have a quick question re: your tool, is it OK if I Discord direct message?
@Dedmen why are you waiting? Its already there ... Also on dev is the new return too
@smoky halo you mean did not mess with it again? Since they changed it to ["stringdata",returnCode,ErrorCode ] already
Order might be different, look at the callExtension page its all told there
I mean to support 2 callExtension methods to be back compatiable.
Means documenting 2 different return methods, especially if you take advantage of the returncode
Uuuhm I think its just fine now. They wont change the system they just came up with
callExtension string - string
callExtensionArgs Array - Array
They could speed up the input transmission though ... Its takes for arges when much data is processed
Ages aka 0.01 ms or so but still its bugging me
Its not really returning an array though ;)
Its a number and string you return not as useful as array. Its just wrapped in an array.
Would have perferred just a string
Yeah ok I see the point. Still if you use the codes it is better that splitting the string again at output.
And with parseSimpleArray an array return is impletmemted
Its a typical duc tape solution from BI again but still i appreciate it
they could have implemented a callback eventhandler.. that would have been nice
so that the dll can actually offload stuff and directly call back when its ready..
the whole async way in sqf really bugs me
@meager falcon would create nasty problems
If it only triggers a eventhandler, with the return of the Extension (and the extensionname) as param?
Not sure what problems that could cause
I this wont work too well ... callExtension performs the loadLibrary command c++ side and if you would async that you could get real problems with instanceing and sorting which return goes where. If you wanna do something async make a queue and do a smart sqf side. Its barley even 50 lines of sqf to have a real good async implementation. I will publish a framework for that soon to use it or learn from the approach, you might look into that then
@exotic ice sure
I already know the async way, its more about saving te performance of permanent requests.
The LoadLibrary on the c++ side is btw only once performed, when the callExtension is first performed, after that the dll is attached to the ArmA3 process
So my Idea was basically to have a certain c++ function to be called (just like RVExtensionBack or something..) that only triggers the ingame EH with given params. It would have the same restriction as we have now with a single call
So its more like an Interrupt approach, instead of busy waiting
This would actually make larger scale calculations possible which are performed by the dll only (given the fact we can multithread)
I dont see how that should work, as you cant just say the dll ok call me again whwn you are ready ... Some point of arma must wait
You execute the funtion of the dll which is exportet, and that execution is sync
You actually can:
callExtension -> createThread from the DLL and the callExt is ended
Dll is done -> call the "Interface" of the game.exe -> trigger EH
the sync part is done, when the output is set (RVExtension function end)
You can however create new Threads within the RVExtension function which are still executed, when the call has already finished
KK made a tutorial for this
I know about mutli treading and the async approach, but your idea would rewuire the dll to call an endpoint inside the game for trigger the EVH
Thats what I said
I mean sure its possible, but I don't think would do that
Yeah it was more like a wish.. like I said
it would free up alot of Script engine capacity if you do alot of Extension work in an async way
This would be a nice thing, but honestly you can so mutlithreaded async on your own. My extensions to be released soon all feautre a framework for it which keeps the processing time down to nearly nothing, so just input in output out
So as this already possible, BI wont work on jt, as they most likely break their game by doing so
Remeber the engine is old, and they barely even tough it anymore
how it comes that non of you thought about the SQF stack yet?
armas "async" mechanism is not real async for a reason
not to mention all those race conditions when you would like to update a game objkect in the main thread
deadlocks incomming
what are you refering to by "SQF stack"
All scripts you execute are acually staked
though ... not actually sure if it does work with a stack
but it is the most common thing
you should not forget that arma is designed in the way we love & hate it for reason
and if they could not get away those things ... i highly doubt that it would be "just quickly" implemented
not to mention that the whole crap of script engine would most likely break when you operate async on it (+ the game in some aspects)
Well would the callBack triggering the EH not only be another item to add to the stack then?
you add it async
you would need to regulary check the async EH stack for such things
and all that just because some ppl want async dlls?`
race conditions and deadlocks would be the result ... probably ...
because somehow for some reason somebody finds a way to "abuse" or at least manipulate that stuff enough
isnt one allowed to dream ๐
no ๐
ok then back to setting up a local server, gameupdater/steam client broke >.<
X39, why would you get deadlocks?, the EH would return at some point in the script stack.
DLL callback would be put on the callback stack and then each item would executed on the end of the frame or whenever.
Its not like it would instantly interupt whatever the engine is doing at the moment.
^ this
https://en.wikipedia.org/wiki/Deadlock there is a nice graphic https://upload.wikimedia.org/wikipedia/commons/thumb/2/23/Deadlock_at_a_four-way-stop.gif/220px-Deadlock_at_a_four-way-stop.gif
it is not a must that a deadlock would be created
race condition is far more likely
speculation is everything we can do in the end due to lack of code
That deadlock showcase was so beatutiful <3
Best solution IMO when the callback is executed add a new onEachFrame handler that executes he Callback SQF function and then removes itself as eventhandler. Would only have to make the addEventHandler threadsafe so it doesn't crap out the engine when it tries to add that EH in exactly the moment the EH's are processed
If a deadlock is created it's because of user code... there's no reason you couldn't create a deadlock in SQF... just like there's no reason you couldn't implement this RVCallback properly without deadlocks. The extension generated event can simply be dispatched to the main thread and handled at a later time
If a deadlock is created it's because of user code dat
nothing else to be said
it is pretty much what i wanted to say the whole time
So basically not what you were saying but if you pretend that was what you were saying suddenly its all true and you don't look like a idiot.
Yea, no you were still wrong.
Callbacks woulden't have deadlocks because you easily engineer around it.
If the code on the other side eg the "modder" side deadlocks that a whole other problem and is a user issue and not really anything to do with the feasability of a callback trough the exstensions.
hte engine has a 1 mscec abort timer. deadlocks are killed.
no sqf process of which, even t handlers are part, and call extensions, since what else do you think you can code in? are subject to the 1msec rule.
this is buried so deep in the orginal ofp code that bis have been unable to break it.
be BI
try to fix the engine
cant fix it
making a new engine
However, atleast some of you understod my idea of having the ability to call back to the SQF engine
Hi all. I'm trying to make own extension and I have 1 problem: arma doesn't see my dll from @mod folder, but from root directory it works fine. Why?
When you had it in the @mod folder did you launch with that mod?
yes, of course
[2:13 PM] Torndeco: @verbal oar Statically link your extension
[2:13 PM] Torndeco: If you dll is dynamically linked the other dlls. They need to be in arma3 root directory or system dll path.
Thanks, I'll try
@dawn palm I was referring to C++ code in the exstension.
Anyway X39 is a idiot and should just shut up about thing he dosent know about
mikero subscriber tools website is down until tuesday 7th march
what does that mean, only updates are unavailable (MikeroUpdate) but tools still work normally?
Tthey work as intended., no updates however are available till further notice.
Anything happend? (like Goat eating Servermachine)
was relying on someone else to pay the server costs.
gg
had done so for some years now, i forgot.
anyway, am looking for an automatic host that will recieve the paypal and issue the password right there, right then.
I think optix offered. maybe.
This is pretty cool: https://github.com/kayler-renslow/arma-dialog-creator
did you build the app yourself to test? in the forums he said its still WIP but wants to have somehow out soon
@dawn palm did you fix your preprocessor in a later version? http://pastebin.com/raw/Rh3GqeRj
that's such an old version of the dll i'd say almost certainly. but i'llcheck your #defines when I have time, and get back to you.
@dawn palm if you wouldn't mind checking this one as well ```#define CAT_I(a,b) a ## b
#define CAT(a,b) CAT_I(a,b)
#define STR_I(x) #x
#define STR(x) STR_I(x)
#define HASH #
STR(CAT(HASH,X)) // "#X"```
k
@fiery hemlock
1st example:
bis: "1 space space 2"
me: "1 space 2"
2nd example
bis: "space space X"
me: error because i won't ignore # and won't accept it
@dawn palm so both BIS' and yours still fail in both cases? ๐
as for the last comment, do you mean you don't intend for it to work? if so then how do you produce "#X" from X ?
also on an unrelated note, does your preprocessor have a predefined symbol like __MIKERO__ or __DEPBO__ and does it handle nested control structures? as i understand, the BIS' one does not, at least not the A2 one, though i haven't checked in A3.
bis can't handle nested # ifndef, i can, and do
nested hash ifdef works for bis, ndef does not
is the preprocessing part of binarization?
it's just a fancy word for handling #defines
a preprocessor takes text with some directives and outputs processed text
it does not build a binary representation of anything
so no binarizing
.... or doesn't compile certain sections of code.
I get what a preprocessor does I'm just wondering why @dawn palm has to do it
it's part of the c languagge and part of bis config.cpp's
ah so it's basically just done for checking / parsing the configs
heh i wonder too, why is everyone rolling their own, whats wrong with existing tools? they come with every C/C++ compiler ๐
huh?
I don't have MIKERO but ARMA is used to expliclity binarise to arma rather than ofp. ditto OFP is an explicit compile switch
above italics should have underlines.
if so then how do you produce "#X" from X ?
buggered if I know. bis don't accept it as presented. neither do I.
and even if it were accepted, it would not produce #X me: # space X and bis: # space space X
define CAT_I(a,b) a ## b
you _probably wanted:
define CAT_I(a,b) a##b
@fiery hemlock i would prefer using cpp or something similar in armake, but since includes work differently due to the whole prefix system it's not that easy
have i lost the conversation here? what have includes or even cpp have to do with it? what am i missing?
aah. do you mean a separated parser?
cpp = the gnu c preprocessor, not c++
there's a difference in macros between c and c++ ???
not that i'm aware off. cpp is the name of the gnu c preprocessor: https://linux.die.net/man/1/cpp
naming isn't their strong suit i think
i think there's some standard differences though don't quote me on it
@dawn palm i'm just thinking in terms of C/C++ preprocessors here. do you mean that the spaces in the expansion of a ## b are intentional? if so, shouldn't there be 2 spaces like in the BIS' PP output you showed?
probably
but it seems to me you haven't tested this stuff at all to get the outcome you wanted.
Heh i did test it but when the output was "1 ""2""" on a simple catenate+stringize i didn't feel like testing further would make any difference. Admittedly this was an older version of your tools but hey i'm here to decide whether the new versions are worth spending money on. And since there are no trials or refunds as far as i can tell, what else is one to do?
you ask here as you did do. it makes sense to me you asked.
all these homebrew preprocessors don't much impress me though. why shouldn't i just use say msvc and get far better results
update: it's shit, acre murders it
cl /EP config.cpp >> config.i
To save Flummi from writing that. Most already available preprocessors would need to be modified to respect Prefixes in #include. And as it is on the semi todolist that armake will also be able to load header files from inside packed pbos one needs to be able to make a custom #include resolve function. Which you can't with closed source preprocessors.
are you talking about SQF preprocessing?
also you can just use /I whats the problem?
only thing a C/C++ PP can't do is __EXEC __EVAL but i don't really know why you would want to use those anyway
let's say #include "z\ace\addons\common\script_macros.hpp You have a folder called ACE3\addons\common which contains script_macros.hpp and a $PBOPREFIX$ that contains z\ace\addons\common How would cl know that it has to read that PBOPREFIX to know what folder it is currently in.
Whats the benefit of doing that? ACE3 vs z/ace
No need for a P drive and symlinking everything to replicate a artifical prefixed directory structure
But why do you want z/ace/... and not ace3/... ?
because the ingame preprocessor uses the PBOPREFIX paths.
So change the pboprefix path?
facepalm forget it...
No seriously whats the benefit of using a different pbo prefix?
It's just CBA/ACE/TFAR standart way of doing it. It's better for organization thingys
Ok so your source code is organized as ace3/xyz and pbo contents as z/ace/xyz? Whats preventing you from using the same path for both?
so basically some twit decided to be fancy and used โง๏ฝฅ๏พ: *โง๏ฝฅ๏พ:PBOPREFIX:๏ฝฅ๏พโง*:๏ฝฅ๏พโง and now it's too late for y'all to change it?
Some twit being BI....
they made cba/ace/tfar whatever the hell those are?
if you symlink ARMA/z to your p-drive, the /z/MOD/addons stuff allows you to use filepatching with all your project files on the p drive
also, the prefix in general allows you to "root" the paths of any arma config regardless of location, allowing you to use absolute includes like \PREFIX\path.cpp
and as long as the binarizer finds the file, it doesn't matter where it is
you can't link %arma%/mod to p:/mod ? or %arma%/mod/addons/x to p:/mod/x ?
you can, but the system was introduced by people working on more than one mod with the same system ๐
lazyness always prevails and 1 symlink > n symlinks
automation > manual labor
i agree
because you see.. laziness prevails
i don't even use filepatching, and the majority of modders probably don't either
also, since these projects are now open-source, ease of entry is more important than comfort for the core devs
that's why building your mod shouldn't be dependant on things outside of the project folder
you could just link P:/z to P: though couldn't you
honestly, i would prefer just pretending no one ever invented the p-drive
it's horrible and needs to die
i don't see what difference it makes
it's just ass backwards. compare building a mod to building a c or cpp project
all it should take is $ make, not "start by creating a new drive letter"
well sure but the whole discussion was about whether or not you can use a C/C++ preprocessor to preprocess arma configs or not.. and i don't see why not
sure if you've got some magic pbo prefixes you might have to make some symlinks
because the fact is the prefix system was invented and now mods use it, so preprocessors for mods need to support it. so if you have cba in one folder, and ace in the other. and your preprocessor is trying to find "/z/cba/addons/main/whatever", you'll need to implement some kind of prefix support, whether that works by just putting a "P:" in front (bad) or searching supplied folders (good)
since the path /z/cba/addons shouldn't HAVE to exist
that's my reason
i can't speak for others of course
/Ix/cba/.. #include <cba/somefile> that's what you get for using them pboprefixes i guess now all your clients hardcoded the path and you're fucked forever
but i didn't come up with pboprefixes, BI did. it's even hardcoded in the PBO file format
and ideally mods that can be built with official tools should also be buildable with mine
GCC is open source... grab libcpp and build a little pboprefix thing around it ;D
you keep saying pbo prefix when what you really mean is \hard vs relative\ #includes
the choices are to use '\current\drive' for includes (P:\ does not come into this) or use a series of include file paths to search in. The latter being somewhat impractical for the purpose.
there's nothig mysterious about a linux file system using \hard\addressing based on the \ root folder tree and gcc compiles would understand that quite readily.
in the microSoft world that translates to (current drive)\
if ace / cba choose to trick the folder system by taking advantage of the bi engine's pbo prefix, that's up to them.
Cool. Now add a switch to your tools to use gcc cpp and i'll buy it in a heartbeat
Hows that?
Untelo, you seem to know everything, why don't you just make a pbo packer with gcc cpp then?
you don't want 'klunky' software like mine, so use the official ones.
you don't want exev eval? write your own
you don't want sqf processi and lint checking, write your own or use steam tools. but above all, just go away.
Damn aren't we hostile...
@pearl beacon there's no need to write a packer. One could easily enough preprocess files before feeding them to an existing one
koffien explained it quite well, and he does a damn good job in his code catering for ace's use of symlinks
before feeding them to an existing one
so go ahead and do so.
http://odol-converter.azurewebsites.net/ now supports v73 ODOL
sry for interupting ^^
#403
haaaaaaaaaaaaaaaaa
As for exec/eval i've never really used those so i don't know how useful or not useful they are, but personally i have far more experience with C/C++ macros which is why i would like to be able to use those. Different people, different preferences
if you bothered to read my documetation accompanying my tools, you'd understand how to use them and why.
but since you know so much about gcc and friends, use a precompiler of your choice and stop the nonsense.
__EVAL seems useful if you need some data from the engine ๐
dynamic data, which can only be known (obviously) at start of game time.
they serve no purpose at all in a config.cpp that has been binarised, but in a descroptioon.ext they are essential.
Sqf processing / lint checking i've no experience with though i think i've seen some of that obfuscated sqf, and i don't mean to offend here, but it didn't seem that useful to me
_exec(var=var+1);
_eval (class watsit##var)
very useful for the six million class hitglass accomanying a building
i've used poetic licence for above btw
hmm I guess that makes more sense than the example on the BIKI
__EXEC(cat = 5 + 1; lev = 0)
...
_cat = parsingNamespace getVariable "cat"; //6
biki examples are mission.sqm centric
where the descripton.ext (unlike config.bin) is compiled each time every time at game time
thus making it invaluable to pick up items like nPlayers, nameOFserver and etc
these things are 'normally' fed into things like rscDisplays
exec and eval can't exist in a config.BIN they are processed out. which is why, when you extract bis pbo's, you'll never see one.
ace make clever use of exec/eval in one single config.CPP which is not binarised.
yep or did.
possibly
your packer specifcally excludes using my tools for one, single, config.cpp
that was not for that
that was for fonts and something else
because your tools didn't copy the files ๐
burp
will fix, as you would expect me to, any time i'm told about a problem.
uh, I did tell you about it when I was setting up the toolchain for ACRE
you said you won't ๐
ouch ๐
lol ๐
anyway (moving right along) exec and eval mean sqx processing. which, of course, isn't known by a standard c(++) compiler.
exac and eval are implict in model.cfg
angle = rad+60;
oh just to clarify, it only happens due to binarizing, for some reason your tools do it differently
and we get around it by just having those things in separate pbo which doesn't get binned
moment jonpas, looking something up in my code.
ooh yeah I remember now, if a p3d is contained in the component, then it will throw away the unknown files and never copy them
@dawn palm are these things related to exec/eval? https://community.bistudio.com/wiki/Arma_3_Particle_Effects:_Config_Parameters
I've seen those variables all over the configs I think
no they aren't sqx statements (which is what exec/eval is)
these 'variables' are;
hard wired in the engine. in which case they will always be initialised in bin\config.bin OR
looked at by sqf event handlers.
sqf modules, sqf anything.
but no, they aren't anything to do with exec eval
alright, so similarly the safeZone things aren't related either. I guess that kinda makes sense
again correct. safezone is hardwired
hard wired doesn;t mean it's a constant. it means, the engine looks for that 'name'
yeah
where they can, bis try not to use hard wired names, instead, relying on the ever expanidng sqf modules.
one of the best examples because it's easy to understand how it gets at a config.BIN is gaia's very brilliant jukebox sound system for playing music tracks.
got a link? A quick search doesn't really show anything relevant
need a few minutes for jonpas
sure ๐
@pearl beacon
productversion
one of your configs is checking the version number (array element 3) to see how to 'compile' the resulting config.
all exec evals must produce constants. and this one is known only at game time.
ACE or ACRE?
not sure sorry.
it's obviously not right, but for me ace and acre mean same thing. for mikero it means 'pay attention'
ditto cba
well I don't see anything checking what you are saying
I can only remember finding productversion in an exec eval and rejecting it as not PRE compilable. I then checked the pipeline packer of ace or acre, and spotted THAT config.cpp as being passed thru, unmolested.
I am not sure what you are looking at then ๐ค
k. i'll move on to this sound file business.....
any file
I looked up what the problem was
say you have a component with a p3d
and some eg. .aba files (ACRE antenna files)
your tools will pick that up and binarize the p3d, ignoring any files with unkown extension (such as .aba)
however if you remove the p3d (or move those files to another pbo), which then won't trigger the p3d binarization, it will pack it just fine
@dawn palm do you know what could cause this error? https://gyazo.com/0cc739c521e20f92ee38df3c7382d739
used the tools last week and everything was fine up until now after a reboot.
it won't let me create or use keys at all
i have never,. ever seen that msg
it's pure bis DsSignFIle
all pboProject does is use that exe as a convenience to the user having to do it themselves (and get it wrong)
my very best guess is you have a corrupted bikey
Well I thought the same, so I created one on my home desktop and put it on the other desktop I am remoting to and still the same issue. It doesn't even like to create new keys. Going to just try reinstalling a3 tools.
good move, imho
if it doesn't like creating keys that's pure dsCreateKey.exe. nothing less.
your tools will pick that up and binarize the p3d, ignoring any files with unkown extension (such as .aba)
ok!
i'm in a rock and hard place with that one due to people having all sorts of genuine crap in their folders.
I'll have to think on how to implement this, while maintaining keep it simple, stupid.
I'd be ok with a param to makepbo with allowed extensions or even just disable ignoring
yep. understood jonpas. and thank you as always for your support.
anyone needing updates from my subscriber tools needs a new way of doing so. My current web provider has gone awol, and i have had to move to a different one. I thought it was a bill payment and was wrong. They're awol and hacked. Contact me on skype, discord or an email
sorry for the unavoidable pain. it hurts here too.
If this helps at all with my problem, 2017-03-07 05:45:53,248 [INFO]: ===================================================================== 2017-03-07 05:45:53,250 [INFO]: == P:\DSSignFile\DSUtils.exe == 2017-03-07 05:45:53,258 [INFO]: Version: 0.5.* 2017-03-07 05:45:53,259 [INFO]: ===================================================================== 2017-03-07 05:45:53,259 [INFO]: System/Current dir: P:\DSSignFile 2017-03-07 05:45:53,260 [INFO]: System/Command line: "P:\DSSignFile\DSUtils.exe" 2017-03-07 05:45:53,261 [INFO]: System/OS Version: Microsoft Windows NT 6.2.9200.0 2017-03-07 05:45:53,262 [INFO]: System/OS 64bit: True 2017-03-07 05:45:53,263 [INFO]: System/Process 64bit: False 2017-03-07 05:45:53,268 [INFO]: System/Personal dir: C:\Users\Admin\Documents 2017-03-07 05:45:53,270 [INFO]: System/Local App Data dir: C:\Users\Admin\AppData\Local 2017-03-07 05:45:53,271 [INFO]: DSUtils Started 2017-03-07 05:45:56,709 [INFO]: Create new authory: testname; Destination dir: D:\A3PDrive\DSSignFile 2017-03-07 05:45:56,998 [ERROR]: Missing file: D:\A3PDrive\DSSignFile\testname.biprivatekey 2017-03-07 05:45:57,000 [ERROR]: Missing file: D:\A3PDrive\DSSignFile\testname.bikey 2017-03-07 05:46:00,018 [INFO]: DSUtils Exited
Thats what I get after trying to create a key.... idk why it is saying missing file, and I even reinstalled the whole p drive and anything that should be associated with it.
DSUtils was unable to create the authority.
could be a mismatch running AsAdmin versus mere mortal, and no tools of any kind should ever be on your data drive:
that's asking for trouble for two reasons. bis consider the tools folder to be theirs and will delete the entire contents if they feel like it. secondly, bis binarise, in a desperate search for land classes when building maps will wander all over your drive and get very upset with garbage.
the latter is one of the most pernicous crash to desktops you can achieve. because you have no hope in hell of discovering what binarise is upset about.
wouldn't it do the same on the c drive then to? The d drive on this system only has an arma server and a3tools folder for the p drive.
only reason I have a pdrive on the server is because my internet would take ages to upload back and forth.
the p drive for an admin versus mere mortal, are different, the same. or non-existent
and based on above, you don't seem to have a reason to have a 'p' drive
an armatools folder some\where, but P seems to be redundant
Am fairly sure Tom, (Julien) from bis, now prevents tools being placed on p:\
wouldn't it do the same on the c drive then to
no. bis binarise only wanders over current drive, which is normally p:
in a dos console i browsed to where i have dscreatkey
i typed the magic words
dscreateKey fred
and got a fred.bikey
perhaps you should first check you can do that simple thing in p:\dsSignfile folder
CPAquireContext failed
my local pc workes perfectly fine, its the remote server that is having a problem and I am using RDP.
ok
i'm not familiar with rdp. i'll google it so we're on same page
ah yeh, ok, then you should be able to simply navigate to the exe and somehow type dsSignfile fred
or a bat to do same.
yeah I just get "CPAquireContext failed" when doing it from cmd
Thanks for the help anyways, might just submit a feedback tracker report and see what comes of it and wait until I can find the actually problem/solution.
p:\z was used 1) was its the last character (folder ordering) and 2) most likely unique (so you can easily type the path/select the folder with keyboard)
Thanks for the help anyways
well at least you've narrowed it down to the specific cause of the pain and suffering.
@buoyant compass after a quick google search: it seems you do not have access to all files and subfolders in C:\Documents and Settings\All Users\Application Data\Microsoft\Crypto\RSA\MachineKeys on your server
solution seems to be to delete those files
A question on object builder: I have an import for FBX, but a member of Unsung doesn't see it. Is this possibly an outdated version or some setting somewhere?
I had that, make sure he has FBX.dll in the object builder directory and its not blocked by windows
I put it down to a glitch in the matrix
i recall something like steam needs to be running aswell
@dawn palm it ended up being a permission issue with the account; for some reason the other person on the box messed with some stuff after a reboot.
@viscid verge also get them to make sure the DLL Folder path is defined within OB's options - \SteamLibrary\steamapps\common\Arma 3 Tools\ObjectBuilder
ok, thx, fwd
@narrow bough that seems to fixed it, though the fbx model seems to be corrupted. neverending story it suddenly becomes. Thanks for your help!
hehe np
@smoky halo Thanks, I was incorrect about the permission issue, seems to be the CryptAcquireContext created an keystore during the crash, the store somehow got corrupted, now the application tries to open the broken store and the app failes, because it doesn't catch the errors correctly.
Fixed: The shortcuts of FSM Editor were not usable on some computers
That bug has been driving me nuts, had to keep an old version of FSM editor. Thanks
https://gist.github.com/dedmen/9d12594bda50fa4bc333659364af5092 serialized Callstack at breakpoint. It's really looking like something now
really, like can I use the Del button finnally ? xD
@glossy inlet looking good! made in relation to what?
Made from my script debugger
cool ๐ you mentioned that project a while ago. do you want to feed it into a 3rd party tool?
(the callstack)
X39's new Script tool thingy will integrate it. In the end it should look similear to the Visual Studio debugger.
nice ๐
I guess it's a C# project?
and will it end up as an open source project and/or will the linter be shipped as a separate binary?
linter is just inside its own DLL
using it still requires accessing it
maybe will put it in separate tool later
cool ๐
next things on the list for that tool: properties dialog ๐
was really thinking about doing my own linter but if this plays well with mono then I probably won't ๐
mono was up to 4.5 right now?
no clue, probably
should work then
the current linter still needs to be type processing though ... but that can come later on the road
basic syntax linting is enough for now (ohh ... and it still needs to implement a preprocessor ... but that is some other topic ๐ )
Aslong as it beats the TypeSQF linter atm..
I wrote one line in an SQF file and it complained I had no semi colon ๐ฆ
semi colons are overrated. You can replace them all* with commas and it still works the same.
Looks way cleaner is you use semi colons for specific delimiters tho, and commas another
@dim phoenix I like @ more
Are we still talking SQF?
[] call foo @``` yep commy
โญ
^
@ is a reserved symbol in 02script. it means the nth value of an array similar to the select keyword
ar@3 // the 4th element
02script is sqf on steroids because it has it's own file io and display controls
they really make an effort to avoid industry "standards" ๐
why not just use python or whatever
You typed "please do" wrong ๐
what do you have against python
It's dangerous ๐
especially reticulated pythons.
why should lua be industry standard?
Thought it was C/C++ for any larger scaled projects (like games) (as well as C#)
Java for platform independency
HTML/PHP combined with MySQL for webprogramming
has anything moved past me?
They were talking about scripting languages not General Programming languages
ahh ok my bad
Mayor release to SQF Language for Visual Studio Code. More info: https://github.com/Armitxes/VSCode_SQF/releases
Big thanks goes to @rotund rampart apart from regular BI Products, CBA and ACE is now featured.
Marketplace: https://marketplace.visualstudio.com/items?itemName=Armitxes.sqf
๐
https://www.youtube.com/watch?v=R4Q79bpeA10 and slowly integrating the debugger (credit to dedmen) further and further
if anybody is interested in testing, feel free to ask how to build the sources yourself ๐ or ask me for some in-dev release
can i have the music track with the code please?
@dawn palm Hooky with Sloane https://www.youtube.com/watch?v=-1qxGGkJ70U
๐
@nocturne basin Copy cat
it is callen competition @woeful cliff
not to mention that i started a week after my last contact try (roughly a month ago) on this properly as IDE for ArmA
@nocturne basin You couldn't at least made the name original?
why should i?
my ui editor was named ArmA-UI-Editor
the studio is named ArmA.Studio
could also call it ArmA.IDE ... but that is a horrible namespace name in c#
let the better arma studio maker win ... honestly i would like to use something like that. I was disappoinent (no offend) @woeful cliff that there was no news coming though about your stuff. i looked into the videos on your channel often, as i was hoping to see a new version ๐ฆ
Soooo @nocturne basin if you do something please stick to it to the end
Well, at least it removes the pressure from my shoulder, not having to focus on a public release anymore
not to note that ...
What? Rephrase
@elfin oxide you already can get a WIP build but it is currently still lacking some important features
alpha release will be as soon as the base features are inside
a week or two maybe
youre IDE was in fact: dead
nobody heared anything from you
Is Valve talking about Half Life 3?
Allrighty @nocturne basin will have a look until a apha release
i guess battleye disabled right ๐ ?
better you do ๐
still will contact him if it somehow is possible to tell battleeye to just kick instead of ban when somebody forgot to disable
Someone once said "When you tell people your goals you donโt achieve them"
if you play around with memory directly from arma BE will ban you for mem hacking for sure
if you have got a dll that handles the exchanges and memory stuff maybe he can whitelist that or at least be will prevent it from beeing executed, as it is not whitelisted
im not too far into that, because Bastian refuses to whitelist any of my extensions, even though he know they do not contain anything harmful. So i dont know what is possible
If you're debugging the game, you shouldn't be in a public server anyway. And if you need to debug a private multiplayer session, disable BattlEye. Whitelisting it is not really important
Would it be possible to somehow detect BE being run (process name?) and refuse to attach to arma in that case?
As a safety check
the studio can detect arma3battleye.exe for sure in the process list
that would be a nice solution to prevent idiots from loosing their arma accounts
lazy idiots like me ๐
Well, if they were smart enough to install an IDE for scripting, you'd think they'd be smart enough to not get banned
People make mistakes. Always. No exceptions.
I would not agree with that. I often do alot of dumb things when i did not get too much sleep or think scripting while beeing drunk makes creative
@elfin oxide could you give some details about those extensions that bastian refises to whitelist?
I'm asking because I'm mainly interested in knowing how do they relate to Intercept
A3Log
various ones for my server, including macas radio dll etc
all not harming, included with their source
Time to format C:
however something like killzonekids make_file dll is whitelisted
even worse some dlls that allowed injections are allowed right now
Soooo... it's more of a lottery, actually?
Yes
ACE guys get their stuff whitelisted in minutes
if Basitan likes people he will take the time to have a look or even not that and whitelist it
if he does not know him / her and or does not want to read more than 10 describing words about it, forget about a whitelisting
Time to recruit myself to BattlEye then ๐
At least BattlEye isn't as bad as EasyAntiCheat
EAC will ban for the ability to cheat, not just cheating itself
Oh it is not? well ok its capable of copying and stealing company data from drives it was not alllowed to go into yes ...
and the world of bypassing it is so large, it got at least two dedicated forums build around it
BE was fine for a long time, and is better then nothing and better than some other anticheats, but by far not one of the good ones
@elfin oxide At least it won't ban you for just having tools that can be used for cheating
unlike EAC
sorry but that is not correct. BE bans you if you have got cheatengine process open, or a process that is called cheatengine. yes BE searches the process table string based for keywords
No. I've confirmed that with them. They don't ban for running tools
also there have been alot false posivtes around installed but not used programms as well
In all honesty, why would you have a process named CheatEngine running while you're connected to a BE-protected server?
@karmic niche I use CE a lot for debugging. With several monitors I can't gurantee that I remember to close it every single time, which means it may still be running in the background
I specifically asked the support team whether they ban for having Cheat Engine running in the background, but not attached to the game.
No, we don't issue bans for that.
Your BattlEye Support Team```
MulleDK19: Well, if they were smart enough to install an IDE for scripting, you'd think they'd be smart enough to not get banned
๐
i get your points, but still I can say BE could be much better at what it is doing right now. Also i think this is not the place to discuss further ...
Your BattlEye Support Team -> best one man team ever
It's ok, I understand. I was just teasing you with your quote ๐
EAC won't even respond to support requests of any nature
I always restart my system before playing an EAC game. Just in-game any of my tools are running. And I've got a few http://link.to.my.server.treesoft.dk/2017-03-15_00-30-17.png
Ah, that good old Ida 6.8 ๐
IDA 6.9*
Chapeau bas!
Best buy ever
So glad I'm a billionaire
Can't wait for https://solidarity.re/ to get off their asses
actually, get on their asses
Meh, they said they were starting a closed beta on January IIRC. And... nothing
not closed
private
Oh man, it's so good to have some f'ing disk space again http://link.to.my.server.treesoft.dk/2017-03-15_00-39-04.png
But they "unveiled" the software at RECON 2016. At that pace, I'm not even sure they will release anything by the time RECON 2017 starts ๐
Wouldn't it just be awesome when it does come out, and it's revealed it's not free?
Not everyone likes my choice of coding font http://i.imgur.com/RYawOdH.png
But having used Consolas for years, I've found it a nice change. It's a lot less depressing to code in
I will disable the whole Debugger backend when BE is loaded. But. BE might still let the Debugger dll Load... Have to test that. And if BE later sees that a dll considered a hack is loaded. It will ban. Even if that dll is not doing anything.
@woeful cliff that font isn't too bad to be honest ๐
couldn't hurt if it would be monospaced though ^^
https://www.youtube.com/watch?v=pd-2WQzoG48 although it's very much WIP it is already very usable
very nice ๐
still very WIP @hallow rapids
but not much is needed before some alpha release
unfortunately I have plenty of time since I'm on Linux ๐
Nice work, guys!
I believe in options http://i.imgur.com/OzfRUhF.png
whoever made that dialog, you're trying to show too much information at the same time
IMO, just a little feedback ^^
If anyone manages to get linux extension to work on latest arma3server linux.
Please give me a shout. Updated an extension with both exports, no luck
{
void RVExtension(char *output, int outputSize, const char *function);
int RVExtensionArgs(char *output, int outputSize, const char *function, const char **args, int argCnt);
};
void RVExtension(char *output, int outputSize, const char *function) {
strncpy(output, "Please use the Array Input Variant", outputSize--);
}
int RVExtensionArgs(char *output, int outputSize, const char *function, const char **args, int argCnt) {
return 1337;
}```
in case someone needs it
Workaround for linux extensions in server_linux
arma3p has been updated to account for released tanoa content. Credit: Scott UK
both free and subscriber have the latest version.
Thanks Scott โค
It needed someone who cared to call this mod something original like 'tanoa'. Instead you folks can wonder what an 'expansion' mod is. They've probably broken the Keys and Mission folders that should also be in there, or forgotten how to use them.
for map makers you still need tanoa_map_objects.pbo
Can you like stop updating the obsfucation, its just starting to get annoying now.
Its so fucking dumb anyway.
the dep3d component of the dll has been updated to work considerably faster in checking for errors. Especially for map making. dep3d +Fx will now fix points flag errors in binarised p3ds.
Truely amazing.
How much cash did they shove in your mouth before you wrote the obsfucation?
@dawn palm what kind of point flag errors?
the old arma1 'obsolete flags' Tim.
from the ushort points table.
Kju;s put a lot of work into re-creating ifa for arma3, and those 'flags' were causing issues when trying to upgrade.
i c
@dawn palm "failed to create P:\expansions.txt"
urrrrrrrgh
happened at the very end, I assume before extracting Tanoa stuff
murphy bit me
noob =}
my bad.
fixed at version 1.38
available in dev heaven free tools OR
standard mikeroupdater
i can't get thru to the Maverick server at moment.
Avira is crying to me about Virus again (arma3p.138 blablabla)
ahhhh, when u install. that's different
some virus checkers are a little too enthusiastic. i have same on Kapersky
@dawn palm I thought i found a bug, then i was like, let me check if mikero updated, you did, so i downloaded it, and the bug went away ๐ โค
(i wonder, is anyone still using Norton AV crap?)
thanks @dawn palm
well, embarrisnhgly, the thanks are from me for finding an 'undocmented feature'
i also stopped extracting 97 squillion gigabytes of useless dubbing.pbo's
thx, i was just about to mention that, if this is rly needed.
same for the Video pbo
(where the f is that damn thing)
"missions_f_epa_video" in A3\addons
illl add it some other time. the majors (dubbing* and missions*) are out of the way.
Or at least optional?
agreed. you get to choose at start of a3p
like a Q in the end:
"You wanna waste some more additional Space with dubbing and Missions? Y / N"
the Q has already been asked at top of file.
rly? Okay, i must have ignored that.
enter enter enter GO!
@dawn palm what about skipping layers from Altis and Tanoa at least?
+stratis
what about skipping
nope, suddenly there's no end to it with a shopping list a mile long of 'unnecessary' pbos. What's already done is more than reasonable to improve the speed to something acceptable.
yours is a good idea kju, but there's no end to it.
very true, if people dont want/need extra stuff on their hdd I guess they can just remove them manually
well these add ten of thousands of useless files
why skip dubbing and not layers - makes no sense
so edit the bat file to do so.
@wind elm <insert link in between these for no preview>
Thx @fallen stone
@hallow rapids Nah, i personaly just don't like the previews, they toooo big.
just in case, meant url shorteners not memes ^^
@icy urchin Sorry but already have a bf :P
eh
intriguing ๐ค
This is pretty useful: https://www.youtube.com/watch?v=ofoI7p7alJs
๐
pretty cool ๐
Well if it gets ever released yes ...
before sqf gets dropped
@woeful cliff looking good man
@smoky halo it seems that the publisher doesn't detect the bitness of .NET dlls correctly
we have the _x64 suffix but the workshop is still reporting it as 64-bit incompatible
@hallow rapids could you please send me the file?
@hallow rapids I'll release an updated Publisher in a minute, the portion of code that sets the flags in entirely missing
It was in one of the dev branch publisher releases btw
sweet, I'll pass it on to our steam dude ๐
https://cdn.discordapp.com/attachments/282160388802609153/293489853637722112/unknown.png
release expected next week
changes might come, but they are mostly logistic by now
also some cosmetic changes are yet to be implemented ๐
((variables view currently looks & feels horrible))
just like you โค
(tbh, they look okay)
Maybe another Color, instead of black (i am used to blue)
@wide cedar I tried armake the other day to convert png to paa, used this cmd line: ```
armake_w64 img2paa -t DXT1 filename.png filename.paa
when I load the DXT1 converted paa file with texview2 it is very dark, looks nothing like original png. is that texview2 issue or am I missing something?
That's a known issue: https://github.com/KoffeinFlummi/armake/issues/32
That seems to be an issue with the stb_dxt encoder. I was thinking about maybe just applying a little colour correction, since i don't want to write another dxt encoder myself
ah darn, ok thanks for the info.
No need to keep that Wiki bookmark handy http://link.to.my.computer.treesoft.dk/temp/ShareX/2017-03-21_05-14-15.mp4
neat
Alright, I knew I hadn't committed for a while, but dayum, 322 changes to commit
you like to walk on the edge eh?
Living a dangerous life
As much as I love the new C# 7 features, I fucking hate they didn't add Edit & Continue support for them
And it's not just the statements that contain the features you can't edit, no it's the entire method they're used in
XAML Edit and Continue is handy though
@pearl beacon Oh, yea
but that's a VS17 feature ๐
Although, it's kinda half finished
Like sometimes you have to remove an element then readd it, before it'll accept the change
haven't used it much
heh
I have to make a basic text editor for a uni project, that's the only reason I know anything about it
nice, congrats ๐
@woeful cliff would you mind adding a little context please (meaningful title or short description). ty
@vague shard uh?
to your demo videos
well it appears that bis have moved goalposts again:
- it looks like 3rd party ebos can no longer be signed.
- it looks like bis either forgot, or deliberately broke, 'no prefix' pbos
can anyone else confirm either of these?
what is 3rd party ebo? (I know what ebo is but are you referring to pboroject obsfuscation as 'ebo'?)
nope. people use 3rd party encyrption tools to create genuine ebos
cunter ๐
I deliberately crippled pboProject's ability to do same (greyed out) because i didn't trust bis enough.
wait what, you removed obfuscation?
read carefully. if you weren't aware of the greyed out check box, you're missing nothing.
crippled, greyed out... ok, read carefully. still coming to same conclusion "you removed obfuscation". but I guess I'm wrong then heh.
i guess you are.
yep no problem, I dont do stolen content Life mods so I have nothing to obfuscate ๐
well if you're able to confurm either of above, that would be helpful.
Nice if they fucked ebos.
@pliant lynx mikero disabled the ability to create encrypted pbos with pboProject
Obfuscated pbos can still be created
huh?
ok(?)
You asked that
whats the difference between encryption and obfuscation then?
It's something completely different
I only seen myself and have heard people talk about obfuscation, never even heard of Mikero Tools Encryption before now.
no, can you please explain it to me? SIGH of course I know <insert rolling eyes smiley here>
Your text sounded pretty serious
And given the average knowledge here I didn't doubt it
Yes
It really sounded like you didn't know what encryption was lol
Basically ebos are pbos but encrypted with a key
That is hardcoded into the game
Some months ago someone dumped the key from the engine and thus was able to create ebos
my confusion comes from mikero tools obfuscation vs mikero tools encryption.
yes youtube whisky drinker UnCunter guy
Why the confusion?
well ok correction again, UnCunter was to unpack ebo's but I heard he (or someone?) released the cunter to create ebo's.
why? like I said before your words I never even heard of mikero tools encryption, only obfuscation tick box in the pboproject GUI.
It's been a thing for some time now ^^
Bohemia is weird though, they don't give the tools to their community to create encrypted content
Yet they make it themselves
*seld
God damn it
Smartphone keyboard
so if encryption == ebo, then obfuscation == ?
just download the latest set of subscriber tools snake.
oh ok so is obfuscation really the OFP era garbling the pbo header so normal pbo tools cant open it?