#tooldev-general

1 messages Β· Page 79 of 1

real blade
#

It certainly isn't top tier, I would know, I am playing it.

misty sparrow
#

hello, is there api for characters or do i need to parse html myself?

cosmic saffron
misty sparrow
#

thanks a bunch!

frank hare
#

Does PoB correctly calculate "Supported by lv.16 Power Charge on crit support" or do I have to manually input the extra link into the skill setup?

wind garden
#

I didn't know this could happen but pathofexile.com/trade is actually lagging behind the api @compact isle

chrome topaz
#

yeah it happened a week ago think he said it's some postgres issue

rapid pagoda
#

wait, stop the presses, the official search isn't es based?

mortal bone
#

they use postgres as the backend

wind garden
#

Ya Im a bit salty about a reddit post that was fanatically defending the official site as though it was perfect

hazy fog
clever thistle
#

can someone confirm this line of code does what i think it does? my brain hurts :\ (edit: language is LUA)

self:Zoom(IsKeyDown("SHIFT") and 3 or 1, viewPort)```
my interpretation:   if the shift key is down pass 3, else pass 1
#

nvm i've confirmed it myself

dull laurel
#

Why should postgres be bad?

worthy cape
#

@clever thistle If it's a bit like Perl, and and or are low-priority short-circuiting operators, assumedly with the usual precedence where and binds harder.

#

cf. expr or die();

chrome topaz
#

so, a captcha now

pseudo ocean
#

And cloudflare

cobalt whale
#

Hey! Good evening everyone. It's finally done! The first version of: https://hideoutshowcase.com is live! It will give you an amazing platform for sharing hideouts. It has too much to write in a discord chat message. But feel free to read all about it here: https://www.pathofexile.com/forum/view-thread/2284388

I'm hoping to get some feedback on this :). I'm always open for new idea's!

#

It does however need more content of course. But I'm currently writing to a lot of hideout creators and youtubers to get a great selection of hideouts on the site πŸ˜ƒ

fathom spruce
#

looks great, good job

cobalt whale
#

Thank you @fathom spruce

cosmic saffron
#

is that button hover effect intended?

#

looks kinda weird breaking the text in 2

cobalt whale
#

It was intended but I'm also thinking of removing that. It makes the buttons hard to read! Thank you for the feedback @cosmic saffron πŸ˜ƒ

cosmic saffron
#

if you want to make the buttons pop out more try emulating the in-game hideout ui buttons where they just swap out the background

cobalt whale
#

Great idea! I'll try that!

hazy fog
#

And I’ve now suffered the indignity of having my character killed by a skill I helped make! mathilKek poor Openarl

cosmic saffron
#

also this weird transition when you drag images in the carousel - should either change the background blending (make it translucent) or disable the opacity change

#

should also be a tooltip for the hideout type telling you where to obtain the base type

rapid pagoda
#

has anyone mentioned Tangmazu, Vestilo, Krav, or Saresh / Slave before?

cobalt whale
#

@cosmic saffron I'll add that to the bug list and fix it πŸ˜ƒ

dull laurel
#

@cobalt whale this slicing text hover effect is slightly disturbing πŸ˜„

cobalt whale
#

That will be removed really soon haha πŸ˜ƒ @dull laurel

dull laurel
#

Just noticed it belongs to the theme you purchased πŸ˜‰ It's interesting from a css / webdesign standpoint though. Gonna look at your code and see how they implemented it

cobalt whale
#

Feel free to do that. It is indeed a template I've purchased. I'm not really strong when it comes to design work. So I found this template and I thought it fit perfectly!

dull laurel
#

Indeed, looks very very nice. I should also buy something for my next project, to make it not look ugly πŸ˜„

grave wren
rapid pagoda
#

cygwin4lyfe

waxen musk
#

is pypoe viewer working? i open my ggpk and get empty window

pseudo ocean
#

is currency cop working?

#

doesnt open for me

glossy juniper
#

everything is ok before this commit.
I'm not good in python, so..

waxen musk
#

Brotli installed for me just fine on 3.7

#

pypoe launches but when I load ggpk it doesn't list any files on the left side

simple ravine
#

Merry Christmas fellow tooldevs!

cobalt whale
#

@simple ravine Merry Christmas!! ❀

noble siren
#

Merry Christmas, guys!! Will anyone consider promote a high-stakes tool dev to tool developers? πŸ˜ƒ

hazy fog
#

a wut

#

GWfroggyZoomeyes πŸ“Œ

meager flax
#

@gritty olive sory to bug ya

#

trying to log into currency cop, put in my session id, hit login and nothing happens

hazy fog
#

is it updated to use oauth yet

meager flax
#

dont think so

hazy fog
#

that's why it doesn't work then

#

I think exilence works GWnanamiKannaHuh

#

ziz(?) uses it

chrome topaz
#

there's oauth?

hazy fog
#

Novynn said it was coming, dunno if it's in yet marauderthinking

velvet fog
#

Acquisition and Procurement could login with session id, maybe exilence had the same way

hazy fog
#

but currencycop can't? GWfroggyBlobThonk

fathom spruce
#

afaik there's no release version of currencycop with whatever login fix there was

#

but it was added to the project

waxen musk
#

Is there a list of incursion mods anywhere? Every site (wiki, poedb, poeaffix, poecraft) pretends like they don't exist oO

fathom spruce
waxen musk
#

Its not in the list of per-item mods tho

velvet fog
#

Incursion's mod assigned by server, there are no client information inside .dat files. maybe we could use trade search to compile a proper list

waxen musk
#

Yea i know the mod doesnt list applicable items, but after two leagues I thought we would've had a list by now

#

Btw where do you get zones for crafting recipes? I see ones bound to WorldAreas, but not ones found in the temple. Are those added manually?

velvet fog
#

IncursionRooms.dat -> point to .arm file -> parse .arm file

#

same as DelveRooms.dat

bold spire
#

Hi there! I'm trying to make a tool for displaying an overlay of price estimation data of an entire stash while ingame.

#

what I'm currently doing is:

  1. open a link to the desired stashtab info in a hidden internet explorer window
  2. waiting until it is loaded
  3. getting the text from the page
  4. converting it into the form you get when pressing ctrl + c on an item in game on a per item basis
  5. converting THAT into the form desired by poeprices.info using code from the trademacro
  6. retrieving the price estimation on a per item basis
#

This all works for me. The problem is that my only current test user, one of the people behind poeprices.info, is experiencing an issue concerning step 2

native pollen
#

how do you wait until it's loaded?

bold spire
#

the whole thing is in ahk, so if anyone could tell me how handle steps 1-3 (maybe without internet explorer, would be nice I think, or would be willing to test if the issue experienced by my test user is an isolated case, that'd be nice

#

also I use

#

while (ie.ReadyState != 4){
Sleep, 100
}

grave wren
#

why dont you use the REST api for 1-3?

bold spire
#

with ie := ComObjCreate("InternetExplorer.Application")

grave wren
#

or don't i understand what you want to do

bold spire
#

rest api?

native pollen
#

he doesn't know how to use the REST api

#

so teach him

bold spire
#

I'm new to this, started on this like 5 days ago ^^

grave wren
native pollen
#

@bold spire what you want to do is send an HTTP request through AHK

#

instead of opening the IE window, but that's not your problem so far

mortal bone
#

Those apis require you to be logged in

bold spire
#

yeah

#

I tried url to file and came to understand I "had" to load the site in a browser in which I am logged in

waxen musk
#

@velvet fog oy, any chance you could fix the mod popup on mobiles? If theres enough mods, it covers the whole page and theres no way to close it

bold spire
#

tbh, while the link seems useful, faust, I don't know what exactly I should do with it

grave wren
#

it's and endpoint that allows you to retrieve data in the json format. You'll probably have to look up how you can call them on AHK

bold spire
#

I see

mortal bone
#

https://www.pathofexile.com/character-window/get-items?accountName=Emmitt&character=Emmitt_Cyclone

#

that will get you all the items from a specific character

#

It seems like he wants get-stash-items

bold spire
#

yeah

#

ideally, since I think users would like that, without recquiring a session id?

grave wren
#

does work too with the api

mortal bone
#

Ye

bold spire
#

that is to say just using account name data

grave wren
#

wont work without ssid

bold spire
#

assuming the profile is public

mortal bone
#

no

#

public profile != stash access

bold spire
#

doesn't? Kay

#

ah, I see. it just worked in my case because I was trying to access my own stash after logging in

mortal bone
#

yeah

#

you can see character information if the profile is public

bold spire
#

so ssid is a recquirement for the tool now, I guess... hmm. I'd gotten it to work using a login on internet explorer, but since the way ie works has to be modified to get it to even display json data I guess having to enter ssid would seem safer than having to execute a .reg

mortal bone
#

until oauth if fully functional, yes. You need the ssid to do anything with an account

bold spire
#

Hmm

#

even after providing my ssid to the linked website, trying to get stashed items returns forbidden

#

getting the list of characters of that account works though

#

maybe it's relevant that the site appears to be out of date? Temp league is incursion. I tried getting standard items, though

#

also AHK seems to REALLY like Internet Explorer. Virtually no tutorials on anything else, not that I could find.

mortal bone
#

The api hasn't changed since that was generated

grave wren
#

it's just an api you need to adapt the league to the current one

bold spire
#

well as above, I get the same message I'd get if I wasn't logged in

mortal bone
#

Maybe give us some sort of code snippet?

bold spire
#

oh, I'm trying on

mortal bone
#

we are trying to help you blind here

bold spire
#

the link provided

#

I entered my ssid there

#

and then provided the other information asked to get stash items

#

this is what I got

#

meanwhile the character retrieval is working fine

mortal bone
#

Yeah because it should be POESESSID not SESSIONID

bold spire
#

this is what I copied

#

wrong one?

mortal bone
#

the cookie is being set incorrectly

bold spire
#

on the provided site? ah

mortal bone
#

yes

bold spire
#

hmm

mortal bone
bold spire
#

still seems useful if I can figure out how to retrieve data from a (properly set) link with ahk, all will be well

waxen musk
#

Is +level of support gems mod disabled?

mortal bone
#

wut?

waxen musk
#

The craft

#

Im not at my pc right now so i cant check

waxen musk
#

It exists in the bench options list but idk if its obtainable

mortal bone
#

looks like it is still there

waxen musk
#

Maybe it only unveils from catarina drops

#

Since it used to be her signature mod

mortal bone
#

Looks like you can get it on Weapons and Shields through catarina and Body Armour through Elder mods

#
Path of Exile Wiki

All skill gems have gem tags (also called keywords) listed in the first line of the mouseover description. They are used for dividing the skills into groups and to clarify which type a skill is.
They do not indicate which modifier (or stats) apply to a skill however.

bold spire
#

after now knowing what to look for, I think I found code in the trademacro I could copy for receiving the information I want

#

thanks!

#

Might fail, but it seems like it shouldn't.

simple ravine
#

Anyone know how the GGPK hashes are computed? There seem to be one for Directory record and one for File record

#

The Directory hash seems to be a 4-byte (uint?) hash, meanwhile the File one is a 32-byte hash

worthy cape
#

@simple ravine The 32-bit ones in directory listings is Murmur2 of lowercase UTF-16 filename of the entry, they are stored in ascending order to make lookups by hash fast.

#

The big honking SHA-looking ones I don't believe are public knowledge how they are derived.

simple ravine
#

what do you mean big hinking SHA-looking ones?

#

am I missing something? I have a 4-byte (file) one and a 32-byte one (folder)

#

I was thinking about creating a validation function, and perhaps a defragger function

waxen musk
#

why doesnt poedb show odds of rolling shaper/elder mods? i assume we can compute them the same way as other mods right?

bold spire
#

got it to work! and it's so simple, too! Except I seem to be stuck at "succeeding" in a terminal window

bold spire
#

and all works, now

#

nice

#

Might be done with the first fully functional version of the tool 2 days from now?

rapid pagoda
#

@velvet fog I think there's something wrong with the display of biome spawn weights on http://poedb.tw/us/DelveBiomes -- according to the graph Abyssal City has zero spawn weight anywhere other than depth 51? that doesn't seem right

waxen musk
#

also theres an issue on the mod.php page, it lists crafted mods ignoring item type, i.e. for a wand i see this

velvet fog
#

@waxen musk Add a close button in mod popup on mobiles, fixed mod.php page that ignoring item type too

#

@rapid pagoda Updated new depth info

dark dove
#

@compact isle livesearch is broken

#

fixerino pls

compact isle
#

restarted

dark dove
#

thx fam

hazy fog
#

back in my day we dropped items on the coast to trade

bold spire
#

anyone here who'd be willing to test an ahk script for me? It's meant to download data from a given stash (using poesessid), this being the first part of a tool I'm trying to make in cooperation with poeprices.info to provide ingame pricecheck information for entire stashes as an overlay. It seems to work fine on my end, so I would like to get others to test it to find any bugs or compatibility issues. I probably overlooked something (though I hope I didn't).

bold spire
#

?

simple ravine
#

@bold spire Hey there. Unfortunately I don't have time for that right now, but something I think you could benefit of implementing, unless you have already (it's difficult to gauge experience level by glancing at the discussions sporadically), is to implement unit- and integration tests to your code to make sure it works.

grave wren
#

can you even do that in AHK?

simple ravine
#

I'm not sure, but I assume there should be some tooling around every turing-complete language?

#

I have to admit I don't have any experience in AHK scripting my self, but I am under the impression that you can write C# code in it?

delicate ore
#

you can access .net libraries at the very least in it

#

let me double check on the c#

simple ravine
#

What I was thinking was give the application a bunch of different variations, and then generate a lot of permutations and make sure the output is within accepted parameters

delicate ore
#

im not sure if you can run c# code natively

simple ravine
#

In case he has some c# experience, he could probably achieve it

delicate ore
#

thats pretty cool

simple ravine
#

@delicate ore , you maintain an AHK-script right?

#

can you shine some light on your experience with AHK, and the benefits of using it vs using let's say a "pure" C# application (i.e. WPF, or whatever)?

#

I suppose you get some global hotkey binding help etc.

delicate ore
#

ahk is only good for very minimal and rapid deployment

#

it's very terse

#

and easy to learn

#

but there are no hard advantages really besides that

simple ravine
#

which one is it that you were working on? the iteminfo thing?

delicate ore
#

also it doesn't have input interception

#

crafting helper

#

i took a long break from it

#

basically it would alert you however if the mods you want match a poe.trade search

simple ravine
#

ah, I thought you did the iteminfo-ahk for some reason

delicate ore
#

while you're crafting

#

nah

simple ravine
#

I'm just surprised it hasn't been moved over to something that is easier to structure

delicate ore
#

the author might not know any other languages

#

extending that as much as he did has to be a pain

simple ravine
#

But then again, I suppose it's about ambition level and how much time you can invest in it

grave wren
#

@cosmic saffron or everyone else: any suggestions for more/diff abbreviations?

    keystones = {41970: {'name': 'Ancestral Bond', 'abbrev':'AB'},
                 54307: {'name': 'Acrobatics', 'abbrev':'Acro'},
                 42178: {'name': 'Point Blank','abbrev':'PB'},
                 14914: {'name': 'Phase Acrobatics','abbrev':'Phase Acro'},
                 22088: {'name': 'Elemental Overload','abbrev':'EO'},
                 40907: {'name': 'Unwavering Stance','abbrev':'Acro'},
                 10808: {'name': 'Vaal Pact','abbrev':'VP'},
                 18663: {'name': 'Minion Instability','abbrev':'MI'},
                 24426: {'name': 'Ghost Reaver','abbrev':'GR'},
                 23407: {'name': 'Perfect Agony','abbrev':'PA'},
                 39085: {'name': 'Elemental Equilibrium','abbrev':'EE'},
                 54922: {'name': 'Arrow Dancing','abbrev':'AD'},
                 56075: {'name': 'Eldritch Battery','abbrev':'EB'},
                 12926: {'name': 'Iron Grip','abbrev':'IG'},
                 23540: {'name': 'Conduit'},
                 45175: {'name': 'Necromantic Aegis','abbrev':'NA'},
                 10661: {'name': 'Iron Reflexes','abbrev':'IR'},
                 44941: {'name': 'Avatar of Fire','abbrev':'AoF'},
                 31703: {'name': 'Pain Attunement','abbrev':'PA'},
                 31961: {'name': 'Resolute Technique','abbrev':'RT'},
                 11455: {'name': 'Chaos Inoculation','abbrev':'CI'},
                 57279: {'name': 'Blood Magic','abbrev':'BM'},
                 34098: {'name': 'Mind Over Matter','abbrev':'MOM'},
                 63425: {'name': "Zealot's Oath",'abbrev':'ZO'},
                 17818: {'name': 'Crimson Dance','abbrev':'CD'},
                 42343: {'name': 'Runebinder'}}
simple ravine
#

interesting data structure

obsidian lark
#

Seems to be a typo there for Unwavering Stance i guess it shouldnt be Acro

grave wren
#

woops, copy paste error. ty

#

mostly looking to only use the "known" abbreviations

#

prolly should also remove crimson dance then

simple ravine
#

I had our PoE Helpers/Tutors make a list of all known abbreviations in a google spreadsheet

#

let me find that for you

grave wren
#

oh nice

simple ravine
#

It's not updates since February this year

#

so if any keystones or whatever has been added since then, it should probably be updated

grave wren
#

yep runebinder mostly

#

but no idea how to abbreviate or if we do that yet

simple ravine
#

RB doesn't seem to be used for anything (in this sheet at least)

#

It's a common issue that I've seen, that abbreviations are re-used for more than one thing, such as FB (Frostblades, Flame Blast etc)

grave wren
#

facebreaker

#

yep

simple ravine
#

yah, that too

grave wren
#

yeah i'll keep consistent to your docs so we can maybe be consistent at least a bit πŸ˜„

versed ginkgo
#

Would adding the beggining of the first word to each abbreviation be too much to display on the simple parsing?

'Ancestral Bond', 'abbrev':'AncB' 'Elemental Overload','abbrev':'EleO' 'Necromantic Aegis','abbrev':'NecroA'
etc

grave wren
#

not really but I've never seen that yet

versed ginkgo
#

Would still be somewhat able to describe what they are, and may be useful for newer players too, since they won't know what all the abbreviations are

grave wren
#

doubt that a few more letters help that much tbh plus you'd introduce more abbreviations for stuff

#

if you f.e. google necroa poe you won't find much

#

same applies to NA poe i guess

versed ginkgo
#

Fair

grave wren
#

tbh i dont know if people really use more than 3-4 keystones either way

simple ravine
#

My opinion is that abbreviations should only be used sparingly. If you have the space to actually print out the whole word, that's always my preference - and hence no confusion. Abbreviations in my opinion is something you use to save effort when typing, or when the words are repeated a lot of the time in a longer text.

grave wren
#

well i'd display the whole thing if people use the !pob command

#

but probably only the abbreviations on channels where it auto parses to save space

grave wren
worthy cape
#

@simple ravine sorry, the 4-byte file hashes in directory listings for files are murmur2-32 hashes of the filenames
The 32-byte digests I don’t think we know how they are computed yet

simple ravine
#

ah hmm

grave wren
#

god i need to finally un-fuck my output python code

#

i mean it works but it's kinda ugly

simple ravine
#

object-orient it

grave wren
#

well i didnt want to commit to much because i wanted to make it configurable

#

but then again i didn't find a lot of nice ways to really make that work

#

and i am not even sure if people really would customize it

simple ravine
#

not sure if my comment came across the way it was supposed to, so in case it was misunderstood - i'll explain a little further

#

assume you have a class called Character, and one called Resistance

#

You could either use a strategy pattern of whatever it's called to accept a ReistanceOutputFormatter or something

#

and structure the code that way

bold spire
#

"is to implement unit- and integration tests to your code to make sure it works."

  • not sure what exactly you mean, but I thought of getting testers to try the tool in stages. Also, I am very much a complete beginner (5 days into trying to figure out how to get this done at looking at a related hello world tutorial)
simple ravine
#

or just have an interface called IOutputFormatted, and implement public EmbedElement Format(), or even simpler public override ToString() <- or the equivalent in the language you're using

grave wren
#

yeah was hoping i get a more generic output to work but its a bit of a mess so something like that needs to happen soon i guess

#

ty

simple ravine
#

this is why I really like talking about S.O.L.I.D. with developers πŸ™‚

#

has helped me a lot to nerd down into those principles a lot

grave wren
#

Yeah my weak point is hoping something nice shows up along the way

#

which mostly leads to messy code (in my hobby projects mostly)

#

at least it's "just" the output

simple ravine
#

I'm not sure if it's my brain being fried right now, or something else, but I can't follow/understand the code

grave wren
#

Now i'd probably try to aggregate info that should be together into classes which then get formatted the right way

#

it's just very loose quick and dirty object => markdown code

#

which then gets translated into the embed with sections

simple ravine
#

yeah, it's probably my brain being fried (and it being python, which I am not very used to)

#

third day in on low-level c# code for parsing GGPK in a more efficient way

grave wren
#

plus its my first bigger python project so its a weird mix of oop back down and very loose stuff so its a bit weird

simple ravine
#

(just for the fun of it)

grave wren
#

cool

#

doesnt hurt to get more options

simple ravine
#

trying with memory mapped files now

#

well, PoeSharp library is out there, but it's a bit too convoluted and bloated

#

so making a leaner version of it now, and thought I'd look over performance

grave wren
#

sounds fun but intense

simple ravine
#

I'm reading the GGPK records in 284 ms right now (hot reads), so that's pretty quick for a 10GB+ file

grave wren
#

nice sounds like a good approach

simple ravine
#

I'm using pointers in a way I haven't done before, so it's pretty interesting - but yeah, intense hehe

#

But hopefully it'll lead to an efficient library that people can use without having to deal with the things I'm doing now, and focus on doing creative things with it

#

I'll be doing the same thing with the DAT files as well

#

Current library version is using Streams and a lot of inheritances that I thought would be cool to have... Like abstracting the GGPK File (system) and regular File system into interfaces, and have you pass in an IDirectory which could either be a GGPK File instance or a regular directory on disk into a DatIndex

#

but I think it became a bit too much for aspiring developers to take in and use

grave wren
#

Hm depends verbosity might help

simple ravine
#

Yeah.

#

Another issue was that the flexibility made it a bit too convoluted to consume the functionality

grave wren
#

My main gripe with pypoe was starting to use it

#

it was quite hard to grasp how it works the first few times i did want to extract something tbh

simple ravine
#

same here, and that my inexperience with Python didn't help hehe

#

this is the API surface usage of the current version

#

it's not too bad, but I just want to make it more simpler to maintain as well I guess

#

note Line #21 in the last one, where one does new DiskDirectory

#

that thing is a bit too convoluted to use

grave wren
#

coming from java working with a lot of streams i dig it 🀷

#

did you ever toy around with letting users' customize ui/frontend with a DSL btw?

simple ravine
#

I haven't no. I haven't specialized in UI/frontend in 15 years πŸ˜„

grave wren
#

Hm too bad - but the more i think about how/why I'd want users to do it, the more i realize that there doesn't seem to be a very good reason to allow it in the first place

dark dove
#

guise does pob just have automatically cache'd mods for crafting

grave wren
#

I have no clue what the question is

hazy fog
#

short answer:no
long answer: GWnanamiKannaHuh

obsidian lark
#

Please tell me there is a better way to find the version of an impresence amulet then by looking at the icon url.

deft jolt
#

depends what your source data is

obsidian lark
#

The stashtab api in this case, from GGG

deft jolt
#

if its the stash api then you can just look at the affixes

obsidian lark
#

It's not the trade river but the stashtab API used on the site.

#
"items": [{
        "verified": false,
        "w": 1,
        "h": 1,
        "ilvl": 84,
        "icon": "https:\/\/web.poecdn.com\/image\/Art\/2DItems\/Amulets\/ElderLightning.png?scale=1&scaleIndex=0&w=1&h=1&v=4bab22d711b60505ffee5ca2452f7b8c",
        "league": "Betrayal",
        "id": "f3c112a737e8926cd7d2afa04d756fb3de323ee561f3dcf156220ca36dd020f1",
        "elder": true,
        "name": "Impresence",
        "typeLine": "Onyx Amulet",
        "identified": true,
        "corrupted": true,
        "requirements": [{
            "name": "Level",
            "values": [
                ["64", 0]
            ],
            "displayMode": 0
        }],
        "implicitMods": ["+14 to all Attributes"],
        "explicitMods": ["Adds 10 to 46 Lightning Damage", "+54 to maximum Life", "+25% to Lightning Resistance", "1% of Energy Shield Regenerated per second", "Conductivity has 100% reduced Mana Reservation", "Gain Maddening Presence for 10 seconds when you Kill a Rare or Unique Enemy"],
        "flavourText": ["Though its body was locked in stone,\r", "its essence wandered the infinite,\r", "learning, and preparing."],
        "frameType": 3,
        "category": {
            "accessories": ["amulet"]
        },
        "x": 2,
        "y": 5,
        "inventoryId": "Stash10"
    }]
#

Seems like not, thats all the item information that i get 😦

deft jolt
#

look at explicitMods

#

this is how i tell them apart

#

private static ItemVariant impresence = new ItemVariant() {{
  name = "Impresence";
  variants = new Variant[]{
    new Variant() {{
      variation = "lightning";
      mods = new String[]{"Lightning Damage"};
    }},
    new Variant() {{
      variation = "fire";
      mods = new String[]{"Fire Damage"};
    }},
    new Variant() {{
      variation = "cold";
      mods = new String[]{"Cold Damage"};
    }},
    new Variant() {{
      variation = "physical";
      mods = new String[]{"Physical Damage"};
    }},
    new Variant() {{
      variation = "chaos";
      mods = new String[]{"Chaos Damage"};
    }}
  };
}};
#

if there's a match in explicit then assign the variant

obsidian lark
#

Cool will have to do something similar, thanks! Do you have or know of any way to find out all items that needs to be treated this way?

deft jolt
#

you can take a look at this

#

should cover all of the current ones

obsidian lark
#

Wow, that will make my life easier, thanks!

deft jolt
#

np

#

Also, there are items such as Grand Spectrum or Doryani's Delusion that have the same name but different base

#

keep an eye out for those

obsidian lark
#

Hmm will have to take a look at that too. Recently found out about prophecys and divination cards with the same name. 😁

deft jolt
#

at least you can distinguish those by the frametype

#

but some things get pretty fucky

hazy fog
novel wing
#

Hello there, anyone has problem with Currencycop logging in? I enter the POSSeSID but like nothing happens?

#

or it just dosent suppport Betrayel?

fathom spruce
#

@simple ravine from your code before, why the unsafe bytes to struct?

simple ravine
#

because it's faster

#

I am well aware of how to do it the safe way, @fathom spruce

fathom spruce
#

fair enough

#

I usually see a bunch of unsafe code because people don't know the correct way to do it

#

I am curious though, what did you get for a performance difference?

simple ravine
#

I've done C# for 15 years πŸ˜‰

#

I can't recall, it's quite a while ago I wrote that

fathom spruce
#

womp womp, 13 years here

simple ravine
#

I know I benched it though

#

well actually it's probably around 13 years, but programming for 15+ years

#

now that I think about it

#

actually, I was around 10 when I started with QBasic which is 23 years ago, but I really don't count the early years

#

@fathom spruce that code you pasted looks like it'll allocate quite a bit as well

hazy fog
#

this a programmer dick waving competition GWfroggyMonkaThink

fathom spruce
#

how so @simple ravine

simple ravine
hazy fog
#

I think I've only been programming for the last 17 years only 3 of which were professionally GWqlabsFeelsBadEh

simple ravine
#

Do you have the whole thing? I'll run a comparison in benchmarkdotnet

fathom spruce
#

heh, it's from an old memory reader library I had

#

supported local/remote process reading

#

also local process clr hosting and remote process code injection

simple ravine
#

funny coincidence, new code is using mmap

fathom spruce
#

hah

simple ravine
#
var recordHeader = *((RecordHeader*)ptr);

^-- quite quick

fathom spruce
#

I've always preferred to handle it safely and take the performance hit, it's usually not too terrible

simple ravine
#

you're mileage may vary β„’

fathom spruce
#

mhm

pulsar moat
#

@novel wing currency cop stopped working for me as well
I and a lot of others swapped to Exilence

velvet fog
simple ravine
#

not cool

pseudo ocean
#

(New player here) what's some useful 3rd party programs

#

Thank you

mortal bone
#

Is poe.ninja open source?

#

Or they just jack the code?

fickle yew
#

Wow.

grave wren
#

Rip rasmus

deft jolt
#

tencent has no chill

dull laurel
#

maybe they use the same html framework?

#

also the amount of crap loaded by poeninja is impressive. at least 3 different ad providers and tons of user tracking

grave wren
#

surprise in the current state of the web

dull laurel
#

also for the .sortable class, tencent uses tabs and ninja uses spaces. to be honest, tencent uses tabs wrong, but that is another discussion πŸ˜„

south quarry
#

that's custom css though, nothing to do with a framework

grave wren
#

opens file in ide would you like to convert to tabs [y/n]

south quarry
#

and anyone writing css should have a formatter that will format to whatever their project is set to, so the code is literally the same

dull laurel
#

or deploy minified css to production cough

#

@grave wren wouldn't do that unless your IDE supports smart tabs πŸ˜ƒ

grave wren
#

intellij handled it nicely for now

mortal bone
#

@fickle yew sucks man. Might be able to contact GGG (not the tecent part) and see if they can't do something. Specifically Chris

grave wren
#

yup I'd also look into that

#

blatantly stealing is super shit

mortal bone
#

You can't pursue anything legally because Tecent is based in China

grave wren
#

i mean technically you can

#

but gl

mortal bone
#

Sure, you can, but they don't honor IP laws from other countries

grave wren
#

dont think chris can do much too but asking doesnt cost anything so yep only way to go i guess

mortal bone
#

Well, Chris still owns 13% of the company

#

He has a small say at least

fickle yew
#

I mailed Chris. About all I can do. I don't mind them making a site for the Chinese realm. Directly copying css and js is a bit much though.

grave wren
#

copies css for the discord bot

mortal bone
#

Yeah, they could have just asked you to host a Chinese version

grave wren
#

didnt they also just copy pob and add their own donation link?

mortal bone
#

I guess you know you made it as a Dev when a bigger fish comes along and steals your product

grave wren
#

waits patiently until the discord bot gets stolen while weeping

distant rock
#

Tencilence Soonβ„’

dull laurel
#

are you really sure they copied that? maybe its the same framework or ninja copied from them

grave wren
#

how would he copy from them when his site existed earlier

dull laurel
#

ha, that explains things πŸ˜„

#

but where is it used on the tencent site? i didnt see a similar layout to ninja on the main page and for further digging my chinese is non existent πŸ˜„

grave wren
dull laurel
#

ah, stolen indeed

#

they even use the lame international scion model instead of theirs

#

maybe they bought it? is ninja here?

grave wren
#

yes rasmus made the site

dull laurel
#

got it now. sorry for being slow 😦

grave wren
#

πŸ˜„

fickle yew
#

@dull laurel it's a complete copy of the js and css with a few modifications.

dull laurel
#

wat

fickle yew
#

And no I didn't copy from them. I spent a few 100 hours writing it πŸ™‚

grave wren
#

πŸ€”

fickle yew
#

But you're right. I should minify my css in prod..

dull laurel
#

@fickle yew is it open source or did they just copy the minified js without understanding it? πŸ˜„

fickle yew
#

Copied from the website. Not open.

dull laurel
#

haha, just gulp-css-minify it πŸ˜„

fickle yew
#

It looks from their js which is my filename with a - new on the end... That they unminified it.

#

But still have garbage variable names

#

And made a few modifications

#

So basically they just ran an indentation tool I guess.

mortal bone
#

that sucks a lot man

dull laurel
#

to the courts!

mortal bone
#

gl

dull laurel
#

vs. a billion yen company

mortal bone
#

There is a reason they just took the code

dull laurel
#

@fickle yew i hope you used the phrase "chinese overlords" in your mail to chris πŸ˜„

fickle yew
#

Aw snap.

dull laurel
#

sourceFile.text[lines[1] - 2] === "\r" ? "\r\n" : "\n", that is actually a cool shortcut to determine the line ending of a file. just making some casual conversation

dull laurel
#

I really miss IRC. 😦

mortal bone
#

pretty sure there is still an IRC around

jade adder
#

there is actually, think ferret is in it

versed ginkgo
#

We have a PoE IRC up?

dull laurel
#

the most important feature lacking from Discord is a highlight log. Like when you go away for some hours or days and come back, you get a list of all the notifications directed at you instead of having to go through every channel on every server and checking them

grave wren
#

The recent mentions feature does just that or did I misunderstand it?

dull laurel
#

@grave wren sounds good. where can I find that? ... found it!

#

Just lacks a "clear all" button πŸ˜„

grave wren
#

doesn't bother me too much tbh but yeah why not

vernal lark
dull laurel
#

@mortal bone are you still working on that skilltree of yours?

mortal bone
#

mhm

#

trying to not use so many masks

#

they are expensive and cause issues on smaller devices

hazy fog
#

oh nice, I know Novynn mentioned he'd do it but now he actually has, You can now search by x empty affixes not just pre/suff

south bay
#

whats the fallback exe in trademacro

little nebula
deft jolt
little nebula
#

thanks

simple ravine
#
$ dotnet run -c Release
Initialized GGPK: 12.9517 ms
Getting files of 'Data' folder the first time: 9.2687 ms
Getting files of 'Data' folder the second time: 0.002 ms

Files in 'Data' folder:
BetrayalTargetFlags.dat64
RandomUniqueMonsters.dat64
InvasionMonsterRoles.dat64
EssenceStashTabLayout.dat64
UniqueJewelLimits.dat
...
#

aww snap, much better πŸ˜„

fickle yew
#

@simple ravine nice!

worthy cape
#

hubba hubba

simple ravine
#

I'd say that perf is decent enough

#

Made it thread-safe, so it can use N threads for exporting (64 in this case)

old heath
#

Yay, someone using .net core

wary geyser
#

Anybody around for a question about the Stash Tab API?

bold spire
#

Well, I'm around, but only one week into even looking at hello world

#

still, I'm trying to make a stashtab pricing tool, so I may know something

simple ravine
#

It's better to just ask, @wary geyser

wary geyser
#

I'm having trouble understanding the timeline on the entries I'm fetching through the next_change_id chain

#

Is this a history or just paged queries of a current status?

#

If it's the former, why the lack of timestamps anywhere? If it's the latter, how do I know when I've reached the end of the chain?

simple ravine
#

paged of current status

#

you know when you've reched the end of the chain when the resultset is empty

#

which is likely to be not so often

wary geyser
#

But I'd need to be able to loop through the whole set again if I wanted to know whether an item has disappeared, right?

simple ravine
#

yeah

#

unless you know where you stopped looking

#

you can continue from that point

#

if you have 'Stash X' which is updated with an item, and it's currently at revision 1234, and current revision is 1235, it'll be moved and updated to 1236 or higher

#

and if you stopped consuming the river at 1235, you can continue processing with next_change_id 1236 and onwards

wary geyser
#

oh so the accountname+StashName are the persistent identifier but the id itself will get incremented whenever there are changes?

simple ravine
#

no, '1234' in this case would be the change_id (revision = change_id)

wary geyser
#

oh okay so the same tab id would come up again but would belong to a subsequent page so I know it's changed

#

But if that's true, then doesn't that mean that going through the chain from the start (not specifying a change_id) would show a history?

#

And if so is there any way to know how far back in time that history begins?

simple ravine
#

only the current state of each public stash is available at a given time

#

hence change_id with low values contains tabs that haven't changed in a long time

#

that's a pretty good analogy

#

SELECT TOP 100 * FROM River ORDER BY ModifiedDate

wary geyser
#

ModifiedDate in this case would be when you pick up on an already known tab further down the river

#

Assuming you're always running your script

simple ravine
#

approximately yes

wary geyser
#

Right, so it's only off by however much you're off from the head of the river

#

Worst-case

simple ravine
#

best-case

wary geyser
#

Oh, interesting

#

I'm assuming approval is predicated on providing the app to the community?

#

Or is it just non-abusive API call practices?

#

Are they public?

simple ravine
#

πŸ˜‚

wary geyser
#

Gotcha

grave wren
#

then still be worse off than the official one due to no affix > pre/suffix and tier determination :p

simple ravine
#

Good luck

grave wren
#

charging one ssfalchemy

wary geyser
#

Thanks for the info! Things have finally calmed down from Holiday vacation so I of course needed a project to noodle around with

#

Love messing around with trade data when a game has a vibrant economy

simple ravine
#

in the current format, which is not optimal for storage

wary geyser
#

Good to know!

#

Is there a reason why all the private premium tabs are still included?

mortal bone
#

Well, they send an entire stash on an update

#

private tabs will display as if they have nothing in them

#

effectively clearing the tab

wary geyser
#

Oh it's relevant in case someone switches a public tab private?

#

Can one even switch specialty tabs like currency or divination public?

#

oh

#

huh

mortal bone
#

all premium tabs can be made public

wary geyser
#

What does it mean if a stash has no league name associated to it?

deft jolt
#

i've been wondering what that means as well

#

might be account name changes

#

there are about 30 of those per week

mortal bone
#

You can also skill things if you click (can't tap yet)

grave wren
mortal bone
#

@polar island yeah, it is preloading all of the assets

#

WebGL is nice

south quarry
#

Might wanna minify those images marauderthinking

fathom spruce
#

@simple ravine nice video, is that slow down at the end due to hdd/ssd performance?

south quarry
#

could probably get all those 1mb pngs to like 200kb or less without losing much noticable quality

simple ravine
#

I think it's because of smaller files in the end

fathom spruce
#

ah

simple ravine
#

It uses 64 export threads though... I should try with moar

fathom spruce
#

wasn't sure if it was that or if it was running on a samsung evo or something that did write buffering

simple ravine
#

2 x m.2 pros in raid 0

fathom spruce
#

nifty

#

how big is the .dat file when it's exported?

simple ravine
#

there are many dat files

fathom spruce
#

sorry, wrong extension

simple ravine
#

14 GB currently

fathom spruce
#

how big is the .ggpk files when it's exported*

#

hrm

simple ravine
#

458K files

fathom spruce
#

is the test code in your repo? might spin up a vm with some ram disks to try it out later

simple ravine
#

will be tonight

#

im refactoring old code to new code, so it's only ggpk right now

#

also have readers for dat files etc, but only gotten this far yet

fathom spruce
#

aight

#

could probably provision a vm with a e5-2670 v2 and 64gb of memory. should be more then enough to make some ram disks for the .ggpk file and the exported .dat files

simple ravine
#

should be enough yeah

fathom spruce
#

I am curious to see how fast it goes

simple ravine
#

I could probably do it on my PC

#

which ramdisk software would you recommend?

fathom spruce
#

it's been a while since I've used it, was going to check out what's available

#

I know amd came out with one that looked interesting

#

no idea how it stacks up to competitors now

simple ravine
#

yeah that looks familiar

fathom spruce
#

they also have a cache software to speed up hdds, used that too before ssds took off

mortal bone
#

@south quarry yeah, these are just the raw assets from GGG no compression on them right now

chrome topaz
#

mount -t tmpfs ...

worthy cape
#

@simple ravine I extracted my GGPK by exposing the tree as a web server and running wget --mirror against it. It took like hours πŸ˜„

#

Also made a FUSE module and exported it over Samba, turns out that FUSE is a buggy piece of meh.

simple ravine
#

ouch

#

but why? πŸ˜„

worthy cape
#

Could've been the ez-mode library I used in conjunction with FreeBSD's FUSE implementation too.

#

Core reason why? Extremely allergic to working with the filesystem, mostly.

simple ravine
#

good thing is, my library will work on *nix too πŸ˜„

worthy cape
#

Just got to finish the rest of Advent of Code and I'll get back to the Rust implementation.

simple ravine
#

oh that'd be interesting

#

not that I am a fan, but always good to see different takes on it

chrome topaz
#

that's an interesting approach

dull laurel
#

Rust is on my "next language to learn" list πŸ˜ƒ

simple ravine
#

what's the reasoning to learn/use Rust? just out of curiosity / make conversation

worthy cape
#

Second try on it, more mature and usable now. Tired of C++ and where it's going after using it for 15-ish years.

simple ravine
#

Ah, so you don't want to go to a managed language with a GC?

worthy cape
#

Been all over the place from Haskell to Perl, never managed to accept C# in my heart.

simple ravine
#

because of the syntax / language, or something else?

worthy cape
#

For the people who can tolerate it, it's in a nice place now.

#

Not overly keen on how extension methods end up cluttering objects, particularly the LINQ container ones. Language is also a mess to interop with native code.

simple ravine
#

with native code, you mean libraries written in C or C++?

worthy cape
#

Aye.

simple ravine
#

yeah, P/Invoke can be confusing

worthy cape
#

You can half-arse some sort of wrapper in C++/CLI, or piecemeal consume C with P/Invoke, but it's not a world I like to live in.

fathom spruce
#

only reason to use rust is more memory safety and better concurrency

worthy cape
#

(used to run a #gamedev on IRC for quite some years, rather biased by that kind of dev)

fathom spruce
#

which I guess is kind of a thing now with multi core processors

simple ravine
#

I know someone in the C# Discord was doing some work around making extern calls 'better'

worthy cape
#

We had the whole SlimDX team there πŸ˜ƒ

fathom spruce
#

is it bad that I once used SlimDX after I hosted the CLR in a game engine and hooked it's dx calls?

simple ravine
#

Rust doesn't have an async story yet right?

worthy cape
#

You've got tokio as the central reactor kind of thing and futures, so it's not quite lost.

#

None of the async/await kind of C# stuff yet, I believe.

#

Seems like there's some impls in nightly Rust, but I'm not dumb enough to use that πŸ˜„

simple ravine
#

more for IO comletion ports, for networking

worthy cape
#

Not sure how well it can interop with actual IOCP, but I think it's reasonably efficient for filesystem/network I/O.

simple ravine
#

don't get me wrong, it's pretty fast, and for local disk, I don't think you really need async for most things

#

but for network, it makes sense, like an HTTP server for an example

worthy cape
#

All in all, it's a language I feel that it's worth keeping an eye on and might have some use for.

#

Been a while since I made the effort to pick something up past "oh, how do I write a loop now again".

#

@simple ravine So what kind of concurrency do you do here, a big honking task queue of some sort? Also, do you decompress DDSes and/or resolve the symlinks, or do you just dump everything out verbatim?

simple ravine
#

Right now, I just dump it

#

I'm planning on adding pipelines for DDS etc

#

I made some separate code to decompress (and follow symlinks)

#

but I'm personally not interested in the 3d model / other stuff

#

I'll be focusing more on reading .dat files though, and opeaning/reading the ggpk is just a means to reach the .dat files

#

the export thing is just more for fun, and for other people who want to extend or use the other files in the ggpk

worthy cape
#

Aye, same here but looking into the 3D bits πŸ˜ƒ

simple ravine
#

too bad you don't like c# πŸ˜„

fathom spruce
#

I've never worked with DDS in .net, do you have to use a dx/dd wrapper library?

#

or is there a decent 3rd party lib for it

#

https://blogs.msdn.microsoft.com/ryantrem/2010/06/06/loading-dds-files-as-wpf-imagesources-using-xna-3-1/ I guess the way to do it is implement a dd codec with the library of your choice

simple ravine
#

It was a while ago, but I think I called ImageMagick's convert

#

not very nice, but it was a quick hack

worthy cape
#

Tricky thing with DDS is that they can contain all sorts of non-boring data, like cubemaps, mipmaps, block-compressed data, etc.

#

Depends on what you're going to do with them, of course.

simple ravine
#

Me personally just wanted the 2d assets of images

bold spire
#

Since last time I checked I read one should just go and ask, anyone could tell me what might be causing the following to happen?

#

I'm using AHK and trying to get data from GitHub

#

it works for most testers, but one of them gets this instead of the actual number

worthy cape
#

I assume you're fetching "raw" things?

bold spire
#

yes

#

I don't know about other methods, actually. Started looking into this today..... is there a better way?

worthy cape
bold spire
#

hmm

worthy cape
#

Hrm, not quite that one, but something similar in structure.

bold spire
#

Still, any idea? The code in question should be:

#
FormatTime, Query```
#

global githublink := "https://raw.githubusercontent.com/Neomachina/Stashpricer/master/"

#
    whr := ComObjCreate("WinHttp.WinHttpRequest.5.1")
    whr.Open("GET",  githublink "version.txt" "?" Query, true)
    whr.Send()
    whr.WaitForResponse()
    online_version := SubStr(whr.ResponseText,StrLen("Version:  "))
    return online_version
}```
worthy cape
#

You may want to check whr.Status to be a wee bit more robust I guess.

#

Doesn't explain why the user gets weird responses, I'd bet on proxies or some other nastyness.

bold spire
#

I'll ask, I guess

#

also tbh while I know what you implied, I don't currently know how to check whr.Status

#

just.... whr.Status() ?

bold spire
#

ah

fathom spruce
#

use github's api to pull new release info?

#

yeah but I'd imagine it would remove any weirdness all together /shrug

simple ravine
#

AHK make me cringe heh

mortal bone
#

Yeah, don't just query the raw data of your repo. Use the API

#

returns everything in a much better format (json) as well

waxen musk
#

does anyone know how .hideout file format works? i.e. whats "hash" and what units rotation is

mortal bone
#

there was some talk in this channel between chuanhsing and I. Let me see if I can find it

#

no idea the units of rotation

#

might be radians without the decimal

quaint stream
#

do all ahk macros scrape the screen for pixel data or is there actually some kind of integration

mortal bone
#

not sure what you mean by "all"

#

I would say that most of them don't

cobalt whale
#

@waxen musk The name of the decoration in the hideout file is kinda useless. The game knows which hideout to use by checking the hash. So it's a decoration_id. As for the rotation. That is the rotation when it's placed in your hideout. So if you turn a decoration around 180 degrees. That will be in your hideout file πŸ˜ƒ

grave wren
#

python's import system is a fickle beast

#

i always trip about it

#

turns out pycharm adds the whole project to pythonpath which is nice for dev'ing but seems to hide some errors. had to change my import to this: from .poe_tree import PoeTree from from src.util.poe_tree import PoeTree - full path resulted in module not found for me

dull laurel
#

there is an option to set the module search path

grave wren
#

there is - not sure if its the intended way

celest creek
#

anyone know of a alternate to poe.price? That can full stash price?

simple ravine
#

no, and the reason is that it's kind of extremely difficult to get rare pricing right, because of how machine learning works

jade adder
#

i don't see how a machine learning program could ever keep up with the pace at which the meta changes and the game evolves

#

so poe prices is always going to be garbage for rares

worthy cape
#

@mortal bone The rotation smells like an u16, common trick in games for angles.

#

(that is, 0 being no rotation, 2^15 being 180Β°)

simple ravine
#

new version with an example how to export the ggpk to a physical location

worthy cape
#

C# is weeird, take me ages to find where the code actually does things.

#

This one is not too bad, but when you get XAML involved, you're doomed.

#

I think I tried my hand at hacking on that stash search program, what's it called now again? Procurement!

simple ravine
#

yeah, this code wasn't meant to be super pretty

#

tried to do some kind of a trade-off between pretty and performance

old heath
#

@worthy cape I am an avid C# user, and I agree that WPF's xaml is a disastor 😦

#

It makes sense if you know it, but it's not intuitive

simple ravine
#

Same as many other things, like CSS. I know smart people who can't get a grip on it. I agree that XAML styling is tricky af.

dull laurel
#

all just keys and values πŸ˜ƒ

fathom spruce
#

WPF & XAML is amazing, databinding is insanely powerful

#

just gotta practice with it

civic yew
#

Wpf 🀒

noble siren
#

I guess I need to say sth here. Machine learning models for rare item prices are updating a couple of hours, which should be in track with most of the items. There are definitely corner cases (e.g. very expensive items, singularity combination of mods which the entire server has one or two of such) that ML does very badly. While we have feedback mechanism to try to learn from these. Of course, some domain knowledge and mods change/evolving needs communities’ help to keep me and the models in track. I am pretty sure even human cannot make every accurate estimation in such an economy. Again, some ppl really get how to use the rare pricing, which is a base reference. On top of that, we provide explanation of which mods make the model make the decision (if any mod or an important mod is not there, it is time we need a feedback), and a confidence score which tells whether to ML model sees similar items. Anyways, we do need to do better job to explain how to use the tool and improve, but some repeated comments here sound misleading.

mortal bone
#

to be fair, you don't know if an item was sold or just unlisted which makes machine learning much less accurate

noble siren
#

It will be golden if this info (like other trades) can be embedded some how in the public stash api e.g. when an item gets updated. Right now, it is a guess based on item stash location, account name, listed time, which cannot be 100% accurate, while it is still based on the price on market.

The same issue with players who only know the prices of their own items (sold or bought, which could be also under priced or a little over priced) and some from watching videos or heard from others. So the listed price won't be exactly the sold price but using it as a reference.

dull laurel
#

I like that idea!

simple ravine
#

@noble siren what's your accuracy when scoring the trained model?

jade adder
#

It doesn't matter how accurate your model might be, you can tell from experience using the program that it is hardly ever accurate. You shouldn't take it as diminishing your efforts and i'm sure plenty of people appreciate the work you've put into it, but I will never recommend it to a new player.

#

As a reference price it might work fine but it's a catch-22, the tool is for new players who don't know how to price items, but it is the least effective for new players.

south quarry
#

marauderthinking the problem I guess is that you have to take into account what isn't on the item also

jade adder
#

That's a factor too, on top of the fact that you're kinda assuming that the currently listed database of prices is accurate, which i wouldn't say is a corner case

#

I would say there are a lot of mispriced items

south quarry
#

things like divine rolls also, items can be low-rolled at like 280 dps but get divined up to 350 and be completely underpriced

#

hmm

jade adder
#

it's a really cool and difficult problem to tackle, mad respect there

simple ravine
#

It's also a highly temporal issue

noble siren
#

Glad to see some good thoughts here. Some are already covered in the model, some are not (like temporal issue, @simple ravine, please explain more). The biggest issue seems to be no accurate transaction data.

#

For the accuracy, I would say every one's perspective is not the same. For a 1c rare item, price 1c verse 3c might be a big issue. For a 50c rare item, 40c or 60c looks not accurate on paper, while it probably does not matter that much. For common mods combinations, I think the model output is decent for a lot of items. This can help new players who do not have any idea about pricing, even for simple items. Advice should be given to check items that are flagged as high value. For my experience when I was new to the game, I cannot even come up with the correct search criterion (pseudo fire res?), not to mention when I look at 100 returned result with some priced 2c and some priced 10c. Some ppl feel 3c is accurate and some feel 8c is accurate.

simple ravine
#

Price/value evolve during a league quite rapidly in a leauge, which means that the data that can be used to determine the price can be a pretty narrow window, limiting the amount of data that should be used in the model

noble siren
#

For rare items, the model refreshes every a couple of hours to incorporate the newest data (1wk if I remember correctly). It is also weighted by the time the items are listed. The currency rate is refreshed daily. Maybe sth. else can be added?

simple ravine
#

Assume you have a list of items in a dataset. You have X amount for training, and Y amount for scoring, right?

#

I am curious what accuracy you reach with your scoring set on your trained models

noble siren
#

Accuracy won't look decent on paper, because very similar items can have pretty much different listing prices (I posted one article in the patreon site).

simple ravine
#

If I would do something like this, I would probably discard training data that is older than 7 days or something like that, and likely smaller window in the beginning of the league, and longer in the end of the league when things have stabilized

noble siren
#

this is a good one.

simple ravine
#

Well, in my opinion, you need to find a way to get your model scored, otherwise you have no idea how well your model is performing when tuning it

#

And I believe this is which many have issues with, there are so many possible permutations, to me it seems quite infeasible to create a decent ML model

noble siren
#

yes, splitting data into training, validation and testing. This is what is used in modeling. Feedbacks are given higher weights.

#

Exactly, I am trying to use the confidence score to flag out the mods combinations that the model has not seen during training. If the confidence is low, probably discard the prediction and go manual way. WIP.

simple ravine
#

Still though, what's your F1 score on average?

noble siren
#

It is regression, using RMSE, and there are 300+ models there updating in hours. I cannot keep tracking unless I manually dig into it for improvement. It won't be pretty on paper like I said (posted), but how to use it wisely matters. Unless there is transaction data, looking at score is illusion. Sometimes, I just do early stop to prevent super overfitting.

dull laurel
#

yeah, you would need reliable data, both on the items (the real affixes, not the ones displayed, e.g. the split mods for life etc.) and then the actual price it was traded for

ocean shoal
#

question about public stash tab API call: you run it until you get the latest change id and then get literally every single public stash tab data in the game?

#

or have I misunderstood it?

chrome topaz
#

yeah every single one

ocean shoal
#

oooh

#

not an option then

#

maybe poe.ninja has an api to get the parsed data then? I cant find any info on that on their website, and some URLs on a reddit page, but that's about it

deft jolt
#

what data are you looking for @ocean shoal

ocean shoal
#

for starters, currency rates

deft jolt
rapid pagoda
#

@simple ravine I suspect that the next big step in AI item valuation will be domain-specific knowledge. Run POB simulations and calculate how much offensive/defensive/other value an item provides to a range of common builds?

simple ravine
#

Well, I think that would be almost as infeasible, unfortunately

grave wren
#

plus it doesnt matter much if the builds are unkown to the masses

simple ravine
#

Because it depends on the build you have. Which means you will need to have N amount of builds, and at that point you've added additional opinionated bias

grave wren
#

just look at diff. mathil builds - he sometimes even says he chose the suboptimal weapon and only that one goes up in price

#

instead of the better option

hazy fog
#

@compact isle is there a reason for the scroll wheel scrolling number values on poe/trade? Never have I ever wanted such functionality as to change the number I typed in.

#

so is it chrome causing it?

grave wren
#

@timid hemlock sorry for the ping but is it inteded that dancing duo can't be set to "always on full life" since a few updates?

timid hemlock
#

Nope, looks like I broke some of the detection code that shows configuration options when needed

#

I've fixed that for the next update

grave wren
#

❀

#

could check other minions if that helps, just noticed it for duo because i have a weird obsession with it

timid hemlock
#

It isn't specific to any one minion; it was broken for a lot more things than that, believe me

grave wren
#

ah kk

#

oh also happy new year guys πŸŽ†

paper raven
#

Can anyone tell me how to query personal map tabs using the JSON API? Or direct me to any unofficial documentation?

grave wren
paper raven
#

Oh cool, thanks for the link. However, the API claims my map stash tab is empty?

grave wren
#

someone correct me should i be wrong - as far as i know the map tab doesnt work as is for listing maps?

hazy fog
#

think so

paper raven
#

That's too bad, I wanted to hack a script together to count all my maps in standard.

waxen musk
#

why am i getting this when i try to install pypoe

No matching distribution found for pyside2==5.11.2 (from PyPoE==1.0.0a0)
mortal bone
#

Might be a python version mismatch? @waxen musk

cobalt whale
#

Yesterday I've moved https://hideoutshowcase.com to a new host. This one should be more stable and should not have random freezes.... If you have some time. Check out the site! There are some awesome hideout creators there πŸ˜„

obtuse citrus
#

@waxen musk

waxen musk
#

ah thx i was still on 3.4

#

i think that was the old recommendation

obtuse citrus
#

3.7 should be fine now too brotli has a 3.7 release now

thorn seal
#

i currently see mercury overseer in mercurytrade, i dont want to get banned, is it allowed?

slow forge
#

None got banned for it as far I heard. Just don't stream it

mortal bone
#

just don't steam it
implies you probably shouldn't use it

worthy jasper
#

I see mercury trade has a file monitor watching client.txt, what are the rules about monitoring files?

chrome topaz
#

it's allowed

viscid mantle
#

does PoB not calculate res for malachai's artifice properly or is it just me? I have the correct gem in skill listed as socketed in it

silent vapor
#

@viscid mantle No - it does not recognise the resist lines. If you edit the item and remove the "when Socketed with a ... Gem" text from only the relevant line for you, it'll work until you next import.

#

It won't calculate the damage from the EE from the item either. Red lines on the item show what's not recognised.

viscid mantle
#

ok cool. and if i force the EE from the config, will it assume that EE is benefitting my main skills?

silent vapor
#

If you pick EE from the tree you can set the config options related to it and see the different effects it can have.

viscid mantle
#

thanks

waxen musk
#

is currency cop broken? i get πŸ”₯ This is fine: Cannot read property 'name' of undefined when i run it

wind garden
timid hemlock
#

I'll just drop this in here

slow forge
#

Openarl the Champ

lavish gust
#

Does anyone have/know of a tool that fetches data from poe.ninja to present all current currency/div/scarab/unique/map etc prices in a convenient form? Something like data dumps offered by poe.ninja but for only the current moment - I'm interested in any tool that would fetch all current prices in the form like they are displayed on the site. Such data would be then used to generare item filter

#

I saw poe.ninja exposes it's own API but can't find any doc/guide about it

deft jolt
#

not poe.ninja but functionality is same

lavish gust
#

@deft jolt ok, this looks really nice although I don't really know what this data is - it is combined dump of all categories?

deft jolt
#

of all items in that league, yes

lavish gust
#

ahh just realized that the data dump returns an array of (id, mean, median, mode, min, max, total, daily, exalted) and itemdata can be used to match names with id

#

thanks, that should be enough to what I need

deft jolt
#

πŸ‘Œ

wise tinsel
#

Is it just me or did pob became buggy?

#

my flicker still costs 10 mana

#

blasphemy reserves 50%

#

@timid hemlock I guess

wise tinsel
#

the reservation when using blasphemy somehow jumps depending on the aura level

lavish gust
#

I need some terms to name parts of item filter grammar. Wiki uses Color for both SetTextColor and PlayEffect which are fundamentally different (first are 3 or 4 RBG values, second is a string Red/Green/Blue/Yellow/White/Brown). Any idea for an intuitive unique name for each of these?

worthy cape
#

Hue might apply for the first one?

#

But not really, bah.

#

Maybe some sort of "preset color"?

lavish gust
#

hmm

#

just searched for definition and translation of "hue" and found a better word: suit

#

suit could be used for Red/Green/Blue/Yellow/White/Brown as it really matches the idea of suits of playing cards

worthy cape
#

Entries in palettes in things like Photoshop are called "swatches", but then we're straying quite far.

lavish gust
#

Can't think of better solution: Color for RGB values and Suit for the 6 fixed colors of beams/icons

grave wren
#

https://pastebin.com/UzevkmNd

silent vapor
lavish gust
#

Good point, although it's a fixed filter

#

I'm making a filter language (something like PoE CSS project) that will also allow to filter items by price

delicate ore
#

also filterblade has an option to sort by poe.ninja price

#

the big thing would be an auto updating filter that dynamically adjusts prices

#

im not sure when the filter gets refreshed though

#

is it between areas?

#

or at login

#

besides the manual refresh i mean

#

also

#

a hot thing on filters right now

#

text to speech

deft jolt
#

might be at login

delicate ore
#

someone should make a filter generator that produces TTS mp3s

deft jolt
#

remember some dude asking about it while back

lavish gust
#

TTS for filter sounds is bad. I found it distracting the gameplay and also conflicting whenever you use any voice chat

delicate ore
#

well

#

if you use it like fightgarr does

#

it can be good

#

then you don't even have to look at the screen if you are target farming

#

you wouldn't do it on everything, just key things

lavish gust
#

well, using many different sounds can be as effective

#

after multiple attempts I concluded that for me the best is a wide set of short sounds

dark dove
#

@compact isle if your gonna be fixing bulk trade maps can you throw in the new breachstones aswell as a option to search for

trim gazelle
#

I'm having an issue with PoB, is this a place to ask about it/report it?

slow forge
#

Feel free to tag Openarl too

#

Since he is here

#

And I'm sure he'd appreciate a well explained bug report

trim gazelle
#

@timid hemlock enlighten doesn't seem to be working right now. I saw the latest update fixed something with blasphemy reservation so perhaps that has an unintended effect?

livid forge
#

Can confirm the Enlighten thingy just noticed it too

compact isle
#

noted

novel wing
#

Hello there, currency cop isnt working for this league or im not getting something?

simple ravine
#

I've heard several people reporting the same issue in here. There's another app that has been recommended (I haven't used it myself though), which is Exilence (or something like that)

waxen musk
#

is there any knowledge on game model formats?

velvet fog
#
.sm = Skin Mesh, UCS-2 plain
.smd = Skin Mesh Data, binary
worthy cape
#

Some, but not fully explored.

#

Never managed to skin properly.

velvet fog
obsidian lark
unkempt coyote
#

Hey Guys. Has anyone ever found a tool that lets you create custom GUI/Overlay/HUD objects.

E.g. Have some small clickable icons on the left hand side of the screen, that when you click, would expand to be a picture of the essence chart, or Map Chart, or a screenshot of your POB build etc?

obsidian lark
#

Not from what i know of, there have been some attempts at unified plugin managers that could handle such things but i haven't got any traction. I'm open to add it to Exilence though if the resources are up to date and complete. Been thinking about it with all the syndicate sheets getting posted over at reddit but since there's a new version twice everyday i haven't bothered

unkempt coyote
#

So what i am thinking off is more Custom Options.

So you could have say 5 custom icons on the left. Text or Image.

Clicking them would pop out an image of your choice. Configured by the user.

Some kind of like Overwolf Overlay type thing.

#

I can find plenty of tools to add a static overlay (Think re-skinned HUD), but cant find anything which allows you pop out customisation etc.

#

I've just started using Exilence last night btw! Great app πŸ˜ƒ

steep latch
#

What's Exilence? @obsidian lark

#

nm, I see the link just a few texts up

obsidian lark
grave wren
#

it is the place tbh

steep latch
#

soooo. I just published a path of exile nuget package yesterday to help library builders, and and hoping to make it useful enough for more people to use. I'm guessing this isn't the right place to promote that either, eh?

#

it is the place, meaning the reddit, or this @grave wren ?

grave wren
#

this

steep latch
#

ok good

#

I'm writing a helper lib for other PoE tools

obsidian lark
#

Maybe it is, i just don't want to spam the channel with Exilence support issues or other stuff that's generally not interesting to more then two people

hazy fog
#

ehh any support is fine here

#

it's totally used as pob support anyway

steep latch
#

read me with feature details is up

simple ravine
#

F# πŸ‘Œ

#

I really want to learn F#, but I have such a hard time reading it

mortal bone
#

looks pretty similar to haskell

simple ravine
#

functional*

mortal bone
#

I meant haskell

#

there is a boat load of .net stuff added, but it doesn't look too bad

grave wren
#

yeah looks really similar

simple ravine
#

I mean, I have a difficult time reading / grasping functional (for me, specifically, looking at F# at the moment)

grave wren
#

same i have lots of trouble with rxjs sometimes too

#

but haskell was a mess for me

#

loved constraint programming though

simple ravine
#

well at least js is an imperative language, which can behave like a functional language (most can to some extent)

mortal bone
#

typescript helps a lot with that as well

civic yew
#

I've played around with F# but still have quite a ways to go. Just different than what I'm used to lol

steep latch
#

did you have any specific questions thezensei? I find F# very readable, but it took time to get there

simple ravine
#

After two decades of programming, I feel it's time to learn it properly

steep latch
#

well, I love trying to teach/explain it πŸ˜ƒ

simple ravine
#

Well, It's just grasping the higher order function approach, and how it all 'works' in general, I suppose

steep latch
#

can you read c# ?

simple ravine
#

Yes, I'm well versed with C#

steep latch
#

that's tailored for C# devs

#

and I wrote it

simple ravine
#

great! I'll read it now πŸ˜ƒ

#

thank you

steep latch
#

any time, love talking F# or Path of Exile coding πŸ˜ƒ

simple ravine
#

I've done a ggpk / dat parser etc in C# (PoeSharp), and I thought I should try to make an F# version of it

#

the formats aren't that complicated, so it should be a pretty good first attempt

steep latch
#

that presentation tries to go fairly line by line showing the C# vs F# for the same concepts

civic yew
#

Thanks for the link as well, saving for later πŸ‘Œ

simple ravine
#

F# got Span<T> now as well, right?

steep latch
#

no clue, I'm not aware of the applications of it even 😦

#

big string stuff or something I think

mortal bone
#

anything you want a reuseable chunk of memory for

steep latch
#

oh

simple ravine
#

It's a safe representation of contiguous memory (native, or array-like) allocated on the stack

mortal bone
#

great for things like strings

steep latch
#

and is significantly different from an array?

simple ravine
#

extremely great for text parsing, indeed

#

yes, an array is allocated on the heap, and you can't slice and dice it without re-allocating

steep latch
simple ravine
#

Span<T> is a stack-type (ref struct) and you can do things like

ReadOnlySpan<char> span = "Hello World"
var hello = span.Slice(0, 5); // no allocation
steep latch
#

hmm, I suppose F#'s "Hello World".[0..5] does an allocation

simple ravine
#

I respect Eric Lippert a lot, but in some contexts, I wholeheartedly disagree

steep latch
#

sure, there's always a context that guidelines are wrong

simple ravine
#

Parsing, or interpreting large amounts of data, algorithms etc

#

For your average web application, ir 99% of other cases, it doesn't matter at all

steep latch
#

yeah, if I were to say... try to eat my way through the firehose of poe's stash tab api for instance...

simple ravine
#

even then, stack vs heap would probably not matter a lot, to be frank

#

unless you're trying to do it on a Raspberry Pi or something

steep latch
#

right, sorry meant to imply that yes, if I were doing that stack vs heap would matter

#

which, I kinda have done a bit of. just not to the extent I think I'd need that. I don't think I could get away with chewing through that data set without isp alarms going off

simple ravine
#

It's unfortunate that in 2019, ISPs still limit your bandwidth usage

steep latch
#

or secretly throttle or bump your connections

#

ISPs? there's... more than 1? finally

simple ravine
#

It depends on your location I suppose πŸ˜…

mortal bone
#

I have unlimited here

simple ravine
#

same, 1 gbps up & down, unlimited

steep latch
#

is it unlimited, or do they say it is?

mortal bone
#

mine is 200/200

simple ravine
#

I've used several terabytes the past month without any noticeable throttle

mortal bone
#

truly unlimited

steep latch
#

nice

grave wren
#

50/10

simple ravine
#

the fiber infrastructure (dark fiber provider) sometimes have some congestion issues, but I've spoken with the ISP about it etc

#

but here in Sweden, there's no concept of throttling for fiber users, or DSL/cable for that matter.

mortal bone
#

yeah, fiber. I can't even check how much data I am using

steep latch
#

mmm fiber...

#

I can dream

grave wren
#

just look at germany's isp and laugh

simple ravine
#

Where you located?

steep latch
#

USA

mortal bone
#

USA

simple ravine
#

I assume you're in a more rural area, Richard

steep latch
#

nope, not at all. Fiber is kinda almost here

civic yew
#

I just got 400/400 and they say it's unlimited but we'll see

mortal bone
#

I am in small town usa that just happened to lay fiber a few years ago

steep latch
#

but not sure it will save me, since my wife is addicted to cable tv

mortal bone
#

cheaper than anything from the bigger cities around too (comcast...)

simple ravine
#

we get cable tv through fiber

steep latch
#

any of you cracked open the F# presentation yet?

mortal bone
#

Yeah, I can't stand the format tbh

simple ravine
#

I have indeed

mortal bone
#

would much rather scroll through it

steep latch
#

format of the presentation or the language?

#

ah

mortal bone
#

presentation

#

The content is good the layout kills me

steep latch
#

it's meant for giving a presentation

mortal bone
#

yeah, I could see it

steep latch
#

you can hit escape I think, then it will show you all the slides and their layout to jump around?

#

scrolling right is next topic, scrolling down is deeper into the same.

#

any horizontal movement puts you to the top of the topic you go into

#

s key reveals a speaker panel for docking into another monitor, with a timer, and speaker-notes.

simple ravine
#

What is this concept of 'only using 1 argument' thing called again?

#

and then composing your way through everything

steep latch
#

currying or partial application

#

I am never sure which is which

#

but you don't have to do that you can tuple arguments let f(x,y) = ...

simple ravine
#

I've done some reading, but it never stuck

steep latch
#

it might never, doesn't inhibit my coding

simple ravine
#

I consumed some content at f# for fun and profit

steep latch
#

was it tasty?

simple ravine
#

I think it's an acquired taste

steep latch
#

yes, it took me awhile to adapt, but once I did it was excellent. What made it easiest for me was translating my own code I'd written in another language directly to F#

#

that really did it

simple ravine
#

yeah

#

that is my plan as well

#

the 'entry point' is GgpkFileSystem.cs

steep latch
#

so the readme doesn't tell me much, what does that lib do?

#

I'd be glad to help you translate btw

#

I enjoy translation

simple ravine
#

Right now it reads the GGPK file (Content.ggpk, where all the game data is stored)

#

You can then get a stream, or export the contents to your regular file system

hazy fog
#

not poe tool just general programmer geeking out.
My office just upgraded to the latest TeamCity release for our CI. It automatically assigns broken unit tests to people who break them! What a huge fucking game changer Poggers

simple ravine
#

haha nice

lavish gust
#

this really sounds nice, I wish my company had tooling like this

hazy fog
#

pretty sure that saves one of our devs like half an hour a day in chasing down the people to assign

simple ravine
#

we use Azure DevOps (formerly VSTS).. Got to see if it has something similar

gilded herald
#

you just have to put up with using teamcity i guess πŸ˜‰

hazy fog
#

never used another CI so I wouldn't know any reason not to GWnanamiLaceShrug

grave wren
#

tfw colleague who broke it went home already and you spend hours fixing it up

hazy fog
#

nah leave that shit for them, we have a nonstop build, a twice daily unit test build a twice daily dev envinoment build

simple ravine
#

what branching strategy do you use?

hazy fog
#

and none of that is prod

gilded herald
#

twice daily builds? how long do they take?

hazy fog
#

hours

gilded herald
#

yikes

simple ravine
#

o.O

hazy fog
#

you can pull the code yourself at your desk to build

lavish gust
#

so how does one work locally with hours on full build?

hazy fog
#

the test env the testers have access to only builds twice a day

#

we use perforce

lavish gust
#

what takes the most time?

hazy fog
#

the fact it's multiple gigabytes of code

#

there are currently checks 247 projects in the solution

lavish gust
#

yeah the project could be split into smaller ones and some reusable libraries

simple ravine
#

what the actual...

#

that's not really CI-friendly lol

hazy fog
#

the product has been around since the 90s mathilShrug

gilded herald
simple ravine
#

there's a word for that

#

techdebt

hazy fog
#

legacy code 😨

steep latch
hazy fog
#

our new ceo is pushing for moving to micro services on docker so that's the next big thing we're planning

grave wren
lavish gust
#

legacy code is not a big problem as long as at it's time it was good

hazy fog
#

yeah like lack of persistence

steep latch
#

that's talked about in my vid link πŸ˜ƒ

simple ravine
#

Greg Young πŸ‘Œ

lavish gust
#

lack of persistence? I would rather say a very strong need for documentation

grave wren
#

enjoy consistency problems

steep latch
#

no reaction emotes in this channel eh?