How mining nodes and herbs are handled in entity list? menu

User Tag List

Results 1 to 9 of 9
  1. #1
    Jirno's Avatar Member
    Reputation
    3
    Join Date
    Mar 2023
    Posts
    12
    Thanks G/R
    2/2
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    How mining nodes and herbs are handled in entity list?

    std::cout << "Hello world!\n";
    I am trying to make simple mining bot without wow function calling (because I don't know how to do it lol) and now I struggle with getting XYZ of nodes for my clickToMove function
    As the title says, I can't understand how "not alive" entities are handled in entity list (object manager or whatever)

    I took most of my offsets from here ([WoW] [5.4.8 18414] Release x86 Info Dump Thread) (thanks a lot)
    I have function, that takes my mouseover GUID and return address of that target in entity list. Basically I am iterating by all entities, resolving their pointer-chain to it's GUID and compare it with mouseover GUID until I find match
    BUT, it's not working for herbs and mining nodes. It can't resolve pointers to GUID of these entities, throwing me an exception of access violation. I added some error checking for invalid pointers so I am not having crushes, but my function can't find herbs and nodes also
    I tried different offsets, like Entity + *** -> Descriptors + *** = GUID, Entity + *** -> Descriptors + *** -> GUID and Entity + *** = GUID, but it's all working only for alive units
    So it seems like GUID location of herbs and nodes differs with alive units

    It's possible, that offsets from dump are just not correct for me, because you can see from it that GUID of units and objects stored at same place.
    I understand that GUID maybe not best way of finding herbs and nodes, but I am pretty new at all of this. It's challenging for me and I want to understand it

    I am not asking for spoon-feeding with correct offsets, I want to understand how you can find it by yourself, so that's why I have questions:
    1. What is usual way of finding herbs/nodes in entity list? Is it entity type?
    2. How can you reverse "static" structure like nodes and herbs? I believe it can't really change any variables like position and it destroys when you harvest it
    3. Can it be done better with any internal function calling? (I mean minimap tracking can show you closest herbs/nodes, so it must use some sort of function to get their position?)

    Sorry if these questions have been asked billion times, but I tried to search information by myself and failed (I really tried...)
    Last edited by Jirno; 05-16-2023 at 03:14 AM. Reason: link was not working

    How mining nodes and herbs are handled in entity list?
  2. #2
    scizzydo's Avatar Contributor
    Reputation
    134
    Join Date
    Oct 2019
    Posts
    96
    Thanks G/R
    5/54
    Trade Feedback
    0 (0%)
    Mentioned
    2 Post(s)
    Tagged
    0 Thread(s)
    You're doing this for wow 5.4.8? Or what?

    Nodes like that will show up in the object manager as GameObjects. There's a few flags you can check to see if it's interactable, etc. I think you need to provide a bit more of the whole environment for help

  3. #3
    Hrap's Avatar Member
    Reputation
    12
    Join Date
    Oct 2018
    Posts
    111
    Thanks G/R
    12/4
    Trade Feedback
    0 (0%)
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)
    Аs an option, you can find herb and ore objects by name
    if let's say the name of the object is in the database and it is ore or grass, then return the GUID and so on and so forth))

  4. #4
    Jirno's Avatar Member
    Reputation
    3
    Join Date
    Mar 2023
    Posts
    12
    Thanks G/R
    2/2
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    Originally Posted by scizzydo View Post
    You're doing this for wow 5.4.8? Or what?

    Nodes like that will show up in the object manager as GameObjects. There's a few flags you can check to see if it's interactable, etc. I think you need to provide a bit more of the whole environment for help
    Yeah, my bad. I am doing it for x64 5.4.8 18414
    Main problem is, that I can't get into herb/node struct at all so I can't even read it's flags, name, guid or anything else. I am confused because at the same time I can get into any alive unit struct
    That's why I am asking if they are handled somehow differently

    My offsets:
    Code:
    Entity list:  Wow-64.exe + 1387048
    
    First entity: EntityList + 0x18
    Next entity:  Entity + 0x58
    
    Actual entity data: [[[ Entity + 0x08 ] + 0x08 ]
    Descriptors:        [[[ Entity + 0x08 ] + 0x08 ] + 0x08 ]
    
    GUID:
    Descriptors + 0x0 // using this now
    or
    Entity + 0x11D8
    or
    ActualEntityData + 0x20
    I can't resolve even first part of node/herb chain because it's not a pointer at Entity + 0x08

    Actually, I will try to collect all entities with invalid pointers at 0x08 and look at it manually for now

  5. #5
    Jirno's Avatar Member
    Reputation
    3
    Join Date
    Mar 2023
    Posts
    12
    Thanks G/R
    2/2
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    Originally Posted by Hrap View Post
    Аs an option, you can find herb and ore objects by name
    if let's say the name of the object is in the database and it is ore or grass, then return the GUID and so on and so forth))
    That's a good idea! I will probably do it when I figure out how to actually access node/herb struct

  6. #6
    Hrap's Avatar Member
    Reputation
    12
    Join Date
    Oct 2018
    Posts
    111
    Thanks G/R
    12/4
    Trade Feedback
    0 (0%)
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)
    I searched the forum out of curiosity and got the following:
    Code:
    EntityList	= 1387048
    FirstEntity	= 18
    NextEntity	= 58
    
    EntityType	= 18
    Descriptors	= 08
    GlobalID	= 00
    EntityID	= 14
    DynFlags	= 18
    
    DWORD_PTR  curObjects = read <DWORD_PTR>(WowBase + EntityList);
    int i = 0;
    while (1);
    {
    DWORD_PTR curEntry = read <DWORD_PTR>(curObjects + FirstEntity+(i * NextEntity));
    if (curEntry == 0) {break;}
    short type = Read<short>( curEntry + EntityType)
    if(type == gameobject)
    { 
       // create new game object
      //there are ore and grass
      // read GUID, Name and also
     }
    if(type == playerobject)
    { 
    .....
    }
    
    if(type == npcobject)
    { 
    .....
    }
    
    i++;
    }
    this should read all objects, maybe I missed something, I wrote from memory)
    but the point should be clear

  7. #7
    Jirno's Avatar Member
    Reputation
    3
    Join Date
    Mar 2023
    Posts
    12
    Thanks G/R
    2/2
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    Aaaaand, I got it...
    Originally Posted by Hrap View Post
    this should read all objects, maybe I missed something, I wrote from memory)
    but the point should be clear
    Function itself was not a problem
    It was offsets problem as I expected, but it took hella lot of time to realize it
    I still don't understand logic, but information about nodes/herbs (maybe all objects) are located in different place compared to units

    In my case, units have data (descriptors, position, etc.) at [[Entity + 0x08] + 0x08], while objects have it at Entity + 0x810

    But I am still curious how does people usually reverse object structs. I was just bruteforcing ideas and can't even remember which one took me to right direction

  8. #8
    Hrap's Avatar Member
    Reputation
    12
    Join Date
    Oct 2018
    Posts
    111
    Thanks G/R
    12/4
    Trade Feedback
    0 (0%)
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)
    Well, yes, different types of objects have fields with info located differently and this is usually indicated as fields.
    and reversing is a rather laborious and complex process, I also want to learn how to find everything myself, but so far my success is not great(

  9. #9
    Glitt's Avatar Active Member CoreCoins Purchaser
    Reputation
    38
    Join Date
    Dec 2022
    Posts
    49
    Thanks G/R
    8/15
    Trade Feedback
    0 (0%)
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)
    Originally Posted by Jirno View Post
    Aaaaand, I got it...

    Function itself was not a problem
    It was offsets problem as I expected, but it took hella lot of time to realize it
    I still don't understand logic, but information about nodes/herbs (maybe all objects) are located in different place compared to units

    In my case, units have data (descriptors, position, etc.) at [[Entity + 0x08] + 0x08], while objects have it at Entity + 0x810

    But I am still curious how does people usually reverse object structs. I was just bruteforcing ideas and can't even remember which one took me to right direction
    CheatEngine or ReClass have been popular choices for reversing struct data. It's still a painful process however, but things can be simplified in-process if you build out the VMT it will expose a lot of helper methods to get the things you need. There is always little details to make things nice and simple, but I can't remember how I found the harvested and indoors flags (needs update)... something to do with CE dumping the address space and looking for changed values from on/off states. Currently messing with this just not 5.4.8. Good luck.

Similar Threads

  1. [Guide] How to Find and Catch Iron Thorns in Pokémon Scarlet & Violet?
    By daneyjefferson in forum Pokemon GO Hacks|Cheats
    Replies: 1
    Last Post: 06-28-2023, 05:47 AM
  2. How to extract and read DB2 WDB5 in memory ?
    By Sundark in forum WoW Memory Editing
    Replies: 12
    Last Post: 08-15-2016, 11:00 AM
  3. Getting minion to mine nodes and avoid aggro anywhere.
    By Cheatertroll in forum SWTOR Exploits
    Replies: 0
    Last Post: 01-15-2012, 11:38 AM
  4. How to amke and setup a teleporter in game, 2.4.3!
    By joshd35171 in forum WoW EMU Guides & Tutorials
    Replies: 7
    Last Post: 09-17-2008, 10:42 AM
All times are GMT -5. The time now is 01:05 PM. 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