#tooldev-general
1 messages ยท Page 127 of 1
Yeah it said updated from 2.5 to 5
oops
@fickle yew i just priced cluster jewel prices a few days ago using my modified pricing algorithm, if you're curious in comparing let me know
i did the splits you suggested, although i further grouped small node numbers into 2, 3, 4-5, 6, 8, 9-11, 12
@hazy fog A bird whispered in my ear that @gilded tree is the current dev behind poe.watch and could arguably be considered worthy of the sweet green role.
(I'm doing my job, for once)

words go here I just woke up and zao says this is indeed the Mxrk that creates https://poe.watch/ so now @gilded tree is a tooldev 
Anyone aware of any changes to the character-window API that was supposed to go live now?
Exilence started blowing up just about now for everyone, and the error implies our client tries to send incorrectly formatted data.
I will investigate it deeper, just wanted to check if anyone knew something that just changed
That doesn't say much, other than your mvvm thing doesn't like the data. You should check at the right stack level, i.e. at infra service layer / http request response
Ye agreed, just wanted to check quickly if anyone had an answer before I dig deeper, but already on it, thanks @simple ravine
Introduction of OAuth, and I saw GGG website asking for new ToS consent when logging in
perhaps that's blocking someting
@civic crane u make the awakened poe thing right?
I see some mods that it's not recognizing, additionally it doesn't recognize if things are synthezied it looks like
you are welcome on github ๐
:yawn:
You should join SnosMe's Discord and ask questions without reading the FAQ or providing logs. That's what everyone else seems to be doing ^_^
:yawn: * 2
@distant rock bit late but im having the same issue with exilence
fix coming up, we didnt have proper defaults on our end and poe.ninja removed them today on his end so it blew up a bit
Yeah I'm culling my api data a bit more for values that don't make sense - like mapTier on a unique weapon.
What tool is this that Quin uses, anyone know? Gets like map information and other stuff.
@steel adder Awakened PoE Trade's "Map Check" functionality.
Ahh okay, I was using poetrade and it was just like a little text box, I'll check that out
Copying item info (Ctrl+C) is a client-side only action right?
afaik yes
I feel attacked
hey guys, do 3.14 bases not show in PoB? my apothecary gloves do not load
update your pob
got it thanks. how do i set wither totem stacks in POB?
Please note that this channel is not for end-user support.
using none official document api seems violate term of use section 7i https://www.pathofexile.com/forum/view-thread/3108772/page/1#p24080440
Is this including 3rd party trade tool?
yep but again enforcement isn't changing. It just helps since we can point out a part of the ToS instead of saying "sorry we don't officially support these APIs"
okay, thanks
curious if anyone else here with stat translations from the ggpk could tell me what index handlers they have for:
map_boss_chance_to_drop_additional_map_currency_permyriad
(RePoE currently has none listed, which im suspicious of)
divide_by_one_hundred_0dp
@civic crane You're only fetching poe.ninja data for one league right? I'm currently doing a review of 3rd party users of my api since my requests to itemoverview is now over 1 billion requests per week...
wow
thats a lot of requests
did some rough estimates @fickle yew , we probably account for approx 30mill per day in exilence lol, thats a bit on the pessimistic side of things though counted on 5k concurrent users around the clock
still "only" a fifth of your total if that number is accurate
Indeed - 15 TB last 24 hours ๐
oof
I can only imagine what @compact isle is seeing in his Cloudflare dashboard for poecdn ๐
@compact isle Maybe you could take a look at the 'chaos orb equivalent' calculation for the official site because it's been out of whack for a couple days now. Items listed for 0.6 ex (~90c) take precedence over ~60c items, and it gets worse for larger amounts. This also artificially inflates the demand (and thus price) of exalts because people are incentivized to list their items for exalts for better listing priority. Never before have I seen more listings for '0.6ex' or '0.5ex' than this league.
@fickle yew oof, that's big, I wonder how much that could be avoided with caching
whenever I wrote a script that uses poe.ninja I always cached for at least ~15 mins
but the big offenders are always community tools that are effectively a distributed denial of service
It is mostly cached already.
in exilence we have a plan on proxying the requests and caching them on our end so a big chunk should be removed with that, but I doubt we are the largest consumer
Exilence is already at 20 min intervals and awakened at 10.
I wonder what other tools might be big consumers.
really should try to find user agents if possible in some way
I would guess it's like profiling, 90% of the bandwidth consumed by 10% of the things
It almost has to be distributed tools..
when I say 10% of the things I mean one or two particular tools
To reach 2000 requests / sec average over 30 days.
what you could do is add an API key with a very simple form to fill out to get an API key
and for the website rotate API keys e.g. hourly
that way an intentionally bad actor could of course still 'scrape' the website to get the website API key and use that
but I doubt you're facing such an actor
any legitimate tools would just be identifiable through their API key
depending on your server bill might be worthwhile ๐
The traffic is mostly free due to Cloudflare CDN, but they do bug me to upgrade once in a while ๐
I could just use Cloudflare rate-limiting - it's 5 cents per 10k good requests, so at 5 billion requests per month I can get it for cheap at $25000 / month ๐
what a steal
Steal.. I think this is a Grand Heist.
imagine if you could throw an ad through each request or mine some crypto oof Kapp
DONT GIVE HIM ANY IDEAS AILURO
inb4 Novynn actually grabs that idea for poe trade and throws blame into 3rd party apps for slowing the network
yes, only one league 25 req every 10 min. Looking at categories, I think some of them don't require updating for longer than 10min. todo โข๏ธ
considering that people can keep app running after exiting poe, it is also possible to pause price updates in the background
does someone know a machine-readable source of how much xp each gem needs to hit max level?
Should be tabulated in one of the dat tables.
Requires of course that your tooling is up to spec tho ๐
I have nothing right now
Guessing wildly, ItemExperiencePerLevel and SkillGems, related via BaseItemTypes.
I was ideally hoping for an existing resource unless extracting that stuff is really easy
Doesn't seem like RePoE has it, not sure if PyPoE's has the right specs to export it.
I'm at "work" so can't really check much.
@velvet fog Is the above the right way to find XP reqs for gem levels?
@fickle yew I'd suggest for gems to add a new group with 'any quality' and aggregate over that
e.g. for awakened elemental damage with attacks such a group is completely missing: https://poe.ninja/challenge/skill-gems?name=Awakened Elemental Damage with Attacks Support
It's a bug that's already fixed but takes a bit to propagate through the data.. The 10 quality one is actually quality 0-19.
I fixed it the other day, but not every gem has updated yet.
I see
So any quality you see that's below 20 is 0-19
Same for levels.. 1 is 1-19 for any level 20 max gem
Oof, just saw the update to README.md on PyPoE.
Big thanks to @obtuse citrus for all the work over the years

brather1ng's fork has a good enough spec to export to JSON with:
pypoe_exporter dat json --files=BaseItemTypes .\baseitem.json
pypoe_exporter dat json --files=ItemExperiencePerLevel .\gemxp.json
Anybody here have an inside line to the development track of POE (or direct contact with a dev that might know) that could tell me if GGG plans on adding the copy/paste functionality to bench / horti station crafts, or the possibility of exposing them to the api?
I wouldn't hold my breath.
Way back when they were items, the reasoning around having river info on them was that there was no inherent tradeability in them, instead being more suitable for third party meetups: #tooldev-general message
going to update the readme of RePoE soon to indicate we are now consuming brather1ng's fork of PyPoE to power RePoE
does anyone know if someone is going to take over the wiki from @obtuse citrus ?
our numbers are much smaller than that (for web.poecdn.com) ๐
and cloudflare was angry at us for having less than that on the enterprise plan lol
Yeah, I was hoping the overlay that I'm having built would be able to pick them up in order to submit them to the user's available crafts on the database-driven services trade site i'm working on. Guess users will just have to manually post all their crafts / services for the time being.
even before bundled assets? I have to imagine the load on the CDN would have been pretty massive during expansion release
web.poecdn.com doesn't serve patch contents
unless I'm misunderstanding what you mean
oh, web.poecdn, nm. was thinking of patch.poecdn
yeah patch is... a big number for sure
Nov / Viper Any chance we can get bench / Horti station crafts to be able to produce info when you mouse-over and CtrlC, like for gear?
Just sneak that into one of the sprints and i'll luv u long time
posting for novynn: https://www.pathofexile.com/trade/search/Ultimatum/q9aoWLkfg showing price listings for 1.5ex before 1ex and then 1.6ex listings after that (sorted by price)
ya i was noticing the same
very strange
that happens whenever we update ratios because it by far isn't an instant process
interesting case of the stat translation hiding the actual value:
"stats": [
{
"id": "map_boss_chance_to_drop_additional_atlas_base_type_permyriad",
"max": 450,
"min": 350
}
],
3.5 gets rounded to 4 and 4.5 gets rounded to 5
Anyone know a api query to official poe api or poe.ninja on getting current temp league name ?
Thanks, works like a charm and now i have their refrence doc. ty alot
you guys can just PM me these things instead of not-so-subtly suggesting they get fixed :p
is there a tooldev-updates channel that I am missing somewhere?
There's only the two visible channels, this one and the one for focused breakout discussions.
there's one on TFT
@fickle yew would it be possible to add fire burst as a skill to poe.ninja?
@velvet fog was the 3d model viewer function removed from poedb? I don't see it anymore
i had a vsc plugin that had working autocomplete for poe filters and a colorpicker, does anyone remember which of the plugins does that?
doesnt have autocomplete nor the color picker for me ๐ค
Oh, sorry then, thought you meant that one
np, its weird that none of the ones i find do it anymore
maybe that plugin got pulled :<
@latent solar disabled due to some issues
aight, thanks
@fickle yew requesting "quality type" dropdown on poeninja economy skill gems page, ie superior/divergent/anomalous/phantasmal
I've seen other people want it too
Several people requesting fire burst all of a sudden.. what build happened? ๐
Yeah agree.
its decent for ignite bomber now
they doubled its cooldown, but to compensate, more than doubled its damage and massively increased its aoe
Neither of those were ever droppable, sooo...
that's funny, looks like there's some kind of limitation or protection to sending inputs in the game
it deletes consecutive letters if they are the same
like "vaal" -> "val"
I had to work with the clipboard
If you're using the wrong kind of input, you may be feeding it faster than it can process it.
Wouldn't surprise me if it would trip up if you've got multiple taps per loop iteration.
are you sure that you send keydown and keyup, not just keydown keydown
no I'm not, I was relaying in win32 SendInput
and I use win32 since, well, yesterday
so no
but if I send the input in for example notepad, the content was fine
@worthy capemaybe
anyway with the clipboard it's working like a charm
Now that was a mistake, capped the game to 1 Hz.
Accepts interactive input without dropping at that setting, so might need tool-grade speeds to tilt some other aspect.
I mean using the in-game Foreground FPS Cap to simulate a less interactive client, but I guess that input processing may be decoupled from that.
just remembered that Awakened sends two ArrowUp events and it works (no delay/sleep)
my code for finding the poe process is shit I need to work on that
and I need to style my app
other than that it's working I'm happy
Anyone in the know with CraftofExile.com got a line on the ETA for Engineering rings support?
I don't think it's seen many updates in the last few years
Reading the last page, it looks somewhat(?) active at least
yeah not sure about the model though
I hope it's continuously updated, otherwise the data would be useless fairly quickly
I picked up a one-handed sword, foil, and it priced it fairly high on confidence at 172c
while it was barely worth 10c
additionally some items have been priced at < 1c when it's been worth quite a bit more (10c+)
it did price my previous chest fairly well though, around 7-11ex, so sometimes it's within a reasonable range
previously used it to get an indication whether an item is worth something or not, to investigate further, but now I fear it'll be too inaccurate
I've never personally used it for rare items, since it's pretty quick to do an actual search with an overlay
fine for uniques and gems etc mostly
I'm yet to find one that's super-nice in terms of poe-trade search. The one SnosMe is making is the best I've tried so far, but it has some things I am not super fond of as well
And considering the rate-limitation on trade site, it's a bit prohibitive
Perhaps I pick up too many items ๐
I had started working on the concept of a public dump tab for rares w/ a companion website that used similar algorithms to price rares
website / overlay
sort of like ExilenceNext but for rares
The trick is to determine which ones to check, if you need to prioritize
Might be interesting to do some crowd-sourcing of combinations of modifiers that is interesting for certain base types
like a semi-AI of sorts, I guess?
the difficulty is the amount of permutations that are available nowadays
one approach I've thought about is taking the rares ladder builds are using and only considering those
not on ladder? worthless 
hehe
well, it's definitely a good idea @frank drift to utilize the synergies in the ladder rares for sure as an information source, similar to a crowd sourcing source
yeah, I was going to use poe.ninja API and parse all the rares on all the top 15000 ppl on the ladder
and determine which bases / affixes were used the most
and use that to set relative values to the rares in the stash that needed evaluation
i wonder how much you'd throw away if you'd only use that information, and if it's worth it
i certainly think it's probably worth for people who are spending their time in end-game-ish
step 2 was makret evaulation
but even step 1 was a LENGTHY project, and I didn't ahve all the coding skills to accompish it on my own
TBH, I was designing it for the casual player
while I think I do, not to be that guy, unfortunately limited time due to job and family
so they could just ID And dump rares, and then check a website or overlay for an estimated value
and even my PoeSharp project is suffering gravely
but then Snos added that to AWPOE
oh that's a feature in AWPOE?
but you still need to spend time IDing and evaluating each item indivudally
yeah yo ucan set a command to evaluate a rare against the market
but you need to do it for each item
manually
oh i thought u meant IDing things in a dump tab
oh , no
that was the feature i was working on
trying to piece it together from Exlience and AWpoe
right, i've been thinking about doing the same
but alas, i'm a dumdum and couldn;t pull it together
but first wanted to reach a stable version of PoeSharp to use as a base for extracting meaningful data from ggpk/dats
there's nothing that does that 100%
well, keep at it
i know, and that's an issue, so probably will have to do some kind of RePoE thing out of it
but because I am paranoid enough that projects usually die (like mine do lol), I don't want to be dependent on other libraries too much
because then your program would suffer badly in case the upstream project "dies"
like PyPoE etc
yeah, hence me only pretty much using poe.ninja and the GGG trade API
yeah that might be enough
I just didn't want to parse all that data
Ras already does, to populate the ranks page
indexing the river takes some thinking for sure
for which part?
other than the fact it's not exposed
and I don't have admin access to poe.ninja ... lol
well, to replicate what he's doing
the data scraping alone is an insane amount of work
you don't have to do all what he's doing, like PoB headless etc to get the stats
yeah
it would be a condensved version
step 2: queue them (easy)
step 3: make worker that gets it thru /view-profile/... (pretty easy)
parsing each base and each affix
but yeah, it's a bit difficult if you're new to working with databases I guess
DBs are fine
parsing probably takes a bit of tinkering, but a pro tip is to create a bunch of unit tests and get a live-runner
parsing all the info correctly is the hard part
that and there's some wonkey stuff w/ the double line affixes
you'd need to account for
if you have enterprise sub from work, then you're in luck
do you have an example?
I've made a few parser in my days, I think I even made one for reverse-parsing actual stats into stat descriptors
twice even I think lol
Even APT settles for either English and Russian for non-advanced item parses, the mapping is icky.
PoB has a nice partial string matching soup.
when I made one a couple of years ago, it wasn't that icky, perhaps it's worse now
what I did was generate compiled RegEx into a a dictionary from the stat descriptions
and did some massaging on the actual lines from the json
and mapped that way
but there are likely much better ways
especially if you can normalize the given stat lines and then hash it
well, if you ever want to work on EXGF, let me know
I'm quite particular with the way I'd want to do it I think, but happy to share thoughts and guide
looks like the get-items doesn't bundle mods together
didn't they do something like that for trade or river nowadays?
or do you have to pass some query string into it?
i haven't looked at how GGG does API stuff since pre corona
their trade site doesn't use their API
it pulls the item directly from their DB
Game offers advanced mod descriptions in Ctrl-C if you hold the key, everything else should still be the old mangled mess.
Not sure what the trade site does if you interface directly with it, as you're not supposed to do that.
yeah, you need to manual pull and parse all the item in your dump stash
I'm looking at the private stash tab endpoint (get-items), @worthy cape
and then there's the trade APIs and the river
as well as parse like item / affixes and have some means oof evaluating the two against each other
getting the individual public tab items isn't hard, scraping the base / affixes / implicits/etc individually is the time consuming part
I got about that far
when I started working on my dump-tab pricer
I've already done backend for watching river (+ diffing stashes) and cool shit like prometheus stats + grafana for it. Also made UI that renders items as in game. Next thing is to bring into code multiple ideas and see which one gives more accurate price prediction. Hopefully project/site will be ready by the end of summer. I think it will be more useful than adding "mercury trade"-like module to Awakend trade ๐
Prototype of Live page with recently sold items
thank god, then i can save my keystrokes
i might do something just for fun once i'm done with league
i just feel like poe2 is "around the corner" and spending all this time on something that gut feeling says it'll be a "waste" is eh.. yeah
You've got years ๐
My guess is that it will come out H1 next year
Also waiting for WinUI 3 to hit stable (or at least useable), which should be with .NET 6 launch, which in turn is in like september-november this year
@civic crane would be down to chat about different ideas in the price prediction space if you're open to external opinions on it.
is the gui for pypoe not starting for anyone else?
Not sure if it's been functional since the tech patch.
lmao guess i'll just use command line then thanks
If you aren't, you probably want to run brather1ng's fork, that's more likely to be maintained now.
oh ill check that out
wait if i want to use the ggpk viewer do i have to download the standalone version
because the steam version doesnt use content.ggpk
Both Standalone and Steam uses bundles, but Steam has them as loose files in a directory tree while Standalone has them in a GGPK file.
Not sure if PyPoE understands Steam's thing, but it should be "easier".
pypoe gui wants the content.ggpk specifically i think
If you just want file contents, my bun_extract_file can do bulk extraction.
But yeah, that sounds familiar.
im just looking for a way to get a list of all unique maps with their map name
and i am tempted to manually copy paste from poedb at this point
does poedb have an api or am i gonna have to write a scraper
Negative.
alright scraper it is
If all you want is the list of unique maps, pypoe_exporter dat json --files=UniqueMaps UniqueMaps.json
(after installing the cli)
There's keys into ItemVisualIdentity and WorldAreas for more junk, but the fields in UniqueMaps may suffice.
(for WorldAreas the spec is not up to date)
where do i actually point it to the unique maps data file?
It yoinks it from the game it finds automagically.
Not sure if you can tell it otherwise ๐
WorldAreas.json ditto: https://gist.github.com/zao/6b99dbb98b21177a2012d8456ae72f93
The WorldAreas are either the underlying base map or the dedicated unique map base, depending on if it has one or not.
oh wait i forgot to install the ooz thing
I've got both types of game installed so no idea what it tried to extract from, probably GGPK.
ah rip that gives the worldarea as a key, but the worldareas json doesnt seem to have entries for maps?
(technically three kinds, got EGS too ^_^)
yknow what poedb scraping isnt that bad
maybe i should move it all to poedb scraping lmao
if all you are after is names, a list of all unique names can be found here
https://www.pathofexile.com/api/trade/data/items
pretty lightweight and up to date reference
oh that has name and basetype
that is actually all i need thank you
aw i actually need to authorize for that though
authorizing should be quick
ok if im reading the docs right i need to register my application and get a client id/secret in order to authorize?
anyone know if there's an api endpoint for mod names? there's https://www.pathofexile.com/api/trade/data/stats but that just has stat descriptions
is there a pantheon json?
any1 know what may be causing a path of building crash on startup? It seems to be really random. I was just using it and when i backed out of a build to go to build selection, it just closed. Now it won't start. It was happening before, and a reinstallation didn't really work. It just started working normally after a few starts
hรถhรถhรถ
it's fucking with my python because im using utf8
I guess the "รถ" is in Windows-1252?
You'll have to do
your_string.decode("cp1252")
then
problem i that im saving all the map names as a constant in a module, so it crashes when i try to import the module since the default encoding is utf8
Just decode them before you save them then
Depends on what you mean.
I just got 2 trade messages and I wondered why my app didn't caught them
and for some reason they are not visible in the log file
oh that would make sence
what about russian ?
the 2 missing messages are russian and korean
Might depend on the type of account they have, all I know is that Koreans for sure are excluded.
russians are hit and miss, at least some of them use Kakao
@frank driftthank you
Anybody have suggestions on how to get around CORS errors using poe.ninja API ?
Thanks
@fickle yew Seems like someone has managed to break the buy price for Ancient Orbs on ninja.
and a couple of small tools on the way that will make diagnosing performance issues more efficient.
This sounds interesting...
(from the 3.14.1d article just posted)
Yeah, I was curious if they meant internal tools or something for players.
Is there any documented GGG explanation of what is and is not Pay 2 Win ?
that would be the TOS
if you mean RMT
Perform in-game services during your use of the Website, Materials or Services for any form of compensation outside of PoE.
I think that covers it
how does one get the game data thats not part of the skilltree data.json? I vaguely remember GGG changing the unpacking thingy, but wanted to provide the data somewhere else, but am unable to find where
You may be remembering the story around Path of Building where there was a brief offer to provide specific files that were needed to fuel that tool.
That ran out into the sand and/or became redundant as proper tooling for file access was written.
ahh, good to know, where can I find the proper tooling for file access :D?
In short, most things you want is still in DAT files and stat description text files in the game archives, they're just stored differently in bundles after the September tech patch.
Are you looking to access content live in your code or are you happy by extracting to disk?
I'm partial of course, but https://github.com/zao/ooz/
https://zao.se/~zao/poe/bun-x64-Release-g462332b.zip
bun_extract_file list-files and bun_extract_file extract-files, supports file lists or regexes on command line or standard input.
What kind of assets are you looking at looking at?
it was mainly curiosity, because I was unable to find any official sources on the cluster jewel ordering
PoB implements the layout algorithm for that correctly btw.
yeah, but I wanted to know where they got their data
The order of the notables is in row ID order, from a DAT table (same order as on poedb).
The small passive and socket spacing is from empirical studies I believe.
its essentially just about PoC'ing some custom cluster jewel finder, so tree placement isnt needed
I mean, the algorithm and ordering inside a jewel cluster, not where they are in the big tree.
Note that in order to read the DAT files, you need a schema and tooling.
Given that its schema is up to date, you can use pypoe to convert a single DAT file to a JSON file.
If you want the easy way, you could yoink the PoB Lua tables ๐
i'll see how far the ggpk wiki page will bring me with your input from earlier :D
yup, I found them, but it doesnt feel right to me xD
Why?
I've used https://github.com/PathOfBuildingCommunity/PathOfBuilding/blob/master/src/Data/ClusterJewels.lua before to find cluster, although by hand, and it was right
curiosity and challenge, I'm a dev and like the idea of not having an additional layer of dependency
if my life depended on it I would take the given data, but I'm doing this for fun and getting the data myself seems more fun to me
Oh, sorry, missunderstood. Thought the data felt not right to you, but getting the data this way doesn't feel right to you
https://github.com/PathOfBuildingCommunity/PathOfBuilding/blob/master/src/Export/Scripts/cluster.lua is the script that generates said table, so you can tell which tables are needed.
https://zao.github.io/poe-doc/dat.html - high-level description of the layout of DAT files.
https://github.com/brather1ng/PyPoE/blob/dev/PyPoE/poe/file/specification/data/stable.py PyPoE's schema (brather1ng's fork).
noice, the cluster jewel ordering is seemingly also in the dat files :D
my PoB i still crashing, i am completely unable to use it and Awakened PoE Trade also began crashing for whatever reason
i have absolutely no idea what could be causing this, but since PoB caused a Display Driver crash at some point, i reverted to old drivers
did nothing, was hoping anyone could point me anywhere in the right direction to either report this issue or gain some assistance towards it
since it feels pretty damn bad to not be able to play half the game.
You can file issues on the GitHub repo for PoB, thatโs the primary interface.
Any other way? doubt dropping another droplet into an ocean does anything, especially when i fully believe my issue is unique
As for crashes, ensure youโre not running old AMD GPUs in compute mode, try the brand new 2021.5.2 drivers and if you feel brave, try my version of SimpleGraphic.
Well, itโs where we track issues. ๐
jesus i'll be so embarrassed if that's the issue
โuniqueโ 
What have you done with the SimpleGraphics?
u make me curious
Swapped out the windowing and GL context creation with GLFW and ported it to Linux/macOS as an experiment.
i just couldn't find anything equal for the life of me
i looked through so many pages of the github and googled past 4 PAGES!!
do you know how desperate i gotta be to go past the first page, even more the 3rd
you fixed my issue though, thank you so much
can't believe i forgot to put my gpu back on graphics T_T
@simple ravine thereโs some persistent issues that people run into that may be alleviated if weโre a bit less custom and get the engine a bit of an audit.
Still getting a feel for some of the systems, just found out how threaded subscripts synchronize just this week as I was lifting some slow Lua into C++.
Long-term stuff I want to feel out is DPI scaling, more Unicode:y text handling, that kind of groundwork.
how tightly coupled is the "business logic" to the UI in PoB?
Well, it can run headless so โnot super muchโ.
I donโt touch the Lua much, itโs all soup to me.
Ragging on one-indexing is so silly, there's so much else that is more fun to mock ๐
For starters, using narrow filesystem APIs on Windows, locking you into silly ACPs unless you're running the rather new UTF-8 opt-in manifests.
it's just so frustrating to get stuck on silly things like that
it's my bad, I don't do lua usually so I need to learn
but still
@timid hemlock PoB shows that 3 stacks of Rupture is a 75% bleed damage multiplier. Is this right? The description of Rupture would seem to indicate that each stack is a 25% more multiplier, so wouldn't it be a 95.3% multiplier with 3 stacks?
things that are the same modifier add before they multiply, same way that 5% chaos multi on the tree is additive with other chaos multi on the weapon etc
same way that 5% chaos multi on the tree is additive with other chaos multi on the weapon
The actual stat you're referring to is "increased chaos damage over time multiplier". The reason it is additive is because it's increased not more.
also, openarl hasn't updated his PoB in a couple of patches so he's not even the right person to ask about PoB anymore
that's not how that works lol
you don't get increased chaos dot multi, you get +x% dot multi. it's additive because you only ever get added dot multi
the 'increase' in that sentence is not a keyword it's a description that states it's purpose
Yes, you're right, but the point still stands: The stat itself is not a more multiplier. The stat is additive with itself.
in that specific case it would depend on how these stacks are applied, if they are tracked as separate entities then they would multiply in affect but if they are tracked as a single debuff they would be additive between themselves
Here's a counter example to what you're saying: The 30% more spell damage from Pain Attunement is not additive with the X% more spell damage from Controlled Destruction.
those are differnt sources
they are not the same modifier
look at seismic cry for a better example of why rupture is 75% not 95%
the wording on rupture isn't exactly the same as other stats like it in the game, but there's no reason to think it works differently than stats like "4% more attack damage per frenzy charge". if you have 7 frenzy charges that stat would give you 28% more attack damage. rupture is the same thing where each stack gives 25% more bleed damage taken and 3 stacks gives 75% more bleed damage taken
or even just somthing like frenzy charges
I see what you're saying, but in that case it says "per whatever"
there's no reason to think that this ONE thing works differently imo
the wording on rupture isn't exactly the same as other stats like it in the game, but there's no reason to think it works differently than stats like "4% more attack damage per frenzy charge".
So it could just be poor wording on GGG's part?
you can test it in pvp, if you see 3 debuffs on yourself saying rupture then they would be multiplicative between themselves, but if it's one debuff then it would be additive
they had to word it a little differently for rupture because rupture is a debuff, most debuffs in the game don't stack
and I think even the debuffs that do stack all say increased/reduced
Good points, fellas. Thanks.
Windows is getting an official package manager: https://devblogs.microsoft.com/commandline/windows-package-manager-1-0/
https://blogs.oracle.com/cloud-infrastructure/arm-based-cloud-computing-is-the-next-big-thing-introducing-arm-on-oci pretty generous free tier too if anyone fancies that
To start you can access the industryโs most generous free tier offering with 4 cores and 24 GB of RAM of Ampere A1 Compute as part of our Always Free tier. Just sign up here, and youโll get this along with more than 20 great Always Free services like 200 GB of block storage, 2 Autonomous Databases, and more.
Gut reaction - nothing that involves Oracle can be without a catch ๐
gut reaction, how are they not going to be slammed by crypto mining scammers
guessing credit card required
Hey so far my GCS instance was free besides one month where I had to pay a cent for China traffic

They still try to sell me a better instance although it mostly idles
Oracle is too little, too late
we just had to buy new licenses for a legacy application because moving it to cloud
they wanted โฌ420,000 for 2 servers
2x doesn't sound right
Oracle is the poop
Did anyone notice the change in MonsterVarieties.dat since 3.14.2 patch? -- When using existing dat definitions, it breaks when parsing Endgame_ModsKeys (a ref|list|ulong field type)
Ooh, surprise changes?
Yeah, seems like some surprise change. I didn't bother looking into it, because (luckily) I only need the fields up and until "Name" for my own parsing, so I simply disregarded any fields after that in order to get my parser to stop throwing errors about them ๐
where can i find all gem images
? or at least a source/json that has gem and cdn naming consistency
RePoE and PoB has mappings from gems to their internal ID. You could probably look up the ItemVisualIdentity given that, and use that to construct a CDN path like https://web.poecdn.com/image/Art/2DItems/Gems/VaalGems/VaalColdSnap.png
I forget which table in particular holds the mapping to 2D Art.
im so confusion
for example earthshatter has https://web.poecdn.com/image/Art/2DItems/Gems/SpikeSlamGem.png?w=1&h=1&scale=1 - SpikeSlamGem while the mapped id is Metadata/Items/Gems/SkillGemEarthshatter
while majority of other gems are following thorugh prefix of SupportGem or SkillGemVaal
or static strike that is StaticGem on cdn and has static_strike_new in metadata; my brain is absolutely melting
or Steelskin
QuickGuardGem
are there any docs about what refers to what? 
๐ค seems like i have some potato json then
is that source available perhaps? as i took a look at RePoE gems json and there is no visual_identity ๐ค
base items
got it, cheers
Can anyone who's not playing in English give me a hand on some client.txt logs to complete the list of "left area" in other languages?
"joinedArea": {
"English": ": (?<player>.*?) has joined the area",
"Portuguese": ": (?<player>.*?) entrou na รกrea",
"Russian": ": (?<player>.*?) ะฟัะธัะพะตะดะธะฝะธะปัั",
"Thai": ": (?<player>.*?) เนเธเนเธฒเธชเธนเนเธเธทเนเธเธเธตเน",
"German": ": (?<player>.*?) hat das Gebiet betreten",
"French": ": (?<player>.*?) a rejoint la zone",
"Spanish": ": (?<player>.*?) se uniรณ al รกrea",
"Korean": ": (?<player>.*?) ๋์ด ์ง์ญ์ ๋ค์ด์์ต๋๋ค"
},
"leftArea": {
"English": ": (?<player>.*?) has left the area"
},
isn't this info in ClientStrings
it isn't, actually
Not that I'm aware of O.o ... just checked, joined party etc, yeah, but not the log message
Don't see it in any of the data files
WAIT NO
It's in BackendErrors
{
"_key": 116,
"Id": "PlayerDisconnected",
"Text": "{0} has left the area."
}
{
"_key": 117,
"Id": "PlayerJoined",
"Text": "{0} has joined the area."
}
{
"_key": 118,
"Id": "EnteredArea",
"Text": "You have entered {0}."
}
xD great place to put it ... lol :p
Thx for the into though ๐ I'll figure the rest out on my own. Now I know where to look ๐
Does anyone have any experience with appveyor & electron?
I just found out that DepotDownloader has support for incremental updates these days. I've burned so much bandwidth ๐
tip: don't hash stash id using only 32bit, you will find collision every ~70'000 stash ๐
Please don't post discord invites
tip #2: user can ask support to change accountName (stashes keep ids, items in them too) https://imgur.com/ifwomKA
Not sure how these are determined anymore, but the vendor rewards for marauder no longer include Lancing Steel for Sever the Right Hand. @velvet fog
the vendor rewards no longer in game file and hard to maintain
Yeah, wasn't sure if you were still trying to keep it up to date anyway
thanks anyway, nope, just give up. ggg don't want us to know that.
how do you activate this, btw ๐
do you just download the new manifest into a -dir that already has files, orโฆ?
I invoke it relatively straight-forwardly with a directory and as long as the .DepotDownloader in there is intact, it only downloads changes.
"${DD_APP}" -app "$app" -depot "$depot" -manifest "$1" \
-username BobbyTables -os windows -osarch 64 -remember-password \
-dir "downloading/incr"
There's some option you can pass to have it also validate the contents of the existing files, by default it trusts the metadata it has written before.
aha, perfect
The feature that I believe that they don't support yet is applying patches for transforming files, I think it always does a full download per-file and as such, not quite as useful for the pre-tech big Content.ggpk.
There's been talk in issues about doing so, but I think it was pending some support in the underlying steamkit library.
Oh. Bother.
where do you get the map icons of the league? I thought about using the pathofexile.com/image/Art/2DItems/Maps/Atlas2Maps/New/MapName.png
but it doesn't have different tiers so all maps look white
it also doesn't have all maps apparently or perhaps they have a different name
https://poedb.tw/us/Temple_Map
map use symbol icon and background icon (mn=), map tier(mt=) for color
@velvet fog got it. thanks for the help.
Hi, I seek dev for big problem account
Not quite sure what you're asking about, @dull lintel. If it's related to some problem you have in-game, contact support or tech support.
That's still a game-related problem, not about developing tools, which this channel is about.
The support email are the people who help with that, they're very good and fast.
How do you actually obtain a map's art name, based on its base item type? nvm, found it, ItemVisualIdentity contains this info.
Within 49 minutes, 95% of our network was operating as normal.
that doesn't sound right
yeah def some creative truths there
our developers was unable to conduct work for far longer than that due to StackOverflow being down 
jokes aside, people were screaming for longer than that tho
I had hoped for an actual technical post mortem
I'm curious who the customer was, and what the configuration circumstance was
hopefully postmortem later
maybe they meant 95% of all customers, just so happens the 5% included the biggest ones
Since GGG's OAuth can't be used without a central server (which is quite unfortunate), I'm wondering how much creativity is allowed in regards of obtaining access to semi-private account info (such as a list current leagues, which I assume would include private leagues if the player is signed-in) by opening the poe website in a local browser window, let players authenticate, then obtain the poe session id (since it's a local browser, within the Electron scope, it should be accessible I assume)?
๐ค Apparently there is no public API to get a list of leagues that include the private leagues (given you provide a cookie with a session ID)
Guys can anyone help me with fps drops? I noticed that when i talk , see an npc i sometimes get fps spikes exactly to 5 fps and after that it goes up to my cap
Is there any fix for this? Its not 100% consistent but it happens and i go crazy
@pseudo ocean Contact the techsupport email or post on the forums, this channel is for tool development.
how i can get my stash tab information ? I've looked at api, but i'm probably bad at creating requests because i get 403 error
Make sure you provide a session ID cookie (or use OAuth), make sure you set an user-agent that identifies {the tool name, tool version, and you} - so that misbehaving tools can be reached.
If those are satisfied, access to the endpoints as described in the developer documentation is likely to work.
I provided my session ID, maybe i'm using wrong url.
I found https://www.pathofexile.com/character-window/get-stash-items , i just needed to google a bit more lol
You probably want https://www.pathofexile.com/developer/docs/reference#stashes
The backend that the website's character window uses is not supposed to be scripted against, there's an explicit API.
this one doesn't work, atleast i can't create proper url for getting stash
https://api.pathofexile.com/stash/Ultimatum this link doesn't work, correct this link if i'm wrong please
I guess that those endpoints may require OAuth? I don't really do much web stuff.
Might be worth looking at how Procurement (old) and Exilence Next (new) accesses stashes and if the former still works.
i tried checking how Exilence Next accesses stashes, but i didn't found. So many files...
i found how Exilence Next accesses stash tabs, it uses character-window/get-stash-items
oauth need to send request to oauth team and take some time
/character-window/get-stash-items seems still workable
There are no anchor tags in the new documentation, correct? Canโt find them. Maybe useful for better linking.
Ah, only if you use the nav on the left, I am stupid. Maybe useful to add a hashtag (or something similar) behind the titles like in other docs.
In item filters when is the = operator applicable?
optional afaik, clarity vs human readability debate I suppose
I don't think NeverSink ever uses it
does save file size omitting it also I suppose
Oh right, when omitting it.. Dunno what I was reading but yea I can accept that argument. Thanks
= is used all the time yeah, just implicitly rather than explicitly by most authors
Does it mean that following example would be correct, Rarity equal Unique ?
no, I was referring to = sorry
so Rarity Unique is valid, implicit equal, or Rarity = Unique, explicit
NeverSink does implicit
Understood that but in isolation, replacing the = condition with the equal and it should work still?
only = or nothing
Hmm.. Okey
Well it went throo the game parser so I would assume it's legal syntax
Where's the ISO standard
lulw
same place as all the other GGG formats ๐
parsing advanced mods text, exactly what I wanted 
https://www.reddit.com/r/pathofexile/comments/o2yzsl/clienttxt_changes_and_bugs/
Found this post if somebody is interested, mayhaps this change to logs is a experimental feature and might not have been intended to be found ^^ pretty cool non the less
Should also explain, it's a death log so the last hit that killed the player is logged
Neato. Reminds me of the time where they accidentally printed a bunch of debug distance computations to the chat window ๐
From the people in the thread it seems that not all deaths are logged, guessing it's something they are working on or just a test, as it's a very popular requested feature ^^
or its becouse china realm, who knows
considering its basically what they had over a year ago
From what I understand the China system is most likely incomplete and this tries to also show the exact attack or effect that killed you which is not always tied to a enemy. For example the log states if the enemy is destroyed etc which I guess would prevent the Chinese system from giving a accurate kill message. So this is most likely not the same but a improved system.
death log in poe is useful only as a breakdown of received damage by type over N last seconds before death. And as a bonus show source (mob type) who contributed max damage for each type of damage. Ahh and also pls show me how good my defence layers were working... basically just show me fullscreen spreadsheet ๐
yeah
League of Legends did a pretty good job with their death recap rework, something like that
I had someone on reddit argue to me that a death log in PoE would be literally impossible to implement... not difficult, but impossible
that's why I don't post on reddit much
@civic crane Yeah even if they added a recap a video of the death tells so much more, so have shadowplay or relive active in your GPU drivers
A full log would probably be a performance concern. The game already struggles in situations involving a lot of damage instances; having to keep records for all of those would add to the problem
It wouldn't be impossible, but it would likely push some builds from "a little laggy" into "server crashing"
Fond memories of auras and minions in which league was it, Blight?
Maintaining a coherent history without performance impact was one of the big things about League's tracker where they erred on the side of performance.
And the number of damage events that can occur in a busy PoE instance is dramatically higher. I wouldn't be surprised at all if busy instances routinely reached thousands of distinct damage events per second
How do you then present it in a meaningful way? Scrollable replays from the server's perspective, with inspection of monsters around you and a tally of things done?
Of course, most of this has been summarised already in posts, hasn't it?
Upside of things, you're already dead so as long as it doesn't impact the five other peeps in the instance it's probably "fine".
I thought it would be pretty obvious that the logs are primarily for us to use :p
If there is even a small benefit players will see a way to use it 
Have a link handy to that Among Us post? I love reading stuff like that
Random question, is there a name for the algorithm used in quality vendor recipes ("given a bunch of numbers from 1-19, make as many sets as possible that add up to at least 40")?
It just adds up the quality in the order they're added to the window. If you put the items in the window in a different order, you can get different results.
If you want the most efficient result, you need to sort the items manually.
I'm guessing the question is "is there an named algorithm to maximize the number of partitions of values that each sum up to N"
Kind of like "knapsack problem" and "bin packing".
Way easier to implement if there's a known algorithm for it, instead of rediscovering that you're doing something NP-complete again.
Yeah, I'd be interested if there's a way to do it that's better than brute force.
I mean a greedy should come very close
becouse you have a nice condition of "that add up to at least 40"
meaning its not one big problem its many smaller ones
Smort people suggested https://en.wikipedia.org/wiki/Bin_covering_problem to me.
In the bin covering problem, items of different sizes must be packed into a finite number of bins or containers, each of which must contain at least a certain given total size, in a way that maximizes the number of bins used.
This problem is a dual of the bin packing problem: in bin covering, the bin sizes are bounded from below and the goal is...
Oof really? I assumed it'd optimize somehow... oh well
...aaaand it's NP-hard lol
Upside of PoE amounts of items is that the number of items is reasonably friendly at least and there's only 19 distinct sizes.
for most things you wont find much 1-4 quality either
I'd hoped to set it as a problem for a local programming competition... ah well, the "add them up in order" version will do for an easy item I guess
Here's an implementation I found: https://github.com/KaurakitLeenip/PathOfExileGCPRecipeMaker
Procurement had an approximation algorithm back in the day too.
The code looks bad but it should work ๐
Ooh neat, thanks ๐ง
whats the way pob/poe website/poeplanner encode/decode everything to string for exporting/importing?
local xmlText = Inflate(common.base64.decode(buf:gsub("-","+"):gsub("_","/")))
XML, compressed with zlib deflate, base64-encoded with an alternate alphabet.
well this will be interesting to make it work in js, ty nonetheless
if you are using node js you can just inflate with zlib, but that link above gets you into a byte array to a string and back
@mortal bone add me to https://github.com/poe-tool-dev
I did the thing.
Nice :)
Is there an API that'll get me a list of gems and which class(es) it is available to? I'm only able to find the gem data with no association to which class(es) can get it
Quest and vendor rewards are explicitly removed from the game data files a few leagues ago, everything since then is manually curated.
Did GGG explain why that was the case?
Not that I know of, seems like an implementation detail which wasn't needed for the client anymore.
Oh well... Thanks for the help!
The best source to update and consult in the future is probably the wiki, if people start contributing on those manual sections.
You're suggesting to scrape the POE Fandom wiki in the future?
Not sure if they have any good cargo queries you can use API-wise, but it's likely to be the place with the least out-of-date information.
I forget what Chuan's stance on it is, but I don't think they care overly much about trying to maintain something unmineable like that on poedb.
I've seen a few cargo queries on the /poedev but I didn't see any that had gems associated with classes
I have a cargo query for all gems only 
I think the consensus really is to manually piece together the information
Who knows, maybe poke around in #wiki and see if someone has insight?
Not sure what the stance is on doing the occasional data pull.
You got it!
Chuan has said he's not interested in maintaining data manually yeah
so when it comes to exporting stuff to base64.. are there any common approaches on how the data should be stored before encoding? mainly curious about build skills (gem name + quality/levels) and gear
We are trying to remove data that the game client doesn't need, to prevent datamining by chris
Taking our (my ๐ ) wishes into account, I created a dedicated repository for storing schema https://github.com/poe-tool-dev/dat-schema. I hope that we can avoid https://xkcd.com/927/ and agree to use this schema as a single source of truth.
If your tool needs additional metadata that schema doesn't currently support, it can be added. For example PyPoE has 9 dat files that use "virtual" fields, if we agree that this info will be useful for everyone it can be added as following
type BaseItemTypes {
RarePurchase_Items: [BaseItemTypes]
RarePurchase_Costs: [i32]
RarePurchase: kv @virtual(
keys: "RarePurchase_Items",
values: "RarePurchase_Costs")
}
I've already switched my CLI and Web dat viewer (https://snosme.github.io/poe-dat-viewer) to use this schema.
Also defined column names for Ultimatum tables if anyone hasn't been able to figure them out yet ๐ https://github.com/poe-tool-dev/dat-schema/blob/main/dat-schema/3_14_Ultimatum.gql
Is there a public json file for all divination card data? Here is an example of what I mean:
{
"id":1, "name":"The Astromancer", "art":"https://web.poecdn.com/image/divination-card/TheAstromancer.png",
"stack":7,
"reward": [["c-unique", "The Eternity Shroud"], ["c-corrupted", "Two-Implicit"], ["c-corrupted", "Corrupted"]],
"flavour": "They would say that he was a dangerous man,\nunbound by the sense of morality,\nbut what does this matter, when his love for humanity is undeniable and completion of his work would benefit everyone?"
}
and then a giant list of all divination cards. Of course the data doesnt have to be in this order or style, just that this data is there.
thank you, I can parse this into what I want easily, thanks!
Only missing the art and flavor text but ill manage.
@jade hawk flavour text is in https://github.com/brather1ng/RePoE/blob/master/RePoE/data/flavour.json
Notable excerpt:
We have removed the 32-bit Path of Exile client. Basically no one is running 32-bit versions of Windows anymore.
I wonder if they will take the opportunity to obliterate the 32-bit DATs doing so.
eventually no doubt
are there any rate limits known for the forums?
I was tcpdumping the client today because i wanted to get to the bottom of hte lag spikes I see when my screen goes from nothign happening to a few things happening - then it slowly comes back to normal even as more pile onto the screen. It feels like a network issue since it isn't correlating to much else).
I found out the traffic is encrypted for some godaweful reason. Why?
The performance and latency hit that must create would be quite suffocating. I'm dumbfounded. My game traffic is probably the last on my list of traffic to encrypt.
Oh, and the protocol between the cliend and server is really fucking weird.
why are there back to back emty serer sends within 70ms of each (consitent through the connection)
waaaaay too many small packets - very poor packetization in general it seesm.
I write quite a bit of high performance network code for trading institutions and so some of this seems a little off to me. Has anybody tried to figure some of this out before?
if you just want to rant, try reddit
bite me
Please note that it's extremely against the ToU to touch the client or its traffic.
i didn't touch the client or its trffic
and i'll read whatever i want to off the stream
Heartbeats are not uncommon and there's always a tradeoff in realtime applications between packet overhead and responsivity.
You're fucking with the traffic. Don't.
70 ms heartbeats are waaaay too fast esp for over the inet.
even colocation in a trading system we might do 2 sec

Misunderstand me right, will you?
In any way unless you have a whole lot of time, the protocol is supposedly extremely opaque and not self-descriptive in any way, as any dense command stream is.
Not much difference between encrypted and unencrypted observations of "yep, there's data here".
its encrypted is the first problem that would have to be solved
it's encrypted to discourage snooping
the more i think about that the more i think that is just a horribl idea
that fucking lame
if it was unencrypted it would be a joke to write things like bots, as you would no longer even need the client once you figure out how to mimic it
or it could reveal info that the player isnt supposed to know but the client needs
the same way that game files are missing from the client, that needs to be sent often, things which are definitely not network efficient but prevent data mining
I doubt that the encryption of network traffic causes any significant performance issues
You may observe rather different traffic patterns between lockstep and predictive too, for obvious reasons.
or exploit development, yeah
I may or may not know a game or two where you can do things like duplicate items just by dropping a packet or two
Hmm, isn't it standard practice for always-online games to encrypt packets?
competent ones yeah
Cheap enough for the amount of data, helps combat routers and ISPs trying to do naughty things to traffic, and it forces any fiddlers to read process memory to get session keys, which is a good time to boop some snoots.
@velvet fog Patch notes for 3.14.3 up, assuming you'll find out any moment now ๐
EXE not mentioned in binaries manifest in this patch.
Data index still has .dat files.
I believe there's a command line flag to reenable local fetch, alternatively I think there are some headers/access-control-allow-origin handshakes you can enable to make it work
We have removed the 32-bit Path of Exile client.
What did they removed for 32 bit?
Ah! Both PathOfExile_x64Steam.exe and PathOfExileSteam.exe are 64-bit exes.
So the EXE is gone, but the bundle index still has the 32-bit DATs.
got it, thanks
is there any type of changelogs anywhere? revisiting a super small project i was working on which broke because winged scarabs are now properly identified as such. took me a while to find, they used to be labelled as jewelled for whatever reason
Each league tends to have a thread with the relevant changes to things like item names, I forget if they're linked from the wiki somewhere.
As for fixes like that, not really sure.
nevermind i lied, only the new ones added this league use winged, others still use jewelled
sorry for the slightly unrelated question, but i was wondering if anyone here knows a way to display poe item info on my website? im not the most technical person so i'm not sure i could figure out the api or whether its even possible to see item info with api, but any advice on direction would be highly appreciated
what kind of "poe item info"? you could look at RePoE for json of base types and that kind of thing, if that's what you want
@lyric flame Might be interested in this https://meta-is-beta.com/?p=40
do we have a resource for old skill tree json files somewhere?
that was fast, thanks ๐
Built up a new VM server this weekend with an HDD array of 6x 3TB. Elected to go for a RAID-0 death stripe and see if I could rehydrate all the GGPKs and bundles. Progress thus far at 614/712 manifests:
NAME USED AVAIL REFER MOUNTPOINT
yolo/full-packs 7.83T 7.97T 7.83T /yolo/full-packs
Upper bound estimate for size last year was something like 14 TiB for a full reconstitution, probably gonna land somewhere around 10T.
Could anyone perhaps upload an updated version of this?
there is old gist how to do it https://gist.github.com/AnSq/4d4f2ce63469f47bf76d0932406d3143 (pre bundles era ๐ )
i would hate to ask for spoonfeeding but my knowledge in anything that is even in there is literally that of a toddler :/
You would use some modern tool (like bun or one of the other pack viewers) to extract the DDS textures and the sprite atlas TXT files; and then run something like those scripts to slice out the individual art from the sheets.
Implication is that you have an extracted PoE tree on disk, a bash shell, ImageMagick (convert, mogrify), xxd hex editor, Python with the PIL package.
Python 2 to be exact
I forget if there's texture symlinks these days and if tools handle them.
ehm hex edit? Guess i'll give it up then since i have no way of knowing on how to even properly do it unfortunately
It's straightforward enough; you need some prerequisites installed and an unpacked game tree.
Got a bit too much on my plate to walk you through how to do all those things.
That's alright but thanks
@compact isle what defines order of stats in dropdown on trade. Number of items that have this stat in descending order (across all leagues)?
this but it trickles the updates
Pointless trivia of the day: all non-bundle GGPKs since launch sum up to 8.12 TiB on disk.
You could do some statistics now: number of files over time, files that changed the most often, DAT files that were removed (๐), etc.
Yeah, pondering what to do now, this was a bit of a sidetracking to get an older version set up which I could use to toy around with the viewer, as the DAT spec has run away from me since I last touched it.
damn, I need to update the poe json repo.... done
Hi all,
Does anyone know if there is a python (other langues could work) library for pulling XP ladder info from private leagues/regular leagues?
Dreaming of writing a discord bot that my guild needs
Also if anyone has experience writing discord bots and would be willing to answer a question or two I would really love that :)
Blissfully unaware of the former, and only bumbling around with the Rust Discord bot libraries for the latter, but hi! 
maybe ask the guy that develops poe-racing.com for tips, never messed with the ladder
There's pretty good documentation iirc, just looking around in case there's a plug n play library :)
To answer my own question, here are two libraries that provide wrappers for PoE API calls
https://github.com/willroberts/poeapi
https://github.com/klayveR/poe-api-wrappers
pins also has a swagger spec: https://poedb.tw/poe-api ๐
any database design geniuses here? I might have a question
I'm the opposite of a genius on that front.
It is easier to ask the question than to ask to ask the question ๐
yeah but then you might get bad answers
is it better to have a bad answer than no answer, that is the real question
someone giving a wrong answer on the internet is often the quickest way to get the right answer, people can't resist correcting mistakes online
That sounds wrong ๐
Hey. I wanna join voice. I dont know how to.
Can any1 help me?
I can just see i cant join.
Dont know why.
Just says i cant join
This channel is about tool development, not Discord help. Read the information in the rules channel. There are explicit rules about being able to join voice.
poeapp - wherever u are... miss ya bro! lol
I wonder how much fun Novynn is having with implementing meaningful trade filters for the upcoming ||Logbooks||.
Similar to Blueprints/Heists I guess?
Anyone tried out Menagerie?
I saw a tool on reddit like a week ago, but can't find it, anyone knows what was it?
describe it?
๐ hilarious
If it's bad, I didn't create it. If it's good, I'll take the glory.
I'm toying with the old fun project of jamming all the data files into a single database.
Turns out that it's harder than it looks to work with a real database system.
I've gotten so many amazing errors from Postgres with my (ab)use.
NAME USED AVAIL REFER MOUNTPOINT
yolo 9.61T 6.20T 25K /yolo
yolo/full-bundles 1.42T 6.20T 1.42T /yolo/full-bundles
yolo/full-packs 8.12T 6.20T 8.12T /yolo/full-packs
yolo/poe-db 70.9G 6.20T 70.9G /yolo/poe-db
Plenty of space to experiment tho.
toying with your work environment, or u got that amount of disk space at home?
that's some space if so ๐
At home, glued six 3TB disks together into a RAID-0 when upgrading my VM machine.
Thus the pool name.
oh I read it wrong, haha.. I read 70T first
what kind of errors have u observed?
filesystem/raid-0 related or?
I actually have 21 more of those disks in a box here, so I could actually build a 70T array if I had enough power and controllers ๐
haha, investing in Chia?
No filesystem problems observed yet, just incompetence at working with postgres and libraries.
Leaking temporary tables in a connection, constraint violations propagating as errors, stuff like that.
Heck no, got some decommissioned disks from work as we upgraded our cluster storage.
Plan right now is to extract all files from bundles, put them in a postgres table indexed by content hash, and associate (manifest,filename,hash) with them to have a central DB of all files.
Glue on a web snout or some other network accessibility and have it power whatever tools I want to make on my desktop.
As I'm not distributing any of my tooling anymore for reasons, might as well tie it to my home infrastructure for some fun experiments.
are you still doing the de-duplication and version chain stuff?
The primary purpose of building this disk array was to see how much space all the data files would be if reconstructing everything in full instead of the delta compression.
As shown in the list above, all the GGPKs up until the tech patch were 8.12T, I had a conservative upper limit estimated of 14T.
The plan onward is to crack each version's pack/bundles into individual files and ingest them into the deduplication database.
With that I can support some fun stuff in tools, like time-travel for individual files.
very useful for some .dat analysis perhaps
I see the most value for figuring out formats over time, but also DAT changes over time.
Indeed.
Building the infra now so that I have it when tools could use it.
I'm debating with myself if I should continue working on my library or not
I had a pretty long period of time where I did not feel like writing a single line of code
but I am getting the itch again
however the library has limited usage, and not sure how exciting it is
parsing files has a limited excitement factor, if I put it that way
Dev sure feels different now that I don't have any end-user/end-dev facing tools to do.
Did you retract those tools due to rule compliance, or other reasons?
Got a lurking long-term goal of getting the now-defunct hideout editor adapted into a viewer with VR support.
The rule compliance thing, if I can't ship to users anyway, I might as well build something more selfish.
Taunting people with screenshots and videos ๐
hehe
my end-goal was to have a companion tool that was self-reliant (no external depedencies on PyPoE etc), hence why I started in that end to parse ggpk
now that it seems like they might not take kindly on that, im not sure
GUI development is kind of in a weird state right now, where you don't really want to invest a lot of effort into the current tooling, as new ones are coming, but it's not there yet
and it has been in a "it's coming soon" state for a frustrating long time
MS is always eternally cycling UI tech ๐
yeah, and there aren't any "very nice" other tooling out there either
and don't try to convince me on those hybrids, they're not gonna fly with me
and then I debate with myself... "PoE 2 comes out soon โข๏ธ, how much time do I want to invest in something that is likely going to be pretty much dead in the water when it comes out?"
Any decade now.
Guess it depends a bit on what kind of companion you were aiming for as well.
every item, skill etc will likely look quite different in poe2
Some things will remain relevant, not sure how much will be obsolete.
"omni search" and "trade" in one
My eternal niggle in the back of my head is the problem of ever-changing data and format specs. A tool that uses game files directly needs to degrade gracefully when the formats rightfully change, either by caching or bundling pre-extracted data, and by then there's not much point in direct access anymore.
i see your point indeed
I made this in 2019
i still haven't given up hope though
Just asking. Any tool that can extract .dds from the ggpk without knowing much on programming. I guess the hotlink from POE CDN as .png are gone or relocated
My bun_extract_file can list and extract any file from the bundles of a Steam or modern GGPK) installation.
Unfortunatly my TLS cert has expired atm, but let's see...
@round hazel https://www.acc.umu.se/~zao/poe/bun-x64-Release-g462332b.zip (built from https://github.com/zao/ooz/).
Takes list of paths either on command line or stdin.
bun_extract_file list-files GGPK_OR_STEAM_DIR
bun_extract_file list-ggpk-files GGPK_OR_STEAM_DIR
bun_extract_file extract-files [--regex] GGPK_OR_STEAM_DIR OUTPUT_DIR [FILE_PATHS...]
For the UI sprite sheets you need to read Art/UIImages1.txt and slice out the parts of the texture atlases for the icon/element you seek.
thanks
Just realized that you can read UIImages1.txt and download from web.poecdn.com/image/(path inside txt).png, it's much slower tho, and you may hit cloudlfare captcha ๐ฉ
Ggg removed many images from cdn
so the public stash tab api - does one just have to go through the entire thing for the first time (including null league statshes apparently) before you get to the recent results, or am i doing something wrong?
Yep, you pick a point in history before which you don't care and then suck on the firehose.
cool, is there a way to determine when to start? i thought the pagination id is completely random (is there a list of "recent" ids one can start from?)
People tend to write down the start of leagues occasionally.
Note that the river contents is not a 1:1 record of how stashes have changed over time, if you're working on historical IDs, it's quite likely that they're empty, being obsoleted by a more recent contents that the API producer knows about.
yeah i don't really care about the past, i'm tinkering with stuff that would want to listen to ongoing things in the future
If you can't be arsed to invoke curl, you have the current next ID at https://poe.ninja/stats
eh, i have a go script looking at the data, i just grabbed the last api id from somewhere on poe.ninja and will take that
not fussed about accuracy yet, will start with the new league
A tip if you're writing pipelined code to rapidly fetch data, it's common to take the first bunch of bytes of the response and extract the next ID from that, deferring the full response to some other piece of code.
Otherwise it can be hard to keep up.
It's not that bad, but it tends to help if you end up backlogged or when services are slow due to load.
I don't have good measurements, back when I was trying to catch up with some test code, it fed me 5 MiB/s.
will have to see if my rpi chokes on it then ๐
I initially did what zao mentioned as well when toying with it, and it's a solid recommendation. For me though, ttfb was the bottleneck, not transfer even at 5MB chunks
And I transferred it all the way to Sweden
is there an easy way to look up internal unique item names to generate links to the cdn? tried cargo queries with the wiki but metadata_id doesnt seem to work
oh man... I'm still stuck on the variable implicit mods and the best way to allow searching for them ๐ญ
^_^
so if anyone has any good ideas I'm all ears ๐ or... er... eyes
So for logbooks you've got a set of rolled locations, each with some faction and a bunch of implicit mods; as well as the usual explicit mods?
Kind of tricky, as I assume that if you're looking for juicy locations, you don't want to mix mods between different choices in your results.
yep exactly. The best solution I have thusfar is adding a new stat group (like if, count, weighted sum) specifically to match an single area out of the multiple each item can have
They don't explain the logbook very much, so we don't know.
but you can assume the Karui Wargraves like a room in The Temple of Atzoatl with modifiers
2-3 implicits, each implicit have location name, major monster type (4 types), 1-3 random modifiers
in video and web site havd 2 or 3 implicits
monster types in logbook https://pathofexile.com/image/gen/expedition.png
seems only 4 types, for 4 bosses
video said boss will be displayed on the logbook, no idea how it present
I'm trying to create an access token with the scope "service:pvp_matches", but it doesn't seem like the API accepts that scope as described in the docs.
query: &grant_type=client_credentials&scope=service:pvp_matches, response: {"error":"invalid_scope","error_description":"The scope requested is invalid for this request"}
You mean you just sped through everything to the last ID before you started actually consuming it?
Pretty much
When I did the tests, I personally saved about 50ms by taking the ID before consuming the content, which wasn't worth the added complexity in the code
but do your own tests
It's worth decoupling the ingest processing from obtaining and chaining new requests on the IDs.
Still gonna have to honor the rate limits, but it can help if your code is streamlined.
yeah ofc, i'm building the rate limiting interface now
it's ok to not have a registered app if i'm just consuming the trade api right?
@worthy cape how much did you shave off by consuming the first bytes to start the subsequent request sooner?
Don't recall, time-to-first-byte was horrible back then.
Always provide your contact details, tool name and version in User-Agent. That's about it.
yeah, I only shaved ~50ms or so, as in the transfer rate of the 5 MiB was quite fast
They really want to be able to get hold of you if it does naughty stuff.
yeah, i set that up, I just have no plans to set up a full app (yet)
I do that, of course, but adding complexity to retrieve the first few bytes was just not worth it. I use a pipeline approach where data retrieval is handed off to a processing pipeline
what languages do you use out of curiosity?
Varying constellations of C++, Rust, Python3.
Zensei is one of those filthy C# peeps ๐
@worthy cape is the Rust/C++ muscle-flexer ๐
heh
I don't do much around the APIs tho, my jam is data files and vis.
I'm trying to learn new languages, thus hobby projects ๐คท
tinkering with go atm, though i do want to try rust at some point
I loathe C#, too much bad xp with it and MS
oh btw, weren't they gonna add HTTP 2.0/QUIC support to that endpoint?
go is popular indeed, i think there are some library around for it as well (poe-related)
I feel you on learning, currently (ab)using PostgreSQL with async Rust.
https://github.com/oriath-net/pogo which I haven't worked on much lately, I really need to redo the file loading as some kind of stacked filesystem to properly support steam installs
ok out for dinner a while
this is my life
though currently doing this with Python + SQLAlchemy, so even more abuse ๐
mines not yet published... - working on it every now and then since 2018
oh did Rust finally get async?
async story has been brewing for a good while, language bits with Future, Pin and async/await landed like a year ago or so.
Runtimes like tokio have also released 1.0:s for that.
Pin as in pinnable memory?
It took quite a while to sort out the rather unique ownership and pinning semantics needed for async Rust, and the automatic implementation of coroutine state for futures.
or was it go that lacked async story completely?
Values in Rust can move around quite a bit, so there's a Pin trait that lets you have some guarantees about the permanence and address of something, kind of akin to .NET pinned memory yes.
i mix them together somtimes and which one's missing what
Early async in Rust is a bit before my time, but there was a lot of macros and a fair bit of manual implementation and composition of futures, with explicit carrying around of state.
It's in a good place atm.
Pinning is a bit expensive
Core difference is that in .NET pinning is about keeping heap-allocated objects in place so that GC doesn't jiggle them around.
In Rust it's more about ensuring the same for anything, regardless of allocation source, across entering and exiting the async machinery.
Mostly for when you pass things like buffers off to things like OS socket functions and IOCPs, etc.
Also handy for self-referential types or other stuff that needs to not move, plenty of guide-level text in https://doc.rust-lang.org/std/pin/index.html
Types that pin data to its location in memory.
Async in rust is in a really good place right now
Pin is one of the things that still confuse me though
complete opposite
Is it still keen on the goroutines and channel kind of thing?
Oh right go opted for channels
thats the main stuff for concurrency but the sync package also has mutexes, waitgroups etc
i think its solved very elegant
While .net originally opted for APM/TPM
But they did introduce channels and pipes a while ago as well
Agree with that
I really wanna learn Erlang/Elixir
Do it! I made some hobby projects last year using Phoenix, felt very natural and powerful
Nice. what I really like about it is the 'actor-esque' first class citizen
and the robustness that comes with the runtime
I heard that some of those design decisions they made are a bit of a trade-off in regards to performance though
yes! https://hexdocs.pm/elixir/GenServer.html is pretty cool
Ooh, from 3.14.3c notes:
You are now able to view your Guild Stash on the Path of Exile website.
๐ฎ
oh nice, that in conjunction with the stash transaction log can be nifty
oh it's migration atm
I guess I am not groing to tinker on my poe river thing
It's pushing about 1270 empty stashes per change id atm
They've heard the complaints about bloated river responses and this is what we get ๐
the public stash API is the way it is so that we don't have to store extra data on our end
and league ids are kind of flakey so we'd be relying on you being able to delete all your local stashes by league that might actually be the infamous <ERROR> league
it's annoying for us as well but we don't have a lot of good solutions without a total overhaul ๐
pls no abuse
Where on the website is that functionality supposed to be? Can't seem to see much in the guild section as an officer.
its in your character window as a tab
which isn't really the right place for it but we've been sitting on the feature for way too long
Actually didn't have any plans on scraping anything, the History has worked well enough to police the take-1-leave-1 map tab scheme we run.
Ah, there. Being able to see the contents without having to log into the game is nice, helps with looking into stuff.
yeah that's what support said in their request for it haha
Small shout out to a very early version of a Python PoE API client I'm working on for the next BPL league: https://github.com/BPL-Development-Team/poe-client
It's an async client based on aiohttp, and has pydantic schemas for all the PoE API type definitions.
dont see user agent there ๐
What's BPL?
I'm guessing "Badger Private League" since that's the email
That is correct!
@civic crane just fixed that in a new version ๐
3.15 tree data kludge while the official tool is eing updated
was there any info on what CustomAlertSoundOptional condition, the other two (DisableDropSoundIfAlertSound, EnableDropSoundIfAlertSound) seem more understandable
presumably allows fallback to default sound instead of erroring out of the filter parser
usually there's a technical info post for filter and other tool dev stuff
maybe tomorrow
(from the future https://www.pathofexile.com/item-filter/about page)
thank you
@velvet fog any idea when they removed this line -- MonsterSummonedSkullFastAttack1 [active_skill_attack_speed_+%_final = 40] from the mod list of SummonedRagingSpirit, SummonedEssenceSpirit and IcyRagingSpirit
wonder if the mod got moved in there