#arma3_tools

1 messages Β· Page 17 of 1

scenic canopy
#

land_name_of_p3d

#

in the template and project, yep

#

but if you use xcam/mapbuilder/sfp_atlas etc it can cause issues

hard locust
#

Wow, this given me idea lol

scenic canopy
#

since most ingame tools that export objects file will have the class / p3d filename

hard locust
#

Dont use -x-cam anymore

hard locust
#

Copied the same template 3 times and renamed. TB crashes on save 😦

plush shard
glossy inlet
#

did you try to debinarize yet?

plush shard
#

no, what binarized format should it be?

glossy inlet
#

There is only one afaik

#

Same as configs

#

It looks alot like it

plush shard
#

for me it does not look like a rapified config

glossy inlet
#

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.

smoky halo
#

a p3d (ODOL) is nothing like a config except that a float is serialized the same

glossy inlet
#

I know. But they both have the same serialization algo in the backend

smoky halo
#

that does not help much if you dont know the file structure

glossy inlet
#

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

light trellis
#

Is there a sample for an asynchronous Extension? I am very sure that KK made something, but I canΒ΄t find it.

glossy inlet
#

The same as you do asynchronous stuff in C++

light trellis
#

hm I guess I have to start to really learn c++ then 😬

glossy inlet
#

I just posted the Links to KK's async examples

#

But you have to learn c++ anyway

dull axle
#

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)

light trellis
#

AND I am very interested in stuff like this in general

dull axle
#

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).

glossy inlet
#

I guess that's not just writing lines to a file though.
It is generating an image

dull axle
#

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

glossy inlet
#

It's most likely not in this case though

#

πŸͺ

dull axle
#

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
#

Alrigth. big thanks!

#

I will look into it

native kiln
#

@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 πŸ†

karmic niche
#

No, don't listen to him about C#. Those are just filthy lies!

Come to us... I'll be fun... We promise. Come... Closer...

native kiln
#

@light trellis If they suck you into C++, ask for the nearest pointer back to C#

#

@karmic niche

dull axle
#

Actually I use both on a regular level

#

And both to substitute labview 😫

light trellis
#

I have to learn c++ for my study anyway πŸ˜„

meager falcon
#

better do that πŸ˜„

elfin oxide
#

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++

scenic berry
#

c# doesnt have the namespace System.gay πŸ˜„

native kiln
#

@light trellis @meager falcon @elfin oxide @scenic berry C#, all the way

#

Howaboutyou->dereference yourself somewhere else HUH

glossy inlet
#

@scenic berry not Yet!

scenic berry
#

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 πŸ˜„

meager falcon
#

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

native kiln
#

@scenic berry That converter is very handy

scenic berry
#

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 πŸ˜›

native kiln
#

Yeah was about to ask what datatypes are supported yet, looks like its everything I would ever use though so πŸ†— from my end

scenic berry
#

public static string function (string, int)

native kiln
#

I assume it also supports the new exposed methods?

#

Ah

#

Was about to ask how it handles 64bit crap

scenic berry
#

it exports based on the project "bitness"

native kiln
#

Like

scenic berry
#

i wanted to know how the other DllExport package works

native kiln
#

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

scenic berry
#

mostly it seems there used for just attaching more info to a type/method/properly etc

native kiln
#

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 πŸ˜„

scenic berry
#

as is the [ArmaDllExport] class

native kiln
#

Uh wait a second

#

For what would that attribute be needed?

#

Wouldn't making the field type string achieve the same?

scenic berry
#

not exactly, im struggling to come up with an example but i made it cos i found i needed it

#

πŸ˜›

native kiln
#

Yeah thats the issue im having aswell
I cant find an example to use it lol

scenic berry
#

ahh ok, well string wouldnt do it unless u convert it to a string in arma

native kiln
#

hm, do you have a practical example for it?

scenic berry
#

what the skip shit?

native kiln
#

Yeah, I think I'm on the wooden path

smoky halo
#

Just give up now, no practical use for c# πŸ˜‰

native kiln
#

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

scenic berry
#

just call managed code from c++ easy πŸ˜„

native kiln
#

@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?

scenic berry
#

probably lol

native kiln
#

like

#

i dont think im getting it but I want to πŸ˜„

scenic berry
#

just write a simple console app, nuget the pack and run some tests

#

the longest part is loading VS up πŸ˜›

native kiln
#

but its so lateee

#

argh ill do it tomorrow

meager falcon
#

1 am late ??... pfft normie πŸ™„

nocturne basin
#

Should get some sleep...

#

See ya all in a few hours

pliant lynx
#

how is the investigation on terrain builder object file format going? πŸ˜ƒ

smoky halo
#

I think I was able to parse the map_tpdemo.tv4p

pliant lynx
#

great work, thank you.

pliant lynx
#

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 πŸ˜ƒ

vague shard
#

@smoky halo looks pretty good πŸ‘

#

do the list of item=true/false, and some empty assignments indicate some yet missing info?

plush shard
vague shard
#

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

smoky halo
#

@vague shard item=true/false are not missing infos afaik

#

@plush shard yours is more correct ^^

hallow rapids
#

@vague shard OFP is probably embedded with A3 ^^

vague shard
#

well the A3 alpha leak didnt contain OFP source from what i heard

smoky halo
#

Where can I find tw4l and co?

pliant lynx
#

myTerrain\Source\TerrainBuilder\myTerrain.Layers\ directory. or did you mean something else?

plush shard
#

so far I've found 3 different versions of tv4l - version 2, 3 and 4

smoky halo
#

@vague shard source code leak contains ofp xbox version

vague shard
#

ok i see

glossy inlet
#

I just found the "TerrainProcessorSDK" in A3Samples. Can't that be used to place objects into terrain?

vague shard
#

it is and a few people use it

glossy inlet
#

Doesn't that solve the problem of placing a ton of objects then?

hard locust
#

Some of it is broke, but it is good for mass placing stuff

vague shard
#
  1. you need decent shape files as source (from what i understand)
  2. X-Cam also "solves" that
hard locust
#

It way quicker than x-cam through

pliant lynx
#

Dedmen: what are you talking about? just terrain editing in general or the terrain builder importing slowly and we needing objects layer file tool?

glossy inlet
#

Someone wanted the terrain builder format reversed because importing thousands of objects takes hours

#

I don't build terrains

pliant lynx
#

yep thats me.

#

problem is importing those already created objects.

nocturne basin
#

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
karmic niche
#

Has anyone ever attempted to combine the satmap from the PBOs with the vector map exported with the ExportNoGrid cheat?

smoky halo
#

why?

karmic niche
#

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

glossy inlet
#

I combined satmap images and exported the terrain grid thingy. But didn't combine both

smoky halo
#

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

karmic niche
#

I just hope that overlaying one on top of another will make them look more like the map view from the game

smoky halo
#

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

karmic niche
#

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 πŸ˜ƒ

safe slate
#

@nocturne basin it lets you run sqf without running Arma ?

nocturne basin
#

yup

#

feel free to test it in there

#

the bot version of it

karmic niche
#

@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]

smoky halo
#

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

karmic niche
#

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.

smoky halo
#

there is no value to light them up as it is lighting specific

#

they are just darkend, light them up until you like it

plush shard
karmic niche
#

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

plush shard
#

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

karmic niche
#

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

glossy inlet
#

@Stack (Overflo)#8649 Known armake bug

pearl beacon
karmic niche
#

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

hard locust
#

Bi darkened all the textures with the visual update

karmic niche
#

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 πŸ˜ƒ

hard locust
#

Maybe ask CUP, they fixed up all the old terrains

plush shard
#

could the map slightly be affected by the ingame settings for gamma/brightness (or by some graphic driver gamma/brightness settings), too?

karmic niche
scenic canopy
#

@karmic niche did you get the stitch info for the satmap tiles from the config or manually?

karmic niche
#

@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 😦

scenic canopy
#

it would probably be possible to do an automated endpoint that takes a steam workshop id / url and returns the satmap

karmic niche
#

The satmap - yes, but what about the vector map?

scenic canopy
#

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 πŸ˜„

karmic niche
#

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

scenic canopy
#

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

karmic niche
#

Is that done on a Windows server (that needs to have a GPU)?

scenic canopy
#

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

glossy inlet
#

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

scenic canopy
#

you can use a fake keyboard and trigger input from code

#

or simulate key input in windows

karmic niche
#

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)

scenic canopy
#

just supply the list of missions to test

karmic niche
#

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 😦

scenic canopy
#

if any mission end with other than END0 the arma executable will return the corresponding status code

karmic niche
#

I don't remember what was the problem with autotest for me

#

Ah, I wasn't able to run it headlessly, I guess.

scenic canopy
#

even with the cheapest VM the performance is good

#

and just setup each VM as a jenkins slave

karmic niche
#

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?

scenic canopy
#

Air + extra storage

karmic niche
#

@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 πŸ˜›

scenic canopy
#

Python is fine, spent some years as a Python developer

smoky halo
#

@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

karmic niche
#

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)

scenic canopy
#

I need to resave all our AAR maps as EMF instead of PNG now ;__;

#

my keyboard doesn't even have the numpad - 😦

karmic niche
#

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.

scenic canopy
#

do you know if the EMF export is deterministic?

smoky halo
#

πŸ‘ just ping me if you need something terrain specific

karmic niche
#

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

scenic canopy
#

just the EMF

karmic niche
#

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.

scenic canopy
#

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

glossy inlet
#

Arma already has that. They print it in RPT

scenic canopy
#

I'd rather just dump all EMF files and then save those that changed since last export πŸ˜„

nocturne basin
#

i might even add callExtension

#

which will get pretty damn funny then 😬

#

😈

hardy leaf
#

@nocturne basin what is this going to be useful for? could it be used as a debugger in Atom, Visual Studio Code and etc.?

nocturne basin
#

it is running SQF code

#

that is what it is useful for

#

in theory, you do could use it in combination with atom etc.

glossy inlet
#

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

kind gazelle
#

anyone here who worked with Intercept or contributed to it please PM me

glossy inlet
#

worked? How about still works?

meager falcon
#

spend time on fixing the linux compat for develop-branch 😜

glossy inlet
#

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

meager falcon
#

:D

#

πŸͺ_plugin.dll maybe?

glossy inlet
#

Try please πŸ˜„ Should work. Oh no... Emoji only scripts is in my head again

#

"πŸͺ 🍊 " πŸ“² πŸš€;
or in readable sqf

"cookie_orange" interceptLoadPlugin;

meager falcon
#

oh damn, pls no πŸ˜…

glossy inlet
#

No one ever tried Emoji SQF commands afaik.. I should REALLY do that

meager falcon
#

take it to another level, add GIF support

#

joking ofc

glossy inlet
#

What did you say? yiff support?

meager falcon
#

just imagine

#

there would be "surprise mo-fakka" all over the place

glossy inlet
#

I don't know if there is... A real length limit on command names.. So.. you could base64 your gif... I guess

subtle bridge
#

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

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)

lethal lantern
#

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.

glossy inlet
#

@lethal lantern Battleye first guess. Check BE logs if you are running it

lethal lantern
#

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

subtle bridge
#

@smoky halo nvm, statement and database were right, but I used an outdated dll in my local test environment.
shame on me πŸ˜„

nocturne basin
#

'malloc': 'void *(std::size_t)' differs in levels of indirection from 'void *(std::size_t)'
epic

#

do i miss something?

glossy inlet
#

You have <stdlib.h> include? This is C I guess?

scenic canopy
#

are you trying to call malloc before including <stdlib.h>?

nocturne basin
#

was an inline function that bugged 🀦 and yes, C

#

extremly useful error messages

pearl beacon
#

VC compiler?

nocturne basin
#

yyyup

pearl beacon
#

try gcc, I bet it would give a better error message πŸ˜›

scenic canopy
#

Or clang

nocturne basin
#

gcc is actually way too careful ...

#

a mix is the best

#

both together are best

pearl beacon
#

way too careful?

smoky halo
#

has anyone heard from mikero recently?

vague shard
#

27th august last time

tiny path
#

I guess he didn't get enough goats

nocturne basin
#

Maybe too many and he is on holidays now?

elfin oxide
#

@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.

smoky halo
#

πŸ‘ thanks for the info

hard locust
#

Good to know he's ok πŸ‘

hard tendon
#

:)

sour hedge
#

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.

smoky halo
#

If you don't compress the files than trying to obfuscate is pointless especially for sqf / text / fsm files

sour hedge
#

It's the p3d's we want obfuscated mostly.

smoky halo
#

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

sour hedge
#

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.

hardy leaf
#

@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

sour hedge
#

Thanks Katekarin, will check that out.

exotic ice
#

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

pliant lynx
#

it is.

dull axle
#

English website with german TOS....

#

πŸ™„

half herald
#

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

nocturne basin
#

now supports createVehicle

pliant lynx
#

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.

glossy inlet
#

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

pliant lynx
#

oh, well that would be great description on that github / homepage πŸ˜ƒ

nocturne basin
#

@pliant lynx that is stated in the bis forums
and yes, the github could be improved πŸ˜… feel free to PR πŸ˜›

safe slate
hard locust
#

@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

dull axle
#

@hard locust That will definitly come to MB

hard locust
#

Oh nice. The new UI looks so much better

smoky halo
#

@safe slate really nice!

#

i'm still a bit baffled tho that decals don't support texture switching

safe slate
#

@hard locust good idea

hallow rapids
plush shard
#

if you write your own steamcmd script using @sSteamCmdForcePlatformType windows should achieve the same

dawn palm
#

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.

hard locust
#

Welcome back mikero πŸ‘

orchid shadow
#

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.

hallow rapids
#

maybe he's talking about a mod that's not interesting at all ^^

#

to others that is

glossy inlet
#

@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.

smoky halo
#

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

glossy inlet
#

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.

dusky dune
#

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.

dawn palm
#

as you say. things have changed since the the first iterations of obfuscate 😎

pliant lynx
#

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?

glossy inlet
#

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

pliant lynx
#

roger

orchid shadow
#

I can read everything but the latest version.

#

But I only want to read it, don't really want to extract it

dawn palm
#

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.

orchid shadow
#

Just annoying the fuck out of me really.

#

But then again my SQF projects are always open source so

#

Β―_(ツ)_/Β―

pearl beacon
#

it really goes against anything when you are hindering development of tools that actually help community

dawn palm
#

?

sly skiff
#

@dawn palm Am I safe to assume custom skeletons model.cfg detection works now with the latest update of PboProject?

dawn palm
#

certainly. afaik, it always has.

sly skiff
#

excellent

pearl beacon
#

@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

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

#

Arma modding community is like mexico 98% rob work from people and 2% make it

glad harbor
#

Thats not entirely true

#

There's alot of mods and scripts that have no "Borrowed" Assets

loud sapphire
#

thats the 2%

glad harbor
#

There's alot of revived stuff

#

but it's all the work of everyone, that's the point in a community

loud sapphire
#

look at the hundereds of server out there with 8gb+ mod packs that they have never done a single line of code to get

glad harbor
#

Are you saying that because the servers use the mods, they are the 98%?

loud sapphire
#

Yes 100% saying that no permission = stolen

glad harbor
#

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

loud sapphire
#

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

glad harbor
#

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?

loud sapphire
#

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

glad harbor
#

Right, because i said the same thing before and you said it was called stealing

loud sapphire
#

when

glad harbor
#
ArMaTeC - Today at 11:20 AM
Yes 100% saying that no permission = stolen```
loud sapphire
#

Are you stupid?

half herald
#

@glad harbor Pretty sure you're misinterpreting it

glad harbor
#

Not stupid, im making a good point

half herald
#

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

glad harbor
#

I said mods, not mod packs

loud sapphire
#

and i say again
Yes 100% saying that no permission = stolen

half herald
#

Then I think we might be on two different pages Β―_(ツ)_/Β―

glad harbor
#

You answered yes to my question....

half herald
#

I'll bugger off back to my cave πŸ˜„

glad harbor
#

Well what ever

loud sapphire
#

read past the Yes "saying that no permission = stolen"

glad harbor
#

Mittens man, back to your hidey hole

#

Okay well, use commas.

loud sapphire
#

Get off your high horse,,,,,

glad harbor
#

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.

loud sapphire
#

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

glad harbor
#

It will always be the same... "Thanks Bohemia" is almost as poular as "Thanks obama"

#

#blamearma trends on twitter every update too

loud sapphire
#

yep

half herald
#

#ItsAfeatureNotABug

loud sapphire
#

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

glad harbor
#

True.

#

Preach it πŸ™πŸΌ

loud sapphire
#

always do

#

#MikeroIsHereToHelp

#

anyhow back to work i go

glad harbor
#

same

wide cedar
#

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.

native kiln
#

Hm I'd say it's like locking your bike with 300 zipties that someone has to remove lol

glossy inlet
#

And some people bring a ziptie angle grinder πŸ˜„

scenic canopy
#

you could steal the slightly more ugly bike standing right next to it without any zipties

wide cedar
#

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

karmic niche
#

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.

scenic canopy
#

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

karmic niche
#

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.

wide cedar
#

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.

glossy inlet
#

How good that we can trust on a big part of the community being unable to google for such a tool πŸ˜„

wide cedar
#

how do you think they got the tool that they are using now?

scenic canopy
#

you can do partial/diff updating of PBOs without inspecting the internal file structure

#

just like arma3sync

pearl beacon
#

that's beside the point

scenic canopy
#

encrypted pbos won't work that good though πŸ˜›

pearl beacon
#

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

karmic niche
#

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

pearl beacon
#

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 πŸ˜›

karmic niche
#

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

glossy inlet
#

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

karmic niche
#

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.

dawn palm
#

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.

pearl beacon
#

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

hard locust
#

@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

safe slate
#

😁

#

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

hard locust
#

ahh ok πŸ‘

pliant lynx
safe slate
#

ok, i'll make them over there instead

orchid shadow
#

@karmic niche Your analogiues were quite correct.

nocturne basin
#

the sqf-vm bot now can also be PMed (@tawdry gazelle)

nocturne basin
elfin oxide
#

@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;
}
glossy inlet
#

I just add a new profile that compiles my extension as a executable and use that to test

elfin oxide
#

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

nocturne basin
#

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)

vague shard
#

@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?

smoky halo
#

are BIS scripts not good enough ^^

nocturne basin
#

O2script? @vague shard?

smoky halo
#

you dont know it @nocturne basin?

vague shard
#

@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 πŸ˜‰

nocturne basin
#

If you can explain what it is I can add it to arma.studio

smoky halo
#

in short: it is SQF for Object Builder

#

allows to analyze, create or modify p3d stuff

#

and more....

nocturne basin
#

Not Rly enough if I should add it to arma.studio
Any link to the doc specialized onto O2script?

smoky halo
#

if you have Arma 3 Tools installed: ObjectBuilder/O2Scripts/ComRef

#

it also has supportInfo cmd

nocturne basin
#

Syntax etc.? Same as sqf?

smoky halo
#

yes

#

just new commands and datatypes

limber garden
#

@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

nocturne basin
#

Kk
Need to check then
Probably will have it rdy by end of the week

vague shard
#

@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)

glossy inlet
#

no

nocturne basin
#

Nope

vague shard
#

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

glossy inlet
#

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.

smoky halo
#

@vague shard -filePatching, diag_mergeConfigFile and diag_resetShape are not sufficent enought?

vague shard
#

@smoky halo terrain lighting tweaking for example

smoky halo
#

diag_lightNewLoad

dawn palm
#

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.

smoky halo
#

its not in the public diag exe but if they get enought requests they might will add it

vague shard
#

@smoky halo false hope after BI's track record and the new lighting fiasco

smoky halo
#

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 😦

karmic niche
#

@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)

hallow rapids
#

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 😁

glossy inlet
#

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

karmic niche
#

@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.

nocturne basin
#

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

hardy leaf
#

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

karmic niche
#

if you want something like intercept but in python
It's called intercept-python and is already in the works πŸ˜‰

dusky dune
#

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

karmic niche
#

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 πŸ˜›

dusky dune
#

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

hardy leaf
#

I don't know if Arma syntax is so complicated

glossy inlet
#

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

karmic niche
#

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 πŸ˜„

wide cedar
#

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 😁

glossy inlet
#

I don't see the pun ._.

karmic niche
#

Probably scanning the code of a parser

hallow rapids
#

lol

#

no pun

#

well, not intended anyway

smoky halo
#

Is there a way to open multiple files with TexViewer?

vital chasm
#

you want to convert your file, or just open it @smoky halo

#

?

smoky halo
#

@vital chasm - just open it.

vital chasm
#

Ho, i don't think it's possible

hard locust
#

Set th filetype to open with texview

smoky halo
#

I know how to open files with TexViewer.

#

@vital chasm - ok, thanks.

forest gate
#

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

dawn palm
#

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.

glossy inlet
#

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

smoky halo
#

I think I understand how tv4l file format is read

hard locust
#

^ @pliant lynx will be happy lol

smoky halo
#

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!

plush shard
#

@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?

smoky halo
#

Do you mean calculated or stored?

#

And what do mean with pinned?

plush shard
#

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?

forest trellis
#

(ok, apart from #define and #include, those bastards). On the other hand, is fully tested (+98% coverage)

hallow rapids
#

@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 ^^

karmic niche
#

Convert it to Cython or use PyPy if you want greater speed πŸ˜›

hallow rapids
karmic niche
#

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! πŸ˜„ πŸ˜„ πŸ˜„

hallow rapids
#

hehe well it's the DeWRP output ^^

pearl beacon
#

then you shouldn't really need to lint it

karmic niche
#

@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

nocturne basin
#

@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

karmic niche
#

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)

nocturne basin
#

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

karmic niche
#

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?

nocturne basin
#

Ok
Well... You could easily regex stuff like sqf.plus(left, right) away

karmic niche
#

No, wait, I think I understand the problem with our communication

nocturne basin
#

But unless you add those exceptions to a generic generator, you are out of luck

karmic niche
#

I'm not trying to have python code that calls SQF for everything

nocturne basin
#

Does not matters
Sqf to python would have to start somewhere

karmic niche
#

I want to just keep the Arma function calls and translate everything else to regular python

nocturne basin
#

Well
Gimme some time and I'll probably provide you with a start

karmic niche
#

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

nocturne basin
#

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)

wide cedar
#

(Note how - unlike some O2 exporters - the smoothing isn't completely ruined)

pearl beacon
#

oooooh

wide cedar
#

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

hallow rapids
#

ok that's sexy and exactly what I needed a couple of months ago when I asked in here 😁

pearl beacon
#

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

wide cedar
#

no, py3d only works with unbinarized models

hallow rapids
#

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?

random venture
#

Wow, that is some awesome stuff πŸ˜ƒ

wide cedar
#

it should be able to find the textures in most setups

#

just tested ace and acre, those work too

tiny path
#

Is that on your github? or still wip?

#

looks very nice though πŸ˜„

wide cedar
#

creating the repo as we speak :p

tiny path
#

πŸ‘ hype is real

wide cedar
#

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

tiny path
#

@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 πŸ˜„

safe slate
#

@wide cedar awsome

scenic canopy
#

@wide cedar wow, awesome!

dawn palm
#

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'

smoky halo
#

@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

hard locust
#

You on about the object colour in terrain builder? That's set in the template library

smoky halo
#

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

forest trellis
#

@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.

hallow rapids
#

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 ❀

glossy inlet
#

You need it to be faster? C++!

hallow rapids
#

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

forest trellis
#

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)

hallow rapids
#

well a tokenizer between python and C++ wouldn't differ that much in speed

#

it's the parser that differs

glossy inlet
#

are you parallizing the linting?

forest trellis
#

@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)

glossy inlet
#

the parsing of a file is sequential.. yeah.. ofcause.. But if you have 2 files. You can sequentially parse them in parallel ^^

hallow rapids
#

I'm probably misinformed about this one but I've read numerous times that Python is really shit in terms of parallelism/threading

forest trellis
#

it was in the past yes. I think the issues are resolved by Python 3

hallow rapids
#

ah that makes sense πŸ˜ƒ

forest trellis
#

but yeah, parallelism in Python was a bit damaged

karmic niche
#

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).

forest trellis
#

well, I was refering myself to the multiprocessing module

karmic niche
#

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)

forest trellis
#

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.

wide cedar
#

just give in and use C :p

nocturne basin
#

I might add clean syntax checking into sqf-vm... But right now I personally do not see any use for it

forest trellis
pearl beacon
#

ACRE also uses it, and all thoes projects found a lot of those hidden things that could cause various weird bugs

native kiln
#

@wide cedar Never

forest trellis
#

@wide cedar ahaha, certainly an option on the lower end of the spectrum when things need to go fast.

hallow rapids
#

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 ^^

forest trellis
#

or would take so much time to develop that the window of oportunity would be lost

hallow rapids
#

^^

nocturne basin
#

@hallow rapids @forest trellis everything would be working as only real c programmers would run around doing c stuff

hallow rapids
#

as if "real" C programmers never make mistakes ^^

native kiln
#

Mostly manual management of memory is still the number one reason for out-of-memory applications

dawn palm
#

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.

sly skiff
#

soo

#

you saying its vintage?

#

and were all hipsters?

dawn palm
#

i'm contrasting what shit looks like vs the industry accepted code syntax.

plush shard
#

those hp calculators with reverse polish notation?

dawn palm
#

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.

scenic canopy
#

@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

dawn palm
#

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.

scenic canopy
#

bat vs bash, environment variables handling, Python in general on Windows, string escaping due to forward vs backward slash in paths etc πŸ˜ƒ

dawn palm
#

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)

scenic canopy
#

Python’s Unicode handling before 3.0 is not that great πŸ˜–

dawn palm
#

same for all of us i think.

scenic canopy
#

Is the string object Unicode or not??

dawn palm
#

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.

scenic canopy
#

Python 😾

dawn palm
#

I've avoided python as being un-necessary for my needs, but i've only ever heard good things about it.

scenic canopy
#

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

wide cedar
#

@scenic canopy great to hear, looking forward to the PR

scenic canopy
#

@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

latent geyser
#

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.

dawn palm
#

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.

latent geyser
#

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! πŸ˜ƒ

dawn palm
#

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.

latent geyser
#

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)

sick verge
vital chasm
#

@sick verge What version of Eclipse does it need to install your tools?

sick verge
#

@vital chasm it should work with pretty any version of eclipse

hardy leaf
#

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

dawn palm
#

πŸ˜‡

hardy leaf
#

@dawn palm You can't have child configs in this application

#

😦

dawn palm
#

start programs->mikero->tools->~documentation

hardy leaf
#

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

scenic canopy
#

it's probably for the better since otherwise you might test/ship the old PBO

dawn palm
#

damn right

hardy leaf
#

any chance for an option for this?

dawn palm
#

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.

hardy leaf
#

i guess. anyways thanks for the tools, don't know what we would do w/o you. which is fucked from Bohemia standpoint

scenic canopy
#

why would you want the old pbo when you're trying to build a new one?

dawn palm
#

haaaaaaaaaaaaaaaaaaaaaa

scenic canopy
#

when I'm cooking food I don't want yesterdays dinner laying around while preparing it πŸ˜„

hardy leaf
#

I can reuse some good integrends that I'm missing right now

#

guess it's just an issue of my workflow

dawn palm
#

that's a damn sensible thing to say Katekarin. it normally comes down to that, and backups.

hardy leaf
#

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

dawn palm
#

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

hardy leaf
#

I told it to do so, and they do exist

#

in respective folders

dawn palm
#

paste a screenie pls. the ''definition' of 'respective folders' is a little vague. show me the folder containing the textures

hardy leaf
#

@dawn palm sent you a PM with screenshots

hardy leaf
#

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.

dawn palm
#

the rvmats are placed in their respective detailmapy, penetration, and other related folders as originally specified by ca\

hardy leaf
#

I meant that RVMats for models, are using textures from ca\

#

or just from the old folder

#

The paths don't change

dawn palm
#

ouch!

#

bugger

#

that's an old bug which i assumed was fixed ages ago.

hardy leaf
#

And when using clean option textures used by the RVMats are being deleted.

#

Well, deleted, moved to the backup folder

dawn palm
#

yep

#

ok, thank you, will put that on the to-do list

hardy leaf
#

Thanks, I'll be waiting for a fix 😊

onyx helm
#

hey @dawn palm is there a place I can easily find to subscribe for the latest version of tools?

scenic canopy
onyx helm
#

o7

#

my current version isnt playing nice with binarize

scenic canopy
#

well worth the price

hard locust
#

^ πŸ‘

onyx helm
#

hmm im getting an error about makepbo not being installed even though its exe is in the folder with pboproject

hard locust
#

uninstall everything, delete mikero folder, then try reinstall

onyx helm
#

worked

onyx helm
#

still seems to not be working

#

hangs on <Bis Binarize...>

hard locust
#

Most likely something wrong with your files

onyx helm
#

files meaning?

#

P: Drive? bin? a3tools?

limber garden
#

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)?

hard locust
#

Make sure you have Noisy Output selected as well

onyx helm
#

no errors in packing log and bin log just opens the temp folder

sly skiff
#

@onyx helm what are you trying to pack?

onyx helm
#

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

sly skiff
#

being less vague about it could help

onyx helm
#

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.

sly skiff
#

so its vehicles/characters

#

buildings

#

map?

hard locust
#

dayz sa at this rate πŸ˜‰

onyx helm
#

characters, vehicles, objects

sly skiff
#

all in one?

onyx helm
#

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

sly skiff
#

have you just tried letting it run for a bit?

#

you sure it hangs?

onyx helm
#

yeah left it for about 3 hours last time

sly skiff
#

could be config or bad file related then :/

onyx helm
#

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

sly skiff
#

addonBuilder lets through just about anything.

onyx helm
#

true

dawn palm
#

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.

onyx helm
#

yeah thats what im using is the evaluation version

nocturne basin
#

any library for c available to read binarized configs?
also need to parse pbos at best
@dawn palm @wide cedar

wide cedar
#

armake has those capabilities, but you'll have to make it compile to a library yourself

scenic canopy
#

@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 πŸ˜›

dawn palm
#

yes, X39, but ditto to KoffeiFlummi. I export the API to the dll for this reason and use.

nocturne basin
#

Kk
Ty guys

dawn palm
#

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>

nocturne basin
#

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

glossy inlet
#

You can also call c++ exports from c... Just not.. that easilly..

dawn palm
#

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.

pliant lynx
#

@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?

dawn palm
#

no. it treats all as being equal and there's no particular reason why you would want an mlod p3d referring to tga

pliant lynx
#

roger, just wanted to make sure about *

dawn palm
#

yep

smoky halo
#

@dawn palm you could provide c# wrappers?

scenic canopy
#

@dawn palm I'd be interested in creating wrappers for other languages if possible

smoky halo
#

last time I saw your exported API, I was like: No way I gonna do a Wrapper for it πŸ˜„

dawn palm
#

well i was going to get you to provide it t_d.

smoky halo
#

you know C#?

dawn palm
#

enuff to read yours, yes. but it's not supported well enough in linux to bother with.

nocturne basin
#

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

dawn palm
#

it's not worth it.

nocturne basin
#

thats correct indeed

#

simple [DllImport(...)] is enough

#

as long as the c exports are correct

#

and known

smoky halo
#

.net core is available for all platforms

dawn palm
#

haha

scenic canopy
#

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

nocturne basin
dawn palm
#

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.

karmic niche
#

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.

dawn palm
#

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.

scenic canopy
#

Are the header files available for the free version @dawn palm ?

dawn palm
#

i can make them so, private pm, but not tonite.

scenic canopy
#

no stress πŸ˜ƒ

karmic niche
#

@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.

scenic canopy
karmic niche
#

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)

scenic canopy
#

as long as it's bundled as a pbo it works the same on both

karmic niche
#

So the PBO "entry list" is case-insensitive?

#

In that case maybe mikero's checks also should be case-insensitive, regardless of the OS?

dawn palm
#

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

wide cedar
#

you can, and i was thinking about doing it for armake, do a manual filesystem traversal and compare names insensitively

dawn palm
#

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.....

nocturne basin
#

Sqf-vm is on hiatus from my part due to unexpected surgery I had yesterday
In case one wants details, pn me

pliant lynx
#

hope you stay healthy.

nocturne basin
#

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

devout mica
#

that sucks. you had an injury while sporting?

south canopy
#

where does dep3d puts the debinned file? I cant find it

glossy inlet
#

replaces the original

#

afaik

#

or in same directory as original with a postfix on the filename

south canopy
#

well it does nothing alike for me

vague shard
#

@south canopy -nn nameof[.p3d] : convert p3d to type nn

#

but this is not for debinning

smoky halo
#

has anybody an idea for the following problem:

wind elm
#

nope

smoky halo
#

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?

wind elm
#

Hm

#

Must be something wrong with his OB. Whats the msg popping up for him?

#

+Is he rly loading the mlod version?

smoky halo
glossy inlet
#

maybe outdated OB?

wind elm
#

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

smoky halo
#

already asked if he loading the right file

wind elm
#

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

smoky halo
#

ok. i resaved the file for him. that seems to work. will make a file diff

wind elm
#

Strange

smoky halo
#

you can do your bets now what it is ^^

wind elm
#

odol πŸ˜„

#

Almost the same path, he just didn't noticed?

smoky halo
#

well the resave created a file that is 4mb smaller (34->30)...mmhh

wind elm
#

oO

smoky halo
#

so the error could be on my side ^^

wind elm
#

Do you run a different O2 Version?

smoky halo
#

different compared to what?

wind elm
#

Normal Tools-Version

smoky halo
#

dont think so

wind elm
#

I mean, you got some other fancy stuff ^^

elfin oxide
#

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

smoky halo
#

I joined 😢

#

dunno why

elfin oxide
#

welcome XD

native kiln
#

Kool Klubs be like that

smoky halo
#

where are the drinks?

ashen iron
#

Binarise crashed with error status 2.

#

any helpΒΏ

#

?

sour hedge
#

Use Mikero's tools to build, as they give detailed error and warning reports to help solve this kind of problem.

ashen iron
#

thanks

#

but i have the same problem with mikero tools

#

<Bis Binarise...>
</Bis binarise>
Binarise crashed with error status 2.

vague shard
#

@ashen iron did you check the logs yet?

ashen iron
#

opps

vague shard
#

also did you try to narrow down to what file is responsible?

ashen iron
#

i found the problem

#

thanks

dawn palm
#

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.

sick verge
nocturne basin
#

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

hallow rapids
#

iostream πŸ˜†

#

there's the Gnome Input/Output library though

#

that might have too many dependencies though, not sure never actually used it

nocturne basin
#

one here has experience with unicode ctypes?

#

simply getting character out of range errors and passed string is also gibberish

dawn palm
#

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.

nocturne basin
#

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 -.-

dawn palm
#

LINUX is 32 bit unicode!!!!

nocturne basin
#

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'

dawn palm
#

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"

nocturne basin
#

now to find out why it is not working on linux ...

dawn palm
#

even the linux file system is utf8!

nocturne basin
#

should still work in its very own world @dawn palm
using right headers etc.
only that now it is not working at all anymore

pearl beacon
#

why wouldn't it be utf8?

dawn palm
#

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?

nocturne basin
#

char -> wchar_t

#

including all corresponding operations

#

eg. strlen to wcslen

dawn palm
#

well that's not quite the story it's char to wchar_32Be or wchar_16Le

nocturne basin
#

it is wchar_t
did not specified anything more

dawn palm
#

true

nocturne basin
#

do not rly care that much for the wide support

dawn palm
#

but assumptions are made. AND it's just not necessary.

nocturne basin
#

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

dawn palm
#

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.

nocturne basin
#

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 -.-

dawn palm
#

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");

nocturne basin
#

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 ...

dawn palm
#

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!

nocturne basin
#

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 ..

dawn palm
#

Personally i don't care muchly, I will not use wchar anything when it can be avoided.