#tooldev-general
1 messages · Page 101 of 1
Which reminds that that I still have to add drop sources for the Conqueror items
Is there any complete info on which Conqueror drops which uniques?
wait you're sexy
@velvet fog
is there a list of all the types
nvm found a reddit thread
ty
perfect 👌
hey there guys, saw that poemap.live does have OAuth for its login, but I wasn't able to find any documentation online about it (was thinking about developing a tool, and I would need that feature). any suggestion? 🤔
check the pins
Check the pins
okay, my bad! thanks 🙂
does any1 know why poe buddy is down? when trying to get on it it says 404 not found.
hi all, just found this channel
posted this a couple days ago, lmk what you think 🙂
@cold stream this was posted before, sadly discord search function is broken (if you want to see some responses to it)
reddit```
cant get the messages around it but you can scroll up
"English": [
{
"condition": [
{
"max": 3,
"min": 3
}
],
"format": [
"ignore"
],
"index_handlers": [
[]
],
"string": "Socketed Gems have +3.5% Critical Strike Chance"
}
C# and Rust interop sure is a bit sketchy, but managed to glue together enough examples for this:
using Backend.Pack pack = Backend.Pack.Open(@"C:\Games\Path of Exile (Standalone)\Content.ggpk");
_ = MessageBox.Show(string.Format("Root directory has {0} entries.", pack.RootEntryCount()));
Or you could just use my ggpk library
For that thing, for sure.
I've got all the other file formats wired up that I actually care about.
https://github.com/andreandersen/PoeSharp/tree/new make sure to use the new branch for GGPK
no nugets yet though, sorry
I found this talk the other day and lifted a bunch of implementations of ref/out type glue for interop: https://www.youtube.com/watch?v=0B1U3fVCIX0 , https://github.com/KodrAus/rust-csharp-ffi
Why would you ever want to introduce unmanaged code into your managed codebase when recent versions of C# have made writing high performance code in .NET more accessible than ever before? While C# has been pushing downwards into the realm of "systems programming", Rust, a lan...
is it possible to compile rust libraries into c-like dlls?
that you can use as extern P/Invoke from C#?
Yes, both DLLs and static libraries.
i guess you just gotta make sure they're blittable?
ah yeah they're pinvoke
Yeah, things are either blittable structs or by pointer.
As always with FFI, you've got to go the boring route wrapping in and out of C along the way.
Got no idea if this would scale well or if there's a good boundary between Rust and C# for this viewer project, but it's fun to try.
Beats doing the same thing with C++ 😉
yeah
.NET Core 3.1 is quite fast though, so if you ever feel inclined
I have to say I am being a little curious on Rust, but also Elixir
The authors claim that there's quite less overhead for the interop when building AoT.
But as always, you can create really slow C# apps too
yeah, I can imagine that
but how does the AOT work?
Something with CoreRT, I've got no idea how these things fit together.
I guess it gets the opportunity to just inline native calls as it compiles.
The example I'm working off builds a native DLL for regular mode and a static library for AoT compilation.
Biggest problem I've got right now is that my C# assembly is not rebuilt as I alter the Rust code, but I've got a MSBuild guru to poke about that.
Time to hit the sack now tho, been pushing forward on this code while waiting for the clock to get late enough 😄
Thats quite early bed time. Have a good night
I've been all over time-wise for the holidays, been incrementally syncing up with work hours the last few days pushing myself a few hours further per day.
Should be in sync on Tuesday when work resumes, I pray.
You wake up very early when going to work, or you've been falling asleep in the middle of the day during holidays? o.o
The latter.
Ah. I did the opposite. Was coughing and sounding like Barry White.. still do.
Rip
@fickle yew this page is misleading: https://poe.ninja/challenge/watchstones
Without knowing the level of effort, I have a few suggestions to offer:
- a new filter-toolbar data-filter-select dropdown that lets you filter the "uses remaining" (https://poeapp.com/search/Metamorph/HZTyQY). This might be a little awkward because different watchstone have different maximum values, up to 18. (e.g., 18 dropdown items might feel weird but maybe not)
- an additional table entry for each watchstone type that has ", unused" (or something along those lines) which shows the current price/trend of a fresh watchstone
@inland kestrel That's a good point. Maybe it would actually make sense to just divide the original price with number of uses remaining and list an approximation of cost per use.
was about to write that
That's also an option
Having a listing for 11 uses left and 12 seem superfluous..
Agreed
Although having many uses remaining could be practical when buying in bulk and as such they could be more valuable
I care mostly about wanting to buy them for juicing.. so I do put a premium on having to do minimum trades
having a toggle for unused doesnt seem that bloaty
But overall I think having fewer rows is better
However, I think there is a separate use case for someone who wants the cheapest, 1-use-remaining for teching to awakener level 8 quickly
Hmm what about a combination then.
Avg price per use but grouped in "use groups" of 5.. 1-5, 6-10,...
maybe, but might be confusing/misleading still imo
I think most people don't realize that the various watchstones have different maximum use remaining 😛
I think I'll have to look at the data
just do the average and the unused perhaps and then the weight of specific calcs has to be done by the user on tradesite
Whether the price per use actually is higher with many remaining
Yeah, I don't have the right solution but wanted to offer some suggestions to look into. And offer the two main scenarios I have for them 😛
Simplest might also be just showing the max-use value
The max use value?
that's what someone who just got the item and wants to throw it up for would want to go by
well showing unusued gives you a good overview for those looking for juice, and avg price per use gives an idea to those looking to minmax or simply min
if somebody is really into minmaxing they can script their own query results via any search sites, similar to how many people are doing for jewels already
So for Misinformation you'd show the current average value for it when there are 11 uses remaining. For Terror you would only use the average value for when 12 uses are remaining
... so it's always the price of the item as it drops on the ground 🙂
^ this is a good question. I assumed yes
guys i have a problem with POE Trade Macro. Can i ask a question here or does a different chat for bugs exist?
@modern lava If your question is about how to modify or otherwise develop on the trademacro codebase, maaaybe. If it's end-user support type things, heck no - then aim for the issue tracker or other community resources.
@worthy cape ok. Thanks anyway 🙂
what is the macro/tool that people use to put stuff on trade window fast?
for example if they trade cheap oils
i have traded with people that put 600 oils in 2 sec
they are currency bots
or they are using some sort of AHK script that is potentially against the rules but potentially not
either way not worth
oh so the so called currency bots are not allowed?
to be fair, bots is an overloaded term in this community
Is there an api to transform the trade search query id "LgyQJkGtn" into query filters?
@inland kestrel Aw. It seems you can't filter on remaining uses on the official trade site 😦
Thanks
I was just about to link that -- yep
@inland kestrel Deployed new overview. It now lists a line per "uses remaining". Probably the easiest way to not confuse players who just want a simple price. poe.trade and poeapp searches will do the correct filtering - official will when they implement it 🙂 It should be live shortly.
Okay, cool. I'll probably get a chance to check it out when I get home. About to head out from work in a minute
I'm heading to bed. Hope it doesn't explode 🙂
It's the only way
I agree, haha ❤️
@compact isle perfect, my command line will look sane again
anyone happen to know how many qps it is to keep current with stash tab updates? is it 1000/s 10k/s 100k/s or 1m/s
qps is wrong term, update/s is what im wondering
It can be more than 5 MB/s in terms of json data to parse, analyze and store
thanks dude
@fickle yew those mods are all available now
@compact isle Great. I'll add the filtering on my links.
i have this error using acquisition all of a sudden. was playing and it happened no idea why. any ideas?
@compact isle Heya, there's something wrong about the OATH Api
Starting today morning, FilterBlade is giving:
{"error":"invalid_client","error_description":"No client id supplied"}
upon trying to log in with your POE account
While it might be something on our side, we didn't make any changes to the Filterblade code recently
we did a patch today but nothing OAuth related was changed
hmm
is the client id being supplied would be my first question
looks like it's just loading the endpoint without any params
Yeah, im on the road and on mobile right now, but I wouldn't understand why it suddenly starts behaving that way
ah may be filterblade using an http link instead of https
not sure what would've changed that behaviour but I'll see if I can find out
Whiiile I have your attention 😅
I have 2 additional questions about the filter lists
- Are there any specs about the API? I'd like to automate the filter update process there
- Is there an option to enable Oath to use the profile-filters scope?
ideally this would enable direct upload to the poe profile from filterblade
which would probably be a very nice QOL feature as well
@compact isle thanks :)
if I remember correctly we had some changes we wanted to make first
I'll check back in on progress about it tomorrow
alright, thanks!
Is someone using Aspnet or visual studio 2019? I am trying to help out on a project but somehow I am not able to make new xaml windows. Even google wont help me with the issue, like its just supposed to work.
@knotty imp make sure you have the workloads required for whatever you are doing. Open the Visual Studio Installer -> Modify on Visual Studio 2019, then make sure you have .NET desktop developer, ASP.NET and web development, and .NET Core cross-platform development
I think those are the main 3 you want
Ah ive got 2 out of the 3, dumb. Thought I had em all
Had to reinstall 2019, still had the preview
yeet
Hey, I made a bat file for myself so trademacro and mercury trade starts with the game. Now I wanted to add POE Trade Companion.
Maybe a stupid question, but is there a way I can bypass the asking for confirmation admin thing? Maybe in the .bat or a setting in windows for this folder?
For Trade Macro I did it with -noelevation, because that was an argument which I could pass.
Just modify ur user account control in the control panel of windows @calm lodge
But is there a way to only turn it off for that programm and not for all?
If not I would do it like you suggested, thanks
Don’t think u can do it for a specific app
Maybe u can do to comparability (on the script shortcut) and like make it run not as admin (not sure if it can work that way)
you could try this https://winaero.com/blog/create-elevated-shortcut-to-skip-uac-prompt-in-windows-10/
Thanks for the help @fast citrus, but im just going to turn down that slider I think. Because I cant remember a time I clicked no 😄
Haha yeah, I'd like to hope that if we're savvy enough to be making batch files we know better than to download the program we were emailed to claim our overseas inheritance to a long lost family member we never knew
Wait, u get that too? How are they gonna split the money now..
when the deposed prince of nigeria asks you for money you don't just tell him no
kk
@compact isle I emailed you a list of some odd stat_translations, checking in to see if you got it
you could do something like a popup on screen that you click that pastes the message
yep received, Mark isn't back yet but it's in the queue
i have it currently set up to manually click the result and it auto pastes it into poe
anyone know a bit about parsing the passive skill tree data that I can PM?
get json file from https://www.pathofexile.com/passive-skill-tree and the format https://pathofexile.gamepedia.com/Passive_Skill_Tree_JSON
beautifully btfo Novynn
the follow up comment was better
@velvet fog hello, thanks for the links, but I have those already. my first question is for the root node's out key: are they in any particular order?
I was assuming they were ordered by class ID, e.g., 0-th index would be scion, but the 0-th node.out element is actually ranger and the rest are in some other seemingly random order
https://pathofexile.gamepedia.com/Passive_Skill_Tree_JSON#root doesn't mention the array ordering
I've not actually ever looked into it, but you might find something here: https://github.com/PoESkillTree/PoESkillTree.Engine
@snow whale my first guess would be "they're arbitrary", tbh
possibly with a dose of "when the skill tree changes, new nodes get new IDs"
Why would scion be the 0th index if it was the last class added? 
Everyone knows she's the favourite.
the root out is from Metadata/PassiveSkillGraph.psg and I think it is random order
@velvet fog thanks! i'll give that a look and ask my other question tomorrow
they are starting passive, order is useless
@snow whale The "out" field is just a list of node id's in no particular order. The "root" is the same (slightly fewer fields) as a node in the node list
If you have any questions, let me know.
@fast citrus The Engine doesn't quite have a skill tree implementation yet. I have been working on that: https://github.com/PoESkillTree/PoESkillTree.Engine/tree/passive-skill-tree/PoESkillTree.Engine.GameModel/PassiveTree
Ahh, I just saw your name attached to it and figured you'd probably be the most likely to have an answer 😛
This is also an ok example at messing with the tree: https://github.com/EmmittJ/SkillTree_TypeScript
Are spawn weight values no longer available in the ggpk?
or is that only for certain modifiers
How can I listen to messages recieved in lets say C#? are there any guide or pages with info like this?
Read the client.txt in the games log directory
@knotty imp You are looking for something like the UNIX tail -f command
Start from there and try finding a C# library for that
Dang, dis gon take me longer than I thought. Thanks 🙂
I can give you a rough sketch of what I did in python to fill my challenges a few leagues ago: https://gist.github.com/FWidm/5122b37607aefc206bcbb9ebefa6abe4
Aaah thanks
For Python, there already is https://github.com/bgreenlee/pygtail
Pygtail reads log file lines that have not been read. It will even handle log files that have been rotated. Based on logcheck's logtail2 (http://logcheck.org) - bgreenlee/pygtail
It does help faust
@golden bane neat thanks
I've used it for a work related script in the past, can recommend
Ah, Ive found a C# solution, it works

This is almost getting ridiculous, but me and a mate have also been working on a trademacro clone :/
You guys think we should just give up?
Is your feature set the same as the others?
You could instead help contribute to the others
I think we have a lot more already actually 😦
Ultimately it depends on whether or not you care about people using your project. And if you do- whether or not you can convince the community you have novel features the others don't
Ohh I downloaded that one last night to try out and then my internet died, thanks for the reminder
Yeah lol, we saw your random star on github on this unreleased tool 😂
Is there any way to run .jar files as an admin?
I think you can "java -jar yourprogram.jar" in an escalated command prompt
Ahh ok yeah, just not the simple properties > always run as admin trick
Is it broken? If it's something about a JNI error you have to update your java version
There's a way to package the runtime environment with the app, but we haven't gotten that far yet
nah, I had PoE running as admin and the overlay wasn't displaying. Works now I've reopened poe without admin
Ah 🙂
I do like the way the overlay looks, nicely done 🙂
Cheers!
If you alt+a on some maps theres a screenshot of the boss
It's my favorite feature :p
Only works on maps in Haewark Hamlet
No time to run 154 maps yet haha
Ohh it was lucky the map I happened to have in my inv was a haewark one lol
but I did see the request for map boss screenshots, if I happen to get close enough to one I'll try to help 🙂
😍
Can you compile it so you don't need java installed?
I really, really, really despise having Java installed
@mortal bone thanks a bunch! https://github.com/EmmittJ/SkillTree_TypeScript/blob/master/models/SkillTreeData.ts#L95 was very helpful to understand how to find the start nodes without needing to check the root.out key
Yeah, the spc is the starting player character field and it will be a list of one
@elfin beacon hopefully just one more question, if I parse the out list for the starting marauder node I get these nodes:
Out nodes for: marauder
[
{ '31628': 'Melee Damage and Life' },
{ '50904': 'Life and Armour' },
{ '17765': 'Juggernaut' },
{ '24704': 'Chieftain' },
{ '29294': 'Berserker' }
]
Which makes sense because 'Melee Damage and Life' and 'Life and Armour' are the first nodes from the Marauder starting point. But if I check the Witch starting node (similar problem with templar, shadow, duelist, and scion), I get:
Out nodes for: witch
[
{ '57264': 'Spell Damage' },
{ '60791': 'Necromancer' },
{ '16023': 'Elementalist' },
{ '18378': 'Occultist' }
]
So the Witch's starting node's out list is missing the ID for the Energy Shield and Mana Regeneration node at her starting point. Any insight on the missing out node IDs?
@snow whale the out IDs aren't super reliable. You need to setup the the outs properly: https://github.com/EmmittJ/SkillTree_TypeScript/blob/master/models/SkillTreeData.ts#L60
Also, the ins are always a list of ids of the node you are on. (I.E. { 'id': 1, ..., 'in': [1, 1, 1] } and I don't know why)
heh playing around with the stash api, i can see why poe trade is always behind
the api just can't keep up
seems like building it around whole stashes instead of items was a mistake, since every time someone reprices an item in a quad tab it has to resend potentially hundreds of items
There's several aspects of the river that are a bit silly, information-wise. 🙂
But yes, it's definitely not keeping up well.
it's obviously useless for making a trade site (sorry poe trade), but if it can't even keep up with listings, it's useless for... well, everything
eh cool apparently it also sometimes returns invalid json
tracking that down will be fun
Can't say I've heard any rants about that. Sounds like fun.
does /exchange/ update as live searches are found through /search/?
cause im live searching fossils for example and i make a request for the info using exchange
but im not getting the right prices or even a whisper message
wow. i had no idea how bad the stash api was. zewt's messages made me look at it. what a steaming pile of crap that must be to work with
the documentation amounts to just the endpoint and a paragraph explaining the insanity
It’s exotic 😉
at least we have an endpoint, i guess? lmao
There’s a reason why people do partial parses to get the next ID as fast as possible and defer the payload.
Path of Reworks
also i couldn't find any way to just get the latest ID, and it would have taken literally forever to catch up one page at a time, so I had to write a parallel binary search to find the highest sequence number for each shard
zewt: poe.ninja shows the latest in the stats page 😂
if I was going to do anything ongoing with it my script would need to figure it out automatically :P
could scrape that page I guess but... probably not doing anything with it anyway since actually getting the api to not fall behind is awful
there's an old dev post about a forced delay on the api, which is... sort of amusing now
60 second delay? i wish
also it explains why people who use poe.trade are always whispering for items that sold five minutes ago
yeah, a coupe of years ago we sniped stuff using the river and it actually worked
glorious times
@simple ravine Java packaged with the release now 🙂
does it install java on the machine?
Nop
👍
It installs spyware instead 😉
Shhh
@white bone Careful with that. Java has some weird licensing requirements
Hmm, used https://docs.oracle.com/javase/9/tools/jlink.htm to package and it doesn't have any warnings or anything
You can use the jlink tool to assemble and optimize a set of modules and their dependencies into a custom runtime image.
Thanks though, I'll check it out
block them
Do you have any idea what their incentive is?
Can you link to the github for your tool?
I was under the impression ahk scripts did not need to be executables
sometimes a complied version is more stable as well
if it doesn't load anything or use any system variables with % etc and only uses inbuilt functions definitely stick with the script
people prefer scripts 90% of the time
may I ask what the dropdowns do?
are they just references?
looks nice man I might download it 😄
also wtf is the auto tracking version there is no map tab or atlas api
pls tell me its not using OCR
ah ok
still that is kinda whacky
what if you download it late?
after doing some
you just update the config
the auto tracking version is not mine, i didn't look at it yet
nah to fineky I would stick with the manual one
Eh it was a one time set up, didn't bother me
but yeah, I can see it being a little unfriendly
not a big deal I guess
I tend to have long afk periods and my memory aint what it used to be 😛
does the log output with a separator from chat?
also can you link the auto trackers repo?
2020/01/10 12:02:39 1029857296 ac9 [INFO Client 13380] Al-Hezmin, the Hunter: Dream becomes nightmare in this place.```
C:\Steam\steamapps\common\Path of Exile\logs\Client.txt```
the formatting and effort A+
sometimes I wish escapes could be changed with config 😭
got it nvm
that is why windows > mac
because you sub backslash for forward slash in file paths ;d
Windows supports forward-slash as well
heh yeah too many people think windows requires backslashes, and bend over backwards in their code to replace them
@compact isle I'm noticing that some other aura mods are producing the mods from the auras in the extended info, even though they don't render on the item itself because there is no corresponding mod line. Will those examples be fixed as well? (Singularity, Dying Breath, Faminebind, Kingmaker, Eye of Malice, Garb of the Ephemeral, the phys delev mod, and probably others)
@simple ravine Varies based on what API and tools you use, tho.
Canonically it's backslashes-or-gtfo 🙂
And then there are some CLI tools that can handle forward slashes in paths but not in path autocomplete 🤷
Yes, as I said, it varies greatly between tools and APIs, and how you mix them.
I find that insisting on that you can use them tends to back-fire when some requirement changes and suddenly you're having errors where none previously existed.
NT APIs are way less friendly than Shell or user 🙂
The named pipe namespace is super fun there, where forward slashes sometimes are equivalent to backslashes.
(documentation forbids the use of a backslash in the name as it's supposed to be flat)
I much prefer to adhere to the platform convention and not get any surprises. If code needs to manipulate paths, it ought to use a friendly Path type anyway.
backwards line? doing fine
forward slash? gonna crash
Hmm yes, Win/NT APIs might not fancy them, that's true.
do all 3rd party tools require POE to be in windowed mode?
@mint dome If you mean overlays, then obviously yes
what about exile diary? i ran a few maps on the character i set up for it and it isnt populating data
I don't know exile diary specifically, but if it populates itself via the clipboard, whether PoE runs in exclusive mode should not matter
Well, this recent article https://devblogs.microsoft.com/directx/demystifying-full-screen-optimizations/ claims that background processes are not run, so maybe give borderless a try. The performance doesn't seem to be much worse, at least on Windows 10
@polar island I bought the two books, haven't really read them much. The online book is helpful as a reference I guess, and the boards (users.rust-lang.org) and Discord is probably helpful for interactive questions.
My start the second time I tried learning it I just set out to do Advent of Code from knowing nothing about the language 😄
Just generally curious or more into networking/services? The async story is shaping up with the keywords and tokio/futures.
The well-worn trivia of "you either get a single mutable reference or multiple immutable references" is good to have in the back of your mind when it comes to writing code.
I've been curious about whether I could make a crate to pull the river, but have no idea how to design something like that.
If you want to know how code should not look - https://gitlab.com/zao/poe-rs
(mostly due to it being the first big project I did that evolved over time)
is there a way to manually change certain value in an item in currency cop
because its such a jebait when it gives clear/sepia/amber oil 1c each
this channel is for tool developing, not tool using
with that said, currencycop is available here: https://github.com/currency-cop/currency-cop
you can most definitely change it to achieve what you want, regardless of the current app capabilities on that matter
otherwise, id suggest a different channel, reddit question or post in ccop thread in poe forums
Does anyone know if the "tiers" which show up on advanced mod description are in the ggpk?
Anyone gets sometimes angry at Windows? Just realized there is SetProcessDpiAwareness() but also SetProcessDPIAware(). One is kept for back-compat but the "DPI" naming difference is mildly infuriating.
Anyone familiar with working in java. I'm trying to figure out how to read the system.err console, but I can't figure out how to do so.
you mean the system's error stream?
yes
AFAIK stderr is write-only
unless you mean that you want to run a different process and capture it's stderr
hmm I'm trying to access console logs from one of the new POETrade tools written in java while it's running. In the log.properties file I see it's a console log handler so I'm assuming there's something I need to setup to see them
the simplest way would be to open a console and redirect its stderr output (eg to a file)
I see, how do I open that console? That may be enough there if I can see the output in real time
to be precise: cmd command on Windows, /usr/bin/sh on any POSIX-compliant system (eg Linux)
then simply start the program in it
ah
most consoles by default will merge programs stdout and stderr
I see. The program is started by a bat file. I assume if I just run the contents of the bat in cmd I'll get the console output?
yes
Sweet. Thank you very much
bat files are just console commands in a file
you should be able to execute the bat file in the console directly, although I don't know then what will happen with the output (no experience on Windows, but on unix system scripts are by default run in separate shells)
Yeah I know my way around cmd prompt well enough. Not used to it being referred to as console. Got tied up into thinking it was a JVM feature I could pull up
its more of a system feature
by "console" or "terminal" people mean "the program bundled with the OS that lets you invoke shell calls"
good to know. Thank you
Context matters though: When working with front-end web technology, it most likely refers to the browser's own console, etc.
ofc, some terms like "interface" or "static" can have vastly different meanings depending on the context
heh it seems like it would take some ugly heuristics and parallel requests to use the trade api at all
it takes about 2 seconds to make a request (for me), and from what I can tell that's over a second of delay, then all the data at once, as if it's all bound by the internal processing and not bandwidth
Are you grabbing the next ID out of the payload before trying to parse JSON?
actually it's going through cloudflare, I bet it's buffering
i thought about that, but since all the data is coming at once after the delay, that's useless
welcome to networking
One thing I've been wondering about is if there's any benefit to open a connection ahead of time to get rid of any eventual up-front delay.
1939ms to first chunk (with the next id), time to all data 2142ms
HTTP 1.1 lets you hold the connection
establishing the connection is maybe 200ms
this lets you avoid the 3-way handshake for every request
Oh... for some reason I thought that was fancy future HTTP tech.
Mixing it up with multiplexing.
oh sorry thought you were talking to me :P
yeah modern http will keep the connection open
i'm strongly suspecting it's cloudflare buffering the response though
since it's sending the whole response in like 200ms once data starts flowing, which is a bit too fast
Cloudflare has other problems. So far I have noticed it does not disconnect gracefully, it stops on SSL short read which is an error occuring during man-in-the-middle attacks
Some services use this as an "bandwidth optimization" but it looks very shady from the client's side
the client gets the data but according to the spec if the disconnect is not graceful it should assume the whole transfer was man-in-the-middle attack
i wonder if the api used to be more responsive, then one day they shoved everything behind cloudflare, and didn't notice it screwed up the trade api
to be fair it shouldn't matter, it's only the annoying "peek at the next id" shenanigans that make it matter at all
(if that's even what's happening, but it seems likely)
if anyone else in here is using the api and doing similar things, i'm curious if you see the same behavior
Not sure this is quite the right channel but giving it a shot. Does GGG expose attributes to the api so that you can sort by them and if so does poe.ninja support that in some way they don’t have in the UI.
https://poe.ninja/challenge/builds?item=Geofris-Sanctuary <— instead of sorting by skills etc I want to sort by strength
@vital loom You would have to fetch that data and sort it yourself
I can’t find their search strings
This is all we have got: https://app.swaggerhub.com/apis/Chuanhsing/poe/1.0.0
Join thousands of developers who use SwaggerHub to build and design great APIs. Signup or login today.
For your particular request, you would need to
- Fetch all accounts and characters on the ladder
- Parse their builds using something like headless PoB
- Dump all stats that interest you somewhere
- Sort your build representation after a specific stat
Ahh so not an API call directly asking for that
No
Makes sense, that’s a lot of overhead for those queries on the fly and not a need to expose that
Exactly
I wonder if poe.ninja has thought about adding in that kind of sorting with attribute stacking popularity here and there on builds
You can ask rasmuskl#2841 (it's author) for that
@fickle yew
You would probably want to only do a minimum and above like levels are currently done
Strength > 1200 for instance
Things like lethal pride would throw that off a bit though so maybe not
Just undershoot your target strength
They are the exception to the rule so probably just blueprint the search parameters without worrying about them
Having a slow brain moment. I'm trying to get my bearings with the existing poe tools. Generating my own set of .dat and .json files from pypoe. I'm trying to use a script that comes with repoe to (I think) regenerate his simplified json files found in RePoE/data but I don't use python often and am getting the following issue error:
E:\RePoE\RePoE>python run_parser.py
Traceback (most recent call last):
File "run_parser.py", line 3, in <module>
from RePoE import add_jsons_to_global
ModuleNotFoundError: No module named 'RePoE'
@inland kestrel follow the instructions in the readme to pip install repoe
ahhhh... right
it's basically the same instructions pypoe had and realize now that I made a bad assumption that i've already done that - thanks
ah... it actually has the pypoe instructions so maybe that's why i read over it quickly. I see now that repoe has it's own pip install
Should both just be on PyPI imho
so, with repoe, I actually didn't need to use pypoe_exporter, right?
@vital loom The most requested extra stat so far is mana. But strength could be interesting in some cases. My main problem at the moment is the width of the character table. So I have to be a bit creative.. It is something I have on my list though.
Does anyone know how translation ordering is described in GGPK, specifically magic and rare items. Like in spanish "Catalysing Driftwood Sceptre of Needling" becomes "Cetro de Madeira Balsa Catalisador de Agulhar"... and the type of the weapon is "Cetro". So instead of having "<prefix> <base> <suffix>" it's actually "<base> <prefix> <suffix>"... But hm.
^ @misty merlin I saw you discussed this in a github issue as well.. Did you figure anything out?
Ah. It's actually in ClientStrings.dat. "MagicNamePrefixSuffix": "%2% %1% %3%"
Hrm. How does rate limiting interact with HTTP2, is it per sub-stream or something?
@fickle yew something you could do is expose the variables but not place them in the UI
https://poe.ninja/challenge/builds?item=Geofris-Sanctuary&skill=Raise-Zombie&sort=attributeSTR
I would do Life, ES, Mana, DEX, INT, STR, Crit Multi?
Could have a few variables in there that people can do manually if they are so inclined
https://github.com/AkumaNoTsubasa/Izaro
Made my Izaro Bot public, as I hit the limits on my abilities and need help to be able to advance with the completion of this awesome bot that already serves good work on a multitude of servers. Hope a few of you like the bot too and would like to contribute 
@vital loom yeah that could work. I think the solution might be to have one column in the table where you can select which stat to show.
You’re the best @fickle yew
Does 3 word rare item names even exist? (there's a formatting string for them in the ggpk)
my mercury trade doesn't work when trades pop up
the toolbar always shows
but then i get a trade whisper and nothing shows up on the trade helper
mercurytrade afaik is no longer being supported, you'll have to find another trade helper
or rather, you can keep using it knowing that problems like that will always pop up
ah
is there a similar alternative to use? i mainly want the trade helper feature and a betrayal cheatsheet
i don't know if the mercurytrade betrayal cheatsheet was up to date, but a new one pops up every few weeks. as for alternatives, there's https://github.com/labo89/TraderForPoe, https://github.com/lemasato/POE-Trades-Companion, and a few others i can't remember. you'll probably be able to get better answers in another channel though, this is mostly about making the tools, not recommendations
ah alright, ty
Just in case someone wants or needs it...
i found myself bored and wanted to do something to make identifying good flipping currency easier.
outcome of that thought is a greasemonkey script (tested it on firefox) for poe.ninja.
it basically adds profit margins in chaos to the table and sorts the entries descending by profit.
i also have defined some variables for customizuation at the top of the script.
but beware of the "poe.ninja-internal"-sorting! if you sort the table by clicking on the header, the script breaks and you have to reload. if someone wants to fix that: message me. for my purposes, it's fine :D
https://gist.github.com/KaiL0r/1d6d1429959c9b0cc09e0e06bd541a57
I was looking at https://pathofexile.gamepedia.com/Modifier:AddedColdDamagePerDexterityTwoHandedUber1 earlier and was curious about the Spawn Weights listed. Does anyone know more information about the no_elemental_damage_mods and no_attack_mods?
it's probably delve fossils
https://discordapp.com/channels/174993814845521922/175290321695932416/665554415884959744 @hazy fog made my bot public :3
Who's that tooldevmon! . . . it's @foggy bear maker of Izaro Bot a discord bot that checks prices https://github.com/AkumaNoTsubasa/Izaro
I hav e no time to laugh at things I'm mid dungeon with my fc
@foggy bear what do you mean by "failsafe checks" in the README?
What kind of intermediary storage do you people feed your river into? Does it go into something dedicated for a particular service you're building, or just raw onto some generic DB/bus?
I have no idea what I'm doing with web APIs, if you can't tell 😄
Ninja uses postgresql as a store. I know some others use elasticsearch
How raw is that data, just the blob as-is, or partly digested?
I should see if my postgres machine works... it had some upgrade trauma recently.
Turns out that if you let the OS auto-install new postgres versions from 10.low to 12.1, the DB needs to be quite migrated ^^
yeah you never auto-upgrade major versions of a database heh
i haven't looked into database backends in a while, but I'd definitely never ever touch sql
especially for something as low-volume as poe trade data (you're not dealing with terabytes of data here)
@serene belfry it means that if you enter a wrong league name it shows you a list of all current trading-enabled active leagues, on using a wrong currency item, the bot will put out a list of items containing your search term, etc.
@worthy cape ninjas data is partly digested and I don't store items that are not relevant to me. If I just stored the raw river my db would be 10x
Map exchange service for Path of Exile
I'm looking to do a stat_translations lookup for base_chance_to_freeze_% (on behalf of mod ChanceToFreezeAddedDamageInfluence1_. There are three translation entries. It's odd because it looks like it's designed to handle mods with multiple values... but this mod has a single value, "(4-6)% chance to Freeze". That's fine I guess... but what are the rules for which condition array item should be used?
If the stat has a min value of 4 and max value of 6, should it match against
{},
{
"min": 1
}
],
or
"condition": [
{
"max": 99,
"min": 1
},
{
"max": 0,
"min": 0
}
],
Now I know the answer is the latter because of the accompanied format string. But was curious if there's some other translation lookup rule I should know / be following
Kind of curious what would match against that first condition (translating to "Always Freezes Enemies on Hit")
Pretty sure the stat_translation id for that one is always_freeze which I didn't see a reference to in mods.json. Maybe it came from somewhere else?
Look through the dat files for references to the according Stats.dat row that has always_freeze, there is something probably
also if you use repoe it does some filtering on the json files
it doesnt include all mods
ah, okay. I am using the json files produced from repoe
Omega, where did the Tags come from on the wiki for each modifier?
Is that inferred from the mod id or translated text?
or is that from a table I haven't stumbled upon yet :-X
Ah, I see ... mod_types
All of the info you are looking for is in repoe @inland kestrel
consider reading these if you haven't https://github.com/brather1ng/RePoE/tree/master/RePoE/docs
alright, will do
To answer your first question - there are multiple stats which lead to the same effect. Often there are binary effects and chance effects, such as freeze and chance to freeze.
(This makes disambiguating mods based on their stat translations tricky)
will the reverse always be deterministic? or are there still odd cases?
All stats only contribute to a single stat entry
so the mapping from a list of stats to the stat translations they generate is well-defined
My example above for ChanceToFreezeAddedDamageInfluence1_ seemed odd still. There was only a single stat (range) and it was supposed to match a translation with a condition min:0 max:0 (for the second, non-existent stat)
ChanceToFreezeAddedDamageInfluence1_ grants the stat base_chance_to_freeze_%. It is in a stat translation with always_freeze. If base_chance_to_freeze_% is between 1 and 99 and always_freeze is 0 then the string is "{0}% chance to Freeze"
always_freeze, like all stats, is zero by default.
Ah, I see. Implied zero
tags come from tags
.> it's a foreign key to tags.dat in mods.dat
and the reverse will not be always deterministic
due to rounding values and omitting values
hm did anyone here look at pob's implementation of phantasm support? Depending on the base skill (not just lvl) the dps varies a ton
if i use raise spectre as a base it's at 190k per phantasm
if i use ek as a base it's 110k
example pob: https://pastebin.com/3UYAqze2
@grave wren way late, but there's two things messing it up:
-
it seems like the phantasms are incorrectly inheriting some things from the skill it's supporting. if you use a skill like Arc, the damage mods from great volley aren't applying to the phantasms even though they should, so your damage goes up a bit. if you use a projectile skill, the damage mods from greater volley do apply and the phantasms have lower DPS.
-
this one's more complicated: phantasms actually(as in, intentionally in-game) gain flat damage based on the level of the skill gem it's supporting. it seems like the way PoB does it actually makes the phantasms look at the level requirement of the gem for some reason. also, the raise spectre gem has its own level modifier for the max level of spectres. so somehow, the phantasm support seems to be looking at the max spectre level instead of the level req. of the gem, which is giving the phantasms more flat damage than intended.
you can see that if you set Raise Spectre to level 16 and the spectres have a max level of 70, then compare it to your level 20 EK gem which requires level 70, the DPS of the phantasms will be the exact same on both skills.
and the second thing might be wrong, that's just a correlation I noticed. I actually can't find anything in PoB's code that tells it how much flat damage to give the phantasms, but it's easily testable and you can see the functionality is definitely there in some form. that's the only thing I can think of that it would be looking at
ok last update lol, was reading into a little bit more while I ate since I couldn't find a definite answer, and I found one. in PoB all minions gain damage based on their level. minion level checks for three things: is it equal to enemy level, is it set by the gem, or is it equal to the level requirement, and it seems to use whichever of those applies first. the spectre's minion level is being set by the gem using the "minionlevel" skilldata mod, and since it uses a skilldata mod it's applying to the whole socket group including the phantasm support, so the phantasms just use whatever the spectre's level is.
anyone know of some way to pull voice lines out of the game? would like to sample brutus for a song I'm working on for the talent competition
the only thing that I can think of is to record footage of the game with all sounds turned except voice turned off and hoping he uses the voice line that I want to use, then use ffmpeg to pull the audio track
I suppose it wouldn't particularly matter if pulling directly or recording ultimately end up with a lossy recording
@pseudo ocean You can pull them out of the game's data files using a tool like VisualGGPK. The Brutus audio will be under either Audio\Dialogue\NPC\Brute or Audio\Dialogue\NPC\BruteCombat
Or I can extract it for you. Here it is 🙂
Interestingly, I don't think Brute\Brute_12_Death.ogg ("Sweet death... we've been waiting") is used in game.
hi quality oggs, nice
yea I don't think I've ever heard him say that
some neat effects on the voice too, makes my life slightly easier
There's a surprising amount of unused audio in the data files. Some alternate takes, some league-specific content which is no longer accessible, some things which never got used at all
Sin has lines for quests to capture a couple of gods which don't appear in the game, for example.
interesting
@sleek nacelle awesome thank you for the in-depth analysis 
@grave wren If you dig any deeper into this, I'd be really interested to know how minion level works for pure Soulwrest phantasm configurations. I went through most of last league with no clue how much damage I was doing, besides "enough"
That's where I am standing atm. I did it once without giving it much thought but I think the only way to properly get the info is recording small timeframes with known bosses
Phys configuration should be as close to pure damage as possible
The hand with the energy orb thing looks interesting
I can't find the cursor, maybe it's embedded in the game client?
ah, sure enough, it is. cursor resource 102 in PathOfExile.exe
it's a pain in the ass :/
actually, here's a better job of it. I've used a bright green background to make it easy to matte
i think the problem is on ggg's end, like right now if I try to just have a real live search on the site it's stuck on connecting
the trade site's websockets fail to connect very often for me
on the website i just hit the button and it sits there retrying and I forget about it until it figures it out, but it's a bit broken
just fails with some 5xx
is there a good tutorial/resource out there to start pulling down the character database from the API?
I don't think anyone here has really made any blogs or anything
character database?
I just assumed they meant the "character-window " api
yeah not sure I am asking the correct question
I want to pull all characters in a league, like poe.ninja or similar sites and dump their information into a database
not sure where I am starting though
first get all leagues with http://www.pathofexile.com/api/trade/data/leagues
then u can find character data using this api doc http://www.pathofexile.com/developer/docs/api-resource-ladders
you can then find more detailed data about the character api using this api doc https://app.swaggerhub.com/apis-docs/Chuanhsing/poe/1.0.0#/default
Thats as much as I know about poe's public api
That will only get you the top 15k characters in a given league. In order to get more than that you will need to parse the stash tab api to get characters/accounts
river=> SELECT payload -> 'next_change_id' as next_change_id FROM cache ORDER BY fetched_at DESC LIMIT 1;
next_change_id
-----------------------------------------------------
"578553246-596356122-564753409-642912668-611183067"
(1 row)
Time: 63914.008 ms (01:03.914)
Protip - don't shove river chunks into a json field 😄
They also make pgAdmin 4 a bit non-interactive when it tries to show results 😄
How do I get up to speed with the river with the current rate limits? Not overly keen on spinning up a pool of machines to fetch harder.
1 machine, multiple IPs? 😄
Up to speed?
Feels like I never reach the end at the current rate I'm fetching from the last change ID advertised on ninja.
You can have concurrent downloads and send out iirc roughly 2.8 requests per second
Grab the change id from the buffer before all the json is read in and start a new request
@simple ravine The cloud I intend to play with has quite few public IPv4 IPs, sadly.
That does the trick for me at least
which cloud is that?
"Private" one at work.
OpenStack, multiple regions but no federation.
Good to know that it's physically possible to catch the river, just got to fix up my rate limiter.
I'm supposed to be running the cloud, so I figured I'd try deploying some PoE toys in it to see how it actually works.
A bummer that GGG do not speak IPv6, those we have lots of ^^
I don't look forward to writing a web snout for this service.
web snout?
webb-tryne
Frontend 😛
The thing I'm building to get my hands dirty with web tech is a web app for me and my mates to monitor trade latency for our sell tabs.
Small web form that gets notified over websocket and lists changes to your stashes, to get a feeling for if your stuff has propagated out yet or not.
In a perfect world it would not be needed, but with current upstream...
what does it help you do, with that feeling?
It might help you recognize if a whisper you get seem to be automated snipers or long enough after being public that it's a regular human.
It could also help you not go down into a map after listing something, giving it a chance to be found in searches.
(but mostly just to see how one builds something like this, really)
Databases are black magic. Seems like my performance bottleneck might've been the field I LIMITed on.
More indices for the index god.
You basically need to do what nib suggested, once you get the 4th quote you know you have the full id, so you can move onto that. It shouldn't take very long to get the id
It takes around 2.2-2.8s for the headers and the ID bytes to come in, and around 800ms to get the payload.
that is brutal
Not sure if it's the time of day, geographical region, or my domestic 100/100 internet
how does mercury trade's chat scanner actually scan chat
@delicate field The only interface to the game client is reading the log in Client.txt
that holds that much info? including chat? o_o
Everything you see in your chat window (except most Korean accounts), and some area transitions.
Client-side trade tools scan it for messages that look like the format that trade sites make, and pop cute GUI for you.
i thought of something interesting
somehow connecting the loot drops to a hue light
or a smart light
so when a good gear drops it changes colors to the rarity
amusing idea, but that's not something the game exposes in a usable way
Finally managed to whip the cloud instance into shape, similar numbers there on a proper pipe.
(also found out the hard way that the Rust install script OOMs hard on 512M of RAM)
short of doing something silly like writing a loot filter that plays tones when items drop, then recognizing those tones externally?
Sounds fun, here is everything you need for that (and much more): https://www.fon.hum.uva.nl/praat/
It's whacky, but entirely possible. The biggest downside is that you will most likely have to give up in-game audio altogether for best results
one should keep in mind the game infamously skips drop sounds all the time.
More audio channels help to an extent, but yeah
I was thinking more along the lines of pure tone detection -- like DTMF. That can work reasonably with other background noise
I think this would work best if you would record a sizeable amount of in-game audio beforehand to find good frequency ranges
Hey, launched myself into creating some kind of stash organiser.
-In python as I found most 3rd party stuff for this game is in python. correct ?
-Any resources for the program to find on-screen stuff, like those trading buds that invite you, click your frame+click trade etc. ?
Thx.
- Python is popular and a good choice (besides others)
- Taking inspiration from botting tools is not, however
If with stash organiser you mean something that automatically sorts your stash, that would be a no-no
It was exactly what I had in mind. Something that could take a loot tab and automatically filter out currency, essences, cards, etc. into their respective tabs.
Your answer makes me wonder if that would be against ToS ? If so, how are the currency bots running? Those are totally legit and have been accepted a while back
I don't know where you got that impression from
Some players may like trading with bots, but they're against ToS
This is unexpected to say the least. They have been golden standard for currency exchange for a while now...
and are 100% against ToS
As I said
the tos is pretty anti-automation, you'll be hardpressed to find any legal tools that could help with auto-tab sorting sadly
Thanks for the input. I'm crearly not informed enough.
well ignore that then
If tab names were not server-side, how would you get them on a new installation?
But I must ask, why are they against ToS ? because they click items such as currency and trade automatically ? Okay. So the trade helper that a lot of player use are too then..?
ToS prohibits tools which automate more than one serverside action per user input.
We can tell you what is in the ToS, we cannot tell you why the ToS is the way it is.
If you mean the 8+ trade macro alternatives that are out there: they are all compliant to my knowledge
There are console commands for many tasks, which are hotkeyable
Stuff like /invite, /kick, or /hideout
Those are allowed, as long as you have to press a different button for each, manually, without cycling different inputs
Okay, how does a tool would normally use those? by automating a click in the chat box and automate typing it in + enter ? Or is there a console behind PoE that's accessible
Ingame chat?
The act of sending a message is considered one serverside action
@dark wadi As long as you don't have a text field or modal dialog focused, sending an Enter opens chat reliably, so no need for a click. So they <CR>/kick {hardcoded_own_name}<CR> and assume you're not holding it wrong.
Mercury's "hover the trade to see where in the stash the thing is" feature requires you to hand-place the widget so that the outline will be roughly in the right place, it pulls nothing from the game.
Heh, it seems like I've accidentally broken our cloud. Probably unrelated to pulling down the river. Probably 
probably
Phew, not me.
been working on this crafting simulator for the past week, and I think its at the point where I can start getting some feedback.
https://leftn.github.io/
im terrible at html/css so the interface will probably always look like shite, even as i develop this further.
it isn't obvious because of the broken css/html, but there is a working crafting bench tab.
but all the other stuff like fossils and essences are wip.
@ionic holly You aren't merging affixes. I'm also not sure if you're respecting item type or group/family restrictions. https://i.imgur.com/JaDTHmF.png
mod groups + item types are being respected, but yeah merging stats is something that needs to be worked on
You really need to indicate that you can scroll through the item bases
got any suggestions on how to make it more obvious? im not a ux kinda guy :S
should show info on the mods, like which are prefixes/suffixes, tier, name etc.
Scrollbar?
theres is one, i guess its just not very visible
Not visible at all on mobile
ah, i did 0 testing on mobile
as for displaying mod details, thats a low priority feature, so probs won't be added until I get all the other crafting options working
How do people store assorted small state for "stateless" programs running against primarily RDBMS? Separate table with a few columns/rows with the state they need?
(like at what ID in the river they've processed thus far, etc.)
Feels wrong to put things in a key-value table in postgres, or have a bajillion columns for all the settings.
I mostly do graphics dev on desktop, so there's essentially no persistent state of any kind in my life 🙂
If I had to guess, overzealous private watchers.
(I have no actual idea tho)
Like I've got one process whose only purpose in life is to pull down the river and shove it into storage, while another would walk that cached stream and pull out the information I need.
If I want that second one to be restartable, I need to keep track of how far it has gotten somehow.
statless services should be stateless, i.e. pure functions / functional
they take inputs, process and returns output
feels like it comes down to separation of concern, between stateless and stateful parts of your system
i.e.
- River orchestration (stateful)
- River fetcher (stateless)
where fetcher in this case likely
- emits messages to a bus/queue when new next_id is found
- stores the full JSON to a blob storage
- emits message to a bus/queue when new JSON blob can be processed
orchestrator reacts/pull these messages, and do whatever it should with this, likely submit new request to the pull service, asks a stash processor to handle the JSON
Sounds like a blackboard patternish thing
I've got an allergic reaction to Mongo and Rabbit. I should probably try to get over that.
Never tried rabbitmq either but I dig mqs
One of the best sessions I attended at the OpenStack Summit was one where there was just some blokes sitting on stage telling battle stories on the multitude of ways RabbitMQ screwed up 😄
@ionic holly your roller doesn't respect the affix count the game uses.
how so? I made sure to split prefix and suffix apart, and can only add them if their count is < 2
I'm chaosing items which have 2 affixes
chaos orbs cannot roll 2 affixes on items with 6 total affixes
It also appears that you are not respecting tags
arn't chaos orbs meant to reroll the entire item?
Yes, large empirical tests have shown the number of affixes from a chaos orb on a 6 affix item follow the distribution 1:4:7 for 6,5,4 total affixes
huh, well behind the scenes, i just did a scour > alch for the chaos
I think you are missing the point I am making.
yes i am
A chaos orb will never make a body armour have 2 affixes
your crafting simulator does
so the minimum number of mods on an item after being choased is 4?
Yes.
And the distribution is 1/12 chance for 6 mods, 4/12 chance for 5 mods, and 7/12 chance for 6 mods
In addition, it doesn't appear you take into account tags in your crafting simulator.
Is there a recommended api wrapper available on a GitHub somewhere?
To make queries on what is available on premium tabs
@tight storm unclear what exactly you want - the only api which you can query is the official trade website
Like someone wrapping up the requests in a python or Java library
So I can just call findItems(mods...)
I don't know rust :(
That covers most of the upstream API, but won't help you with interfacing with trade sites.
Depends really on what it is you're trying to achieve.
Basically sort of like the official trade site but from command line
I guess I could parse the result of the web request
But I'd rather use a more direct method
to my knowledge, you won't be able to achieve that without either - parsing the river and storing everything in a database, or, querying directly to the official trade website
Hm, why not just use the website? Sounds like that would solve the problem
For poe.trade you might be able to construct queries similar to what poetrademacro does, but that still needs you to act as a client to that site.
I've got no idea how that conjures up search strings.
I see, I thought the official trade site had an API available
it does
Oh, so I can send requests to say find items with x requirements and y mods and get back a json response?
If so, I guess I'm just looking for wrapper library that already sends the REST messages properly and parses the json response
I don't know of one that exists. My only advice is to use asyncio for the requests 🙃
Oh that's surprising that nothing exists for that
don't know how documented it is, but it's easy enough to look at the requests in a browser
@tight storm I’ve got something similar to what you want but it works through google sheets to update price info
Currently using an importJSON script that someone else wrote to be able to parse the data for the info I want
I’m not sure how to wrap it up into a nice little program though
Can anyone suggest me a good pseudocode to describe item sockets (the real code, not JSON from API)? I'm making a filter-related tool and when implementing a filter debugger, I need to somehow represent item links and colors in a convienient way that allows to easily check whether item matches eg Sockets 6 or SocketGroup RGB.
Initially thought to simply have an array of R/G/B/W/A enums, but then it can not represent links between them. And I think I can do better than a type with 6 enum fields and 5 booleans to denote links between sockets.
Denormalized structures tend to be easier to query by duplicating data. You could have link chains each holding counts of each colour, and also track the total number separately instead of summing up all the individual lengths.
Less combinatoric to query than the loose sockets+haslink structure you don't like.
So basically an array of linked socket groups where each group is an array of colors? Eg an item with R-R G-B-B W would be:
- array of 3 linked groups
- 1st group:
R, R - 2nd group:
G, B, B - 3rd group:
W
query item socket count: sum the size of all arrays (2 + 3 +1 = 6)
- 1st group:
Not sure this is what you're looking for but I can share some snippets of how we parse sockets and links in Exilence:
https://github.com/viktorgullmark/exilence/blob/master/ExilenceClient/src/app/authorize/components/char-profile/item/item-sockets/item-sockets.component.scss
https://github.com/viktorgullmark/exilence/blob/master/ExilenceClient/src/app/shared/interfaces/socket.interface.ts```
@lavish gust
and some helpers for checking socket/link count: https://github.com/viktorgullmark/exilence/blob/master/ExilenceClient/src/app/shared/helpers/item.helper.ts
@distant rock I don't get how you structure socket information. Read both item helper and socket.interface but I still dont know how you store sockets in an item type.
- socket has a group number - sockets with the same value of this field are linked, am I right?
- What is the purpose of attr boolean?
- Why is the color a string? Shouldn't this be an enum given there is a known, limited set of values (R/G/B/W/A/D)?
-
I'm pretty sure that's the case yea, long time since I wrote this part, but you can figure out the position of sockets and which ones are linked by looping them out and connecting the ones in the same group as we do.
-
The attribute is typed wrong, it's supposed to be a string. It represents the type of gem (D = dexterity, I = intelligence etc), check the CSS file for more info.
-
This is not a strongly typed example. We use typescript but we don't force types in this app, it's pretty old and being rewritten to Exilence Next which we're working on atm.
@lavish gust
@carmine merlin if you ever find a way to make a good program out of a sheet, i've got a pretty big one i'd like to switch
@distant rock Ok, so it is quite similar to my previous example. I think that an array of socket groups where each group is an array of color-enum will be the best approach. I can easily count the total number of sockets by summing up sizes of all groups, and each group can be easily tested if it satisfied filter's requirement on specific amount of colors in that group.
We use typescript but we don't force types in this app
Reminds me of some debugging nightmares, I really hate type-unsafe interfaces and similar things, did not know that TS doesn't actually enforce them
Sounds good!
Well, you can enforce them, but we configured it more loosely in the old app, doing a more strict approach now 🙂
Typescript is very configurable since many projects require a mix of JS / TS in transition phases etc
@distant rock Very configurable? I work with C and C++ stuff. Know the pain of customizability/configuration. Major compilers have hundreds of options regarding warnings, optimization, extensions, platform-specific stuff and so on. There are still some libraries made in 80s or 90s which are not valid C and require a lot of workaround to make them work. The worst ones "poison" or hijack any descendant project with some optimization-reducing flags/code macros because some people writing it a long time ago did not bother to write standard-comformant code. This is why I enable the most pedantic warnings on any project and focus on very strong typing.
I remember some uni assignment and was working with some simple website, had to write a couple of functions in JS that interacted with jQuery. It was a nightmare to guess whetehr I get an object, a string, what fields does it have, what are the invariants. No documentation and the runtime debug was the only way. And of course like 99% of data were strings so no easy way to validate anything.
Worked a bit with Python too. Couldn't write any larger code (>50 lines) without type hints. They are not actually enforced by the interpreter, but they help with writing type-correct code and some smart IDEs can perform static analysis on it and underline definitely-wrong function calls.
What were your reasons to rewrite Exilence instead of refactoring? Too many issues?
I mean yea that work's in a perfect world where you create all your projects from scratch, but what if you end up in a project that's already built in JS and want to move to typescript? Personally I agree and would have everything as strict as possible for maximum typesafety.
The reason to rebuild it is that we had another focus when creating the initial version. We wanted to let players inspect their friends and help with gearing etc, but we quickly realized that the net worth/currency aspect was the most frequently used part of the app. Along with this we had some performance issues, since we stored a lot of data locally on the client which led to memory issues and unresponsiveness etc.
Now we're setting up a backend to store data (secured with OAuth) and have shifted the focus of the app to be more net worth oriented basically, along with all the feedback we've gotten the past year with old Exilence.
@lavish gust
@distant rock What are you using for the frontend? Since this is JS/TS, I guess electron?
Yea, React built ontop of Electron, with mobx as statemanagement https://github.com/viktorgullmark/exilence-next
Got any metrics so far (RAM/CPU usage, installation size)? Electron has been criticized for its bloatness but I heard also it is possible to tame it and make it quite performant. JS/TS is completely out of my world though, but I'm interested what are numbers in comparison to a native application. My project is definitely smaller when it comes to the size of UI (it's more about internal logic to support loot filter extensions, ~10k lines so far) and I'm also partially building/contibuting to a new GUI library (for fun/profit/experience/resume/etc reasons) so the development of actual features is rather slow but ... for the love of Kuduku, the executables consume <5 MB RAM without all optimizations. Kinda funny that adding a pretty few-megs-size background image for the UI doubles it's memory usage...
@lavish gust I do this for item sockets: https://pobapi.readthedocs.io/api.html#pobapi.models.Item
@distant rock I'd be interested in how mobx compares to redux, I guess it's easier to start with but less powerful?
@golden bane I wouldnt say it's less powerful, been comparing the two a lot myself (used redux in the past). You can achieve the same things, but I prefer the observable way of thinking in Mobx. Mobx is also more suited if you come from an object-oriented background (imo) compared to Redux which is more functional.
I mean, it's easier to do mistakes in mobx if you don't know how to do stuff, since it's more free and less boilerplate.
By default it's not very strict, but you can enable strict mode and only allow observables to change from within actions etc, so there are ways to structure it properly without it getting messy, but I'm still learning it and wouldn't say I'm very experienced with it yet, I took this opportunity to learn more about it basically
I see, thanks! Seems like I will stick to learning redux, but good to know there is also a less functional alternative
@lavish gust Electron by itself eats quite a lot of RAM and will never behave the same as a native app, but I don't see this as a problem, especially for the cross-platform functionality you get out of it, e.g we could port our app to the web very easily if the OAuth implementation was released to the stash tab API.
For my purpose I want to have the backend also be useable as standalone, so redux makes more sense for me
That's not any problem with mobx too though, but I guess you mean how you normalize data?
Yeah
I mean, you can structure it however you want in both mobx and redux, but both are weighted towards their own way of working
I just need to share one data structure, so OOP seems overkill
@golden bane PoB API? Now that's a thing I have not seen before. Your approach is the same as I currently plan, that is an array of linked groups where each group is an array of socket colors. Very good to see Python docs with type hints. I have wrote below 1000 lines of Python, but I could not do anything without type hints.
I mean, all it is is essentially that you nest objects and don't have to normalize, but you can do it either way you like, I don't see how mobx is a problem for this, but I understand if you prefer Redux. There's nothing wrong with it at all, but I just want to clarify that there's nothing blocking you from structuring things however you want in either of them
I wish it was more widely known to save other devs that don't find this stuff as fun as me the trouble 😁
Good docs was the main objective from the start though, so that helped much
Yea
Redux is really nice, what made me consider mobx was the reduced boilerplate code since you don't have to bind state variables like you do in redux etc
But Redux is larger which makes it easier to solve problems as well
Hmm, reduced boilerplate sounds intriguing
If you do start working with mobx, feel free to hit me up and I can help out.
I might give it a try as I don't have much GUI already
Do it 😄
@golden bane Yeah, docs look awesome and the project is a good library for other, larger projects but I think the choosen license can be a strong limitation. If EUPL works like LGPL+Affero, you really limit choices of any derived project. If you want to support others but have a copyleft-style guarantee, I would recommend MPL instead. It limits its "must have same license" requirement only to direct modifications of the library (not users of unmodified versions) and also allows for static linking.
@lavish gust With derived projects you mean forks of pobapi? Because as-is, you can use the library anywhere afaik (with license notice ofc)
@golden bane with derived projects I mean any project that uses your project. As https://choosealicense.com/licenses/eupl-1.2/ states, it has the "same license" condition which means that anyone who wants to use your project in theirs, is forced to use EUPL. This is a big limitation. It also requires source code disclosure. It's more close to GPL or AGPL.
The European Union Public Licence (EUPL) is a copyleft free/open source software license created on the initiative of and approved by the European Commission in 22 official languages of the European Union.
MPL in contrast, has the same requirements (same license, disclosure source) but only if you use modified versions of the project and they apply only to these modifications. Projects which simply use (without modifications) MPL'ed code, can be licensed on a different terms
LGPL is very similar to MPL, but it uses a different wording which unfortunately does not allow static linking. Thus I recommend to use MPL instead of LGPL because both practically achieve the same guuarantees for the author, but MPL does not hinder the build process with vague requirements that probably only people working with assembly/C/C++ could fully understand.
This license stuff is even more complicated than I thought 😓
Okay so here is what I intended: library with weak copyleft: use it any way you want (with notice and source available); if you modify it, those modifications must be made under the same license; serving over web = distribution
That incorporation is pretty much always derivation went over my head somehow
Do you want to require users of your library to post the code of your library's modifications only OR both their full code and your library?
Both, I should have made that clear
But it shouldn't matter if they want their code under MIT or GPL for example
if you want others to be allowed to use different license, then you can at most choose LGPL or MPL
GPL, AGPL and EUPL force the entire resulting product to be under 1 same license
Ideally, I'd want something like ALGPL, but as this doesn't exist (yet?) I turned to EUPL
If by ALGPL you mean "LGPL but network use = distribution" then no, I don't think such license exists
And it's already 2020
I propose MPL which is something between copyleft and permissive licenses:
- MPL protects your code in a copyleft way. If someone modifies your code, that code is still copyleft.
- MPL does not impose requirements on "pure users". If someone writes a derived project and only uses your project, that person's code can have a different license.
- If the user made any modifications to your code, the modifications must be published, but only these modifications. User own code is not affected.
- Unlike LGPL, MPL does not impose any requirements on the build/integration process. This gives a large freedom and convenience for many programming languages.
There is also EPL, which is similar to MPL but I'm not very knowledgeable on it
@velvet fog @obtuse citrus @woeful sphinx fyi 3.9.2b changed content.ggpk
hey are the map connections stored in content.ggpk?
Yes in Atlasnode.dat
thanks, i just found it too
still not sure where the numbers are defined tho
can you point me in the right direction?
for example, basilica is connected to 76, 73, and 9 at 0 watchstones, but I'm not sure what number basilica is or what maps those numbers refer to
They're IDs of other rows in AtlasNode.
You can map AtlasNodes to names by joining to WorldAreas on AtlasNode.WorldAreasKey.
@lavish gust After some soul searching and much reading, I've come to the conclusion that I'd rather have other devs ruminate over the code instead of the license
So I'm considering to relicense to MIT instead 🤠
Hey guys, I have asked this before, but is there some sort of crafting simulator on the PC? I know of Path of Crafting on the phone, but is there anything similar for the PC?
Same i don't really care much about the open source stuff being modified in any way people want
If not, would it be possible to create something for the PC using the PyPoE library? I might try to do a bit of development on a similar application for the PC, but it probably will be very low-quality as I'm just one guy.
@spare glade I have a python library that could use some help, but the bare essentials are there
I'd love any dev help
You can use Path of Crafting in an emulator on PC in the meantime
But before you roll your own, see if you'd like to contribute to Nick's project
@golden bane That's a really permissive license choice
I still want to check if your lib can replace my hacked up POB parsing too but I don't have the time atm to test it for the POB bot

@grave wren You should try it, as it's still not stable yet. If you encounter any difficulties with it's design, it's all still open to change
I'll be sure to make it into whatever the community needs
Besides, I think I'm the only one who uses it right now anyways, so it wouldn't break other poeples code
Yep it's the next thing I want to do for the bot
I have another project planned that acts as a standardized, but configurable way to make PoB-preview-bots, on top of pobapi
Originally, my idea was to have a sort of "build-linter"
Like, if a build uses Atziri's Promise together with Avatar of Fire, it would give a warning
Or if you have "shocked" checked in PoB without having any means of applying shock, etc
It would be great if we as a community could combine efforts, as I think @earnest ledge bot is also written in Python
Would be nice yep
I've reorganized the output generation on my variant a bit ago as well to make it more modular but I'd like to make it even more configurable: https://github.com/poediscord/poediscordbot/tree/master/poediscordbot/cogs/pob/output/aggregators
Ideally, if someone would still not like the offered formatting options, they would be able to extend the current capabilities instead of starting their own project, yeah
My issue with it is finding a way that is not error prone for normal users
Either you allow full customizing with lots of possible broken configs or checks or you're better of just allowing modular enabling and disabling of output generation
Oh I was talking about discord bot developers/maintainers, not regular users
If I was offering the linting capabilities to regular users, they should be non-configurable, but also not over-zealous imho
Oh I see. The first part sounded a bit like what was on my mind quite a bit but I guess target audience differs a lot
Sounds good tho because a lot of build issues are findable even in an automated manner I bet
Is there a way to see which types of tags the modifiers have?
yes - its in the ggpk or repoe or poedb
For instance, if it is 'caster',' chaos', 'physical', ect
Because I can't find that at all in mods.json
Also, is there a way to download it from poedb?
For fossil tags, they are linked through type on the mods.json
this is detailed in the docs
I love hindsight. Just realized that I could have compressed my river chunks and saved a whole lot of bandwidth.
Oh.
Excuse me while I go shove a hundred gigs of junk through the grinder.
Are you doing everything through Python, or is there a database?
For the crafting simulator?
Well... mainly for the modifiers in general
Otherwise I might be able to get an SQL server
All done in python, the mods/tags are plenty small to fit in RAM, a sql server would be serious overkill
But I mean for filtering/searching?
For instance, if you want to find modifiers for ZealotryAuraEffect.
Most (if not all) of the relevant filter/searching needed can be cached ahead of time
But I guess that searching won't be too intensive, because the list is sorted alphabetically
Anyway - for my repo I just load RePoE on launch
But what do you mean with caching ahead of time?
Can I use Spyder/Anaconda for this, or do I need to use something like Pycharm?
I'm not particularly familiar with spyder or anaconda, but pycharm is just an ide to my knowledge.
Yeah, I'm personally not that familiar with Python that much. I personally prefer to use C# instead.
well @simple ravine is your man 😉
In general python does not require you to use a specific editor or ide
Thanks autocomplete for almost fucking up that sentence 
How does crafting actually work?
For instance, if I use a transmutation orb.
Does it have 33% chance for a prefix, 33% for a suffix and 33% for both?
I try to detail it as much as possible in the readme in my crafting sim repo
But to answer your question - no
Emperically: 50% chance for 1 affix, 50% chance for 2 affixes
- **1:3:8 split for total number of affixes** - For items with a max of 6 mods, extensive data farming has shown that there is a 1/12 chance for 6 mods, 4/12 chance for 5 mods, and 7/12 chance for 6 mods
Is it also detailed if they are evenly split between prefixes and suffixes?
Also, I think you mean 7/12 chance for 4 mods
The game makes no such distinction, it draws from the total pool of all available prefixes and suffixes
Yeah there's a typo there 😦
Readme is literally unplayable! 😠
fixed
So let's take a hypothetical item.
There are 2 possible suffixes and 1 possible prefix.
P1: spawn weight = 40
S1: spawn weight = 9
S2: spawn weight = 1
If you are using alterations, is there 25% chance for P1, 22.5% for S1, 2.5% for S2, 45% for P1 and S1, 5% for P1 and S2?
S1 isnt 49 times as common as S2
OOPS.
But is my thinking correct?
Or do I need to factor in the P1 weight as well?
your first 3 are wrong as well it draws from total pool, so theres a 40% chance for P1, 9% for S1, 1% for S2, and then the 45/5% for the dual affix
it rolls 1 affix, then pulls from the entire pool
do note in the case it rolls 2 affixes, if it pulls a suffix then the only valid mod for the second affix is the prefix
Yes, that makes sense
P1 - 1/2 * 40/50
S1 - 1/2 * 9/50
S2 - 1/2 * 1/50
P1 S1 - 1/2 * (40/50*9/10 + 9/50*40/40)
P1 S2 - 1/2 * (40/50*1/10 + 1/50*40/40)
(your math teachers lied, you should never reduce your fractions)
Yeah. This seems a lot better.
In fact, I actually keep my equations like this even to this day.
Because you can actually see what's going on
@spare glade If you're unfamiliar with or just not as interested in Python, using Anaconda may remove a lot of friction from the install process
Regarding development environment: If you want a text editor, go with VS Code. If you want an IDE, go with PyCharm Community
capturing keys globally (instead of only when the window has a focus) can raise conflicts between applications
@golden bane is py 3.8 really the minimum for your pob api? I am kinda stuck with 3.6 for my docker container if i want to keep using pypy for now :<
@grave wren It's more like 3.7 right now tbh. I thought walrus operators would help my project, but in the end I didn't find them useful at all 😆 I think you can get away with 3.6 if you backport dataclasses from ericvsmith though
i'd had hoped pypy finally manages to support 3.7 after a few months :<
I'll make a new release on PyPI with new license terms sometime later today, so stay tuned!
i'm testing your example: active_skill() returns Hypothermia for me but it should be Vaal Blade Vortex if i understand your comment right
Life: 6,911 (206%) | Reg: 242/s (3.5%) | Leech 1,133/s (16.4%)
Energy Shield: 634 (70%)
Mana: 222/1,111 (28%) | Reg: 50/s (4.5%) | Leech 222/s (20.0%)
Secondary: Dodge: 52% | Spell Dodge: 42%
Attributes: Str: 219 Int: 366 Dex: 158
Keystones: Phase Acrobatics, Elemental Overload, Acrobatics
DPS: 290,527@ 2.88/s
Crit: Chance 8.40% | Multiplier: 100%
Vaal Blade Vortex (20/12%) + Hypothermia (20/11%) + Ice Bite (20/20%) + Physical to Lightning (20/19%) + Efficacy + Controlled Destruction (21/20%)
Enemy: Brand Attached, Chilled, Ignited, Bleeding, Boss: Shaper
Player: Fortify
Pastebin | Web Tree | Web PoB | Web Viewer
Created in Path of Building.
anyone with knowledge of pob code in here? got some questions
Post your question first
Send me a pm if you want or post it here @frigid sierra
Throughput on my service is way better with compressed river chunks, but something is limiting me to around 11 MiB/s ingress between two 10gig machines.
I wonder if my traffic goes out onto the internet and back when on v6...
Hrm, nah, just a coincidence. Peaking at 17
"MiB" :|
The mebibyte is a multiple of the unit byte for digital information. The binary prefix mebi means 220; therefore one mebibyte is equal to 1048576bytes, i.e., 1024 kibibytes. The unit symbol for the mebibyte is MiB.
The unit was established by the International Electrotechnica...
The megabyte is a multiple of the unit byte for digital information. Its recommended unit symbol is MB. The unit prefix mega is a multiplier of 1000000 (106) in the International System of Units (SI). Therefore, one megabyte is one million bytes of information. This definiti...
I can't read user reviews of storage media anymore, it's always "well, I bought 1TB but there are actually only 931GB on there, 3 stars" or "I went with the 4TB drive even though I needed 3TB because it is known you always get less", etc.
Its real annoying that they haven't standardised which unit to use though.
The real problem most of the time is that Windows Explorer, among others, calculates in 1024 units but displays SI units
Would be nice to cut down on the confusion however
I know I also fell for the "u actually get less storage" idea back when I had no idea how computers worked
Hi @fickle yew, curious why all awakened support gem listings on poe.ninja are L1/Q20
Checking the listings on the official trade site, there seems to be no shortage of 0-quality ones for sale
"mibibyte" isn't a word, it's just an attempt to redefine language to legitimize the lies of hard drive marketing. it deserves to be cringed at
It's been a standard for over 20 years. The SI prefixes are base 10 and have been standard for much longer. The real problem as Cinnabarit said is that the units are incorrectly used, or more specifically that the SI prefixes are used for multiples of 1024 instead of 1000
@carmine merlin @velvet fog Is there a way to run pob directly from a Lua interpreter instead of from the .exe file? I want to put it under a debugger
I tried to run Launch.lua and HeadlessWrapper.lua but got errors
Not that I know of unfortunately
I’m guessing Openarl probably has this but it’s not out in the open asfaik
so how do people debug when making PR? just doing printf like a caveman? 😛
The Lua part of PoB is actually embedded in a closed source C++ application (the .exe) that provides the OpenGL environment, the console, hot reloading and other functions
You can use the Lua part in headless mode, but you will most likely need to add functionality, like the stubbed compress/decompress functions
printf doesn't really work if you debug with the GUI, you would need to use the provided ConPrintf C++ function
pob.party is pob compiled into wasm right? so whoever does that must have access to all the code?
It's reimplemented to some extent, and also closed source
The code for SimpleGraphics.dll is actually available (as in source-available, not as in open source), but not for PathOfBuilding.exe
so about the fork, when Openarl adds some commits to the base pob like at the start of league, are those cherry picked manually into the fork?
I have high hopes for brathering and emmitt's library, that is now decoupled from the actual planner application, so we can at some point in time hopefully have some traction and collaboration around an open library that everybody can use
SimpleGraphics.dll source: https://github.com/Openarl/PathOfBuilding/files/1167199/PathOfBuilding-runtime-src.zip
It's from 2017 but it's not been updated since
I'll just put this here, for people who would like to check out some alternative things: https://github.com/PoESkillTree/PoESkillTree.Engine
I really hope I have the time to put some energy into this (as I kinda promised before, but haven't been able to do yet).
A separate calculation engine is, from my point of view, is really beneficial
it is
@radiant hawk I use it as it uniquely identifies the power-of-two kind, regardless of how the regular one is misused. It’s unambiguous and that’s super useful.
Whether desktop vendors are trying their best to confuse the non-SI one, that’s a completely different problem 😄
I wonder if our object storage is up and running, would be nice to cache the river in.
You should see the OpenStack API, which uses all kinds of gigabytes, if they mention the unit at all 😄
🔪☁️
is there a way to use ConPrintf to print a table variable?
cool, thanks
@broken cloud awakened gems need a bit more love. Been busy adding other things...
@carmine merlin any idea how hard it'd be to add minion acc/crit/dmg to pob xml outputs?
Or keystones, would be nice not to have to look through all items to find keystones granted by them
@grave wren Thanks for finding that bug btw, currently working on resolving it

tried debugging it myself but pycharm doesnt reallly let me set breakpoints in 3rd party libs
is there a way to print the stack trace with ConPrintf ?
Better to just grab it from Github for that purpose
yeah it's a bit meh in that regard unfortunately
It's nice to use with the interactive prompt too btw, because everything prints there automatically
way too used to the debugger workflow of pycharm to really swap over :<
The bug lies in PoB's implementation of Vaal Skill Gems / the way they make their way into the XML
oh i remember fixing something like this
activeSkill=2 is a reference to Blade Vortex, which is not there because it is kind of a part of Vaal Blade Vortex
So there are three ways to go about this if the base version is selected:
Replace the Vaal ability with the base version in skill_groups
Replace it in active_skill only
Return the Vaal skill in active_skill regardless of the option set
- Would be awkward because then DPS won't match
I think 2. would be the least confusion approach
How often does content.ggpk change when new patches (e.g., 3.9.2) come out during a league?
Do you mean the structure or the content?
I was thinking content
Almost every time there are no server-side-only fixes, necessarily
Visual changes tend to lead to new shader caches, new items have assets and metadata, zone fixes may have new worldarea files, and so on.
I keep most old versions of them for the future, in case there’s differences in data files that make the formats easier to figure out, differentials are super useful.
@fickle yew any plans to swap to the pob fork for impale support?
@worthy cape openstack is kind of a clusterfuck in general -- it's the worst kind of design-by-committee (specifically, the kind where the members of the committee were all trying to stab each other in the back)
@grave wren It took way longer than it should, but I got a release - with support for Python 3.6 and the workaround (thanks!)
Hey guys! Is there is good documentation about how to make poe trade query links?..
I can't find good info and just trying to understand by looking on PoE Ninja's links...
Oh I just saw you're message in #wiki you mean the actual url query string.
I have seen information on that somewhere...
See if this helps @pearl reef https://old.reddit.com/r/pathofexiledev/comments/7aiil7/how_to_make_your_own_queries_against_the_official/
@grave wren I’ll have a look at the minion stats thing. Thought those would already be in the XML though
-8% increased Quantity ... => 8% reduced Quantity ...```
Where can I find a complete list of these "normalization" rules?
when Openarl adds some commits to the base pob like at the start of league, are those cherry picked manually into the fork?
yep, I have do go through and do most of it manually
@fast citrus yes, tnx, reddit post is exactly about that♥️
is there a timeless jewel simulator?
Not that I've come across
@carmine merlin do you know where is the place that the on-hover breakdown in the calc section is calculated and drawn? I know the label and format is specified in CalcSections-3_0.lua but I can't find the place it's used
@frigid sierra CalcBreakdown.lua and CalcBreakdownControl.lua
The naming of all components is pretty straightforward
thanks
@brazen goblet no, because nobody outside GGG knows how they are generated
Finally wrote this monstrosity: https://woofle.net/atlastool/ -- interactive atlas data table; lets you 1) look up maps, with sorting by name, region, and tier; 2) check off map completion; 3) keep track of what your watchstones are doing to map tiers, both by region and overall
It's generated from the GGPK, actually. No manual data entry involved 🙂
Ahh I forgot my 'tongue-in-cheek' emote
I was asking how to make a trade search query link, and if for someone it would be interesting — this is how:
First you need to setup your filters, then open F12 and open Network tab. Next you return to site and press the search button and return back to F12 Network tab. There will be 2 records with "post" and "get" methods. We need to find out infromation that was posted so we click once at the name of the post method. It will open another tab and in the end of it there is "Request Payload" section containing the query.
We need to copy it and combine with:
https://www.pathofexile.com/api/trade/search/Metamorph?redirect&source=
... to get final link:
https://www.pathofexile.com/api/trade/search/Metamorph?redirect&source={"query":{"status":{"option":"online"},"type":"Vaal Regalia","stats":[{"type":"and","filters":[{"id":"pseudo.pseudo_total_resistance","value":{"min":70}}]}],"filters":{"socket_filters":{"disabled":false,"filters":{"links":{"min":6}}},"misc_filters":{"disabled":false,"filters":{"corrupted":{"option":"false"}}},"armour_filters":{"disabled":false,"filters":{"es":{"min":500}}}}},"sort":{"price":"asc"}}
It will work after Metamorph end, its linked to SC league. You need to change leaguename if you are playing other leagues like HC, standart, standart HC ...
interesting, never knew you can do GET like that. I always just use POST
@grave wren I have considered it but haven't tried yet. Pob has been rock solid for me so far which is a priority when doing calculations for so many different builds. I'm very good at finding pob errors since someone in the population almost always has it. Closing on 9 million builds calculated..
True, wish impale made it into openarl pob
@rapid pagoda I think back when we started the national science cloud project there was the dying Nebula or Shift or something project, and the somewhat promising OpenStack. We went with the least-shit-at-the-time choice 🙂
I do agree that it's a very janky solution, but it sometimes almost works 😄
