awakened-poe-trade
awakened-poe-trade copied to clipboard
Feature/trade manager
Hi,
I've been working on a trade manager for the app in the last couple days. It has several core features :
- Handles incoming trade offers workflow (From the moment someone whisper you until the trade is completed)
- Handles outgoing trade offers workflow (From the moment you whisper someone until the trade is completed)
- Display offers in a simple and convenient way
- Multiple hotkeys/shortcuts for the most used actions (e.g. Inviting a player to your party, sending a trade request in game, etc.)
- Auto-whisper (e.g. Say "Thanks" once a trade is completed)
- Auto-kick (e.g. Remove the buyer from your party when the trade is completed)
- Player detection (e.g. the buyer has join your area)
Incoming trade offers
When you receive a trade offer whisper, it is diplayed onto the overlay just above the XP bar.
There are addtional informations in a tooltip when you mouse hover the item name of the offer. The informations are :
- The item name (full length this time without "...")
- The name of buyer
- The time
- The stash tab name (e.g. tab "The tab name here")
- The position of the item in that tab (e.g. Left: 4, Top: 5)
Actions before you invite the player to your party
Whisper that you're Busy
:
Dismiss the offer :
Whisper that the item is Sold
with Ctrl + Click
on the offer :
Whisper the player to ask him if he's Still interested ?
in your item with Ctrl + Shift + Click
on the offer :
Highlight the related item in you stash (first select the relevant tab) with Alt + Click
on the offer :
Invite
the player to your Party
with a simple Click
on the offer :
Actions after you've invited the player to your party
Re-invite
the player to your Party
(Usefull if the buyer doesn't accept the request in time) :
Dismiss the offer (this time it also kick
the buyer out of your party) :
You have access to the same commands Ctrl + Click
, Ctrl + Shift + Click
and Alt + Click
at this point either.
When the player join your hideout, a User
icon on the offer.
And, you can send a Trade Request
to the player with a simple Click
on the offer :
Once the trade is completed
, a Thanks
whisper is automatically sent to the player and he's kicked
out of your party
Outgoing offers
Support whisper templates of www.pathofexile.com and poe.trade.
Simply click on the "Whisper" button available on the trade website.
The whisper is automatically sent to the related player in-game.
And the offer is displayed onto the overlay, on the right side of the screen.
You have severals informations available such as :
- The name of the item
- The name of the player
- The time and the elapsed time from the moment you've sent the whisper
- The price (Usefull if you have multiple items with different prices)
The offers are ordered by time
and they expire
(removed from the overlay) after 60 seconds
. The offer won't expire if you join the hideout of a player using the Join hideout
action (Notice that the timer keeps running as reference). See below.
Actions
You can join the hideout
of the player (after you've joined his party) :
You can send a Trade Request
to the player :
You can dismiss the offer :
Once the trade is completed
, a Thanks
whisper is automatically sent to the player.
About the changes
The Trade Manager adds the @types/lodash
(Debounce while reading the Client.txt file) and the find-process
(To find the location of PoE logs
directory. Intended to work on all platform, but I've only tested Windows yet) dependencies.
It has it's own subfolder in /main/trade-manager/
and in /web/trade-manager/
.
There are 4 new Vue components :
- IncomingOffer (Display an incoming offer)
- IncomingOffersContainer (Display the
IncomingOffer
s and handles interaction with theMainProcess
) - OutgoingOffer (Display an outgoing offer)
- OutgoingOffersContainer (Display the
OutgoingOffer
s and handles interaction with theMainProcess
)
Adds multiple new Event
s in the MainProcess
bindings related to the Trade Manager.
⚠️ Important ⚠️
The Outgoing Offer part of the Trade Manager is using an updated version of your parckage electron-overlay-window
referenced in this PR. It basically add a BringWindowToTop(hwnd)
command in the focusTarget()
function. It's required to bring back PoE on top to be able to automatically send whisper when you click the "Whisper" button on the trade websites (See the Outgoing offers section). You may want to update your NPM repo or refactor this into two seperate functions, I don't know, but for now the electron-overlay-window
package is referencing my forked version
As of now, it only support english language. Needs to implement parsers for other languages.
I'm creating a draft for now, because, I need to test the trade manager a bit more while playing the game, but you can begin to take a look at my work if you want to. You may ran into lint errors 😆, I haven't ran the linter yet on the branch.
Thank you for interest in this feature. I always interested in different solutions and take best parts of each. While I can't merge your PR I'll take some notes from code. On a positive side you've learned APT code base, and can use your solution at least two weeks for sure, and even then my implementation will differ so you might want to continue using your version)
Of course that was just a draft, to give some ideas, and I saw on your front page that you were planning to implement a fresh version of MercuryTrade/TradeCompanion/etc. or similar in the app, but I wasn't sure if that was in progress or not. So, considering i'm already a bit bored about the league 🤣, I decided to do some work on that to at least give some ideas.
And who knows ? Maybe I'll like your version better then mine ¯_(ツ)_/¯
I'm glad if I helped you!
Of course that was just a draft, to give some ideas, and I saw on your front page that you were planning to implement a fresh version of MercuryTrade/TradeCompanion/etc. or similar in the app, but I wasn't sure if that was in progress or not. So, considering i'm already a bit bored about the league 🤣, I decided to do some work on that to at least give some ideas.
And who knows ? Maybe I'll like your version better then mine ¯_(ツ)_/¯
I'm glad if I helped you!
And how could we get your version atm ?
Of course that was just a draft, to give some ideas, and I saw on your front page that you were planning to implement a fresh version of MercuryTrade/TradeCompanion/etc. or similar in the app, but I wasn't sure if that was in progress or not. So, considering i'm already a bit bored about the league 🤣, I decided to do some work on that to at least give some ideas. And who knows ? Maybe I'll like your version better then mine ¯_(ツ)_/¯ I'm glad if I helped you!
And how could we get your version atm ?
Fork my GitHub repo about awakened-poe-trade, then build the app locally on your computer for your OS (Windows / Linux). Enjoy!
Keep in mind that this version isn't fully tested, so there might be some bugs remaining. And that you won't have the latest updates/fixes from SnosMe, if you don't merge his repo with my repo, before building.
Well I'll check this (you speak a little bit chineese for me XD) I'm on windows, you can't give me a link for a direct exe?
Le sam. 29 août 2020 à 16:54, nomis51 [email protected] a écrit :
Of course that was just a draft, to give some ideas, and I saw on your front page that you were planning to implement a fresh version of MercuryTrade/TradeCompanion/etc. or similar in the app, but I wasn't sure if that was in progress or not. So, considering i'm already a bit bored about the league 🤣, I decided to do some work on that to at least give some ideas. And who knows ? Maybe I'll like your version better then mine ¯_(ツ)_/¯ I'm glad if I helped you!
And how could we get your version atm ?
Fork my GitHub repo about awakened-poe-trade, then build the app locally on your computer for your OS (Windows / Linux). Enjoy!
Keep in mind that this version isn't fully tested, so there might be some bugs remaining. And that you won't have the latest updates/fixes from SnosMe, if you don't merge his repo with my repo, before building.
— You are receiving this because you commented. Reply to this email directly, view it on GitHub https://github.com/SnosMe/awakened-poe-trade/pull/189#issuecomment-683345970, or unsubscribe https://github.com/notifications/unsubscribe-auth/AQZH5VYZA5OFQYWGXYUSBJ3SDF2JRANCNFSM4PID3DYQ .
I'm glad you're interested in what I did, but unfortunately, I won't be able to provide any release/working version (exe, etc.) of my forked version simply because, I don't want to steal the work of SnosMe, in case many people read this PR and start using my forked version instead. And, if my version, that is not fully tested btw, start to bug and crash, unfortunately some people might think that it's SnosMe fault and may create issues on his repo, and I don't want that either.
So, if someone wants to try my forked version while waiting for the official version of SnosMe, like I said, they can take a look and build my forked version on my repo by themselves. And, nowadays that's not a hard thing to do, even for people that are not really used to software development and those kind of stuff.
Hope you understand.
I understand and wait a bit to see it on official version. If it take too much time I'll check how to try your fork. Thanks for taking time to answer
Le dim. 30 août 2020 à 15:11, nomis51 [email protected] a écrit :
I'm glad you're interested in what I did, but unfortunately, I won't be able to provide any release/working version (exe, etc.) of my forked version simply because, I don't want to steal the work of SnosMe, in case many people read this PR and start using my forked version instead. And, if my version, that is not fully tested btw, start to bug and crash, unfortunately some people might think that it's SnosMe fault and may create issues on his repo, and I don't want that either.
So, if someone wants to try my forked version while waiting for the official version of SnosMe, like I said, they can take a look and build my forked version on my repo by themselves. And, nowadays that's not a hard thing to do, even for people that are not really used to software development and those kind of stuff.
Hope you understand.
— You are receiving this because you commented. Reply to this email directly, view it on GitHub https://github.com/SnosMe/awakened-poe-trade/pull/189#issuecomment-683464906, or unsubscribe https://github.com/notifications/unsubscribe-auth/AQZH5V7X64CF33BKP23Q4VDSDKW67ANCNFSM4PID3DYQ .
Be careful using this:
Once the trade is completed, a Thanks whisper is automatically sent to the player and he's kicked out of your party
If I'm understanding how it functions correctly, it's considered automation, since you didn't directly trigger it yourself, and could potentially get you banned.
This is fantastic.
So it's been a lot longer than 2 weeks from SnosMe commented on Jul 26
when @SnosMe said he was going to implement his version.
Are we going to get this added?
@zombodotcom In the meanwhile, I've built my own version of the trade manager with aditional features in C#, for several reasons :
- Was kind of tired waiting 🤣
- Performance
- .NET is just faster and easier at doing several stuff required for the trade manager then JavaScript
- Didn't want to pull and update my own version of Awakened PoE Trade every time SnosMe update the main repo 😲
Downside is that it's Windows-only, because it's built on .NET Framework and it's using severals Windows-only libs
It's called Menagerie
Awesome! I'll check it out. Doesn't seem like they are ever going to add this feature anyways
Perhaps you didn't understand what SnosMe said the same way I did. He wasn't saying he would implement his own trade manager in 2 weeks. He was only stating that there would be no changes which broke nomis51's trade manager for 2 weeks.
Definitely check out nomis51's C# version but I for one support SnosMe to add a trade manager when they get the chance. For cross-platform capability and 'one-less-app' simplicity.
I want to explain how currently "yo dev, just implement trade manager" situation looks for me.
-
Whispers from players using Kakao client (Korea) not logged in
ClientLog.txt
. Obviously GGG is forced to be compliant with Korean laws and this is the point just to keep in mind. Doesn't affect outgoing trades. -
There are enough tools released (6+) for managing trades: Menagerie, POE-Trades-Companion, Poe-Lurker, MercuryTrade (or its fork), SlimTrade, pretty sure at least 2 more that I'm not aware of. As @DarkSnowy wrote should I do it only for sake of "one-less-app" installed, but my solution will suck from same problems as see above... and bellow...
-
Finding item position:
CTRL+F by item name | App powered highlighting (overlay) | CTRL+F with position:x,y syntax (not a thing) |
|
---|---|---|---|
Highlights item using its correct size (1x3, 1x4, 2x4, ...) | ✔️ | ❌ [1] | ✔️ [3] |
Highlights only one item when tab has multiple identical Unique items | ❌ | ✔️ | ✔️ [3] |
Highlights unidentified Unique items | ❌ | ✔️ | ✔️ [3] |
Works out of box with Quad and Normal tabs, stash Folders | ✔️ | ❌ [2] | ✔️ [3] |
Can have public Quad and Normal tab with the same name | ✔️ | ❌ [2] | ✔️ [3] |
[1] - Not critical, can be emulated by guessing item from whisper (no 100% guarantee tho), yet nice to have feature. [2] - Either manually create list by hand with fields: stash tab name (no duplicates), is tab in folder, quad/normal tab. Or get this info from the website (requires POESESSID and most importantly pathofexile.com still doesn't support stash Folders). [3] - This is a syntax I propose. As you know at least to try to get GGG attention you need to post it on Reddit with enough upvotes. I tried this, but seems that motivation in post was not clear or players indeed think everything is as it should be.
-
For [2] these are not just problems, this is a potential flood of issues I see: Q: "Hey, tool doesn't recognize correctly my tab" A: "Maybe you renamed it, or switched to another league? Update your manually created list/Click that button to refetch from website."
-
Awakened PoE trade can't work like other trade managers: you will need to press
Shift + Space
to activate overlay mode and then interact with trade widget OR use hotkeys for this. IMO this is not bad, but for someone taking into account already mentioned problems they can perceive trade manager to be unusable.
There were a lot of changes made to this day (adaptation to new game data file format, my internal stat format changed, migrating to Vue3, supporting new league content, unexpected events like slow trade site and everyone says you should add caching because we like checking items in Rituals 😄 ). I have limited free time and feel like these things were more important, than adding trade manager that will have described issues (spending time on a feature that you know in advance doesn't always work). Sure it will be added (using the "CTRL+F by item name" variant, I really wish [3] was a thing), but I can't say when. 😄
I feel you. The reasons why I created Menagerie were directly linked to what you said here :
- I supposed you had much more important things to manage in APT before even thinking into implementing this, while knowing that there are other apps out there already doing it (By reading your comment, I see now I was right)
- It's definitely not easy to do it with Electron, surprisingly, without breaking everything else
When I implemented the trade manager in APT, I faced so much issues, not due to the app structure, but due to the Electron way of doing certain things, like handling mouse/keyboard events in or out of visible screens. Just being able to interact with the trades on the overlay without actually blocking the user from interacting with the game was a challenge. It seems like Electron window is pretty opaque events-wise, it has only two states : I ignore all keyboard/mouse events OR I intercept everything, even if it's not on a visible part of the overlay. Which make this really hard to deal with (Reason why I chose WPF for Menagerie).
Also, the item highlighting is definitely another difficult thing to do. I went the easy way with Menagerie (after failing a bit in APT), by using the Ctrl + F way along with some whispers interpretations/parsing. Using the overlay to highlight, is simply a nightmare to manage 😄, Getting the right width, height, position, size, etc. of the grid/items aswell as knowing if it's quad/normal tab, dealing with whispers that don't have position message, etc. is a real mess to manage. I tried to do it in APT, but I quickly realized that it was going to create more problems then anything else.
I also hope [3] could be a thing, it would make this sooo much easier 😄
Huh. I was of the mindset that I could made a MVP trade manager for a single resolution in a couple days. Well, I support you not to add a trade manager to your application, then. Since I noticed you like to keep your code pure.
(Pure code for the win. Many hands makes light work but also drop the ball and make a mess)