#tooldev-general
1 messages · Page 100 of 1
Format seems quite regular, and there's what seems to be quite likely floating point numbers and smallish integers in it, but no idea about the structure.
Now sleep 🙂
Initial count of u16, then the rest of the file is that times 884 bytes. Apart from a prelude the values are interspersed u32 and f32
Might be misremembering the exact sizes, left the computer already 🙂
There... the .pjd format has two leading u16 counts, A and B. There's A 6-byte chunks immediately following. Then there's B 8-byte chunks where the first four bytes seem to be floats between 0.0 and almost 2000.0, seems to be an increasing sequence. The other four bytes are unknown but the last two seem to always be 00 00.
@carmine merlin If this is of any help, have fun 😛
@velvet fog If you care about this file, the above might be useful information.
@worthy cape ```
u16 JewelCounts
u16 DistanceCounts
struct Jewel[JewelCounts]
u16 PassiveSkillGraphId
u16 DistanceOffset
u16 DistanceCounts
struct Distance[DistanceCounts]
float32 Distance
u16 PassiveSkillGraphId
u16 nullInt
Ah, you’ve got it all decoded. Nice!
Has anyone in here worked a lot with stat_translations?
since im not sure where to post this how does one add tranquility in pob?
Add this "Allocates Tranquility" to your amulet
Press edit then make it look similar to this
hi all. I'm getting an error when trying to export divination card data. Here's what I did 2 leagues ago and it worked:
pypoe_exporter wiki items item by_filter -wr -ft-c "Divination Card" -d "./exported_data/cards"
But now I get KeyError: 'enchanted' Python error.
mk ty
Also, @rugged pecan, the "other-questions" page is a better place to ask for help like this fyi
Meanwhile other exports work. For example this works fine:
pypoe_exporter wiki items item by_filter -wr -ft-c "Active Skill Gems" "Support Skill Gems" -d "./exported_data/gems"
ah ok i wasnt sure being pob is a 3rd party tool
this channel is more for the development of those third party tools you'll be using
@frigid nova got some c# stuff for that, not sure if that'll help u
it's a while ago since i messed around with them, so my recollection isn't fresh
For future reference in case someone else comes here with that same problem I had...
There was already an issue opened for the div card export problem. I "fixed" it and submitted a PR:
https://github.com/OmegaK2/PyPoE/issues/106
@simple ravine yeah there are just some stat translation entries which look like bugs to me and was looking for independent confirmation
Anyone got link to the website where you can input anoitment oils and it tells you what and how?
A helper for Path of Exile's Blight League.
Since apparently MercuryTrade is getting discontinued, is there a good alternative?
traderforpoe https://github.com/labo89/TraderForPoe is also a good alternative
Alright, thanks I'll check them out
I hadn't seen that one before, @violet path . Is there a technical reason why I see apps like this saying "supports poe.trade and poeapp.com" but not the official trade website?
i don't think so, works fine with any whispers i get from any site
Alright, thanks
They all pretty much use the same format for buy messages
I think poeapp sometimes(?) uses a shorter form, like "wtb your ..." instead of the more verbose "Hi, I'd like to buy your ..."
Is there an easy way to source the price/average price of an item from a specific trade search, for use in something like google sheets?
pyside2 v5.14.0 repaired PyPoe for python 3.8.
no more
TypeError: 'Shiboken.ObjectType' object is not iterable
can anyone tell me why my characters are grayed out? I don't have my characters set to private.
Only the selected one is highlighted white
oh ok. I thought to import I just had to select and press done
@rose sapphire https://github.com/OmegaK2/PyPoE/pull/109
\o/
Working on the rest now 😁
I had so looked forward to celebrating the end of Python 2 on New Year's...
Python 2.7 will retire in 2020. Learn more and see the countdown here.
That site needs to revise 🙂
There are a lot of Python 2 remnants in PyPoE btw
Stuff like ```python
class Stuff(object):
PySide2 bindings are really bad tbh, .connect() or .emit() methods for example have no matching signatures, so they are linted as errors
And signal/slot is like the main selling point of Qt besides cross-platform
Widget alignment via Flag1 | Flag2 is deprecated in Python 3.8, but because these alignment flag classes have no __index__(), there is nothing you can really do about it without modifying PySide2 itself
Got my arse in gear and moved my DAT spec codegen from a pile of printf into Handlebars templates. So much nicer, even if the result looks like whitespace hell.
Nothing a bit of rustfmt can't fix 🙂
@carmine merlin are you perhaps looking for something along the lines of what trademacro does?
f-strings (handlebars formatting) are a good fit for Python, as the whitespace is meaningful anyways
And after some optimizations they're the fastest formatting option
What's up with trade nowadays, river being silly or something? I super love getting whispers for 50 min after I sold something.
🔥
where can I found icons listed in MinimapIcons.dat?
No idea about the location, but the Id string doesn't typically exist anywhere else in the GGPK, at least not in uncompressed data.
Art\2DArt\minimap\player.png has one version of the images, but I can't find any mapping for it.
Some .ot files reference the id, but nothing more.
hey guys... how could i see my items from unique tab in procurement?
Some kinds of tabs are not retrievable, like the Map stash tab. The Unique one may be similar in function.
There's a known issue with the Unique tab not loading correctly on the official website which is probably the reason you can't see it in procurement (https://www.pathofexile.com/forum/view-thread/1733474)
Is there a API or so to send chat messages or do tools like mercury trade or trade companion just focus the game and send enter, message, enter?
second part of your message is how they do it
@grave wren Ah okay, I suspected this
It's pretty wild that the delve fossil mods on helmets are supposed to give minus resistance, which shows up everywhere (including poedb and the official trade website), but do not show up on the items nor do they give the minus resistance in game.
"stats": [
{
"id": "local_display_nearby_enemy_cold_damage_resistance_%",
"max": -9,
"min": -9
},
{
"id": "base_cold_damage_resistance_%",
"max": -9,
"min": -9
}
What do you mean by not show up on the item?
I've definitely seen it during metamorph
it also isn't some hidden effect that works; there's no change to your res with the helmet equipped and functioning. just wild
+1
Maintaining a list of base types and matching item names against it is quite a bit of work
+1 for this as well... I was very sad when "Vaal Temple Map" became an ambiguous identifier

h4x0r
was checking out various item filter addons for VSCode
the old one i have still has the nicest autocomplete for me
but it's outdated for a year now :<
ahh, i think neversink put my name in the "credits" in the filter
unsure if it was his or this one: https://github.com/explooosion/PoeFilterSyntax
@worthy cape Do you know the compression level the .dds inside content.ggpk compressed with brotli have?
Nope. I don't think there's anything in the bitstream that indicates it.
I haven't looked at what DXT formats the files have either.
Thanks for the quick reply, I was just wondering how it would fare against zstd
The likely much higher decompression speed would help performance I think
Shouldn't be impossible to run some trials, I guess.
According to PyPoE, these would be the DXT formats (2 through 5): https://github.com/OmegaK2/PyPoE/blob/dev/PyPoE/ui/shared/file/handler.py#L402
I know I had to patch dds-rs a bit to make it load them successfully, but I don't remember why.
They're regular boring DDS, just a library bug.
PoB Fork 
So, I wanted to automatically spam ctrl+c on cursor movement within areas that could be stash or inventory to get the clipboard data for the items that might be below the cursor. I asked ggg support if that'd be okay, given that although it is fully automated, it doesn't do anything serverside afaik, and their reply was that they will not comment on whether or not it would be allowed.
So now I mostly just want to know if, based on what's already out there and the rules that are known among third party devs, there's a reasonable chance that using this could get my account banned or the like.
I think you have your answer already to be honest, but I can say that sounds vaguely too invasive and automated to not be put on someone’s radar
Too far automated, but why do you want to do it
Even if it would be allowed, it seems more likely to get banned as a result of a false positive than other macros
I wonder if this guardian build will stay at the top after a week https://poe.technology/poebuddy/ apparently people are already using the PoB fork though, first and second are exported from it
im trying to install the poe net worth thing but i cant find the client.txt file
i can only get to this
That's your Documents folder.
You want the directory in your steam library/common/ or wherever you installed your standalone client.
If Steam, open Properties on the game, Local Files -> Browse Local Files...
ye i found it
@golden bane Interestingly enough, there's quite a few DDS files that are not compressed with Brotli, many are 1-2 megs in size.
I downloaded Poe Trade Companion , it works and everything but it doesnt show up in game... i see it on my desktop though, anyone know a fix?
Ive tried my game windowed and fullscreen and it still wont show up
@swift anchor this isn't really a tech support channel. This is for tool development discussions
Ran a survey across the DDS files in the GGPK, with zstd and Brotli.
Art/2DArt/Atlas/AtlasBlank.dds|zstd:maximum|4632436
Art/2DArt/Atlas/AtlasBlank.dds|ggg|4674379
Art/2DArt/Atlas/AtlasBlank.dds|zstd:level9|4712147
Art/2DArt/Atlas/AtlasBlank.dds|zstd:level8|4737007
Art/2DArt/Atlas/AtlasBlank.dds|zstd:level7|4738570
Art/2DArt/Atlas/AtlasBlank.dds|zstd:level6|4748310
Art/2DArt/Atlas/AtlasBlank.dds|zstd:level5|4781295
Art/2DArt/Atlas/AtlasBlank.dds|zstd:level4|4949236
Art/2DArt/Atlas/AtlasBlank.dds|zstd:level3|5088682
Art/2DArt/Atlas/AtlasBlank.dds|zstd:level2|5299094
Art/2DArt/Atlas/AtlasBlank.dds|zstd:level1|5309727
Art/2DArt/Atlas/AtlasBlank.dds|raw|6291656
Sadly I hecked up and accidentally ran zstd instead of brotli, so I had to throw out half my results 😄
I need to store the compression/decompression times anyway, so not the biggest loss.
Levels are whatever the smush Rust library considers quality levels, so may not map directly to the underlying compressor.
I'll see if I can complete some Brotli encodes in finite time.
Compression in the GGPK for that file seems to be somewhere between Brotli q4 and q5.
Checked the source, the quality levels in my DB are the literal ones that a zstd or brotli compressor would take.
I thought brotli would perform worse in every aspect
Still, zstd -9 seems to have 2-3x the decompression speed at a lower memory footprint and a slightly higher cost for compression compared to GGG's
(at almost equal file size)
Order by decode cost - https://gist.github.com/zao/535bebf8b51b2f7fb950c70e460bdd2e
Single decompression of warm data, so there might be quite a bit of slop in the figures.
Timings include setting up an encoder and decoder, so if you can up-front that I guess it helps.
The results are still expressive, especially for bigger files. Thanks again for testing!
i keep meaning to make an api for that thing
Here's the sqlite3 DB of measurements, levels 1/5/9 of brotli/zstd
Tests run in parallel on a 8700K with the GGPK on a RAM-disk.
where do I find the latest official gems.json?
i can produce them at a higher rate
im afraid
i asked what this is https://github.com/brather1ng/RePoE/blob/master/RePoE/data/gems.json
editing the good man's mention out
If you need to ask, you most likely do not need to know
should i trust your judgement then
It is a json file that contains gem definitions
THATS AMAZING
thank you kindly and bless your soul
@golden baneyour judgement was wrong by the way, i find this incredibly helpful in terms of game immersion
@pseudo ocean If you continue trolling your ability to participate will be removed.
@jade adderyou misunderstand me
- i am not trolling
- i do not care for my ability to be in vigor
do what you must
which reminds me, in case my privileges are revoked, i wish you a happy new year
well, I haven't messed with it in awhile, but in 3.5 there was an official gems.json. is there no longer?
and I think you could get it from the poe forums, if not, possibly from the wiki, but I'm pretty sure it was on the poe site itself
Hmm, I don't think so
Pretty much any sort of json from the ggpk has been maintained by the community. The gems.json file I liked is directly generated from the ggpk
It should be noted that this gem information is also reflected also on poedb and the wiki - for those looking for gem info not in a json format.
Is there a list of outdoor maps anywhere? I didn't see it in the repoe data files
i know that poedb has house icon for indoor maps
oh it does? interesting
I don't see any house icons
podb has them tagged but I didn't know if there was a deadlisting
alright, found what i needed - thank you salty
any you dudes run wireshark on this game yet?
@polar oriole Very much against ToS, as you need memory reading for keys.
Also quite uninteresting for tool-dev in general.
i am looking if chat is raw text
as in the client log?
All I know is "shit's encrypted". No further interest.
they have some pretty big encryption tbh
chat might not be
why do you need to know that?
workin on a tool
i figured that lol
A wild guess would be trade assistance for Kakao etc.
nope
fixin fuckin spam bots i want them gone from chat
Fairly sure this has been up in the past, with the conclusion that you need keys.
im searching some packets right now ill see
gl with that
any program you'll end up making that sniffs packets/reads memory will be against ToS i'm fairly certain
iirc there was a blog post a little while ago about sniffing poe packets
might want to look that up if you can
i dont really care its for educational puroses
im sure tencent would be super bummed if i removed spambots from their game thatd be tragic
we made a script that runs /clear in chat when they type but thats a shit method
@polar oriole i read this awhile back when I was looking at doing something similar, it may help: http://tbinarii.blogspot.com/2018/05/reverse-engineering-path-of-exile.html
I also have a question of my own.
^that was the one i had in mind
I am utilizing the trade api endpoint https://www.pathofexile.com/api/trade/search/Standard as an example.
I'm trying to figure out exactly how to add different filters to the json body. For example, If i wanted to see if an item has shaper influence, where in the body of the request do I actually put that?
i've tried a few places and keep getting 400 errors
i'm still not sure why you can't just read the client.txt
is mercury trade no longer working?
it works alright
i've been using TraderForPoe this league.
unless you were using the overlay stuff, which still works
editing client.txt doesnt reflect in chat window
im sure it is
is there any trader that is still being updated?
i see this traderforpoe last update was last 2018
still works fine
trade companion is very outdated but still works
most of the time those don't need updates unless something major changes
trade companion doesnt work 100% right on ultrawide but otherwise its ok
and it doesnt grab asian text
there's a reason for that
found an answer to my question by the way: https://jsoncompare.com/#!/simple/id=70dfadce047d9ea0c9e509dd6e85e84e&fullscreen/
that's pretty neat
@sacred tree
yes
sec
you just cloned it i'm guessing
which filter does influence need to go under when searching an item with the trade api? I've tried misc_filters, but it keeps tossing an error at me.
i just extracted it
yeah, that would require you to build it into an exe yourself
if you go to the link i posted, there's an exe you can download
go to releases there is an exe hades
it says in main description its 1 paragraph down says download here
i also linked it above
Please note that this channel is not tech support, but for developing sweet tools.
did i link the client to the right file
i didnt see any txt and this one seems to be ab out right
taking this to DM
what qualifies yall for a tool dev discord role
@polar oriole Having shipped or are working on some cool tool.
how cool does it have to be
In my case, file format viewer/library in Rust, and reversing a lot of the asset file formats.
Others made trade sites or the big tools you see.
https://github.com/nikgame33/POE-ChatBotDestroyer/releases ours types clear in chat and only compromises all of ur security permissions to do so
sorry if we're not cool enough
mine is a google sheet so you should be fine
this influence thing is driving me mad
i don't understand why it's not working
veiled, corrupted, enchanted, mirrored, everything else works fine
but influences which should be under misc_filters doesn't work.
they work for me, if we're talking about the same thing
i'm attempting to search it using the API
who do I bat my eyelashes at to be graced with dev role?
@violet path i ❤️ you so much.
@polar oriole pinned message
@timid hemlock PoB doesn't seem to like The Hungry Loop with a Barrage skill. Probably after there's both an active and a support gem.
Oooh :S
@timid hemlock Example pastebin for you: https://pastebin.com/BYByaiD7
@sacred tree the best thing to do imho is to make a search on the website and check the network inspector
then you select the query you made (https://www.pathofexile.com/trade/search/Metamorph in this example) and you can check the sent query
Anyone working on POB here? It gives me coil whine on gpu, is that something that I can fix?
That has nothing to do with POB.Additionally, coil whines are many times not dangerous to your card, but sometimes an indicator of a card starting to fail
It's the only program that does that, mostly in the passive view.
Like it is rendering something uncapped
Yet it uses quite high-level opengl(?) APIs to render its stuff.
Is it able to cap or limit it then?
nvidia or amd?
Tried using profile inspector etc
well if you never pushed your gpu to it's limits
Setting global profiles
either way, it think there's a more wider problem to your card
coil whine is understandable, run a benchmark. google is your friend
this isn't really the channel for that unfortunately
is it very noisy, or do you have the case open?
Yeah I know that I won't be able to get rid of that it's just that a frame cap would fix the issue
try riva tuner then
Very loud, it's at high framerates only and not power draw
high framerates = higher power draw
There is no innate frame limit in opengl
So it has to be custom made so using software to cap it wouldn't help?
Is there any reference on what endpoints the OAuth solution provides access to? Private stash tabs and loot filters at least I assume..
if you believe this is an issue related to pob, ping OpenArl LocalIdentity - not sure which part of the code is responsible for it. your personal stopgap measure might be downclocking your card or limiting it via any software, example given already as rivatuner for limiting
rasmus, it's based on scope
i think i was one of the first to beta test it, and there were 3 scopes
let me check convo history with novynn
rasmus: profile, characters, stashes
doesnt give stash
at that point in time, but it was March 2018
at least not in the current implementation
I thought poemap.live used it? It uses public tabs?
I think I got stashes to work with that
The OAuth implementation does not allow for player stash access at this time. 17.12.2019
@fickle yew afaik it uses it only to authorize your account and grab character
to prevent abuse
Ok
@long edge that's what I ended up doing. Didnt realize I could do that lol
I'm looking for the API to retrieve my private map tab content, but I can only find queries for public stash tabs. Can you give me a hint where to look?
map tab is not implemented
https://stackoverflow.com/questions/14968857/controlling-fps-limit-in-opengl-application
This would be a possible fix if unlimited framerate is the issue
Maybe I will post as issue on github
@timid hemlock
@long edge really? oh god 😦 I wanted to quickly find out for which atlas area I have three maps so that I can spawn the conqueror...
I already coded the atlas part, but I did not think that the map stash is not supported.... that's a bummer...
yeah i encountered that aswell while doing https://zedor.github.io/poe-tabled-atlas/ , i ended up writing a chrome extension and an ahk script that does search queries
ahk script is here: https://github.com/zedor/poe-map-grabber
i stopped the project for now because anything other than near realtime is much too slow
@long edge how does the ahk script find out which maps I own?
The extension searches trade with account name?
it queries trade, so you need to have the map tabs set to public
ah okay
yeah @fickle yew
Makes sense
it sounded workable on paper
but once i made everything work and went to try it out during playtime
i realised how much of a hassle it actually is
you also get a lot of WTB whispers, even if u set the price ridiculously high
@long edge what's the exact hassle? trade api too slow?
yeah, thats the case for any project that wants to take map tab into account
@lavish compass querying takes too long because of query limits
16 per 6 is the limit i think
it takes ~190 seconds to get all tier data, but even if you cut it down to within two tiers its still considerable for higher tiers
might work for whatever you have in mind, but for me personally during playtime anything above a few seconds is unacceptable
@long edge hmmmm the problem I want to solve is "In which region can I easily spawn a conqueror with my current map pool". So in theory it's enough if I just know if I have a map or not. Maybe it's fast enough to wait 3 minutes or so
You guys should have a list of tools for poe in this server
@long edge hmm I guess I'm too stupid to use the API right. It always says "unknown item name"
I tried Siege, Siege Map, SIEGE MAP, but always get the same result. Do you know what I do wrong?
{"query":{"status":{"option":"online"},"type":{"option":"Siege Map","discriminator":"warfortheatlas"},"stats":[{"type":"and","filters":[]}]},"sort":{"price":"asc"}} is what the official site does when picking the siege map from the selection
@grave wren Thanks!
welcome
@long edge 12 queries in 6 seconds is really not that fast, it takes forever to query all the maps 😦
is there a fix for when the search for price function of trademacro is very slow?
its literally taking between 20-40 sec to load stuff
This^
Do we know if copying an item to clipboard (ctrl + c) is a server-side action?
I'm having great fun trying to automatically deduce DAT specs from comparing DAT and DAT64 contents - https://gist.github.com/zao/cf3efc816eef45002eed293ee4e2a5a3
"Just" need to set up a good heuristic for ref|list of a bunch of types, and somehow present the results.
It's definitely not going to yield a definite spec, but ought to help figuring changes out.
Doots in the matrix above are locations in the dat32 and dat64 where two-byte values agree across all rows.
This feels very much like an Advent of Code problem 🙂
frigging Intcode machine
So happy I skipped AoC this year, 2018 broke me.
yeah, too math-y for me
howdy howdy
The Paragon's prefix gives "+1 to level of socketed gems" (https://www.pathofexile.com/trade/search/Metamorph/KZXdnni5)
Why doesn't that prefix show up on poedb? I also don't see it in pob's listing. It's still available, yes?
Didn't they replace some of those with "all gems of type X" this patch?
That's what I'm wondering. But I see items available in metamorph up for sale
Ah - attack staff specific
"LocalIncreaseSocketedGemLevel1": {
"adds_tags": [],
"domain": "item",
"generation_type": "prefix",
"generation_weights": [],
"grants_buff": {},
"grants_effects": [],
"group": "IncreaseSocketedGemLevel",
"is_essence_only": false,
"name": "Paragon's",
"required_level": 50,
"spawn_weights": [
{
"tag": "attack_staff",
"weight": 1000
},
{
"tag": "attack_dagger",
"weight": 1000
},
That's what I thought
ahhhhh
I understand now -- thank you
Interesting on the wiki that the headings for the new influences are: Eyrie, Basilisk, Adjudicator, and Crusader
internal names
do you believe the warstaff mod list on the wiki is complete?
I have no reason to think it's incomplete
I guess not - doesn't have incursion mods
Incursion mods have to be hard coded in everywhere they show up (same with delve specific mods that aren't fossil mods), since they are not naturally spawnable on items
Thanks for the help nick_
@hazy fog requesting dev role, we released a script to hide currency bot spam from chat. monitors client.txt for currency bot spam and runs /clear in chat when detected. working on less annoying implementation and detecting additional spam types https://github.com/nikgame33/POE-ChatBotDestroyer
whats the lul for
I feel like you guys dont really want me here or something
I'm personally just bemused by the immediate insistence on a piece of flair.
it does follow the pin 
if my stuff isn't like good enough let me know and I will work more on it before posting it
I'd point out that hardcore users say stay safe after trades
Is the regex supposed to go [Fa]? Judging by the other keywords, shouldn't it be [Ff]?
it's good enough for me. meaningless dark green role applied
Welcome to tooldev # I don't care about numbers anymore@polar oriole creator of a little script to clear your chat everytime it detects commonly used words by spam bots available here: https://github.com/nikgame33/POE-ChatBotDestroyer
Does PS1 regexes support \b-like word boundaries?
thx yall appreciate the recognition
if one could get a bright pink role thatd be noice..
@polar oriole whats the powershell for
thatd be v fancy
the powershel monitors client.txt
it calls the ahk when it detects the spam text
is there any issue with monitoring clien.txt with ahk?
it is a 0/10 implementation and is going to be changed
yeah my partner demanded powershell and just whipped it up in 60 sec
if you have an ahk page on monitoring text I would love that, ill google around too
client.txt is kinda huge too I don't know if ahk can handle it cleanly, the ps works very well with it and only compromises all user security permissions
i am getting oom error trying ahk with client.txt
Having your chat get cleared everytime sounds exciting
yes sir keeps u on ur toes
am i correct in thinking that the ps reads the last line right?
yes
Honestly easier to make a nodejs app that uses the npm library and runs in the background
im not a programmer I dont know how to do anything correctly
also 2019/12/15 15:36:25 40969093 ac9 [INFO Client 7288] Al-Hezmin, the Hunter: There is no true safety from you, is there?
that will also trigger a clear
etc
it should be only if you type safe & fastest & cheapest in one line
oh, am i misinterpreting the match in ps
Time to create a character named CheapFastSafe
my partner did the regex he said it should be only for that string
yeah right? i thought so
does it really
Regex101 allows you to create, debug, test and have your expressions explained for PHP, PCRE, Python, Golang and JavaScript. The website also features a community where you can share useful expressions.
Yes
time 2 trash it
fwiw, ```#Include <tf>
MonitoredFile := "test.txt"
Loop {
buff := TF_Tail(MonitoredFile, 1)
regexBOT := ".([Cc]heap|[Fa]ast|[Ss]afe)."
if( buff ~= regexBOT ) {
msgbox clean me
}
}
Return```
using https://github.com/hi5/TF/blob/master/tf.ahk
seems to work fast enough for me
the release version is correct yall looking at master
$regexBOT = ".(Cheap & Safe & Fast)."
How am I supposed to know master isn't your release
because theres a release tab and the text says use release
smh
yeah iam very aware and ps is getting deprecated anyway
i dont want people running ps and having to bump their permissions that stupid for release
anyways try out doing it all within ahk
i just found a cmd tail.exe that works very well if i cant get ahk to cooperate
Regex101 allows you to create, debug, test and have your expressions explained for PHP, PCRE, Python, Golang and JavaScript. The website also features a community where you can share useful expressions.
The old one is hilarious
yeah the ahk just throws me out of memory
@polar oriole try the code i linked
does ahk support regex flags @long edge ?
yep i got the TF library too i was just picking away at that
i guess #include <tf> should be #include tf.ahk if you dont put it in Libs folder in scriptdir
yes thats what i hav ein my file i was jus tmaking
ive never ref'd a library with ahk so i was googling how to do that correctyl
error in include file TF.ahk
mem limit reached
apparently it does but it calls them options and you have to specify them before the regex with a close parenth
whats your client.txt file size
@long edge oh so its pcre style
(?i) ?
(?i)(?(DEFINE)(?'spam'(cheap|safe|fast))).*((?P>spam)(\s&\s)?(?P>spam)(\s&\s)?(?P>spam)).*
Enjoy
i guess it is, im not that well versed, but it provides example "i)abc.*123"
I'm very confused - is the premise here we can use a regex string to filter out trade spam that somehow ggg can't use?
ye kinda
that seems.... presumptious
the premise here is to help a brother out whatever he is doing
tencent dont want their spam bots to go away
That regex should match the majority
there are absolute limitations unfortuatenly
deleting their trash from client.txt doesnt reflect in chat window
running /clear is horrible
oh it has disclaimers everywerhe do not use
eductoinal purposes only
i am very willing to disregard tos
if the filesize is over a limit, inform the user that youre about to delete his client.txt because its horrible practice not to have it reset on major releases
client.txt cant be dumped if game is running
i think it just goes back up to 100mb when game restarts anyway its full of diag stuff
I wouldn't talk about willingness to disregard ToS in this chat
partner said his was same size hes on steam too
especially not when your account is easy to find :)
@compact isle how do I get access to Oauth
❤️
hey hey it's the 2nd I'm not working today :p
lets talk bout ggg not writing 2 lines to filter out spam
@compact isle I'm not working either but...
can you put me on the list for when you go back
email me
anyways im out, look into running the ps script from ahk then corndog, gl with it
dm me your email
thx for help
@gritty olive its in the pins you lazy person
so yeah i dunno im disappointed with my end limitations kicking spam out of chat
No matter what you do
They will adopt
At some point they'll speak summerian
¯_(ツ)_/¯
time to introduce a google recaptcha to the login
the only other method I have to make spam less natsy is typing some blocks of dots in chat to omve it up screen which i have owrking but its still so boring
poe disconnects you for typing too much local too which is a super weird choice
whats also v strange is all bots are lvl 25/27 witches
that must be their script of choice
i feel like im letting down ggg & the world not fixing the spam bots
if($_ -match $regexBOT) how do i put an or in there for a 2nd string
is it just a pipe
if($_ -match $regexBOT, $regEx2){
not working for either that way
elseif fixes everything
🥳
@obtuse citrus is it possible to add a locale column in stable specification data?
clarification on TOU will spamming local have negative effects
i'm seeing Unwavering Faith grant 0.35% Life Regen per aura instead of 0.20% in PoB - anyone else notice that?
if they say stuff it doesnt show up in the txt
very weird
ive had it catch pretty much everything so far
i am on usa servers though do you mean if a user is in a korea server it wont function
Right.
i will add that to description good info
i had someone on reddit say this script is just gonna mute everyone because local will cause mute so I'm just doing inquiring. it says all over the page prob 4 times do not use you will prob get banned but thats not a good excuse
Unless you want to match substrings, you should probably look at \b btw.
Sources still seem to amusingly do [Fa] too 😄
i was thinking about running a side windowed chat that would filter all the trash
if itd just integrate into hexchat or something people might use it
i dunno I just wanted a tiny little script to get spam off screen
i tried running a library to tail it and kept getting OOM errors
ill see how this works
Anyone knows about a script from poe-trade-companion that can automultiply chaos what stack I need to buy?
Like I want buy Awakened Sextant(2c/each) type "x2" will automultiply and show "x2(4chaos)" in chat
Auto-deduction of DAT structure was fun, but the possibilities are a bit too broad for the few datasets I tested with.
Anything that's not a ref| blows up match count thanks to byte, short and int widths being subsets of long, while ref|string also tends to match ref| to integer types >= 4 bytes.
I guess that it might be of more use if I could constrain it with some ground truth fields.
ref: 4->8
list: 8->16
ulong: 8->16
long: 8->16
ref|generic(int): 4->8
ref|string may use localization .dat file to auto-deduction
they have different value
@velvet fog Have you been able to find the "Other Jewellery" translation from the Essence tooltips?
@fickle yew nope, but using trade api should work, https://br.pathofexile.com/trade/search/Standard/3q3VMG9f5
I don't find it in any .dat file
Ah clever. Thanks.
i'm trying to connect to poe's websockets but it seems to close randomly 
eventually it connects if i run it a few times but 99% of the time after connection it closes instantly
1008 monka
am i not allowed to connect to their websockets programatically lmao
wait my poesessid was outdated
L0L
wait no that's still not it
it sometimes lets me connect other times i just get 1008 i'm confused
you have to put the web browser costume on

@fickle yew the essence mods for rage etc granting plus level to fire cold lightning are not updated to the new pen modifiers on ninjas essence hover.
ok i guess i didnt get it
hm everything worked fine when i wrote my websocket client
im trying setting user agent now
forgot about that
yeah it still works sometimes but others it just insta closes lol
hm you can take a look how i implemented it https://github.com/siegrest/PoeLive/blob/master/Service/Connection/PoeConnection.cs
A demo websocket client for poe.trade, pathofexile.com and poeapp.com - siegrest/PoeLive
it worked fine for longer periods of time
all you're doing is creating a websocket to the url?
self.ws = websocket.WebSocketApp(
"wss://www.pathofexile.com/api/trade/live/" \
+ configloader.get_league() + "/" + identifier,
on_message=lambda ws, msg: self.on_message(msg),
on_error=lambda ws, err: self.on_error(ws, err),
on_close=lambda ws, code, reason: self.on_close(ws, code, reason),
on_open=lambda ws: self.on_open(ws),
cookie='POESESSID=' + configloader.get_poesessid(),
header=[
"User-Agent: Mozilla/5.0 (Windows NT 6.1) " \
"AppleWebKit/537.2 (KHTML, like Gecko) " \
"Chrome/22.0.1216.0 Safari/537.2"
]
)
thread = Thread(target=self.ws.run_forever)
thread.start()```
this is how i'm creating it
i was doing a couple of things
all i see is cookie + basic websocket setup
unless im missing something in your code
what's the Accept header for?
;o
A demo websocket client for poe.trade, pathofexile.com and poeapp.com - siegrest/PoeLive
nvm
might be for connections other than the official site
i literally don't see what i'm doing wrong
no, the socket closes literally instantly
Probably not the right place for this, but its relevant, What are some good extensions to use? Im using PoE Trade, PoE Procurement, and PoE Region Searcher, anything else reccomended?
-----------------------
--- response header ---
HTTP/1.1 101 Switching Protocols
Date: Thu, 02 Jan 2020 18:08:14 GMT
Connection: upgrade
Upgrade: websocket
Sec-WebSocket-Accept: VN5R/IyahZzuVhbdGswf3radlIk=
CF-Cache-Status: DYNAMIC
Server: cloudflare
CF-RAY: 54eead4538ac398c-PHX
-----------------------
Websocket #1 connected
send: b'\x88\x824d\x11\xff7\x8c'
Websocket #1 closed [Code 1008] | Reason: ""```
are you using TLS 1.2?
Have you tried setting your SSL Protocol to Tls12?
not sure that is matters, but that is typically the first thing I check when I am getting some sort of forced disconnection
Also, what is that send command?
no clue, im running websocket with trace and thats what it outputs
it looks like your get connected and send something then disconnect
my output is connect/closed
if anything is sent it's from the lib
idk what it really is
Did you add the accept header?
You need a user agent and the accept header
Also, the cookie looks like it might need some cloudeflare specfic stuff
session = requests.Session()
session.get('https://www.pathofexile.com/')
self.ws = websocket.WebSocketApp(
"wss://www.pathofexile.com/api/trade/live/{}/{}".format(
configloader.get_league(),
identifier
),
on_message=lambda ws, msg: self.on_message(msg),
on_error=lambda ws, err: self.on_error(ws, err),
on_close=lambda ws, code, reason: self.on_close(ws, code, reason),
on_open=lambda ws: self.on_open(ws),
cookie='__cfduid={}; POESESSID={}'.format(
session.cookies.get_dict()['__cfduid'],
configloader.get_poesessid()
),
header=[
"User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.88 Safari/537.36",
"Accept: */*"
]
)
thread = Thread(target=self.ws.run_forever, kwargs={
'sslopt': {
'cert_reqs': ssl.CERT_NONE,
'check_hostname': False
},
})
thread.start()```
yeah i set __cfduid cookie
what about cf_clearance?
huh
__cfduid=<id>; POESESSID=<id>; cf_clearance=<id>
never seen cf_clearance
that is my cookie on the websocket when connected via the browser
where do you get cf_clearance from?
it's nowhere in the cookies when i look at it in browser

Not sure, I just started a live search and looked at the request header
Host: www.pathofexile.com
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:71.0) Gecko/20100101 Firefox/71.0
Accept: */*
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate, br
Sec-WebSocket-Version: 13
Origin: https://www.pathofexile.com
Sec-WebSocket-Extensions: permessage-deflate
Sec-WebSocket-Key: <key>
DNT: 1
Connection: keep-alive, Upgrade
Cookie: __cfduid=<id>; POESESSID=<id>; cf_clearance=<id>
Pragma: no-cache
Cache-Control: no-cache
Upgrade: websocket
that is what my request header looks like via the browser
redacted of course haha
lol why am i getting 502s now
yeah my request headers don't show cf_clearance
Accept-Encoding: gzip, deflate, br
Accept-Language: en-US,en;q=0.9
Cache-Control: no-cache
Connection: Upgrade
Cookie: __cfduid=<id>; POESESSID=<id>
Host: www.pathofexile.com
Origin: https://www.pathofexile.com
Pragma: no-cache
Sec-WebSocket-Extensions: permessage-deflate; client_max_window_bits
Sec-WebSocket-Key: <key>
Sec-WebSocket-Version: 13
Upgrade: websocket
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.88 Safari/537.36```
weird, I am using firefox haha
i use brave
ohh
yeah even if i set clearance im still getting code 1008
this is actually insane lmao
i've looked at so many things that use websockets and even found some that use poe's
and i see nothing different with mine
could be the implementation of the websocket client? Seems unlikely, but idk
nope
def on_open(self, ws):
print('Websocket #{} connected'.format(self.socket_id))```
just this
damn...
it literally doesn't make sense
i can re-run the program sometimes
and it'll let me connect and the socket will stay alive forever
but like 90% of the time, it just insta closes
with code 1008
aka policy violation
@compact isle might know a bit more, I don't know if he is around though
have you tried reopening the socket on your onclose?
yeah i guess that works
but i don't wanna get rate limited or anything through retries
yeah i got it working be reopening inside on_close
but
it's not a solution i'd like to use u know
That is pretty dirty lol but if it works for now, might as well
:D
i feel your pain
now i get to create my first gui ever
just put a note that you have to revise it later
when youre done with most of your project, or when someone here is able to help you specifically (perhaps novynn), just get back to it
true
or you can do it like ggg and the rest of the industry and just leave it there forever
lmao
@fickle yew Poeninja show all button is not working
@pseudo ocean sorry fixed it earlier today. Didn't deploy yet. Thanks tho.
Np glad to help and thanks for the awesome site @fickle yew
@pseudo ocean Should be fixed now.
hmm i just tried it, its still not working
do a ctrl+f5
@fickle yew still not working. I cleared the cookies and cache and tried ctrl+f5 also
I'm flushing some more caches... Helmet enchants page is working for me now but a few others are still loading the old bundle it seems.
@prime wasp we terminate your connection if you send any data
?
it prevents websocket toucans
i'm not sending any data tho
@fickle yew seems to be working now. i checked a few just now
i make requests to /api/trade/fetch once i receive a msg through the websocket but that's it
your message from earlier had:
Websocket #1 connected
send: b'\x88\x824d\x11\xff7\x8c'
Websocket #1 closed [Code 1008] | Reason: ""
so it's most likely the library you're using
i can't figure out why it's sending that shit i'm going insane 
@prime wasp what's the project you're working on?
rewriting my code for poesniper
implementing live searching + gui
if i can just, get websockets to work 
So, I have noticed in all the code examples for that implementation the on_open method isn't assigned in the constructor
it is assign after
hm
maybe it is still using the default on_open method?
if __name__ == "__main__":
websocket.enableTrace(True)
ws = websocket.WebSocketApp("ws://echo.websocket.org/",
on_message = on_message,
on_error = on_error,
on_close = on_close)
ws.on_open = on_open
ws.run_forever()
The hex string it is sending also doesn't make any sense
idk either
it always begins with \x88\x82
i looked it up on the git repo too
other people seemed to have the issue
but nobody knows the fix
lmao
i'd use create_connection and use the low level shit but there's barely any examples of that
would rather wait to see if i can figure it out soon before switching and having to manually write stuff to recieve data
there oughta be a websocket debugger out there to which you can connect and check exactly what youre sending
yeah i saw a few, but unfortunately i dont know much about python or websockets to analyze it further
but by what novynn said, there must be something getting sent that the server isnt expecting
Yeah, there is. It is similar to the messages in that issue
seems to be a random set of characters
after the first 2 bytes yeah
Maybe it is some sort of versioning difference or something
this one mentions pinging and limits, another issue shows a similar hex string for a server response
Yeah, it could be a ping
rip
Shouldn't it be wss: for secure ones?
Bleh... was looking at some random example from the links above and spotted ws:/ 😄
they both default to that either way
def run_forever(self, sockopt=None, sslopt=None,
ping_interval=0, ping_timeout=None,```
Yeah, from what I can tell with a high overview of the code, it would be sending a ping if those aren't None
0 isn't considered truthy
yeah on line 261?
Yeah
im about to just fucking write a ton of prints in the library itself
LOL
im tired of this
@prime wasp are you using websocket-client
yeah
I have an implementation with that which connects just fine
lmfao
help him out he is going insane

Yeah sorry - just catching up with this conversation
do you have your source anywhere?
Btw I only pass possessid
so did i
but i've been trying everything
so i added cfduid incase
lmao
ignore that tmp stuff was for debugging
i committed to remove it cause forgot
I'll move to pms to help debug
do post the issue when done please, im quite interested
same
i'm cursed
aww
literally set it up in a venv and the exact same way he does it
still sending those bytes
Roll a flask of Warding.
i wish
still looking.
what are those bytes anyway? are they being sent by the lib or by the underlying python methods
this issue shows the example straight out from the github readme
I suspect the issue is a python packaging one, still looking into it.
I'm cool like Delusion:
open
send: b'\x88\x82\xca\xdc/]\xc94'
close: 1008
Heh, my squint at the RFC and the message was right, you're explicitly sending a close for some reason.
WebSocketReadResult {
len_from: 8,
len_to: 2,
end_of_message: true,
close_status: Some(
NormalClosure,
),
message_type: CloseMustReply,
}
yeah we're almost done debugging this.
Do we have any info on ratelimiting on websocket open requests?
(Not on the XHR requests themselves)
@prime wasp Pulled down your source, set up a venv, made it freestanding. Shits itself the same way.
yeah but i'm not closing the connection myself
"you" as in the lib, not meatbag you 🙂
thought so
We have a minimal repro which works sometimes now
Not digging much more, as you people are on it already.
the entire point of me asking was to prevent that from happening
but it still is
lol
I somehow feel like this is against the rules but is something that annoys me about the tabs in general (no auto sort / helpful filtering mechanisms) https://www.reddit.com/r/pathofexile/comments/eiyu7v/i_made_an_overlay_to_sort_your_maps_by_region/
how i wish we had ingame ux api
still, nice effort, hopefully dem devs notice how flawed the current representation is
Having played WoW, I hope we never get one 🙂
is there a list of tools in here ?
@velvet fog I was told to make a request for poedb.tw to you.
Would it be possible to make a generator like the unique generator/gem generator, for div cards?
@frigid nova are you the one giving me all these trade site bug reports on the forums? :p
@compact isle yeah 🙃 apologies for swarming you with all of them at once
I wrote a script to extract the values out of the extended mod information - and in the process uncovered a bunch of weird edge cases
oh yeah
there will be a whoooooooole lot
there are around 10k lines of code to modify stat values to suit for search purposes
I wouldn't assume values are always good
@mortal wave okay, I will do it
😮 thank you so much! ❤️
it was a fun journey figuring out how aura stats work, that was a clear oversight on my part
@compact isle I won't put too much stock in them, but they are the most dependable source I have! It took about 1k LOC to get this value extractor up and running.
Any insight you're willing to share about the aura mods? The ggpk makes it seem like there are just mods missing
the majority will be fine it's just funny that you picked up on all the weird ones that look very familiar to me
well all I learned was that mods are linked to auras and auras have a list of stats that they "consume". I'm supposed to skip those when generating the stat list per mod
Oh very interesting - that explains a lot of these small bugs
@worthy cape well the current iteration of default wow interface is quite alright, but the vanilla one was quite clunky and missing a lot of qol. in comparison, it wouldnt be needed if poe interface wasnt severely 1990s
the biggest culprit right now is the atlas (along with stash tab interaction), but there are many other issues
@compact isle I think the most serious bugs I ran across were the local leech returning null magnitude ranges. Although I think the value plus the name is still enough to differentiate which mod it comes from (not 100% sure though)
After digging through stat_translation to try and understand what was happening there, I can empathize. It might be solved by adding (Local) to that legacy stat. I should mention that it shows up on implicits, explicits, and crafts
they should be getting stuffed into their non-legacy variants
oh xanthics I think i have you beat
yeah that's a tiny table
index_handlers = {
"negate": -1,
"canonical_stat": 1,
"divide_by_fifteen_0dp": 15,
"per_minute_to_per_second_1dp": 60,
"divide_by_twenty_then_double_0dp": 10,
"60%_of_value": 5.0 / 3,
"divide_by_one_hundred_2dp": 100,
"milliseconds_to_seconds_0dp": 1000,
"per_minute_to_per_second_2dp_if_required": 60,
"deciseconds_to_seconds": 10,
"divide_by_ten_0dp": 10,
"multiplicative_damage_modifier": 1,
"milliseconds_to_seconds": 1000,
"mod_value_to_item_class": 1,
"old_leech_percent": 1,
"old_leech_permyriad": 10000,
"30%_of_value": 10.0 / 3,
"per_minute_to_per_second_0dp": 60,
"per_minute_to_per_second": 60,
"divide_by_two_0dp": 2,
"milliseconds_to_seconds_2dp": 1000,
"divide_by_one_hundred": 100,
"per_minute_to_per_second_2dp": 60,
"divide_by_twelve": 10,
"divide_by_six": 6,
"times_twenty": 1 / 20,
}
i have a favorite btw
"divide_by_twenty_then_double_0dp" 😉
my favourite part of those is we use a second table that reverses them for the trade site to convert between variants (like leech!)
Also another thing @compact isle is there were a few inconsistent capitalization problems - but I decided those were too nitpicky to bug you about and also don't affect trade or results in any quantitative way.
plus you can barely tell with the font
yeah like the awakened gems
oh - also I only wrote my parser for items - so currency/gems/beasts, etc. still are untapped for me and potentially contain other edge cases
I guessed as much 🙂
Oh I guess I should mention
that there are like 10 or so entries in stat_translation in the ggpk which seem pretty bugged from my read
Mark or someone else might be interested in them
I can email you a list of them if you think someone would be interested.
@compact isle Is your email listed in the pins - or elsewhere?
it should be pinned, otherwise it's just roryv@grindinggear.com
It is in fact there, thanks
@earnest radish my unofficial opinion would be that a request as a response to a user action (ctrl + c) would not be the same as automated software / bots
just dont use a popsicle stick and youre gucci
😠
@compact isle Would it be possible to add the tier of the essence mod in the extended info?
{"0":{"name":"of the Essence","tier":"S","magnitudes":[{"hash":"explicit.stat_2231156303","min":31,"max":34}]}}
I kind of want to contribute to the PoB fork, but I never worked with lua. Basically, I wanna add a support for a mod, maybe someone here knows how it should look like?
@grave wren It should be fixed now. Ended up rewriting my mod tracking - it was written back in 2016 when I made the site. 🙂 Mods should be more stable now.. Standard league will be a bit broken sometimes but I'll find a solution for that...

rewriting old code can be such a task 😔
I enjoy rewriting old code tbh. There is a lot to learn from how people did things and how we do things now a days
I do too, especially I find it fun to search for old code that can be improved with newer language features, and how it makes you think about things.
Right now, I wanted to refactor PyPoE a bit, but @obtuse citrus is hard to get a hold of 😔
Which one?
poewatch
Why does it need a rewrite?
finished the website a few weeks ago, now doing the app
it wasn't really planned properly, never intended it to be what it is today
So just reworking everything to fit better or also a change of tech?
hm the first version didn't use any of the modern frameworks
now it's the latest angular and spring boot
making it easier to maintain and for others to get into as well
:<
i saw some other memey horrors in the meantime
a "backend" consisting of an express server with one route that just executed sql directly
the madlads had one shared free hosted mysql db with ads in the phpmyadmin
it was a true abomination
Sounds very flexible to use from the frontend...
it was very fun seeing them struggle to get it working while at my place while they did not have my wifi creds
so it was worth it... kinda?
if it works sorta, ship it
People can contribute data easily..
it doesn't randomly disintegrate by itself = stable and ready for production
are you talking about leagues
too soon
the bots are on the case lol
how far back does the ggg tracker store posts
the rss feed?
umm the site itself? i presume it stores posts and links in a database? or am i wrong
iirc, it stores whatever it finds in a db
you can go back a really long time
it looks like it will look back 2 weeks in time for forums posts
might be better off scraping the data from the tracker than rescrape using the indexers
it irks me that there's no filtering
you can pseudo filter by account
grab all the posts associated with a given account
something like: https://www.pathofexile.com/account/view-posts/Emmitt/page/1
yeah that seems viable, might look into rebuilding the db myself and add filtering based on time / account / subforum / threadname / postcontent
thanks emmitt
@prime wasp whats the trick
not retrying instantly and spamming it
like i was yesterday
nick told me he retries after 10sec
i do mine at 3 and works fine
most of the time that is
i did tell you yesterday to set up a check :P timeout works too i guess if you dont know the exact rate limit
glad its sorted, hopefully the rest will be smoother
yeah i still don't know the rate limit for the trade websockets
btw not sure if the issue is fixed, but considering its still open on github i doubt it is: if theres a network interruption the connection gets dropped but the on_whatever isnt called
something to consider
@simple ravine I'm sure I've asked this before, but are there any non-horrible UI libs for .NET?
UI libs?
If I have to FFI out from Rust anyway, I might as well use a language that might have a chance of having good UI.
WinForms seemed to not really handle DPI well at all last I looked, and XAML hurts my brain.
I need a bunch of docked panels and a 3D viewport.
WPF supports Windows 7, but uses DirectX 9
UWP is DX 11 (or 12?), faster but is those 'modern apps' things
I'm fine with Win10 minspec.
I think you also can use Xamarin for desktop
If you're planning on doing 3D stuff, don't go Win Forms
No, you can create separate installers for UWP apps
msix packages, I think they're called
I kind of don't want to use D3D for my graphics, but I guess that most of these kind of won't be too friendly toward having a child window.
what do u mean?
I'd like a child window I can initialize some graphics API over in Rust land, so just an embedded HWND.
start off with WPF then
you have more full control there
you can access the handle etc there
actually you mgit be able to do that in UWP too
Too bad the holidays are almost over, going to take some time getting started.
Haven't written C# in years and years.
The good thing with WPF that you can do .NET Core 3+
@mortal wave https://poedb.tw/us/div_gen
thank you so much ❤️
works BEAUTIFULLY @velvet fog !
Uniques are server-side to prevent datamining
as the name suggests, it only contains "base items"
Some of this information might be wrong though as it was all manually entered
i'm just trying to get the image link for display purposes




