[WoW][3.2.0] Better Object Managment menu

User Tag List

Page 3 of 3 FirstFirst 123
Results 31 to 44 of 44
  1. #31
    miceiken's Avatar Contributor Authenticator enabled
    Reputation
    209
    Join Date
    Dec 2007
    Posts
    401
    Thanks G/R
    7/9
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    Originally Posted by Cypher View Post
    C# and LINQ is the work of Satan.
    Kynox' sister is the work of you.

    Wait, what?

    [WoW][3.2.0] Better Object Managment
  2. #32
    Cypher's Avatar Kynox's Sister's Pimp
    Reputation
    1358
    Join Date
    Apr 2006
    Posts
    5,368
    Thanks G/R
    0/6
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    Originally Posted by miceiken View Post
    Kynox' sister is the work of you.

    Wait, what?
    It's true, Kynox's sister is actually my daughter.

    Wait... what?

  3. #33
    lanman92's Avatar Active Member
    Reputation
    50
    Join Date
    Mar 2007
    Posts
    1,033
    Thanks G/R
    0/1
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    How do you grab your local player? I'm using the same way that you use for GetObjByGuid, but it seems like the guids from the descriptors and the one at [objmgr + 0xC0] are different. Any help?

  4. #34
    flo8464's Avatar Active Member
    Reputation
    30
    Join Date
    Apr 2009
    Posts
    434
    Thanks G/R
    0/0
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    Since I use EnumObjects instead of doind the iterations myself, I face a little problem: I have to make sure I already entered the world or EnumObjects will cause an access violation.

    What is the best way to check if I am ingame? Currently I try to retrieve the objectmanagers address, if I fail doing so (NULL-pointers) I can be pretty sure I am not ingame. That looks kinda bad style to me, but I haven't found a better solution yet.

    @Lanman:

    activePlayer_ = getObjectByGuid(getGuidByKeyword("player"));
    This is how I do it.
    Hey, it compiles! Ship it!

  5. #35
    Apoc's Avatar Angry Penguin
    Reputation
    1388
    Join Date
    Jan 2008
    Posts
    2,750
    Thanks G/R
    0/13
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    Originally Posted by flo8464 View Post
    Since I use EnumObjects instead of doind the iterations myself, I face a little problem: I have to make sure I already entered the world or EnumObjects will cause an access violation.

    What is the best way to check if I am ingame? Currently I try to retrieve the objectmanagers address, if I fail doing so (NULL-pointers) I can be pretty sure I am not ingame. That looks kinda bad style to me, but I haven't found a better solution yet.

    @Lanman:



    This is how I do it.
    That's one way, or you can use ClntObjMgrGetActivePlayer which will return 0 if no active player, or the GUID of the active player if there is one.

  6. #36
    lanman92's Avatar Active Member
    Reputation
    50
    Join Date
    Mar 2007
    Posts
    1,033
    Thanks G/R
    0/1
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    Problem is I moved it out of process. Same structure, just changed way it enumerates. Any ideas?

    EDIT: I looked at the function you mentioned, and it takes the same guid that I'm using, yet still not finding the right object.

    Maybe I'm just doing something wrong?

    Code:
    GameObject v = new GameObject();
    RealObjects.TryGetValue(_magic.ReadUInt64(s_curMgr + 0xC0), out v);
    return new WoWPlayer(v.ObjPtr) ?? new WoWPlayer(0);
    Last edited by lanman92; 11-21-2009 at 04:52 PM.

  7. #37
    flo8464's Avatar Active Member
    Reputation
    30
    Join Date
    Apr 2009
    Posts
    434
    Thanks G/R
    0/0
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    Originally Posted by lanman92 View Post
    Problem is I moved it out of process. Same structure, just changed way it enumerates. Any ideas?
    As far as I remember the GUID is stored at offset 0x6C of the object manager.

    That's one way, or you can use ClntObjMgrGetActivePlayer which will return 0 if no active player, or the GUID of the active player if there is one.
    Yeah, but internally it does the same with the added overhead of reading the guid.

    I was more looking for a static address. But I think its not really important, I ll continue to check pointerresults.
    Hey, it compiles! Ship it!

  8. #38
    lanman92's Avatar Active Member
    Reputation
    50
    Join Date
    Mar 2007
    Posts
    1,033
    Thanks G/R
    0/1
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    Not sure why, but it's throwing a null reference exception when I use GetObjByGuid or my function posted above. That's most likely the issue. Can't see why it's being thrown though. That's the reason why I changed it from WoWObject v to WoWObject v = new WoWObject(0). Still no love with the 0x6C offset either.

    EDIT: Figured I'd share my solution. Here's what I did.

    Code:
    public static GameObject Me
            {
                get
                {
                    foreach (GameObject o in RealObjects.Values)
                    {
                        if (o.Type == WoWObjectType.Player)
                        {
                            if (o.RawGuid == _magic.ReadUInt64(s_curMgr + 0xC0))
                                return o;
                        }
                    }
                    return new GameObject(0);
                }
            }
    I just added the RawObject member to wowobject so I could check it to the one in the object manager. Works like a charm.
    Last edited by lanman92; 11-21-2009 at 08:54 PM.

  9. #39
    lanman92's Avatar Active Member
    Reputation
    50
    Join Date
    Mar 2007
    Posts
    1,033
    Thanks G/R
    0/1
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    I hate to bump an old thread, but does anyone else get the exception that the List was modified during an enumeration, and it stops working correctly? I know the problem is coming from removing Invalid entries in the list, but the way it's done here doesn't seem like it should throw this error. Any help?

    EDIT: Nevermind. Fixed.

    Code:
                if (_framecount % 30 == 0)
                {
                    IEnumerable<GameObject> remove = (from o in RealObjects
                                               where !o.Value.IsValid
                                               select o.Value);
    
                    foreach (var pair in remove)
                    {
                        RealObjects.Remove(pair.Guid);
                    }
                }
    Last edited by lanman92; 12-21-2009 at 02:44 PM.

  10. #40
    amadmonk's Avatar Active Member
    Reputation
    124
    Join Date
    Apr 2008
    Posts
    772
    Thanks G/R
    0/0
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    Originally Posted by Apoc View Post
    That's one way, or you can use ClntObjMgrGetActivePlayer which will return 0 if no active player, or the GUID of the active player if there is one.
    You dick, you just invalidated a crapton of work that I did (tracking PLAYER_ENTERING_WORLD, etc.) trying to figure out how to know if I'm "in the game" or not. You mean I could have just been checking a ulong against 0 the whole time?

    *bonk* *goes back to delete about 100 lines of fragile, buggy-ass code*
    Don't believe everything you think.

  11. #41
    Apoc's Avatar Angry Penguin
    Reputation
    1388
    Join Date
    Jan 2008
    Posts
    2,750
    Thanks G/R
    0/13
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    Originally Posted by lanman92 View Post
    I hate to bump an old thread, but does anyone else get the exception that the List was modified during an enumeration, and it stops working correctly? I know the problem is coming from removing Invalid entries in the list, but the way it's done here doesn't seem like it should throw this error. Any help?

    EDIT: Nevermind. Fixed.

    Code:
                if (_framecount % 30 == 0)
                {
                    IEnumerable<GameObject> remove = (from o in RealObjects
                                               where !o.Value.IsValid
                                               select o.Value);
    
                    foreach (var pair in remove)
                    {
                        RealObjects.Remove(pair.Guid);
                    }
                }
    Simple enough.

    Code:
    var guids = (from o in RealObjects
                             where !o.Value.IsValid
                             select o.Key).ToList();
    Just tack on .ToList() to your query, to make sure you COPY the list, instead of use the actual reference from within the list. .NET doesn't like when you try to remove stuff from a currently-iterating-collection. This way; you copy the GUIDs and then try to remove them from the main object list.

  12. #42
    lanman92's Avatar Active Member
    Reputation
    50
    Join Date
    Mar 2007
    Posts
    1,033
    Thanks G/R
    0/1
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    Yeah, I looked up the error and fixed it on my own. Of course, that was after I posted in the thread. From the looks of it, I really helped amadmonk out by bumping it though xD On the topic of game state tracking, is there a simple way to tell if you are logged in to the character select screen?

  13. #43
    snigelmannen's Avatar Member
    Reputation
    27
    Join Date
    Jul 2007
    Posts
    318
    Thanks G/R
    0/0
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    Hmm this clears some things up, trying to write a radar thingy for my own use, this helps to understand some things. Thanks Apoc
    " Spy sappin mah sentry! "

  14. #44
    joe7314's Avatar Member
    Reputation
    3
    Join Date
    Dec 2008
    Posts
    15
    Thanks G/R
    0/0
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    Sorry for injecting something useless here. But I felt I just had to say... FREAKING BRILLIANT!!!

Page 3 of 3 FirstFirst 123

Similar Threads

  1. [Source] WPF Wow Object manager
    By !@^^@! in forum WoW Memory Editing
    Replies: 11
    Last Post: 01-26-2010, 04:13 PM
  2. Object Manager
    By Shamun in forum WoW Memory Editing
    Replies: 11
    Last Post: 11-28-2008, 02:06 PM
  3. WoW Object Manager ?
    By discorly in forum WoW ME Questions and Requests
    Replies: 4
    Last Post: 07-28-2007, 06:34 PM
All times are GMT -5. The time now is 05:16 PM. Powered by vBulletin® Version 4.2.3
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved. User Alert System provided by Advanced User Tagging (Pro) - vBulletin Mods & Addons Copyright © 2025 DragonByte Technologies Ltd.
Google Authenticator verification provided by Two-Factor Authentication (Free) - vBulletin Mods & Addons Copyright © 2025 DragonByte Technologies Ltd.
Digital Point modules: Sphinx-based search