Confused about dealing with game objects menu

User Tag List

Results 1 to 9 of 9
  1. #1
    b9er's Avatar Member
    Reputation
    1
    Join Date
    Dec 2008
    Posts
    13
    Thanks G/R
    0/0
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    Confused about dealing with game objects

    So I'm trying to find my fishing bobber and I'm a little confused as to how to deal with game objects.

    Like for example I want to check the type of object and then check that I created it.

    do I just read curObj + 0x2 and I have my type? And then if it's a type 5 I get curObj + 0x6 to get the OBJECT_FIELD_CREATED_BY which should be the same as my localGUID?


    thanks

    Confused about dealing with game objects
  2. #2
    luciferc's Avatar Contributor
    Reputation
    90
    Join Date
    Jul 2008
    Posts
    373
    Thanks G/R
    0/0
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    In This Post i explained a bit about Objects

    But the Basics is to loop thru all objects

    Code:
    localGUID = Memory.ReadUInt64(Main_Window.hproc, (ObjectManager.s_curMgr + 0xC0));
    curObj = Memory.ReadUInt(Main_Window.hproc, (ObjectManager.s_curMgr + 0xAC));
    
     nextObj = curObj;
    And then after reading w/ the Current Objects Data you do this

    Code:
    nextObj = Memory.ReadUInt(Main_Window.hproc, (curObj + 0x3C));
                    if (nextObj == curObj)
                    { break; }
                    else
                    { curObj = nextObj; }
    So when you combine them together you get this

    Code:
    localGUID = Memory.ReadUInt64(Main_Window.hproc, (ObjectManager.s_curMgr + 0xC0));
     curObj = Memory.ReadUInt(Main_Window.hproc, (ObjectManager.s_curMgr + 0xAC));
    
    nextObj = curObj;
    
    List<Object> _Objects = new List<Object>();
    while (curObj != 0 && (curObj & 1) == 0)
    {
    
    //READING DATA
        UInt64 cGUID = Memory.ReadUInt64(Main_Window.hproc, (curObj + GUIDOFFSET!));
    
        _Objects.Add(tempObject);
    
     nextObj = Memory.ReadUInt(Main_Window.hproc, (curObj + 0x3C));
        
        if (nextObj == curObj)
        { break; }
        else
        { curObj = nextObj; }
    }
    
    Object[] retValue = new Object[_Objects.Count];
    _Objects.CopyTo(retValue);
    Last edited by luciferc; 12-30-2008 at 02:36 PM.

  3. #3
    b9er's Avatar Member
    Reputation
    1
    Join Date
    Dec 2008
    Posts
    13
    Thanks G/R
    0/0
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    Thanks.

    So then curObj is the base of the offsets from there? Like if I want to read OBJECT_FIELD_CREATED_BY from each object it would be curObj + 0x6 (based on the sticky of offsets)?

    Or like I I wanted UNIT_FIELD_MAXHEALTH = 0x1F

    I could get it by reading the memory at curObj + 0x1F?

    edit:

    Or Do I have to get the curObj fields GUID and make that my base then read 0x1F?
    Last edited by b9er; 12-30-2008 at 03:21 PM.

  4. #4
    Xarg0's Avatar Member
    Reputation
    61
    Join Date
    Jan 2008
    Posts
    389
    Thanks G/R
    0/0
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    If you'd read the thread on accessing the FIELD storage you'd know how to ^^

    also your offsets are plainly incorrect, you'd never add 0x2 to an Objects base address because the pointer to that objects virtual method table is most likely 4bytes long, seems like you've got no Idea how the hole memory thing works ^_^
    I hacked 127.0.0.1

  5. #5
    b9er's Avatar Member
    Reputation
    1
    Join Date
    Dec 2008
    Posts
    13
    Thanks G/R
    0/0
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    well that's why i'm asking..

    What is 0x2 an offset of? the object_field base?

  6. #6
    Shynd's Avatar Contributor
    Reputation
    97
    Join Date
    May 2008
    Posts
    393
    Thanks G/R
    0/0
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    [[curObj+0x8]+0x2*4]
    Although, personally, I just read curObj+0x14 for type (I think, been a while).

  7. #7
    Robske's Avatar Contributor
    Reputation
    305
    Join Date
    May 2007
    Posts
    1,062
    Thanks G/R
    3/4
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    Originally Posted by Shynd View Post
    [[curObj+0x8]+0x2*4]
    Although, personally, I just read curObj+0x14 for type (I think, been a while).
    They don't use the same values to indentify Object Types if I remember correcty. For instance, [[curObj+0x8]+0x2*4] would return 33 for a "Player" object while [curObj+0x14] would return 4, something to watch out for.

    Now, if you wish to access any descriptor from Cypher's sticky, read from curObj+0x8 to get a pointer to correct array then add whatever offset you want using the multiplied value. (Smells fishy, not sure this is the correct terminology... correct me if I'm wrong)

    So to find a fishing bobber created by you:
    if (Memory.ReadInt(curObj + 0x14) == 5)
    {
    dwDescriptor = Memory.ReadUInt(curObj + 0x;
    if (Memory.ReadUInt64(dwDescriptor + 0x6 * 4) == playerGUID)
    {
    //Happy stuff
    }
    }

    Although I still call an additional getObjectName to make sure it's an actual Fishing Bobber (to exclude any kind of totem or minipet ...)
    "Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live." - Martin Golding
    "I cried a little earlier when I had to poop" - Sku

  8. #8
    b9er's Avatar Member
    Reputation
    1
    Join Date
    Dec 2008
    Posts
    13
    Thanks G/R
    0/0
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    Originally Posted by Shynd View Post
    [[curObj+0x8]+0x2*4]
    Although, personally, I just read curObj+0x14 for type (I think, been a while).
    Thank you much sir. That set me straight.

    Originally Posted by Robske007a View Post
    They don't use the same values to indentify Object Types if I remember correcty. For instance, [[curObj+0x8]+0x2*4] would return 33 for a "Player" object while [curObj+0x14] would return 4, something to watch out for.

    Now, if you wish to access any descriptor from Cypher's sticky, read from curObj+0x8 to get a pointer to correct array then add whatever offset you want using the multiplied value. (Smells fishy, not sure this is the correct terminology... correct me if I'm wrong)

    So to find a fishing bobber created by you:
    if (Memory.ReadInt(curObj + 0x14) == 5)
    {
    dwDescriptor = Memory.ReadUInt(curObj + 0x;
    if (Memory.ReadUInt64(dwDescriptor + 0x6 * 4) == playerGUID)
    {
    //Happy stuff
    }
    }

    Although I still call an additional getObjectName to make sure it's an actual Fishing Bobber (to exclude any kind of totem or minipet ...)

    Thank you too.. curObj + 0x14 is what I'll use

  9. #9
    Cypher's Avatar Kynox's Sister's Pimp
    Reputation
    1356
    Join Date
    Apr 2006
    Posts
    5,368
    Thanks G/R
    0/4
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    I also use the type at 0x14. I think most people do so I'd suggest you use that in order to avoid confusion when people share code.

Similar Threads

  1. [Database] How to get custom db items for 3.3.5 or how to customly compile db with game objects?
    By StaryniteLights2 in forum WoW EMU Questions & Requests
    Replies: 1
    Last Post: 07-09-2010, 12:59 AM
  2. Question about Game Objects and NPCs
    By Bloodrazer1876 in forum WoW EMU Questions & Requests
    Replies: 2
    Last Post: 09-20-2008, 01:52 PM
  3. How to make game objects teleport with LUA!
    By Le Froid in forum WoW EMU Guides & Tutorials
    Replies: 4
    Last Post: 01-02-2008, 06:59 PM
  4. How to make a Game Object teleport u some were with out a spell
    By Illidan1 in forum WoW EMU Guides & Tutorials
    Replies: 29
    Last Post: 01-01-2008, 06:46 PM
  5. May someone give a simple analogy about Ascent Game Object Adding?
    By tyman2006 in forum World of Warcraft Emulator Servers
    Replies: 4
    Last Post: 12-16-2007, 02:13 PM
All times are GMT -5. The time now is 08:37 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