#tooldev-general
1 messages Β· Page 79 of 1
hello, is there api for characters or do i need to parse html myself?
Join thousands of developers who use SwaggerHub to build and design great APIs. Signup or login today.
thanks a bunch!
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?
I didn't know this could happen but pathofexile.com/trade is actually lagging behind the api @compact isle
yeah it happened a week ago think he said it's some postgres issue
wait, stop the presses, the official search isn't es based?
they use postgres as the backend
Ya Im a bit salty about a reddit post that was fanatically defending the official site as though it was perfect

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
Why should postgres be bad?
@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();
so, a captcha now
And cloudflare
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 π
looks great, good job
Thank you @fathom spruce
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 π
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
Great idea! I'll try that!
And Iβve now suffered the indignity of having my character killed by a skill I helped make!
poor Openarl
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
has anyone mentioned Tangmazu, Vestilo, Krav, or Saresh / Slave before?
also, Catarina's voice actor has some issues saying "thaumaturgy"
@cosmic saffron I'll add that to the bug list and fix it π
@cobalt whale this slicing text hover effect is slightly disturbing π
That will be removed really soon haha π @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
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!
Indeed, looks very very nice. I should also buy something for my next project, to make it not look ugly π
cygwin4lyfe
is pypoe viewer working? i open my ggpk and get empty window
pypoe doesn't works for me after commit:
INCOMPATIBLE - upgrade to PySide2
Pyside2 will not run on older python versions. There is currently no brotli package for 3.7, so I recommend using 3.6 from here onwards.
I just installed python 3.6, PySide2
https://dl.dropboxusercontent.com/s/r20top7p1bkfn0m/mintty_2018-12-25_13-31-02.png
everything is ok before this commit.
I'm not good in python, so..
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
Merry Christmas fellow tooldevs!
@simple ravine Merry Christmas!! β€
Merry Christmas, guys!! Will anyone consider promote a high-stakes tool dev to tool developers? π
@gritty olive sory to bug ya
trying to log into currency cop, put in my session id, hit login and nothing happens
is it updated to use oauth yet
dont think so
there's oauth?
Novynn said it was coming, dunno if it's in yet 
Acquisition and Procurement could login with session id, maybe exilence had the same way
but currencycop can't? 
afaik there's no release version of currencycop with whatever login fix there was
but it was added to the project
Is there a list of incursion mods anywhere? Every site (wiki, poedb, poeaffix, poecraft) pretends like they don't exist oO
Its not in the list of per-item mods tho
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
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?
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:
- open a link to the desired stashtab info in a hidden internet explorer window
- waiting until it is loaded
- getting the text from the page
- converting it into the form you get when pressing ctrl + c on an item in game on a per item basis
- converting THAT into the form desired by poeprices.info using code from the trademacro
- 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
how do you wait until it's loaded?
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
}
why dont you use the REST api for 1-3?
with ie := ComObjCreate("InternetExplorer.Application")
or don't i understand what you want to do
rest api?
I'm new to this, started on this like 5 days ago ^^
no clue about AHK but check out https://app.swaggerhub.com/apis/Chuanhsing/poe/1.0.0 => get items
@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
Those apis require you to be logged in
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
@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
tbh, while the link seems useful, faust, I don't know what exactly I should do with it
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
I see
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
does work too with the api
Ye
that is to say just using account name data
wont work without ssid
assuming the profile is public
doesn't? Kay
ah, I see. it just worked in my case because I was trying to access my own stash after logging in
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
until oauth if fully functional, yes. You need the ssid to do anything with an account
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.
The api hasn't changed since that was generated
it's just an api you need to adapt the league to the current one
well as above, I get the same message I'd get if I wasn't logged in
Maybe give us some sort of code snippet?
oh, I'm trying on
Join thousands of developers who use SwaggerHub to build and design great APIs. Signup or login today.
we are trying to help you blind here
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
Yeah because it should be POESESSID not SESSIONID
curl -X GET "https://www.pathofexile.com/character-window/get-stash-items?league=Standard&accountName=Emmittt&tabs=0&tabindex=0" -H "accept: /" -H "Cookie: SESSIONID=<sessionsid>"
the cookie is being set incorrectly
on the provided site? ah
yes
hmm
@velvet fog mind updating your API docs to have the correct variable name for the session id?
https://app.swaggerhub.com/apis/Chuanhsing/poe/1.0.0
Line 28:
- name: SESSIONID # cookie name
+ name: POESESSID # cookie name
Join thousands of developers who use SwaggerHub to build and design great APIs. Signup or login today.
still seems useful if I can figure out how to retrieve data from a (properly set) link with ahk, all will be well
Is +level of support gems mod disabled?
wut?
It exists in the bench options list but idk if its obtainable
looks like it is still there
Looks like you can get it on Weapons and Shields through catarina and Body Armour through Elder mods
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.
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
@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.
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
why doesnt poedb show odds of rolling shaper/elder mods? i assume we can compute them the same way as other mods right?
got it to work! and it's so simple, too! Except I seem to be stuck at "succeeding" in a terminal window
and all works, now
nice
Might be done with the first fully functional version of the tool 2 days from now?
@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
also theres an issue on the mod.php page, it lists crafted mods ignoring item type, i.e. for a wand i see this
@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
restarted
thx fam
back in my day we dropped items on the coast to trade
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 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.
can you even do that in AHK?
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?
you can access .net libraries at the very least in it
let me double check on the c#
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
im not sure if you can run c# code natively
In case he has some c# experience, he could probably achieve it
nvm you definitely can https://www.autohotkey.com/boards/viewtopic.php?t=4633
thats pretty cool
@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.
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
which one is it that you were working on? the iteminfo thing?
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
ah, I thought you did the iteminfo-ahk for some reason
I'm just surprised it hasn't been moved over to something that is easier to structure
the author might not know any other languages
extending that as much as he did has to be a pain
But then again, I suppose it's about ambition level and how much time you can invest in it
@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'}}
interesting data structure
Seems to be a typo there for Unwavering Stance i guess it shouldnt be Acro
woops, copy paste error. ty
mostly looking to only use the "known" abbreviations
prolly should also remove crimson dance then
I had our PoE Helpers/Tutors make a list of all known abbreviations in a google spreadsheet
let me find that for you
oh nice
https://docs.google.com/spreadsheets/d/1QQd9fdSzdKrUiAzb8mi4K_BxDjtRwKQRv_V7Q61KUFc/edit?usp=sharing
It's not updates since February this year
so if any keystones or whatever has been added since then, it should probably be updated
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)
yah, that too
yeah i'll keep consistent to your docs so we can maybe be consistent at least a bit π
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
not really but I've never seen that yet
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
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
tbh i dont know if people really use more than 3-4 keystones either way
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.
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
@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
ah hmm
god i need to finally un-fuck my output python code
i mean it works but it's kinda ugly
object-orient it
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
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
"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)
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
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
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
Yeah my weak point is hoping something nice shows up along the way
which mostly leads to messy code (in my hobby projects mostly)
https://github.com/FWidm/discord-pob/tree/master/src/bot/output so i ended up with this - separated code but messy af
at least it's "just" the output
I'm not sure if it's my brain being fried right now, or something else, but I can't follow/understand the code
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
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
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
(just for the fun of it)
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
sounds fun but intense
I'm reading the GGPK records in 284 ms right now (hot reads), so that's pretty quick for a 10GB+ file
nice sounds like a good approach
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
Hm depends verbosity might help
Yeah.
Another issue was that the flexibility made it a bit too convoluted to consume the functionality
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
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
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?
I haven't no. I haven't specialized in UI/frontend in 15 years π
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
guise does pob just have automatically cache'd mods for crafting
I have no clue what the question is
short answer:no
long answer: 
Please tell me there is a better way to find the version of an impresence amulet then by looking at the icon url.
depends what your source data is
The stashtab api in this case, from GGG
if its the stash api then you can just look at the affixes
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 π¦
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
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?
Wow, that will make my life easier, thanks!
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
Hmm will have to take a look at that too. Recently found out about prophecys and divination cards with the same name. π

Hello there, anyone has problem with Currencycop logging in? I enter the POSSeSID but like nothing happens?
or it just dosent suppport Betrayel?
@simple ravine from your code before, why the unsafe bytes to struct?
https://gist.github.com/aotc/da0f9e2386956602950929cd8153e5b6 this is the safe way to convert bytes to structs in .net
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?
I've done C# for 15 years π
I can't recall, it's quite a while ago I wrote that
womp womp, 13 years here
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
this a programmer dick waving competition 
how so @simple ravine

I think I've only been programming for the last 17 years only 3 of which were professionally 
Do you have the whole thing? I'll run a comparison in benchmarkdotnet
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
funny coincidence, new code is using mmap
hah
var recordHeader = *((RecordHeader*)ptr);
^-- quite quick
I've always preferred to handle it safely and take the performance hit, it's usually not too terrible
you're mileage may vary β’
mhm
@novel wing currency cop stopped working for me as well
I and a lot of others swapped to Exilence
not cool
Wow.
Rip rasmus
tencent has no chill
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
surprise in the current state of the web
also for the .sortable class, tencent uses tabs and ninja uses spaces. to be honest, tencent uses tabs wrong, but that is another discussion π
that's custom css though, nothing to do with a framework
opens file in ide would you like to convert to tabs [y/n]
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
or deploy minified css to production cough
@grave wren wouldn't do that unless your IDE supports smart tabs π
intellij handled it nicely for now
@fickle yew sucks man. Might be able to contact GGG (not the tecent part) and see if they can't do something. Specifically Chris
You can't pursue anything legally because Tecent is based in China
Sure, you can, but they don't honor IP laws from other countries
dont think chris can do much too but asking doesnt cost anything so yep only way to go i guess
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.
copies css for the discord bot
Yeah, they could have just asked you to host a Chinese version
didnt they also just copy pob and add their own donation link?
I guess you know you made it as a Dev when a bigger fish comes along and steals your product
waits patiently until the discord bot gets stolen while weeping
Tencilence Soonβ’
are you really sure they copied that? maybe its the same framework or ninja copied from them
how would he copy from them when his site existed earlier
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 π
ah, stolen indeed
they even use the lame international scion model instead of theirs
maybe they bought it? is ninja here?
yes rasmus made the site
got it now. sorry for being slow π¦
π
@dull laurel it's a complete copy of the js and css with a few modifications.
wat
And no I didn't copy from them. I spent a few 100 hours writing it π
π€
But you're right. I should minify my css in prod..
@fickle yew is it open source or did they just copy the minified js without understanding it? π
Copied from the website. Not open.
haha, just gulp-css-minify it π
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.
that sucks a lot man
to the courts!
gl
vs. a billion yen company
There is a reason they just took the code
@fickle yew i hope you used the phrase "chinese overlords" in your mail to chris π
Aw snap.
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
I really miss IRC. π¦
pretty sure there is still an IRC around
there is actually, think ferret is in it
We have a PoE IRC up?
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
The recent mentions feature does just that or did I misunderstand it?
@grave wren sounds good. where can I find that? ... found it!
Just lacks a "clear all" button π
doesn't bother me too much tbh but yeah why not
is it possible to add jewels into tree on poeplanner.com?
@mortal bone are you still working on that skilltree of yours?
mhm
trying to not use so many masks
they are expensive and cause issues on smaller devices
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
whats the fallback exe in trademacro
is there a tool like http://poeaffix.net that has the new crafting affixes?
thanks
$ 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 π
@simple ravine nice!
hubba hubba
I'd say that perf is decent enough
Made it thread-safe, so it can use N threads for exporting (64 in this case)
Yay, someone using .net core
Anybody around for a question about the Stash Tab API?
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
It's better to just ask, @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?
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
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?
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
oh so the accountname+StashName are the persistent identifier but the id itself will get incremented whenever there are changes?
no, '1234' in this case would be the change_id (revision = change_id)
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?
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
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
approximately yes
Right, so it's only off by however much you're off from the head of the river
Worst-case
best-case
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?
π
Gotcha
then still be worse off than the official one due to no affix > pre/suffix and tier determination :p
Good luck
charging one ssfalchemy
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
in the current format, which is not optimal for storage
Good to know!
Is there a reason why all the private premium tabs are still included?
Well, they send an entire stash on an update
private tabs will display as if they have nothing in them
effectively clearing the tab
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
all premium tabs can be made public
What does it mean if a stash has no league name associated to it?
i've been wondering what that means as well
might be account name changes
there are about 30 of those per week
http://poeskilltree.com/
Should be a lot more performant now. Not using masks at all.
You can also skill things if you click (can't tap yet)
that's what she said
Might wanna minify those images 
@simple ravine nice video, is that slow down at the end due to hdd/ssd performance?
could probably get all those 1mb pngs to like 200kb or less without losing much noticable quality
I think it's because of smaller files in the end
ah
It uses 64 export threads though... I should try with moar
wasn't sure if it was that or if it was running on a samsung evo or something that did write buffering
2 x m.2 pros in raid 0
there are many dat files
sorry, wrong extension
14 GB currently
458K files
is the test code in your repo? might spin up a vm with some ram disks to try it out later
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
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
should be enough yeah
I am curious to see how fast it goes
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
I used this stuff almost a decade ago https://www.romexsoftware.com/en-us/primo-ramdisk/index.html
Primo Ramdisk (VSuite Ramdisk II) is a great solution for hard disk bottleneck issue. It is a powerful ram disk emulator, speeding up your computer and improving the performance, supports Windows XP/2003/VISTA/WIN7/WIN8/WIN2003/2008/2012
no idea how it stacks up to competitors now
yeah that looks familiar
they also have a cache software to speed up hdds, used that too before ssds took off
@south quarry yeah, these are just the raw assets from GGG no compression on them right now
mount -t tmpfs ...
@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.
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.
good thing is, my library will work on *nix too π
Just got to finish the rest of Advent of Code and I'll get back to the Rust implementation.
oh that'd be interesting
not that I am a fan, but always good to see different takes on it
that's an interesting approach
Rust is on my "next language to learn" list π
what's the reasoning to learn/use Rust? just out of curiosity / make conversation
Second try on it, more mature and usable now. Tired of C++ and where it's going after using it for 15-ish years.
Ah, so you don't want to go to a managed language with a GC?
Been all over the place from Haskell to Perl, never managed to accept C# in my heart.
because of the syntax / language, or something else?
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.
with native code, you mean libraries written in C or C++?
Aye.
yeah, P/Invoke can be confusing
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.
only reason to use rust is more memory safety and better concurrency
(used to run a #gamedev on IRC for quite some years, rather biased by that kind of dev)
which I guess is kind of a thing now with multi core processors
I know someone in the C# Discord was doing some work around making extern calls 'better'
We had the whole SlimDX team there π
is it bad that I once used SlimDX after I hosted the CLR in a game engine and hooked it's dx calls?
Rust doesn't have an async story yet right?
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 π
more for IO comletion ports, for networking
Not sure how well it can interop with actual IOCP, but I think it's reasonably efficient for filesystem/network I/O.
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
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?
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
Aye, same here but looking into the 3D bits π
too bad you don't like c# π
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
WPF uses βWindows Imaging Component,β or WIC, (seeΒ http://msdn.microsoft.com/en-us/library/ee719655) to decode images. By default, WIC supports many image formats, such as .bmp, .jpg, .png, but also can be extended to support new image formats via βcodecs.β Out of th...
It was a while ago, but I think I called ImageMagick's convert
not very nice, but it was a quick hack
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.
Me personally just wanted the 2d assets of images
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
I assume you're fetching "raw" things?
yes
I don't know about other methods, actually. Started looking into this today..... is there a better way?
I think the page you get is their 500? https://github.com/503.html
hmm
Hrm, not quite that one, but something similar in structure.
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
}```
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.
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() ?
ah
use github's api to pull new release info?
yeah but I'd imagine it would remove any weirdness all together /shrug
AHK make me cringe heh
Yeah, don't just query the raw data of your repo. Use the API
returns everything in a much better format (json) as well
does anyone know how .hideout file format works? i.e. whats "hash" and what units rotation is
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
do all ahk macros scrape the screen for pixel data or is there actually some kind of integration
@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 π
I've made a calculator on my website: https://hideoutshowcase.com
When you click on a hideout you can see the calculator tab
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
there is an option to set the module search path
there is - not sure if its the intended way
anyone know of a alternate to poe.price? That can full stash price?
no, and the reason is that it's kind of extremely difficult to get rare pricing right, because of how machine learning works
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
@mortal bone The rotation smells like an u16, common trick in games for angles.
(that is, 0 being no rotation, 2^15 being 180Β°)
@fathom spruce https://github.com/andreandersen/PoeSharp/tree/new
new version with an example how to export the ggpk to a physical location
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!
yeah, this code wasn't meant to be super pretty
tried to do some kind of a trade-off between pretty and performance
@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
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.
all just keys and values π
WPF & XAML is amazing, databinding is insanely powerful
just gotta practice with it
Wpf π€’
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.
to be fair, you don't know if an item was sold or just unlisted which makes machine learning much less accurate
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.
I like that idea!
@noble siren what's your accuracy when scoring the trained model?
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.
the problem I guess is that you have to take into account what isn't on the item also
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
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
it's a really cool and difficult problem to tackle, mad respect there
It's also a highly temporal issue
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.
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
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?
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
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).
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
this is a good one.
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
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.
Still though, what's your F1 score on average?
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.
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
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?
yeah every single one
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
what data are you looking for @ocean shoal
for starters, currency rates
i can suggest https://poe.watch/api
@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?
Well, I think that would be almost as infeasible, unfortunately
plus it doesnt matter much if the builds are unkown to the masses
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
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
@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?
@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?
Nope, looks like I broke some of the detection code that shows configuration options when needed
I've fixed that for the next update
β€
could check other minions if that helps, just noticed it for duo because i have a weird obsession with it
It isn't specific to any one minion; it was broken for a lot more things than that, believe me
Can anyone tell me how to query personal map tabs using the JSON API? Or direct me to any unofficial documentation?
yes check out https://app.swaggerhub.com/apis/Chuanhsing/poe/1.0.0 you want /character-window/get-stash-items
Join thousands of developers who use SwaggerHub to build and design great APIs. Signup or login today.
Oh cool, thanks for the link. However, the API claims my map stash tab is empty?
someone correct me should i be wrong - as far as i know the map tab doesnt work as is for listing maps?
think so
That's too bad, I wanted to hack a script together to count all my maps in standard.
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)
Might be a python version mismatch? @waxen musk
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 π
yeah need py 3.5/3.6/3.7 https://pypi.org/project/PySide2/5.11.2/#files
@waxen musk
3.7 should be fine now too brotli has a 3.7 release now
i currently see mercury overseer in mercurytrade, i dont want to get banned, is it allowed?
None got banned for it as far I heard. Just don't stream it
just don't steam it
implies you probably shouldn't use it
I see mercury trade has a file monitor watching client.txt, what are the rules about monitoring files?
it's allowed
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
@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.
ok cool. and if i force the EE from the config, will it assume that EE is benefitting my main skills?
If you pick EE from the tree you can set the config options related to it and see the different effects it can have.
thanks
is currency cop broken? i get π₯ This is fine: Cannot read property 'name' of undefined when i run it
does anyone in here own poecraft.com?
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
@lavish gust https://api.poe.watch/compact?league=Betrayal
not poe.ninja but functionality is same
@deft jolt ok, this looks really nice although I don't really know what this data is - it is combined dump of all categories?
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
π
Is it just me or did pob became buggy?
my flicker still costs 10 mana
blasphemy reserves 50%
sorting by dps makes it stuck
@timid hemlock I guess
the reservation when using blasphemy somehow jumps depending on the aura level
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?
Hue might apply for the first one?
But not really, bah.
Maybe some sort of "preset color"?
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
Entries in palettes in things like Photoshop are called "swatches", but then we're straying quite far.
Can't think of better solution: Color for RGB values and Suit for the 6 fixed colors of beams/icons
@lavish gust There's a project existing that uses data from ninja to construct an item filter: https://github.com/xanthics/poe_filter/
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
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
might be at login
someone should make a filter generator that produces TTS mp3s
remember some dude asking about it while back
TTS for filter sounds is bad. I found it distracting the gameplay and also conflicting whenever you use any voice chat
WORLD FIRST sub-3 hour SSF run, and deathless to boot, woo! Turns out you don't need many sidequest passives or even an ascendancy to blast through the game ...
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
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
@compact isle if your gonna be fixing bulk trade maps can you throw in the new breachstones aswell as a option to search for
I'm having an issue with PoB, is this a place to ask about it/report it?
Feel free to tag Openarl too
Since he is here
And I'm sure he'd appreciate a well explained bug report
@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?
Can confirm the Enlighten thingy just noticed it too
noted
Hello there, currency cop isnt working for this league or im not getting something?
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)
is there any knowledge on game model formats?
.sm = Skin Mesh, UCS-2 plain
.smd = Skin Mesh Data, binary
@novel wing You''ll find Exilence over here, https://github.com/viktorgullmark/exilence join our discord if you got any questions.
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?
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
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 π
This is not the right place to promote it but read more here https://www.reddit.com/r/pathofexile/comments/a2o5dh/exilence_v080_track_net_worth_maps_gear_and_more and feel free to join our discord or PM me if you got any questions π
it is the place tbh
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 ?
this
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
read me with feature details is up
looks pretty similar to haskell
functional*
I meant haskell
there is a boat load of .net stuff added, but it doesn't look too bad
yeah looks really similar
I mean, I have a difficult time reading / grasping functional (for me, specifically, looking at F# at the moment)
same i have lots of trouble with rxjs sometimes too
but haskell was a mess for me
loved constraint programming though
well at least js is an imperative language, which can behave like a functional language (most can to some extent)
typescript helps a lot with that as well
I've played around with F# but still have quite a ways to go. Just different than what I'm used to lol
did you have any specific questions thezensei? I find F# very readable, but it took time to get there
After two decades of programming, I feel it's time to learn it properly
well, I love trying to teach/explain it π
Well, It's just grasping the higher order function approach, and how it all 'works' in general, I suppose
can you read c# ?
Yes, I'm well versed with C#
Introduction to F# with help from FsReveal
that's tailored for C# devs
and I wrote it
any time, love talking F# or Path of Exile coding π
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
that presentation tries to go fairly line by line showing the C# vs F# for the same concepts
Thanks for the link as well, saving for later π
F# got Span<T> now as well, right?
no clue, I'm not aware of the applications of it even π¦
big string stuff or something I think
anything you want a reuseable chunk of memory for
oh
It's a safe representation of contiguous memory (native, or array-like) allocated on the stack
great for things like strings
and is significantly different from an array?
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
stack vs heap is not supposed to be something we concern ourselves with https://blogs.msdn.microsoft.com/ericlippert/2009/04/27/the-stack-is-an-implementation-detail-part-one/
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
hmm, I suppose F#'s "Hello World".[0..5] does an allocation
I respect Eric Lippert a lot, but in some contexts, I wholeheartedly disagree
sure, there's always a context that guidelines are wrong
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
yeah, if I were to say... try to eat my way through the firehose of poe's stash tab api for instance...
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
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
It's unfortunate that in 2019, ISPs still limit your bandwidth usage
It depends on your location I suppose π
I have unlimited here
same, 1 gbps up & down, unlimited
is it unlimited, or do they say it is?
mine is 200/200
I've used several terabytes the past month without any noticeable throttle
truly unlimited
nice
50/10
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.
yeah, fiber. I can't even check how much data I am using
just look at germany's isp and laugh
Where you located?
USA
USA
I assume you're in a more rural area, Richard
nope, not at all. Fiber is kinda almost here
I just got 400/400 and they say it's unlimited but we'll see
I am in small town usa that just happened to lay fiber a few years ago
but not sure it will save me, since my wife is addicted to cable tv
cheaper than anything from the bigger cities around too (comcast...)
we get cable tv through fiber
any of you cracked open the F# presentation yet?
Yeah, I can't stand the format tbh
I have indeed
would much rather scroll through it
it's meant for giving a presentation
yeah, I could see it
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.
What is this concept of 'only using 1 argument' thing called again?
and then composing your way through everything
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) = ...
I've done some reading, but it never stuck
it might never, doesn't inhibit my coding
I consumed some content at f# for fun and profit
was it tasty?
I think it's an acquired taste
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
yeah
that is my plan as well
I was thinking of taking the following code: https://github.com/andreandersen/PoeSharp/tree/new/src/PoeSharp.Filetypes/Ggpk and translate it
the 'entry point' is GgpkFileSystem.cs
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
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
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 
haha nice
this really sounds nice, I wish my company had tooling like this
pretty sure that saves one of our devs like half an hour a day in chasing down the people to assign
we use Azure DevOps (formerly VSTS).. Got to see if it has something similar
you just have to put up with using teamcity i guess π
never used another CI so I wouldn't know any reason not to 
tfw colleague who broke it went home already and you spend hours fixing it up
nah leave that shit for them, we have a nonstop build, a twice daily unit test build a twice daily dev envinoment build
what branching strategy do you use?
and none of that is prod
twice daily builds? how long do they take?
hours
yikes
o.O
you can pull the code yourself at your desk to build
so how does one work locally with hours on full build?
what takes the most time?
the fact it's multiple gigabytes of code

there are currently checks 247 projects in the solution
yeah the project could be split into smaller ones and some reusable libraries
the product has been around since the 90s 

legacy code π¨
nanoservices? https://www.youtube.com/watch?v=MjIfWe6bn40 - The Long Sad History of MicroServices - Greg Young
our new ceo is pushing for moving to micro services on docker so that's the next big thing we're planning

legacy code is not a big problem as long as at it's time it was good
yeah like lack of persistence
that's talked about in my vid link π
Greg Young π
lack of persistence? I would rather say a very strong need for documentation
enjoy consistency problems
no reaction emotes in this channel eh?
π
