#tooldev-general

1 messages ยท Page 77 of 1

raven wagon
#

Does anyone have, or is there a way to get the first page_id for the trade API for delve? I want to do some historical data without parsing all the way through the API to devle

celest wasp
#

@polar island templarthumbsup Just wait till I have gem links and passives ๐Ÿ˜„

compact isle
#

so far for my 3.5.0 changes post I have veiled mods (website and ctrl+c info) and map URL changes

#

is there any other tool related things people would like to know about?

cosmic saffron
#

item filter information maybe

compact isle
#

that will be a Bex post later in the week

#

this is more just for website APIs

hazy fog
#

are new master mods treated the same as old ones regardless of their source whether learned via master or learned via veiled mod?

compact isle
#

they'll both be under the craftedMods property when unveiled, yes

#

since that's all they really are

hazy fog
#

so a unique with an identified veiled mod is treated like a unique with a craftedMods? interesting

compact isle
#

yes

cosmic saffron
#

so can you recraft another mod on it?

hazy fog
#

I wonder if that will break anyone's code

compact isle
#

pretty sure you can't craft uniques

#

but you can unveil them

#

if that makes sense

hazy fog
#

nice try asd whatYouDidThere

velvet fog
#

How unveiled display in stash API?

#

And website using mp4 or gif?

cosmic saffron
#

.ppt

hazy fog
#

GWfroggyBlobWokeThink with openarl working with you now will he be allowed to release fully working gems at the same time Bex reveals them?

compact isle
#

that will be in the post @velvet fog

#

we'll be using .pngs and css animation hackery for display

cosmic saffron
#

do you have an internal browser support chart?

#

my workplace won't let me use any fun svg css stuff

compact isle
#

QA might, we just focus on firefox / chrome /edge though

#

not sure what you mean by classified

hazy fog
#

I would think not, they'd be new gen and won't fit in the old map tab

#

wfta v2?

compact isle
#

in the map tab / trade website the new series will be listed as "Betrayal"

#

but that kind of information isn't in the item data atm anyway

hazy fog
#

inb4 'I feel betrayed for buying map tabs' jokes

#

Oh right Novynn this isn't quite api related but kind of is, do ongoing private leagues of delve continue on release of betrayal?

#

I've never seen this addressed anywhere and it'd be weird to have an outdated league

compact isle
#

when Delve ends the private leagues will continue but they'll just return to being like Standard

hazy fog
#

ahh I see

#

is that uhh.. spelled out anywhere?

#

seems like something that is going to make a lot of people very angry

compact isle
#

yeah it was mentioned in the announcement post

#
If the league is parented to the current challenge league and that challenge league ends, it loses its challenge league properties and becomes parented to regular Standard or Hardcore. 
hazy fog
#

I see now

#

thanks for allaying my concern

cosmic saffron
hazy fog
#

yeah, this seems like a huge detail to only exist in the announcement post

compact isle
#

I agree, I've passed that feedback along

hazy fog
velvet fog
#

that will be in Dec 5 post?

compact isle
#

one I'm preparing now

velvet fog
#

okay, thanks

velvet fog
noble siren
#

@compact isle where to find your 3.5.0 changes post?

compact isle
noble siren
#

oh, I see. Looking forward to it. Thanks!

hazy fog
#

@velvet fog do you think it is still useful to have the vaal skill gem api format pinned? I like to keep as few pins as possible so they're maximally useful

velvet fog
#

you can remove it and pin the upcoming one

hazy fog
celest wasp
#

And now I just learned about the vaal skill field D:
More things to add to the protos

compact isle
cosmic saffron
hazy fog
#

good stuff

celest wasp
#

OMG I just realized that I have 11 rips from zizaran recorded on one character because he reused the names. The display is super funky and takes like ~5 minutes to completely scroll through.

grave wren
south quarry
deft jolt
#

from chuanhsing's swagger documentation

south quarry
#

marauderthinking Oh cool, then I can just use that and create a new one each league

ashen dust
faint remnant
#

Did openarl ever mention if his workflow for PoB will be different now? Like dropping PoB as soon as 20/20 gem infos hit reddit?

hazy fog
#

I don't believe he has mentioned anything

#

I'd like to think it would happen like that but only ggg know for sure

faint remnant
#

all of thursday for build planning would be awesome HypnoCry

obtuse citrus
#

@ashen dust game data - calcuated from spawn weight for the base case

ashen dust
#

@obtuse citrus how is that game data collected? Seems like it would take many many people / hours if done manually.

obtuse citrus
#

from content ggpk. if you want a public tool use PyPoE

ashen dust
#

Oh it has all that data in it?

obtuse citrus
#

Most of the data yes,

#

they removed some things

#

but mods are there

#

there is no file associociating unique items to mods, flavour text, icons etc but those components are ther

grave wren
#

Can you track individual leagues river or is it the big one only?

hazy fog
#

they should not

#

since they're meant to not be known

grave wren
#

Aw

#

Looking to get an item tracking going for group selffound and not keen on parsing the whole river

velvet fog
#

The numbers in veiledMods do not represent anything important, and may change on subsequent requests. They are simply used by the front-end to display different videos to prevent duplicates.

grave wren
#

Do any of you provide item info APIs per league/account ๐Ÿค” ?

#

Looking to for example get all items in a private league

velvet fog
#

seems no, it use same stash api

#

I can't find ANY indexers support it

#

you can use official word, we will support it soon or later

grave wren
#

Word 365

#

Nice

#

Not even league ssf

#

Brb grabbing pitchfork

grave wren
#

so my last hope is allan

grave wren
#

none yet

grave wren
#

hm when is a tab hidden in the char menu (/get-stash-items)?

hazy fog
grave wren
#

Yep I thought hidden equals non public but it seems like the wrong idea

#

Maybe race rewards in ssf

#

So it seems impossible to check visibility of the stashes via this endpoint meh

#

But mooom

south quarry
#

Oh question about that kinda stuff, if you wanted to gather data from like the stash API for all the items in the entire game, how big of a VPS would you need to handle all that stuff?

#

even if you just read the data then throw it away I assume it's still a lot

worthy cape
#

I believe ballpark figures have been talked about in the past in here, you might be able to find it with the search doohickey up top.

#

Back in January, someone said peak throughput of 30GiB/day, varying based on league popularity.

#

Total storage, "10-20T if saving everything", someone else said.

grave wren
#

cries in german internet

south quarry
#

oof, so it could probbaly be done on like a $20/month DO droplet, maybe

grave wren
#

isnt there a diff between inbound and outbound traffic often times?

south quarry
#

Not sure, but it has plenty of room, in theory you could try with an even cheaper droplet

#

๐Ÿค”

grave wren
#

no idea fr my use case the traffic is just too much unfortunately

#

would still be cool to get a split pool depending on the league tbh

deft jolt
#

if you don't need much processing power you could get a vps from hetzner

#

unlimited inbound for 3 eur/mo

#

that's what poewatch runs on at least

grave wren
#

got a link to the one?

worthy cape
#

eyes home unmetered 100Mbit/s connection

#

Might interfere with actual PoE playing ๐Ÿ˜‰

grave wren
#

if you dont have disconnects why not

#

wouldnt be reliable enough for me

deft jolt
#

actually sorry i lied

#

its 2.49 eur /mo

grave wren
#

tfw they say thats the cheapest

deft jolt
#

๐Ÿค”

grave wren
#

sharpens pitchforks

deft jolt
#

get that turkish vpn ready

grave wren
#

๐Ÿ‡น๐Ÿ‡ท

#

yeah if i change my country to others its 2.49

#

DO YOU LIVE IN OTHER

#

gottem

deft jolt
#

they're probably one of the best hosting providers ive used

#

#sellout

grave wren
#

only used all-inkl once which was fine but nothing special

worthy cape
#

Hopefully they're better than the 50% uptime I had back in the days ๐Ÿ˜ƒ

grave wren
#

i think hetzner hosts all of the known poe sites

worthy cape
#

I had a VPS tho, not a dedi.

#

2011, so they might have unhecked whatever I suffered from, of course.

grave wren
#

docker on windows is horrible

#

but i hate dualbooting

#

what do

worthy cape
#

More machines or VMs?

grave wren
#

i mean a 4c/8t vm actually sounds decent enough

south quarry
#

tbh I installed linux and it's a lot better than the last time I tried it

#

Running PoE through proton has no issues, and can launch stuff like path of building in wine with 1 click

#

so weird to have stuff just work on linux templarLul

grave wren
#

i have enough issues with my linux work machine to not want to deal with it at home

south quarry
#

hmm, I think windows pro has better docker support though

#

something to do with hyper-v or something

grave wren
#

might just get a nvme ssd and install linux with pcie passthrough tbh

raven wagon
#

If I have an old id for the API, when I request that, and follow the next_change_id through, is the data I get back historical data when that was the most recent data, or do I get something else entirely?

compact isle
#

you always get the current data

#

using an old id just means you get current data that hasn't changed in a while

raven wagon
#

Perfect, Thank you! So those would be items that haven't been updated or removed from the stash? Not being removed is kinda they key, as they clearly have not sold for a long time

compact isle
#

yes

raven wagon
#

Thank you! I appreciate clarification!

compact isle
#

uh I forgot to keep the account online script running, online list should be updating again @polar island @chrome topaz

cosmic saffron
#

people have also been complaining about official /trade down, is that script also responsible for that outage?

hazy fog
#

yikes

compact isle
#

the official trade site is supposed to be down

hazy fog
#

@polar island so if you aren't supporting private leagues when you read an item for one from the river do you just discard it?

#

what do you do with them then ๐Ÿค”

#

lmao

#

why is it incursion though

celest wasp
uneven ember
#

Which language is Lab compass built on?

#

I'm planning to make a similar program but for leveling

smoky temple
uneven ember
#

Nice thank you

#

Do you think he would mind if I based my program on his and give him credit?

smoky temple
#

If u use his code i would ask him first, if u write the code urself and just take his work as an example it should be alright

uneven ember
#

I was plannning to use the first option, but then I realized it's C++

smoky temple
#

^^

uneven ember
#

Yeah, no : P

grave wren
#

Assembly or riot

smoky temple
uneven ember
#

aww rip

smoky temple
#

google is ur best friend ๐Ÿ˜†

uneven ember
#

That tool uses AHK and does not utilize the log file hmm

#

I'm thinking more automation and customization like selecting quests, prioritize trials and whatnot

deft jolt
#

if you're gonna build it off of labcompass, remember it uses the gpl3 license

uneven ember
#

I'm going to make it look similar (end goal), but on a different language

#

Probably Java or C#

fathom spruce
#

that one does read client.txt

smoky temple
uneven ember
#

Thanks

worthy cape
#

@polar island I wonder, can you name a league after the EICAR test string? ๐Ÿ˜‰

grave wren
#

SQL injection league when

slow forge
#

I forget, can I catch a ban for reading client.txt?

deft jolt
#

no

smoky temple
#

as long as u just read and not write it should be alright, shouldn't it?

uneven ember
#

Even if you write on it

#

The client itself doesn't read the log

frozen knot
#

@polar island is it possible to have multiple woops in a single tab?

#

Ok, ty for the site though, poe.trade kills my potato PC when loading if PoE is open

viscid gorge
#

does path of building have betrayal? if not, when will it get?

jade adder
#

not yet, and it will get it sometime near the launch of the league, likely a bit after

#

the tree is updated though i think

velvet fog
#

you will get passive skill tree update tomorrow, and 20/20 gems later

jade adder
#

ah yes that

viscid gorge
#

thank you

mortal bone
#

Typically the passive tree is released with patch notes

south quarry
#

oof, think I finally got all rare mods from path of building decodes working with the trade links

#

marauderthinking sometimes it doesn't work though, but the link I create does work on a second click

#

it'll just link back to https://www.pathofexile.com/trade/search/Standard/ but on a second click it works fine and goes to https://www.pathofexile.com/trade/search/Standard/ojnekwhl

#

๐Ÿค” is it a rate limit thing?

south quarry
#

I think it sometimes errors when redirecting from a query string to the actual site, it changes to https://www.pathofexile.com/trade/search/Standard/ for a second then one in every 10 times it will just get stuck? hmm

noble siren
#

hmm, http://www.pathofexile.com/api/trade/data/stats does not seems to be very useful to parse mod text from. e.g. +#% to Fire Resistance is displayed as #% to Fire Resistance in the JSON, which is missing the + sign. This might be designed intentionally, but will cause confusion in my program. Not sure if I missed anything.

compact isle
#

@south quarry if you do find some weird behaviour that you can reproduce feel free to let me know

noble siren
#

Anyone knows a reliable source to get a updated list of mods classified into explicit, implicit, enchant, psudo, shaper, elder, delve, etc.? Better to have further classification into different item types (boots, gloves, etc.). For me, I have two issues: (1) get the list a week or two into the league (late); (2) tried to parse them from some community websites, but the element format often changes. Tried RePOE as well, but it is hard for me to figure out how to do the classification 100% correct.

mortal bone
#

3.5.0 data

thick elm
#

PoB not updated? shock

wind garden
#

I think Openarl is on a diff timezone

#

probably won't be updated till later

timid hemlock
#

Can't update PoB yet, at work ๐Ÿ™ƒ

mortal bone
#

Lul

#

I had just gotten off work, but I was able to prepare a bit last night.

#

Not that it matters too much haha

timid hemlock
#

I actually did the necessary work last night, but had to wait until patch notes came out

#

But I can't release the update from here ๐Ÿ˜

mortal bone
#

Same

#

Oh? GitHub has a draft mode

#

I just prepare the release in draft and then hit publish once patch notes come out

timid hemlock
#

Doesn't work for me, since updating PoB involves a Git commit, and I don't have the repo here

#

Or Git

mortal bone
#

Ohh, we don't require a commit which is nice

#

Well, that isn't exactly true, the release script does do a bunch of work that needs checked in. I can do that before though since no data is included in commits

velvet fog
#

seems missing Focus Gem

compact isle
#

oh wait

#

let me check

delicate ore
#

it's granted to you if you have anything that modifies focus

#

or are they adding a white gem with it too?

compact isle
#

^ that's how I thought it worked

velvet fog
#

oh, i see

south quarry
#

@noble siren I had to manually edit the list of mods to make them line up with PoB mods

#

also a lot (a very lot) of different regexes and replaces and versions of the same string to try find the correct items for each mod

#

and there are other issues like some items use the word "increased" and some use "reduced" but the search doesn't use the word "increased" the same in all scenarios, sometimes you have to supply a negative minumum value but others you have to supply a max value

#

so I ended up just throwing out the value if it includes the worst "reduced" from PoB since I can't figure out how to line it up

noble siren
#

@south quarry thanks for sharing. I think the hastebin file has the same symptom I mentioned : +#% to Fire Resistance is displayed as #% to Fire Resistance, which is missing the + sign. I want to look for the mods that are exactly matching the in game item text and the public stash api.

south quarry
#

you can find the item base from seeing which key includes the name of the item, then use that key as part of the query, but sometimes it doesn't match up eg a standard "Basalt Flask" from PoB will be "Crafted: true" instead of "Basalt Flask" so you kinda have to put some if statements to check if the base includes "Flask" or "Ring" or "Jewel" and if it does just use "flask" ""accessory.ring" or "jewel"

#

yeah, the way I've done it is by creating multiple versions of the same name

#

and trying to find each of them

#
const fixModNames = str => {
  let replacedCount = 0;
  let lastChar = '';
  const e = str
    .replace('.', '')
    .replace(/\{.*?\}/, '')
    .split('')
    .map(s => {
      if (s.match(/[0-9]/)) {
        if (replacedCount > 2) return s;
        if (typeof lastChar == 'number') return '';
        lastChar = parseInt(s);
        replacedCount++;
        return '#';
      }
      lastChar = s;
      return s;
    })
    .join('');

  // replace the first instance of brackets occuring for weird POB links
  if (e.startsWith('(#-')) {
    return e.replace(/ *\([^)]*\) */, '#');
  }
  // fixes rings and other things that are awkwardly placed after a {range} modifier
  if (e.startsWith('+(#-#)')) {
    const idx = e.lastIndexOf('#');
    const newE = e.slice(idx + 2);
    return `#${newE}`;
  }
  return e;
};
#

this is bad and iw as tired while writing it but you get the idea templarLul

#
          const fixedName = fixModNames(itemMod).trim();
          const fixedPOBName = fixedName.replace('+', '');
          const fixedReducedName = fixedPOBName.replace('reduced', 'increased');
#

templarLul i'm bad at regex

graceful fable
#

Hello guys, this is basically the first time I'm with you when a new league starts and I was wondering if anybody knows when we can expect PoB releasing for 3.5?

dark dove
#

dunno

#

depends on when openarl feels like it

velvet fog
#

Openarl said Can't update PoB yet, at work

south quarry
#

but basically you have to figure out where the numbers are, but only the ones that are in the correct places from the input and then if you can't find it try again without a + at the front, and if that doesn't work try again while not looking for the word 'reduced' instead, you get the idea though

#

maybe the stash tab API is a bit different to the PoB text, could be a lot simpler, but the basic idea is the same of replacing the numbers with #, and also the search terms use +# instead of +# to # so you figure out a single min/max value instead

#

so yeah templarLul

#

@compact isle i'm not really sure what the problem is because if I hit the rate limit I get

{
  "error": {
    "code": 3,
    "message": "Rate limit exceeded"
  }
}

but with this problem, I can just click again right after and things will work normally.

silent vapor
south quarry
#

https://pathofexile.com/api/trade/search/Standard?redirect&source={"query":{"filters":{"type_filters":{"filters":{}},"socket_filters":{"filters":{"links":{"min":6,"max":6}}}},"term":"Terminus Est"}}

#

for example this one breaks, but it's just a basic query for a unique with a minimum of 6 links and definetely works

#

Failed to load resource: the server responded with a status of 429 ()

#

I think it might be a rate limit thing based on quick requests, because if I do like 2/3 items at once it has a high chance of breaking

graceful fable
#

well, 429 is Too Many Requests

south quarry
#

but I can request like, 5 seconds after with no problem

graceful fable
#

well I don't know how rate limiting for the PoE API works

#

but I guess you are making too many requests

#

in a short period

south quarry
#

๐Ÿค” hmmm yeah, must be something to do with quick requests then, like opening 5 tabs of searches at once seems to always break it

#

but then I ACTUALLY get properly rate limited and ALL requests fail for like a minute or so, oof

hazy fog
#

rate limit is pinned

south quarry
#

yeah, but it breaks even when not rate limited is what's weird, like a single one request will break

#

however you can send the exact same request 5 seconds later, after supposedly being rate limited and it works

#

for example I just opened 5 tabs, the 3rd one broke, the ones before and after all worked

#

but if I click again on the query that generated the link to broken tab and send a new one a few seconds later, it works just fine

compact isle
#

I don't have time to look into it right now but I've noted it down

dark dove
#

slushy how fast are you sending em

south quarry
#

However fast you can click I suppose, but I want to add a button you can click to open all the items you can afford at once

dark dove
#

you probably need a delay cuz that is a little api spammy wouldn't be suprised if it didnt temp lock out

south quarry
#

I'm not really sending any requests, I just create a list of queries and a user clicks them

#

if you import a pob pastebin it'll create a query link for each one

dark dove
#

like the pathofexile/trade/ link?

south quarry
#

it'll make something like this for a rare item
https://pathofexile.com/api/trade/search/Standard?redirect&source={"query":{"filters":{"type_filters":{"filters":{"category":{"option":"armour.gloves"}}}},"stats":[{"type":"and","filters":[{"id":"explicit.stat_2169938251","value":{"min":18}},{"id":"explicit.stat_2891184298","value":{"min":10}},{"id":"explicit.stat_3299347043","value":{"min":64}},{"id":"explicit.stat_3372524247","value":{"min":45}},{"id":"explicit.stat_4220027924","value":{"min":41}},{"id":"explicit.stat_3489782002","value":{"min":0}}]}]}}

dark dove
#

like I tried it out for abandon wealth card

#

and it breaks the trade api link

south quarry
#

works for me? marauderthinking

dark dove
#

dats not working

south quarry
#

it is working, just set to online only

compact isle
#

don't use custom search atm

#

it's broke

south quarry
#

if you set it to any not just online only you'll see results

dark dove
south quarry
dark dove
#

but yeah guessing novy is still working on getting it all to work

compact isle
#

when you type in the search bar it'll give you the option of "custom search" and then the autocomplete

#

custom search is broken right now (on our end) and I don't have time to fix it today :x

dark dove
#

its kai fam

south quarry
#

ooh, I can change it to use the term anyways

compact isle
#

yes please

south quarry
#

I think I wanna not use term, use type instead

compact isle
#

yeah

#

type is faster

dark dove
#

so novy will we get any news on how the new hideout import codes will work before launch or is it going to be like a

#

1-2 week delay after launch before it goes live type of deal

#

oh woosh nvm

compact isle
#

you'll find out at launch

#

very simple text-based pseudo item filter format

dark dove
#

lets be honest

#

most used one is just going to 650 glowing embers

compact isle
#

can't wait

south quarry
#

ah, so i've done it by searching by name if it's a unique and not a card or an essence, if it's a card or essence I search by type

#

templarthumbsup now it works properly

elfin flume
#

Anyone know what the Last Online: timestamp for users in a guild when you view:source on the website stores the time in?

#

UTC, NZ time? etc

#
<div class="member">
    <span title="Last Online:&nbsp;2018-12-05 18:31:26" data-time="2018-12-05T18:31:26Z">
smoky temple
#

The Z indicates that it uses the UTC format.
'Z' stands for Zulu time, which is also GMT and UTC.

elfin flume
#

hmm I just did a test, (logged out, logged in)

#

2018-12-05T22:38:54 it just updated

#

2018-12-05T22:38:54Z (arather)

#

Which is my exact time now.. for AEDT...

smoky temple
#

hmm dunno thought if Z is postfix its UTC, GMT .. dunno why it isnt ๐Ÿ˜†

elfin flume
#

mm it has momentTimezone = 'Antarctica/Macquarie' which is AEDT

unkempt field
#

@timid hemlock Error on selecting a skill in updated PoB, want a screen cap / stack trace?

timid hemlock
#

Fixed already; check for update!@

unkempt field
#

on it - champion effort

cosmic saffron
elfin flume
#

I know what UTC is, I was just curious as to why the PoE website returns you a date with 'Z' on the end, making me think it was the time in UTC when it infact isn't they're returning it in AEDT.

#

I assume they're detecting your location on the http request and modifying it for you.

cosmic saffron
sacred girder
#

Thank you Openarl!

elfin flume
#

@cosmic saffron - TY ๐Ÿ˜ƒ

#

moment js etc was getting confused AF

#

cause i was trying ot hard set the TZ but when the date had a 'Z' on it - it ignored the timezoen

mortal bone
winter fossil
#

Cool site

analog dune
smoky temple
#

would be awesome yeah

analog dune
#

if it's open source, i can check it

smoky temple
#

honestly i would go for full line coloring (like u did in ur first example), just changing the color of 6 and 8 looks kinda weird

dull laurel
#

Is there any explanation for the skill tree data that was made available? I see that it is javascript / json, but are the shortened variables explained somewhere?

obtuse citrus
dull laurel
#

Thanks!

mortal bone
#

@analog dune nice idea. It isn't open source currently

#

@obtuse citrus @dull laurel for reference, nodes is no longer an array. It is a dictionary where the key is the node id and the value is the node data

dull laurel
#

Ha, this looks like so much fun. I guess I have something to do the next two days ๐Ÿ˜„

mortal bone
#

@analog dune added ๐Ÿ˜ƒ

analog dune
#

Godโ€™s work ๐Ÿ‘๐Ÿป

dull laurel
#

Oh wow, I just checked the original skill tree. You really have to draw everything yourself, the nodes, the connections, the groups and so on. Did you reprogram all of that in poe skill tree, @mortal bone, or just used a "webview" kind of thing?

mortal bone
#

all of it was redone

#

that is all the drawing code used

dull laurel
#

1000 lines of fun. Yeah.

mortal bone
#

There is some bloat in there, but it is mainly the drawing code haha

#

What language are you looking to make a tree in?

dull laurel
#

typescript / javascript. because I like web apps and because I dislike the original tree and poeplanner. I'd rather have them the functionality provided in your program, with the tree solving algorithm

mortal bone
#

Nice, I am probably going to be doing something with visualizing the differences in the tree. A plain text comparison only goes so far

analog dune
#

I was wondering, since i'm myself a dev too (i think a lot of people here are). Did the community have a specific need of tools ? Like, something that is missing (even if i think everything is already covered)

hazy fog
#

write things you would find useful then share them

dull laurel
#

Or die trying. ๐Ÿ˜‰

#

For example I would like to have a page that just looks nicer then poedb. Better UI/UX would be great ๐Ÿ˜„

dim stream
#

@mortal bone did you intend for the json links be in the same column?

#

thought youd put new json under new stats column

#

and old json under old stats column

mortal bone
#

Na, looks like that one it large though

dim stream
#

you also have weird cases like that

#

shrug

mortal bone
#

hit the "compressed" checkbox at the top lol

#

I will have to fix some oddities in the uncompressed version

dim stream
#

i love and hate bootstrap

mortal bone
#

pretty sure it is because "Old Stats" aren't large enough

#

happens on every one where the height doesn't match up

#

@dim stream just fixed the problem. Let me clear cache

#

should look better

inner beacon
#

@dull laurel the UX of poe.db is actually really good - in asia

#

UX standards in asia are significantly different from the west

#

A view of poedb targeted at the west would be super useful though.

quasi cypress
#

So I'm looking to try and build some sort of webapp for PoE (not sure what yet) to prep for some interviews I have coming up. Where can I find more or better documentation than this? https://www.pathofexile.com/developer/docs/api-resources

What confuses me is how are these apps being developed that track thing like maps consumed (with date/timestamps)? Where are they drawing that data?

dire walrus
#

@quasi cypress from the local client.txt file I believe

quasi cypress
#

@dire walrus Ah, that makes sense.

#

I havent developed anything in like a decade so this should be fun but think it will be a good exercise...would be neat to develop a net worth app that includes your items from the PoE Trade macro

dire walrus
#

Check out exileparty.. I think they changed the name recently tho

quasi cypress
#

kk

#

Yep, this is the one I was referencing...I saw this and was trying to figure out how they got this data, but the client file makes sense

silent vapor
quasi cypress
#

Yeah, Ive seen a few and what I want is to be able to scan the stash and apply the same logic that PoE Trade Macro uses (where it tells you what the item is worth at auction) and then add that to your worth

#

would be great, especially as an overlay

silent vapor
#

With old-fashioned rotary digits and a nice cha-ching sound, please.

summer stump
#

how come i can't @ the currency cop guy any more

jade adder
#

@gritty olive

#

๐Ÿ˜

summer stump
#

i tried @currency and it wasn't working and now it is

#

i think you're a sorcerer

mortal bone
#

shows up on mine too

summer stump
#

hm possible PEBKAC

proud ocean
#

it's f-up in 4k, could fix it but i don't really know where to look

#

never programmed an addon before so a bit lost on the syntax

misty merlin
#

@proud ocean I've seen your issue on Biggorons fork of this, which is good since I only made that repo because he didn't had one and I helped him fix and improve it.
Anyway, maybe start with actually describing/showing what the issues are ๐Ÿ˜‰

pseudo ocean
#

hello, sorry for asking again and agin, I want to know if torrent file is released or not. ๐Ÿ˜›

candid owl
#

no

pseudo ocean
#

So the schedule about torrent would be released on this Friday afternoon, right?

dark dove
#

@proud ocean how is it msed up

proud ocean
#

i'll take a screenshot and show you guys ๐Ÿ˜ƒ brb

#

didn't see the answer damn :/

#

so, the issues ๐Ÿ˜ƒ :

  • https://imgur.com/a/PgiH8Xz like you can see there is not enough space between the items which makes them overlap
  • there is also an issue with the XP and the gemlist layout which take too much height, don't know how to fix that, also what is the proper syntax for the gemlist.txt file if i need to modify need? (which i do ๐Ÿ˜„ )
    If you want @misty merlin i can fork the repo aswell
misty merlin
#

Biggoron created the tool, I helped him to improve some stuff and made a repo for it. Somewhere in between development he forked it and released it later. I don't plan on maintaining it, so either make your own fork or make a PR for his version.
I also haven't created or looked into the gemlist.txt, so I know as much as you do about it.

proud ocean
#

hum that's unfortunate

misty merlin
#

At the beginning of the main script there are some global variables for positioning.

#

You probably have to mess with them

proud ocean
#

what language is that? i don't recognize the syntax

misty merlin
#

AHK

#

Autohotkey

proud ocean
#

oh they have their own syntax:? didn't know that

#

thanks

velvet fog
#

@compact isle will ggg release torrent this time?

compact isle
#

too early to tell

pseudo ocean
hazy fog
#

When will you let openarl go home early to finish the gems in pob mathilMEGA

dark dove
#

never

wind garden
#

I can't believe I waited this long to write unit tests for 3rd party APIs

#

so nice for validating API wrappers

grave wren
#

You didn't encounter versioned APIs yet that change without changing versions marauder

wind garden
#

@fickle yew what's the api for your Fossils and Resonators pages?

#

nevermind

#

figured it out

timid grotto
#

Is there any published documentation about PoB internals when calculating base gem stats from the values in the .lua files? Or do we know the interaction between base/incrementalEffectiveness and minimum/maximum base damage?

velvet fog
timid grotto
#

I'm looking in the act_int.lua file. Only documentation in there is 'do not edit' xD

#

I was exepcting more of an array listing the min/max damage values at each skill level. Instead there's an array listing the same base values for each skill level, and 2 'effectiveness' values which appear to multiply somehow with those base values. I've tried several combinations but have not found one that results in the actual min/max values seen in-pob.

#

That looks promising, thanks. I was just looking at the skill lists. I didn't think to look into the actual pob code to see how it used the values. ๐Ÿค

velvet fog
dull laurel
#

@timid grotto writing your own calculation engine? ๐Ÿ˜„

timid grotto
#

@dull laurel no. i was hoping to get a head start at theorycrafting with a partial update of the released updated skill gems. Haven't had much luck figuring out the formula though. ๐Ÿ˜

#

(the formula in the link above seems to be for calculating damage further down the line, I'm just looking for base skill damage (such as what is shown on the wiki page at each level)).

#

I found a very similar formula in the pob code (Calcactive or something) but haven't gotten the numbers to match what I'd expect. I've also tried tracing the values from the skill list to the calc and from the calc back to the skill list but i guess I don't know enough about Lua (I hit a 'gap' afterwhich the skill's base damage values just magically appear ๐Ÿ˜† ).

dull laurel
smoky temple
#

just scroll down, ints described in groups

description: Associative array of orbitals (from the nodes and their oidx key). Unknown what the bool is for
type: assoc array[string, boolean]

compact isle
#

oo = occupiedOrbits

#

it's just associative for easy lookup in JS, the true means nothing

dull laurel
#

Smooth, thanks for the answer.

winter fossil
#

But why is true even included?

dull laurel
#

Ah, now I got it. The orbits are circles around the center of the group and the placement of nodes is on those orbits. The radius of those orbits is obvious, but the placement of the nodes on those? Is it just 360 / number of nodes on the orbit?

#

@winter fossil to make it an associative array instead of a regular array. otherwise you couldn't use the orbit id as string key

#

the other option for implementation would be to have an array like this [true, false, false, false, true] if you would want to describe a {"0": true, "4": true} object

winter fossil
#

Oh yeah, now I rember why it's there... The sick switchcase they're using to get node location x)

dull laurel
#

Actually I would be interested in that ๐Ÿ˜„

#

oh, nice, you are working on a typescript version as well

winter fossil
#

Old code tho

dull laurel
#

even nicer, your roadmap looks like something i want to do too

#

@winter fossil why old code? not working on that project anymore?

winter fossil
#

Got all the newer code on another branch that's not merged yet. Would like to spend more time on it but life makes it hard to find time for it x)

dull laurel
#

Can someone enlighten me why I can have the same node id incoming and even multiple times, like a circular reference?

            "in": [
                11420,
                11420,
                11420,
                11420,
                11420,
                11420,
                11420
            ]
mortal bone
#

@dull laurel what is the full node?

#

Also, I need to update the wiki. The tables there are fairly old. Not all of the fields are there like extraImages was added recently and there is no definition on the wiki of it

analog dune
#

With the new masters rework (and the craft rework), is there an api where i can get unlocked recipes ? (clients.txt ?)

velvet fog
#

No idea yet

mortal bone
#

clients.txt isn't an API, just a flat-file client log

#

@dull laurel It looks like the "in" data isn't being generated correctly. For every node coming in, there is an entry with the current nodes id

#

@winter fossil @dull laurel You don't actually need the switch statement anymore. This should do the trick:

    return 2 * Math.PI * oidx / skillsPerOrbit[o];
winter fossil
#

Not going to use the group entry at all, so that won't be an issue for me. The current version I'm working on preparses all node positions instead. The entire skillTreeData is just too large to send down the pipe when doing web tbh

mortal bone
#

to be fair, browsers do a ton of caching. You are looking at a 1.3mb download once every league

winter fossil
#

There's still no reason to send 1.3mb when you could send 1/3 of it (I think it's even less now).

Performance matter for web, it's a wrong approach to say that it doesn't

#

Ppl sitting om bad connections should be able to load the site

dull laurel
#

@mortal bone yeah, that formula sounds reasonable to me. Basically you are calculating the angle in rad instead of degree. but that means first skill is always top center aka 0ยฐ?

#

@mortal bone the node i was looking at was 11420, which has itself 7 times in the in array, which is weird somehow

mortal bone
#

Yeah, the in property is broken. It has the current node's id for every node coming into it

#

That formula calculates where on the arc a give node is starting from 0ยฐ

#
arc: number = 2 * Math.PI * this.oidx / this.skillsPerOrbit[this.o];
x: number = this.group.x - this.orbitRadii[this.o] * Math.sin(-this.arc);
y: number = this.group.y - this.orbitRadii[this.o] * Math.cos(-this.arc) ;

This is what I have to calculate the given position of a node

warm moss
#

Heyo, anyone know when the new skillgems and the supports will be available for calculations in Path of Building?

#

tag me if you do, unless you can't ofc and ty for answer in advance

silent vapor
#

Looks like Openarl has worked through the night, so he's working as hard as he can to get it to us.

dull laurel
#

And when does he find time to play the game? ๐Ÿ˜„

slow forge
#

Don't need to play the game if you develop it

dull laurel
#

@mortal bone thanks a lot for that. Still more than 24 hours to work on that ๐Ÿ˜„

dull laurel
#

Ha, it is progressing. <3
Now comes the drawing with SVG part, because why not, just because everyone else uses canvas ๐Ÿ˜„

winter fossil
#

SVG is the way to go, canvas drove me insane lol

#

I basically made google maps at one point

mortal bone
#

I am attempting canvas as I haven't' done much canvas work, and I have to say: I hate it.

winter fossil
#

agreed... I'm kinda upset of myself for not doing the SVG route sooner, free GPU rendering without the webGL struggle

mortal bone
#

Yeah, we will see how it goes

#

might kick myself haha

winter fossil
#

But if you want the GGG artstyle on the skilltree it should be made with canvas I guess, I never wanted that tho

dull laurel
#

SVG should work too, but I will see. Give me some time ๐Ÿ˜„

winter fossil
#

The worst struggle I had with the canvas codebase was the rendering complexity to have it rendering smooth on mobile. It would still lag when loading in new chunks and zooming just sucked...

SVG just workes too well, made the entire script so much lighter too

dull laurel
#

still working on that. currently parsing the skilltree json and creating the nodes and groups. ๐Ÿ˜‰

dull laurel
fierce birch
#

I use svg a lot currently at work, especially the draw2d library. Performance is pretty crap if you're moving stuff a lot

#

Havent tried canvas personally yet

winter fossil
#

You don't move static stuff, that's the thing. You just wrap all SVGElement:s in a <g /> and sets its transform attribute to: translate(x, y) scale(z, z).

The browser does not have to rerender the DOM for translate, it have already been rendered

#

The entire skilltree have 3k+ nodes in DOM, and still renders at 60+ fps when moving and zooming on mobile.

fast yo

grave wren
#

cool

#

if discord would embed svgs I'd use your site to pump up the bot :p

fierce birch
#

Right. since you're rendering a static tree, it might work fairly well. I use svg more as an editor with lots of dragging figures and connections.

dull laurel
#

@winter fossil that sounds good ๐Ÿ˜ƒ I'm just playing around with the svg

winter fossil
#

๐Ÿ‘Œ

mortal bone
#

You not drawing ascendancies?

winter fossil
#

scion is there!

mortal bone
dull laurel
#

Because I only have the groups yet. Nodes are next

mortal bone
#

Ah, makes sense

winter fossil
#

I made art with my rendering a long time ago

mortal bone
#

nice haha

winter fossil
dull laurel
#

this looks just slightly wrong

#

So for rendering I basically iterate over all groups and then draw their nodes according to the orbit plan, right?

winter fossil
#

kinda, ye

simple ravine
#

Emmitt, PoeSkillTree with .NET Core 3.0 yes? ๐Ÿ˜„

mortal bone
#

WPF is coming to town, so maybe

#

I love the speed of .net core

dull laurel
#

the web guys. the web is the future ๐Ÿ˜„

simple ravine
#

It's amazing. I've been fortunate to have done a lot of .NET Core stuff, and been benchmarking with 2.1 since the early previews

#

Emmitt... change of plans. Blazor and WebGL

dull laurel
#

cough angular cough

simple ravine
#

not a fan ๐Ÿ˜‰

dull laurel
#

Ha, I just noticed that I actually don't need groups at all. All the positions could go into the nodes directly

mortal bone
#

I just find it impressive they improved the performance of damn strings so much

#

....strings

#

it is great haha

simple ravine
#

Span<T> ftw

dull laurel
#

well strings are not native to cpus, so yeah ๐Ÿ˜‰

simple ravine
#

I need to rewrite it, and keep writing... at some point. There's just so little time

mortal bone
#

strings are native in x86

dull laurel
#

no, I meant that hardware does not know about strings. you only have 32, 64, 128bit whatever sized objects. and then moving strings around or manipulating them is costly in terms of instructions. and then there is plenty of room to improve performance

simple ravine
mortal bone
#

LODSB and LODSW

simple ravine
#

MOVSB, STOSB, SCASB too

mortal bone
#

byte, word, and doubleword strings are all supported

simple ravine
#

The reason why .NET Core 2.1 became so much faster with things like strings (and 3.0 even faster), is because a string is naturally immutable, however with .NET Core 2.1 you can do allocation-free operations on a string with the native representation of the string using Span<T> and ReadOnlySpan<T> which is just a struct with a pointer and a length pretty much

#

but DrTorte#4840 @dull laurel is correct in a sense though. They're mere bytes in the memory, @mortal bone

mortal bone
#

think you pinged the wrong person lol

simple ravine
#

whoops

real shoal
#

Lawl, I'll take it. :p

simple ravine
#

I want a pure Utf8String though, because string/char are 2 bytes each so it can contain UTF-16/Unicode characters

#

which many times is unnecessary

winter fossil
#

@simple ravine Is it normal for .NET backends to use PascalCase in their responses? Front should make their own models based on the spec, but it just looks so ugly when we have to deal with it. The only problem I have where I work now haha

simple ravine
#

You mean when responding to a web api?

#

they're automatically converted to camelCase nowadays

winter fossil
#

ye, we're just sending out the models as JSON

simple ravine
#

(default setting that is)

#

if you use an older version in a project you can't/won't upgrade, I'm fairly confident you can configure the JsonSettings to spit out camelCase without you having to jump over hoops each time

winter fossil
#

Would be cool if I could convince them, but it is kinda pointless to change now since we got more clients that's dependent on the backend

simple ravine
#

I can recommend api versioning

winter fossil
#

Would like to know if the first backender just didn't know you could change it in a setting. Gonna need to ask about that

#

We just upgraded to an V2 api, but it's inheriting the V1 and using the same logic with just taking the models and sending them (if I understand C# right)

simple ravine
#

ASP.NET Core with ApiExplorer + Swagger/Swashbuckle (nowadays called OpenAPI), you can version your apis quite simply

winter fossil
#

cool

hushed relic
#

For potential filter-authors:

dull laurel
mortal bone
#

Yeah, I have done the drawing a fee times haha

compact isle
#

we use svg's for the ascendancy images outside of the tree

#

so nice to work with

winter fossil
dull laurel
compact isle
dull laurel
#

Ah, nice

celest wasp
#

@dull laurel is your svg tree render going to be open source? Not looking forward to dealing with that D:

dull laurel
#

@celest wasp I guess that could be done. Always afraid of sharing my code ๐Ÿ˜ฆ ๐Ÿ˜„

celest wasp
#

@dull laurel Happy to contribute back any fixes/improvements ๐Ÿ˜ƒ

dull laurel
#

@celest wasp that sounds great. do you have knowledge in typescript, angular and d3? because that's what I'm using right now

celest wasp
#

My typescript is good, d3 is rusty, and closest I've gotten to angular is vue... which probably does the job.

dull laurel
#

Greatness. Guess I have to move the code to github then

celest wasp
#

๐Ÿ‘ I've got a bunch of other stuff to do... along with this weekend being a writeoff. So, no rush ๐Ÿ˜ƒ

dull laurel
#

This weekend is league start!

fallen girder
#

waiting to see how veiled items show up in stash api

velvet fog
fallen girder
#

oh thanks

viscid mantle
#

I'm having issues installing Exilence. Anyone successful with it and can help out?

limpid helm
#

try the Exilence discord

#

invite/ymr3VnA

viscid mantle
#

thx

#

i'll hop in there. didn't notice the discord link on the github

compact isle
#

@chrome topaz your login script is broken and spamming our page, pls fix

chrome topaz
#

@compact isle what script?

velvet fog
#

seems login official site

chrome topaz
#

if you mean poexyzis account, I only see 2 logins in the past two hours

#

you sure it's not somebody trying to bruteforce my account?

compact isle
#

ah it's just the regular scraper being redirected to the login page and you're following the redirects

#

probably best not to follow those ones, it's triggering quite a few things

chrome topaz
#

okay

chrome topaz
#

should not follow redirects anymore

compact isle
#

cheers

hidden marlin
#

I just wanted to hop in and say thanks to all the various tool developers for working/updating their respective projects. Hope you guys get a chance to play at launch ๐Ÿ˜ƒ

delicate ore
#

@velvet fog how soon will the datamine be available?

velvet fog
#

well...dl speed is 145kiB/s, 1d 4h to download it

#

need some help on extract Data/ and Metadata/StatDescriptions/

paper falcon
pseudo ocean
#

@velvet fog Welp, at least they release that marauderthinking

velvet fog
#

nope, they put 3.4 dat inside this torrent

pseudo ocean
#

WTF marauder

fathom spruce
#

3.4 dat? so it truly was a betrayal.torrent

velvet fog
#

wait, just checking again

#

my fault, my source extract wrong content.ggpk for me

stray delta
#

Phew! That would have been a big annoyance if people downloaded the whole ggpk file only to have it almost completely rewritten at patch time or something.

compact isle
#

you were the betrayer all along!

pseudo ocean
#

Hahahahaha lol

stray delta
#

Thanks for all your hard work, everyone, by the way! ๐Ÿ˜„

velvet fog
#

hope they don't remove baseitemtypes this time

#

ya, more surprise

#

they remove ALL Data files this time

uneven wren
#

This is an annoying trend :(

velvet fog
pseudo ocean
#

Where's Data folder ?

steep iron
#

lol rip

uneven wren
#

I wonder if they decided on it after incursion's low retention

pseudo ocean
#

maybe it would show up after tomorrow marauderthinking

#

I wonder......

#

๐Ÿ˜ญ rip

timid hemlock
#

No data folder? Shame for y'all

#

That's really annoying though :/ I feel for you data-deprived folks :/

velvet fog
#

and the Content.ggpk not optimized, with 145748 FREE chunks

candid owl
#

no poedb preview this league?

velvet fog
#

until league patch start, we will get the real data

dull laurel
#

Would also be interesting to know the size of those free chunks in sum. ๐Ÿ˜„ Time to defragment that file

#

@velvet fog you are the owner of poedb?

velvet fog
#

Ya

chrome topaz
#

can you craft scarabs or do they always have the same mod/mod range?

sturdy lark
#

I believe they're fixed

hazy fog
#

they're found in safehouses

dull laurel
#

@timid hemlock how is working for the overlords working out for you? ๐Ÿ˜„

timid hemlock
#

Absolutely terrible

#

By which I mean it's the best job I've ever had

fallow tide
#

Heyy, do you think you'll finish the gems in PoB before launch?

timid hemlock
#

I have no idea

fallow tide
#

Haha, okay

#

Good luck brotha

hidden marlin
analog dune
grave isle
#

love the game is not the same that work in this game ๐Ÿ˜‰

analog dune
#

But working on something you love is great ๐Ÿ˜„

simple ravine
#

As a developer, any game loses a lot of it's "magic"

dull laurel
#

Plus you are literally at the end of the world ๐Ÿ˜„

simple ravine
#

It's so far, I'm getting ERR_CONNECTION_TIMED_OUT

faint remnant
#

I'd take a GGG job any second. But I doubt they need C# SQL people. (nobody needs those around here either <.< )

analog dune
#

maybe for internal tools ? ๐Ÿ˜‰

silent vapor
#

Here we go... Not DDOS again, please.

analog dune
#

I think it run out of energy due to betrayal launch ๐Ÿ˜„

simple ravine
#

@faint remnant we're desperately trying to recruit c# ninjas

#

especially if you have a bit of cloud knowledge

grave isle
#

@simple ravine i agree with him, when you see the back or a game you EVER lose something ๐Ÿ˜‰

dull laurel
#

Nah, everyone wants frontend people ๐Ÿ˜„

simple ravine
#

some gamer was trying out this new MMO, ashes something something... And he was saying "Oh look, that deer is looking at me. He knows exactly what I'm up to"

#

... no, it's a bunch of polygons.

faint remnant
#

Well that effect comes also from just being a programmer in general

simple ravine
#

It's a bit sad to see some developers without jobs, especially good ones. The supply is lower than the demand for sure.

faint remnant
#

It absolutely increases my chill towards any bugs or blunders. Like duh of course a league has bugs at the start. Have you seen how quickly they churn those out?

#

I have a comfortable position, don't worry.

simple ravine
#

good to hear ๐Ÿ™‚

analog dune
#

@simple ravine in NZ ? In France there's plenty of jobs available but they require a master degree in computer science

silent vapor
#

It can be a bit harder to find remote jobs.

simple ravine
#

that is indeed very difficult, still.

#

especially for lead developer and architect roles

silent vapor
#

Yeah...

#

Even when you have plenty of experience doing it that way.

simple ravine
#

we need better conferencing and whiteboarding software/tools

#

companies need to slowly mature into it

#

but there is a huge benefit to have people in the same room

#

working remotely, you miss out on these spontaneous and situational discussions

silent vapor
#

Tools are pretty good, and there's a wide selection to choose from. But you're right, you can't beat face-to-face sometimes.

faint remnant
#

Especially since even when talking about code there is still body language involved. Try show something to someone on 3 screens just by wiggling your mouse around

simple ravine
#

so many discussions and good ideas have come up in the office, by just overhearing a conversation and pitching in

silent vapor
#

Maybe it's time to have always-on video feeds with remote workers.

simple ravine
#

well, if you can integrate them into the actual office

#

otherwise, it'll be one office and a virtual office that aren't integrated/connected

silent vapor
simple ravine
#

yeah, i've ran a company where we had all team members remotely

silent vapor
#

...and they evolved "eat our own dogfood" into "we drink our own wine", which I think speaks volumes.

simple ravine
#

we were spread out over multiple continents

analog dune
#

i won't feel like being in a company in a full remote environment :(
I like being in a office and see co-workers ๐Ÿ˜„

faint remnant
#

Much less chances to drop terrible puns in a remote environment

silent vapor
#

Not true!

faint remnant
#

Also, less discussions about which league starter to use

silent vapor
#

More chance to hang out on PoE Discord...

analog dune
#

โฌ† THIS

simple ravine
#

<- working from home today LUL

silent vapor
#

"working"

faint remnant
#

I already spent far too much time on this discord while in the office

analog dune
#

"it's compiling"

#

๐Ÿ˜„

silent vapor
#

Terrible excuse these days ๐Ÿ˜„

simple ravine
#

I cant really blame on that anymore ๐Ÿ˜

#

CI/CD pipeline is done in 30 seconds heh

silent vapor
#

Wish it was possible to help Openarl. I'm twiddling my thumbs here.

analog dune
#

Editing some lua & opening pob would feel a bit strange at the office :p

silent vapor
#

I'm not a fan of Lua, but there's so much useful data in that program I can put that aside.

simple ravine
#

oh snap

#

i haven't opened PoB in a while. time to check that out

silent vapor
#

No that's my branch.

simple ravine
#

ohh

silent vapor
#

The pull request is posted.

simple ravine
#

PR for the love of god

#

nice

silent vapor
#

I'm also extending it to sorting uniques.

hazy fog
#

nice

silent vapor
#

Somebody clone Openarl, please.

analog dune
#

sleep time in NZ isn't it ? ๐Ÿ˜„

simple ravine
#

afraid I don't have the energy to learn lua at the moment

#

i read the code a bit, and it also felt a little bit entangled, so with that combined with a language you're not accustomed to, i felt i couldn't really add any real value

#

otherwise i'd be happy to

silent vapor
#

My next approach is going to be embedding Lua into C# and running PoB that way, giving total access to the data from C#.

simple ravine
#

ooh

#

I started writing a PoE related library for C# btw

#

it's pretty rough

dull laurel
#

how about not using lua? ๐Ÿ˜‰ I would like to implement PoB in typescript, then everyone can use it in a web app

simple ravine
#

but it reads ggpk and dat files, read modifiers etc

dull laurel
#

basically the whole calculation engine

silent vapor
#

PoB has so much knowledge built into it. I don't fancy replicating that.

#

I'd rather use it.

simple ravine
#

the only reason I'd want to replicate the logic, is to create an API which can be used in different ways

silent vapor
#

Yup. That's why I'm doing the C# side.

simple ravine
#

but seeing how much effort Openarl has put into figuring a lot of the nuances out, it feels a bit daunting

analog dune
#

The C API for LUA is pretty simple, don't know for c# ๐Ÿ˜ฆ

south quarry
#

templarLul reverse-engineering the PoB item builds has been an experience

silent vapor
#

Yeah Lua embeds well in almost anything.

analog dune
#

that one of the main advantages of it

delicate ore
#

i really love lua, but hasn't the js vms surpassed it now

#

in terms of ease of use, size, and code structure

silent vapor
#

Sorta, but a good JS VM is large.

#

...and complex.

chrome topaz
#

Arrays start at 0

silent vapor
#

Heh.

south quarry
#

Is JSON hard to use with LUA or something? marauderthinking i'm kinda confused why items are put into one array and to figure out the mods you have to like split based on one of the other array strings

#

i've never seen things done like this before

#

it's something like

"name", "base", something something..,
"implicits 1",
<implicit mod here>,
<the rest here>,
]
delicate ore
#

but matrices start at 1!

silent vapor
#

That's just a choice made during the design, I believe, slushy. Lua works with JSON-style data just fine.

south quarry
#

I probably should've looked at the source to figure it all out properly but it was kinda fun to figure out anyway

#

apart from the items that don't follow that design, like pre 2.6.0 starkonja's doesn't list how many implicits at all marauder

worthy cape
#

@velvet fog The FREE blocks smells like <redacted> :)
I wonder if there's any garbage left in them...

#

I had a nice side-effect of re-establishing my IPv6 tunnel recently. Several of the top seeds for the GGPK were on v6 for me.

velvet fog
#

ya, but without filename, it's hard to re-used

dull laurel
#

6 hours and then we will know everything ๐Ÿ˜ƒ

#

the veiled mods should also be in there then, even though you probably have to implement the parsing first ๐Ÿ˜„

#

The skill images are also inside the ggpk, right? Because I hate sprites ๐Ÿ˜„

velvet fog
#

not sure, just close it when missing Data

dull laurel
#

@velvet fog which tool did you use earlier for that screenshot of the ggpk folder structure. is that visualggpk? I want to extract some art files

velvet fog
#

try PyPoe, VisualGGPK can't extract compressed DDS

#

i'm using my own PHP libs to extract folder structure

dull laurel
#

meh, just wanted to extract the art files for the skill tree. also interesting to see, that there is a 4K folder. seems they are polishing everything

#

ah nice, pypoe works, after some struggles. and it looks like visualggpk ๐Ÿ˜ƒ

hazy fog
#

@dull laurel I'd argue we'll know everything in 3-4 hours

#

as soon as the game is available for download we'll mine it GWnanamiAquaThumbsUp

#

and by we I mean chuan will

dull laurel
#

Could it be that the dds files extracted via pypoe are still compressed? ๐Ÿ˜„

split reef
#

@timid hemlock When will everything be updated?

timid hemlock
#

When I'm finished

obtuse citrus
#

@dull laurel they shouldn't be. Try rechecking uncompress option in pypoe ui config. Your tools may also have problems with the files since not many things support all dds formats...

split reef
#

cool, Thanks as always. Ill be waiting patiently

dull laurel
#

@obtuse citrus all files start with "8+" instead of "DDS", neither paint.net nor an online tool could open it. I will check the uncompress option and see if that helps

worthy cape
#

Thereโ€™s three possible ways data can be stored in entries. Theyโ€™re either uncompressed, symlinks with a leading star before a path name, or brotli with the uncompressed size up front and then a payload.

#

I have an unbrotli.exe lying around somewhere to unpack individual files, but no idea where ๐Ÿ˜ƒ

simple ravine
#

I think I made my library do the whole magicery, but it's not polished / pushed yet

#

follow symlinks, unpack brotli-dds etc

#

and convert to png

dull laurel
#

yeah, png would be great ๐Ÿ˜„

#

is dds a vector format or bitmap?

simple ravine
#

bitmap ... texmap with a bunch of variations

winter fossil
#

@dull laurel If you want you could just use their CDN and use the URI:s in the assets entry

dull laurel
#

@winter fossil now that helps a lot. what is the base url for that?

south quarry
#

kinda rushed it to get it so people can use it for new league, but it works pretty well ๐Ÿ˜น

mortal bone
#

then attach "imageRoot" to the end of that

winter fossil
#

-gen i think

#

Gen is in the assets uri, if i remeber right

mortal bone
#

all of the tree assets are under gen

#

without gen you get resource not found

#

Also, be aware the 3.5.0 skill tree data's images aren't hosted until the patch is live

winter fossil
#

Ye, but the property value is: "gen/image/..." in the JSON. What i ment :)

mortal bone
#

Ah, I see what you mean

#

yeah

dull laurel
#

this is also for the passive skills? or are there still the sprites?

winter fossil
#

Still the sprites, there's some coordinates that maps to each sprite image for each node

#

The SkillSprites key, that'll map to the ni property in the node

mortal bone
#
"skillSprites": {
        "normalActive": [
            {
                "filename": "skills-0.jpg?0b165de019cc53898e7a03e9f8fbe68a",
                "coords": {
                    "Art/2DArt/SkillIcons/passives/firedamagestr.png": {
                        "x": 0,
                        "y": 0,
                        "w": 9,
                        "h": 9
                    }
#

given x,y and w,h of each icon mapped by the icon on the node

dull laurel
#

i'd rather have the art/2dart file than the sprite. is that possible?

winter fossil
#

That's a lot of files though

mortal bone
#

that would be really slow

#

like really slow

#

you would be downloading thousands of files

dull laurel
#

i'm kindy struggling with raster sprites in svg ๐Ÿ˜„

worthy cape
#

@dull laurel (A DDS file is kind of like a .mp4 container, it can contain a whole lot of formats of image data, ranging from uncompressed bitmaps to block-compressed formats like DXTn and BCn, with mipmap levels and all sorts of Fun Stuff)

dull laurel
#

but only for http1. http2 solves all that with an open connection. hopefully

worthy cape
#

If you open them in image editor, those mipmaps tends to show as layers or so.

#

It's all raster tho, unless someone puts their own custom FourCC format in there, they can technically hold whatever the heck you want ๐Ÿ˜‰

mortal bone
#

@dull laurel if you want those, you can download each file

#

should work http://web.poecdn.com/${constants.imageRoot}/${node.icon}

dull laurel
#

or I can improve my svg skills

worthy cape
#

@simple ravine I think everyone here has their own library for this, it's great fun to write ๐Ÿ˜„ Mine got side-tracked reimplementing in Rust, but I have a web-based directory listing thing at least.

#

wget --mirror is a horrible idea, but can be done ๐Ÿ˜›

dull laurel
#

@worthy cape but that only works if you have hrefs somewhere

worthy cape
#

So I've got localhost:8080/tree/Art/2DArt/blargh.dds and listings for directories.

#

But you do indeed need to know the GGPK path to something to get it.

dull laurel
#

that is no problem, thats in the json that they distribute with the patch notes

mortal bone
#

The skill tree data provides all that

dull laurel
#

that is what i meant

pseudo ocean
#

Dunno where to ask this.. is the pob bot here hosted only for this server?

jade adder
pseudo ocean
#

๐Ÿ‘

mortal bone
#

much faster

dull laurel
#

very colorful. I like it

#

this is for poeskilltree, right? so you instantiate a webview/browser in there or is webgl just a standard?

mortal bone
#

Na, this is just a fun project in typescript

#

Wanted to make a simple "example" project for people

dull laurel
#

oh that's cool. because I'm also working with typescript right now on the exact same thing. Just with svg drawing

mortal bone
#

nice haha

#

currently using PIXI for webgl

#

very simple library

inner beacon
#

Typescript has really boomed in the past year

mortal bone
#

Yeah

#

We started using it at work, so I am trying to get up to speed

#

I like it a lot

dull laurel
#

much better than plain javascript. the type annotations help so much in big projects

inner beacon
#

Styled components is still extra double messy with it but intellisense is worth it

dull laurel
#

what do you mean with styled components?

#

@mortal bone is that source code for the tree online somewhere?

inner beacon
#

unrelated library for css in js.

#

It gets messy with type defs

winter fossil
#

Styled components <3

inner beacon
#
interface ICardProps extends IBoxProps {
  hoverEffect?: boolean;
}

export const Card:
  StyledComponent<
    'div', null, ICardProps
  > = styled(
    ({hoverEffect, ...props}: ICardProps) => <Box {...props}/>,
  )`

The main issue is with extending components

winter fossil
#

Just type one of the passed props, and the rest will understand

mortal bone
#

@dull laurel Uh, nope

winter fossil
mortal bone
#

I can make it

winter fossil
#

Like that

dull laurel
#

@mortal bone the plus side, I don't have to deal with svg anymore. the bad side, I would have to implement all the interaction myself ๐Ÿ˜•

inner beacon
#

@winter fossil I only skimmed through the code, but I believe you're not using different props for the extended component. You'll get props leaking onto the DOM if you don't filter them

#

styled-components spreads all props it gets onto the dom

#

that aren't used in the css

mortal bone
#

kind of just pushed everything

#

npm install
npm run build

dull laurel
#

ah, you developed in visual studio

mortal bone
#

yeah

#

only way to develop

#

Shouldn't matter though

dull laurel
#

visual studio code. is the hip thing for frontend ๐Ÿ˜‰

mortal bone
#

whoops

#

as long as you have some type of typescript compiler and npm you should be good

#

uses webpack

simple ravine
#

@worthy cape nah i think most people use PyPoE

winter fossil
#

@inner beacon types =/= the compiled code, my case does not differ from yours

inner beacon
#

@winter fossil Not sure I understand, what do you suggest I change about the snippet above exactly?

dull laurel
#

@mortal bone looks sweet your code. and so simple

#

the canvascontrols are old code, right?

winter fossil
#

You don't need to destruct the properties that isn't used in the component

inner beacon
#

so

export const Card:
  StyledComponent<
    'div', null, ICardProps
  > = styled(
    ({hoverEffect, ...props}: ICardProps) => <Box {...props}/>,
  )`
``` ->

export const Card:
StyledComponent<
'div', null, ICardProps

= styled(
({...props}: ICardProps) => <Box {...props}/>,
)`

mortal bone
#

@dull laurel yep

#

I was messing around with making my own lol

celest wasp
#

ohhhhh typescript + webgl skill tree. I wonder if this is more suitable for dynamic highlighting re-renders than svg.

dull laurel
#

depends how flexible those objects are and if you can change them easily and revert them. like "hover" effects and such

mortal bone
#

Well, you never have to rerender the base tree

#

You only render hover and active layers

#

The number of objects you actually need to change is very few

dull laurel
#

oh, that's a good idea

mortal bone
#

@dull laurel your code any where?

dull laurel
#

one sec, currently in azure devops, but I will move it to github

mortal bone
#

Ah haha

dull laurel
mortal bone
#

Nice

dull laurel
#

npm install && ng serve

mortal bone
#

Yeah, you do a lot more work to decode the tree in a readable format

dull laurel
#

yes, that was my main concern. that helps to work with it later

mortal bone
#

I was thinking about just doing private crappy names and then nice public names that just return the private

winter fossil
#

@inner beacon

Interface CardProps {
background: string;
}

const CardStyle = styled.div`
background: ${(props: CardProps) => }
`;

const Card = (props: CardProps) => <CardStyle {...props} />

Just pass what the styled component needs.
(Format sucks, on mobile haha)

mortal bone
#

In c# you can just put a JsonProperty tag and be done

#

Something I wish typescript had

dull laurel
#

what does that do?

#

also update available. gogo @velvet fog get all those tasty uniques mined ๐Ÿ˜„

hazy fog
#

screw the uniques show me veiledall craftable mods

mortal bone
#

You can have something like

[JsonProperty("not")]
pulbic bool isNotable;
winter fossil
#

Does that just type it as nullable in C#?

dull laurel
#

no, it parses the property "not" from a json into this property on your class/object

winter fossil
#

Ah

dull laurel
#

basically implicit conversion from one format to another

winter fossil
#

Oh right, not the out nodes haha

mortal bone
#

Yeah, if you want a nullable bool? isNotable

grave isle
#

Steam update avaiable

dull laurel
#

I would call this optional. Any property is nullable, is it?

silent vapor
#

Not in C#, no.

mortal bone
#

In JavaScript, yes. C#, no

pseudo ocean
#

nope in C#

grave wren
#

java yes unless restricted and if not primitive

dull laurel
#

๐Ÿ˜„

simple ravine
#

In c# 8, there will be nullable reference types though

#

and other changes to nullable

mortal bone
#

I don't think any type should be nullable unless explicitly stated

grave wren
#

i am fine with either if it is consistent

dull laurel
#

also boolean should be 3-state ๐Ÿ˜ƒ

simple ravine
#

eh

#

no

grave wren
#

you mean Boolean

#

:p

#

or the good old

#

yes - no -eh maybe

dull laurel
#

actually true, false, undefined

grave wren
#

so java Booleangot it

#

don't really see the value though

mortal bone
#

Yeah, fuck that

dull laurel
#

because sometimes there is a difference between false and undefined

grave wren
#

then you need to make a better model

#

imo

mortal bone
#

True or False

#

Call it good

grave wren
#

they're called boolean for a reason

#

ternary flags or some other name would be better

#

just to distinguish

dull laurel
#

tri-state logic.

south quarry
#

I guess my site is officially released now templarthumbsup

mortal bone
#

Use an enum

dull laurel
#

@south quarry nice. hope it can handle the traffic ๐Ÿ˜ƒ

mortal bone
#

Cloudflare saves lives

dull laurel
#

well first I need a working / useful app

mortal bone
#

Na, just a domain lol

#

Better safe than sorry

winter fossil
#

Why should booleans be 3 state? We talking C# here?

#

What does it mean :p

south quarry
#

got cloudflare, hosted frontend on netlify, most of the stuff is localstorage, backend is elixir and super quick templarthumbsup it'll be fine

mortal bone
#

I think we were talking in general

#

Nice

dull laurel
#

wait, netlify hosts your app for free?

winter fossil
#

I mean, there's a lot more that evaluate to bool in the js world

south quarry
#

yeah netlify hosts frontends for free

mortal bone
#

That's cool

dull laurel
#

well thats pretty awesome. bookmarked that for my app, when it is finished some day

grave wren
#

i just used github pages for now

winter fossil
#

Heroku is nice if you want simple hosting

celest wasp
#

@grave wren you can throw cloudflare in front of gh pages for a custom domain ๐Ÿ˜„

dull laurel
#

@celest wasp oh that works? nice. man, so much stuff i learn here ๐Ÿ˜ƒ

grave wren
#

nice

mortal bone
#

Right now I have cloudflare sitting in front of my PC lol

dull laurel
#

wat

mortal bone
#

Probably should move that to GitHub pages

dull laurel
#

wow, first load mega slow ๐Ÿ˜„

celest wasp
#

@mortal bone argo tunnel?

mortal bone
#

Well, that is an old version of the tree lol

#

That is the main thing hosted

dull laurel
#

yeah that is a cool idea

mortal bone
#

@celest wasp na, some router magic lol

#

Classic port forwarding

grave wren
#

can we add poe patch cherrypicking openarl

modern imp
#

Just out of pure interest: Since there is now the possibility to store hideouts in plaintext, something like a "PoE Hideout Editor" with actual importable hideouts wouldn't be unthinkable, right?

dull laurel
#

I think there are people working on that @modern imp

#

atleast I read that here or on reddit

celest wasp
#

@mortal bone cheaper that way lol
Why aren't you using the atlas images? I see a lot of data uris in the network tab

mortal bone
#

Atlas images?

#

Oh, ignore that skill tree

#

It is old as hell

celest wasp
#

ah, gotcha. atlas image = one big ol image with each node positioned on it

mortal bone
#

Oh, Sprite sheet

#

Not sure what I was doing with that tree tbh

#

I will replace it with the newer one when I get home

modern imp
#

@dull laurel cool thx for the info ^^

south quarry
#

is it allowed to link my tool thingy in the discord? marauderthinking

mortal bone
#

Yeah?

hazy fog
#

sure

#

that's one of the purposes of the channel ๐Ÿค”

south quarry
#

marauderthinking i was thinking in other channels so more people see it

celest wasp
#

BTW, anyone here interested in having their league start tracked? I've got gear + passive tracking running for streamers at the moment.