#tooldev-general

1 messages ยท Page 7 of 1

formal kraken
#

The semaphore is fine, might be tricky with dynamic counts

#

But should still work

#

The linked list should probably be a heap or at the very least a VecDeque, but it becomes a lot more complex with the dynamic counts and back offs

daring moss
#

I was thinking of it in terms of tocken buckets

#

but yeah I guess just having a counter is more than enough

#

to anyone who's been using the API for a while, how common is it for GGG to change up those ratelimits?

formal kraken
#

Problem is, every request may land in a different bucket and you only ever know which bucket it was after the call (through the header)

worthy cape
daring moss
#

trade as in the psapi?

formal kraken
#

So either you manually specify which bucket to use for each call (which I did) or you implement some 'learning' which can go over the rate limit if you're unlucky

daring moss
#

I'm only really concerned about getting a player's stashes

gilded shadow
#

I'm using https://snosme.github.io/poe-dat-viewer/ (which is amazing btw) to look through some files trying to find files about when certain classes unlocks different skill gems. I already found all the files for the questrewards, which the the gems you can choose on quest completion. However after some quests, different classes have the ability to buy different gems from the vendor and this is what I cant find, anyone having an idea where this info can be found in the files?

worthy cape
#

Vendor rewards aren't in the game files since ages.

#

Quest rewards just recently returned the other league.

gilded shadow
#

oh thanks a lot, manually creating the database lets gooo

frank drift
#

I'd suggest pulling vendor rewards from the wiki, or possibly poedb

carmine merlin
#

PoB update for the new 3.22 tree is out

waxen musk
#

key guys what does indexing field do in enumerations in schema.min.json?

#

is it the value of first entry?

worthy cape
#

I believe so, yeah. Some tables are 1-indexed with small integers.

queen lintel
#

hey folks, i'm working on a very primitive poe app, that ideally would be able to display some sort of notes to the player every time they enter a new zone, however as i'm pretty clueless about how to get the "zonedata" for the character the player is currently on, i thought i would ask here

#

the idea is inspired from Poe Overlay where it shows you every time you enter a new zone

worthy cape
#

The only datasource you have is to follow the client.txt file in the game's log directory.

#

You're allowed to read it given user approval of the purpose for reading it.

queen lintel
#

when you write "user approval" is that the OAuth 2 stuff they mention on their developer docs?

worthy cape
#

Nah, nothing formal like that.

queen lintel
#

Ah, so i just have to ask the user for permission to read it before it does it?

worthy cape
#

I forget where I read it now, but yeah. It contains chat messages which makes it have a bit of a privacy aspect.

queen lintel
#

but still, it's nice to have another project for reference if i encounter issues

worthy cape
#

In the game installation directory (both Standalone and Steam) there's logs\Client.txt with a reasonably parseable format like:
2022/12/18 16:22:19 125418250 cffb0734 [INFO Client 25924] : You have entered Vaults of Atziri.

#

You can look some information on those area names in the WorldAreas.dat64 table of the game data files, maybe with table exports from https://snosme.github.io/poe-dat-viewer/ or by pulling the data out ahead of time from offline game files with very specific tooling of your own.

#

Sounds like a fun little project, the channel is always here if you've got some questions.

queen lintel
#

I got what i was looking for so i'm gonna start working on it ๐Ÿ‘

past merlin
molten kernel
#

I'm hoping if someone better versed in POB than I could be able to get me the stats per Phantasm level for Phantasmal Might (The Black Cane) for me. Having trouble figuring out where that data was sourced from, would be nice to have it on the wiki.

daring moss
hazy fiber
molten kernel
#

the added physical damage

daring moss
#

ahh

#

sorry, I misunderstood

waxen musk
#

@vestal pond whats this? i havent seen this error before, now it refuses to open tables with enums >.>

daring moss
#

Anyone here consuming the psapi stream? What kinda throughput are you looking at? how much raw data is it per hour/day?

worthy cape
oak estuary
oak estuary
#

Yep

molten kernel
#

thanks! the scaling is a bit wonky

#

seems pretty inconsistent how it goes up

oak estuary
#

It's probably a float increase that rounds to the nearest integer. Then when it get to level 30 it cuts in half, like most gems

blissful marsh
#

Hello guys. When im opening POE client, this window always show up. Any one knows how to resolve this?

worthy cape
#

That's a new one for sure. Some component of your Windows installation is hosed, there ought to be various advice online that might resolve it.

#

(it's off topic for here, as it's not about PoE tool making)

blissful marsh
#

Sorry and thanks for answering ^^

frank drift
worthy cape
#

Very handy for recording tool and game clips, btw.

blissful marsh
#

Found the issue guys, thanks for your input! ^^

worthy cape
#

Try a game help channel.

magic field
#

Oh oops! sorry

compact isle
frank drift
#

now I just want the "item filter information" post

compact isle
#

should be today

wintry torrent
#

anyone else experiencing import bugs on pob?

oak estuary
#

There's a couple issues about it on GitHub. I just pushed out a hotfix for it. classId and ascendancyClass were removed in favor of class on the (unofficial) import endpoint we use

wintry torrent
#

oh wonderful

velvet fog
velvet fog
#

Sanctum Necropolis Research
Sanctum Vaults Research
not on the list, can be traded, but not dropped?

#

name changed

  • Honoured Tattoo of the Wise Man -> Honoured Tattoo of the Wise ?
  • Tattoo of the Valako Storm Conduit -> Tattoo of the Valako Stormrider ?
compact isle
plain bison
#

Is the poe api still accesssable to look up divine/chaos prices?

oak estuary
compact isle
#

we only support ruthless in the latest leagues

#

ie. the version is 'ruthless'

oak estuary
#

Sounds good, thanks

waxen musk
#

Where do I find current game version (i.e. 3.22) in the bundle?

cold spindle
#

I tend to identify a bunch of Watcher's Eyes every league and I've noticed some fun patterns with the relation between prices and mod combos, so I got the idea to put my college degree to work and practice some machine learning techniques on a dataset of mod combinations matched with item value. I tried looking if anyone's collected that data yet, but after not having much luck I started looking up how I could collect it myself and landed on two initial possible approaches: (1) Combing through the Public Stash API river for Eyes and collecting their mods and listed prices, which has the advantage of getting a more diverse collection of Eyes or (2) Using the unofficial trade API to search for a subset of Eyes (i.e. all two mod combos, or a timed recurring query for recently listed Eyes in a few price brackets, etc) to build a similar dataset

In both cases I figure I won't have issues with API delays or rate limiting since I don't want to use this data for any real-time trade advantage or anything of the sort (especially since pricing Eyes manually is pretty trivial with Awakened POE Trade) so I've got no rush if it takes a while to collect enough data. I've never worked with a full real-world workflow such as the one required for this (interfacing with an API, collecting and storing the data, cleaning it up and preprocessing and so on), but I think it'd make for an interesting learning project

#

I'm writing here because first of all I want to make sure this is all okay with ToS and such, but also I've got a few implementation questions if it is: what approaches would you guys recommend? Any pitfalls or issues I should especially watch out for? Would dynamic rate limiting come into play if I make slow but repeated queries to trade? Also, I'm not very familiar with OAuth, would I need to host a redirect server even if I only plan on using the public stash API with no other users? From what I've gathered of the developer documentation I'd need a Confidential Client with the Client Credentials grant and services:psapi access, I think

#

sorry for the long ass messages, english isn't my first language so I tend to overdo it on the writing to make sure it's extra readable

worthy cape
formal kraken
cold spindle
# formal kraken I'd go the river route. You'll have to guess when an item was actually sold to s...

Yeah, I'm tending towards that as well, especially since getting the item's price when sold is much harder than getting its price when listed. I'm thinking of storing the item's id and using it to check for re-prices if it reappears in the river (might have to do some sort of dict based on stash tab id in order to avoid edge cases where entire tabs of eyes have to be checked for repricing whenever a new one is added or removed, but I'll try to optimize that only if needed). Since I'm mostly interested in the rough data and won't be using this for much other than development practice, I might also just use the latest listed price instead of trying to track sales or delistings since that'd add a huge layer of complexity to the situation

formal kraken
#

Should be pretty easy to just store the entire history of an item

cold spindle
#

Then I could store the time since the item was initially listed and/or the time since its last price change and attempt to clean up the data later to filter out misprices and such that don't sell

cold spindle
formal kraken
#

Wonder if divining changes the item id

cold spindle
#

Hmmm no clue, but for Watcher's Eye specifically I can probably get away with making a pseudo-id using the mods and the stash tab/player info since it's pretty unlikely that someone would have multiple of the exact same eye combos, but that's for later

#

I could also just store the rolls since there are like, 89 possible eye mods iirc, could probably extract them pretty easily, would be useful for checking for the influence of min/max rolls in each situation

civic crane
daring moss
#

e.g. wouldn't you "just" want to look for pricy eyes and common mods between them? The more common, the more likely it is a mod that contributes to the value?

#

oh, hrm, I guess a more sophisticated could pick up on mod combination that together turn into considerably more value?

cold spindle
#

Yeah, it's mostly for novelty purposes. I figured I can encode each eye as a vector of 89 elements, with each element representing a mod (with value 0 if the eye doesn't have that mod and 1 if it does). In terms of machine learning, it'd be a supervised regression task with the listed sale price as the correct label

#

I was thinking of trying some basic logistic regression and some simple neural networks just to see the results, and also it'd be interesting to see if we could predict 3-mod jewel prices just from 2-mod ones for example

#

And it'd be interesting to see the relationships between different mods. I've noticed from my own ID's, for example, that Pride Impale is pretty worthless without one or two other Pride mods (in the last few leagues, blight carrion golems and so on was another story), but the opposite doesn't seem to be true, with some Pride mods being just as valuable without the Impale one. It'd be interesting to analyze these kinds of patterns (but yeah, mostly it's for the fun and practice of implementing everything)

waxen musk
#

uh did they change all paths to lowercase or was it always like that?

worthy cape
#

Among the changes was a different path hash algorithm and also lowercasing of the compacted path representations that you would use to iterate directories.

waxen musk
#

ah so im not going crazy, i was reading through bundle specs and couldnt see where it could store case information

worthy cape
#

The path-reps were all lowercased for performance, assumedly because the hash algorithm works on lowercased paths already.

waxen musk
#

welp i was relying on a couple folders having different casing, guess ill have to fix that part now ๐Ÿ˜ฆ

worthy cape
#

So going forward, everything derived from there is lowercase which is a bit of a bummer and raising some problems for people like me who use path hashes as keys to find files between releases ๐Ÿ˜„

waxen musk
#

weird how dat files are still pointing to uppercased image paths

worthy cape
#

All the paths embedded in other text and binary files are probably still the same too, like TGT/TST/MAT.

#

Most things are authored using loose files in the game tree, which still is maintained properly in SVN.

#

The loss happens in --generate-bundles or whatever the flag was called.

#

This amusingly enough means that there can theoretically be casing bugs in a bundled release that aren't present on a developer machine if they're not using bundles for those files.

timber thicket
#

I wonder if they use perforce

worthy cape
#

Over time it's been possible to see it in presentations like a branch picker in the task bar, paths in file pickers, heck, might even be in the hardcoded paths in some data files.

timber thicket
#

oh god

#

who uses svn in 2023 DivineOrbSad

worthy cape
#

Why change a working system?

#

Single geographical site, fast network, sufficient local space on machines, not too much in the way of fresh clones, existing integrations into ticket system and other tooling.

#

Most reasons you'd have to migrate a FL/OSS project do not apply in the same way.

#

Assets are assumedly stored in some other way, I can't recall how.

timber thicket
#

I hope they have some good frontends for it still I remember every GUI for it to be a pain to use

#

maybe their engine has integration for it? ScuffThink

grave wren
#

Thankfully never had to use svn

timber thicket
#

I had to use it once (we were using tortoise svn) and it was an absolute pain

#

for me when it comes to gamedev perforce > git > svn even though I wish it was the opposite ๐Ÿ˜…

daring moss
#

I shall throw in Pijul as my VCS of choice

worthy cape
#

Smells like Darcs.

daring moss
#

kinda is darcs

#

but with less of a performance overhead

formal kraken
daring moss
#

ohhh, I've seen that one a while ago

#

have you tried it?

formal kraken
#

No, not yet

daring moss
#

When do we usually get the "internal" name for the league we can later use for the API?

#

only after the league releases? or beforehand?

leaden igloo
#

HAving some issues installing PoB anyone I can DM so I don't flood the channel? Pretty stumped on this one. Help appreciated greatly โค๏ธ

oak estuary
#

DMed

wispy moon
#

Hi I am new here, where are you guys getting data for your applications?

silent tree
frank drift
wispy moon
#

Sorry I should've been more specific

#

I meant items, modifiers, uniques...

#

I saw something about parsing the ggpk file, but I am not sure what that means

oak estuary
copper steeple
worthy cape
#

There's some information in the unique stash tab connecting names with art, but the items themselves are sourced from players, teasers and trade occurences.

wispy moon
#

Nice templarthumbsup

#

I'll check it out thx

copper steeple
#

Also if you then want to parse the ggpk file and included dat files yourself there are already existing libraries available, you don't need to start from scratch

#

Like LibGGPK in C#

#

Rust*

worthy cape
#

For some things there's also the possibility of pulling crowdsourced stuff from the wiki API.

wispy moon
#

I am not even sure what I am going to do with this info yet

#

Just doing some research

#

But it's good to know you are all very helpful

#

I wasn't expecting to get an answer so quickly

copper steeple
#

All lurking for league start dev leaks ๐Ÿ˜

worthy cape
#

Historically the RePoE project had collated a lot of fundamental information like item types, gems, etc. in JSON files. It's probably still without an established successor.

#

The unspellable username ๐Ÿ˜„

wispy moon
pallid wraith
#

At least it isn't lIlIllIlIllIlIlIl

tawny plank
#

anyone have the problem that for pob goes dark when lost focus in the 2nd monitor?

worthy cape
#

Never really managed to reproduce that problem reliably, and haven't looked too much at it with the new renderer underway for ages now ๐Ÿ˜„

tawny plank
#

i tho was the awakened poe trade macro but its not

#

just goes dark when i go back to poe, when poe is in windowed fullscreen of fullscreen wont happen on justwindowed

waxen musk
#

uh is the CDN doing something funny with fetch requests? im trying to load images specified in the tree json

FetchError: request to https://web.poecdn.com/image/passive-skill/skills-3.jpg?ba75fd4e failed, reason: read ECONNRESET
    at ClientRequest.<anonymous> (file:///C:/Projects/planner-tools/poe/node_modules/node-fetch/src/index.js:108:11)
tawny plank
#

my monitor is 60hz, if i cap the fps to 100 in poe, pob wont flicker (?)

waxen musk
#

oh nice javascript logic. my code buffers up so many actions that the request times out before the response is read -_-

worthy cape
#

You're too early, the queue is tomorrow.

#

Oh hey, a torrent.

timber thicket
worthy cape
bright ridge
#

we're making it happen HandsUp

formal kraken
tough veldt
#

Hey there, question on the weird colour code I've seen in pob community, what's the ^4, or ^ plus any digit corresponding to? is this a standard from somewhere? or do I have to test all the numbers to figure out all the colors?

oak estuary
#

There are 10 hardcoded values in the SimpleGraphic backend. If you want specific colors you can do ^xFFFFFF

tough veldt
#

well, just wanted to know all the corresponding hardcoded value. What a name for a lib! hard to google this libs and find out the corresponding values.
Is that just a local library of pob?

oak estuary
tough veldt
#

ah, I see :p

#

thanks

oak estuary
#

I don't know if this question comes from using the Notes page already, but you can go there and play with the buttons at the top

tough veldt
#

well, it's come from doing my own pob code viewer (like pobb.in)

oak estuary
#

Ah, then I suspect you'll have a few more questions as you go. I can shoot you a server invite if you find you need it

tough veldt
#

there is another discord server specific for pob? well... why not? I'm quite happy with what I got for now though.

tough veldt
#

oh, I believed that ^7 was a hardcoded ending tag, turn out it just the color code for white. Mind blown.

formal kraken
#

I have ^7 just as default color

worthy cape
#

cries in light theme

glacial summit
#

Can someone point me in the direction of an UI tool that I can study to learn how I can craft my own?

glacial summit
#

For starters I want popups when I encounter a Syndicate member.

#

And some other things. Like an audio signal when my flask is up.

worthy cape
#

The crux for any such reaction is that you need a legal data source for those events.

#

If it's not in the client log, you don't have anything to go on.

glacial summit
#

It is in the client log.

#

I don't plan to do any memory checks or something. For stuff that's not in the client log I'll force it through repeated screenshots.

#

And there will be /no/ automation.

worthy cape
#

You've got three primary choices around UI stuff - either a regular boring program running on another screen, a transparent program on top of the game that ruins performance and is transparent to events, or something that communicates solely via notification bubbles.

#

Automated OCR is kind of problematic.

glacial summit
#

Kind of. But not really. I don't want to automate text, for example. That would be hard. But if a buff is there or not, a buff for which I already have a picture of. That I can check.

worthy cape
#

On the safe side there there's "weak auras" that replicate and magnify part of the screen without reactions, and user-initiated actions.

glacial summit
#

Any action will be user initiated. I'm not trying to do anything untoward.

#

But I was looking to see what are my options on how to actually get something up and running. Starting with some popups based on text in the client log.

#

So it's gonna be either 1 or 2. Ideally on another monitor, but if someone doens't have 2 then it'll have to do.

waxen musk
#

where can i find a consise documentation of ggpk format? one thats easier to process than reading through various source code

worthy cape
#

Bundle article needs to be updated with new path encoding scheme, I should do that.

#

GGPK one is from my poe-doc repo that I made private a while ago, should be largely accurate still apart from the ggdh files that no-one has bothered figuring out the purpose of.

waxen musk
#

ah thanks. im just considering adding ggpk support so i can update data earlier from torrent

#

ggpk also uses murmur hash?

worthy cape
#

Yeah, it used 32-bit murmur2 since the dawn of time.

#

If you're building your own GGPK reader, I recommend doing a linear pass through the file to parse chunks and track them by their offset, skipping past the data. You can then reconstruct the hierarchy from the chunk offsets and their occurences in the directory entries, and then export accordingly.

waxen musk
#

the "bundles" link in ggpk doc is dead

#

oh so ggpk just uses the same bundles as steam?

worthy cape
worthy cape
waxen musk
worthy cape
#

^_^

frozen field
#

I have a computer science degree and need to add one more project to my portfolio. Was thinking I could do a small POE-related project and wondering if anyone had any ideas, just any simple CRUD webapp or something that uses the API. Doesn't even need to be used by anyone aside from myself, moreso just to show interviewers

waxen musk
#

coming up with the right idea is the hardest part

frank drift
#

shouldn't be too hard to come up with ideas

#

"right" idea might be hard I guess

worthy cape
#

We patch in 1h20m and my tools are still broken ๐Ÿ˜ฆ

#

I still need to trick someone into building a DAT metadata comparison website, but I don't even know what I want there ^_^

oak estuary
#

Sounds like you found a project @frozen field ๐Ÿคญ

worthy cape
#

Just noticed, the path casing problem is in those data files too... old ones will have TitleCase.dat64 while new ones will be sadgecase.dat64.

#

So many assumptions everywhere about path casing.

grave wren
#

Is the project a robot that pokes zao until magic happens

worthy cape
waxen musk
#

uh how do the sprites in public tree data work? for instance for Art/2DArt/SkillIcons/passives/IgniteStunNotable.png it says it's located at 518,582 of skills-3.jpg, but if i go to these coordinates i find this icon instead

#

or is that the correct icon and poeplanner has it wrong?

oak estuary
#

Should be this one. How are you translating those coordinates to the image? You're on the right row but too far to the left

waxen musk
#

i just opened mspaint and went to the specified coordinates

#

where do you even have that?

#

for me that section looks like this

oak estuary
#

Yes

#

3.22 image is on GitHub, that's the 3.21 image

waxen musk
#

why is the tree data pointing to cdn then if its outdated? o_o

oak estuary
#

It's not outdated yet ๐Ÿ™‚

waxen musk
#

has this

            "0.3835": {
                "filename": "https://web.poecdn.com/image/passive-skill/skills-3.jpg?ba75fd4e",
                "w": 925,
                "h": 1333,
#

aka new tree data is pointing to old images

#

i guess i have to replace these fake urls with githubusercontent then

oak estuary
#

Presumably because that's where the new image will live once it's live. If GGG published it now, all the current trees would look wrong

#

Or host your own images. Hot-linking their images is discouraged, afaik

waxen musk
#

im not hotlinking im loading them in my offline script that slices them up and stores in a different format

#

previously i just had holes like this

oak estuary
#

Oh well in that case can't you just download the whole repo? I guess that's no different than using githubusercontent

waxen musk
#

im trying to minimize manual work. to a point where i just run the script and it does everything, getting data from steam files, converting all images to webp, etc

#

otherwise i have to keep a 20 item list of what tools i need to run to update the data ๐Ÿ˜„

oak estuary
#

Out of curiousity, which tree viewer tool is this? Just a personal one?

waxen musk
#

and all the embeds in guides etc

worthy cape
#

"small indie website"

oak estuary
#

lol, I'll say

waxen musk
#

oh a quick question, anyone knows which image has the little dots that go in these circles?

formal kraken
waxen musk
#

is there a new encoding with 3.22 or its the one thats already live?

worthy cape
#

Same since 3.21.2, the leetbeef one.

worthy cape
pseudo ocean
#

does anyone know what the /append for trade is gonna be? its not gonna be /trialoftheancestors or something right ๐Ÿ˜„

worthy cape
#

Based on other occurences, I would guess at ancestor, but we'll see shortly.

compact isle
#

the league name is Ancestor

worthy cape
#

Have a good launch, GGG peeps! ferrisPray

compact isle
#

so far so good ๐Ÿ™

daring moss
pseudo ocean
waxen musk
#

soo how many dat files changed this time ๐Ÿ˜‚

worthy cape
#

I'd tell you but my tools are still broken and I have ice-cream instead.

waxen musk
#

dang ill trade my tools for ice cream

civic crane
#

changed? no, not even broken. just new for the league

waxen musk
#

your stuff works great! though i couldnt get the npm package to work though so i copied the files over

neon plume
#

did GGG change the hashing function for their content file paths?

civic crane
#

someone just woke up

neon plume
#

I have awoken

civic crane
#

murmur64a

neon plume
#

fuck me sideways

#

uhh

neon plume
#

tyty

worthy cape
#

@neon plume It's now using MurmurHash64A, the seed is 0x1337b33f, both file and directory paths are lowercased, there's no ++ suffix anymore, the path rep section that you use to generate filenames is now pre-lowercased already so we can't tell the case for new files.

neon plume
#

lol I just read the seed from that PR and did a double take

worthy cape
#

You can detect if an index uses the old or new scheme by looking at the path hash for the root directory, and in case you're afraid that the seed will change, you can run the hash backwards to compute the seed.

neon plume
worthy cape
#

^_^

worthy cape
#

Due to the construction of the hashing algorithm, when the input is empty it's three invertible operations.

#

The root directory is the empty string.

neon plume
#

LOL

worthy cape
#

I did that in the most overkill way possible - asked a mate of mine that designed one of the SHA3 competitors on how to do it.

neon plume
#

most extreme way would be brute forcing it

worthy cape
#

Technically 64-bit seed, even if most codebases only specify 32-bit ones.

#

But yeah, we had some fun days a bunch of weeks ago when this change suddenly landed in a late-league patch and we knew nothing about algorithm, application logic or seeds.

neon plume
#

it worried me when I googled it and half the links were purple but I do not remember ever looking at it

#

so I'm just gonna ignore that

waxen musk
#

whats the array at the end of CraftingBenchOptions?

#

looks like foreignrows to some other table

civic crane
#

there only a few table it can be, and none looks to be correct, so will leave it as rid shrugR

neon plume
#

by any chance is the first hash supposed to be 0xF42A94E69CFF42FE (or 17594038612473627390)

civic crane
#

0x1337b33f

neon plume
#

the first dir hash

#

that be seed

#

it's ok

#

it correct

#

many thank

worthy cape
#

@formal kraken I updated the Bundle scheme article now to outline the 3.21.2 changes.

worthy cape
neon plume
#

awesome

#

why not use the reverse-engineered seed?

worthy cape
#
>>> h = 0xf42a94e69cff42fe
>>> h ^= h >> 47
>>> h *= 0x5F7A0EA7E59B19BD
>>> h %= 2**64
>>> h ^= h >> 47
>>> hex(h)
'0x1337b33f'
worthy cape
neon plume
#

might aswell

worthy cape
#

It's equally likely that they change the algorithm again, and then a computed seed would be incorrect.
I've got some logic to actually validate the seed against the first non-empty directory entry but didn't include that in PyPoE as it has some non-zero cost and is a bit brittle.

#

I'm having more problems as I used the old path hashes extensively in Inya instead of literal paths, and now that there's two schemes it's harder to work with.

twilit flame
#

Managed to update poeAtlas.app intime for launche! poggers ๐Ÿ˜„

neon plume
#

2**64 is max uint64 + 1

worthy cape
#

It's 64-bit modulo arithmetic, the %= step truncates it down.

neon plume
#

yeaaaaaa Go no likey

worthy cape
#

In languages with sane sized types, just don't do that part. I made it up for Python to not be sad.

neon plume
#

oh got some examples for sane langs?

worthy cape
#
            uint64_t h = root_hash;
            h ^= h >> 47;
            h *= 0x5F7A0EA7E59B19BDULL;
            h ^= h >> 47;
neon plume
#

the fuck is that ULL

worthy cape
#

Unsigned long long literal.

neon plume
#

tyty

worthy cape
#

In Rust it'd be 0x5F7A0EA7E59B19BDu64.

formal kraken
#

& (2**64-1)?

worthy cape
#

The types of literals in C and C++ are cursed unless you go and tell it exactly what you want, as it picks a type that the literal fits in otherwise, vaguely.

formal kraken
neon plume
#

Go:

a := (hash ^ (hash >> 47)) * 0x5F7A0EA7E59B19BD
seed := a ^ (a >> 47)
gritty elbow
#

dont know where to post this: why do i get this error installing pob on a clean win10 install

hazy fiber
#

looks like a 1drive issue

oak estuary
# gritty elbow

Open your Documents/Path of Building/Settings.xml file manually, then open PoB again.

oak estuary
#

Well that seems like the problem ๐Ÿ˜„

gritty elbow
#

yeah, how do i fix it ? KEKW

oak estuary
#

You can install the standalone version or tell OneDrive to always make that PoB folder available offline

gritty elbow
#

i was installing with the .exe version because the zip one wouldnt update

#

i guess question is how do i shut up onedrive

oak estuary
#

I truly don't know. People have been having this problem more and more lately, but I've never had an issue

gritty elbow
#

very annoying tbh. thanks for the help tho

oak estuary
#

You can move OneDrive to a different folder, at least on Win10

worthy cape
#

One of the things I have deep on the virtual todo list is to see if one can query OneDrive status via API to fail in a nicer way.

#

Oh, this isn't the server I thought it was ๐Ÿ˜„

neon plume
compact isle
#

seems correct to me

#

you're comparing against the assets in the github and not the URL, right?

worthy cape
#

I'm getting the weird one from the website.

compact isle
#

website will be different from the export

neon plume
#

but it links to it

worthy cape
#

Ack. Some peeps thought that the website would be "updated" at launch.

compact isle
#

just means that more art was added / changed after the export happened

#

I'll re-export I guess

compact isle
#

I could just stuff it into being the relative path but eh

worthy cape
#

"data_inspired_by":

neon plume
#

"data_loosely_based_on":

compact isle
#

hah sorry for the confusion

neon plume
#

no worries, glad I caught that

compact isle
#

release data for skill tree pushed

#

and atlas tree pushed too

neon plume
#

ty!

spark tendon
#

SR but can i ask about awk trade here?

#

i got this issue, i tried to reinstalled, update and and still not fix it, someone help me slothpeek

civic crane
#

@spark tendon you are blocked by CAPTCHA, price check item, click Browser button there

spark tendon
civic crane
#

You will need to do this every 10min... Also Browser button don't appear on currency items like that one

spark tendon
civic crane
#

Means what I said, u need to complete captcha again, but to access builtin browser -> price check non currency item -> complete captcha -> pc currency

spark tendon
#

so i canT check currency any more? @@

worthy cape
# spark tendon so i canT check currency any more? @@

The underlying problem is that your IP address or machine is "suspicious" and blocked by the CDN - CloudFlare.
The method to prove that you're a normal human doing normal things is to do the CAPTHA challenge, which will make it work fine for a while.
Awakened PoE Trade (APT) lets you open a browser to do this process, but the button in APT is only available on non-currency items. When you need to do the CAPTCHA you need to price-check a random item first, then you can price-check anything including currency again for a while.

neon plume
#

what in the fuck is this chatgpt generated site? https://poetimelessjewelcalculator.com/

#

There's like 30 ads on the page, and half the info is literally just random trash

#

...the reason I found it was because of this https://www.youtube.com/@POETimelessJewelCalculator/videos

frank drift
#

wouldn't be the first time

formal kraken
#

Timeless Jewels can also modify the connections between nodes within their allocated radius.

Dann what game have I been playing

formal kraken
#

You wrote a lot of articles

#

And they are probably all dogshit

neon plume
#

they 100% are

#

the MOST bizarre part is the fucking youtube videos

#

WHY are there youtube videos

#

I think that's technically the only copyrighted material there is on that page

hazy fiber
#

looks similar to what empy did, but not sure

tardy steeple
#

Hi

formal kraken
spiral hamlet
#

Ive got an issue with Awakened POE, had an issue, so i uninstalled it, but i cant reinstall for some reason, installer says Awakened is still running

hazy fiber
#

not the right place for it, but probs open task manager and find/close the process

spiral hamlet
#

oh my bad, the right place?

#

nvm

primal schooner
#

@civic crane there's a bug w/ the current version of Awakened. the highlighting for influence type doesn't show up when you toggle it on (but it works)

civic crane
#

@primal schooner best to report on github with screenshot

primal schooner
#

will do

rapid pagoda
silent tree
#

Through his characters, POE timeless jewel calculator challenges the readersโ€™ perceptions of right and wrong, forcing them to confront the darkness within themselves.

#

this whole thing is a monument to why u shouldnt let generative ai anywhere near a serious setting

frank drift
#

that's not a serious setting

#

it's perfect for the use case

#

it's like how Nigerian scammers intentionally use bad spelling/grammer in their spam

neon plume
#

FOUND THE DUDE

#

I meant I FOUND ME!

#

I'm totally a doctor!

silent tree
topaz thunder
#

@civic crane How can I fix this? Thx !

trail cradle
#

does anyone know how poe.ninja pulls atlas trees? is it only for oauth-connected accounts? @fickle yew
I was hoping to get atlas trees for league accounts in a private league. actually, wondering if it's possible to get a poe.ninja-like summary of characters in a private league too or if I'd basically have to build it myself

fickle yew
trail cradle
#

yeah

fickle yew
#

Give me the id and I'll put it on the site ๐Ÿ™‚

trail cradle
#

:o wow PL41736

fickle yew
#

The full id... including the name I believe.

trail cradle
trail cradle
#

thanks muchly!

velvet fog
trail cradle
#

krangledome ninja

haughty steppe
#

Who vaaled poewiki?

worthy cape
bright ridge
#

x-posting from tft dev chat:

Is there such thing as linking GitHub issues to Discord Forums? (Not Discord channel notifications; actual forum posts)

silent tree
#

u might be able to rig something up with github webhooks

#

i haven't looked at the discord api in a long time so i have no idea what u can do with it for forums though

#

so u could get a webhook to fire when an issue is created/updated and post it as a new thread or a message in an existing one

worthy cape
#

I keep being lost about what their restrictions when they changed bots around were, but I was of the general impression that bots can't read much at all on the server, only really react to things unless you've got an especially blessed one.

#

That kind of rules out a lot of the sync-like behaviour one might want to have.

oak estuary
#

Yeah, unless you're prepared to tag the bot in every message, that was the impression I got, too

worthy cape
#

(all I know is that my bot became strictly worse when forced into slash-commands)

silent tree
#

i actually didn't consider posting the other way LOLW only from github to the server

rapid pagoda
whole cloud
#

which trade script lets you search the trade site in game and stuff?

#

The one im thinking of has a really nice UI and lets you save searches

oak estuary
#

Awakened Poe Trade is the one most people use. Not sure about saving searches though

whole cloud
#

yea thats the one ithink

#

hmm idk maybe this isnt it

#

how do isearch the trade site in game with this one?

worthy cape
#

APT doesn't keep any searches or let you customize past the mod ranges/inclusion on a given item you trigger it with.

#

It's explicitly to gauge the value of something you already have.

whole cloud
#

yea it must be something else then

#

shit

#

ah its poe overlay

#

through overwolf sadge

worthy cape
frank drift
#

no overwolf

whole cloud
#

I tried the fork and from what i can tell it lacks some functionality like searching trade site in game

frank drift
#

not sure what you mean

whole cloud
#

on the overwolf version if I press alt M in game I can perform trade searches in game and save searches

#

I didn't see that option in the fork

frank drift
#

I see no reason why you'd want to do that

whole cloud
#

okay

#

i find it much more convenient than going to another screen to do it and I find the UI easier to navigate

#

but idk why it matters WHY i want it

frank drift
neat steeple
#

@fickle yew Hope to get the feature that lets people select what to show up on the list back (etc. item type, passive type)
Then and now:

acoustic sky
#

@formal flint sorry to bother you but from your mapsofexile site are you sure that Mausoleum is boss seperated and not hasnt spawned?

formal flint
fickle yew
undone nimbus
#

Hello guys. How to install PoE to a specific folder or drive? There's no option in the installer. It automatically install to my drive c

formal kraken
undone nimbus
#

I can't download it on my steam, after installation it says corrupt disk

#

I already fixed my drives but still the same

#

no problem on other games tho

#

before, I used to play on steam but "failed to decompress" keep showing when travelling through maps

worthy cape
#

Gotta love work internet:

#

The installer seems to have the Options button even after installation if one hits Uninstall.

#

I don't think I've run the installer in this decade, there's always an old installation to loot ๐Ÿ˜„

undone nimbus
# worthy cape

I see. I don't know why but I did not encounter this one when installing

#

I think I'll try it again

worthy cape
#

I'd strongly recommend figuring out why your computer corrupts things - that's not at all normal.

#

May it be the storage, CPU or memory that's weird, but it's not healthy.

formal kraken
#

thinks we should make more threads

worthy cape
#

Or not get baited into talking about OT stuff <_<

#

The uninstaller is great by the way, it doesn't actually remove the whole game directory, mostly just the GGPK.

undone nimbus
#

hahaha. Anyways, thanks!

undone nimbus
#

after installing the game it recommends me to pack check

worthy cape
#

If things are broken immediately after installation, find out what's wrong with your machine instead. You can't rely on such a box at all for anything.

undone nimbus
#

aightt let see after this hahaha. If it doesn't fix it maybe my pc needs a reformat

mortal bone
frozen wagon
#

Hey, I'm new around here but I was wondering if anyone had written an app using an authorization_code flow? I am randomly getting 403 - Forbidden responses for the last couple of days when trying to exchange the code I get back from GGG for a token... Everything was working fine until a couple of days ago and now I literally just get 403 - Forbidden with no actual error message telling me why ๐Ÿ˜ฆ

Fixed it by adding a User-Agent header (though wtf, this was working for like 3 weeks without it)!

oak estuary
mortal bone
#

For now, I probably won't be adding the ability to swap back and forth in the trees

#

I also didn't end up playing ruthless, so I will have to figure out how that is implemented ๐Ÿ˜„

oak estuary
#

I see the Ruthless atlas tree, but not the passive tree version with the ascendancy changes. If we support it in PoB we'll need to know its ID to import trees from poeskilltree

snow flume
#

Please help me, when I launch awaken nothing happens, no combination of buttons works. I play on Directx 11 in windowed fullscreen

mortal bone
#

I was looking at the ruthless branch, and I think I was looking at the wrong repo. I will probably get that in later today. It would be "3.22.0-ruthless"

formal kraken
#

Is there a database of when a class gets access to a specific gem (basically vendor in which town, I don't necessarily need quest rewards)?

worthy cape
#

Vendor rewards are not in the data files since a long while, while the quest reward selection box has been recently re-added again.
You've got to consult externally curated sources like poedb or the wiki for that I'm afraid.

formal kraken
empty stirrup
#

Making me download a patch this morning and it keeps going to 0 bps download on standalone client.Same thing happens on steam. Tried pack check, port forwarding, firewall off, add exclusions, restart PC/router, tried different connection

empty stirrup
#

I fixed by using a vpn

carmine merlin
#

PoB update out with all the new gems, tattoos, ruthless tree and more

primal schooner
#

Local, is there a way to create a timeless jewel by typing a number and not having to use the slider? it's not very acurate...

oak estuary
primal schooner
#

kk thnx

formal kraken
#

That was easy, files are extracting with the new hashes \o/

worthy cape
#

Enjoy the lack of case.

formal kraken
#

Where can I find the info if a gem is a dex/int/str/other gem? Basically the color, green, blue, red, white

worthy cape
#

Second to last column of skillgems.dat64, I think

#

s/1234/RGBW/

formal kraken
tranquil token
#

@velvet fog Could you please add Text Audio of Ancestor NPCs? I'm very interested in Lore in this league. https://poedb.tw/us/NPCs

void forge
#

Hey guys, sorry if this is mentioned somewhere, but I'm interested in making a PoE addon, is there any I guess intro to making PoE addons anywhere? or any information / documentation I can look at to get me started? (I guess something to sort of help is something more along the lines of Awakened PoE Trade, where it's just an overlay for the game and only reads items the player pushes a hotkey on ๐Ÿค”)

grave wren
#

there is no official addon api in poe, something like awakened poe trade with a homebrew overlay is your main way of doing things here

primal schooner
#

is there support for tattos in POB that i'm not seeing?

oak estuary
primal schooner
#

ah

#

didn't want to kil my whole tree

#

thnx

tranquil token
tranquil token
velvet fog
#

@compact isle garena's trade website seems to have a huge delay, items take a long time to appear on the lists, and sold items still receive messages

dull laurel
#

What would be a generic word/phrase for what all these tools are? Like game 3rd party tools? Or just game tools?
I'm trying to ask the mods on another game discord to open such a channel, but lack the right words for it.

silent tree
#

third party tools

velvet fog
#

@compact isle garena's trade website bugged, search anything and copy the url, open new window and the url hash become invalid

velvet fog
#

^ fixed today

lavish lichen
#

how does one make blank lines and color coded skills like in this example?`

I can't seem to find a guide on it.

frank drift
worthy cape
#

@frank drift I assume they're doing skill groups, based on the width of the pane.

#

(also the (FullDPS) part ๐Ÿ˜„ )

#

But yes, skill group names unfortunately support colour escapes.

frank drift
#

blank line is presumably just an empty group name

young wagon
#

Anyone have a bg3 soundpack / filter?

neon plume
#

Have I lost my marbles or is stash tab API blacklisted for... everyone it seems? 5 different people can't open it. Also tested several VPN's, VPS's and even Tor

#

oh wait it now requires auth? damn

lavish lichen
#

APT: I changed my hotkey to 'ยฝ' (top-left of keyboard on nordic layout), and now the UI won't open. Is there a settings file somewhere I can manually change?

slender eagle
#

Is there a way to disable Awakened Overlay from running multiple instances? I am using a batch file to launch it whenever PoE opens, but the batch causes multiple instances in my PC

worthy cape
#

Maybe you can make your batch file to check for process existence and skip the launch if so?

#

I see some SO examples that suggest using tasklist | findstr to determine process existence.

#

A built-in mutex in APT would be cute, but single-instance-ness in Electron might be Fun.

#

FWIW, I don't seem to be able to start more than one at a time.

#

Oh, is "Awakened Overlay" another project?

#

Ah yes, APT has single-instance already.

#

Then workaround city, I guess.

slender eagle
#

No, it's the normal Awakened Trade overlay, but it is opening multiple instances.

#

There's a bunch of strings with tasklist, but it would be nice to have that option in the overlay tool.

worthy cape
#

The idea is to tasklist filtered on the file name, findstr to turn that maybe-listing into an errorlevel, and test that error level in the batch script.

#

I'm still not sure which project it is you're using, as names tend to resemble each other quite a bit and I've never heard of "Awakened Trade".

#

APT does this with:

if (!app.requestSingleInstanceLock()) {
  app.exit()
}
slender eagle
worthy cape
#

The channel is for development of said tools, not really end-user support even if people tend to ask questions.

#

Could you link me that software? I honestly can't find anything by that title and I still don't know if you mean something novel or Awakened PoE Trade.

slender eagle
worthy cape
#

Not really sure what goes on in the regular channels on this server, but I would assume that one of the more general discussion ones are probably relevant, or the tools channel over at TFT.
Now for APT, there's functionality in it to do single-instance since April 2020. If you've managed to break that in some way, maybe you should file a bug report on the GitHub repository with details on what you're doing and any relevant environment information.

slender eagle
#

Ah, that's very helpful, thanks.

frank drift
#

TFT tooldev channel is more welcoming of enduser questions yeah

#

I believe Snos encourages people to use github for bugreports, and APT has pretty good documentation

worthy cape
#

@slender eagle had a brainwave in the middle of the night. I only tried running it from shortcuts and double-clicking the EXE. Maybe it's sensitive to the working directory and your batch file runs from an unexpected location or somewhere where it can't write or something?

neon plume
#

Hey, I am trying out the stash API and I know that it's supposed to be 5 mins delayed, but I've been waiting 10 mins and neither mine or my friends changes show up? Am I missing something, or is it possible that some changes get skipped on the public API?

#

oh wow ok no it does actually work, I finally got the change after 16 mins

gilded tree
#

Maybe you arenโ€™t reading the river fast enough(?)

neon plume
#

comparing ID's I seem to be ahead of poe ninja at all times

civic crane
#

doesn't mean that poeninja is always caught up ๐Ÿ˜„

neon plume
#

yep, I know

#

totally not jinxing my own shit but I'm gonna attempt to make poeninja 2 electric boogaloo, now with modifiers and curves

#

as far as I can tell I'm always up to date, it's constantly waiting on first byte

#

it'd be great if the stash endpoint had a timestamp

civic crane
neon plume
#

oh shit ninja is far behind?

#

although it seems to stand still?

neon plume
worthy cape
#

I have some ideas but I'll let the lad speak for themselves ๐Ÿ˜„

neon plume
civic crane
#

it's price prediction project, that is on hold for 2years now kek

worthy cape
#

My guess was to get uniques for APT.

worthy cape
#

Stalled projects are a channel requirement.

neon plume
#

it also contains 0 changes

#

OH after like 5 mins finally data showed up

#

this endpoint is weird

worthy cape
#

The river is fun.

#

I'd reckon that the ID advertised on the website may be the current head but as non-special clients are on a delay, they're going to get nada until that change hits the release point.

neon plume
#

has anyone figured out what do the numbers mean beyond the fact that they just go up?

worthy cape
#

Sequence numbers on each of the shards, IIRC.

#

Otherwise quite opaque and nothing one can manipulate really.

neon plume
#

ok, so TTFB is like consistently >1s, and then actually receiving the body takes another second. That's too fucking long, so I just intercepted the reader and after each buffer loop I check if the next change ID is there, early exit, divert the rest of the body reading to a different thread, and start new request, seems to catch up really fast this way, getting the ID takes < 1ms ๐Ÿ™‚

#

if I take the latest ID from poeninja, I pretty quickly pull away from their latest ID

worthy cape
#

Yoinking the first bunch of bytes for the change ID is indeed a strongly recommended trick.

neon plume
#

never thought that ttid (time to ID) will be a metric I will measure but here we are

neon plume
frank drift
#

@fickle yew

neon plume
#

oh no

fickle yew
#

I do have that as well. I disabled it last league since it didn't seem necessary as I could keep up with just one listener. But I'll just enable it again.

neon plume
#

tried to calculate how long it'd take me to catch up judging by the ID's... not so helpful google

fickle yew
neon plume
#

when you say multiple listeners, how do you handle that, considering it's a linear stream that you can't really jump ahead in?

#

I'm assuming by listeners you mean something that handles the actual body processing rather than making requests?

fickle yew
#

Pretty much what you just described with grabbing the bytes from the start of the request.

neon plume
#

ah

#

I just made an ultra hacky buffer regex matcher

fickle yew
#

That said usually you catch up by just missing some intermediate stash updates. You only get the updated stash tabs so you might miss an update for one tab but you get the final state. So it's not that important unless you drift too far behind so there's significant lag.

neon plume
#

mmm

#

yeah I've noticed that querying the same change ID has different next change ID's sometimes

fickle yew
#

Yep exactly. The current state has moved further ahead.

neon plume
#

I would have expected that they'd make it so the response gets baked by the unique change id and cached on a CDN rather than actually constructing it per request

#

although that would mean you get all the small intermediate steps

fickle yew
#

One thing I saw with mine was that according to my bandwidth graphs my multi listener sometimes ended in a state with diverged river ids that seemed to result in double fetches. I would re-deploy and bandwidth would drop to half. It didn't affect correctness of the data but just not very efficient.

neon plume
#

hmm yeah, seems a bit odd

fickle yew
#

There are other tricks. But I'll let you have fun with those ๐Ÿ˜…

neon plume
#

hmmmmmmmmm

#

well, I still have to draw the rest of the fucking owl

fickle yew
#

Enjoy. Once you're done everyone will take your data for their tools and your visitors along with it. Nah it's a good fun exercise to build it. And interesting if you have new ideas for how to categorize data by mods and still have proper history.

neon plume
#

lol thanks, I will, but I already know that the absolute hardest thing to manage will be confidence in item evaluation

#

does poeninja do any kind of sale-tracking-estimation or does it just skim off the top 1% (damn you price fixers answer my whispers or go away) of trades and evaluate the avg of top 50%?

#

(it's totally fine if you want to keep it a trade secret)

fickle yew
#

I try to avoid sharing too many details since it encourages attacks. Manipulation is very popular.

neon plume
#

yeah I figured

fickle yew
#

I sometimes feel like I should be scraping youtube to find streamer videos creating attack like scenarios.

neon plume
#

LOL

#

GGG got tired of my shit

#

time to implement resiliency and retry logic!

fickle yew
#

Hehe.

neon plume
#

ok, I think I can pretty confidently say that when GGG returns a GOAWAY you've caught up to latest

#

this has now happened 3 times consistently

civic crane
#

I see that you guys don't aware, GGG returns x-next-change-id header from some time ago. less tricksters in your code.
Also potentially faster to receive because cloudflare doesn't need to wait for buffer window of body to compress, Headers are flushed immediately

neon plume
#

undocumented therefore considered unstable and can be removed without notice /s

neon plume
#

ok, I think something is actually up with https://www.pathofexile.com/api/trade/data/change-ids endpoint. I have now collected info from quite a range of locations and people and it seems that for some even with a no-cache header they get a cached response?

neon plume
#

by any chance anyone got the first stash change ID of Ancestral league?

snow flume
#

Can someone help solve the problem, awaken poe trade does not work, reinstalling the game and the program does not help, cleaning logs too, updating drivers 0 effect, could this be a problem in the PC system?

daring moss
#

is the format for client.txt documented anywhere?

worthy cape
#

Not as far as I know, but I think all the aspects of it is known.

daring moss
#

e.g. for most purposes I can inore the vast majority of it, but do we know if the things after the date in this line are the same for everyone in regards to join/leave messages, as they seem to be similar for me?

2023/09/04 20:09:40 428942296 cffb0719 [INFO Client 29428] : BigAF_ has joined the area.
2023/09/04 20:10:07 428969046 cffb0719 [INFO Client 29428] : BigAF_ has left the area.
#

specifically cffb0719

#

trying to figure out if there's anything I can identify what "kind" of line I am looking at without having to try to parse the entire line

worthy cape
#

It's an opaque identifier that identifies the line of source code the message came from.

daring moss
#

ah, hrm

worthy cape
#

As such, it's not stable across releases.

daring moss
#

I see, yeah, that's unfortunate

#

so I guess I have to write different parsers for the things I am interested in and then just skip the line if none can parse it?

worthy cape
#

Probably the easiest way. Enjoy the ones with embedded newlines ๐Ÿ˜„

daring moss
#

that's a thing? skullcry

worthy cape
#

I think quest greentext tends to have them.

daring moss
#

oh neptune, I see what you mean

#

I just wanted to do something similar to mapwatch notLikeThis

worthy cape
#

Might make sense to chunk it up by splitting on the leading date-time.

daring moss
#

yeah

worthy cape
#

Hope you're not allergic to C#.

daring moss
#

not exactly a fan but I had to use it for some uni courses before

velvet fog
#

Weapon Range not displayed in trade for non-english

neon plume
#

which dat files contain the data to pull available mods for a specific item?

hazy fiber
#

mods would have thier weights for each item type/tag

neon plume
#

right, I'm trying to find that

#

I remember I found it once, now I can't remember

neon plume
#

nvm I just realized they are in there

zenith zodiac
#

is a content hash of art assets stored anywhere? right now l'm checking if files have chnaged by extracting the dds and hashing it, just wanted to know if there's a faster way

velvet fog
rapid pagoda
velvet fog
#

oh..is it? I don't remember well

rapid pagoda
#

yeah. I don't think there's a content hash for files within bundles, but you can potentially rule out changes to a file if the bundle it's in hasn't changed

velvet fog
#

ya, I'm wrong, it's filename hash

rapid pagoda
#

there's content hashes for files and directories in GGPK, but most art files will be inside bundles

zenith zodiac
#

thank you

worthy cape
#

There's indeed no content hashes for bundled files out of the box, you have to lean on a third party system like Inya for that, if I had managed to keep it running.

worthy cape
#

One of the optimizations I do for data ingestion is that I keep a mapping from (bundle_hash, offset, size) to content_hash. That way I can tell given just the bundle index and the hash of a whole bundle whether any files inside are worth extracting.

neon plume
#

are the .ot metadata files indexed in any of the dat files?

neon plume
#

If a mod only has a default spawn weight, and it's 0, how is it possible that the mod ever rolls? E.g. ColdResistEnhancedModPhys is an incursion mod that has these spawn weights

worthy cape
#

The weights on the client only tell part of the story on how items generate, especially from non-crafting contexts.

worthy cape
#

Similiar to how other fields are for .dds or .ao/.aoc sans extension.

neon plume
#

kk ty

neon plume
# worthy cape The weights on the client only tell part of the story on how items generate, esp...

I'm trying to index all available mods on a given item, and the logic just escapes me. I have it correct for the most part, however, the 0 default roll is messing everything up. E.g. I am taking a Str helm as an example. At level 1 it can roll 46 mods (according to https://poedb.tw/us/Helmets_str#ModifiersCalc), but I keep getting lots more, including ones like LocalCriticalStrikeChance1 which is obviously a weapon mod, but it HAS a default weight, so I include it in the helmet roll... am I missing something?

worthy cape
#

As I understand it for natural rolling and natural drops, a mod with a zero weight shouldn't come up.

#

Delve/Temple item mods are grafted onto items in ancillary ways that may or may not be indicated in data files.

neon plume
#

yeah, but I'm trying to get all the possible mods that can be on a specific item, irrelevant of whether a player can craft it themselves

#

so the real question is how does poedb know it can or cannot roll

#

and ig craft of exile too

worthy cape
#

Heaven knows, all I know is that it's a right mess and many people have tried and gotten sad about it ๐Ÿ˜„

neon plume
#

yeah, sadly I'm stubborn af

#

and I haven't reached 80/20 yet so I'm not stopping

neon plume
frank drift
#

CoE relies on community feedback as far as I'm aware

neon plume
#

oh god please no don't do this to me

worthy cape
#

Not sure if RePoE cooks something meaningful too for them to consume.

#

@hexed mesa Did you ever solve the horrors around delve/temple items in your thingiemabob?

hexed mesa
#

no

#

i had a half baked solution, but calling trade api thousands of times to check whether mod x with rolls y-z can roll on a given item slot takes a lot of time, also probably not exactly within tos ๐Ÿคซ

#

although i quickly realised it would be much more work than anticipated, so i gave up on that, since some values are stored with multipliers (x per minute etc.)

#

and poedb just had a manually edited list for those, last time we asked when i was working on it anyway

worthy cape
hazy fiber
#

tbf most mods dont need special handleing its just delve/incursion/unveil/grasping mail mods right? (and you can get unveil mods by seeing what you can crafting bench onto an item)

neon plume
#

well fuck me I guess

hexed mesa
#

and elevated mods i think, but yeah should be just about that

neon plume
#

I assume none of these community contributed mod lists are public?

hexed mesa
#

although those should be manageable since they are probably similarly named as their normal versions

neon plume
#

I remember poedb having an API?

#

for anyone wondering why would I want to go through this hell, I'm trying to listen to the public stash tab fire hose and match all item stats to mods

neon plume
#

ok, so there are 1.4k mods that have only the default spawn tag with weight of 0

#

of which 422 are essences

hexed mesa
# neon plume for anyone wondering why would I want to go through this hell, I'm trying to lis...

yeah i tried to do that as well some years ago, its really fun at first, but then you start hitting weird problems like delve/incursion mods,
trade mod stats being different than those in game,
trade mods being merged (lets say you have an item with two mods, % inc armour, % inc armour and + maximum life, then two %inc armours are merged into one line) which is a problem since the api doesnt say how many mods the item has, and even if it did, in some cases its potentially possible that two or more different sets of mods would result in the same stats,
i assume there could be some problems with legacy mods in standard if you care about that

carmine merlin
#

Are you using mod Domains and GenerationType to put the mods into categories?

neon plume
#

I only care about league, and also it does tell you the amount of mods:

hexed mesa
#

huh, thats nice i guess, must have changed after i stopped working on it

carmine merlin
neon plume
#

thanks, I've heavily inspired from that

neon plume
#

ok, so there are 9k default 0 mods total, 1.4k of them are completely fucking random, and the rest have at least one other weight tag which can sort of hint at what it can roll on

#

this might actually be a showstopper if I have to manually categorize 9k mods

#

unless someone wants to help out lol

neon plume
#

by any chance is there an API for poedb?

rapid pagoda
neon plume
#

I just noticed poedb has a json blob on every page with literally all data I would ever want... I would really like to know whether that data can be used?

frank parcel
#

ok what is going on with this: https://poe.ninja/pob/l4W if you import it into pob it changes to cerulean ring and poe.ninja shows small life flask when it's actually ruby flask

formal kraken
frank parcel
#

that would make sense

lean phoenix
hazy fiber
#

no s at the end of ancestor

lean phoenix
#

I know now, and what API is for Tattoos ?

lean phoenix
#

Siet I tryied this ๐Ÿ™‚ I must have made a typo somewhere, THX !

carmine merlin
lean phoenix
#

I sow that tip in google but I didn't know how to use it completly now I know THX !

#

For listing of Currency for develop tools etc, this is the best way or there is other sources ?

jade pier
#

hey guys Iโ€™m new to Poe and im loving the free community tools. Does anyone know if any of the devs want any help? Iโ€™m down to pitch in and contribute

frank drift
hazy fiber
hazy wigeon
#

Just released a new version of PoEFilterX, v3.22.0

Mostly just has a new feature I am excited to announce, Abstract Filter Blocks, which you can read all about here!
https://github.com/SteffenBlake/PoeFilterX/wiki/Code-Guide#abstract-blocks

To update to the latest version of poefilterx, just use the installation guide here, specifically via The Toucan Way (as thats the only installation method that has LTS now):
https://github.com/SteffenBlake/PoeFilterX/wiki/Installation

For any further info, feel free to check out the README on the github for the project:
https://github.com/SteffenBlake/PoeFilterX

paper zephyr
#

@fickle yew would it be possible to enable blitz charges by default for all marauder classes just in case they run the forbidden flame/flesh? Think pob would require them to equip the forbiddens to get any benefits anyway

fickle yew
flint parrot
#

Hi, can anyone help me with public stash API? I see that ilvl is marked as deprecated in the official docs. Is there any other way to get the item level? ivemLevel field is never present (at least in stashes that I queried). Here's an example belt from one of the recent stash updates:

%{
    "baseType" => "Leather Belt",
    "explicitMods" => ["+13 to Strength", "+41 to Armour",
     "+19 to maximum Energy Shield", "+24 to maximum Life",
     "+15% to Fire Resistance", "+32% to Cold Resistance"],
    "extended" => %{
      "category" => "accessories",
      "prefixes" => 3,
      "subcategories" => ["belt"],
      "suffixes" => 3
    },
    "frameType" => 2,
    "h" => 1,
    "icon" => "https://web.poecdn.com/gen/image/WzI1LDE0LHsiZiI6IjJESXRlbXMvQmVsdHMvQmVsdDMiLCJ3IjoyLCJoIjoxLCJzY2FsZSI6MX1d/93af17affd/Belt3.png",
    "id" => "9f3a8538d17575bd1ba92b5e5f629f9c91ecb402b79a98d4d53cbfcadf4f5ee7",
    "identified" => true,
    "ilvl" => 69,
    "implicitMods" => ["+31 to maximum Life"],
    "inventoryId" => "Stash27",
    "league" => "Standard",
    "name" => "Dusk Shackle",
    "requirements" => [
      %{
        "displayMode" => 0,
        "name" => "Level",
        "type" => 62,
        "values" => [["40", 0]]
      }
    ],
    "typeLine" => "Leather Belt",
    "verified" => false,
    "w" => 2,
    "x" => 5,
    "y" => 0
  }

Can I rely on ilvl field for now, or is it going to be removed in the near future?

Also curious what does empty id mean. It is listed as an optional field, but I haven't seen any items without id yet.

round hazel
swift beacon
#

If you're looking for the glyphs they're at /art/textures/interface/2d/2dart/uiimages/ingame/hargingerglyph

#

monstervarieties.dat maps the glyph images to the monsters

#

/metadata/ui/uisettings.xml contains the names of the glyphs

round hazel
#

well, another question. Did monster's skill still store the data on client side? A long time ago there is datamine-able parameter "skill_art_variation", did it still exist in local side data?

round hazel
strong badge
#

Salรผt everyone ๐Ÿ™‚ how long did yall wait for your OAuth request to be fullfilled?

worthy cape
#

No personal experience but I believe that they normally get around to them fairly quickly.

#

Might be affected by peeps having some time off and other transient stuff like that too.

hexed mesa
#

around a week, but i also sent the email on friday so not exactly an ideal time for emails. subsequent emails were answered within a day or two since i had some questions

#

although given novynns status i wouldnt expect an answer any time soon

strong badge
#

ah shit... im in the middle of bringing exilence-next back to life

#

got everything running so far and just need the oauth client id ๐Ÿ˜

formal kraken
strong badge
exotic egret
#

I might have missed one but I believe I was up to date yesterday

flint parrot
strong badge
olive spire
#

Hi, is there any up2date list of whats 'allowed' as a functionality for a 3rd party tool? Thank u in advance :)

exotic egret
#

Making me work on a Sunday CE_inPain4

strong badge
#

why is cloudflare being so mean to me cat_cry

#

doing the exact same api call in postman works flawless...

rapid pagoda
strong badge
olive spire
strong badge
#

i can provide you some ray id's if you want ๐Ÿ˜›

frank drift
#

are you setting a user-agent?

worthy cape
strong badge
#

Electron sets one automatically

exotic egret
strong badge
zenith zodiac
#

is there an api l can call to get the 'All Skills' percentage data from poe ninja?

grave wren
#

If it's displayed I'd say open network tools with f12 and just check the xhr requests

zenith zodiac
#

l tried that first; l think it's more complex than that

velvet fog
#

@formal kraken Is the url length of pobb.in url fixed to 12?

formal kraken
formal kraken
#

Can someone double check something for me please, at skillgems.dat64 the row with base item id 5995, what do you find at index 195?

#

(context: poe-dat-viewer is showing me different data and I just want a 3rd source, because everything else seems to match)

worthy cape
#

What do you mean by "index 195"? The rows seems shorter than that.

#

(115 bytes)

formal kraken
#

@worthy cape oO

#

why is my row 215 bytes

worthy cape
#

Gah, I can't count.

#

PDV only shows the last two digits of sizes, so I missed one hundred-cycle.

#

Row 0 has a 4-byte integer there, value 3.

formal kraken
#

what id is row 0 for you?

worthy cape
#

BaseItemTypes ref 5995

formal kraken
#

why is poe-dat-viewer showing a 1 there?

worthy cape
#

I don't have any tooling of my own to cross-ref with.

#

Does it still do it if you look at the site in a different/private browser?

formal kraken
worthy cape
#

I wonder if you've got stale data somewhere.

formal kraken
#

wtf

worthy cape
#

What game version does the Import tab say you're on?

formal kraken
#

in incognito it shows a 3

formal kraken
#

okay so it's a browser cache issue, incognito shows the 3

#

thanks

#

I should have become alerted when the first row didnt match

#

nice it works

worthy cape
#

Ooh, trade searches are broken.

wintry spruce
#

F

remote ether
#

Oh it's all trade searches and not just Awakened?

worthy cape
#

Trade site itself is having problems on searches.

remote ether
#

Great, I'll stop debugging then. ๐Ÿ˜„

worthy cape
#

@remote ether It's partially back now - some stats like fractured res appears as "Unavailable Stat" and yields no results.

remote ether
#

sweet, thanks for the ping

worthy cape
#

45 minute response time from support tonight, pretty good considering the time of day ๐Ÿ˜„

floral dawn
#

Some incomplete data ended up getting cached, refreshing the page should refetch the stats and get rid of the "Unavailable Stat" problem

blissful solar
#

can somebody help with the issue, where my poe awakened trade crashes as soon as it launches, like the icon showes up in the icons tray and then my pc lags for like few seconds and then icon of awakened trade goes away. I tried uninstalling the reinstalling it multiple times as well as tried running it as adminstrator. I would really appreciate some help with fixing this issue.

muted igloo
#

Exilence sort of re-released today & I'm going to try to help the new host out with things. However, my app is giving a 403 error after I hit authorize on the oAuth page. Several users were able to log in, I'm the only person that has reported this error so far. Any ideas what could be causing it?

pseudo ocean
#

hey realtively new player here, trying to create a spreadsheet that can help me to monitor some prices (instead of having many poe trade tabs opened).
I tried searching for it but most of the spreadsheet others shared are using NINJA api
is there one that is using poe trade api? because I am actually playing on Garena server
or maybe some of you are kind enough to show me how or give me a head start.
Thanks in advanced!

formal kraken
muted igloo
#

ignore the garbage prints, added them in to try to narrow down where this was happening. @strong badge thinks that poe's cloudflare is blocking me for some reason, he had the same issue before he added the user-agent header but we can see that in my headers so it shouldnt be an issue

#

headers

formal kraken
#

The error should countain a json payload

#

Also is this coming from excilence or the poe api?

#

Looks like everything is excilence related

muted igloo
#

don't see one, unfortunately the only way I can see this error is in the developer tools tab in Electron, which I'm extremely unfamliar with. The response isn't showing properly and I don't know how to fix it, this is all it shows lol

formal kraken
#

Do you get redirected to the poe login page?

#

Also try logging in at https://pobb.in if that fails I can see the API responses

muted igloo
#

PapaNoob says it's happening at the poe API, he knows a lot more about the server stuff than I do, I'm a backend dev IRL so sorry for being a bit slow at this stuff

#

i do

#

that succeeded

formal kraken
#

okay, so the backend needs to do a request to fetch the token, if that fails it does carry an error code (json)

#

you probably wont see much if you get redirect to the poe site and back

muted igloo
#

the null print in my first screenshot was actually from trying to print that error code, so if there is none then maybe it is on the exilence side?

formal kraken
muted igloo
#

paolini1995

formal kraken
#

this is a request that the backend has to send to the poe api

velvet fog
#

chrome could enable cross page logs

velvet fog
#

how to decide the main skill in pob? writing a pob code that supports Chinese display.

strong badge
#

Its obviously my cf blocking the request

#

But why

muted igloo
#

we whitelisted my IP on cf and still nada

velvet fog
#

maybe adblock/ublock?

formal kraken
formal kraken
#

@velvet fog is there anything I can do on pobbin for chinese players? (Do they even use pob?)

strong badge
#

Got the ray id from him so will dig into it now

velvet fog
strong badge
#

Lmao cloudflare has a default rule to send all peeps from the us to a challenge-site

#

Its working now ๐Ÿ˜„ thanks everyone

formal kraken
#

@worthy cape please help me real quick, where can I find an index over all file names? Is it in the _.index.bin?

formal kraken
#

thanks

worthy cape
#

Each record in the path rep section corresponds to a directory, the size is for just the files in the directory and the recursive size also covers children.

#

There's no explicit mention of the directory name, you have to cut it out of the first filename you generate to tell where you are.

formal kraken
#

I just wanted to export some files now I have to implement this riffLul

worthy cape
#

All the cool kids call out to bun_extract_file.exe ๐Ÿ˜‰

formal kraken
#

cant say I understand it yet, but I'll just follow your code

#

I mean technically I am already linking with it ... I would just have to add a C API

#

argh why is the "let me just do this real quick" thing the most complex

worthy cape
#

I think I've reimplemented this half a dozen times across tools.

formal kraken
#

god damn it, now I have lifetime issues (not necessarily issues, I just wanna be lazy)

formal kraken
#
[src/bundle/high.rs:197] BundleError::Io(err) = Io(
    Error {
        kind: UnexpectedEof,
        message: "failed to fill whole buffer",
    },
)

I am about to give up

#

lol

#
impl Discard for &mut &[u8] {
    fn discard(&mut self, n: u64) -> Result<(), BundleFsError> {
        **self = &self[..self.len().min(n as usize)];
        Ok(())
    }
}
#

find the error...

worthy cape
#

impl Keepcard

formal kraken
#

@worthy cape in case you're very bored, https://p.dav1d.de/Ezo.rs tried porting your python code 1:1 but something is off (getting out of bounds errors and weird strings)

#

oh I am actually regraded

worthy cape
#

Slice seems undersized.

formal kraken
#

sorry for the ๐Ÿ”ด

#

forgot to add the offset to the size

worthy cape
formal kraken
#

you're a good rubber duck

worthy cape
#

I've definitely done the same thing many times.

#

I love languages where I can express it cheaply as [offset..][..size].

formal kraken
#

oh

#

I should do that

formal kraken
#
        "34098": {
            "skill": 34098,
            "name": "Mind Over Matter",
            "icon": "Art/2DArt/SkillIcons/passives/heroicspirit.png",
            "isKeystone": true,
            "..."
        },

Shouldn't the icon path be all lowercase now with the new bundles?

oak estuary
#

They only get lowercased during the bundle process, so any strings referring to those files will still be mixed case

waxen musk
#

whats this {0:+} quantifier for chain hook? is it a typo?

#

Chain Hook has {0:+} metre to radius per 12 Rage

oak estuary
#

It's GGG's internal format for numeric descriptions. I don't know if the community has it documented anywhere, tools have their own implementations to parse the format and insert the correct values.

worthy cape
#

It looks quite a bit like fmtlib or Python placeholders, where the part before the colon indicates the argument to use and the part after the colon a format spec.
In that language, + means to emit a sign both for positive and negative numbers.
https://fmt.dev/latest/syntax.html#syntax

#

You'd typically have a d or f there to indicate the type, but it's not required.

#

(well, fmtlib is inspired by Python)

oak estuary
zenith zodiac
worthy cape
#

I wonder when/if they'll get around fixing the Field Item that still mentions 60 units ๐Ÿ˜„

carmine merlin
#

That's my bug report above. I still think it not having the d is a bug cause its the only line in the whole stat descriptions file that uses that way of formatting

waxen musk
#

its always been +d before

#

ah ok

oak estuary
#

Oh, yeah, then refer to LocalIdentity and his bug report ๐Ÿ˜„

worthy cape
#

Was slightly surprised that you could omit the type, but considering that you can spell a placeholder just {}, I guess it makes sense.

waxen musk
#

well i based my code on pypoe which supported +d d and empty string

formal kraken
#

Does anyone know what the site visibility in baseitemtypes means?

#

it appears to have e.g. royale and other unused items/gems, is it safe to assume everything which is currently not in the active game has it set to 0?

waxen musk
#

doubt theres a reliable flag for that. since its ultimately determined by drop tables and vendor stocks

formal kraken
carmine merlin
formal kraken
#

good enough for now for my usecase, but longterm I'll have to think of something better or just "generate all"

carmine merlin
#

A few bases like Two toned boot variants have it too. Not sure why though

zenith zodiac
#

there's also _NAME_APPENDIX_BY_ID, which is used to disambiguate items that have the same name - if there are multiple items with the same name and they aren't in there they get skipped.

formal kraken
#

that's very helpful, thanks

rapid pagoda
livid mist
#

Has anyone done any sort of bulk fetching of atlas passives? I'm fetching atlas passives for several hundred people for BPL and it seems like I get IP banned if I do it too often, curious if anyone else has seen anything like that

zenith zodiac
livid mist
#

I'm looking at the rate limit headers for the passives api

#

DEBUG:root:Got status code 200 with text and headers {'X-Rate-Limit-Policy': 'league-account-request-limit', 'X-Rate-Limit-Rules': 'Account', 'X-Rate-Limit-Account': '5:10:60,10:300:300', 'X-Rate-Limit-Account-State': '1:10:0,1:300:0'}

#

my code respects those rate limits

zenith zodiac
#

yeah idk maybe you'll get better help if you can include all relevent information in the initial question instead of vagueposting and waiting for the details to be extracted from you like teeth

oak estuary
livid mist
#

Yeah it does dynamically update the limits.

#

The same code that's fetching atlas passives also is following the stash tab API, and it properly waits when I fully catch up

#

So I think it's following the rules

#

although my logging wasn't working right earlier today so maybe my code is broken for the league accounts

zenith zodiac
#

no worries. if you do get more information or figure out what the issue was please report back. l've been considering crawling those apis and would be interested to hear about any strange behaviour or common pitfalls. one thing l think l read somewhere is that a HEAD request doesn't affect the state, so you can use that to get the current state without affecting your limit

livid mist
#

I haven't tried HEAD requests, might try that

trail cradle
#

@fickle yew I think the label is wrong here

wraith whale
#

gems and replicas doesnt working anymore in curio display , 2 days ago its working great, but today it stop working, when pressing combination nothing happens, pls help or show where this problem solved.

worthy cape
#

@wraith whale This place is for tool development. For game problems you get to use the bug report forum and hope it's loud enough that someone notices.

wraith whale
#

As last resort, go to Discord. But if you don't describe something specific about your problem, you will most likely be directed to this page.

worthy cape
#

I don't understand what you're trying to say there.

#

For game help by other players, use the relevant forums or help channels on Discord. For game bugs, GGG are the people you talk to.

#

Neither of those topics is for here.

oak estuary
#

I'm guessing they're wanting to get help with the OCR piece of Awakened Poe Trade, judging from "when pressing combination"

worthy cape
#

It really helps if you mention what tool you're using if you're asking about a tool.

round rivet
#

Howdy people, I was just wondering if there is some simple way to extract all the images from the gamefiles. I've been getting back into drawing again and would be cool to just get it all dumped into a big folder to browse through

#

Or alternatively just provide a link or something if someone else has already done it, thx in advance

worthy cape
#

If you're fine with DDS files, bun_extract_file extract-files --regex "C:\Games\Path of Exile\Content.ggpk" .\stuff ".*[.]dds"

#

(path to Steam game folder also works for source)

#

Many UI elements and the like are in sprite sheets, indexed by Art/UIImages1.txt.

round rivet
#

Hmm well, my coding knowledge is pretty limited but i know a few basics

round rivet
#

Well that would be the easiest, but if its not to complicated i can maybe figure out how to get the files from dds

formal kraken
#

Ill dm you

worthy cape
#

Programs like XnView can browse them and do some amount of bulk conversion, not sure if it does a whole tree.

round rivet
#

Thx alot 20fusing

worthy cape
#

I use it to look at stuff all the time.

oak estuary
#

I figured zao would've mentioned his poe-utils repo to convert files from dds

round rivet
#

This is kinda straining my brain, but basicly i would use the Bun to extract dds files from the game, then use XnView to open it and export into jpg/png format? ๐Ÿ˜„

worthy cape
#

There's a lot of files, heh... Done, 119601/119601 extracted, 0 missed.

round rivet
#

Hey zao i sent u a DM if u feel like giving me a short explanation for small brain kek

cold wedge
#

Hi everyone

I have questions about the Poe TOS, there's something unclear to me

Executable apps that interact with the game or game files
    This behaviour is strictly against our Terms of Use (section 7b).
    Creation or use of these type of applications will result in immediate account termination.

What qualifies as "interracting with" ? isn't tools like Awakened PoE trade, and the Overwolf thingy interracting with the game ?

Executable apps that run independently from the game
    Automation of key-strokes (or other inputs) that affect the game in any way must follow our macro rules
        The resulting function must only perform one action that interacts with the game (sending a single chat message or command counts as one action).

There's a feature in overwolf I believe that will thanks a player after a trade and leave the group when you press a key
isn't that 2 actions, and therefore not respecting the macro rules ?

worthy cape
# cold wedge Hi everyone I have questions about the Poe TOS, there's something unclear to me...

The interaction described in the first block is about reading process memory, editing game files, hooking rendering, reading/manipulating network traffic, stuff like that.

The second block is more detached - APT for example has a separate window floating above the game and takes great care in adhering to the action constraints. Each binding in APT performs a single identical action every time it's pressed and has no internal latching/ratcheting logic that one might try to circumvent the rules with.

Overwolf is notorious in violating ToSes, putting the onus and blame on the people contributing the individual game addins to not do naughty stuff, but they're inherently rotten and don't give a hoot about the integrity of the game. Things like the thank+leave you describe is against the rules, as is a lot of the other primitives they expose like reading game memory. There's many reasons why we really don't like that software around here.

cold wedge
#

For some context: i'm thinking about making a tool help with trading, I'm trying to figure out what is ok to do and what isn't

worthy cape
#

Elaborating on the "one action" thing, stuff like flask rotation buttons and reactive autocrafting are things that are explicitly ruled out by that rule.

The flask thing would be pressing a single button that every time it's pressed drinks the "next" flask, replacing the 12345 dance with XXXXX.
Autocrafting like "only apply the orb if the item text read doesn't include mod X" fails the single and same action rule as behaviour changes based on internal/external state.

#

You can get far with following not only the wording of the rules but also the spirit of the rules and considering what is fair and good for the health of the game.

You can always also ask here or in other tooldev venues for feedback on your ideas.

cold wedge
#

thank you for all those infos and for your time

worthy cape
#

Taking something like a trade helper program like Mercury - tabulating and keeping track the pending trades with distinct UI elements for each trade to accept/reject/thank is fine. Having more dynamic functionality like "invite the next player in the queue" tends to not be.

cold wedge
#

I'll end with a last question if it's ok

#

some times ago there was a UI that will display the list of ppl mping you to buy stuff, with some buttons for standart response. Things like, "busy, no can't do", "can you wait?", "/invite", etc

#

I cannot find that UI again and I didn't like it very much to begin with so I'm planning on doing my own. if there's a button in that UI that will @ thanks at someone and /leave, is it ok or is it against the ToS ?

#

theorically this isn't even macro as it isn't a key pressed in game, but a button pressed in a software outside the game. It might be even worse regarding the ToS than I initially though.

#

what are your though on this ?

worthy cape
#

sec

cold wedge
#

sure