#arma3_tools
1 messages Β· Page 25 of 1
Nah I need it automated as part of a tool I'm writing
Use the ingame config browser
Yeah but I meant from outside the game
But no not really. If you cannot see everything.. you cannot know everything
If you load every single config. then you have all the info. If you don't. then you miss whatever was in the configs that you didn't load
which reminds me that sqfvm requires some pbo parsing
Well that's bad news... But thanks anyways
configs*
quite a lot of stuff still to implement π€·
but as soon as pbo parsing more or less hits the fan, one could do what you want with sqfvm @sick verge
Raven didn't even say what he wants tho π€
π€· but it would be
I'd say the first CfgFunctions>>A3 definition is probably in functions_f.pbo's config. Did you check that? just always load that one
Let me have a look
My goal is to automatically list all declared functions based on the PBO's content in order to not have a hard-coded list that needs manual updates
hah π so i was right π
I always thought yes but I just stumbled upon a _bla >> "cfgfunctions" statement. So is it the >> operator that is being case-insensitive or configs in general
some entries are. some are not.
Some classnames are. Some are not.
the >> operator.. well.. hard to explain actually
config classname lookups are case insensitive
but the name is translated in same case into a script or a weapon classname. So any script might treat it as case sensitive if it wants to
some engine parts also treat some things as case-sensitive
Basically my question is would
class CfgFunctions
{
class a3
{
...
};
};```
also chzange the tag to "BIS"?
Okay thx
Can the config.bin be located in an arbitrary sub-dir of the addon? Or does it have to be located directly in the addons directory?
Because to me it seems that TFAR only has it config files in further sub-dirs π€
BI sometimes includes one sqf into another
did you check this is not the case here? (didnt read the whole convo)
That's actually a new topic xD
Or was that a comment on the whole config-stuff @vague shard ?
on A3 vs BIS tag
its probably not the case here, but just to make you aware of some weird stuff BI does
Ah okay. No I didn't check but the AIO config seemed to have proven that the internal config structure is responsible for that
Yeah they don't make their community's life easy figuring their stuff out
config can be in any folder level
there has to be one in the root though
that said might be just a tools standard
not sure what the engine actually requires
you should just scan from the namespace/prefix set in the header all subfolders
I believe it has to be in the addons folder... I thought the GitHub structure was a reflection on TFARs PBO structure but it is not. That's what confused me
In the PBO it does have a config.bin in addons
You can always execute utils 2 in debug console and then type cfgFunctions it will show you all functions and where they were defined from
@sick verge addons folder has no relation to configs itself
the game scans dta and addons folders from various locations for pbos
the pbos itself are just a container with the header containing the prefix/namespace to build the virtual data system
Wait... I got confused. What I meant to say was that the config.bin has to be in the root of the PBO β
@smoky halo that's good to know. Never heard of that before π‘
@sick verge configs can be in any subfolder
Without being included in the config.bin in the root of the PBO? @glossy inlet
doesn't matter
all config's in all directories are loaded
there doesn't have to be one in the root
So any file named config.bin will be loaded... Interesting. Look like I have to change some code xD
Thanks
@sick verge What can I say, it is on wiki https://community.bistudio.com/wiki/Arma_3_Utilities
Theo, do you have a parser for A2S_RULES that is proven to be working? You seemed to be knowledgeable in that area.
I'm trying to check 193.30.120.58:2333 and the returned rules contain the following keys:
[b'\x01\x01', b'\x01\x02', b'\x02\x02'] <- Note: that's python notation so the b'...' part is normal
So it looks as if there were two sets of rules (WTF?!?), one containing 1 chunk and another one containing 2 chunks. How am I supposed to parse those? I'm asking especially that this single-chunk "set" differs from the two-chunk "set" concatenated. π
@tribal mist
I also found another server with such a strange response: 139.99.144.72:2303 (3 and 4 sets of chunks)
@karmic niche I have an implementation that I wrote in python3 actually, for a discord bot. It seems to work with that first server, but not the second. Going to look at that myself in a second here. But that's as close to "proven working" as I can get.
Before I send this link though, I want to say, that I am by no means a professional python programmer, so don't hate me for my (hopefully not very) bad code.
https://code.clearbackblast.com/Theowningone/voss/blob/discord/QueryProtocol/a2sProtocol.py That repo should be public
The comments reflect my feelings attempting to implement it
Wow, thanks! I wasn't hoping for such a quick answer π
I was actually just going to sleep and thought I'd send you a message so that you could reply when you'd have time.
I'll see what are the differences in the implementation between your code and (a modified) python-valve that I'm currently using
Sounds like a plan, let me know if you have any questions
The comments reflect my feelings attempting to implement it
You mean like this one: "[{}:{}] Unpacking and Assembling Rules for Arma3, fuck me."? π
That's definitely one
any one have an active net reactor license? PM pls
The timestamp in meta.cpp from what I've read its suppose to be UNIX. But its way too long to be seconds. What is the value format actually?
Referencing
/// Version of meta.cpp content
protocol = 1;
/// Steam Workshop item id
publishedid = 123456790;
/// Steam Workshop item name
name = "Splendid mod";
/// Time of last update of the Steam Workshop Item (in Unix time format)
timestamp = 9876432101234567890;
/// Mod hash that is send by the server to the client instead of calculated hash)
hashOverride = 1234567890;
It's smaller than even microseconds or something
https://www.epochconverter.com/ you can use that.
Assuming that this timestamp is in microseconds (1/1,000,000 second):
GMT: Thursday, 21. December 2282 13:21:41.235
π€ mhhh
Considering we haven't had an Unix time of 9*****.. in any manner for well over 10 years, something seems a miss :)
Is that example correct or just random?
Given that it's almost 9->0 0->9 π
"Splendid mod" and hashOverride = 1234567890 makes me thing this is just a example with random numbers
π
You think? π€
@silver glade it's unix timestamp, be aware that not all workshop items contains a meta.cpp file
@scenic canopy I get that much. What I'm trying to figure out is what is going on with the timestamp? There are way too many digits. If it was seconds it would be 1538039680 if it was updated right now.
It doesn't matter if it is microseconds the numbers are still off
Look at a real one. Instead of a example with completely made up numbers
I looked at over 100 ones
let me run a script and pull the pattern
5248421769875578907
5248413287929990474
5248183655353538077
5247814371652315063
5248386364348507668
5247956401437841987
5248364442738340992
5248146497520065743
5248367058127013055
5247940541710681134
5248421804591128365
5248300592720839376
There is a very short sample
Those mods aren't 10-year-old, right? :)
Because 5248364442738340992 >> 32 is 1221929327 (September 20, 2008)
[that was just a guess, of course, and it doesn't seem to be correct]
ha
as I said previously, the meta.cpp doesn't exist for all mods
I use the acf file for my web manager
and the acf one uses same timestamps as the web api
any one have an active net reactor license? PM pls
can you stop spamming that question @slim solar ?
besides the fact that if somebody would have, he would already have PMed you, you also did not disclosed why you want to talk to somebody who actually has one
no, i can't stop spamming that question , because i am not spamming it
only put it twice
Maybe i don't say why i need one, but i say if anyone have one, pm me its easy
Maybe anyone read the first time because, hour is not correct to put it
only put it twice
https://en.wikipedia.org/wiki/Spamming
Spamming is the use of messaging systems to send an unsolicited message (spam), especially advertising, as well as sending messages repeatedly on the same site
Today at 5:46 PM
Yesterday at 6:33 PM
"not spamming"
and the worst part is you post a "need stuff, PN me if you got stuff" message
Is there a way to use wildcards with MoveObject
for file type yes. check the readme
Karmanor is a continuous integration system for ArmA 3 mods developed on GitHub
https://github.com/ArmaAchilles/Karmanor
looks neat. unfortunately no docu
And judging by the repo no source code either :P
(One 100 lines of code python file)
depending on what you need Travis CI, AppVeyor, CircleCI etc is good enough
even upload to steam workshop is possible with most common CI tools
I'm using AppVeyor. Just calling mikeros tools via cmdline and done.
we have our own steam workshop uploader for usage with games that don't provide their own tools such as Squad etc
but BIS steam publisher works good from CLI
if you don't want to run a steam client, steamcmd works good too
just create a dummy vdf with required paths and it works just fine
anyone using CI with gitlab and multiple git repositories or everyone on github (and single repo) here?
gitlab, github, phabricator svn, custom svn so far π
one repo or multiple?
the custom svn does multiple checkouts although from one repo
so you do a clean build for each commit? or just with nightly build?
each checkout path is reverted and update to latest commit
gradle checks if path is changed before building
whats the most simple CI? all these systems are quite complex and feature/configuration "bloated" (travis ci and gitlab seem no go π¦ )
our requirements are:
- build on commit (or low cycle time for check)
- optional: nightly builds
- working with gitlab
- with multiple git repositories
- our server is windows 7 in a VM
- execute batch files to binarize or pack to pbo, upload to steam (via steamCMD)
- optional: upload to mega/google drive
forgot:
- private repos
- non open source
travis only works with github
currently looking into jenkins but getting a headache from the billion options
that's all our jenkins config for our JSRS compat mod
I should move that steam workshop tool to a env variable π
builds all commits and PRs
only publishes to steam for master branch
the rest can be downloaded as artifacts if someone wants to test locally
on jenkins side the only config is git credentials + the SFP org is added with those credentials
same for svn etc but svn credentials and specific repo url instead of catch all
thanks. looks simple indeed. however you use github and just one repo here, right?
same for svn
but that jenkinsfile is hosted inside the private repo
and some loops for the extra svn checkouts
you can see build output for it here, http://jenkins.anrop.se/blue/organizations/jenkins/sfp/detail/sfp/1653/pipeline/24
so only FFP mod was changed, the rest are ignored
gradlew build_mod_ffp is the build step
everything before is checkout of a couple of paths
and everything after is upload to steam, saving artifacts and discord hook
so you set up a separate job for each to avoid concurreny issues? (and not multi project)
so that's 13 mods with around 3 - 20 PBOs each
separate jobs for concurrency π
so with multiple build slaves we can build all mods concurrently
arma tools/mikero tools/armake not having issues with that? (temp folder or else)
each build gets a unique folder from jenkins automatically
built mods and pbos are managed with config files in the repo
so no configuration in jenkins is needed
when creating a new mod or pbo, the config can be updated within the same commit
i guess i will try a more simple setup first:
- execute job every hour/or once as nightly build
- run batch file to update all local git repos
- run batch file to pack all repos to pbo
- run batch file to initiate upload to workshop
saves me the gitlab plugin auth stuff for commit hook, setting up for all the 10+ projects/repos individually
do you have a manual build option via website or sth? (or just within local jenkins interface)
jenkins ui
gitlab and github uses webhooks
svn is being polled every 15 minute for changes
or something like that π
pro tip is being able to run all stuff locally
helps a lot with troubleshooting and development
are you guys using a plugin/bot to pipe CI reports to discord?
ie
https://github.com/KocproZ/jenkins-discord
https://github.com/jon-skocik/Jenkins-Bot (no docu)
https://github.com/lltcggie/discord-plugin
https://github.com/n9iels/jenkins-discord-bot
A post-build plugin that sends the build status to a Discord channel. - KocproZ/jenkins-discord
Discord Bot for Jenkins repositories. Contribute to jon-skocik/Jenkins-Bot development by creating an account on GitHub.
You just need to make a POST req. to the webhook URI, you can do that with anything π
Some jenkins plug-in yes, my PR for pipeline support was accepted
Donβt remember which
I can check
@fallen stone the point is what are useful approaches
just to send data/information is not be itself meaningful or useful
those doing CI - do you do anything else besides build and distribute?
like -autotest, lint checking configs, checking for missing files, performance tests or other things
Just build and distribute here, although I'd like to start linting things if I could keep track of which linting tools were up to date and had active development
(assuming we're talking building arma addons)
rapify -L and makePbo -G i use so far
for sqf this should work: https://forums.bohemia.net/forums/topic/194417-sqflint-syntax-error-checker-cli/
autotest all models in game, pboproject checks for missing file and syntax, sqflinting
haven't added rpt parsing for the autotest yet for issues
did some work on fps measurements for islands too
so you get a heatmap of troublesome areas
oh yeah, screenshoting of objects placed on roads with its coordinates as image name
pretty neat π
do you run all these each build/nightly build? the last two i would imagine not or?
nightly
Is there some documentation on the Arma-Preprocessor? I always thought that it would simply use a normal C-preprocessor but this doesn't seem to be the case π€
besides the biki. no
And by documentation I am referring to a description on how it expands macros and stuff like that... Not how to use it
It's "mostly" a normal C-Processor.. Just with some "minor" recessions
Great ^^
Take it literally
I think Armake's one is quite good. If you wanna look at code
Don't use any c preprocessor implementations (gcc's) etc, it'll shit the bed with the commas and a few others bits n bobs
Yeah I just tried the gcc-preprocessor but it doesn't even recognize relative file-paths referencing the parent dir ("..\stuff")
What did you expect it to do?
That's weird.. Maybe it wants ../ instead of \ ?
Including from parent directory should work. Atleast the microsoft preprocessor can do that
Ah you're testing includes
As an example... My actual goal is being able to preprocess SQF and config files
I always wanted to add that to armake. It would be really easy to do.. But the C code is just giving me a headache everytime I look at it
I'm not sure if gcc will handle \ as dedmen said
their preprocessor is a custom one and not a very sophisticated one
And I thought I could rely on an existsing C-Preprocessor-Implementation for that... Buuuut that idea got busted
But the C code is just giving me a headache everytime I look at it
Yeah same here
The engine preprocessor comes across far too permissive, which conflicts heavily with normal implementations like cpp
I think something like that is valid for BI preprocessor: #include<blablabl
notice the missing closing >
Arma auto-ends strings at EOF. So if there's EOF after that then probably yeah
If one was to implement a preprocessor what features would it need?
- resolving includes
- defining/undefining macros
- #ifdef-statements
- macro expansion
Anything else?
everything on the preprocessor biki page
there are magic macros like __LINE and such
true.. forgot about those
I tried preprocessing the CBA macros some time back whilst writing something, cpp had a field day with things of the form
#define MACRO(..) MACRO2(format [..., .., .., ..])
Was quite amusing
__EXEC, __EVAL
And comments obiously π
If you want to completely want to replace the preprocessor then you also want placing of #line directives. And you might wanna replicate the line number bug too in case someone relies on it..
Generally someone always relies on something
I want the preprocessing mostly as a preparation for any performed linting... So no need to reproduce bugs ^^
Can a macro be used above it's definition? Like so:
MY_MACRO
#define MY_MACRO hint "test"
no
Okay that makes things a little easier
also macros inside '' are resolved. But not inside ""
That one is probably not documented on biki
Indeed it's not documented...
And I guess macros are not matched as whole words only? So no substring-replacements
correct. whole word only
Thanks π
where - seperates different words. But _ doesn't.. Or was it the other way around? π€
Also you cannot have commas in macro arguments unless the comma seperates different arguments
That's why CBA has ARR_X macros to add the commas back
Anybody here interested in creating some console based rpg framework (and later game)?
Will be written in c
Just Hobby project π€«
This VBS script notifies when Steam Workshop mod is updated. Windows only.
https://gist.github.com/Dystopian/17cf28480887cbe586b443574f751d94
Β
...
I should probably release my discord bot for that π
yep you should π
@nocturne basin You might find more in #creators_recruiting π€·
@wind coral not looking for actual ppl π just Was some Γffner mostly
@nocturne basin You looking for code monkeys then?
Nah
Just ppl looking for a Hobby π€·ββοΈ
Hmm.
@smoky halo thank you
You don't happen to also have the code for TryExpandMacro(in,*out) as well?
so just quick heads-up for those interested - we ended up using https://github.com/KocproZ/jenkins-discord which results in: https://i.imgur.com/RBlbXb4.jpg
however for more info we are to use a separate git repo with its notifications and such (thanks to zakant for the idea). far easier to set up and convenient than more traditional CI means
you can change the text sent
we send links to download the built mod etc
and to link the entire log
well we push to separate Steam branch directly. so no download artefacts
was conidering it at first for logs and such, but as said using a git repo for that is actually far better imo
we dont want to expose the build server via webserver either. it has its benefits/pros but the effort and risks involved dont allow it
well its not our server you see π
is it possible to subscribe to a mod via encoded url?
debugging the workshop page the closest i managed was that JSON code
{
$('action_wait').show();
$('PublishedFileSubscribe').request( {```
starts with
<a onclick="SubscribeItem();" id="SubscribeItemBtn"
then in that function it calls
SendSubscribeItemRequest();
you can deeplink to the native steam client
subscriptions can be made through the steamworks sdk
but that requires a native application
steam://url/CommunityFilePage/497660133
thats a deep link to cup weapons
thank you! thats almost as good and should to the job
As I understand it correctly (from the code T_D has provided) all preprocessor statements have to be at the start of a line (with potential leading whitespace). Therefore code like this:
/*
* My Blockcomment
*/ #define BLA
should be invalid. Is that correct?
yes
but if the comment is removed first
it wont break it
something like if(true) then {} #define lol 123 does not work
Okay, Though as far as I can see from the implementation T_D has given the comments don't get removed in a first round of preprocessing (unless one was to preprocess the file twice)
And right another question on the preprocessor-topic: Does an #undef -statement consume the rest of the line it's standing in (like a #define)? E.g.
#define MY_MACRO
#undef MY_MACRO hint "will this be present in the code?"
all preprocessor statements have to be at the start of a line (with potential leading whitespace)
Correct
And right another question on the preprocessor-topic: Does an #undef-statement consume the rest of the line it's standing in (like a #define)?
No, anything after the whitespace is read on the next scan, it just cannot be a pre-processor command (therefore your hint will show)
Okay, Though as far as I can see from the implementation T_D has given the comments don't get removed in a first round of preprocessing (unless one was to preprocess the file twice)
They do. Skip refers to them not being written to the out stream (with the exception of new lines, they still are)
Yeah they are being removed but as far as I can tell they aren't removed before the actual preprocessing is done but during the preprocessing leading to preprocessor-statements in the same line as the end of a block-comment to be skipped as there is no newline before them (as this is included in the block-comment)...
Yes, actively removed in the same parse, not prior
π
As a side effect of how they handle that, preprocessor commands after the block comment (on the same line), will be copied to the out stream verbatim, so when ran, it still contains the #define etc, giving you something like invalid num in expr
btw. spaces etc. in front of macros are OK
I.e, it does not differentiate between that case, and the case you write hint 'blah blah', the latter is just not a syntax error post preproc
I figured. But thanks anyway
Are all newlines in the file kept during preprocessing or only those in comments and outside of preprocessor-statements? (Specifically I am referring to NLs inside #defines or in #ifdef-blocks, etc.)
You mean
#define X Y\
Z
```?
(If so, those newlines also remain, goes for everything apart from ifdef blocks*, I think)
Yes exactly
So the block in an ifdef that is not being expanded doesn't account for any newlines either?
Almost
if the ifdef block isn't expanded, it'll account for one new line
But all the newlines in an expanded block, will be present
That includes preprocessor lines aswell, etc
#ifdef TEST // first
// second
#define TEST2 // third
#endif // fourth
it's pretty backwards
These details seem somewhat irrelevant if you want to create a linter though
As long as you preprocess in the same manner as the engine, you'll be fine. Newlines are irrelevant in the output
Make sure you just keep line directives if needed
Alright thank you π
Yeah I know... But while I'm at it I thought I might as well create a preprocessor as close to the original as possible (without having to put in too much work for it)
If the preprocessor removes newlines it should inject a #line macro so that the line numbers of error tracking are correct
Which is bugged if you have a #include after a multiline comment at the start of the file Β―_(γ)_/Β―
π
Is there a way for Object Builder to automatically remove Named Properties and new ones via script?
@swift apex can do via o2script or dep3d by mikero
never herd of 02script
its basically sqf for O2/OB
hello guys, i used DSUtils to make a .bikey for my mod pack, when i join my server get disconnected after 10 seconds with the message "session lost" i dont know why
you can test your key and sign files locally with -checkSignatures startup cmd
that aside usually lack of admin permissions or sth else wrong with windows leads to faulty keys
where can i find the startup cmd
for anyone using macOS and wants an easier way to use armake, https://github.com/Dahlgren/homebrew-armake
whats the situation with the virtual P drive? is this available for windows now (without having to compile sth yourself/etc) - simple install and go type?
yeah
Well...
The latest published build works I guess.
nvm.. @scenic canopy never pushed the latest build
and still didn't accept my pull requests π
published build? π
@scenic canopy all our hopes and prayers are with you πΏ
π
for those of you who may not know this, an SDK exists for my dll. It is free, and is compatible with the free version of my tools (and always will be). You can rap/derap, make/extractpbo pbo in about ten lines of dos console code. Gui wrappers are obviously a lot more than that.
Source code examples are provided for all bis file formats and how to access them. The SDK, like the dll, has existed for nearly 2 decades. That might give you some idea of both the stability, and maturity of the product since the API functions haven't changed from the time of CWC demo. and will always remain backward compatible. That's another garantee.
Oh, and it's also penguin friendly π
A single, visual basic wrapper example is also provided. Solely for the purpose of understanding the rules to create wrappers for java. php, jason, dotNet, or poison of choice.
@dawn palm (asking the dump question) where to find the docu and sample for that? via DM to you or otherwise?
ummm i released it to.... hmmm let me check
mikero_sdk.6.88.rar & sdk_samples.rar (in subscriber) not sure about free, haven't checked (yet)
ah, they're in free, but i forgot to publish them.
fixed
Is there a way to pick faces that is facing one side of the plane?
for instance, I'm UV Mapping the front of a vehicle, and I don't want the faces/points facing upwards of the front of the vehicle
cause uv mapping will distort it
I hope you are not doing it in Object Builder
as the UV mapping tools there are very basic
and imo should not be used
since youve talked about this on #arma3_model best continue there
how would one go about using 02 script for object builder? Do I have to write a script from scratch?
there are some samples in the Object Builder directory
For those who remember 'binpbo' from arma2 (the older addon builder) : it was written in o2script. Same for pboProject in it's infancy.
02script is the sqs programming language with extra verbs to create (and respond to) dialog panels
The comref for 02script is reasonably accurate. some, few commands ,don't actually work as advertised. The only variation in code syntax is the @ operator for arrays which replace the more usual var select 1 2 3 etc
is there some way to get stats on Tanoa usage, or DLC ownership?
@vague shard you're asking about your own players or are you asking bohemia representatives about global stats now?
Because if it's about your own players, then AFAIR we're checking for the existence of some specific classes and if so, we're opening yes.html or no.html with htmlLoad and then just grep the web server's logs. Talk about poor man's statistics π
@dusky dune
overall A3 player stats and ownernship
like did APEX sell well, did the Tanoa exclusive approach work out or not
and is Tanoa a good, working terrain for players, or does it actually have issues with performance, AI and PvP playability
It definitely has worse performance than Altis, anywhere up to 50% less fps at its worst and unfortunately it is in the sort of places that are most problematic, ie inside the towns. It does also have AI issues with spotting specifically, the game was rebalanced to have very short spotting distances of sub 300m all the time for infantry to stop crazy spotting and if you mod it back to working in open terrain you can't actually fix it properly because the range adjustable in the AI spotting skill is only 100m or so, so you choose either 200-300 or 600-700 but you can't have 200-700. This has degraded the value of cf_bai that adjusts the spotting skill based on jungle density to try and rebalance the game. We have a video up on the performance issues where we compared altis and Tanoa performance, I haven't done one on spotting yet, the driving and vanilla spotting will come first.
atm one Tanoa in top 50 servers, 7 more in top 100 - almost all LIFE, one Wasteland, two exile
AFAIR 75-80% of our public players have Tanoa. Those 20% were enough to prevent games on that island due to constant bitching of the guys who were kicked out of the server each time they tried to join
@dawn palm any idea how to fix this? I can't find an ref to the issue anywhere else online.
Cheers, just reinstalled all tools and it worked.
Dahlgen is right btw. For general information, that kind of error indicates a mismatch between an older version of an exe and the new dll it is trying to attach to. It can always be 'fixed' by using the maverick updater and ensuring any files listed in red are updated.
While I do try at all times to maintain compatibilty, that is only true when the exe itself has no error in the first place. The above indicates a fix was required in the exe itself.
Thanks both, all good now. Maverick tool helped. As always thanks for the great tools @dawn palm
Is there a convenient way of calling a dll from Arma on a Linux machine?
run Arma in wine
Nah that's not really an option because of the performance
you can't just run a windows library on linux. As you don't have a windows kernel on linux
You need some wrapper that wraps everything. Which wine does
What are you trying to do?
use sqf-vm
There's a framework (CLib) that I'd like to use on a Linux server but this framework uses C# extensions. Those should be runnable via dot net core or mono but I was told Arma only supports .so files on Linux
soonβ’ with PreProcessor support π€·
My thought was that I could write wrappers that simply redirect the calls to the library but I wanted to know I'd there was a better way
ohh... btw. if somebody is bored: https://github.com/SQFvm/vm/pull/31 could use some feedback
mostly on ... well ... stuff i missed
the whole code itself is a mess actually π€¦
ohh ... also, if somebody could tell me how i enable c++ 17 features via cmake i would be very thankfull ... set(CMAKE_CXX_STANDARD 17) is somewhat not the trick one needs to do (internet lied to me)
look at intercept's cmake files for c++17
@sick verge maybe you can make a .so wrapper that calls the C# .dll
literally is 1:1 the same π¦
wut? no linux support?
That part I linked only works if you use Visual Studio with the MSVC build tool, not Ninja.
Yes linux support.
https://stackoverflow.com/questions/44960715/how-to-enable-stdc17-in-vs2017-with-cmake that might work better
Yeah that stuff doesn't work
how the hell am im supposed to enable c++17 then?! https://travis-ci.org/SQFvm/vm/jobs/446249585
gcc refuses to compile π¦ optional not found
That flag works on GCC/Clang afaik. But not on MSVC
as visible, it does not with gcc
Atleast I don't have to do any work for it to work with gcc
which GCC version?
Maybe your GCC version is just too old and doesn't support it?
travis seems to get 4.8.4
Travis runs Ubuntu -> everything too old π
This thread... C++π
@sick verge as others have said, you could create a native .so extensions that calls your C# library with mono
as long as the C# library can run with mono
@nocturne basin like dedmen said, you can choose GCC version in your .travis.yml, https://docs.travis-ci.com/user/languages/c/#c11c11-and-beyond-and-toolchain-versioning
I think I set that for your vm project?
@scenic canopy ty
already did thx to him :)
it also is now complaining about some different issue https://travis-ci.org/SQFvm/vm/jobs/446257371 which is not fixable by configuration but rather by actually ... well ... fixing that PATH_MAX is not existing π
yes you did
ohh ... and clang is also not working ... neither is macos
i am at work right now π€·
:D
well ... the moment i got all of that fixed, i can merge it into master and wooosh
SQF-VM can handle preprocessor input
and syntax checking
and getting CSTs
and debug sqf
and run sqf
i can now call it a "general purpose solution" π
yep
π
I added a PR for the limits issue @nocturne basin
but there are some other issues
what issues?
π
macOS is harder
optional was fixed
I can compile macOS locally
since I'm on macOS 10.14
but travis uses Xcode 10 with macOS 10.13
which lacks some stuff
call to unavailable member function 'value': introduced in macOS 10.14
π€ in worst case, macos will need to get disabled π€·
though... that belongs to the sqfvm discord all i think
does Enfusion/Enscript in DZ SA support callExtension or sth compareable?
not yet
also anyone some insights on their netcode - any better or different?
But we've already seen something to reference functions out of a external library. So it seems like it's planned or already implemented internally
ok thats something else. i would not expect for them to care for beta, would they?
exactly. Currently they implement what they need. Honestly I don't see them ever implementing much more than what they need. They have other things to focus on besides giving us modders nice things to toy around with.
Besides "netcode" they're using SQLLite for DB stuff.
well i would assume DZ SA needs modding on PC to have any chance for a revival
could be they will care mostly about console after 1.0 though
would be a shame as it could act as learning and test bed for arma modders for Enfusion
It already does that even if we don't get extensions. And if we only get what the DayZ devs need on their own.
DayZ is not a modding focused sandbox game as Arma is. For DayZ, the modding is just a nice gimmick
what should be the big different to A3 - how is A3 a modding focused sandbox?
sure DZ lacks AI basically and has only basic vehicle simulation what i heard.
yet with PvP and Enscript can you not do various things?
terrain and model stuff is not much different, is it?
terrain, not for now
some model stuff is based on new fbx etc
the most recent beta report I read also talked about scrapping throwable support until post 1.0
Some new entries in model config and stuff as well. But they stilll use TB and O2 (iirc, I know TB for sure)
Today is going to be quite an important Status Report as we are going to talk about the BETA update and our road towards the end of this year. DayZ is a gritty, authentic, open-world survival horror hybrid-MMO game, in which players follow a single goal: to survive in the har...
go down to Features and improvements planned for BETA/1.0, or originally in 0.62, but moved post 1.0
it includes smokes and stuff as well. They had an interesting way of doing this before. But it was literally, pull the pin. Drop it at your feet, and run.
did you check out the FBX model files?
I think it was in one of the betas/nightlys but now I can't find it
What was?
some FBX files for models and not just p3d
If you have the stress test build downloaded, it should he FBX now.
ah, yes
hm from what i recall they were going for fbx early on. probably moved back to p3d then for the time being
is PBR in DZ SA Enfusion version?
I don't think PBR in specific is in.
I think supporting components are in as a part of the enfusion transition, but that's it.
well even tho FBX is a proprietory format, it's also an international standard for models. It means we won't have to put up with bugs that are never fixed nor sudden change to the internals rendering all the efforts we made making models in the first place are no longer usable. (for the most part, or much more so than now). It also means a far larger range of quality tools we can use that aren't rendered useless when a goalpost moves, because the goalpost can't be fiddled with any more.
SQF-VM now (in github only, no build available) can parseCBA_Hashes addon β€ (PreProcessor is working and all required commands for it are inside as it seems .. though ... could be wrong if it uses alt. syntax somewhere)
someone into C/C++ up to help me decipher the source code for clutter generation in Arma?
while i think to understand the system from BI for the most part, some assistance would be greatly appreciated - if you are up for it, please DM me
i am to write a GUI interface to allow terrain makers to easily create and live tweak their clutter ingame. thanks
most of the (wrp) code is written using templates. it's not conventional c/c++ syntax because of that, and it takes a special kind of instanity to decode them. 50 years now in the game, and i've never used templates due to their awfullness. They are great for rapid development, near impossible to decipher and are loathed by people who have to maintain other people's code.
Thatβs why standard library uses them all over the place
hah , true that.
and for many, they are avoided.
years after their introduction, the battle still rages whther using #defines are a better option.
they are a clever idea, there's no doubt about that, but the syntax to implement them is too awful to contemplate. 70% of all C and C++ code is used in embedded microprocessors and industrial controllers, it is somewhere between rare and never that you will see the >> and << operators.
can you guys recommend a good issue tracking/bug reporting system that the average player/non programmers understand (and is free, or at least one doesnt have to pay for guests/reporters)
gitlab, public github repo, google forms
well our experience is that the average/non programmers finds these too complex (the first two - no experience with google forms)
Just make a custom google form. Ask about all the things you need.
It's not very easy for tracking on your end. But it makes the reporting very easy
This system is a ticket like one http://ticketit.kordy.info/login
This article is a comparison of issue tracking systems that are notable, including bug tracking systems, help desk and service desk issue tracking systems, as well as asset management systems. The comparison includes client-server application, distributed and hosted systems.
@visual gust thanks. looks decent overall. just UI is a bit too functional and lacking colors
the wiki page is not helpful as all the feature "bloat" is secondary. the simplicity of use and good interface design is most important, plus the free guests/reporters
just in case somebody wants to break my preprocessor: https://x39.io/projects?project=SQF-VM i now released a snapshot containing the preprocessor
building gcc from sources ... what a fun task
There are harder things to compile
I think I needed about 20 minutes to get it to build. I had other things that I spent hours on
spent the last 40 minutes finding all requirements until i finally hit the ground
now debugging a shitton of issues ...
i am this close to shredding the server and just swapping to something different then debian as distro
configure: error: uint64_t or int64_t not found
think i got it running now ..
afterwards: cmake β€ -.-
Try building a GCC cross-compiler from sources π
Bonus points if it is a Windows version of gcc
gcc still compiling .. starts to make me worry
maybe i should have started it inside of a screen ..
Oh boy, put that beer away
simple typo @smoky halo
somebody also may better start working on sqfvm!
or i will enrage!

T_T
thinking about introducing "multi-player" currently ..
but that would require the convert method to be properly working
though π€ not really
I'm still waiting for you to implement Enfusionvm working on top of Intercept for Arma 3 π
already asked for some instruction set π€·
somebody yet has to deliver
(i am not really a reverse engineer guy)
Yes you are
i am? did i missed something Oo
all reverse engineering work i ever did left me with no further actual knowledge besides a few "ohh that command struct is this large"
Not that I can help you because I don't own DayZ, but what is it exactly that you need that would require reverse-engineering? Isn't looking at the Enfusion script enough to write a basic VM for it? It doesn't matter how it is implemented underneath, a for loop is always going to work the same, for example.
Or am I the one who is missing something now?
i could use any random VM (eg. the LUA VM) and implement everything in there
but chances are, that would work better then actual enfusion is doing
what i want to do is the same as with SQF-VM, replicate it as good as possible
at first, SQF-VM also just was a "observe and implement" with instructions trying to mirror behavior
but that was working ... more or less okish ... and troublesome
after Dedmen casted magic spells, i realized it is pretty much impossible with the current approach to ever implement all specifics
so the c++ rewrite happened where he helped me out a lot by telling me how things worked
he more or less did the magic stuff and i just replicated everything
thats btw. also why there is the theoretical possibility in SQF-VM to read sqfassembly directly π
Enfusion will have the same problem in the end. Yes, i can start replicating it from what i can observe, but that will not work out in the end as proper representation.
What i thus need is exactly that: What instructions are used in Enfusions VM.
when i got that, i can start building a VM
though ... that is just roughly what is needed π
I had a enfusion vm instruction list about a year back. Like.. Before Enscript was really properly implemented and when we didn't have any real scripts yet.
It probably doesn't match what it is today.. And it's probably on the hard drive that died last christmas.
π€· without such a list i will not be able to start replicating
writing the parser is a matter of minutes nowadays thanks to some other lil project of mine
doesn't really make that much sense yet anyway. As we can't test if the VM matches the real thing, as we don't have the real thing yet really
When I get into "A4" modding I'll rebuild all my knowledge again anyway
indeed ...
though ... would be funny to have a fully fledged medic system ready when it releases π
yeah. Wanted to prep my stuff with DayZ Enscript to have it ready to go later. But it's far to early to already start with that
DayZ for example https://youtu.be/MTQheAvP8SY
Does DayZ enforce battleye being active before you join a Server?
I think to remember that it required BE to start
for now you should implement stuff for sqfvm so you can start to unit test against git commits @glossy inlet πΏ i wait for commands
My fun side project currently is to convert armake to c++.
Already found a bug. And employing vector/string in a specific struct reduced it's size from 4,3MB to 192B. That's fun.
i also got told "Magic" when i asked in the dayz modders discord ... but neither did i could find it nor did i really wanted to search for that ..
What was it using before for such huge size?
C-Style arrays with static size. Like.. Filepath string would be char path[1024]
which is stupid anyways
just please make sure that this time you actually can access everything without writing stuff to file
And then you have a struct for a animation. Which contains 5 strings.
And there can be a total of 128 animations (Not really, it's just arbitrary number choosen, which for one always wastes memory when not all are used, and second introduces arbitrary limits)
And if you nest that a couple more times. It get's stupid
Yeah. Will convert all the stuff to istream/ostream
Spent two days on it so far. Most work for now is getting rid of all malloc/free calls
pbo read_pbo(string filepath);
vector<pbo_file> pbo::files();
??? pbo_file::get_contents();
also please theese methods @glossy inlet and SQF-VM will get PBO support β€
So it used dynamic memory allocation but only sometimes?
yeah.
though ... i just remember ... i need to get a debinarized config variant π€
add a cpp static ??? pbo::deserialize(pbo_file); too if possible
Like for the lod's it would just allocate enough memory for the number of lods you actually have.
But then inside the lods all strings and like.. the array of materials and some stuff are Cstyle arrays with hardocded size
hardocded size is actually always stupid
So far I spent my two days in just p3d.cpp which is armake's custom p3d binarizer which isn't fully finished yet
Not if you know exactly how much you need
even if you don't know exactly how much you need. push_back. done.
in c you would either do a realloc or first count and then malloc π€·
that's more work though. Which is why that was not done. It was made to work quickly. optimization later or never
At which point.. You might aswell just choose C++ to learn something new, and to get stuff done alot quicker because most tools are already there
int fgetpos(FILE *stream, fpos_t *pos);
int fsetpos(FILE *stream, const fpos_t *pos);```
π€·
In Halt and Catch fire https://en.m.wikipedia.org/wiki/Halt_and_Catch_Fire_(TV_series) there was a war between C and C++ guys was pretty cool though the arguments were quite authentic
c++ is easier in regards of "usage" indeed
but it is harder to learn, even harder to master
c on the other hand is easy
just that here you have to do everything yourself
something i personally am fine with
Coding is fun. But I want to get things done. And not constantly have to say "this is crap. But ah F. it. Making it good would waste too much time"
just reminds me that XCG maybe should also support binary files π€
never said that in C
I can read that in about every 10th line in armake
because armake is horrible
just thinking if there could be some syntax that would describe binary files π€
π€ thats meh ... looks exactly as i would do it
so no need to implement myself π€·
Most work for now is getting rid of all malloc/free calls
agreed there. It's the main claim to fame about 'managed code' in C#. In my case with rare exceptions where i'll use a calloc/free (and it is rare), i replaced all that grubby stuff in my own code with class constructors/~destructors some years ago and never looked back. Welcome relief from memory leaks.
as for char string[1024] or any other number, agreed again. They are, however unavoidable as dynamic entities (not static ones) for some file formats which don't have asciiz termination and are indeed a fixed size. I immediately convert them to utf8 CStrings and dispose of the array.
@glossy inlet armake without hardcoded path/file limits sounds great, it chokes on Islands now
Yeah I still use char string[1024] as a buffer when loading from files. But then immediately push it into a string container
anyone here with practical experience of particle editors/tools from other engines?
considering to write one for Arma and getting insights from 3rd party would help to make a better tool
i know how to create tools π€· but nothing 3d related
how much "tool" you want that tool to get? because i highly doubt you will be able to replicate armas particles anyways completely
DayZ tools are supposed to contain a particle editor if I remember correctly. Maybe you can easily repurpose it for arma
thanks. i am mainly interesting in the concepts, workflow, interface, etc
to tweak each parameter and have multiple emitters at the same time is basic stuff
yet likely there are more elaborate ways
If you want to do it real time, there are some params not accessible via scripts so this means modding and game restart and that alone kills any desire to make an interface for me for example
Intercept could fix that ^^
But you'd still make the engine somehow reload the config for the effect. And it's still quite alot of work
Wow. Armake doesn't have any pbo functions seperated out. The pbo reading/writing code is just copy-pasted into every function that reads/writes pbo's π€¦
told you armake is horrible
there is a reason why nobody ever bothered writing it so that it becomes usable as library
armake even creates tempfiles to preproc stuff into. Because the preproc code can only read/write file on disk and not work just in memory
I think I'll go through preproc and binarize now. And then make something out of this pbo mess
you may take the pp from sqfvm
working perfectly fine now π€·
though ... you would need to adjust the file system related stuff a lil π
and maybe clean up the mess i did not ... like moving the classes into the header π€·
Armake is GPLv2 and SQFvm is LGPLv3. Are they compatible?
not sure tbh π€
one would need to check
according to https://www.gnu.org/licenses/license-list.de.html, at least gpl v2 and v3 are
lgpl also with gpl
so yes, it is
though according to https://www.gnu.org/licenses/why-not-lgpl.en.html i should propose a switch back to GPLv3 π
https://www.gnu.org/licenses/gpl-faq.html#AllCompatibility that says I'd need to change the armake license to GPLv3 if I incorporate LGPLv3 code.
I guess I'll just fix the old code then
π€· or you link against sqfvm
then you are fine in all levels π
though ... don't you need to touch literally all lines anyways?
how much is really left of the old armake?
I'm not really that far yet. I'd say so far 90 is still untouched. Or minimally touched. Like adding a c_str here and swapping a strlen vs a .length()
but in the end, chances are fairly high that all what is left is nothing if you do not just want to make the same as c++
or am im wrong on this one?
because all that would be left, is data structures
and afaik, that is also available here: https://community.bistudio.com/wiki/PBO_File_Format
which means it cannot really be protected by the GPLv2
Your code is protected. The file format isn't.
Most actual logic in armake will not change. I'm just moving things around and replacing some things
π€· well ... then you may got a problem
though ... i personally am copyright holder of the pp in sqfvm
so practically, you can just use it
ALso that would defy the purpose. I'm doing this to get practice in converting C legacy code to C++.
It certainly looks like it tho π
and "ohh this still no working, better put it in place" code
maybe i should just start doing what i planned anyways ... implementing my own PBo parser into sqfvm
but fuck sake i do not want to write the parser π
If you need a very well written template to work of. I'd recommend SwiftPbo the C# thingy that DokanPbo uses. It feels very nicely written
What was the reason Mikero switched to closed source, again?
i would need some lecture on how to actually write streams in c++ π
also an option though
could use mikeros toolchain
but ... that is less fun π
Well for one, obfuscation with open-source doesn't really work that well
(btw i'd maybe use his tools instead of my own if I didn't own ARM servers...)
Yes but he switched to closed source prior to implementing obfuscation,I think.
I remember reading why he did that somewhere
I had to modify armake quite a bit to get it working with my macOS Finder integration
Like dedmen says, some functions writes to files instead of returning the data
Will also be interesting how the perf is with c++. I already know memory usage will be lower. But that might make perf worse because of all the reallocs. But on the other hand I'm also not calling strlen constantly. Or I don't have to iterate a array until I find a empty element so that I can insert.
btw. how to implement streams like in c# or java?
Me: "Wtf? Why is the armake zip download from github so big 27MB for just plain C code?"
Also me: "Oh. Someone pushed the biggest ace pbo into the repo as a unit test"
std::ostream (output)
std::istream (input)
And then you can pass stuff like std::istringstream (from string in memory) or std::ifstream (file) or std::cin (console input)
istream/ostream?
thats the thing
i want to output a stream i can work "on the fly" on rather then actually working on everything in one go
in c#, i would provide a custom abstract class System.IO.Stream implementation, having everything i need
but i am not sure how i would do such a thing in c++ ... or what side effects would arise
which is why right now everything returns and expects std::strings π
So you want to like.. Make a pipe?
Throw stuff into binarize for example. And then connect the other end to pbo writer. Once binarize has output ready. It get's directly written into pbo?
There is a way to chain streams.. Don't remember tho
Like. You give someone an istream, and when he calls "read" on it. The istream itself calls functions to generate the data that wants to be read.
And you can connect it with multithreading to a ostream so that the istream just waits till the ostream has enough data ready.
more or less π€
essentially eg. parsing preprocessor on request rather then as a whole
exactly
on point essentially
That certainly is a thing. I don't know if standard library, or boost, or some special library. I've definitely seen it in some conference talk.
It's probably a boost thing
π€· that is what bothers me the most in both c and c++
i miss my fancy streams π¦
boost asio can kinda do that. But I don't think it's the thingy I'm thinking of.
nah
will never start using boost until they reduce the whole framework size to something i can download and unpack in less then a half hour
Many parts are just header only
for some project i tried to use asio
but that was not "just download asio and be done with it" ...
pretty much everything required something else from the whole boost framework and at some point, stuff that was mandatory for asio to work according to the #errors, required the whole framework to be included
and pretty much all the times i used the bloody boost framework, i experienced that
i also hate those answers on stack overflow recommending something that is implemented in boost -.-
C++17 modules will fix all that π
Once people provide them. And people find out how to use them
crap .... sqfvm still does not compiles
/home/x39/gcc-8.2.0/gcc-8.2.0/libstdc++-v3/testsuite/20_util/optional/hash.cc``` and llooks like optiona.h is nowhere to be found -.-
the error btw.
from /home/x39/projects/sqfvm/vm/src/Entry.cpp:3:
/home/x39/projects/sqfvm/vm/src/filesystem.h:6:20: fatal error: optional: No such file or directory
#include <optional>
^
compilation terminated.```
now ... where to get the actual c++17 headers for gcc -.-
-std=c++1z switch?
https://gcc.gnu.org/onlinedocs/libstdc++/manual/status.html optional is supported as of gcc 7.1 Β―_(γ)_/Β―
header itself is not existing on my system
gcc freshly build
gcc (GCC) 8.2.0
Copyright (C) 2018 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.```
I'm running selfbuilt gcc 7.2.0 on my server and that can compile Intercept atleast. Which also uses optional
Configured with: ../configure -v --enable-languages=c,c++,go --enable-multilib --enable-multiarch --disable-bootstrap --with-system-zlib
tried sudo find / | grep optional.h? because that should show up the optionals header somewhere π€·
that will fail
that's not the name of that file
it's optional
./gcc-7.2.0/objdir/x86_64-pc-linux-gnu/libstdc++-v3/include/optional
./gcc-7.2.0/libstdc++-v3/include/std/optional
/root/gcc-8.2.0/libstdc++-v3/include/std/optional π€ weird
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_CXX_EXTENSIONS OFF)
set(CMAKE_MACOSX_RPATH 1)``` cmake is set according
gcc is ready
@nocturne basin which OS/dist are you installing GCC on?
debian
well, you don't have to compile it yourself
nah
just need one compiler to get it actually compile the sqfvm bot again
it's available from apt
Debian 9 (stretch)
still ... gcc is up to date by now
as recent as possible
just that it will not compile for some reason
did you update libstdc++?
trying to find what version it would need right now ...
currently, 3.4 seems to be installed
nope
E: The value 'testing' is invalid for APT::Default-Release as such a release is not available in the sources
but i think the libstdc++ installed was even outdated for my last gcc Oo
do you have testing repo in your sources.list?
nah
wait
it is not
nope ... but i also hate installing new repos
currently try to find how to build the bloody lib from sources ..
though ... if i interpret this correctly http://web.mit.edu/darwin/src/modules/gcc3/libstdc++-v3/docs/html/install.html the latest lib should already have been build with gcc
yup ...
libstdc++ is build already
i start to think that this is rather a cmake problem for some weird reason ...
because ... unless for some weird reason, the libstdc is not getting installed correctly twice (now explicitly installed it), i see no reason why it should not work..
maybe it is just time to get CI to work proper and then just pulling the binary from the CI
debian 9 (Stretch) has cmake (3.7.2-1) - https://packages.debian.org/stretch/cmake
which supports for CXX_STANDARD values of 98, 11 and 14 - https://cmake.org/cmake/help/v3.7/prop_tgt/CXX_STANDARD.html#prop_tgt:CXX_STANDARD
if(CMAKE_COMPILER_IS_GNUCXX)
SET(CMAKE_CXX_FLAGS "-std=c++1z -O2 -s -fPIC -fpermissive -static-libgcc -static-libstdc++")#-march=i686 -m32
set(CMAKE_FIND_LIBRARY_SUFFIXES ".a")
set(CMAKE_SHARED_LINKER_FLAGS "-shared -static-libgcc -static-libstdc++")
Ah so that's why I have that there π
c++1z is also the old parameter, it should be c++17
some older compilers such as clang 4 will be confused though
but you're using optional soooo π€·
It's probably me who used optional π
@plush shard yup
theoretically, you are correct
cmake version 3.13.0-rc2``` practically, i also already build cmake
it actually was you who told me to use them
i personally find the quite handy being used to the C# valuetype? syntax for nullables
Man.
Armake in C: Iterate through entire include_stack to find the last element. Then set last element to empty string.
Armake in C++: include_stack.pop_back()
It's the little tiny things that count. Also the include stack is now not 512KB big anymore. Minimum size is 32Bytes and it only grabs the memory that it needs.
It uses less memory. And is faster while doing that.
or more: armake doing in C already stupid things π€·
In C you would just add a "num_elements" variable right?
And 4 or 5 lines of malloc/free code for dynamic resize.. While checking every possible exit point to not leave memory leaks
{
???* data;
size_t data_top;
size_t data_size;
}``` would be how i would solve such things
top always pointing to the next, free element
having a push_back and pop_back method
if you want it especially fancy, you even can make it kinda "generic" using preprocessor
fairly handy, easy, but hard to understand at first
still this does not solve my horrible problem with #include <optional> and c++17 -.-
https://pastebin.com/Ud4xeN6n is the generated makefile
I thought Armake was koffienflummi? What's happened to him?
flummied away
Nothing happened.
He's making KSP mods currently I think
@nocturne basin have you tried adding c++1z parameter manually? it's not in the makefile
no idea how to do that @glossy inlet
well the admittedly small amount of code samples i saw from him smacked quality, i'm surprised by the way you describe how armake has been put together. Don't doubt you, just surprised.
https://github.com/SQFvm/vm/blob/master/CMakeLists.txt#L20
if(CMAKE_COMPILER_IS_GNUCXX)
SET(CMAKE_CXX_FLAGS "-std=c++1z -O2 -s -fPIC -fpermissive")
endif()
armake has just been written to be working quickly. 0 optimization or care for maintainability put into it
k. understood
The actual logic is splendid. Just the implementation isn't
added that, did not changed anything @glossy inlet
though ... neither was the c++1z flag added π€·
deleted cmake cache files?
Builds just fine on my server. Even without the c++1z flag.
Oh that.
Wait a sec. I got something about that somewhere
at least that now explains a lot to me -.-
not even a fucking clue wherei t found that one
Found it! CXX=g++-7 CC=gcc-7 cmake .. -DCMAKE_BUILD_TYPE=Release
the first two parameters are probably most interesting to you
you can also redirect your gcc/g++ symlinks to the new gcc
gcc (GCC) 8.2.0
Copyright (C) 2018 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
x39@x39:~/projects/sqfvm/vm$ g++ --version
g++ (GCC) 8.2.0
Copyright (C) 2018 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.``` that is the point
they already are
i hate you so much right now T_T
where the hell is my system still having some weirdo gcc references it should not have -.-
whereis gcc ? maybe some of them redirect elsewhere?
now executed once again apt remove gcc ...
guess what is working perfectly fine now π€¦
forgot to remove it
guess cmake is looking in the dirs different then bash
Happy end
1:
Executing...
---------------------------------------------------------------
[DIAG] yes
---------------------------------------------------------------
[WORK] <NOTHING> nil```
also can fire up the bot finally again
which now has the preprocess__ vm internal command
π ?
Gotta say it was an interesting read even with my limited linux skills
And in the menatime I moved the armake preproc into a class. Got rid off all the weird pointers that were passed in from outside and managed by the caller of the preproc.
Now to get rid of all the mallocs. And then convert to iostreams.
π
And when that's done. You can just preprocess from cin to cout.
Don't understand why that hasn't been a focus from the beginning. Flummi always handled armake as a linux based tool. However you cannot pipe input into or out of it.
how did he actually solved the file lookup stuff btw.? never bothered to check due to ... well ... you know why π
finding includes? I only stepped into that for a short moment. But I think recursive search for matching filename outgoing from working dir.
yes, finding includes
but how would he then handle stuff like /x/whatever/whoknows in PBO_PREFIX
solving that riddle took me hours in my implementation ...
and it still is horrible to look at
because you need to provide the VM with all that informations
((which is btw. why loadFile although technically being available, is not working with the bot as it will never find files π))
like.
if you have this
stuff
script_mod.hpp
stuff2
script_mod.hpp
config.cpp
and the config included "z\mod\addons\stuff2\script_mod.hpp" I don't know if he respects anything but the filename and might find stuff\script_mod.hpp instead.
Didn't look deep enough into it. Will have to rewrite it with std::filesystem anyway
LoadFile doesnβt preprocess AFAIK
does not matters @smoky halo
it requires arma-like file system access
preprocessFile is also implementedi nthe sqfvm now
it doesn't.
matter*
I think best would... okey not best. But easiest and actually working variant would be to search all files with matching filename recursively.
And then look for each file, does his parent directory match the parent of the to-be-included file.
And then choose the file that has the longest matching path
Would be very inefficient of course. But should work
well ... π€·
i settled with virtual mappings
-v ./hashes|x\cba\addons\hashes passing this is enough to get it recognizing the mapped path
actually ... sqfvm is damn handy by now π€
-v ./main|x\cba\addons\main
-v ./hashes|x\cba\addons\hashes
-F ./hashes/config.cpp
-f ./cfgFunctions.sqf```
should include the whole cba hashes related stuff π€·
not sure i can see the problem with #includes, you either have x/cba/whatever at the root of the linux file system, or you always prepend a /my/dev/area. In the case of relative includes, dont' see an issue
@dawn palm that is ok for stuff like armake and your toolchain
but sqf-vm might be at a different location or required to load multiple addons at once
problem is when you have for example
#include "\z\tfar\addons\core\script_mod.hpp"
In the file C:\dev\projects\task-force-arma-3-radio\addons\core\stuff.hpp
There is no p-drive where you could look up the "\z\tfar" path.
Yeah. relatives are not an issue. Many mods based on the CBA style use full paths, for their relative include though.
Because others might include that header from elsewhere, where relative paths would then not work anymore.
Only real way to get this is to read the pboprefix
thanx X39. understood, and i have no interest in sqf, hence my confusion
that also is a problem solved by the mapping being required to be passed by the user
bis, btw, use an indexing array of [pbo\prefix][hard address of pbo]
highly doubt anybody ever will use sqfvm anyways ... not even really sure why i still work on it π€·
though ... it makes fun
for the most part
but ... to be serious ... who will ever care enough about eg. unit testing to use sqfvm for it? by now, it is ready as long as the addons are unpacked
or who is using sqfvm to quickly just test scripts
the whole project again is meh ... π π§
The good "pointing out where errors are and why they are wrong" is good for educational use in #arma3_scripting
https://github.com/SQFvm/vm/blob/master/src/filesystem.h#L23-L25 sqfvm pretty much does that too
we all have our coding babies no one really uses ^^
but i have a shitton of those @smoky halo π
the index array above is of course 'poetic license' for a tree....->physical pbo address
What? Did someone ask for ArmaLoadoutEditor in C++? π
and you learned from all of them I assume. like me ^^
kinda π€· still disappointing to create something and seeing that nobody uses it
only thing people still use is my ArmA-UI-Editor ...
but that thing is bugged like hell and a nightmare to maintain
which is why i declared it as dead already
π€
Letting people create UI's with scripts in sqf-vm. And then exporting as config π€
I have EBO decryption, ODOL2MLOD conversion....stuff I cannot really release...
i still wish we had some magical odol thing we could use to make terrain tools in UE4 or blender or so
Just an idea.. Dunno. I don't do UI's
had some new fancy UI editor project for arma.studio in mind ... but that never went good either which is why it is pretty much also dead before arrival
though ... somehow, people seem to randomly use ArmA.Studio π€·
2018-11-05 04:21:09 ****** /api.php?action=projects&project=ArmA.Studio
Already seen someone building big structures in UE4. And then exporting as a prefab model from UE and importing into Arma.
But you create a new model everytime and don't reuse things, which makes filesize huge. But as you don't have many models the perf on the maps build with that is quite nice
well @smoky halo , those two programs are valuable, and you're doing the right thing.
highly doubt anybody ever will use sqfvm anyways
I'd be interested in using Enfusionvm for unit testing, if it ever comes out (hence me gently poking you about it from time to time :P)
I don't want to touch sqf with a 2m pole though, so I managed to be useful to my community by doing everything else over those years π (C++ extensions, python extensions, etc)
But once Enfusion modding becomes a thing I'm interested in jumping in
Is it not already?
same sentiment, same comments as you @karmic niche
Enscript-VM ? that project not even started due to lacking assembly instruction list @smoky halo
No, Enfusion modding
balls to that. let them try. early days of ofp said same thing
It is already a thing yes. But kinda limited until the real modding tools are released
π€· gimme an assembly list and i show you a VM π
though ... info about actual scoping would be appreciated too, the instructions are more important for now
can have a working AST parser ready by end of week
though ... chances are i would need to rewrite XCG a lil to make it work (with c++ proper, only c output supported yet) π€
the way I understand enfusion scripting to work is it is classic C family function calls. We can build our own libararies which others might find useful, or, at least use parts of those libaries for their own purposes, and we will be free of bi's ridiculous , inconsistent, sqf syntax, and relying on bis to provide useful functionality.
I probably have to download all of DayZ to get my hands on that right?
Need to delete something to make space π€
and we will be free of bi's ridiculous , inconsistent, sqf syntax
Instead we get BI's ridiculous inconsistent Enscript classes.
Iβve heard inconsistency in Enscript is carefully preserved
and again, it will not be inconsistent but rather "bad design" π€·
getting some inconsistent language is hard to do
if they are c family ,there are some rules bis cannot break
the good part though is that now one can properly build a better language on top of what BIS did
unlike with SQF ...
https://data.bistudio.com/dayz/img/jules_modding_00_workbench_01_f.jpg picture of some enscript
world.SetDate(date.Get(0), date.Get(1), date.Get(2), date.Get(3), date.Get(4))
π
And casting a class doesn't return the result.
How to get a identity matrix?
IdentityMat = Math3D.MatrixIdentity4() ? No... Of coruse not!
Math3D.MatrixIdentity4(IndentityMat) Yes baby!
Build SQF on top of it
yes. i said same thing above, but not as concisely as you
zero idea what Math3D.MatrixIdentity4(IndentityMat) is actually supposed to do
somefunc(int a, float b, char c){.....
and there's not one single thing bis can do to alter that consistent interface
though .. that might be some sorta out parameter?
You can return numbers and string and stuff.
But. If you want a array back. You have to create one, and pass it as reference
yes it's a out parameter. Because you apparently cannot return arrays
so ... essentially: Math3D_MatrixIdentity4(Identity arr[4])
So no RVO then
no problem
can fix stuff like that easy :D
OOS for the rescue https://github.com/X39/ObjectOrientedScripting
fixing literally everything Enscript will be doing wrong without all those messy workarounds SQF required
Identity (&arr)[4] probably @nocturne basin
@native kiln What tools? The official ones or from the modders? Where can I read about that?
cpp reference in german is garbage :D
From german cppreference translated back to english:
Behaves like UnformattedInputFunction except that input.gcount() will not affected. After the building and testing the shield guard object, leads the following:
Original english:
Behaves as UnformattedInputFunction, except that input.gcount() is not affected. After constructing and checking the sentry object, performs the following
I got suspicious when it started talking about a "shield guard"
@karmic niche The official tools
They talk about it in the status report that was released yesterday
While they can definitely be considered Experimental, your early feedback on the tool set can help us shape the future of the DayZ platform and game alike. Tools will be available as a free download on Steam and will be also supported by our new DayZ Launcher to organize your DayZ experience. The launcher (familiar to those of you who tried Arma 3) will be useful not only to work with mods, but also for work with startup parameters, server and tools after the tools package stabilizes a bit. With the DayZ tools release, we will be opening the Steam Workshop for you guys to share your creations in an easier way, accessible in one central place.
sounds more like a mission editing and publishing ability
Boycott Enscript if you want SQF support in A4!
I'd prefer Logo for A4 tbh
so DayZ tools are actually released now or?
nothing on steamdb as far as I can see
@dawn palm it's gonna include the scripting IDE afaik
there should be some barbarized enfusion workbench, updated object builder, terrain builder & some more minor things
but it's not released yet
Yes that is what Eugen said. it is planned to get those out today - but we'll see if they make it or if its pushed to tomorrow.
@smoky halo or we just build a sqf-vm in enscript π€·ββοΈ
Alternative: a transpiler
Translating sqf to enscript
So many community projects would be wasted
On one hand
On the other hand only the best would make it
Not so sure about that actually
pls give translation tool @nocturne basin i have way too much sqf :3
i wanna get terrain making mod out asasp for dayz but i hanve't looked into dayz at all and dont know C languages
Will see @dusky dune
Not even looked much into enscript yet
Problem mostly is to get the correct objects for the right scripts wich is impossible till arma 4 launches
The Rest is just mangling
i wanna get terrain making mod out asasp for dayz
you can do what bis do and use t/b. All you require is the DayzSA version of bis binarise which produces a very minor difference in the file format.
the same comment applies to p3d's, then only requirement is DaysSA bis binarise. If that's not released in this tools package, then itt's smoke, mirrors, and bullsh*t
its to make sure you can actually put objects down in a decent manner :p
not whether it packs or anything
ah sorry sorry, i totally misread you Adanteh
before your excellent (modified) tool is useful, daysSA bis binarise needs to be available.
no longer possible to port DZ SA models to A3?
never was possible to port genuine dayz models. they are an unkown file format to the arma3 engine
well yes. still i mean objects to allow Adanteh to use A3 and his tool to build DZ SA terrains for now
ah
otherwise would need to get sqf fully working in TB/BD i guess
I'l wait to see if dayz binarise is in the package, otherwise i'll provide a tool to convert arma->dayz and people can use their current workflow.
do you actually need to change things in the unbinarized models/terrains to make it binarizeable for dayz?
no/.
it's simply the way the binarised wrp and p3d are formatted. for the wrp it's a slight difference, for p3d, there's no physx (educated guess)
days is supposedly moving to fbx rather than p3d, but that's not the current sutuation so far as i am aware.
good info. thank you.
workbench ide starts with a nice "enfusion" splash
they will be using the same tool chain as arma, notably BinMake\binmakerules.txt. It may or may not work in >our< dev environmnent. generally it does, but by example arma's bin64.exe can't
most (not all) of my tools will work with dayZ as is.
If I get a free copy of this game (as I usually do) more will follow, otherwise: not interested.
Workbench kills tiself on start if dayz is not installed π
.... :/
how do yo uinto free copy of dayz if you wanna do weird mod tool stuff for it?
(Not asking for me, i have it since day 1)
I have it since month 1. And can never play it π
Also your grammar doesn't make sense there I think.
its a meme you dip
derp
I'm moving my Arma 2 mods from 4 years ago out of the way to free space π
P drive on D? π
oh god, doesn't everyone have a cd/dvd in D:\ ?
π€
@thin rose your terrain guess might not be that far off lol
Bigger question.. Why are they editing Arma maps with DayZ TB? π
I don't even have a cd/dvd drive at all
ok, your backup terrabyte then.
looks the same anyway
using D:\ is obnoxious since it's the first 'spare' drive incuding usb or ramdisk, on almost anyone's pc
maybe its because i had something installed there at one point
Why are they editing Arma maps with DayZ TB?
huh?
the screenshot from Adanteh
A terrain in a a3 folder. In DayZ Terrainbuilders recently opened files
there should be zero nada zilch difference betwen an arma3 tb and an dayzSa tb
the only difference is the way the exported map has been binarised
sorry
will be, binarised
if they're not capable of fixing their current set of broken tools, what on earth makes any of you think they've been cabaple of writing new or different ones?
Dayz got completely rid of SQF?
What is this then in binarize/bin/script.cpp config file
if (typeName(_this select 0)=='ARRAY') then {onPlayerConnecting {playerOn _id call {%TEXT}}} else {(_this select 0) call {%TEXT}}
ancient remanents
i think (and hope) so
to always keep history of our fallen brother
Atleast I didn't spot SQS yet
it was put into a fertile edge where it can grow
and live to see the its next life
with only the magic wizards being able to spot its existance
`[8:34 PM] mikero: i think (and hope) so ``
i wouldnt mind keeping old SQF alive so you can have instant ported mods
Okey. Yeah. Legacy. config.cpp
defaultAction="http://www.arma2.com/mods";
with only the magic wizards being able to spot its existance Can't we just throw it into a Bag of Holding?
Found it! playerKilledScript="onPlayerKilled.sqs";
just guessing, because it's the way I would do it, they simply renamed .sqf ->.cpp and then edited/transformed sqXshit into c functions. This one is an orphan (I hope)
A little sign is needed : On this spot aeons ago SQF died alone and whimpering....
hooray
no-one puts 'knowledge of sqf' on their CV when job hunting because no-one else in the industry would know what they're talking about, or remotely interested. It's a career killer with time wasted.
equally obtuse languages like asm would, at least, command high salaries
or Cobol or Fortran
that's not true, it shows ability and wish to learn something else non-standard, it's totally dependent on what a company wants to see, it may as well be a valid CV point
Cobol programmers are quiche eaters.
haha
it's more likely Jonpas in todays market that the boss will consider you capable of wasting company time.
Our mainframe guys made a killing because no one else knew how to run them.
Well, I still work with (gulp) algol
wow
Legacy Code is the best job saver
shhhhhhhhh
also ensures regular salary increase
well that's just a terrible boss, not like you'll do SQF at work if you have a proper job...
Who do you think writes BI functions?
why would we want to
because why not π€·
because I am not retarded? π
https://github.com/SQFvm/vm there you go
standalone SQF
can give you some commands to interact better with native libraries π π
no thanks