Classic TBC => Build 44171 menu

User Tag List

Results 1 to 14 of 14
  1. #1
    Razzue's Avatar Contributor Crazy Cat Man

    CoreCoins Purchaser Authenticator enabled
    Reputation
    259
    Join Date
    Jun 2017
    Posts
    477
    Thanks G/R
    144/189
    Trade Feedback
    2 (100%)
    Mentioned
    9 Post(s)
    Tagged
    0 Thread(s)

    Classic TBC => Build 44171

    I don't even know why I keep posting these

    Code:
    public class Offsets_44171{
        
        public class Guids
        {
            
            public const int Mouseover_Guid = 0x2C53C10;
            
            public const int Pet_Guid = 0x2C92000;
            
            public const int Player_Guid = 0x2BE77C0;
            
            public const int Target_Guid = 0x2DC74C0;
            
            public const int Last_Target_Guid = 0x2DC74D0;
            
            public const int Last_Enemy_Guid = 0x2DC74E0;
            
            public const int Last_Friendly_Guid = 0x2DC74F0;
            
            public const int Focus_Guid = 0x2DC7500;
            
            public const int DialogWindowOwner_Guid = 0x2DC7510;
            
            public const int Bag_Guid = 0x2C91CE0;
        }
        
        public class Global_Data
        {
            
            public const int In_Game_Status = 0x2C53BBC;
            
            public const int Player_Name = 0x2BE77D8;
            
            public const int Corpse_Position = 0x2AA95F0;
            
            public const int Last_Message = 0x2C529E0;
            
            public const int Loot_Window = 0x2C92AC8;
        }
        
        public class Quests
        {
            
            public const int Base = 0x2CC8600;
            
            public const int NumQuests = 0x2CC8440;
            
            public const int CurrentQuest = 0x2CB8E24;
            
            public const int QuestTitle = 0x2CC3F70;
            
            public const int GossipQuests = 0x2C896B8;
            
            public const int NumQuestChoices = 0x2CC8420;
            
            public const int QuestReward = 0x2CC8428;
        }
        
        public class Auto_Loot
        {
            
            public const int Base = 0x2C537C8;
            
            public const int Offset = 0x5C;
        }
        
        public class Click_To_Move
        {
            
            public const int Base = 0x2C53738;
            
            public const int Offset = 0x5C;
        }
        
        public class Chat
        {
            
            public const int Open = 0x2FD5E94;
            
            public const int Start = 0x2C54290;
            
            public const int Offset = 0xCB8;
            
            public const int Message = 0xE6;
        }
        
        public class Key_Bindings
        {
            
            public const int Base = 0x2BE6B38;
        }
        
        public class Add_On
        {
            
            public const int Count = 0x2CD9418;
            
            public const int List = 0x2CD9960;
        }
        
        public class Spellbooks
        {
            
            public const int Count = 0x2C871C0;
            
            public const int Base = 0x2C871C8;
            
            public const int PetBase = 0x2C871F0;
            
            public const int PetCount = 0x2C871E8;
        }
        
        public class Object_Manager
        {
            
            public const int Zone_ID = 0x2C535E8;
            
            public const int Names = 0x2ACFD10;
            
            public const int Base = 0x2C528E0;
            
            public const int Cooldown = 0x2BEE690;
        }
        
        public class Battlegrounds
        {
            
            public const int Finished = 0x2C8EEBC;
            
            public const int Winner = 0x2C8EEC0;
            
            public const int Info = 0x2AB3508;
        }
        
        public class Camera
        {
            
            public const int Base = 0x3023178;
            
            public const int Offset = 0x38E0;
        }
        
        public class Addons
        {
            public const int AddOnsLoaded = 0x2CD9448;
        }
    }
    Fields haven't changed, not going to even bother posting them unless they update. Have fun, go forth and paste to your p2c
    "May all your bacon burn."

    These ads disappear when you log in.

  2. Thanks 0xd5d, moisteroyster (2 members gave Thanks to Razzue for this useful post)
  3. #2
    hacker5510's Avatar Member
    Reputation
    2
    Join Date
    Sep 2019
    Posts
    11
    Thanks G/R
    5/1
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    Love life,Love R!

  4. #3
    ChrisIsMe's Avatar Contributor
    Reputation
    157
    Join Date
    Apr 2017
    Posts
    206
    Thanks G/R
    65/93
    Trade Feedback
    0 (0%)
    Mentioned
    2 Post(s)
    Tagged
    0 Thread(s)
    Originally Posted by hacker5510 View Post
    Love life,Love R!
    What does that mean? Do you like old harry putin dick up your ******* or are you just shit posting?
    no war

  5. #4
    hacker5510's Avatar Member
    Reputation
    2
    Join Date
    Sep 2019
    Posts
    11
    Thanks G/R
    5/1
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    Originally Posted by ChrisIsMe View Post
    What does that mean? Do you like old harry putin dick up your ******* or are you just shit posting?
    Means Thanks to R,Thanks for share。


    I once thought you were as good at sharing as razzue, because razzue's post mentioned that he wanted to thank you. But I didn't expect your quality to be so poor.

  6. #5
    0xd5d's Avatar Member
    Reputation
    4
    Join Date
    Mar 2021
    Posts
    20
    Thanks G/R
    21/3
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    I don't even know why I keep posting these
    This is useful, as the offset dumper you've shared sometimes doesn't return exactly what you provide here.

    Thanks for sharing!
    Last edited by 0xd5d; 06-17-2022 at 02:39 AM.

  7. #6
    Razzue's Avatar Contributor Crazy Cat Man

    CoreCoins Purchaser Authenticator enabled
    Reputation
    259
    Join Date
    Jun 2017
    Posts
    477
    Thanks G/R
    144/189
    Trade Feedback
    2 (100%)
    Mentioned
    9 Post(s)
    Tagged
    0 Thread(s)
    Originally Posted by 0xd5d View Post
    This is useful, as the offset dumper you've shared sometimes doesn't return exactly what you provide here.

    Thanks for sharing!
    Patterns just need to be updated, but i'm too lazy to push to github so :shrugs:
    "May all your bacon burn."

  8. #7
    paly's Avatar Member Authenticator enabled
    Reputation
    1
    Join Date
    Apr 2010
    Posts
    9
    Thanks G/R
    1/0
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    Hi ! I have a problem reading the object type. At first, I don't have a correct offset value for the objectType constant and I don't know how to find it by myself. So I tried some for loops to find a matchable value, but found nothing, only false leads.
    So I think that I'm trying to read the value in an incorrect way. As I didn't found anything about this (or outdated posts), I'm asking there il it's possible to have a little helping hand.

    Code:
            public void Update()
            {
                IntPtr CurrentManagerAddress = memoryReader.ReadIntPtr(IntPtr.Add(memoryReader.BaseAddress, Object_Manager.Base));  //OK
                int NbObjects = memoryReader.ReadInt(CurrentManagerAddress);  //Always 1024
                IntPtr ArrayAddr = memoryReader.ReadIntPtr(IntPtr.Add(CurrentManagerAddress, ManagerArray));  //OK ManagerArray = 0x08;
                for (int i = 0; i < NbObjects; i++)
                {
                    IntPtr ObjPtr = memoryReader.ReadIntPtr(IntPtr.Add(ArrayAddr, i * ManagerArray));//OK 
                    while (ObjPtr != IntPtr.Zero)
                    {
                        Int128 guid = memoryReader.ReadInt128(ObjPtr + ObjGuid);//ok ObjGuid = 0x08;
    
    
                        // this line doesn't work
                        ObjectType type = (ObjectType)memoryReader.ReadByte(ObjPtr + objectType);//NOT OK    objectType = 0x??;
    
    
                        ObjPtr = memoryReader.ReadIntPtr(ObjPtr);
                    }
                }
            }

    Thanks in advance

  9. #8
    Razzue's Avatar Contributor Crazy Cat Man

    CoreCoins Purchaser Authenticator enabled
    Reputation
    259
    Join Date
    Jun 2017
    Posts
    477
    Thanks G/R
    144/189
    Trade Feedback
    2 (100%)
    Mentioned
    9 Post(s)
    Tagged
    0 Thread(s)
    Originally Posted by paly View Post
    Hi ! I have a problem reading the object type. At first, I don't have a correct offset value for the objectType constant and I don't know how to find it by myself. So I tried some for loops to find a matchable value, but found nothing, only false leads.
    So I think that I'm trying to read the value in an incorrect way. As I didn't found anything about this (or outdated posts), I'm asking there il it's possible to have a little helping hand.
    So close... yet so far.

    Code:
    while (ptr != IntPtr.Zero)
    {
        var entry = Mem.Read<IntPtr>(ptr + 0x18);
        var guid = Mem.Read<GUID>(ptr + 0x8);
        if (!guid.IsEmpty())
        {
            if (Entries.ContainsKey(guid))
                Entries[guid].Updated = true;
            else Entries.Add(guid, new ObjectEntry { Base = entry, Updated = true });
        }
    
    
        ptr = Mem.Read<IntPtr>(ptr + 0x0);
    }
    Code:
    internal  oType Type => (oType )Mem.Read<byte>(Base + 0x10);
    internal GUID Guid => Mem.Read<GUID>(Base + 0x18);
    "May all your bacon burn."

  10. #9
    ChrisIsMe's Avatar Contributor
    Reputation
    157
    Join Date
    Apr 2017
    Posts
    206
    Thanks G/R
    65/93
    Trade Feedback
    0 (0%)
    Mentioned
    2 Post(s)
    Tagged
    0 Thread(s)
    Originally Posted by paly View Post
    Hi ! I have a problem reading the object type. At first, I don't have a correct offset value for the objectType constant and I don't know how to find it by myself. So I tried some for loops to find a matchable value, but found nothing, only false leads.
    So I think that I'm trying to read the value in an incorrect way. As I didn't found anything about this (or outdated posts), I'm asking there il it's possible to have a little helping hand.

    Code:
            public void Update()
            {
                IntPtr CurrentManagerAddress = memoryReader.ReadIntPtr(IntPtr.Add(memoryReader.BaseAddress, Object_Manager.Base));  //OK
                int NbObjects = memoryReader.ReadInt(CurrentManagerAddress);  //Always 1024
                IntPtr ArrayAddr = memoryReader.ReadIntPtr(IntPtr.Add(CurrentManagerAddress, ManagerArray));  //OK ManagerArray = 0x08;
                for (int i = 0; i < NbObjects; i++)
                {
                    IntPtr ObjPtr = memoryReader.ReadIntPtr(IntPtr.Add(ArrayAddr, i * ManagerArray));//OK 
                    while (ObjPtr != IntPtr.Zero)
                    {
                        Int128 guid = memoryReader.ReadInt128(ObjPtr + ObjGuid);//ok ObjGuid = 0x08;
    
    
                        // this line doesn't work
                        ObjectType type = (ObjectType)memoryReader.ReadByte(ObjPtr + objectType);//NOT OK    objectType = 0x??;
    
    
                        ObjPtr = memoryReader.ReadIntPtr(ObjPtr);
                    }
                }
            }

    Thanks in advance

    You do not get all the objects in the ObjectManager when using this list, you'll periodically see various objects pop in and out of existence and things like that.

    IMO it's better to use Exclusively or Inclusively the Visible Objects list, however literally all of the code I've seen for the modern version of this, is written wrong and results in 1 invalid object that typically predates the local player pointer.

    Code:
        std::vector<WoWGameObject*> objects;
        uintptr_t* first = *(uintptr_t**)((uint64_t)this + 288);
        if ((uintptr_t*)((uint64_t)this + 288) != first) {
            do {
                uintptr_t* obj = first;
                first = (*(uintptr_t**)(first));
                WoWGameObject* gameobj = (WoWGameObject*)((uintptr_t)obj - OBJECT_OFFSET);
    
                if (gameobj) {
                    objects.push_back(gameobj);
                }
            } while ((uintptr_t*)((uint64_t)this + 288) != first);
        }
    
        return objects;
    Everyone seems to mess up and not include the if statement that the game has, unsure if it's real use, but it's probably some intermediary sanity check. And also they'll compare predefined first and next pointers, instead of reading the 'first object' pointer ( 288 ) at the while loop jump, like the game does.

    This will not expose that (for all intensive purposes I consider it a fake object or a honey pot or something like that, since it seems to trip almost everyone up) fake object to your object list. @Razzue has previously documented it as 'nil: 255' or whatever in his object type list, that's invalid IMO. The type bit on this 'fake object' can change randomly, it's just reading random memory (which more often than not can be a full byte, but I've seen it be 8, and this is VERY BAD if you use VMT methods)

    Have fun.

    TBC | Classic

    int OBJECT_OFFSET = 0x68;

    Retail

    int OBJECT_OFFSET = 0x28;
    Last edited by ChrisIsMe; 06-19-2022 at 09:21 AM.
    no war

  11. #10
    Razzue's Avatar Contributor Crazy Cat Man

    CoreCoins Purchaser Authenticator enabled
    Reputation
    259
    Join Date
    Jun 2017
    Posts
    477
    Thanks G/R
    144/189
    Trade Feedback
    2 (100%)
    Mentioned
    9 Post(s)
    Tagged
    0 Thread(s)
    Originally Posted by ChrisIsMe View Post
    This will not expose that (for all intensive purposes I consider it a fake object or a honey pot or something like that, since it seems to trip almost everyone up) fake object to your object list. @Razzue has previously documented it as 'nil: 255' or whatever in his object type list, that's invalid IMO.
    Code:
    public enum eType
    {
        Object            = 0,
        Item              = 1,
        Container         = 2,
        EmpAzeriteItem    = 3,
        AzeriteItem       = 4,
        Unit              = 5,
        Player            = 6,
        LocalPlayer       = 7,
        GameObject        = 8,
        DynamicObject     = 9,
        Corpse            = 10,
        AreaTrigger       = 11,
        SceneObject       = 12,
        Conversation      = 13,
        Nil               = 255 // do -1 if SByte
    }
    So in here I honestly just defined "nil" as a backup incase I fucked up somewhere. I peeked at a few months of logs and have never actually seen it get used. :shrug:
    Using the below I don't think I've ever actually encountered a "fake" object kicking around the array :though.. Though yes, I can likely read this in better ways.
    (Keeping in mind more does happen outside this loop such as base address checks, and clearing entries that haven't been updated in a while)
    Code:
    var count = _entries.Count;
    var curCount = Memory.Read<int>(managerBase + 0x10);
    var maxCount = Memory.Read<int>(managerBase + 0x0);
    
    
    for (var i = 0; i < maxCount; i++)
    {
        var ptr = Memory.Read<IntPtr>(managerBase, new[] { 0x8, (i * 0x8) });
        if (ptr == IntPtr.Zero) continue;
    
    
        while (IntPtr.Zero != ptr)
        {
            var entryPtr = Memory.Read<IntPtr>(ptr + 0x18);
            var guid = Memory.Read<GUID>(entryPtr + 0x18);
            if (guid.IsEmpty() || IntPtr.Zero == entryPtr ) continue;
    
    
            if (_objects.ContainsKey(guid))
                _objects[guid].Updated = true;
            else _objects.Add(guid, new Entry(entryPtr , guid));
    
    
            ptr = Memory.Read<IntPtr>(ptr + 0x0);
        }
    }
    "May all your bacon burn."

  12. #11
    ChrisIsMe's Avatar Contributor
    Reputation
    157
    Join Date
    Apr 2017
    Posts
    206
    Thanks G/R
    65/93
    Trade Feedback
    0 (0%)
    Mentioned
    2 Post(s)
    Tagged
    0 Thread(s)
    Originally Posted by Razzue View Post
    Code:
    public enum eType
    {
        Object            = 0,
        Item              = 1,
        Container         = 2,
        EmpAzeriteItem    = 3,
        AzeriteItem       = 4,
        Unit              = 5,
        Player            = 6,
        LocalPlayer       = 7,
        GameObject        = 8,
        DynamicObject     = 9,
        Corpse            = 10,
        AreaTrigger       = 11,
        SceneObject       = 12,
        Conversation      = 13,
        Nil               = 255 // do -1 if SByte
    }
    So in here I honestly just defined "nil" as a backup incase I fucked up somewhere. I peeked at a few months of logs and have never actually seen it get used. :shrug:
    Using the below I don't think I've ever actually encountered a "fake" object kicking around the array :though.. Though yes, I can likely read this in better ways.
    (Keeping in mind more does happen outside this loop such as base address checks, and clearing entries that haven't been updated in a while)
    Code:
    var count = _entries.Count;
    var curCount = Memory.Read<int>(managerBase + 0x10);
    var maxCount = Memory.Read<int>(managerBase + 0x0);
    
    
    for (var i = 0; i < maxCount; i++)
    {
        var ptr = Memory.Read<IntPtr>(managerBase, new[] { 0x8, (i * 0x8) });
        if (ptr == IntPtr.Zero) continue;
    
    
        while (IntPtr.Zero != ptr)
        {
            var entryPtr = Memory.Read<IntPtr>(ptr + 0x18);
            var guid = Memory.Read<GUID>(entryPtr + 0x18);
            if (guid.IsEmpty() || IntPtr.Zero == entryPtr ) continue;
    
    
            if (_objects.ContainsKey(guid))
                _objects[guid].Updated = true;
            else _objects.Add(guid, new Entry(entryPtr , guid));
    
    
            ptr = Memory.Read<IntPtr>(ptr + 0x0);
        }
    }
    This is code is not for the visible object manager, this list is mostly fine, but I've had issues with objects popping in and out of existence for a few moments periodically, it's annoying. It seems a bit more complicated to iterate, but it does not have the 'issue' I'm mentioning, so there's no wonder you've not experienced it. It's not even really an issue unless you write the code wrong (for the visible list), as in every copy pasta example I've seen on ownedcore.
    no war

  13. #12
    Archos's Avatar Site Donator
    Authenticator enabled
    Reputation
    1
    Join Date
    Mar 2007
    Posts
    20
    Thanks G/R
    0/0
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    Originally Posted by Razzue View Post
    Patterns just need to be updated, but i'm too lazy to push to github so :shrugs:
    It would make my day if you blessed your github repo with a push!

  14. #13
    Razzue's Avatar Contributor Crazy Cat Man

    CoreCoins Purchaser Authenticator enabled
    Reputation
    259
    Join Date
    Jun 2017
    Posts
    477
    Thanks G/R
    144/189
    Trade Feedback
    2 (100%)
    Mentioned
    9 Post(s)
    Tagged
    0 Thread(s)
    Originally Posted by Archos View Post
    It would make my day if you blessed your github repo with a push!
    It would make my day if I won the lottery :shrug:
    "May all your bacon burn."

  15. #14
    legbean's Avatar Member
    Reputation
    1
    Join Date
    Jun 2022
    Posts
    1
    Thanks G/R
    0/0
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    How are you using Key_Bindings? I can't find the actual key it is bound to anymore in memory.

Similar Threads

  1. Classic TBC => Build 43861
    By Razzue in forum WoW Memory Editing
    Replies: 16
    Last Post: 06-16-2022, 07:33 AM
  2. Classic TBC => Build 42917
    By Razzue in forum WoW Memory Editing
    Replies: 56
    Last Post: 06-09-2022, 10:42 AM
  3. Classic TBC => Build 42940
    By Razzue in forum WoW Memory Editing
    Replies: 22
    Last Post: 04-29-2022, 10:22 AM
  4. [Trading] WTT 1 cata key = 1 wotlk and 1 cata key = classic + tbc
    By Jiniys in forum World of Warcraft Buy Sell Trade
    Replies: 0
    Last Post: 03-28-2011, 02:31 PM
  5. [Buying] Classic,TBC,WotLK key and Gamecard EU
    By rosty in forum Members Only Accounts And CD Keys Buy Sell
    Replies: 1
    Last Post: 09-29-2010, 10:12 AM
All times are GMT -5. The time now is 11:08 PM. Powered by vBulletin® Version 4.2.3
Copyright © 2022 vBulletin Solutions, Inc. All rights reserved. User Alert System provided by Advanced User Tagging (Pro) - vBulletin Mods & Addons Copyright © 2022 DragonByte Technologies Ltd.
Digital Point modules: Sphinx-based search