PoE Manager: a central HUB for Path of Exile / poe.trade autoonline / procurement / .ahk helper

"
NebuKadneZaar wrote:
Ok, please dont understand this as a greedy claim - just playing with ideas.

In a perfect world - those are additions I would really love. :P



man, u're reading my mind :D Yeah, we're gonna need that, and we'll have it! In the next version, which at this point should include

-Movable window
-"Go to app" buttons
-poe.trade button
-rebind F2 script key to...F3? :D

something else? :D
Last edited by Y3k on Dec 6, 2014, 6:15:06 AM
"
Y3k wrote:

something else? :D


Install script that asks which keys to use for the helper macros and edits the .ahk to actually use those keys :P
"

IMPORTANT NOTE: as of now all this works smoothlessly if PoE is running in "Windowed Fullscreen". If you play in plain fullscreen mode, you may be unable to recall PoE Manger on top with ALT+F2 when you're inside the game. In the future I'll try to figure out a solution for fullscreen users.

You have two options:

1) Hook either the D3D API's Present() or the DDI interface itself. This is the most common/inefficient method used by software such as FRAPs/OpenBroadcastSystem

2) Step into kernel-mode; emulate a VidPN output pin; hook the dxgk interface; crash and burn.

Have fun :)
"The problem is there ARE secure netcodes" -- Pewzor
"
Emjayen wrote:
"

IMPORTANT NOTE: as of now all this works smoothlessly if PoE is running in "Windowed Fullscreen". If you play in plain fullscreen mode, you may be unable to recall PoE Manger on top with ALT+F2 when you're inside the game. In the future I'll try to figure out a solution for fullscreen users.

You have two options:

1) Hook either the D3D API's Present() or the DDI interface itself. This is the most common/inefficient method used by software such as FRAPs/OpenBroadcastSystem

2) Step into kernel-mode; emulate a VidPN output pin; hook the dxgk interface; crash and burn.

Have fun :)


Yeah man, this looks like a breeze *sarcasm*. Is there a standard / best practice regarding this matter, considering that PoE Manager is written in C#? Moreover, would GGG be fine with external tool which injects something in d3d dll?

Btw guys, new version 0.3.2.0...check it out in the first post :D
"

Yeah man, this looks like a breeze *sarcasm*. Is there a standard / best practice regarding this matter, considering that PoE Manager is written in C#? Moreover, would GGG be fine with external tool which injects something in d3d dll?

It's unsupported behavior so no, there's no standardized method to access the display beyond the public D3D interfaces*

Your best bet is the first method as it's straight-forward and results in less visual anomalies than other methods and the only real prerequisite knowledge is familiarity with the COM ABI and a small subset of the public D3D interfaces.

Although it may be possible in C# I doubt it'd be worth the effort (certainly not possible if CLI/.NET is targetted)

I would architecture your solution as follows:

Write (in C) a small module that is loaded into PoE which implements a software overlay (http://msdn.microsoft.com/en-us/library/aa916217.aspx) onto PoE's video output and export an interface to this service.

Your main (C#) application can now [via the overlay interface] cleanly draw to PoE's surface.

--

As for actual implementation, again what I would do is, map the overlay surface memory into the address-space of your application, then, as far as your application is concerned it has the ability to draw directly to PoE's surface by simply plotting pixels in it's own memory.

Ofcourse, a lock to protect the shared overlay memory would be required and probably a flag to indicate whether or not the overlay surface data is dirty or not.

* There technically is (which is what option#2 referred to) however for political reasons there's only half a dozen vendors in the world with the necessary knowledge to pull it off properly.


EDIT: As for GGG, their concerns will likely be more pragmatic: whether or not your software will cause stability issues or other problems for their users.

Since it doesn't modify the game itself in any way and its intent is not to provide a player advantage I doubt they would find fault.

(Note: I've written tools that do similar things as described above and have had no run-ins with GGG for it)
"The problem is there ARE secure netcodes" -- Pewzor
Last edited by Emjayen on Dec 7, 2014, 8:52:35 PM
"
Emjayen wrote:
"

Yeah man, this looks like a breeze *sarcasm*. Is there a standard / best practice regarding this matter, considering that PoE Manager is written in C#? Moreover, would GGG be fine with external tool which injects something in d3d dll?


technical stuff... :D



Wow man, you clearly know what you're talking about, and I really appreciate your hints on the first method. Unfortunately my C background is quite poor (only did a couple of exams about that, and never really practiced it outside a studying environment), but I already decided I'll have to get serious about C sooner or later so...challenge accepted :D I'll take this as a long-term objective, we'll see if I'll be able to pull this off.

One question remains though...whould GGG be ok with me doing this kind of thing? GGG reply on that would be awesome of course...

Edit: I see you've edited your post to answer this question. Of course your answer makes sense. Still if I'd ever try to achieve such a thing I'd like to know for sure, so maybe in the following days I'll try to get in contact with them to have a conclusive answer. Thanks a lot for your help man, you're a boss :D
Last edited by Y3k on Dec 7, 2014, 8:55:02 PM
If it's modifying the files or game data in memory it would be against the terms of use.
"
Y3k wrote:
"
Emjayen wrote:
"

Yeah man, this looks like a breeze *sarcasm*. Is there a standard / best practice regarding this matter, considering that PoE Manager is written in C#? Moreover, would GGG be fine with external tool which injects something in d3d dll?


technical stuff... :D



Wow man, you clearly know what you're talking about, and I really appreciate your hints on the first method. Unfortunately my C background is quite poor (only did a couple of exams about that, and never really practiced it outside a studying environment), but I already decided I'll have to get serious about C sooner or later so...challenge accepted :D I'll take this as a long-term objective, we'll see if I'll be able to pull this off.


Even if your C background was really strong; unless you had a dayjob writing Windows Kernel drivers, I'd strongly advise that you run screaming away from from Emjayen's option 2. The MSDN information for writing kernel drivers is horrifically bad/incomplete/confusing/hopeless according to everyone I know who's ever done (or tried to do) so; and when your kernel mode crashes (which it will do, repeatedly, because you don't know what you're doing) the entire OS goes down; which makes figuring out what happened a nightmare.
Did you ever see history portrayed as an old man with a wise brow and pulseless heart, weighing all things in the balance of reason?
Is not rather the genius of history like an eternal, imploring maiden, full of fire, with a burning heart and flaming soul, humanly warm and humanly beautiful?
That's one thing you could never fault GGG on; their willingness to engage with general community and *gasp* actually answer informal questions (even if it is just maintaining the status quo stance on cheating)
"The problem is there ARE secure netcodes" -- Pewzor
"
Summoner wrote:


Even if your C background was really strong; unless you had a dayjob writing Windows Kernel drivers, I'd strongly advise that you run screaming away from from Emjayen's option 2. The MSDN information for writing kernel drivers is horrifically bad/incomplete/confusing/hopeless according to everyone I know who's ever done (or tried to do) so; and when your kernel mode crashes (which it will do, repeatedly, because you don't know what you're doing) the entire OS goes down; which makes figuring out what happened a nightmare.


Well man, achievement unlocked: "Made your point" :P Anyway I think that Michael's comment brings the question to an end.

"
Michael_GGG wrote:
If it's modifying the files or game data in memory it would be against the terms of use.


As far as I understood from Emjayen, doing so would be necessary to achieve this overlay:

mapping the memory address of "path of exile displayed image" (let's simplify this :D) inside my program so that I can later modify it inserting my overlay when needed. So, no good. I guess we'll just have to stick with this "windowed-fullscreen-only" version :D
Last edited by Y3k on Dec 7, 2014, 10:04:40 PM

Report Forum Post

Report Account:

Report Type

Additional Info