#arma3_tools
1 messages · Page 20 of 1
Does anyone know of a gui editor that isn't the ingame one? about to start pulling my hair out
@smoky halo https://discord.gg/QmZZGaP
@vague shard oh shit thanks
Looking for some help, I have just packed my mod using arma tools and created my keys but when testing to join server with it I get error "keys not accepted by this server" anyone know why this would happen?
#define arma tools ________
one thing you can do to verify your signatures is to start your game with a switch -checkSignatures and it will output to RPT its findings, if singatures are valid or not
otherwise in case you dont know how to setup your server properly try #server_admins #server_linux #server_windows
Jastbred the server is setup correct, as is a hosted testing server that we get free with our main Exile rented server.
Arma Tools I meant to say Addon Builder and DSUtils
As for check signatures thats worth a try but if I have creeated the private key and bikey then signed the pbo with the private key and then added the bikey to my keys folder on server root you would think it would work fine.
Will try launching with checkSignatures
Heres the error I get when testing signatures https://imgur.com/ALcgT2K
any thoughts @south canopy
Tried changing keys folder in my mod to Keys but still same.
Also tried remaking a new private key and signing the pbo again still same error in image above. Anyone?
the exile code itself is quite severely broken. that's a non issue to your current problem, but addon breaker doesn't help you in any case.
try mikero's tools @sacred obsidian and keys do go in serverroot/keys
one note though; make sure you reboot after you added a key to the server so it loads before you attempt to join
Yea restarting every change to be sure will try mikero's tools but tried these earlier and they would not work at all, will try again
and they would not work at all,
what you mean is they will not make a pbo under any circumstances if there's errors.
mikeros tools not working, well thats not true, but what is true it will not forgive you errors
well ninja'd
no i just cant get the programs to open after install
are you trying to run them on a server?
no my home desktop
I cant really run them on a rented exile server i dont have dedicated setup
well, sounds like something @dawn palm might be interested in and might help
paste a screenie of the error with my tools pls
not an error, after install i cant open them from shorcut, nothing happens, dunno if something is up with my pc or the install
i never said anything about errors
ok
most of the tools are dos based, they do nothing for you in windows explorer.
you probably need to use pboProject
yea thats the first one i tried earlier then i also tried Elitness and a few others, probably issue with pc
wow.
vc++ missing?
problem too is I am no coder or have any experience, im a freshie to this side of arma
hmm will have a look
we all start somewhere Captain, yours is not a crime.
Yea ik just letting you know i have little knowledge at this stage only the basics of how to pack the pbos and create bisigns for them using private key
Which version of VC++ is required ?
not really sure now, but from the top of my head I think I recall DSUtils being broken for a while now
maybe, i had one work earlier today then all of a sudden nothing just this error
other then that in case you use win10 you might want to unblock exes and arhcives before you extract and install them
I do use win10 how would I do that?
Im not sure which visual c mikero requires, try 2010 and install both x86 and x64
heres my VC++ installs https://imgur.com/7PbNzTQ
win10 security policy it may block app from running in certain scenarios if its downloaded from internet
well looks like youre set with vc++
alrighty well ill have another go at mikeros tools then, do they run like normal programs or do i need to do something with dos or whatever to make them open?
make sure you install depbo, deogg, derap and rapify first, before you try to use pbo Project
aha finally got the pboproject to work, dunno how but reinstalling the pboproject and the deogg worked a charm lol
will do those now
pboProject is the only one with GUI and Eliteness, others in free tools are dos programs and dlls
if pboPro is running then it's alreaady checked the other exes are 'ok'
ok is Eliteness the too lfor making keys ? or?
you can, but it's overkill. pboPro is your friend.
ok will have a look at that then, cheers guys appreciate your time to help and give some advice
ok ^^
from pboProject, while building addons you can sign them aswell
Thats what I need yea, hopefully this works out with these tools then
should i select headless server install on depbo ?
headless = no graphical interface / console only
Alright thanks!
when you eventually, perhaps,. and maybe, want to use my tools on a server, instead of a local pc, then the last thing you'd want is gui dialog messages.
everything is obvious in hindsight.
Fair play, makes sense, well got the gui open for pboProject so ima have a bash at this, will report back my findings tomorrow, again thanks guys appreciate your time/advice very much!
you are in for a very rough time correcting the many mistakes in exile. but, be patient, don't get frustated. they are all just tedious errors that take time to fix.
Hehe yea here goes!
the biggest doozy of them all is exile uses a config.CPP. That is the preserve of addons, my tools, and bis, think it is one, not, a mission.pbo
one way or other you have to rename it to anything else that thrills you.
hmm alright well this will be interesting if nothing else!
everyone will tell you same thing. do not get frustrated.
like everyone else, you'll find a worklow that suits you, and wonder what the fuss was all about.
rgr that
Any ideas why I am getting Packing Failed! and the following in the pboProject DOS window:
Warning: \Users\georg\Desktop\@ExtendedMarkersPack\addons\emp_markers\config.cpp Line 20: \emp_markers\markers\test.paa
I have double checked path multiple times now and .paa is in the right place...
then clearly. it isn't
bis engine knows nothing. zero, nnada, zilch, about 'my documents' nor any other windows file system. everything in bis is linux and everything starts at P:\
ok so i need to mount a p:\ drive?
look at line 20, it is explictly saying, the paa is in p:\emp\blah blah
your modding career will be 'interesting' without a pDrive
this is part of the 'workflow' thing. don't get frustated. it all falls into place.
alright well because it had option under setup to change workspace i thought it was fine
🤦
that should also be ok, pboProject will make a temporary p drive for you
but it's unusual
hmm ok such a complicated process for a simple mod lol Will try again tomorrow i guess, cheers again!
complicated? this is bis!! welcome to hell
Haha!
well i see temp p: drive so thats a start 😄
same error when using p drive done for tonight but will not be giving up!!!
its telling the truth, the paa file is not on the p: drive where you say it is
ok I copied the mod to p drive and retried <---- probably wrong way of doing it
dunno. again, it all comes down to personal workflow.
yea
P:\emp_markers\markers\test.paa
does not exist. It cannot get simpler than that.
yea thats whats making it even more odd, i dontmind errors when it could be something less obvious but this is not so much
you either have a
P:\emp_markers\markers\test.paa
or, you dont'. it can't get simpler.
ok then thats whats wrong I have full mod folder in there :/
you aren't stating that it's actually there as above tho. are you.
true
addon builder from arma 3 tools requires file tobe within a mod project folder and not on its own so thats what I thought it would be for here
the above cannot possbly be simpler to understand. regardless of what addon breaker does or does not do.
you can, fix the obvious, or look for a 1000 reasons why it aint working.
yea haha
paste a screenie of your p: folder. at least six people here will tell you what's wrong.
lol fixed it my bad
Epic fail
I had nothing inside my addons instead of emp_markers being in there it was beside addons
But the better way it seems is to have your mod folder (output) with empty addons folder in p drive root and also have your source folder in main root of p drive but that was not the issue the issue was ME!
the output can be to anywhere on your pc. drive:\any\where
Yea
note the obvious is is a MODS folder. not an ADDONS folder
Yes I see that now
pboPro will automatically supply the keys folder, when appropriate, as well as a missions folder if needed.
it'll even supply a mod.cpp if that gives you a thrill.
Yea this is much better than the addon builder, it at least gives you some output for errors too and doesnt just pack it broken lol
sadly still getting signature check error
check the public key is in the new mod folder
They are, i packed with signing and then moved new bikey into keys of mod and the server
possibly yes
well the url you pasted said the obvious, it does not exist
lol see it already FFS im failing tonight so BAD!
Mod folder is called ExtendedMarkersPack and commandline is telling it to look for @Extended_Markers_Pack
not at all. you're learning some discipline about how to approach errors.
yes thats very true!
everything is obvious in hindsight
Thats true, less obvious to noobs like me it seems, but like you say gotta start somewhere right!
hmmm, well for a product (arma3) that will a) sopposedly be rep;laced by Enfusion this quarter , and b) ''all the talent has moved to DayZ", we're seeing one hell of a lot of continuous updates.
where does arma 3 tools /OB store the settings - in reg/myDoc or else?
anybody interested in a SQF parser for c++?
currently rewriting sqf-vm in c++ and need to recreate the parser for that
the IDE devs might - at least as reference
@nocturne basin if it's as general purpose as possible then yes 😃
and don't force all this C++ std stuff with the API ☺
But obviously will be tied a lot into sqf-vm
the "vm" part should consume the AST and not do stuff during parsing
IMO ofc ^^
(and the AST would then be general purpose so that others can build tools on top of it without having to edit out the vm stuff etc)
in other words, write a library lol
Creating an AST is a Step more then needed for the vm
true, but not for a "parser"
It is not hard to change for ast Generation (it literally is just a few linkes)
But I did not wanted to create the structs for that + a separate Tool that parses the ast a second Time 😂
did not want* FTFY
currently rewriting sqf-vm in c++ and need to recreate the parser for that
Nice move! 😄
There is no net benefit for me in there actually
The rewrite however will lead to simpler command implementation
And now I am even closer to actual arma with the vm
And I'm sure it will lower the barrier of contributing to the VM
@sick verge yep it would
There is not much of a difference
Only a cleaner stack Overall that makes stuff more simple
the cpp rewrite happens in here btw.
https://github.com/X39/sqf-vm/tree/cpp/sqfvm-cpp
https://github.com/X39/sqf-vm/blob/cpp/sqfvm-cpp/commandmap.cpp#L11 with this being how to create new commands:
add(nullar(4, L"test", L"foo", [](const virtualmachine* vm) -> value_s { vm->out() << L"works" << std::endl; return value_s(); }));```
value_s is theoretical "nil" but that probably will be changed in near future as the actual value is a nullptr in there
It's nular not nullar
I made an npm package for Battleye, since all the ones I found would not work as intendend. It was created for my community but maybe someone was searching for something like that. https://github.com/Kaibu/node-be
NA;OFF0;LEN15:ntest; utest 0;
SQF;OFF0;LEN15:
STATEMENT;OFF0;LEN7:
STATEMENT;OFF7;LEN6:
STATEMENT;OFF13;LEN1:```
soooo ... now i am indeed generating an AST
but got trouble due to for some reason my offsets being completly off
NA;0;26;ntest; utest 0; 0 btest 0;
SQF;0;26;
STATEMENT;0;5;
BINARYEXPRESSION;0;5;
PRIMARYEXPRESSION;0;5;
NULLAREXPRESSION;0;5;ntest
STATEMENT;7;7;
BINARYEXPRESSION;7;7;
PRIMARYEXPRESSION;7;7;
UNARYEXPRESSION;7;5;utest
PRIMARYEXPRESSION;13;1;
NUMBER;13;1;0
STATEMENT;16;9;
BINARYEXPRESSION;18;5;btest
PRIMARYEXPRESSION;16;1;
NUMBER;16;1;0
PRIMARYEXPRESSION;24;1;
NUMBER;24;1;0```
this now looks good
@hallow rapids happy now with this?
yesss a proper parser 😃
still much stuff to work out though ... binary commands still need to get resolved correctly
It's still nular and not nullar ^^
@Sticky Handz#6202 pls post it it even more channels ... @thin rose where is the hammer of justice when needed ?
Done
@thin rose :+1:
NA;0;28;1 + 1 - 2;0;1 + 2 * 3 - 1; 6
SQF;0;28;
BINARYEXPRESSION;4;0;
BINARYEXPRESSION;0;0;
NUMBER;0;1;1
BINARYOP;2;1;+
NUMBER;4;1;1
BINARYOP;6;1;-
NUMBER;8;1;2
NUMBER;10;1;0
BINARYEXPRESSION;20;0;
BINARYEXPRESSION;12;0;
NUMBER;12;1;1
BINARYOP;14;1;+
BINARYEXPRESSION;16;0;
NUMBER;16;1;2
BINARYOP;18;1;*
NUMBER;20;1;3
BINARYOP;22;1;-
NUMBER;24;1;1
NUMBER;27;1;6```
@hallow rapids you can now get your SQF parser from the sqf-vm project (cpp branch)
though, still will get some improvments for creating more useful trees
ohh no ... wait ... totally forgot arrays 🙈 though ... should work fine, but did not tested
too much concentration onto the binary stuff
neat 😃
I don't have an immediate use for it but when the time comes I will definitely 😃
anyways
all now implemented and tested
Hey, where can i find my tbb_malloc on my pc? The extDB3 CMakeList.txt cant find my tbb and i need to set my tbb root folder.
Any ideas? This is the FindTbb.cmake from the open source extDB3 project: https://bitbucket.org/torndeco/extdb3/src/f1a08ecf20c7de0d1b043b600da9eb3c3d0b0f9a/cmake_modules/FindTBB.cmake?at=default&fileviewer=file-view-default
maybe anyone can help me :)
Yeah you really do if running 64bit dlls
okay thx i will try that out. @smoky halo should i just change the paths in your FindTBB.cmake?
i mean in the cmakelist
What are you talking about?
about the tbb thing
You need to compile a custom version of tbbmalloc if running 64bit
Why though? Any reason for it? TBB not available as a pre-built x64 version?
TBB there own custom code that has dll name hardcoded in some weird voodoo.
Its just minor changes
@fallow crest https://bitbucket.org/torndeco/extdb3/src/f1a08ecf20c7de0d1b043b600da9eb3c3d0b0f9a/CMakeLists.txt?at=default&fileviewer=file-view-default#CMakeLists.txt-136
I guess these are the default paths
You can easilly change it by using CMake GUI though
But honestly though if you can't figure it out shouldnt be compiling from source code
hm okay
@glossy inlet Just a simple change https://bitbucket.org/torndeco/extdb3/wiki/extDB3 - Changes to tbbmalloc
The release has the x64 dll included. Why do you still need to compile yourself?
Actually nevermind about my earlier statement :P. yeah i made change to make it easier to package & compile multiple versions together
in case somebody is interested in how i solved the precedence stuff in the parser: https://github.com/X39/sqf-vm/blob/cpp/sqfvm-cpp/parsesqf.cpp#L239-L258
@smoky halo so i dont need to compile the tbbmalloc_x64 myself?
because i just want to add a sqlcustom option ^^
Hello! Anyone know how sign EBO files?
😎
with credit to bludclot, dewrp.exe now splits UNbinarised wrp layers into separate pbos. Each one of which willl be less than 1gig in size. This gets over the 2gig limit that left some of you crippled with massively large maps.
this tool can only be used on exported (unbinarised) wrp files because the binarisd version is too late in the process.
this new option will also separate the wrp and the layers into two pbos if used. Quite some benefit for those of you just starting your map malking career..
caveat emptor, this feature is currently beta and needs testing.
just to be clear, the "old" method for binarized wrps still just works fine, right?
certainly. you 'feed' these modified, unbinarised, folders into the 'old' method to produced binarised files
there is NO change to the packing process for people making maps < 2gig
cool 😃
I know its something that is not ideal, but can you ignore missing files when using pboproject and binarizing a mod?
Ignore errors that files are indeed missing
use addon breaker, thats its main feature.
We once had a command line option to ignore missing files
I'm still running a old version of mikeros tools just for that option
I have paid tools currently, the cmd line option is removed for them?
I'm surprised you haven't hacked the new tools to do the same, yet
I'm quite sure that option is disabled everywhere in the newer versions. To prevent people from using it
I have no reason to do that. The newer versions get crappier with each update. So why waste time if I can just run a old version
I will probably need to ignore some few thousand missing files, it would be better to ignore vs depbo addons just to have it know a file is there
Wanna share dedmen? 😄
write a script to create fake dummy files
I think I have the old version on my CI server. I'll grab the link
Because... How would I get a unpacked version of Arma onto my Appveyor CI? Huh? TELL ME HOW MIKERO
🤔
No idea dedmen, not my problem . If you think my tools are crappy, stick to addon breaker.
Your tools are good. The old versions
Sadly you keep disabling useful features just because idiots where being idiots while using them.
that's true too because I have to cater for the lowest common denominnator who WILL fill forums with 'why doesn't it work' when the answer was right there until they disabled it.,
if i gve most people any chance at all to ignore errors, that's exactily what they will do.
In odd cases like what I am in, ignoring some parts will save me loads of time, opposite of normal use
I basically only need it to build dev builds of ACE. So I don't care about missing files for a quick dev build...
Sadly the 2 minutes "quick" turns into half an hour env setup before I can build with the newest version of the tools
the ability to disable file checking is there for high end users. THEY read the documentation.
and i also agree that cup and ace (and cba) are high end mods that need careful feeding.
Ill have to take a look when I get back on tomorrow, thanks 👍
What? Yeah.. and?
sorry misread above 👼
Quick question: Do mikero's tools or any other tools have a tool for packing pbos that will automatically binarize all of the configs and rvmats inside??
@pastel aurora Cut the spam please. #rules
Usually I would delete my reply to you now. Because I hate spammers that much. Be happy that I'm lazy
its not spam, i only put it in both #arma3_tools and #arma3_config because its kind of related to both and i didnt know where'd i get a better answer
Still a #rules violation. Both are related to that yes. Just like #general_chat_arma and #arma3_questions and #arma3_texture.
Just post in one channel that's related to your issue and you'll get an answer
@pastel aurora yes
Added: The 'Shots' diagnostic was enabled for the Diagnostics Executable
Oh boi
any of you know why VS doesn't allow me to install .net and node.js libraries on another drive?
i can get ths base IDE onto the drive, but everything else wants to exist on C
what do you mean by install ?
you should be able to place libs anywhere you want and just tell your build system where it will find it
@elfin oxide VS installer "installs" them. Moving them over manually
Figured here is probably the best channel to ask
Is there a way to publish a workshop mod without relogging to different account (Shared one because Valve still hasn't implemented multiple authors being able to upload)
Pretty sure you can upload via steamcmd (don't know the commands offhand), but it won't have any of the extra bells&whistles addon publisher does i.e meta.cpp.
Is just easier to relog though
For another mod i use publisher (the a3 tools one) CMD commands to publish, but in this case i gotta switch accounts and it's just an annoyance seeing all the other buildling / updating servers is automagic
I'll take a look at steamCMD publishing i guess, don't care about bells whistles
Well you kinda creating a headache for yourself there using 2 different accounts for uploading content.
The Meta.cpp is kinda important otherwise server won't be able to tell client the steam workshop id for the addon
I wouldn't publish under different accounts for the record.
I got a persona lmod on my own workshop, kand on the steam i usually play with
Then for another mod we have a shared account, because only the original mod author can upload changes,that's the one id'like to login to (temporarily) to publish updates
But i'll take a look at CMD, thanks.
Meta.cpp you can just upload it manually once and then you're good to go though aren't you?
At least that's what i've done in the past and seems good
Hey guys, im having this weird issue with signing a couple of PBOs. I did a signature check and they have failed (Err 0x20 Test FAILED!) and because of that i am unable to play on my own server even with the key on it. I tried re-signing them multiple times but it didnt work. Anyone know what i should do?
I even tried with a new key
Did you also try repacking the pbo and then resigning?
yes
with different pbo packers?
Mikero/Arma
no, that was the next thing i was going to do
i tried using addonbreaker but it excludes rvmats from my pbo
remove rvmat from the file exclude list?
rvmats were never in the list
dsUtils is possibly out of date/ not maintained. Afaik, the dsTools are now part of standard steam tools updates.
there's no reason I can think of why you would be doing this manually when pboProject does it automaticallly as part of the packing process..
I dont think this is the right channel for this, but does anyone ever get an issue in Object Builder where when they use ALT + RMB to move the camera it goes incredibly slow?
Yup.
Known problem. No known fix afaik. #arma3_model miight know more but I didn't read about a fix
running in compatibility mode was helping a bit I think
but 2nd hand info since Im on W7
and thats W10 issue
I've seen some reports that microsoft fixed it in some insider build
after all, that issue is more wide and some people managed to fix it on their end https://www.tt-forums.net/viewtopic.php?p=1193311#p1193311
@dawn palm It was actually a problem with pbos not being packed properly but ive fixed it with addonbreaker. Tho i really need to start using your tools. Im just having problems installing them since idk all of the things that are required but im sure ill find the list somewhere
@pastel aurora thruth to be told you really need to fix your stuff or it will just break in the long run
addonbuilder is not part of that solution if you dont know 110% what youre doing
ive fixed it 100%
"fixed with addonbreaker" means ductaped it
by that i meant i used it to pack the pbo and it packed properly. Not like some workaround
but addonbuilder does not really tell you if it packed properly
it packed
but properly is questionable
yes but i tested signature checks and everything in those pbos works fine and signatures passed
I can't see any relationship between missing rvmats, or 'packing properly' and the simple requirement to sign the result. Good, bad or indifferent, if a pbo is made, then signing the thing is a separate story.
Getting your pbo recognised by the engine to at least 'see' some result in game, is the first major milestone. So, genuine congrats on that. What you'll discover later is that the tools you are currently using do not look for, nor report any errors, not even if binarasation failed. In short the bis tools will do everything possible to produce a pbo, my tools wil do everything possibke to NOT make a pbo. The difference between the two is my tools try and remove the need to load game, test, fix, load game, test, fix, load game....
I understand that but as ive started moding from not that long ago, ive never really needed to use anything else besides BI tools. I just used them from the start and never really had any issues till now. Thank you for your advice tho, I really appreciate it.
you should try packing with pbo project to see the difference
Or even the pbo now.. Would be interesting to see a diff on the non-working vs the working PBO.
How big is the pbo?
If anyones interested, been working on some custom changes to Armake (will hopefully make it into main version). So far have have built CUP Terrains with it
Fork is at https://github.com/Torndeco/armake/releases
Still got some extra checks want to add in etc
note: changes are just for windows & using bis binarize etc
great job Torndeco!
how much validation does it do on wrp/p3d files now?
i.e. valid paths, land configs etc
Good job on that!
Since we're talking about patches to Armake: would it be possible to remove char something[2048], strcpy() and strcat()s from the code? They make my eyes bleed 😄
I started working on some macOS integration for Armake, such as preview for paa files in finder etc, works quite good
I don't even want to think how many ways there are to exploit this with a malicious PBO
seems like pbos with tiles has some issues with the limit of 4096 files too
i.e. most islands
for unpack/inspect
very convenient
and quicklook for big preview, https://i.imgur.com/5NY6EN8.png
@Stack (Overflo)#8649 requested the same. no luck
that's quite nice dahlgren
you should make an XnViewMP plugin if that's possible and make me happy :3
@karmic niche its gpl, nothing stopping for making the changes yourself & making a pull request etc
I know, believe me, I would have already done that long ago if I wasn't spending literally every evening writing code for the Frontline mod (4h+ a day after 8h of doing the same at work)
@dusky dune looking into extending the windows shell with the same functionality
I'd guess it would work for that application as well then
might be helpful,, might be not, because I'm not interested in windoze, but I found that
system("start NameOf.exe somefile");
//was far more usefuil than:
shellexecte(0,0,,"somefile.ext");
the latter relies on file assocations to trigger an exe
which, differ from pc to pc, or don't exist at all
in case someone with basic c/c++ knowledge has too much spare time and searches for new headache: sqf-vm still is in need of developers 😃
in case somebody needs AST generation for configs, also got that now (though ... it does not blindly parses everything to string to default meaning that somefield = string without quotas; will result in errors)
Yeah, configs are syntactically weird, you really have to test by parsing every single Arma config.
@nocturne basin but a config entry with something like key=value; does not sound like something that should be working
key="value"; should be the only acceptable form
wrong channel -> #arma3_model
@elfin oxide arma Config parser accepts that syntax
It might accept it, but does that also result in the value beeing parsed correctly?
As in when I execute a getText( config >> "key" ), do i get "value"?
or does it give back "" because he failed
value = hello this is patrick I think
getText returns "hello this is patrick I think"
@elfin oxide
thing = value with spaces and lots a strange CHARACTERS including macros;
is 1,000% acceptable in a config. because it's non numberic, it is automatically a text string and the "quotes" are implied,
you cannot compare this statment against sqf syntax "such as 'thingy' = ""key"";"'
be that as it may, the leading and trailing "quotes" are inferred in a paramfile, and it is the only way to do the following:
#define PBO_PREFIX Alice in wonder\land
model = PBO_PREFIX\my.p3d;
Can someone please make a tool for creating particle effects. ._.
you really have to test by parsing every single Arma config
that's precisely what bis binarise did up until the release of ArrowHead.
it used the very same code as in the engine which builds the master config.bin, and was exceptionaly useful as a dot.rpt. Saved you loading the game.
Post arrowhead, bis scrapped it because the time to process (I assume) took too long.
@dawn palm macros work in single quotes ' tho. So that's not the only way to use macros in configs.
agreed
David: You can do most of your testing in SQF and then move it to configs.
SQF?
#define BURP This is a Message for Dedmen.
DisplayName='BURP';
also,
DisplayName = #BURP;
DavidNickisson: The scripting language, see https://community.bistudio.com/wiki/setParticleParams, and the guys in #arma3_scripting would probably be able to help more too.
@dapper pivot but how can I test in SQF?
DavidNickisson: You can create a particle source while you're in the game and then quickly delete it and recreate it to preview different parameters. There should be some examples of doing so in that Wiki page.
I begin to port the Arma 1 tool made by ColonelSandersLite and Mandobole to simplify particle effects making: (http://www.armaholic.com/page.php?id=4859)
Th...
oops, wrong version - don't have atm fixed one
Btw. if anyone was interested in parsing Arma classes (from mission.sqm for example), I have ported Fusselwurm's arma-class-parser JavaScript library to Python so I don't have to emulate its functionality when I want to use it in my Python scripts:
https://github.com/overfl0/Armaclass
nice work.
uhm ... what for @karmic niche
i mean: why is a class parser needed at all? unless it is for syntax checking though
Definitely, the guy that wrote the original library and the other guys that were submitting PRs thought it was useful 😉
iirc that was used for some editor tool
We are using it to pass some metadata information inside the mission pbo about min-players and max-players for that given mission and we can then both access that information from within SQF scripts and also from an external python script that lists the missions available in MPMissions
In other words: we have an autorotation script that selects missions based on the number of players playing.
And also, lately, I wanted to add some constraints to our CI that is building missions to check for enableDebugConsole = 2 and break the build if it's set
...aaaand some other additional checks, like where the mission maker forgets to add isPlayable to the soldier entities and the mission just doesn't work in MP 😄
Granted, you could check for that manually each time but having a way to access that programmatically would be cool
theoretically, all that is already possible using sqf-vm (shameless self promoting)
😃
though ... there is no support for comments etc. yet inside the config parser due to missing preprocessor (and no support for comments in sqf for same reason in the new cpp branch, but i already plan on fixing both when mergin cpp branch to master)
@karmic niche nice thx
that reminds me, need to check if Sbsmac's sqm tool works on eden mission.sqm format.
dunno if it's relevant to mention this, but the api of my dll will access any class , any property, and any array, of any paramfile (binarised or plain) in a few simple function's()
perhaps this parse above is a few levels higher up the tree than that.
It would probably be relevant if I knew what was the API of your dlls ;), and even then I would have to write a wrapper for that dll(s) since I want to access everything in Python
@nocturne basin we use it for mission validation and improvement suggestions, i.e. checkin if headless, zeus etc is correctly configured. we also use it to generate html docs for mods.
@dawn palm are the header files available for subscribers yet? 😄
as soon as i can, am in process of cleaning them up/making them more formalised. The funcs() haven't changed, but they're not, currently, organised consistently.
you're on my ginea pig list Dahlgren
@scenic canopy Start working on sqf-vm and you can do Unit testing
Hehe
but I've already did 😄
maybe I should some more code analysis
I think I put a clang formatter somewhere
Hull dull
Sqf-vm cpp branch got you covered
Full ast Generation for sqf
No preprocessor yet
But that will come too
Is there docs/a guide to setting up a mod in CBA fashion, I presume installing CBA as source is one step of that process
in CBA fashion?
Have a multi-component mod that I'll eventually want to reference other components in
what has CBA to do in there?
create a mod folder, put PBOs in it and there you go with your multi-component mod
In a way for all the macros, i.e. GVAR, FUNC macros
if you want to use XEH of CBA, there are docs for that
macros ... that bs again
also, that does not rly belongs to here but rather to either #arma3_scripting or to #arma3_config
the answer remains the same (put it all in a mod), but to specifcally USE text macros, eg defines, you place all that you think you will use in a single pbo who's prefix is p:\jaffa\jaffa_macros. The resultantg pbo willl of course be called jaffa_macros.pbo
the above names of course are only eg's. you call it whatever you like.
CBA and ACE seem to be a bit more involved for their dev side stuff, they seem to use some form of standardised setup
pboProject will build that special 'text file' pbo for you, providing you tell it to allow either .hpp and/or .h in the pbo
then you start using a 'standardised setup' too.
But what is that standardised setup and where can I find it/the setup/docs on it
it's up to you to set your own standards and workflow.
but as an eg, every subsequent pbo you make (which presumably will take advantage of the macro library YOU wrote, will:
#include "\jaffa\jaffa_macros\library.h"
it's up to you to set 'standards' of how you 'present' those macros to make them readily uinderstandable and consistent in usage,.
one exampel, eg, would be the macro JAF_HITPOINTS(...)
JAF_GLASS(....)
when it comes to something more dynamic, such as firing a rotating belt machine gun via sqf, the rules stay the same.
I get how macros work, I have used them
so make a library of macros!
later on, you will probably separate at them out to jaf_core.h, jafe_base.h, jaf_guns.h
it's still YOUR rules
I'm specifically on about the stuff like these:
https://github.com/CBATeam/CBA_A3/blob/master/addons/main/script_mod.hpp
https://github.com/CBATeam/CBA_A3/blob/master/addons/main/script_component.hpp
https://github.com/acemod/ACE3/blob/master/addons/main/script_component.hpp
https://github.com/acemod/ACE3/blob/master/addons/main/script_mod.hpp
That suggests to me there is some sort of standard CBA setup and possibly toolset
and my guess is, it's all documented how-to at top of each file.
But surely there's some form of overview somewhere, some external documentation
can't see much point you re-inventing that wheel, because you aint never, not ever going to maintain it as well and as consistently as those folks do.
How is using what seems to be a standardised setup reinventing the wheel?
well on the basis of your question, i probably misunderstood, and thought you wanted to write a series of macros for yourself.
if what you're looking for is how to apply CBA, the always up-to-date answer is top of file where the major defines are #ifdeffed
Yeah, I can probably figure it out, I'd just expect there to be some sort of overview of how the mod/components should be structured
Things like GVAR are probably overkill for your own projects though.
@dapper pivot I can use google, I already know of that page
If there were, they'd be out of date at each update of the code 😎 . But yes, i do get your question, and i'm not aware of any doc that describes how the lego blocks fit together. I can easily be wrong about that.
You call it overkill, I'll call it component seperation
Sorry, didn't know you were working on an ACE sized project.
It doesn't need to be ace sized to be seperated into compoents
i.e. One component is specifically focused on adding custom TFAR radios with accompanying custom code. Another is administration utilities
The CBA macro's don't help with that, they just let you change prefixes from a single file.
How do they help though? The only benefit is you can change the variable prefix from a single file.
But how is that better than just "call bis_health_healPlayer"?
I don't need to justify why, but I prefer to spend a bit more time to setup things in a way that saves me time down the line
Code clarity, Varname conflict avoidance, tooling to quickly check configs and sqf files for errors or misformatting etc
It's also easier to setup now than when/if you get a larger codebase
I know that fine well from other code projects where I've made that mistake before lol
The whole gvar crap is literally Bullshit...
Though, stuff like gvar May Look useful, it is nothing but forcing Name conventions
@hollow barn https://slackin.ace3mod.com/ I guess you won't get any further help here. Back when I did it I just copied from CBA/ACE by example. I don't know if there is any tutorial on that
Though, stuff like gvar May Look useful, it is nothing but forcing Name conventions
That is exactly what it was made for though....
Which is less useful now with CfgFunctions (plus you get the benefit of the help viewer with CfgFunctions registrations).
@hollow barn https://github.com/acemod/arma-project-template
I'm not entirely sure but I think I've read/heard somewhere that it might be/become obsolete
That exists?! :U
Last update 2 months ago. I think the tools are outdated again but you can just pull them from the ACE repo.
Looks up-to-date otherwise
it's tailored to the ACE3 framework as per the readme but I guess that's essentially just CBA
CBA framework isn't as neat as ACE.
CBA uses CfgFunctions and has script files directly in the pbo instead of a functions subfolder like in ACE
the template includes some ACE stuff for example
#include "\z\ace\addons\main\script_macros.hpp" instead of CBA
seems like it's the only one and you can swap that to CBA I guess 😛
yeah ACE is pretty damn clean but CBA is mostly just scripts anyway so it's fine as is imo
as in CBA is more like library-ish while ACE is more framework-ish ^^
CBA scripts + macro library and few smaller frameworks, ACE features, frameworks, and more 😛
and yeah, you should be able to just change that include over
it's slightly out of date, no beautified component names and few other dev stuff
@dawn palm is it technically possible, do you/community have the knowledge, to develop binarize tool or is there some aspects of the internal workings not known?
Is technically possible
But a lot of work
Armake is doing that
But paused it at about 90% completion because he wanted to get it into a working state faster
Also you need to maintain it. if BI creates a new p3d version you have to reverse engineer everything that changed. Need to find out what the changed bytes mean.
I guess after Tanks DLC when Arma will get more quiet that won't be much of a concern anymore
Models is the hardest part of that. Configs are easy.
Textures are also hard (converting to paa) atleast armake still has problems with that. Guess it just takes a little more time to get it fixed.
What else is binarized? rvmat's? Also basically configs.
Most stuff about models is implemented in Armake already. Afaik there were only some problems with shadows currently.
Oh and Animations are completly missing I think.
The knowledge is certainly there. Just needs time to get done.
okay good to know, and yes WRP is big part of that "what else is binarized". thanks for the answer.
Oh. yeah WRP is also not implemented in Armake afaik
I've been having some private discussions whining to bis devs about 64bit binarize. the current 32bit binarize crashes on WRP with large amounts of objects which is a problem for us terrain devs. thought it wouldnt hurt to ask around if we as community could technically develop a binarize tool of our own.
We certainly can.
I personally don't know about WRP. I think KoffeinFlummi also isn't much into that.
But @dawn palm or @smoky halo Probably know?
And with enough time it also wouldn't be impossible for me to figure everything out
@smoky halo is working on terrains packing for armake, but not binarization, that's just using BIS Binarize still, but he might have some information
wrp are quite tricky. they are using a quad tree which is not trivial to handle
Oh gosh. I looked at quad tree in Arma a couple times. I quickly found a easier way to do what i wanted to do 😄
also I am not sure how difficult the roadnetwork creation would be
@glossy inlet ask @rare path what he thinks about quad trees in Arma 🤣 (actually, can't remember if it was any good or not.. hmm)
hmm is road network the old tech, we are now using roads.shp and you can easily binarize terrain without them?
afaik the roadnetwork will still be created in OPRW for the ai from shp though
not completly sure to be honest
I have to say no. my roads.shp is not even listed in the same config as WRP in the addon I mean, my roads are listed in config only terrain err config (difficult to explain). the way I see it, binarize dont even know about if roads are used or not, also I often times binarize WRP first with roads // commented out.
the idea of a quadtree and the datastructure is simple. but the way BIS is using it in OPRW file format is tricky 😉
If they use their default serialization then it shouldn't be too hard I guess
@pliant lynx well I assume the RoadNetwork structure in the file is empty then. would be easy to check
Something todo with old roads is encoded in binarized wrp. Encountered that with cups sahrani, was effecting ai driving on certain roads
btw: the OPRW format is here: https://github.com/Braini01/bis-file-formats/blob/master/BIS.WRP/OPRW.cs
good stuff T_D
As Dedmen has pointed out, replacing binarise with something better falls over the moment bis introduce differences to any of the formats. Notably p3ds.
My dll already replaces binarisation of any paramfile (conffig.cpp eg), texheaders and rtms. The effects that bis could introduce to those file formats are limited and (imo) easily accomodated.
The only items pboProject lets binarise get near are wrps and p3ds. That won't change until bis run away with enfusion and stop meddling in this engine.
Correction: external creation of texheaders.bin, and rtm files is currently disabled in my code.
so I guess the waiting game continues, will bis release 64bit arma3steam tools before arma3 is "EOL".
unlikely, imho.
I don't think they're able to bugger up wrp anymore since the production of the exported wrp and what 'extras' can be introduced, is now out of their control. Altho they did manage to screw up chernarus+
well would you be willing to add WRP binarization to your tool-set?
no, because any change to p3d map= affects the contents of a wrp. TownNames have been externalised so they can add what they want, road TYPES are externalised, and road shapes.
(roads aren't much of a concern providing the ai road masks and road clutter, aren't used anymore)
externalised here means,. they've avoided the necessity of altering the contents of tb / visitor exported wrp.
okay
Look at how old arma 2 is and the eol update is still to be released fully
So I would not expect an eol update for arma 3 on the next year or more
I am sure development comes to a complete stop after the tanks dlc but there might still be minor bugfixes for a while
@Arkensor#1337 development will start then!
community is prepared to implement new features 😈
@nocturne basin If they would give us the possibility to edit arma 3 and publish community releases sure ...
intercept
If that will ever be whitelisted
0.o okay
So if they don't do it by request. They'll do it by accident some day
Ic
Arma 2 is EOL a long time ago when it comes to changing any formats, they are just bug fix patches
in short, after Tanks DLC we don't expect changes (or at least not any major ones) to any format used by the game
http://prntscr.com/ihxmqx
can some 1 make this in to english for me plz lol so i (a 6 year old) can do it lol
open notepad
subst p: "M:\PDrive"
save as .bat
double click
👍
name it like mountpdrive.bat or something
/d will delete the virtual drive if it exists already
so good to have that there I guess
that right :S
o wait u wont me to make a new file
its ok i got it thank you
👍🏻
@glossy inlet @woeful cliff from what i recall you both were working on performance/script profiling/debugging in the past, did you? and if so, still something to be released any time soon? thanks for the info!
The SQF optimizer is the next thing to be released
there is the intercept optimize plugin
I have a ton of features planned for the unscheduled script profiler. Mostly though aiming at displaying the data in a readable form.
Debugger might get revived if someone wants to use it. But no interest so far
cool. is there some preview info or images available or sth?
or is it somewhat similar to https://community.bistudio.com/wiki/Performance_Profiling
For my profiler? currently about the same as that yeah.. but.. one sec
For the planned new display features
http://brofiler.com/ https://aras-p.info/blog/2017/01/23/Chrome-Tracing-as-Profiler-Frontend/
Basically just a different form to display that stuff. Not bound to having profiling build of arma to display it
theoretically one could write an external tool to display those informations
Or just use any of the dozens of existing ones. Which is exactly what's on todo
yup
I can also use Intercept to create custom UI controls directly inside of arma. But why do a ton of work if you can just use something that already exists
@glossy inlet very cool work 👍
is the linked intercept version still the one to use?
does it work also with diag.exe builds? (it supports also the capture cmds and so)
Should work with diag. I think there was a problem with that currently.
Aka it doesn't automatically instrument all scripts. I cannot debug arma stuff currently so the fix for that is getting pushed back
but if you manually instrument your code it'll work fine
Last Intercept test on diag was a while back. Should work but if it doesn't then tell me ^^
ok will see how it goes
did you consider to log the results to some db and have some graph over time?
It can capture multiple frames. But something like live capture is not yet there
BI is/was doing that with -autotest and some (very) basic fps logging missions (back in OA/A3 pre alpha at least). it can be useful to find if you screw up (or someone else) at some point
will come with brofiler integration though
well i meant really longer term (day by day, etc)
That will log/display live if it's enabled
and it should also be able to save stuff. Meaning you can record a benchmark mission. Save that. Then update game, run it again and then compare to previous result. I guess
sounds good. i am thinking more about scripted stuff - like if larger components get refactored or similar to have some performance track to follow
https://github.com/acemod/ACE3/pull/5728 Here is a example of the profiler being used.
Keep in mind it only works for unscheduled. Because performance in scheduled doesn't really matter anyway
@glossy inlet getting corrupted core.pbo or sth with that intercept version (Intercept_0.10.0.588.zip)
https://i.imgur.com/Pa4XMbp.jpg
updated to latest 7z but didnt help either
ty. testing now
Alternatively latest master branch build https://ci.appveyor.com/project/Glowbal/intercept/build/708/artifacts
the _host one
PS: dll location in the subfolder is on purpose right? \@ArmaScriptProfiler\intercept
yep
i want to plot the environment sound controller values as some image (ie sea, forest, house, etc - see https://community.bistudio.com/wiki/Arma_3_Sound:_SoundControllers)
so far i found this service http://www1.heatmapper.ca/image to do it as a heat map (the site is somewhat slow but you can also upload the background image - aka SAT map in this case for better reference)
- any idea how to visualize the different values together?
- any other services or ways to do the visualization
color grid in excel could be another approach, yet you probably can do only a very rough resolution with it
another might be ingame using markers and coloring them
I think @scenic canopy could be able to help you with that
All at once or one per type?
@scenic canopy for AAO some decent way of visualization would had to be found first
heatmap would probably only represent one value at a time right?
could have each type as a layer
yep layers probably makes most sense. at times you may want to overlay them/two i guess
yeah
we mostly use leaflet.js to do map thingies
but heatmaps can be tricky
probably better to precompute all the layers if you want fast and consistency
what purpose would the heat map achieve? Just visualisation or do you want to do more with it (processing the data)
@normal wigeon
- to see if there is still bugs on BI's end (engine wise or with binarize)
- to see if terrains have bugged values (need to be rebinarized)
- visualization to help terrain and sound designers
aha ok just visual aid then
well you could do more with it if its decent
like for AI scripting, strategic layer analysis (ALiVE etc), for mission logic (some of the params are dynamic), etc
visualisation is tricky if there are more than 2 parameter active at the same time. Due to the number of them you would have to assign colors and then blend between them, but you can only blend between 2 colors
multiple parameters is not necessary - just might be useful at times/give a better/deeper perspective
like the sound volume is usually/often a combination of some, or the highest among the different "wins" (volume turns out more dominent)
for AI map reading i have done some analysis and imo you need multiple purpose built maps for that. The sound source could be misleading there
New version of https://github.com/Torndeco/armake/releases if someone is bored.
Its basically custom version of armake with changes for binarize.exe, so there really is no point testing it on linux.
Recent changes are
Added some MLOD p3d class type checks / checking if model.cfg has animations class defined etc
Fixed issue getting binarise.exe location
Not sure if this is the right channel to ask but anyway:
Is there some documentation on the enfusion engine and or (more interestingly) its scripting language (Enforce?) 🤔
Yes. Lots
Download DayZ standalone. I think in dta there is a system pbo with all the docs
i would guess much of the Enscript (ToM/CC) stuff is also still relevant as reference
Well I don't own DayZ so that'll be a problem I'm afraid 🤷
What is Enscript?
script engine of said games and the other predecessor to Enfusion (next to RV from OFP/Arma)
Enscript is the scripting language
Ah okay. Thanks!
I'll see what I can find out on that
Not much actually... Does someone happen to have a link to some docs? 😇
As I come from Operation Flashpoint/Arma series, I was surprise not to find a scripting language in Take On Mars (as SQS/SQF), even with very few commands. a...
https://armaworld.de/index.php?attachment/2456-npn9peb-jpg/&s=ab385aba2bd606294dd7bf893ec5da1ea13f3d01
Since Thygrrr released his cc unpacker tool and thus exposed the moddable scripts, the next step for the community is probably to put down our findings of p...
Thanks a lot!
Anyone know if there is a way to run makePbo without it binarising the pbo...?
@BrianBoulders#9667 makepbo -n
@sick verge There is a EnfusionScript Compiled HTML Help File in the DayZ folder which seems to tell you everything you need to know
I would upload it here for you but not sure if thats allowed?
I would really appreciate that but I'm not sure either... 🤔
Just making sure as I'm pulling something out of the DayZ folder haha
thought police active
Just don't send it to @tepid spade via PM 😉 😉 😉
Lol that's what I just suggested xD
DMCA precrime has already been informed by NSA and SWAT team is on the way in 5 4 3 2 1
😱
Well I don't own DayZ so that'll be a problem I'm afraid
well what's the point then?
The point being that if one trusts in the current rumor Arma 4 will be based on Enfusion as well and I'm assuming that the scripting language will be similar if not the same. Therefore I'd like to have a look at the general structure and stuff as I might add support for it in my eclipse plugin (somewhen in the future of course)
Oh shit the black vans have started rocking up!
Why didnt someone tell me BI has this kind of presence all over the world!
(most of) the old hands here learned arma one, via the xbox elite code. It took sth like 2 years for arma to come out of that, by which time we'd pretty much figured out the new fangled rvmats and etc
I don't imagine the gestation period for a4 will be any quicker, if they bother at all.
I guess it doesnt hurt to have a look now and just see what the go is
true that too. but you can probably ,most likely, make some damn useful tools, right now. Eliteness is an example of an xbox elite tool migrated to arma. I guess too, if soemone were able to supply new scripting examples for people, without the bother of loading up a dragon product like dayZ, that's a good option too.
and, if there's a merciful god, it will have no relationship to the sqX awfulness.
True ^^
just imagine with the cleverness of folks in here, how a script parser could finally be made that didn't break each time bis added a new, idiosyncratic, verb to the language. A proper lint parser does not need to know the specifics of functions() or what they do to know whether there's typos or missing params. Over the years, every attempt to make one for sqx has 'worked' for a month and then the author gets the shits at the futility of constantly ammending it,
That's why I chose to make my Plugin learn how to fetch those information right from the BIKI. Like this I don't have to release a patch for every new scripting command 😇
It relies on the BIKI being properly maintained though 🤷
So it relies on me? 😄
I think I still have a couple wiki commands on my list. That were added a couple months back
what info do you need? return type and argument types and name? You could also scrape the intercept pointer list.
It relies on the BIKI being properly maintained though
that's a klever way of getting round the unknown orders of precedence in unary and binary operators
you should not need to give a rat's arse what the operator does for it to be syntactically correct.
In any case, you should be able to fix your parser when it falls over from lack of info by simply editing the biki yourself (rather than your code and re-releasing it as version 9..99 recurring)
Basically yes @glossy inlet ^^
Yes that's all I need. I do also require the page to be layout the way other sites are (especially when it comes to how the syntax is being noted).
where can I find that list? Might have a look at it 🤔
That's exactly the idea behind it @dawn palm :D
Thx
Some things like == and such are missing though
but these usually don't change anyway
Why is there nan listed for some commands?
Does that mean that they can also deal with nan as a parameter?
that's probably the arg/return type
+1 respect to you @sick verge
https://github.com/intercept/intercept/blob/master/src/host/controller/controller.cpp#L111 Here is the code that generates that list.
Ah and it also only lists array and not what elements in the array are expected to be...
😅
That means nan is in arglist... But isn't that weird?
It just means it won't throw an error immediately if you pass NaN to it
Ah okay... That's where the trouble with nan not causing errors comes from
The body of that function might detect the NaN and still error out. I don't automatically parse the function body
Ultimately a more conventional language with less quirks can utilise more IDE capabilities outside of the game. I think the workflow needs to be fixed so we can run the engine to an extent outside or alongside an IDE and edit on the fly anything, the speed improvement that would bring to development of mods would be enormous.
The issue is that its another custom language, which means tooling is going to be slow going again. If a well known language had been embedded instead then that could have been avoided as could all the development time on the language, instead they could have focussed on the API and interfacing. Still a bit disappointed they went this route but its better than SQF.
@smoky halo i call that bs
thing is more: people do not care for IDEs
developed ArmA.Studio, stopped when there simply was nobody interested in it
could have added a shit ton of stuff up to the point where it would have warned you when you pass wrong arguments to an array
Enfusion, i could do the same thing
the moment i get the AST generator running, i can integrate in my already existing ArmA.Studio and could be done with it
but again then: nobody would be using it
so what would be the point in creating the toll afterall
But I think the reason for that is the cycle time of development is so large due to the limited way in which incremental changes can be done that an IDE seems pretty pointless.
uhm ... wut?
must've been too hard for them to use the other half of the C(++) language that they're already using as config.cpp.
how tuff could it have been to simply apply a library of function()'s with laid down in concrete parsing rules?
rasberry pi's, arduino;s, lua, even half-life and it's friends all use the universal_syntax(), but (these guys) know (better i guess) } // end func
no
do not mention LUA @dawn palm
there is so many better things in this world then that
sure, agreed.
only reason to ever suggest LUA would be if you are restricted to C
if ( (its_universally(understood))=="syntax") {return half_of_them_are_out_of_a(job); }
too hard for them to develop a core library beginning with GetPlayer(), or even Get(player) and Get(object). It would require a bit of imagination.
what's wrong with C? 😄
It literally has no pluses whatsoever 😛
haaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
problem with SQF is the way it is build
there are no rules of precedence.
because it was build for non-programmers to understand
there is @dawn palm
and that is pretty damn simple but not so easy to read out of the syntax
not the operators themselves. you have no way of knowing if they take an operand (unary) or need two (binary)
indeed
but that is what i was talking about: syntax was not build for programmers
idea surely was initially that anybody could understand it
and they did a good job with that
op1 widdlefunc op2 or?
op1 widdlefunc ? or simply
widdlefunc ( a constant)
as said: syntax has basic rule
how tuff could it have been
When I'm giving a lecture to the Python programmers (yup, I'm really going to programming conferences and meetups and giving lectures about how we created a new game mode for Arma in Python 😄 ) I give them a "guess what it does" quiz and show some SQF.
Now here's a quiz for you: guess whether they can guess correctly ;).
And then, the funniest part of that is the fact that the SQF code I'm using in my slides has been taken verbatim from the BIKI as an example of use of some command.
No comments on that. It's just sad.
(((exp1) exp2) exp3)
unary and nular are exceptions
binary always works that way unless precedence says an operator should be executed first
- and - are unary operators in
rad +60;
and binary operators in
this + that;
that looks more complicated then it is
python, C, C++, .. have more simple syntax
but for non-programmers, the upper thing is easier to understand
unless, filled with those notes 😄
because semantically, it says you what happens:
"get the friend value of the killer side with the victim side and check if it is < 0.6"
@woeful cliff probably could run it through is tool to output something better
thing is: i see beauty in SQF due to its approachability
i mean ... there is a reason why there is a shitton of people scripting without knowing what they do
The notes are yet another way to make the slide funny. Because the arrows show gradually, while I'm explaining everything and then it gets to them that the whole syntax is ieven more nsane with each next arrow appearing 😛
and them being at least to some degree successfull without ever understanding that there even is a BIKI
BINARYEXPRESSION;0;0;
BINARYEXPRESSION;0;0;
UNARYEXPRESSION;0;11;
UNARYOP;0;4;side
VARIABLE;5;6;killer
BINARYOP;12;9;getFriend
UNARYEXPRESSION;22;11;
UNARYOP;22;4;side
VARIABLE;27;6;victim
BINARYOP;34;1;<
NUMBER;36;3;0.6```
btw @karmic niche
no one, not even bis devs, put sqf on their cv's. It's a career path going no-where
@dawn palm as said: not build for programming
SQF due to its approachability
Cool. Now tell me why it's not:
side (killer getFriend side victim < 0.6) but side(killer)
only sad thing is that there is no second language besides SQF
unary take the right-hand instantly
binary run through the full checks
And why getFriend has something to its left and right whereas side does not!
nular, unary, binary commands
simple as that
programmers should be capable of understanding the syntax when shown the actual BNF
or when explained that a nular is more or less a variable, unary is a modificator of an expression (essentially unary commands can only have variables, values or brackets on their right side, binary would be false syntax) etc. etc.
nular, unary, binary commands
Great. Now next question: how do I know that side is an unary command and getFriend is a binary command? :>
You really don't see anything wrong with that? 😄
you should not have to know the definition.
like ANYTING wrong? 😄
that is simply a stupid question
there is no +, -, *, /, .... in SQF
there is a narrow set of instruction in the VM
need to meet some friend in the gym now
we can continue afterwards (already getting late 🙈 )
I don't think there is a need in discussing it. You won't convince me that there is a better way of saying that X is a function than using it as X(...)
which incidentally is how arrays[]={work,,,,,,,};
bis have been unable to change the rules for them, even in sqf
I really, honestly don't understand people defending SQF's syntax. The only reason that I see is... that they've spent so much time with it that they are just starting to get used to it and don't see its flaws anymore.
Some kind of programmer's stockholm syndrome (not joking)
@karmic niche that is the thing: sqf has nö functions but binary operators
I recreated sqf... I simply now have an understandin of the syntax itself that allows me to see everything detached from arma
@nocturne basin how to put it: I understand. But I don't care because... it makes no sense.
There are people who created Brainfuck. The language (still talking about Brainfuck here) itself makes sense if you look at it and realize that you are able to translate it 1:1 to C.
But it still doesn't make sense from a normal programmer's, coder's, modder's perspective. Sorry.
Check the bnf for Brainfuck 😄
Sqf is not brainfuck is the thing..
if you wrote a language in mongolian with reverse polish notation thrown in, someone would love it, and most would avoid it as completely undecipherable. that's how I see get player nearest object.
plus there's a layer of defensive hypocrisy here, most people writing missions understand mission.sqm and have to hand edit desc.ext. both of which have the exact same rules as config.cpp's and rvmats. so to introduce gibberish as the scripting language is just another layer of complexity, no-one, needs.
my dll btw, does indeed handle sqf syntax and checks it's validity because bis have been unable to change the rules for any syntax that produces constants. eg any mongolian written inside exec/evals, and all sqf written in model.cfg's have not changed. so i can confidently say i understand the parsing rules for that crap.
but, this convo started with enfusion, and it seems we have to live with mongolian version2.
so it's back to the same shit where no-one in their right mind will ever create an external parser/compiler for this nonsense.
I haven't seen the language yet but I've heard a lot of people saying that it actually DOES make sense. Isn't it the case?
sqf 'makes sense' too.
Oh, so it's that kind of "makes sense"? 😦
I wonder why they go through the hassle of creating another custom language. They have to code a new parser, document the language, maybe adapt some tools. instead they could just take something that is already there, documented, has great tools and tutorials. where would be the downside?
Are you sure? But wouldn't it make sense for the higher management to cut costs on language development and hire normal people instead? (sarcasm not intended :P)
well if I'm taking my advice from an 'expert' who's sole interest is in preserving his carreer, I guess they get bad advice.
the guy coding and developing that new language could easily work on something else.
it's almost laughable if it weren't so damn pathetic. they moved from sqs to sqf and introduced the C ideas of {braces}; but just could not follow thru.
I'd understand the "we can't afford nor have we time to make a full rewrite" argument.
But then they are already rewriting everything to enfusion...
yep, just my point
well i was being sarcastic because it makes no sense at all to keep pursuing mongolian when they're dev cycle would take a quarter of the time, and have, as you've pointed out, real tools ready made, and off the shelf.
maybe they are burned childs due to the failed JAVA integration experiment they did in ToH times
if you're going to invest let's say, a conservative 5 million euros in this enfusion saga, spending $100 on an open source compiler is cheep. They did it for config..cpp's thieving open source C++, but functions() must've been too hard for them.
they did not. They implemented it themselves. just took the syntax as inspiration
i learn something new every day.
but they've had no problem using outside source for lzss eg, lzo eg, and even those wrp quadtrees. It can;t be that tuff to even write a c functon compiler, surely?
wrp quadtrees are also their child
well I can imagine how Java ruined their experiences lol
but as said, I also don't see a reason developing their own is better than taking something that already exist and people know
they could even support more languages with an abstraction layer
I bet we'd see a lot more being done, and faster
@nocturne basin Not really If the friendliness of the side of the value stored in the variable victim towards the side of the value stored in the variable killer is less than the number 0.6
Wait a second... Are you saying you'd like BI to keep SQF for ArmA 4 instead of giving us a new (hopefully better) scripting language @pearl beacon ?
SQF isn't bad as a language itself, just missing a few things, like array access
readies the shotgun
Missing a few things like everything that Intercept CBA add's 😄
yeah
And if BI would have time all these commands could be easily integrated.
sure new one might be better, I am just saying it would be way easier for them and modders to use some language that's established
SQF won't get faster tho :U
SQF is compiled :u
optimizing stage is missing
If they do the same thing with ArmA as they did with tom then a new scripting language will. Be seriously awesome as the community can change literally every aspect of the game
with tom?
Take on Mars/Carrier Command - Enscript
Haha I was asking just that earlier this day ^^
But not really as it seems... The only source is a post in the forums of a device stating that the whole game is written in the script language which means that everything in the game can be changed with the scripting language
writing a language stack is not that hard @smoky halo
can be done by a single person in roughly a week
design however, is a different story
and enscript looks like a simple variant of C++
or ... squirrel (http://www.squirrel-lang.org/)
@nocturne basin might be the case but as I said there is more to it like documentation and tutorials and tools etc. And most important: why even bother?
the documentation you would have to write is literally the same for any language
documenting that the * operator is executed before the + operator etc. can be done quite easy
in not even a few hours
but it is already there for existing languages. I am not talking about comref
I am talking about the language syntax and features
that is what i just said
documenting that can be done fairly quick
and has to be done in the designing
which will take more then just a week
but why even doing it?
for one particular reason: you can design it the way you need it
what very specific need BIS could have?
for starters: spawn
ok, now we getting to a point
and according to the linked forum post, enscript is more "low level" so i would guess that their objects (like player) now literally get linked to the actual player.<method> stuff
unlike eg. using lua, this would also be a pro-selfmade
though .. you probably could do the same thing in lua etc.
thing is: writing your own language is not that much of a task ...
using an already existing one however will force you to live with the problems that exist
thing is: i would at least have used eg. the LUA VM but with a custom language ontop (but that is because the LUA VM can be considered as damn stable and LUA as a language is just horrible)
writing your own language is not that much of a task
What about writing your own GOOD language? 😉
@karmic niche created SQF-VM
could design one ... but tbh ... i do not see much of a point as nobody would ever use it
not even me ...
simply because i have no use currently for scripting languages
Hint: if it was that easy, we'd have thousands of programming languages active right now @nocturne basin
we have @karmic niche
Active = more than 20 users, lol
usage does not tells you anything about actual languages written
as i said: i could create one, but nobody would ever use it probably
Stack (Overflo): GOOD language
unless it is some obscure russian top-secret community project for a weirdo game
define a "good language"
all serve a specific purpose
most languages nowadays are still in use simply because they always have been used
eg. JAVA ... there is NO reason to let this monster continue to live
GO is another example ... it would never kicked off that much if it wasn't google behind
http://www.squirrel-lang.org/ this one for example also: barely known and used
writing a language is simply not hard
getting people to use it is a different story
in my head right now, i would not have any scripting language that allows for easy threading (as simple example of what i could write)
I still dont get what is the benefit of designing a new language. What would be wrong or a problem for BI just using the python language?
While you you are partly right, you also have to take into account the ease of use of a given language (i.e. no arg1 command arg2 for example), performance of the resulting code, how powerful it is do stuff like extending other people's code (polymorphism, inhertitance), etc
performance can be improved, for starters that is completly unimportant
python is crap, just "better" then lua ..
I don't even have issues with SQF because it's what I learned
python is crap
End of discussion 😄
there will always be people saying they dont like a certain language
But I really would much prefer to have a 'real' language so i don't need to learn a language that i would only ever use within arma
existing or new, dosent matter
And looking at what i've seen for Enscript... it looks like the same issues coming
Sure cool you can learn some basic concepts
There are actually two problems with Python (and I'm saying that as someone who writes Python for a living)
- Its speed
- It's impossible to sandbox without using things like PyPy
But you're still learning a language that is purely for Arma purposes and really doesn't carry over well
The speed doesn't matter, compared to SQF though 😄
you always would have to "learn" the language because it is not the language but the full package you have to learn @Adanteh#0761
C and C++ is dead-ass simple if broken down just to syntax (all other languages are too ... unless we talk about assembly)
replace python with any existing language. of course you will always find problems but I think that is still the case with the custom language
as said: benefits of writing your own stack (not language at all though) is that you can adapt it to your needs
personally, i would like to see squirrel
but ... enscript is fine
you can still build your own stack around an existing language
Benefits of using a well established language:
- It works
- It works faster than your language that you and your father in law just invented in your backyard. Yes it does. If yours was faster, you'd be rich and not talking to us right now.
- You have a gazillion of libs ready
- You have a gazillion of doc pages and blog posts about it
- Almost any problem that you will have using it is already solved on Stackoverflow
- You have hundreds of thousands of people who already know that language and can start modding it RIGHT NOW
- Even if you don't know the language, you learn it and half a year later, you can get a well-paid job with your newly gained knowledge
Beat that @nocturne basin !
you forget the downsides
and that are fairly simple to sum up:
- Integration could create problems
- Missing features that are mandatory for what you plan to do
- You have to live with the quirks of the language
and your second argument is completly BS ... people use python for god knows what reason ... and java ... and ... and...
for BI, i can imagine that they want to limit file access and do not want modders to be capable of just taking some OpenGL python library, import it and render some idk ... aimbot directly in the script language, undetectable because it is the game itself that renders that stuff and hosts it
you forget all those aspects
we do not talk about some buisiness application here
we talk about a public modding interface
besides ... i already created a language (that compiles to SQF though) ...
i would not do it the way i did back then, but i already did created one
So, as I said previously, you are partly right.
- Integration could create problems
Yes, but implementing an interpreter that would do everything that your company requires would create much more problems. [Yes, you can write an interpreter in a week. You CAN'T write an interpreter that will be bug free (at the Python/Ruby-level), fast and secure in a week - surprisingly, those take years to be completed]
- Missing features that are mandatory for what you plan to do
Again, still less time than implementing that from scratch
- You have to live with the quirks of the language
Then you choose the language whose quirks you like. Good thing that SQF does not have any quirks whatsoever and everyone loves it ;).
people use python for god knows what reason
This is low quality bait.
i can imagine that they want to limit file access (...)
This is the first fully valid argument. It's a hard problem in languages like Python (but you can fix that using PyPy sandboxing [any BI dev reading this?]). That's the reason you then embed languages like Lua or JavaScript (not talking about NodeJS) which don't/didn't have I/O operations implemented so they are safe.
just taking some OpenGL python library
This is not possible if the language has no I/O routines or is using sandboxing. Just in the same way as SQF commands are the only way to do anything, you'd then have exposed arma commands that would be (implemented in C/++) that would be called by the language - literally the same way as it's done now (hence Intercept can access those).
You CAN'T write an interpreter that will be bug free (at the Python/Ruby-level) you can ...
there is literally a dozent parser & lexer generators ... all well tested and "bug free"
Again, still less time than implementing that from scratch
Mandatory missing feature is a mandatory missing feature
and sandboxing would also require to make the access to objects etc. available to the sandbox
and sandboxing would also require to make the access to objects etc. available to the sandbox
No. Not this kind of sandboxing. I suggest you to read about PyPy sandboxing. Not because I'm disrespectful towards you but because it's much better explained on their page than I could possibly do here.
Mandatory missing feature is a mandatory missing feature
Depends on what you mean by "feature" because I can't think of anything that would be a language feature in any sane language that would be missing here.
all well tested and "bug free"
I'm talking about the whole language interpreter and one that can do something more than just perform addition and subtraction. And in less than 10 seconds, I should add.
Again: if it was that simple and easy, the Python 2 -> Python 3 rewrite would take two weeks (since the Python 2 interpreter is already working, and you just need to change 20 lines, right?), not YEARS.
I'm starting to think that you're changing the scope of the discussion between the phrases, as you see fit to better match your arguments.
First you talk about missing features, which would hint at a huuuuge ecosystem, since none of the existing languages would have that one missing feature you wanted.
And then your next argument is about parser and lexer generators, which obviously are only a tiny little speck, comparing to everything else that has to be written and debugged, for embedding to work.
personally, i would like to see squirrel
but ... enscript is fine``` just responding to you and already admitted that i would like to see an already existing language that is called squirrel
Okay, peace 😃 👍🏼
only thing though @karmic niche
you should try to defend, then you might find arguments that are actually worth considering 😉
there is never that one truth
I'm fine with their own new scripting language in the Enfusion engine
Looks like C++ http://i.imgur.com/Npn9pEB.jpg
In direct comparison, we can say Enforce Script is much faster and more flexible.
a language itself is not fast or slow btw ^^
No need to be pedantic
I am sorry. wanted to mention that earlier and you became my victim now 😉
always good to see the occasional programming rant in this channel, cant wait for the next one.
Looks like C++ http://i.imgur.com/Npn9pEB.jpg
if that code is so called 'enscript', then the suggestion that it's 'like' sqf, or 'similar to sqf', is rubbish and 3/4ths of this conversation has been nonsense. What i'm seeing is c++ structures (classes) with stdlib calls endemic to the entire c family (such as itoa) in front of me. There is, a merciful god after all.
This might, indeed, be a 'new language' for bis sqf scripters, but anyone who can code in c/perl/php/c++ or c# or any config.cpp can read that syntax instantly. And, it's the syntax with it's ruleset that's important here.
Someone should explain to me how a person already familiar with config.cpp, c++ structures and inheritence could consider sqXshit a 'better' alternative when they already know 3/4ths of the enscript programming language that's in front of them.
AND, the very best news of all, is that bis have been unable to break or change the rules of config.cpp's since ofp times (apart from smart additions like class externs;), so this means they'll be unable to bugger up enscript or any of the tools we might write for it.
Python wouldn't be as good as Enscript, nor would Lua or Squirrel.
Enscript is designed to integrate with C++ closely (which none of the popular script engines are) and is also capable of running at C++ speeds.
I don't know if that was intended or accidental, but that's what happened.
In fact many things in it may compile to faster-than-C++ because of the lack of aliasing issues.
if you know all this why did you let the above conversation continue?
2 minutes of your time would have saved exasperation.
you could also have supplied some examples, which the original questioner was asking for, without effort
I was asleep?
you've done this before, to _SCAR, two days of agonising with his code for a problem that has existed in eden imports since arma3 came out., and you THEN supply code to fix the issue that you've had for ages.
I solved the equations to do that and wrote the code only after _SCAR mentioned it.
@dapper pivot thanks for the insights!
By the way, last time I played with DayZ it was emitting Enfusion bytecode dumps.
You can even write your own enfusion code (file patching works in DayZ at the moment), and the engine will compile it to bytecode and dump out the .txt
I've sadly had too much work to play with it much but you can replace DayZ's equivalent main() function and write your own engine code that takes control even before the main splash screen starts.
There's also a CHM sitting in the DayZ files with all the help for the internal functions.
It helps to have toyed with ToM a bit too since some of the engine features and file formats are shared with it.
Here's some Enfusion bytecode:
Math::Clamp()
000312:0x0002b5dc: cmpf value, min
000312:0x0002b5e8: bge 0x02b5fc
000314:0x0002b5ec: move ret, min
000314:0x0002b5f8: rts
000317:0x0002b5fc: cmpf value, max
000317:0x0002b608: ble 0x02b61c
000319:0x0002b60c: move ret, max
000319:0x0002b618: rts
000322:0x0002b61c: move ret, value
000322:0x0002b628: rts
000322:0x0002b62c: rts
Which is from:
static float Clamp(float value, float min, float max)
{
if ( value < min )
{
return min;
}
if ( value > max )
{
return max;
}
return value;
}
It compiles everything at the start of the game into that bytecode, though there are ways to dynamically compile during the game too.
that is not directly assembler right? It's still being interpreted?
I don't know, it's possible that the engine JIT's that.
I haven't seen rts in x86 assembly yet.
Yeah, the above code isn't x86.
It's BIS' own intermediate representation. I don't know if they just interpret that bytecode or if they then JIT it into x86 assembler.
But it's trivial to JIT that kind of IR into ASM.
So then it's probably still interpreted like SQF Assembly
Maybe, but it's reasonably simple to JIT it (as in 1-3 weeks work).
Simply JIT'ing it will make it run very roughly 2-4 times faster, and then the main difference between it and something like C++ is the level optimisation the compiler performs.
I can already see how that would be alot faster than SQF.
SQF Assembly is a bunch of classes with virtual functions in an array.
This looks like it's.. yeah bytecode that the engine just iterates over with a switch case (probably something more complicated than that :D)
And SQF Assembly is pushing everything into half a dozen instructions.
where Enscript bytecode seems to have a far bigger and more specialized instruction set
Yeah, there's opcodes for vector operations too.
Which you could emit SIMD assembly for in a JIT.
I'd be pretty shocked if it didn't either do JIT already or if they didn't have plans to do it.
The way inheritance works almost seems like they wanted to be able to just shove JIT'ed Enfusion methods into C++ vtables which would kill the call overhead too.
Isn't having JIT on that user-provided script potentially insecure as in: couldn't you obtain code execution by crafting the script in the right way?
Or are there ways to somehow have full control over memory accesses while JITting the code?
Btw.. JIT.. Don't some AV programs go crazy on that? I mean.. Program is writing his own executable code that the AV previously couldn't scan and then executes that?
It depends on how you do the JIT'ing, Java had issues with that because it allowed unsafe code and then tried to verify that none of the code was unsafe.
And also most of the code is compiled from .pbo's, which you would assume wouldn't be unsafe.
@dawn palm told at the very begining just that + that We need to wait for arma 4 to actually know the specifics
Are you sure? Downloading any mission from the internet would then be potentially be the same downloading an exe from a semi-unknown source
I mean: I wouldn't assume that code inside PBOs can be considered safe by default
I kinda expect it to be interpreted and no JITing at all
On the other hand, now that I think of it, web browsers are jitting their JS code and are still (somewhat :D) safe so that may be possible after all...
I don't really know what AV packages would do, all you're doing is a Win32 memory allocation with the executable flag set (then you write some data into it as you would any other memory block and jump to it).
Many copy protection systems do the same thing.
Yeah, the only JIT engine that I recall having those issues was Java, and that was because they tried to use a verifier rather than designing it so there's nothing to verify.
it would make no sense to do anything less with this 'jit code' except to binarise it. If not, then using an interpreter on it, vs, and interpreter on sqf text, is much of a muchness.
You mean compile it before the game starts? JIT works by assuming a function is called many times.
Chrome for example only JIT's a function once it observes that it's called multiple times.
Using not the sqf assembly is already an improvement that should bring speed beyond limits
yes,ok, it's going to be faster. frankly, big deal.
the idea behind jit is to provide uniform platform support irrespective of the actual cpu's instruction set.
For Enforce it had to be faster because the idea was to write 100% of the actual game in the scripting language (leaving only very basic primitives in C++).
In DayZ they abandoned that somewhat (simulation= controllers and netcode, etc are still in C++)
But in ToM for example even the netcode is in the scripting language.
It's be pretty neat if they kept that for Arma 4; because we could literally mod the netcode to optimise it or add things like ACRE data channels.
@dapper pivot just means less engine based stuff
There still is a gameengine running in the background where they implement stuff like netcode etc
Just the logic now finally will be 100% modable
Can you send Examples? I highly doubt the actual netcode stuff is written in enscript
Creating custom packages maybe but the actual netcode? Never
my goodnees, how easily we digress from using and understanding the c code and functions into something we can do nothing about.
it's irrelvant if bis use jit, spaghetti with onions, or mongolian shepherds pie to run the engine, what we have is encsript and a damn good idea would be to spend some energy in understanding and docmenting it.
//! MULTIPLAYER: See comment in GameEntity class
void Vehicle_Controller::OnNetUpdate( PacketOutputAdapter output )
{
output.WriteInt( netUpdateFlags );
if(netUpdateFlags & VCF_CONTROLS)
{
output.WriteFloat( VInput_mX );
output.WriteFloat( VInput_mY );
output.WriteFloat( VInput_mW );
output.WriteFloat( VInput_aF );
output.WriteFloat( VInput_aB );
output.WriteFloat( VInput_aL );
output.WriteFloat( VInput_aR );
output.WriteFloat( VInput_aU );
output.WriteFloat( VInput_aD );
output.WriteFloat( VInput_sF );
output.WriteFloat( VInput_sB );
output.WriteFloat( VInput_sL );
output.WriteFloat( VInput_sR );
output.WriteFloat( VInput_sU );
output.WriteFloat( VInput_sD );
output.WriteFloat( VInput_actJump );
output.WriteFloat( VInput_actElev );
output.WriteFloat( VInput_actRele );
}
That's the netcode for a base vehicle in ToM, "output" is a kind of stream object.
I would first like to hear some information that there will, indeed, be an Arma 4 so that there is a point in actually understanding and documenting Enscript 😉
//! MULTIPLAYER: See comment in GameEntity class
bool Vehicle_Controller::OnNetMessage( PacketInputAdapter input )
{
int dataFlags = input.ReadInt();
if(dataFlags & VCF_CONTROLS)
{
if( ownerVehicle.IsControlledByRemotePlayer() )
{
VInput_mX = input.ReadFloat();
VInput_mY = input.ReadFloat();
VInput_mW = input.ReadFloat();
VInput_aF = input.ReadFloat();
VInput_aB = input.ReadFloat();
VInput_aL = input.ReadFloat();
VInput_aR = input.ReadFloat();
VInput_aU = input.ReadFloat();
VInput_aD = input.ReadFloat();
VInput_sF = input.ReadFloat();
VInput_sB = input.ReadFloat();
VInput_sL = input.ReadFloat();
VInput_sR = input.ReadFloat();
VInput_sU = input.ReadFloat();
VInput_sD = input.ReadFloat();
VInput_actJump = input.ReadFloat();
VInput_actElev = input.ReadFloat();
VInput_actRele = input.ReadFloat();
}
That's the netcode that receives it on the other side.
That looks like a Bad idea
Note that IsControlledByRemotePlayer is ToM's "locality"; if the object isn't local it reads the values but throws them away.
Nah, it's an awesome idea, because if I write some entirely new kind of entity (like an ACRE radio) I can just write the raw netcode packets.
Without priorities
Meaning that everything is transfered at max prio AND probably backed up with tcp
Oh, by stream I didn't mean TCP stream.
That PacketInputAdapter collects the bytes that your entities want to transfer over the network, how it transfers them is up to the C++ side of the engine.
Still means it crunshes up everything at same priority
Hmm? That's only part of the code, your can write your netcode as cleverly as you want.
Shooting > Position > angle > Animation > Sound >...
It doesn't mean that at all
It crafts a position update packet for the vehicle. That's what you just saw
Doesn't indicate that packets priority at all
Yeah, that's just ToM's implementation for the base class controller, there's a layer on top of that.
The C++ code could see that you're transferring 1MB of data and split it into chunks and mux it with other, high-priority packets, for example
If I understood correctly, that is what is the way to Code networking for enscript
Your code has control of when messages get sent, too:
void Vehicle_Handler::RP_Dock(int dockNum, int otherID, int otherDockNum, bool isRemoteCall)
{
if( IsCallToLocal(isRemoteCall) )
{
Dock(dockNum, otherID, otherDockNum); // Call on local
}
if( IsCallToClients(isRemoteCall) )
{
if( CanCallRPC() )
{
//if local computer is server: send message to all clients
PacketOutputAdapter adapter = RPCallEx(RPC_DOCK);
adapter.WriteIntAsHalf(dockNum);
adapter.WriteInt(otherID);
adapter.WriteIntAsHalf(otherDockNum);
}
}
}
And it is plain simple
Which is good and Bad
If there is no way to Set the priority it will be filled to the Rim by bad written Missions and mods
We have no idea what a mission might look like though.
It may run in a parallel script thread that has no access to these kinds of things.
(There's commands in Enfusion to start up new script environments too...)
DayZ missions are just empty placeholders to keep the scraps of RV that are left happy, for A4 I don't think we could guess what a mission might be.
Bad mods will have the potential to be reeeeally bad, though, so you're right in that respect. 😉
But good mods will be insane (in a good way).
If controllers and netcode stay in the scripting language someone like RHS could be making DCS level accuracy tanks with completely accurate radar/fire systems.
Indeed... Still I am concerned but that does not really matters in the end
We will see if arma 4 will be multiplayer hell or not 😄
Even the keyboard/mouse input is just handed to the scripts.
So if you want to make your own completely unique vehicle like a hot air balloon or a submarine with accurate hydroplanes with their own key bindings you can.
@glossy inlet @dapper pivot I doubt they JIT it into assembly. Scripts need to be serializable so they can be resumed exactly where they left off when saving a game
anyone had https://gyazo.com/c0ba8931ca3fca64d857045077410d1d befoire with arma3p from mikeros ?
@feral nova What's the path?
im using a hard drive partition like usual xD
same setup as i usually use, never had this issue.
@feral nova But what's the path you're trying to extract to? Clearly it contains symbols the tool doesn't like, or you don't have proper permissions
Who doesn't have proper permissions for their drive they set up
I mean that's just a dumb judgement, I would think that would be rather impossible to fuck up
and isnt the case
I have no manually taken ownership of the drive partition, I litteraly just made, and that isnt the issue.
win10 has some peculiarities about the root:\ of drives. it doesn't like files scribbled in there.
I took ownership of the partition, that shouldnt be an issue should it ?
it's obviously? trying to make p:\a3\3den
IF you are running as admin, the P:\ drive itself does not necessarily exist.
@woeful cliff I don't recall ever seeing any way to suspend a script (there doesn't appear to be anything like waitUntil, sleep, etc) so if you can't suspend a script that isn't an issue.
only wild guessing here Mr Banks but the guess is that the equivalent of init.sqs does housekeeping when it fires up (via a savegame of course). I would imagine that the code would allow you to save variables such as state=1,2,3,4 etc and you can read that back on startup
There's an event that entities get on load/save but they don't actually save anything in that event, so perhaps the engine takes care of that.
ie, if you've already picked up the blue hammer, the pencil, and created the stock for a gun......
So it seems like it was an issue extracting to the root drive, which is wierd, i have not had that issue before.
you altered permissions did you?
tried with and without
the cause makes sense if you've created a new p: drive. win10 will set defaults
I tried manually taking ownership of the drive which should give my user full permissions right ?
@dapper pivot In the snippet I posted there's a Sleep()
apparently not
@dapper pivot In the ItemTrigger::AddFlare() function http://i.imgur.com/Npn9pEB.jpg
I might go back to win7 tbh, win10 is do restrictive
win10is very fussy about the root of drives and attempts to protect them.
but since i have no reason to use win10 here, i don't really know what i am talking about.
@woeful cliff That looks like test code. There's a Sleep in ToM but they only ever use it in a spawned background thread.
@dapper pivot There are functions that calls code and the docs claim you can use both Sleep and Wait in those
The call creates new thread, so it's legal to use sleep/wait
And they have to save script states in saves, or saves would break the game state
Threads aren't used like they are in Arma 3; in ToM it only ever creates them for non-mission related operations.
so, do we have an opinion about the new scripting language already? 😛
I do hope we aren't forced into OOP entirely
I've had no issues with extractpbo and/or arma3p on any of our win10 build machines at least @feral nova
but be aware that subst drives might not be in sync across different desktop sessions like mikero mentioned
@dapper pivot So are you suggesting that missions will now have to rely on creating timers and use callbacks to perform actions over time?