[AutoIt] Diablo 3 Click To Move, Interaction, Actor Indexing. menu

User Tag List

Page 1 of 6 12345 ... LastLast
Results 1 to 15 of 85
  1. #1
    UnknOwned's Avatar Legendary
    Reputation
    713
    Join Date
    Nov 2006
    Posts
    583
    Thanks G/R
    0/0
    Trade Feedback
    0 (0%)
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    [AutoIt] Diablo 3 Click To Move, Interaction, Actor Indexing.

    I have deleted the old post and made this new one as it got a bit too botty.
    Here is a UDF for controlling Diablo 3 via memory editing.
    This was originally made to make Diablo 3 controllable with a PS3 or Xbox360 controller (which worked awesome btw!).

    In short it contains a few usefull function such as:

    • GetCurrentPos()
    • MoveToPos($_x,$_y,$_z)
    • InteractGUID($_guid,$_snoPower)
    • IterateObjectList($_displayINFO)


    I have included some basic sample code, that does the following:


    http://pastebin.com/0pQcz0zs

    (it requires NomadMemory.au3, get it yourself!)

    enjoy.
    Last edited by UnknOwned; 06-14-2012 at 05:28 AM.

    [AutoIt] Diablo 3 Click To Move, Interaction, Actor Indexing.
  2. #2
    Valmere's Avatar Contributor
    Reputation
    166
    Join Date
    Apr 2007
    Posts
    362
    Thanks G/R
    16/31
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    Neat stuff
    wat

  3. #3
    sdq928's Avatar Private
    Reputation
    1
    Join Date
    Mar 2010
    Posts
    12
    Thanks G/R
    0/0
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    Originally Posted by UnknOwned View Post
    I have deleted the old post and made this new one as it got a bit too botty.
    Here is a UDF for controlling Diablo 3 via memory editing.
    This was originally made to make Diablo 3 controllable with a PS3 or Xbox360 controller (which worked awesome btw!).

    In short it contains a few usefull function such as:

    • GetCurrentPos()
    • MoveToPos($_x,$_y,$_z)
    • InteractGUID($_guid,$_snoPower)
    • IterateObjectList($_displayINFO)


    I have included some basic sample code, that does the following:


    [AutoIt] Diablo 3 Movement and Interaction UDF - Pastebin.com

    (it requires NomadMemory.au3, get it yourself!)

    enjoy.
    Very grateful to you*

  4. #4
    diesiel1's Avatar Member
    Reputation
    1
    Join Date
    May 2012
    Posts
    10
    Thanks G/R
    0/0
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    Thanks.

    Can this interact with ingame buttons (like start game, resume game, change quest, etc)

  5. #5
    caosmen's Avatar Member
    Reputation
    1
    Join Date
    Feb 2012
    Posts
    25
    Thanks G/R
    0/0
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    ty for sharing this.

    now i can see the first code how some one works with objects

    i will look in your code deeper and study it.

    ty

  6. #6
    evil2's Avatar Active Member
    Reputation
    27
    Join Date
    Feb 2009
    Posts
    164
    Thanks G/R
    25/9
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    hmm.. so few replies?.. this is the best d3 source posted here so far

    thanks UnknOwned

  7. #7
    tfp's Avatar Member
    Reputation
    1
    Join Date
    Jun 2012
    Posts
    9
    Thanks G/R
    0/0
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    Originally Posted by evil2 View Post
    this is the best d3 source posted here so far
    qft!
    I try hard now for 2 days to iterate over the Object starting at ObjectMananger... and you just released it as part of a small example.
    Thank you - that will improve my understanding of other ressources postet here by a great margin.

  8. #8
    hata1234's Avatar Member
    Reputation
    1
    Join Date
    Jun 2012
    Posts
    3
    Thanks G/R
    0/0
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    Thanks.
    It's useful.
    But did it safe?
    Will warden detect it?

  9. #9
    DrArgo's Avatar Private
    Reputation
    1
    Join Date
    Jun 2012
    Posts
    2
    Thanks G/R
    0/0
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    UnknOwned, I really appreciate the sample code. It helped me get a better grip on where to start as far as memory reading goes. I'm pretty sure I have the requisite skills to be able to do this, I'm just missing pieces on how to put everything together.

    If you don't mind answering some basic questions, I'd like to go through some code snippets, line-by-line to understand them better.

    Code:
    global $ofs_ObjectManager = 				0x01580A2C
    global $ofs__ObjmanagerActorOffsetA = 		0x8b0
    global $ofs__ObjmanagerActorCount = 		0x108
    global $ofs__ObjmanagerActorOffsetB = 		0x148
    global $ofs__ObjmanagerActorLinkToCTM = 	0x380
    global $_ObjmanagerStrucSize = 	0x428
    These constants mean the following (please correct me if I'm wrong):

    * 0x01580A2C -> The base address of the object manager pointer
    * 0x8b0 -> The offset within the object manager where the Actor list pointer is located (it seems like the start of a pointer chain)
    * 0x108 -> The offset starting from where the Actor list pointer is located, which contains the number of actors
    * 0x148 -> The offset to the next link in the actor list pointer chain
    * 0x380 -> used for click to move, which I'm not trying to figure out right now
    * 0x428 -> The size of an Actor struct

    Code:
    global $_itrObjectManagerA  = _MemoryRead($ofs_ObjectManager, $d3, 'ptr')		
    global $_itrObjectManagerB  = _MemoryRead($_itrObjectManagerA+$ofs__ObjmanagerActorOffsetA, $d3, 'ptr')	
    global $_itrObjectManagerCount  = $_itrObjectManagerB+$ofs__ObjmanagerActorCount
    global $_itrObjectManagerC  = _MemoryRead($_itrObjectManagerB+$ofs__ObjmanagerActorOffsetB, $d3, 'ptr')	
    global $_itrObjectManagerD  = _MemoryRead($_itrObjectManagerC, $d3, 'ptr')	
    global $_itrObjectManagerE  = _MemoryRead($_itrObjectManagerD, $d3, 'ptr')
    Here's how it works from my understanding:

    *$_itrObjectManagerA Address of the Object Manager as pointed to by a static memory location
    *$_itrObjectManagerB -> Address of a structure that holds what I will call an ActorList** pointer and also the number of actors
    *$_itrObjectManagerC -> Address of an ActorList* pointer.
    *$_itrObjectManagerD -> Address of the actual ActorList.
    *$_itrObjectManagerE -> I'm not sure what this is for.

    Where did you get the structure definitions from?

    I've been trying to find resources (read all of this forum and blizzhackers), but I can't seem to find how you actually go about determining what the structs store. I'm particularly interested in the Scene structs.

    Ideally, I'd like to make a maphack that only reads process memory (it won't hook into the process). I will do that by overlaying a graphic on the screen. I'll certainly share whatever I can make. Right now I just don't know were to get information.

  10. #10
    RamirezX's Avatar Member
    Reputation
    2
    Join Date
    Apr 2012
    Posts
    28
    Thanks G/R
    0/0
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    Originally Posted by DrArgo View Post

    * 0x01580A2C -> The base address of the object manager pointer correct
    * 0x8b0 -> The offset within the object manager where the Actor list pointer is located (it seems like the start of a pointer chain) correct
    * 0x108 -> The offset starting from where the Actor list pointer is located, which contains the number of actors it looks the same as 0x10C ... correct
    * 0x148 -> The offset to the next link in the actor list pointer chain address of the FirstActor, you can iterate through Actors this way: FirstActor + i*0x428 ..
    * 0x380 -> used for click to move, which I'm not trying to figure out right now I'm too lazy to count it, but it looks like CRActorMovement->IsMoving
    * 0x428 -> The size of an Actor struct correct
    My pointerchains:

    DWORD pObjectManager = 0x01580A2C;

    DWORD pRActors[] = {0x01580A2C, 0x8B0};
    DWORD pFirstActor[] = {0x01580A2C, 0x8B0, 0x148,0};
    DWORD pActorCount[] = {0x01580A2C, 0x8B0, 0x10C};
    DWORD ActorSize = 0x428

    DWORD pACDCount[] = {0x01580A2C, 0x850, 0, 0x11C};
    DWORD pFirstACD[] = {0x01580A2C, 0x850, 0, 0x148, 0};
    DWORD ACDSize = 0x2D0


    Originally Posted by DrArgo View Post
    Where did you get the structure definitions from?
    reverse engineering

    Originally Posted by DrArgo View Post
    I've been trying to find resources (read all of this forum and blizzhackers), but I can't seem to find how you actually go about determining what the structs store. I'm particularly interested in the Scene structs.
    Here in this section of forum is a lot of info .. just read all the older stuff and collect informations from the debris

    Originally Posted by DrArgo View Post
    Ideally, I'd like to make a maphack that only reads process memory (it won't hook into the process). I will do that by overlaying a graphic on the screen. I'll certainly share whatever I can make. Right now I just don't know were to get information.
    how do you wanna do overlay without injecting?

  11. #11
    TheArkanaProject's Avatar Private
    Reputation
    1
    Join Date
    Jun 2012
    Posts
    7
    Thanks G/R
    0/0
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    how do you wanna do overlay without injecting?
    Windowed D3 the size of the desktop?

    Just a thought =)

  12. #12
    DrakeFish's Avatar Lazy Leecher

    Reputation
    634
    Join Date
    Nov 2008
    Posts
    569
    Thanks G/R
    0/14
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    Originally Posted by DrArgo View Post
    Ideally, I'd like to make a maphack that only reads process memory (it won't hook into the process). I will do that by overlaying a graphic on the screen. I'll certainly share whatever I can make. Right now I just don't know were to get information.
    Originally Posted by RamirezX View Post
    how do you wanna do overlay without injecting?
    It is very possible to create a transparent layered window on top of another window and achieve the same type of rendering as if you were injected (but with your own DirectX "device", of course). The layered window system even lets you select a color that will be used for transparency so it is possible to do this with pretty much anything. I personally use this with GDI+ to perform simple drawing without being injected. Obviously, this system would not work in fullscreen mode, but for that there's the possibility of using DirectDraw.

    The best way to get information about the game would be to start with what is provided here and do your own searching and reversing. There are a few threads from the beta with information on UI, and such things (I personally posted the UI structures and a few functions a long time ago in one of the first reversing threads). I'm sure you could update some of the information from those threads and use them if you don't want to start from nothing.
    Last edited by DrakeFish; 06-17-2012 at 04:10 PM.

  13. #13
    DrArgo's Avatar Private
    Reputation
    1
    Join Date
    Jun 2012
    Posts
    2
    Thanks G/R
    0/0
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    Here is some example code of an overlay using GDI+ to draw without injection: [AutoIt] Overlay clock - Pastebin.com. It's modified from some other code I didn't write, so it might be a little messy, but it gets the concept across, I think.

    I'm fairly paranoid about injection being able to be detected, so I would not like to add or change any of the process memory, if possible. Transparent windows allow me to add UI functionality without messing with the game's memory.

    After more digging, I have a bit more understanding about the actual structures being used. I have a lot of experience with C++, assembly, and CE, but reverse engineering seems to take things to a whole new level. I've written bots for fun for years and I'm taking it as a challenge this time to write one that relies on memory reading.

  14. #14
    quickyneone's Avatar Private
    Reputation
    1
    Join Date
    Jun 2012
    Posts
    2
    Thanks G/R
    0/0
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    I tried to update this script with the pointers from the new patch but GetCurrentPos() is always returning 100 for my X. Is anyone else experiencing this issue or can update this script?

    http://www.ownedcore.com/forums/diab...mp-thread.html ([Diablo 3][[1.0.3.10057] Retail Patch - Info Dump Thread)

    global $ofs_ObjectManager = 0x15A0BEC
    ...
    global $ofs_Interact = 0x15A0BD4

  15. #15
    UserNamex32's Avatar Member
    Reputation
    3
    Join Date
    Nov 2010
    Posts
    16
    Thanks G/R
    0/1
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    Yeah I've been having issues with the getCurrentPos so I just had it find my toon and use it's X,y,z values for it instead
    also doesn't require the initial click

Page 1 of 6 12345 ... LastLast

Similar Threads

  1. Interact problems with Click to move
    By natt_ in forum WoW Memory Editing
    Replies: 3
    Last Post: 09-28-2014, 02:12 PM
  2. [Release] [AutoIt] Diablo 3 Click To Move, Interaction, Actor Handling. (Version 2)
    By UnknOwned in forum Diablo 3 Memory Editing
    Replies: 301
    Last Post: 09-30-2012, 07:52 PM
  3. [Diablo 3] Click to move?
    By diablothree in forum Diablo 3 Memory Editing
    Replies: 3
    Last Post: 01-14-2012, 04:29 AM
  4. Click to move?
    By ashleyww in forum WoW Memory Editing
    Replies: 32
    Last Post: 07-18-2009, 08:48 PM
  5. Click to Move Problem
    By Rival-Fr in forum WoW Memory Editing
    Replies: 5
    Last Post: 07-03-2009, 09:27 AM
All times are GMT -5. The time now is 08:50 AM. Powered by vBulletin® Version 4.2.3
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved. User Alert System provided by Advanced User Tagging (Pro) - vBulletin Mods & Addons Copyright © 2024 DragonByte Technologies Ltd.
Digital Point modules: Sphinx-based search