#arma3_tools
1 messages Β· Page 17 of 1
in the template and project, yep
but if you use xcam/mapbuilder/sfp_atlas etc it can cause issues
Wow, this given me idea lol
since most ingame tools that export objects file will have the class / p3d filename
Dont use -x-cam anymore
Copied the same template 3 times and renamed. TB crashes on save π¦
that's what I have so far about the tv4p format
trying to parse map_tpdemo.tv4p: https://pastebin.com/yFWXSfGs
did you try to debinarize yet?
no, what binarized format should it be?
for me it does not look like a rapified config
BI only has one Binary Serialization style. Same used for p3d,config,sqm and networking (partially)
So it seems reasonable that they would also use it for that.
a p3d (ODOL) is nothing like a config except that a float is serialized the same
I know. But they both have the same serialization algo in the backend
that does not help much if you dont know the file structure
But if it is config style. Which it looks like because the string table at the top... Then it will be very easy to debin
Is there a sample for an asynchronous Extension? I am very sure that KK made something, but I canΒ΄t find it.
hm I guess I have to start to really learn c++ then π¬
I have some examples at hand aswell. What do you want to do? You don't always need asynch extensions. Transactions work aswell for a lot of cases
(of course you can have asynchon transaction handling aswell)
https://youtu.be/Ka8iiLMpYXQ the longest part of it is the file generating. If it woulde be async, the game would not freez I guess
AND I am very interested in stuff like this in general
Writing lines to a file with c++ is much faster than all the extension calling overhead, so in my opinion it doesn't make sense to make asychronous write calls to an extension (reading files is something different).
I guess that's not just writing lines to a file though.
It is generating an image
When writing into textfiles, I mostly do
"Dll" callExtension format["write|%1|%2",_handle,_someVariable];
"Dll" callExtension format["close|%1",_handle];
@glossy inlet That was more meant as example when async is unnecessary overhead
Async requests can be generally realised this way:
Have a extension dll with a "start" method that can be called by arma. In this function you start a new std::thread that encompass a while loop. Your dll than needs a structure to hold incomming and outgoing requests, two queues holdings strings for example. You than write two methods where SQF can send and receive strings, for example "post" and "get". Get checks if there is an entry in the outgoing queue and retrieves it, and post puts a new one in the incoming queue.
Your while loop in the thread now just runs indefinitly and checks if there is some incoming requests, pops it from the queue, does some work on it and puts the result pack in the outgoing queue.
Than you need a while loop in SQF as well, that calls the "get" method and checks if something is retrieved.
This is a simple case for a general async communication. For specialised stuff like loading a file in background you don't want and infinite while loop but rather something that runs as long as the job is not done. You can create a handle for every job check from SQF if the job is done or not, and if done, retrieve the data
Hope that is understandable.
Also there are a lot of different ways to tackle this problem. I suggest reading some papers/articles about interprocess communication and threaded data handling for some common patterns
@light trellis Don't trust these C++ programmers, they try to suck you into their cult, learn C# instead!
You can also do C# extensions π
No, don't listen to him about C#. Those are just filthy lies!
Come to us... I'll be fun... We promise. Come... Closer...
@light trellis If they suck you into C++, ask for the nearest pointer back to C#
@karmic niche
I have to learn c++ for my study anyway π
better do that π
c# is gay
Uups did I say that out loud? grin
With C++ you can rule them all. We'll all program memory and the syntax looks dank as fuck
Not System.gay.as.shit.fucking.functions.in.c.sharp(String [] fucking_args)
And we'll ... New DayZ engine ... π C++
c# doesnt have the namespace System.gay π
@light trellis @meager falcon @elfin oxide @scenic berry C#, all the way
Howaboutyou->dereference yourself somewhere else HUH
@scenic berry not Yet!
oh for anyone making C# extensions i have a couple of packages that might help:
https://github.com/maca134/Maca134.Arma.DllExport - Replaces the DllExport nuget package (i got sick of writing the export sig :P)
and https://github.com/maca134/Maca134.Arma.Serializer for converting between arma and c# data (usings newtonsoft json)
there on nuget and should work nice π
well, wouldnt it be a nice starting obfu, to use only porn terms as variable/func names? xD
_anal[_gay] ... no no, better not
Send me back to middle school for these jokes.. I know
@scenic berry That converter is very handy
i think i have most of the datatypes covered, i have write some unit test to make sure shit gets converter back and forth properly
the dllexport one is cos im lazy π
Yeah was about to ask what datatypes are supported yet, looks like its everything I would ever use though so π from my end
public static string function (string, int)
demo video too π https://www.youtube.com/watch?v=MXRBckxwqEw
An easier way of doing C# ARMA extension exports
I assume it also supports the new exposed methods?
Ah
Was about to ask how it handles 64bit crap
Like
i wanted to know how the other DllExport package works
This is the perfect example for Attributes being cool and handy, yet I've never personally worked with them before, well, created my own
[ArmaDllExport]
Still things to look into in C# land
mostly it seems there used for just attaching more info to a type/method/properly etc
Yeah I understood it like that aswell, ran into it quite a lot with EntityFramework and ASP.NET
Just haven't looked into utilizing them myself yet π
the serializer has an attribute to skip convertion, its an empty class https://github.com/maca134/Maca134.Arma.Serializer/blob/master/Maca134.Arma.Serializer/ArmaArraySkipConvertAttribute.cs
as is the [ArmaDllExport] class
Uh wait a second
For what would that attribute be needed?
Wouldn't making the field type string achieve the same?
not exactly, im struggling to come up with an example but i made it cos i found i needed it
π
Yeah thats the issue im having aswell
I cant find an example to use it lol
ahh ok, well string wouldnt do it unless u convert it to a string in arma
hm, do you have a practical example for it?
what the skip shit?
Yeah, I think I'm on the wooden path
Just give up now, no practical use for c# π
PFfffffffffffffffffff
Can't wait for you guys to stick around when ArmA 4 drops with C++ as its scripting language
Then I'll have to learn C++ aswell hm
just call managed code from c++ easy π
@scenic berry So if I ready your code correctly when the input is [1] and you want 1 to be mapped to a string field, ArmaArraySkipConvertAttribute won't parse it but rather leave it as a string?
probably lol
just write a simple console app, nuget the pack and run some tests
the longest part is loading VS up π
1 am late ??... pfft normie π
how is the investigation on terrain builder object file format going? π
great work, thank you.
I'm currently importing millions of objects to several terrains and its usually over an hour for one import.
can't wait for the day when we have depew type tool for terrain builder π
@smoky halo looks pretty good π
do the list of item=true/false, and some empty assignments indicate some yet missing info?
@smoky halo ok, looks like I've got pretty much the same structure: https://pastebin.com/6LTgmEXV
have you guys seen that Russian coders have apparently patch OFP engine?
http://www.flashpoint.ru/threads/arma-resistance-patch-2-00-ΠΎΡ-ΠΊΠ»Π°Π½Π°-4rtech.55317/
they added quite a few new sqf commands, some stuff from vbs, some network coding changes
any idea how that is done? disassembled the code, and recompiled it with changes?
the OFP source was never leaked AFAIK
@vague shard item=true/false are not missing infos afaik
@plush shard yours is more correct ^^
@vague shard OFP is probably embedded with A3 ^^
well the A3 alpha leak didnt contain OFP source from what i heard
Where can I find tw4l and co?
myTerrain\Source\TerrainBuilder\myTerrain.Layers\ directory. or did you mean something else?
so far I've found 3 different versions of tv4l - version 2, 3 and 4
@vague shard source code leak contains ofp xbox version
ok i see
I just found the "TerrainProcessorSDK" in A3Samples. Can't that be used to place objects into terrain?
it is and a few people use it
Doesn't that solve the problem of placing a ton of objects then?
Some of it is broke, but it is good for mass placing stuff
- you need decent shape files as source (from what i understand)
- X-Cam also "solves" that
It way quicker than x-cam through
I've done some stuff with it. Powerlines http://i.imgur.com/SBepONK.jpg Shipping containers http://i.imgur.com/kszkwLP.jpg
Dedmen: what are you talking about? just terrain editing in general or the terrain builder importing slowly and we needing objects layer file tool?
Someone wanted the terrain builder format reversed because importing thousands of objects takes hours
I don't build terrains
https://github.com/X39/sqf-vm/releases/tag/0.1.1-alpha 0.1.1-alpha release
highlights:
- Code is now pre-parsed instead of parsing it when code_load instruction is executed
- DBGINF structure is now holding the code hint directly
- new command line parameter -s
- Fixes and more
- new commands: %, ^, pushBack, set, isEqualTo, !, comment
Has anyone ever attempted to combine the satmap from the PBOs with the vector map exported with the ExportNoGrid cheat?
why?
I'm considering converting the emf file to SVG and then add transparency (if not present already) and overlay one on top of the other.
To get a better map for AARs, for example
I combined satmap images and exported the terrain grid thingy. But didn't combine both
some use that for mask painting or stuff on terrains, but it's only semiprecise sadly
but for tactical maps it would be more than enought
I just hope that overlaying one on top of another will make them look more like the map view from the game
the game actually does that, it overlays the sat with a transpirancy level based on the zoom level
it is defined in RscMapControll or something like that
RscMapControl
alphaFadeStartScale
alphaFadeEndScale
Anyway, the AAR backgrounds that I've seen until now only used the vector map which is... lacking, IMO.
I would have much preferred to have a map that looks like the one I see directly in Arma. No idea how much it will weight, probably much more than the vector map PNG but you won't know until you try it π
@nocturne basin it lets you run sqf without running Arma ?
@glossy inlet I unpacked the Malden PBO files and then converted the paa to png with Armake but the resulting lco images seem to be very dark.
Example: https://imgur.com/a/ST4SY
Am I missing something or are they supposed to look like this?
https://community.bistudio.com/wiki/ArmA:_Texture_Naming_Rules
This page says _LCO - layer color map, texture used for satellite and mask textures on the terrain Only some formats use sRGB Color Space, others use linear space.
Does this mean that I'm supposed to change the color space of the image (???) [bump the contrast or something]
since the glorious #visual_upgrade the sat has to be darkend π€¦
i guess you could light it up in the stitching process via GM or IM
When I'm back from work (shhh... don't tell anyone I did that while at work! :P) I'll fire up Arma and compare the images.
But anyway, I hoped that someone here would straight up know what the issue is and what exactly needs to be done with the images, instead of guessing.
there is no value to light them up as it is lighting specific
they are just darkend, light them up until you like it
there's a bug reported for armake (by KoffeinFlummi himself): https://github.com/KoffeinFlummi/armake/issues/32
Btw. kudos to @wide cedar for making a program that I could quickly compile on a Linux ARM server and run the unpacking and conversion in 5 minutes π
Thanks for the heads up, I'll take a look at the code and hopefully figure it out and submit a PR
but the report doesn't mention whether it's the conversion from or to PAA or both - so better compare the result to the BI Tools first
Hmm... forcing a conversion from sRGB to RGB (I hope I'm using the right parameters) gives this:
https://imgur.com/a/WVhVi
Much lighter now. But I'd still have to check if it's what is shown in game.
In case someone would like to reproduce this themselves: (imagemagick)
convert s_007_008_lco.png -set colorspace RGB -colorspace sRGB ___s_007_008_lco.png
@Stack (Overflo)#8649 Known armake bug
Interesting, Armake seems to extract the same png as texview2 (dark).
However even that png is still darker than what Arma shows in the map screen:
https://imgur.com/a/dxOJH
Bi darkened all the textures with the visual update
Textures change https://drive.google.com/drive/folders/0BwA-UohiwA7CRWpfdkVKM2Y2LVE
sat map https://cdn.knightlab.com/libs/juxtapose/latest/embed/index.html?uid=80ace4a8-f5ee-11e6-a50c-0edaf8f81e27
Dont know if that any help
Thank you. I'm aiming to have the same image as the one on Arma's map screen. Does anyone know how much do those textures have to be lightened to get that effect?
I know that I could just do it by trial and error until they visually look the same but maybe there is predefined value that "everyone just know" - you know, some kind of tribal knowledge, hence my question π
Maybe ask CUP, they fixed up all the old terrains
could the map slightly be affected by the ingame settings for gamma/brightness (or by some graphic driver gamma/brightness settings), too?
Btw. that's what I have currently:
https://cdn.discordapp.com/attachments/173767699103612928/354407051562188801/test.png
That's a brightened satmap with the vector data (exportnogrid cheat) overlaid on top of that + I have manually played with the vector data opacity. This will need some tweaking but it already looks quite nice IMO.
If there are people interested, I may release my scripts when I'm done.
@karmic niche did you get the stitch info for the satmap tiles from the config or manually?
@scenic canopy manually. I'm not experienced enough with Arma to get that data automatically.
But if someone tells me how to do that, I will add that to my scripts, when I'm done (if it's feasible with the libraries I'm using)
I was testing the code with Malden satmap and figured out that the padding is 12px on each side AFAIR
Ideally, I'd like to have code that does all that in one go, but I'm not sure how much work would be needed to have it all automated as opposed to doing small parts manually.
I've got no idea how I could dump the vector map , though π¦
it would probably be possible to do an automated endpoint that takes a steam workshop id / url and returns the satmap
The satmap - yes, but what about the vector map?
vector map is "doable" by running arma with generated export mission and test mode
currently stuck with not making the game crash when triggering cheat command with SendKeys api π
Hmm... can that be done on the server side? In that case I've already got scripts (that I was planning to use for Intercept CI) to headlessly run missions on linux servers unattended
our automated tests for SFP runs Arma on a CI and test missions with some RPT parsing
running arma without a proper GPU is kinda slow though
Is that done on a Windows server (that needs to have a GPU)?
so we use VMs with GRID GPUs
but it's also feasable on a normal VM
yes, Windows, haven't tried with the ports yet
afaik you can't trigger the cheat command on the server because the server has no key input.
But Intercept could still do it with a custom thingy
you can use a fake keyboard and trigger input from code
or simulate key input in windows
I figured out a neat trick to do that on thin linux servers:
wine 2.0 + arma3server + server-rotation with the missions to test and another mission that shuts down the server (to prevent the rotation to actually rotate the missions) + xvfb to run everything headlessly (no GPU needed, just a console)
The problem I stumbled upon was that wine somehow didn't want to run 32-bit dlls (arma extensions) [saw them as 64-bit, no idea why] so I had to put the whole idea on a shelf π¦
if any mission end with other than END0 the arma executable will return the corresponding status code
I don't remember what was the problem with autotest for me
Ah, I wasn't able to run it headlessly, I guess.
we use these to run our autotests, https://www.paperspace.com/
even with the cheapest VM the performance is good
and just setup each VM as a jenkins slave
I've been using Scaleway to host everything until now (3eur+vat / month for linux arm servers)
So which plan on paperspace are you using to test Arma?
Air + extra storage
@scenic canopy Anyway, not sure if you're interested, but if you are, I could help you with scripts to create maps such as the one I linked to above.
But I must warn you, I'm writing everything in python π
Python is fine, spent some years as a Python developer
@karmic niche you could grab the UV informations per tile from the lites rvmat which should let you automate the stitching process
class uvTransform
or you might be able to grab the whole mapframe specs from the wrp which would be easier i think
They are not finished, of course and what I linked has been made semi-manually but eventually, I would like to have an automated way to convert EMFs to SVGs, and then changing/removing opacity of some parts of that SVG, conversion to PNG and overlaying over the stitched satmap.
(that's basically what I did but that was semi-manually to see if it was worth the effort at all, first)
I need to resave all our AAR maps as EMF instead of PNG now ;__;
my keyboard doesn't even have the numpad - π¦
Thank you @smoky halo I'll definitely take a look although, as I said, I'm an Arma modding noob so I will probably have to ask quite a few questions before I finish the task.
do you know if the EMF export is deterministic?
π just ping me if you need something terrain specific
You mean Arma -> EMF export of EMF -> SVG export?
EMF -> SVG definitely. Arma -> EMF hmm... probably? If there are no timestamp fields in them, they should be, I guess
just the EMF
Maybe check and compare the PBO checksum instead? I'm assuming you want to detect a map change and then re-dump the EMF file.
preferably I want the EMF to be deterministic π
but yeah, could probably add a checksum to the mod folder or similar
but then I need to worry about the dependencies too
Arma already has that. They print it in RPT
I'd rather just dump all EMF files and then save those that changed since last export π
i might even add callExtension
which will get pretty damn funny then π¬
π
@nocturne basin what is this going to be useful for? could it be used as a debugger in Atom, Visual Studio Code and etc.?
it is running SQF code
that is what it is useful for
in theory, you do could use it in combination with atom etc.
https://forums.bistudio.com/forums/topic/210118-sqf-vm-an-sqf-emulator/ that is the thread @hardy leaf
There is already a Debugger ^^ But currently broken.. And isn't anyone that is asking for it to get fixed so... I invest my time in other stuff instead.
As a workaround is getting 1.72 prof build... Not an immediate need for me to fix it
anyone here who worked with Intercept or contributed to it please PM me
worked? How about still works?
spend time on fixing the linux compat for develop-branch π
builds still failing tho :x But it's my fault so.. I guess I don't deserve πͺ today.. But.. Dang UTF-8 Plugin names tho
Try please π Should work. Oh no... Emoji only scripts is in my head again
"πͺ π " π² π;
or in readable sqf
"cookie_orange" interceptLoadPlugin;
oh damn, pls no π
No one ever tried Emoji SQF commands afaik.. I should REALLY do that
What did you say? yiff support?
I don't know if there is... A real length limit on command names.. So.. you could base64 your gif... I guess
ExtDB3
I want to execute 2 querys withing one statement, so I wrote two "query lines" for the statement config.
[Character_Killed3]
SQL1_1 = INSERT INTO `character_log_deaths` (characters_Id, Killer_Id, Type, WorldPosition, Inventory) VALUES (?, ?, ?, ?, ?)
SQL1_INPUTS = 1, 2, 3, 4, 5
SQL2_1 = UPDATE `characters` SET Status = '2' WHERE Id = ?
SQL2_INPUTS = 1
result is an excepation cause he want 1 Input insteat of the 5 given to the statement
writing those five arguments to SQL2 is also not working, it would be senseless but I tried it :D
question: bug or design?
@smoky halo
You didn't including extDB3 Logs, so nothing anyone can do
Assuming it isn't error with your sqf logic, then you will need to submit issue on bitbucket with DB Snapshot and repo.
Don't want SQF Code just include the debug logs from extDB3 (debug dll version, located in optional directory)
Anyone know why i get this ?
12:11:10 Call extension 'MainDll' could not be loaded: Insufficient system resources exist to complete the requested service.
@lethal lantern Battleye first guess. Check BE logs if you are running it
Allright ill have a look now
Blocked loading of file, ill turn Battleye off until i can maybe get it whitlisted lol which will take forever
@smoky halo nvm, statement and database were right, but I used an outdated dll in my local test environment.
shame on me π
'malloc': 'void *(std::size_t)' differs in levels of indirection from 'void *(std::size_t)'
epic
do i miss something?
You have <stdlib.h> include? This is C I guess?
are you trying to call malloc before including <stdlib.h>?
was an inline function that bugged π€¦ and yes, C
extremly useful error messages
VC compiler?
yyyup
try gcc, I bet it would give a better error message π
Or clang
way too careful?
has anyone heard from mikero recently?
27th august last time
I guess he didn't get enough goats
Maybe too many and he is on holidays now?
@smoky halo Mikero told me he will be busy with Holiday and personal things for a while. If he does not randomly check discord now, I think sending him an email is the best way to reach out to him. But only in case you need anything that is not answered by reading the manual.
π thanks for the info
Good to know he's ok π
:)
Does anyone know if it's possible to use mikero's tools to obfuscate but without compression? Compression causes us performance problems. It used to be possible but the option seems disabled at some point.
If you don't compress the files than trying to obfuscate is pointless especially for sqf / text / fsm files
It's the p3d's we want obfuscated mostly.
Otherwise they can edit the pbo and read the contents
You can try ask mikero, but i would just DCMA anyway that robs your p3ds. Which is good enough to prevent steam workshop redist
Plently of people can bypass obfuscated pbos
I tried asking mikero but it sounds like he's on holiday.
Obfuscating our mods seems to have resulted in them not being ripped at all, so it has had benefits.
@sour hedge try using obfusqf for obfuscating mods. Up 500MB each pbo IIRC
if you hit them up they propably can give you some trial license for it so you can try it
Thanks Katekarin, will check that out.
Just checking, is Maverick Applications the official host for Mikero's Tools now? If so, can update the BIKI accordingly since it points to the defunct Dev Heaven
it is.
German owner(s) and it's just like Infistar, English site, German TOS
If the TOS is viewed through the browser and you have Chrome you can right click and translate
SQF-VM in version 0.1.2 https://github.com/X39/sqf-vm/releases/tag/0.1.2-alpha
now supports createVehicle
every time I've read sqf-vm so far I've read it wrong as sqf-vim heh my bad.
I clicked that github link, then the website link and still have no clue what sqf-vm is, yes "virtual machine" but err? huh please have some information describing what does "sqf-vm" do.
Execute SQF code outside of Arma/ without Arma. In short.
You can check if a code snipped works as intended very quickly without havint to launch/install Arma.
There even is a discord bot that runs your script and returns the result
oh, well that would be great description on that github / homepage π
@pliant lynx that is stated in the bis forums
and yes, the github could be improved π
feel free to PR π
@dull axle @smoky halo animated mesh https://youtu.be/X5BocfT9Xm4
@zgmrvn#5922 In surface painter, instead of the codes for colours. Couldnt you make it read from the layers.cfg and show surface name. You already have to copy your surface file, copying the layers.cfg as well wouldnt be much of a hassle
@hard locust That will definitly come to MB
Oh nice. The new UI looks so much better
@safe slate really nice!
i'm still a bit baffled tho that decals don't support texture switching
@hard locust good idea
Something potentially useful for some: https://twitter.com/icculus/status/908064852421304320
if you write your own steamcmd script using @sSteamCmdForcePlatformType windows should achieve the same
Obfuscating our mods seems to have resulted in them not being ripped at all, so it has had benefits.
really says it all, n'est pas?
the first mistake the thief makes is because he can, with a litlle effort, extract most (not all) of the files, is actually the beginning of his nightmare, not the answer he gloats and boasts about. No one, repeat, no-one, has ever succesfully put an obfuscated pbo back together. The hairy chested thief never mentions that minor detail.
obfuscation is not encryption (the first poor thinking of the thief), it isn't designed to hide anything., it focusses, apprently quite succesfully, on frustrating the crap out of the idiots so that they run away screaming.
anyone with a half functioning brain could probably crack obfuscation, but they don't. They dont', because they've got sufficient skills and talent to not need to and instead, the roll their own, probably better, code, than what could be stolen.
Welcome back mikero π
It also hurts legit uses, like mine
Not to mention adds bloat
But then again arma modding have been ruined shilling there stuff instead of sharing.
@dawn palm No one, repeat, no-one, has ever succesfully put an obfuscated pbo back together Not quite correct. Atleast your obfsucation from about half a year ago I think.
The Project Reality guys split up and part of the Team just went away and took CLib with them (They planned that for some time because they removed the sources from GIthub silently and obfuscated their PBO) and then left PR to die because they just took away the core of the Mod.
So I deobfuscated the CLib pbo for them so they can keep working till they solves all their disagreements. A couple months later after telling everyone PR is dead and starting their own Project which is basically just a renamed copy of PR they gave them CLib back.. But too late.
I know for a fact though that your obfuscation methods have changed since then.
Back then your obfuscation was replace all script files referred to from the config by a #include "<some random bytes name that cannot be unpacked on the windows filesystem>"
If you then go to open that file with the name "<some random bytes name that cannot be unpacked on the windows filename>" you have the complete bare unchanged script in there. You can stitch it back together quite easilly. And then you just have a lot of garbage files with "<some random bytes name that cannot be unpacked on the windows filename>".. Like.. a couple thousands... You can easilly filter these out after you resolved all #include's. Their filesize is small and they never contained a valid #include.
What I did was load the files into a virtual filesystem. Then grab all files that had completly valid names. Resolve their #include's. And then write all processed files to disk.
Also you could just modify armake to rename the files to valid filenames when it unpacks a pbo. But yeah obfuscation isn't to hard once you know how it works
Was nice idea, just once it became mainstream. People started to look at it more and only so much you can do to make it hard to extract a pbo
You can never make a pbo unextractable. Because Arma still has to be able to read it. And at that point you could read it too.
Don't agree with that sentiment on PR. It was wasn't just a copy because they were the ones that made it. PR was dead because there was no developer left.
Was it a nice friendly move? Probably not but they just wanted to get out of that situation and seeing there wasn't literally a single guy that touched that projects code outside of them that left you can barely blame them.
as you say. things have changed since the the first iterations of obfuscate π
importing objects to terrain builder and falling asleep... I hate to be the are were there yet guy, but any updates on terrain builder objects layer file format?
Like I said.. You can't make a PBO unextractable. You can make it hard for most people.. Which your old obfuscation method has already done.
No progress by me atleast. concerning tv4
roger
I can read everything but the latest version.
But I only want to read it, don't really want to extract it
the theives do, Head, which is part of the attempt to confuse the crap out of them, thinking they've beaten it.
frsutration is the name of the game, that they have to go thru the same agony, each time every time.
Just annoying the fuck out of me really.
But then again my SQF projects are always open source so
Β―_(γ)_/Β―
it really goes against anything when you are hindering development of tools that actually help community
?
@dawn palm Am I safe to assume custom skeletons model.cfg detection works now with the latest update of PboProject?
certainly. afaik, it always has.
excellent
@dawn palm I realized that was a bit misunderstanding, what I meant is that when you a feature like obfuscation, which is pretty simple to beat (as has been pointed out), defeats the purpose because it makes it harder for other tools to do work with those, yes you may get rid of those few pesky content thieves, but who really wants to do damage will still do it, and at the end all you do with the feature is making lives of people who want to do things with those PBOs harder
if devs want you to access there content they can turn it off if they dont they turn it on its quite simple really
Arma modding community is like mexico 98% rob work from people and 2% make it
Thats not entirely true
There's alot of mods and scripts that have no "Borrowed" Assets
thats the 2%
There's alot of revived stuff
but it's all the work of everyone, that's the point in a community
look at the hundereds of server out there with 8gb+ mod packs that they have never done a single line of code to get
Are you saying that because the servers use the mods, they are the 98%?
Yes 100% saying that no permission = stolen
But the last time i checked, servers dont need permission to use mods on the steam workshop
well, most of the mods
So that's not stealing
most the mod packs on WS have 98% of its content stolen and repackaged
look at the amount of DMCA take downs there is on there
Yes, it's gunna happen but the servers that use the origional mods to host a modded server for their players who also use the mods to join the server and play with the mods... Thats stealing is it?
If the content is on the WS from the original creators and the server owners link the WS to download the content then no its not at all. But when the server owner reuploads as there own "mod pack" with zero permission todo so yes thats stealing
Right, because i said the same thing before and you said it was called stealing
when
ArMaTeC - Today at 11:20 AM
Yes 100% saying that no permission = stolen```
Are you stupid?
@glad harbor Pretty sure you're misinterpreting it
Not stupid, im making a good point
Alot of life servers will just reupload the mod in "their" little mod pack, which quite often is a no no because of peoples licenses
I said mods, not mod packs
and i say again
Yes 100% saying that no permission = stolen
Then I think we might be on two different pages Β―_(γ)_/Β―
You answered yes to my question....
I'll bugger off back to my cave π
Well what ever
read past the Yes "saying that no permission = stolen"
Get off your high horse,,,,,
lol chill before you paragraph me
No high horse, you get where im coming from, i misunderstood you and you, me.
I'll call it quits and apologise.
Same back for the missunderstanding
i get quite annoyed at the way the community treats its devs thats all fella (Gender unasumed) been here for 11+ years as its always been the same
It will always be the same... "Thanks Bohemia" is almost as poular as "Thanks obama"
#blamearma trends on twitter every update too
yep
#ItsAfeatureNotABug
Love the game hate the politics
But anyway back to the original statement i personally feel its the devs right to protect his work especially if its being sent to the public for free when its cost them 100's of hours of dedicated work
same
no one ever tried to deny anyone the right to use obfuscation; they were just pointing out that obfuscation is a pointless endeavour, since it is literally impossible to build a working, unreadable pbo. if you still wanna use it, that's fine. just know that it is about as secure as locking your bike with a ziptie.
Hm I'd say it's like locking your bike with 300 zipties that someone has to remove lol
And some people bring a ziptie angle grinder π
you could steal the slightly more ugly bike standing right next to it without any zipties
at that point the metaphor breaks down somewhat, since using a tool that beats obfuscation is the same amount of effort as one that doesn't once you set it up
But from what I understood, then Head comes and needs to transport all the bikes from point A to point B.
He packs all the bikes nice and well in the back of his truck and then notices that there's THIS bike, full of zipties. Zipties everywhere. No way to pack it the same way as the other ones. He will have to drive twice and transport THAT bike separately.
as koffein just said, the metaphor kinda breaks down now π
if someone else transported around my bike without my authorization I would be kinda confused, mad and would probably call the cops
Thing is, my guess is that Head is talking about Swifty, his downloader that does partial/differential PBO copying and updating.
Which means that you've authorized him to transport your bike, but even then, there's still lots of zipties left on that bike.
but the people you want to beat are "thieves". those aren't the people developing the tools though. and once those tools get updated for whatever you try next those "thieves" will just install an update and have no extra effort per-"theft"
the idea that someone would try to open a mod, encouter a type of obfuscation that breaks their tool and go "oh well, i'll just steal someone else's shit" is a fantasy. what's way more likely is that that person would simply find a tool that works and use that.
How good that we can trust on a big part of the community being unable to google for such a tool π
how do you think they got the tool that they are using now?
you can do partial/diff updating of PBOs without inspecting the internal file structure
just like arma3sync
that's beside the point
encrypted pbos won't work that good though π
and also diff updating with actually doing what Head does with swiftpbo is faster
it's not even that anyways, he added ability to not break it apart because obfuscation is a silly thing to fight, but now more and more people come asking why it doesn't work because some new obfuscation is out there
I don't know how exactly a3s works but I have written a BitTorrent installer/downloader and was contemplating implementing in-PBO updates so I know for a fact that being able to crack that PBO open helps you much to decrease the amount of data required to be transferred
yup βπ»
@loud sapphire
if devs want you to access there content they can turn it off if they dont they turn it on its quite simple really
sure, that's why I don't use any mod that is obfuscated, no point in supporting something I'd have to fight with to even use π
Case in point: you add one small file in the middle of a PBO which shifts 50% of the PBO data by 10 bytes.
I'd argue that the rsync protocol will NOT realize how that PBO was changed
Or if just the order of files inside the PBO changes for whatever reason. If you know how to parse it that's easy. But if you just see a bunch of bytes being completly different
I'm actually planning to implement such diffing into my updater.. Never actually thought about problems with obfuscation
If you could open the PBO, and realize that, then you could just align the PBO sub-files at the destination such that you only need to transfer those 10 bytes and be done
Fortunately, I didn't have any need to deal with obfuscated pbos so this was (fortunately!) not a problem to me, yet
Dahlgren: encrypted pbos won't work that good though :stuck_out_tongue:
Which was precisely the reason why those APEX updates, you could count them in gigabytes (~10), instead of hundreds of megabytes.
impossible to build a working, unreadable pbo.
Which has nothinbg to do with obfuscation. While people continue to confuse obfuscation as being some sort of encyption, and all-you-=have-to-do is read the contents, it will remain a succesful roadblock. Couldn't care less that the 'files' can be read or looked at or hex edited. The name of the game is to frustrate and confuse.
I believe that was the whole point of that comment, ability for other tools makers to not do X with obfuscated PBOs diminishes the ability to frustrate and confuse people
those people don't really do any damage anyways, who wants to do real damage will get through obfuscation no problemo
@safe slate "scalabe pixel, any world size/surface map size ratio is supported" Does that mean the surface painting works on large maps now? The other day you said there was still work to do on that
π
no...
^^
it just means that the p3d pixel fits to your world/bitmap pixel ratio
but the dll still can't handle large images
for now, it's still limited to 16k BMP
ahh ok π
people at #arma3_terrain would appreciate such announcement.
ok, i'll make them over there instead
@karmic niche Your analogiues were quite correct.
the sqf-vm bot now can also be PMed (@tawdry gazelle)
as probably more ppl seeing it here, those developing extensions for arma
would it be useful for you if you had a way to test those extensions inside of my sqf-vm project?
talking about adding support for callExtension variants (sqf-vm in case one does not knows: https://forums.bistudio.com/forums/topic/210118-sqf-vm-an-sqf-emulator/ @tawdry gazelle
@nocturne basin well yes that would be a useful thing for some people maybe. I'll just drop this here, as this is used as my testing workbench for extensions:
#include <Windows.h>
#include <iostream>
#include <string>
typedef void(__stdcall *RVExtension)(char *output, int outputSize, const char *function);
typedef void(__stdcall *RVExtensionArgs)(char *output, int outputSize, const char *function, const char **args, int argCnt);
void run(RVExtensionArgs func, const char *function, const char **args)
{
const int bufferSize = 10 * 1024;
char buffer[bufferSize];
buffer[0] = 0;
buffer[bufferSize - 1] = 0;
size_t length = sizeof(args) / sizeof(args[0]);
func(buffer, bufferSize, function, args, length);
if (buffer[bufferSize - 1] != 0) //BIS buffer overrun error.
{
std::cout << "Buffer overrun blah BIS stuff" << std::endl;
}
std::cout << buffer << std::endl;
}
//Todo make this compatible with x64 and x84
int main()
{
HMODULE hMod = NULL;
RVExtensionArgs func;
hMod = LoadLibrary(L"D:\\Projects\\someExtension.dll");
if (hMod)
{
func = reinterpret_cast<RVExtensionArgs>(GetProcAddress(hMod, "_RVExtensionArgs@20"));
}
if (func)
{
const char **args = new const char*[1];
args[0] = "11";
run(func, "version", args);
/*
for (int i = 1; i < 1000; i++)
{
args[0] = std::to_string(1).c_str();
run(func, "", args);
}
*/
}
return 0;
}
I just add a new profile that compiles my extension as a executable and use that to test
well i guess this way you can be sure your exports are correct, and its validates the final build of something. If you check your extension your way, things might still go wrong when using the compile options of the .dll or .so in the end
unlikely but I messed up by builds in the past, so i stick to this now
SQF-VM 0.1.3 just got released, main features: groups, sides and object commands π https://github.com/X39/sqf-vm/releases/tag/0.1.3-alpha
in case you want to test the whole thing without downloading the tool, feel free to message the bot @tawdry gazelle (via pm as not in this server)
@smoky halo @dawn palm @limber garden would you guys be up for helping with o2script and sharing scripts of yours as reference to learn or make use of?
anyone also is using o2script so far?
also any IDE/code editor with o2script keyword support yet?
are BIS scripts not good enough ^^
O2script? @vague shard?
you dont know it @nocturne basin?
@smoky halo
callRuntime "checkclosed"
callRuntime "checkconvexity"
callRuntime "chkstvects"
callRuntime "countsections"
callRuntime "degfaces"
callRuntime "isolatedpts"
callRuntime "matlist"
callRuntime "texlist"
checking the exe source this is probably the full list for it:
closetopo
removecompo
createcompo
compoconvexhull
checkconvexcompo
checkconvexity
autosharp
makesharp
mirroranim
halfrateanim
texlist
matlist
proxylist
proxy:
cropsel
optimize
isolatedpts
chkmapping
chkstvects
chkfaces
repairfaces
degfaces
smoothgroups
countsections
getsections```
so no BI samples is not enough π
If you can explain what it is I can add it to arma.studio
in short: it is SQF for Object Builder
allows to analyze, create or modify p3d stuff
and more....
Not Rly enough if I should add it to arma.studio
Any link to the doc specialized onto O2script?
if you have Arma 3 Tools installed: ObjectBuilder/O2Scripts/ComRef
it also has supportInfo cmd
Syntax etc.? Same as sqf?
@smoky halo is the expert, I never progressed further than making some minor edits to BIβs checkAll script.
@modest hatch has also made mentions of using O2Script
Kk
Need to check then
Probably will have it rdy by end of the week
@nocturne basin on a related note did you or @glossy inlet ever try to do fancy stuff using Buldozer? (for sqf prototyping, callEextension stuff, asset preview)
@smoky halo did quite some tests how much one can extent it (full config getting loaded, sqf execution, etc)
no
Nope
its using the standard engine after all - just in some reduced mode (which one may be able to expand)
for some type of modding cutting down the initial game loading time is still very important
I don't actually know how O2 can communicate with the engine in such a deep level
Maybe you can open that interface while playing the game normally.
@vague shard -filePatching, diag_mergeConfigFile and diag_resetShape are not sufficent enought?
@smoky halo terrain lighting tweaking for example
diag_lightNewLoad
The original pboProject and arma2's binPbo were were written in 02Script. It's syntax is identical to sqs with one extra @ operator. It's claim to fame is it's gui display and access to the underyling file system (rather than bi's virtual file system). I know nothing more than what anyone else can read in it's comref already mentioned by t_d. There are no extra features or additional libraries for it other than what you can write for yourself. The scripts used in Visitor3, are, 02script.
its not in the public diag exe but if they get enought requests they might will add it
@smoky halo false hope after BI's track record and the new lighting fiasco
yea it would have been the right move to release it with the #visual_upgrade allowing terrain makers to actually reacto to that fuckup
yet it is on low prio to push it to public diag.exe
btw: 33724 is BIS' internal ticket number;
this command would allow realtime lighting editor with fancy sliders π¦
@nocturne basin Would it be possible to use the parser part of your code (that understands the SQF constructs, I suppose) to create a translator that would output a functionally equivalent code in another language, like Python? (with further development of that code in intercept-python in mind, for example)
Yes, I know that you won't be able to translate the most complicated constructs but would this be not-completely-impossible?
I don't know how your parsing and interpreting code actually works but I was thinking that maybe you could switch the code executing frontend to a code generating frontend? (instead of "iterate X 10 times" do a "print to file: for i in range(10): X")
I'm oversimplifying here, of course and I'm aware that it's going to be hard, hence my question is simply: is this just plain impossible with your code? (or just very hard but not impossible)
his parser seems to be very specific for the interpreter and not a general purpose parser
I could very well be wrong though since I've just quickly scanned it π
X39 did something similear with OOP script.
This is essentially what a compiler does when converting code to assembly.
It is definetly possible... But would need a lot of time
@glass reef I think you are in the wrong channel
@glass reef try #arma3_scripting instead
@glossy inlet I mean, I know it's possible, i just wanted to know if the code could be repurposed, as it is right now.
I have a biiiig game mode in my community, right now and I hate SQF so I was thinking about slowly rewriting its code to python prior to editing, function by function, as I need to make changes to those functions.
Then I thought that maybe it would be funner to have some code perform the translation for me.
Being able to slowly port the code to python would also give me a real incentive to sit down on that intercept-python and try to push it forward (because, as of now, I don't really have the need to do that, since everything is in SQF anyway and we're (they're) mostly only making changes to the code instead of writing new code)
@glass reef sounds like a script to me, tbh.
in game <- this.
Depends on which project you talk about @karmic niche
The parser of arma.studio would be capable
The parser of sqf-vm... Could work... But not sure if you would enjoy the outcome π π π
You could edit that parser to allow for more flexibility (as right now not all commands are available)
But still the result of any of this would not be how you imagined it
Sqf is command heavy meaning that even the + would have to be transformed into only sqf. Add(larg, rarg)
Thus you would need to handle those cases special
Arma.studio parser also comes with a dull problem that yet has to be solved: precedence is not yet handled correctly has for syntax that is not really that much of a problem
Tl;dr: just pick any parser and you will be able to
But getting good results requires special cases meaning you have to write the majority yourself anyway and result won't be good neither
SQF is mostly just knowing the commands and how to use them. switching to python wouldn't solve that issue
different thing is if you want something like intercept but in python
if you want something like intercept but in python
It's called intercept-python and is already in the works π
SQF is mostly just knowing the commands and how to use them.
Knowing primairly SQF... that's what i think but everyone alweays seems to disagree. Even then i admit there's some weird stuff though, but usually the problems i run into are engine behaviour that i wouldn't see fixed directly
Expanding on adanteh's response:
mostly just knowing the commands and how to use them
That's just what Intercept requires and Intercept it is marketed as something that does NOT require you to write in SQF, so...
...it means that the problem with SQF lies in everything else π
but heck, even if it's just only the syntax that would change, i'd still like that because then at least you don't waste time "learning" a syntax that isn't used anywhere else
I don't know if Arma syntax is so complicated
Using python or any other language you usually get a lot of stuff that is built-in to that language. Maths functions and stuff that SQF doesn't have.
Just converting SQF->Python wouldn't have a big benefit besides performance and maybe readability
I don't know if Arma syntax is so complicated
It's just... strange, and very different to other languages.
And as Adanteh said, it's something programmers don't want to learn because they are used to code that looks completely different so, let's say it's like riding a bicycle that has the left and right side reversed (there is a youtube video of a guy who made one, google it π ). It's just annoying to have to remember at each turn that you have to turn left if you want to go right.
Actually, It would even make sense learning that language if it wasn't for the fact that learning SQF lets you create scripts in one semi-niche game.
Learning Python instead (or spending the time improving your python instead of learning SQF from scratch) opens hundreds of thousands of job opportunities to you. Guess what most people will prefer to do...
besides performance and maybe readability
Sounds like two VERY good reasons to me π
sorry to interrupt, but i'm still not sure if @hallow rapids intended for this pun:
I could very well be wrong though since I've just quickly scanned it π
I don't see the pun ._.
Probably scanning the code of a parser
Is there a way to open multiple files with TexViewer?
@vital chasm - just open it.
Ho, i don't think it's possible
Set th filetype to open with texview
Not sure if this is the right section. I'm trying to re-pack a modified version of POTATO's assigngear pbo (Specific file I edited is fnc_getLoadoutFromConfig.sqf), but when doing so with ArmA 3 Tools (addon builder), it doesn't pack any of the sqf or hpp files. I used pbo manager to unpack it in the first place
simple as that
pbo manager is no use to you. last time i looked, it 1) didn't convert bin back to cpp, and 2) ignored the all-important prefix
and your problems with missing hpp and sqf files are addon breaker's odd behaviour. There's logic in it somewhere but it defeats most people.
use Mikeros MakePbo if you just wanna pack something. I even got it in my right-click context menu to quickly pack stuff. It's easy and it just works
I think I understand how tv4l file format is read
^ @pliant lynx will be happy lol
it does not mean i know how to properly write it ^^
is that the one containing all the object positions/rotations and scale?
yes
nice!
@smoky halo any idea how the color data of the inner quadtree nodes (depth > 8) are calculated and how the "pinned" object hash is selected?
calculated - with only 1 object type in a branch it looks just like the object's fill color (with changed/lowered opacity)
pinned was probably the wrong term - every data leaf has next to it bbox and node_color an object_hash stored (of one of the objects stored under this leaf) - but how is the chosen one selected?
@karmic niche , do you know https://github.com/LordGolias/sqf (disc: my work)? I think that it does what you are searching for. Specifically, it fully parses SQF.
(ok, apart from #define and #include, those bastards). On the other hand, is fully tested (+98% coverage)
@forest trellis since you're in here, it's very slow with parsing big files
probably a side effect of it being python but still ^^
Convert it to Cython or use PyPy if you want greater speed π
obviously these files are quite excessive but it takes about 3 minutes to parse https://github.com/ALiVEOS/ALiVE.OS/blob/master/addons/fnc_strategic/indexes/objects.tanoa.sqf (~17000 lines)... not a big deal but a bit annoying when sqflinting recursively ^^
Yes, I know it, I've even used it once on the same code I would like to eventually translate (and now that I think about it I think I had some issues to report that I completely forgot).
I wasn't sure that a linter would have enough logic implemented to be able to understand the language enough to translate it whereas a VM library needs to be able to fully understand the code, not just parse it. @forest trellis
Do you think your library could easily be repurposed to do what I was asking? Note that it's a plan for the faaaaar future as intercept-python needs to take off, first.
@hallow rapids (~17000 lines)
I think you have a much bigger problem than a slow linter here to address! π π π
hehe well it's the DeWRP output ^^
then you shouldn't really need to lint it
@hallow rapids but if you are running that linter directly from python then you seriously should consider trying using it with PyPy. It's a python interpreter that does JIT, which can speed things up but a large margin, sometimes
@karmic niche you have problems with sqf in that regard
No VM will understand sqf like you want ever
As sqf is fully command driven
Even plus would need to be a method
Currently working on rebuilding sqf from stack for sqf-vm
You might be able to utilize that when it is done
I'm not really sure if i understand what you mean. For translating to another language I don't need special methods for anything since I'm just generating text (... + ... in that case)
Just remember... Sqf is command driven and thus the result will either need to be heavy case based or you need to accept that even plus is done with methods
Well... Plus in sqf ist like calling an add method
In normal languages
Are you talking about some corner cases? Because I was just thinking about trying to write a translator that would just help me in translating the code. After doing an automatic pass, I would fix the code manually anyway
Because I still don't understand the problem, honestly. Even if it's having an add(X, Y) method, I can always rewrite it as (X) + (Y) and output that string, isn't it?
Ok
Well... You could easily regex stuff like sqf.plus(left, right) away
No, wait, I think I understand the problem with our communication
But unless you add those exceptions to a generic generator, you are out of luck
I'm not trying to have python code that calls SQF for everything
Does not matters
Sqf to python would have to start somewhere
I want to just keep the Arma function calls and translate everything else to regular python
Well
Gimme some time and I'll probably provide you with a start
Okay. Just don't hurry up too much because I suppose I'm going to need that in about half a year so take your time π
Intercept-python would first need to take off
The code is not for you π part of sqf-vm stringification
As Code is currently still just containing a copy of the input string
Instead of building a new one
To then print python would just require adding all sqf commands a vm, Parsing the code and then printing it as python instead (sqf-vm is not featuring all commands yet as you probably know)
I wrote something to directly render P3Ds via Blender using py3d and armake: https://puu.sh/xKly1/d4d2df3f90.png
(Note how - unlike some O2 exporters - the smoothing isn't completely ruined)
oooooh
the defaults aren't really usable yet, but the goal is to use this to completely automate inventory icon creation for weapons and attachments/items
but you can already open pretty much any p3d with textures in blender, so that's nice
ok that's sexy and exactly what I needed a couple of months ago when I asked in here π
that's going to make life a lot easier
does it work for uniforms and all that as well, even if the model is binarized from BI?
eg. a retexture using a non-sample model
no, py3d only works with unbinarized models
ok not exactly what I needed then but still sexy π
@karmic niche running through PyPy it takes ~50 seconds which is still quite slow but way better ^^
aren't pretty much all P3Ds binarized though?
Wow, that is some awesome stuff π
it should be able to find the textures in most setups
just tested ace and acre, those work too
creating the repo as we speak :p
π hype is real
you need armake and blender in your path, py3d should be installed automatically. so far i've only tested on linux, so you might have to adjust some slashes on windows or something
it's a bit hacky. since i didn't want to deal with modules inside blender, this script actually just generates another python script with the model data that is then run by blender
@wide cedar I will have to check it out on win10 when I can
just need to find out how to install everything tomorrow
π
nice work though π
@wide cedar awsome
@wide cedar wow, awesome!
updated dll (credit to armatec)
mildly important fix for procedural MATERIALS in some p3ds for class CfgTextureToMaterial. Specifically #Water_1 to #Water_160 or 'think of a number and pray'
@plush shard I dont know how color and "pinned" object hash are determined. But looking at how Terrain Builder displays the colors I would assume that it is based on the area the objects cover in the map cell/area
and the pinned object might be something like the object that covers the biggest area in the cell
You on about the object colour in terrain builder? That's set in the template library
sounds like the 2D representation where it tryies to visualize the most common color in the area depending on zoom level
and yes the colors come from the template library as ice said
@hallow rapids very slow compared to what? 17k lines in 3m seems pretty fast compared to what I can read SQF just to detect errors. Besides, where on earth would you need a latency of less than 3m for 17k lines? If you have a single file with 17k lines, you are already doing it wrong anyway. If not, you only need to parse the files you modified the last time. 3m for a full scan of 17k seems reasonable from a CI perspective.
3m was for a single 17k line file, scanning the entire repo took like half an hour if not more
can't remember
but it's fine, I just feel like it could be way faster but it's ok π
great work nonetheless man β€
You need it to be faster? C++!
yeah I always wanted to write a linter myself in C++ but you know.. effort..
and now there are a couple around so it's probably wasted effort besides the educational part of it
C++ with unicode, yeiks! I actually did wrote the tokenizer in C++ for speed, but it ended up not worthing the gain in performance, so I just dropped it.
(with the downside in 2 languages, maintainability, etc)
well a tokenizer between python and C++ wouldn't differ that much in speed
it's the parser that differs
are you parallizing the linting?
@hallow rapids, yeah xD
@glossy inlet, not at the moment, no. But it would be a good adition. I am not sure it scales well, since the parsing of a file is mostly sequential.
for multiple files it sure speeds up (perfect parallelization)
the parsing of a file is sequential.. yeah.. ofcause.. But if you have 2 files. You can sequentially parse them in parallel ^^
I'm probably misinformed about this one but I've read numerous times that Python is really shit in terms of parallelism/threading
it was in the past yes. I think the issues are resolved by Python 3
ah that makes sense π
but yeah, parallelism in Python was a bit damaged
I think the issues are resolved by Python 3
No, they aren't. Python is still using GIL (Global Interpreter Lock) so it's using a single physical thread all the time
However, you can work around this issue by using the multiprocessing module (works the same way as multithreading) to run your "threads" in separate processes
@forest trellis check if you can convert your code to Cython, if you want to have it run faster (faster than with PyPy, which runs it faster than CPython already).
well, I was refering myself to the multiprocessing module
The first step is to rename something.py to something.pyx and compile it with Cython. The code should just run.
Then, you can adnotate your variables with keywords like cint, etc... so that Cython will then treat the variable as a C int and will optimize the resulting code (no checks for "what is the type of this variable again? Should I convert it to... uhh.. what is the type of the other variable again?" on each variable access)
I will not do it because maintanibility and readability trumps performance at this moment in time. But fell free to fork it and do it. It is BSD afterall.
just give in and use C :p
I might add clean syntax checking into sqf-vm... But right now I personally do not see any use for it
well, ACE, Epoch and Exile use or used sqflint AFAIK, so, there is that. (E.g. https://github.com/acemod/ACE3/pull/5468)
ACRE also uses it, and all thoes projects found a lot of those hidden things that could cause various weird bugs
@wide cedar Never
@wide cedar ahaha, certainly an option on the lower end of the spectrum when things need to go fast.
imagine if C or C++ was the only programming language that ever happened.. Everything would've been either crashy as hell or blazingly fast π
no electron based software for starters ^^
or would take so much time to develop that the window of oportunity would be lost
^^
@hallow rapids @forest trellis everything would be working as only real c programmers would run around doing c stuff
as if "real" C programmers never make mistakes ^^
Mostly manual management of memory is still the number one reason for out-of-memory applications
imagine if C or C++ was the only programming language that ever happened.
it is the only programming language. Java, php, perl, dotNet, C#, are all the same c++ language syntax and construct.
and then along comes sqf which resembles something out of old Hewlett Packard calculators of the 1970's.
i'm contrasting what shit looks like vs the industry accepted code syntax.
those hp calculators with reverse polish notation?
yep
there isn't a person in this room who can't read what's based on the Algol programming language. (fortran/Algol -> Btree -> C->C++->C# ) I can't write Java to save my life, you probably can't write in perl, but both of us can read and understand each other's code.
@wide cedar worked just fine on Windows after some minor changes, great tool! Iβll try to fix some of the cross platform quirks and send some PRs your way
The two elephants in the room between the two OS's are file system related. Linux won't tolerate backslash (\) but windoze will (generally) accept either (but some gotchas do exist like dos renames, and stat commands). The other elephant is filenames themselves. Linux is pure utf8 and windoze is pure utf16le. You can get away with using fopens() for both of them while your filenames remain 7 bit usAscii. But it's good night andf thank you for playing the instant an umlat is involved. There's no practical way to use wfopen()s on linux because it's utf32 bit, and similarly, utf8 on windoze gets misinterpreted as 'local codepage'.
To cater for this, my dll has only one call for all bis_fopens(), all bis_creates(), and all bis_fstats() etc. It converts at the very last moment to whatever is actually required.
What no one can compensate for is 'server code' that has to account for inc\com\ing pbo, p3d and config references. It depends who wrote the code as to how robust it is.
bat vs bash, environment variables handling, Python in general on Windows, string escaping due to forward vs backward slash in paths etc π
yes. I should also have mentioned bis_system() calls π
Microsoft did a stunning job when they introduced I8N all those years ago. Overnight, 256 char cyrillc versus Thai codepages, to say nothing of the 17 codepages in katakana, were done away with. There can now be no mistake it's a cyrillic char, EVEN, in an 'english' document because it's codepoints are unique.
As superb as unicode is, the difficulty with utf16le is which way is the byte order, and ditto utf32. Along comes utf8 which simply encodes any and all unicode chars in a unique way, and the icing on the cake is plain vanilla, us-ascii text files work unmolested.
It is the latter which has doomed (for want of a better expression) microsoft's wide char format. No one has a reason for using it any more. (and very few people even know about advanced save options in their favorite editor, so most docs are single byte chars with no bom)
Pythonβs Unicode handling before 3.0 is not that great π
same for all of us i think.
Is the string object Unicode or not??
string objects in bis are utf8
Java is utf8
Can't think of any major coding language that isn't
Micro$oft product (excel, word, etc) are utf16le. This is by no means their fault, or them being dumb. They were first to deliver something universally usable and transnational.
Python πΎ
I've avoided python as being un-necessary for my needs, but i've only ever heard good things about it.
Once http://docs.pipenv.org/ is stable and more mainstream one of my bigger pet peeves with Python goes away, package handling in projects
There are a lot of different solutions for that today but they are not easy to introduce for new developers in general
Especially when working on Windows
@scenic canopy great to hear, looking forward to the PR
@wide cedar I'm gonna submit my formula as a PR to Homebrew (https://brew.sh/) for them to include armake for macOS as well, not sure if they'll accept it though since it's a bit niched. Otherwise it might be possible to include it with the armake repo directly
abstracts away all build dependencies, compiling and installation
supports both GitHub versions and HEAD from master
Hey so im trying to run arma3p and I get the error saying dePbo Sha key is corrupted, Im running the latest free version of all the tools (I literally just installed all of them) does anyone know the cause/fix of this error? I have tried re-installing.
the pbo is corrupt. someone hacked it and it's contents are bad / bazongled. the sha is a glorified checksum, similar to md5's when you download from the internet.
Yer I get it the hash got changed somehow, its probably because windows restarted my pc dure in the download like 4 times it failed to validat like 7 files as well so Ive done that and its doing it fine now, thanks! π
my tools never extract 'faulty' pbos or even the suspicion of a faulty pbo because the pain caused later on by letting things thru the door fills forums with 'why doesn't it work'. The paa is corrupt, is why, but the user ignored the error or forgot that there even was a problem.
Thats quite a good feature because your right alot of time people tend to just over look errors (I've done it myself a few times)
Just updated the SQDev plugin that is now able to detect SQF syntax errors in your complete project for you! See https://forums.bistudio.com/forums/topic/202181-sqdev-sqf-developing-in-eclipse/
@sick verge What version of Eclipse does it need to install your tools?
@vital chasm it should work with pretty any version of eclipse
p3d error Generic error or premature EOF
how can I determine which P3D is causing that error?
got it its the PBO above the error
π
start programs->mikero->tools->~documentation
that wasn't covered in the documentation
also is there any reason for pbo project for deleting already packed PBOs at the project start?
if the build fails then the successfully pbo is deleted
it's probably for the better since otherwise you might test/ship the old PBO
damn right
any chance for an option for this?
none
you';ll swear on a stack of bibles, like every user who's done same before you, that the 'new' pbo doesn't work, when, in fact, there isn't one.
i guess. anyways thanks for the tools, don't know what we would do w/o you. which is fucked from Bohemia standpoint
why would you want the old pbo when you're trying to build a new one?
haaaaaaaaaaaaaaaaaaaaaa
when I'm cooking food I don't want yesterdays dinner laying around while preparing it π
I can reuse some good integrends that I'm missing right now
guess it's just an issue of my workflow
that's a damn sensible thing to say Katekarin. it normally comes down to that, and backups.
I'm having an issue with MoveFolder
While it does actually move the files, and point them in the right direction in the P3Ds
PboProject packs its w/o issue
But the textures don't show up on the models in-game and in object builder
then those textures don't exist in pbos in-the-game
you've probably told moveFolder not to move ca assets so it won't
paste a screenie pls. the ''definition' of 'respective folders' is a little vague. show me the folder containing the textures
@dawn palm sent you a PM with screenshots
Solved the issue with that. It moves files fine, but the rvmats are left behind. They are not touched, so you still have to do work manually.
the rvmats are placed in their respective detailmapy, penetration, and other related folders as originally specified by ca\
I meant that RVMats for models, are using textures from ca\
or just from the old folder
The paths don't change
And when using clean option textures used by the RVMats are being deleted.
Well, deleted, moved to the backup folder
Thanks, I'll be waiting for a fix π
hey @dawn palm is there a place I can easily find to subscribe for the latest version of tools?
well worth the price
^ π
hmm im getting an error about makepbo not being installed even though its exe is in the folder with pboproject
uninstall everything, delete mikero folder, then try reinstall
worked
Most likely something wrong with your files
Does it give any more information in the console window? Anything in the packing log (view output button) or the bin log (view binlog button)?
Make sure you have Noisy Output selected as well
no errors in packing log and bin log just opens the temp folder
@onyx helm what are you trying to pack?
a larger project with various parts split into pbos
but ive tried other small projects just to see if i can get it working and it still hangs
being less vague about it could help
i mean i dont know how really to describe it. its a project with a few different .p3ds and a .cpp, model.cfg, etc. etc.
all the usual stuff
and it seems to occur on every project i attempt to pack
regardless of size, number of .p3ds, etc.
dayz sa at this rate π
characters, vehicles, objects
all in one?
characters are one pbo, vehicles another, and so on
but like said it happens even on projects that are only one weapon or simple object
yeah left it for about 3 hours last time
could be config or bad file related then :/
well im able to successfully binarize with addonbuilder which is why im confused
it seems to be some specific interaction between pboproject and binarize.exe thats failing
addonBuilder lets through just about anything.
true
hmm im getting an error about makepbo not being installed even though its exe is in the folder with pboproject
this will happen if you attempt to just copy someone else's copy of the tools
pboProject jiust hangs
this can happen if you use someone else's subscriber toolset. Not always, sometimes.
Latest free toolset was mentioned above. install ALL of them.
yeah thats what im using is the evaluation version
any library for c available to read binarized configs?
also need to parse pbos at best
@dawn palm @wide cedar
armake has those capabilities, but you'll have to make it compile to a library yourself
@wide cedar the fixes to p3drender should be enough to get it running on Windows
found some other issues as well, I guess I should send some more PRs π
yes, X39, but ditto to KoffeiFlummi. I export the API to the dll for this reason and use.
Kk
Ty guys
you might be better off using combinations of extactpbo options to get what you need, eg, a dir/b listing of contents, or only a cpp extraction, etc etc.
but you will need my exported lib file (c++, not c#) if you want to <<look<<at<<some<<class<content
god how I loathe that syntax, along with <templates>
Need c exports for sqf-vm @dawn palm
For now it does not matters that much as it is not yet planned to happen soon
You can also call c++ exports from c... Just not.. that easilly..
yep, the native export is c++, from which, you would provide wrappers for c, or c#
there hasn't been much interest in hooking into the dll (mondkalb, neo and t_d, being the exceptions). If their is sufficient interest i'd provide those wrappers.
@dawn palm changing p3d textures from paa to tga, I recall back from arma2 (or was it even arma?) era that moveobject p3d *.paa *.tga does not work, that you must use moveobject p3d full\path\to\filename.paa full\path\to\filename.tga instead. has anything changed regarding this?
no. it treats all as being equal and there's no particular reason why you would want an mlod p3d referring to tga
roger, just wanted to make sure about *
yep
@dawn palm you could provide c# wrappers?
@dawn palm I'd be interested in creating wrappers for other languages if possible
last time I saw your exported API, I was like: No way I gonna do a Wrapper for it π
well i was going to get you to provide it t_d.
you know C#?
enuff to read yours, yes. but it's not supported well enough in linux to bother with.
actually @dawn palm ....
mono is supporting it up to a certain extend
stuff missing is pretty damn windows relying
eg. WPF
working with libraries works literaly the same way
like it does on windows
it's not worth it.
thats correct indeed
simple [DllImport(...)] is enough
as long as the c exports are correct
and known
.net core is available for all platforms
haha
I'd like interface some of the functions such as derapify and linting in node.js
armake has derapify so I guess I could use that
sqf-vm now has its own discord server https://discord.gg/vpdwJtG
armake has derapify so I guess I could use that
i certainly would. What I wouldn't do, is re-invent the same wheel, with yet-another-variant of derapify code, complete with it's own set of bugs (versus mine, or koffien's). A lib call is the way to go.
The same function call is still used in my dll to derap ofp code, which is different in binary, to arma.
What would be the license for using the dll from another language?
Same as for all the other tools or would there be an exception?
I'm asking because if I extend my tools with your DLLs and all of the sudden either I can't distribute them or all my users have to buy your tools, then it's a no no for me.
that's easy to answer stack, use the free tools dll for all api calls. I garantee those functions will never change in past 12 years. Added ones, maybe, but never obsoleted.
As it happens the only current difference between the two dlls, is obfuscation and headless server is disabled in free.
ditto the linux api is identical (in func() and arguments).
almost all api functions have a 32 bit options flag. IF the characteristic of the function changes, a previously unused flag bit is set to use the new functionality, otherwise it remains backward compatible.
Are the header files available for the free version @dawn palm ?
i can make them so, private pm, but not tonite.
no stress π
@dawn palm is it possible to force case-sensitive checks using makepbo?
I've been experimenting with CI that builds missions, but that runs on linux and the builds there fail, because people are including cfgWeather.hpp when CfgWeather.hpp is present on disk. The problem is that they can't really check that on their computer before committing the mission because windows tools will just ignore case.
@karmic niche http://www.brain-dump.org/projects/ciopfs/
Thank you but i would have preferred the other way around :).
After all, if the file name doesn't match, it doesn't.
(unless it would have worked for the game binary, on linux, and even then I'm not fully convinced)
as long as it's bundled as a pbo it works the same on both
So the PBO "entry list" is case-insensitive?
In that case maybe mikero's checks also should be case-insensitive, regardless of the OS?
almost everything in the engine is CaseInSeNSitive. The exception being, from time to time, map maker devs who cant/get/there/act/together;, or never bothered checking how the rest of the game works.
god only knows why but somehow for some references in map making (they change on subsequent updates), the devs are using strcmp not stricmp. or the equivalent in sqf encoded code. These people are just a joke. The same people btw who are now using enfusion to make maps (god help us).
there's nothing more i can do for a 'nix build except error out because the dll would have no idea whAtTHeRealNaMEis
you can, and i was thinking about doing it for armake, do a manual filesystem traversal and compare names insensitively
you're quite right. i could just trap the error and do a stricmp on the dir listing of the folder, relative vs absolute addressing will be a pain, but.....
Sqf-vm is on hiatus from my part due to unexpected surgery I had yesterday
In case one wants details, pn me
hope you stay healthy.
Already back at home... Just needs some healing
Monday I will know when those damn clinches can be removed
After that it is besides the no sports thingy done
that sucks. you had an injury while sporting?
where does dep3d puts the debinned file? I cant find it
replaces the original
afaik
or in same directory as original with a postfix on the filename
well it does nothing alike for me
https://i.imgur.com/yIcepzK.png all it does is this
@south canopy -nn nameof[.p3d] : convert p3d to type nn
but this is not for debinning
has anybody an idea for the following problem:
nope
somebody used my odol web converter but cannot open the generated mlod with OB
he sent me the file and I can open it w/o a problem
wrong OB setup? doesnt seem so because he can open his own models but not the ones created with the converter
he is from Ukraine. Any ideas what could cause this?
Hm
Must be something wrong with his OB. Whats the msg popping up for him?
+Is he rly loading the mlod version?
maybe outdated OB?
Looks like he tried to load an odol version
Doubt it @glossy inlet . Unless he blocks every fricking update in Steam, constantly
Or downloaded from some "strange" site
already asked if he loading the right file
I mean, if it works for you, something must be wrong with either the file he tried to load (as mention before wrong file (ODOL)) or is installation is fkd up
ok. i resaved the file for him. that seems to work. will make a file diff
Strange
you can do your bets now what it is ^^
well the resave created a file that is 4mb smaller (34->30)...mmhh
oO
so the error could be on my side ^^
Do you run a different O2 Version?
different compared to what?
Normal Tools-Version
dont think so
I mean, you got some other fancy stuff ^^
I am not sure if anyone will ever use this new club feature (I find it kind of interesting) but just in case I opened this up for us people in this channel: https://forums.bistudio.com/clubs/7-arma-toolmakers/ please do not be triggered that I called it toolmakers and not toolsmakers, im not sure what is the correct from of both, I thought this sounds best
welcome XD
Kool Klubs be like that
where are the drinks?
Use Mikero's tools to build, as they give detailed error and warning reports to help solve this kind of problem.
thanks
but i have the same problem with mikero tools
<Bis Binarise...>
</Bis binarise>
Binarise crashed with error status 2.
@ashen iron did you check the logs yet?
opps
also did you try to narrow down to what file is responsible?
binarise does not return a meaningfull error code. it is the result of the OS cleaning up the stack, throwing binarise out the window (because it crashed), and it (the OS) is merely reporting residue garbage. It could be 2, 607, or5millionAnd3., all are meaningless. Binarised crashed, and that, is generally due to a bad p3d, and that is generally due to bad weights.
on the other hand, <grin> if you are saying binarise produced 'error 2' in it's log, that is a different story.
one thing it cannot be is a faulty config.cpp because I never let binarise see one.
Updated the SQDev eclipse plugin to v0.7.4
see https://forums.bistudio.com/forums/topic/202181-sqdev-sqf-developing-in-eclipse/#comment-3237605 for more infos
anyone here knows of a c library that allows to abstract away different sources for easy access?
sources i need supported: c string, file ptr, tcp stream
iostream π
there's the Gnome Input/Output library though
that might have too many dependencies though, not sure never actually used it
one here has experience with unicode ctypes?
simply getting character out of range errors and passed string is also gibberish
indeed
windows c/c++/.net, is by default 16bit unicode
bis and the rest of the world are 8bit utf8
the above looks like the wchar buffer to print has been free'd before wprintfing()
there is also no mileage gained in wprintfs to stderr/stdio. Of necessity, the OS must convert the wchars to 'local codepage'. if the characters are wchar cyrillic to begin with, and your local codepage is west europea (win ansi cp1252), you get greek as a result.
the buffer should not be freed (it was working btw. when i was using char)
question still remains: how to get the right result out of it ...
mhh ... start thinking that it could be library related ..
which is weird ... as the standalone variant works just fine
wait a second ...
......
something is not working correctly on linux -.-
LINUX is 32 bit unicode!!!!
it does not even fills my string on linux
just realized that it prints "<EMPTY>"
which means that the buffer contains no output to print
means the reason why the buffer prints gibberish is not because it is not in right encoding but because it simply never is given an '\0'
the world has moved on from Microsoft's very very excellent introduction to I8N in their implementation if 16bit wchar_t. Bis is iutf8, the internet is utf8. In short avoid using L"anything"
now to find out why it is not working on linux ...
even the linux file system is utf8!
should still work in its very own world @dawn palm
using right headers etc.
only that now it is not working at all anymore
why wouldn't it be utf8?
linux big endian unicode also screws with windowze 16BitLE. It's a wasted effort when sbcs is just so much easier and mucb much much more compatible with everone.
if a person is genuinely working in windows guis and screens there's every good reasin to use wchar, because that's the native code in the OS. but for everything else and especially dealing with bis char streams, there' s no excuse for it.
I assume X39? it all all worked before? if so, what's changed?
well that's not quite the story it's char to wchar_32Be or wchar_16Le
it is wchar_t
did not specified anything more
true
do not rly care that much for the wide support
but assumptions are made. AND it's just not necessary.
as long as they are the same wchar_t in all methods it does not matters
and as all methods used utilize wchar_t
..
but question still is in the room: why the hek is it not working on linunx
essential method for printing is vm_output_print
wprintf(L"[ERR] empty argument passed.");
is an example of pointlessness. in both os's they MUST convert back to sbcs
not by any means having a go at you X39, just trying to set you on the utf8 path and be done with it.
no prob
tbh ... if it was me ... i would stick to char the whole time and be done with it
but sadly ... that is not how ppl write comments in SQF
and 100% not how discord works ...
which is actually the main reason
discord
len = vswprintf(0, 0, format, args); this ....
this is the whole fucking snippet that is causing all trouble
reports -1
which obviously is not correct ... as that should return the length -.-
of course it's a problem. assumptions have been ,made. Here is simple elegance for you:
CString8 ut8_msg;
....
utf8_msg += CString8(read_line(fp));
no freeing, no strange calls to convert char to wchar etc etc
utf8_msg.format("whatever %s you like","burp");
looks like for some weird ass reason vswprintf is not reporting correctly when used with NULL in first two params ..
though ... would need to check the actual ISO to see if it does report the length
but why should it not? vsnprintf does too ...
as for vswprint and it's friends, it's the one silly bit that microsoft did when they added wchar equivalents to the std c library. There's no rhyme or reason what the w char function is called for strcmp, strcpy, prinft or etc.
wcslen !!! oh really? what the hell is that!
the wchar_t variant of it
and looks like vswprintf is having different specs ...
so windows actually did it good
but according to c spec it is undefined behavior
M$ probably just copied over the code
and glibc simply rewrote it would be my guess then right now ..
Personally i don't care muchly, I will not use wchar anything when it can be avoided.