[C#] Enigma.D3 menu

User Tag List

Page 10 of 63 FirstFirst ... 6789101112131460 ... LastLast
Results 136 to 150 of 940
  1. #136
    axlrose's Avatar Member
    Reputation
    1
    Join Date
    May 2014
    Posts
    35
    Thanks G/R
    0/0
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    Originally Posted by enigma32 View Post
    Ah, maybe I should test things
    Just asking, :-) can you confirm this??

    [C#] Enigma.D3
  2. #137
    enigma32's Avatar Legendary
    Reputation
    912
    Join Date
    Jan 2013
    Posts
    551
    Thanks G/R
    4/738
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    Originally Posted by axlrose View Post
    Just asking, :-) can you confirm this??
    Size changed, that I can confirm. There are however other "Def" containers (x14 has a container on some groups) with item size 20. Cannot verify content yet.

    EDIT: x08 is SnoGroupId, I guess that was required since they moved most defs to the Global container.
    Last edited by enigma32; 05-27-2014 at 03:03 PM.

  3. #138
    axlrose's Avatar Member
    Reputation
    1
    Join Date
    May 2014
    Posts
    35
    Thanks G/R
    0/0
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    Originally Posted by enigma32 View Post
    Size changed, that I can confirm. There are however other "Def" containers (x14 has a container on some groups) with item size 20. Cannot verify content yet.

    EDIT: x08 is SnoGroupId, I guess that was required since they moved most defs to the Global container.
    Just interested: how do you debug and test all your stuff? I made a base AbstractProcessMemory class in which all existing readBytes() member functions are abstract and from which your ProcessMemory then derives from. I dumped the entire memory with the code you already had in place. I then implemented another FileProcessMemory also derived from your ProcessMemory which uses memory mapped files to work on off-line :-) From this I can make snapshots and test different scenarios. The engine is then created with a new constructor (not Create() but CreateFromFile(string dumpFilename)) All else stayed the same and worked like a charm...
    Last edited by axlrose; 06-02-2014 at 10:06 AM.

  4. #139
    enigma32's Avatar Legendary
    Reputation
    912
    Join Date
    Jan 2013
    Posts
    551
    Thanks G/R
    4/738
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    Originally Posted by axlrose View Post
    Just interested: how do you debug and test all your stuff? I made a base AbstractProcessMemory class in which all existing readBytes() member functions are abstract and from which your ProcessMemory then derives from. I dumped the entire D3 2Gb process memory with the code you already had in place (just added the IMAGE flag to dump the executable memory block for the imagebase offset pointers (the rest is in the heap pages), all protected and unallocated blocks I just initialise with zeros). I then implemented another FileProcessMemory also derived from your ProcessMemory which uses memory mapped files to work on off-line :-) From this I can make snapshots and test different scenarios without even starting the game. The engine is then created with a new constructor (not Create() but CreateFromFile(string dumpFilename)) All else stayed the same and worked like a charm...
    Nice, that's actually the reason I implemented the dump method, to do exactly like that But then I made a super clever GUI instead where I can use: (don't mind the weird IEnumerable code)
    Code:
    var snoGroupIds = (SnoGroupId[])Enum.GetValues(typeof(SnoGroupId));
    foreach (var snoGroupId in snoGroupIds)
    {
        int id = (int)snoGroupId;
        AddView("SNO." + snoGroupId.ToString(), new ReflectionView(() => Engine.Current.SnoGroupsByCode[id]));
        foreach (var pi in typeof(SnoGroup).GetProperties().Where(a => a.PropertyType.IsMemoryObjectType()))
        {
            var property = pi;
            AddView("SNO." + snoGroupId.ToString() + "." + property.Name, new ReflectionView(() => property.GetValue(Engine.Current.SnoGroupsByCode[id])));
            if (typeof(IEnumerable).IsAssignableFrom(property.PropertyType))
            {
                AddView("SNO." + snoGroupId.ToString() + "." + property.Name + ".Dump", new TextView(() =>
                {
                    var value = property.GetValue(Engine.Current.SnoGroupsByCode[id]);
                    var enumerable = (IEnumerable)value;
                    var array = enumerable.Cast<SnoDefinition<MemoryObject>>().ToArray();
                    return CodeGeneratorHelper.GetDump(array);
                }));
            }
        }
    }
    .. to create a lot of different views, typically initialized with a getter that is polled while that view is active and resulting object reflected and printed using special rules. I can do clever things like matching an int for all known SNO IDs and add some extra info about that during the formatting. I also have custom views for containers where I dump content with a button, would hurt to poll hard on those Or a simple text view where I can print whatever, either updated with a button or by polling. This is the storage section for instance (a tree view is generated based on those strings btw):
    Code:
    AddView("ObjectManager.Storage", new ReflectionView(() => Engine.Current.ObjectManager.x798_Storage));
    AddView("ObjectManager.Storage.ACDManager", new ReflectionView(() => Engine.Current.ObjectManager.x798_Storage.x110_ActorCommonDataManager));
    AddView("ObjectManager.Storage.ACDManager.Local", new ReflectionView(() => ActorCommonDataHelper.GetLocalAcd()));
    AddView("ObjectManager.Storage.ACDManager.Dump", new TextView(() => CodeGeneratorHelper.GetDump(ActorCommonDataHelper.Enumerate().ToArray()), true));
    AddView("ObjectManager.Storage.ACDManager.Dump.Unfiltered", new ContainerDumpView<ActorCommonData>(() => Engine.Current.ObjectManager.x798_Storage.x110_ActorCommonDataManager.x00_ActorCommonData));
    AddView("ObjectManager.Storage.ACDManager.Breakables", new TextView(() => CodeGeneratorHelper.GetDump(ActorCommonDataHelper.Enumerate(a => a.x180_GizmoType == GizmoType.BreakableChest).ToArray())));
    AddView("ObjectManager.Storage.ACDManager.Items", new TextView(() => CodeGeneratorHelper.GetDump(ActorCommonDataHelper.EnumerateItems().ToArray())));
    AddView("ObjectManager.Storage.ACDManager.GroundItems", new TextView(() => CodeGeneratorHelper.GetDump(ActorCommonDataHelper.EnumerateGroundItems().ToArray())));
    AddView("ObjectManager.Storage.ACDManager.InventoryItems", new TextView(() => CodeGeneratorHelper.GetDump(ActorCommonDataHelper.EnumerateInventoryItems().ToArray())));
    AddView("ObjectManager.Storage.ACDManager.EquippedItems", new TextView(() => CodeGeneratorHelper.GetDump(ActorCommonDataHelper.EnumerateEquippedItems().ToArray())));
    AddView("ObjectManager.Storage.ACDManager.StashItems", new TextView(() => CodeGeneratorHelper.GetDump(ActorCommonDataHelper.EnumerateStashItems().ToArray())));
    AddView("ObjectManager.Storage.ACDManager.Chests", new TextView(() => CodeGeneratorHelper.GetDump(ActorCommonDataHelper.Enumerate(a => a.x180_GizmoType == GizmoType.Chest).ToArray())));
    AddView("ObjectManager.Storage.SceneAllocators", new ReflectionView(() => Engine.Current.ObjectManager.x798_Storage.x0E8_Ptr_116Bytes_Scenes));
    AddView("ObjectManager.Storage.FastAttrib", new ReflectionView(() => Engine.Current.ObjectManager.x798_Storage.x104_FastAttrib));
    AddView("ObjectManager.Storage.FastAttrib.Groups", new ReflectionView(() => Engine.Current.ObjectManager.x798_Storage.x104_FastAttrib.x54_Groups));
    AddView("ObjectManager.Storage.FastAttrib.Groups.Dump", new ContainerDumpView<FastAttribGroup>(() => Engine.Current.ObjectManager.x798_Storage.x104_FastAttrib.x54_Groups));
    AddView("ObjectManager.Storage.FastAttrib.Groups.Local", new ReflectionView(() => Engine.Current.ObjectManager.x798_Storage.x104_FastAttrib.x54_Groups[(short)ActorCommonDataHelper.GetLocalAcd().x120_FastAttribGroupId]));
    AddView("ObjectManager.Storage.FastAttrib.Groups.Local.x00C_PtrMap", new ReflectionView(() => Engine.Current.ObjectManager.x798_Storage.x104_FastAttrib.x54_Groups[(short)ActorCommonDataHelper.GetLocalAcd().x120_FastAttribGroupId].x00C_PtrMap));
    AddView("ObjectManager.Storage.FastAttrib.Groups.Local.x010_Map", new ReflectionView(() => Engine.Current.ObjectManager.x798_Storage.x104_FastAttrib.x54_Groups[(short)ActorCommonDataHelper.GetLocalAcd().x120_FastAttribGroupId].x010_Map));
    Makes it super easy to try new things For new structures I just have to find a lead using IDA first and have a known struct size to work with.

    Since you'll be wondering, no, will not make this public anytime soon. I'm doing a lot of crazy things in that program that I don't feel like sharing. I might try to pull the core out into a library, and who knows, maybe that is pain free and it will be ready within a few days. Keep your fingers crossed XD
    Last edited by enigma32; 05-27-2014 at 03:42 PM.

  5. #140
    Sutur's Avatar Private
    Reputation
    1
    Join Date
    May 2014
    Posts
    9
    Thanks G/R
    0/0
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    Originally Posted by enigma32 View Post
    Size changed, that I can confirm. There are however other "Def" containers (x14 has a container on some groups) with item size 20. Cannot verify content yet.

    EDIT: x08 is SnoGroupId, I guess that was required since they moved most defs to the Global container.
    Hi Enigma,

    I really tried to figure out how this is working. So I guess that the SNOReader from the FK got through the SNODefinitions (very old 0x10 size) and stored the IDs and the target addresses.
    Then he loaded all the data of each item stored under the target address

    ReadItemData(snoReader.GetAddressFromID(19750)); //Items_Armor
    ReadItemData(snoReader.GetAddressFromID(19753)); //Items_Other
    ReadItemData(snoReader.GetAddressFromID(19754)); //Items_Weapon
    ReadItemData(snoReader.GetAddressFromID(1189)); //Items_Legendary_Other
    ReadItemData(snoReader.GetAddressFromID(19752)); //Items_Legendary_Weapons
    ReadItemData(snoReader.GetAddressFromID(170627)); //Items_Legendary


    to match the GameBalanceId from the actor to identify the ritght item. And finally he reads out the Item Type (public DT_GBID x10C_ItemTypesGameBalanceId { get { return Field<DT_GBID>(0x10C); } }) on that item .... I am right?

    If this is true I am asking myself what are the current ids for Items_Armor, Items_Weapon and so on. I cant see a matching value in the contents of the SnoDefinitions atm.

  6. #141
    Ferroks's Avatar Member
    Reputation
    8
    Join Date
    Dec 2012
    Posts
    20
    Thanks G/R
    0/0
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    Hi enigma32 ! Can you make a screenshot of his creation? Saliva that all splattered monitor)

  7. #142
    axlrose's Avatar Member
    Reputation
    1
    Join Date
    May 2014
    Posts
    35
    Thanks G/R
    0/0
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    Originally Posted by enigma32 View Post
    But then I made a super clever GUI instead where I can use
    Hmmm sounds great! Thanks for the ideas
    Last edited by axlrose; 06-02-2014 at 10:05 AM.

  8. #143
    axlrose's Avatar Member
    Reputation
    1
    Join Date
    May 2014
    Posts
    35
    Thanks G/R
    0/0
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    Hi Enigma,

    the global container:

    public Container<SnoDefinition<MemoryObject>> GlobalDefinitionContainer { get { return Dereference<Container<SnoDefinition<MemoryObject>>>(0x01CEF94C); } }

    @NoCopyPaste: This is the container I was talking about. :-)
    Last edited by axlrose; 06-02-2014 at 10:04 AM.

  9. #144
    mrnoodle's Avatar Member
    Reputation
    1
    Join Date
    May 2014
    Posts
    7
    Thanks G/R
    0/0
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    Originally Posted by enigma32 View Post
    Just a sneak peak, not having time to finish it before the weekend at least. Don't like the performance I'm getting (mainly due to WPF) and there is a bit of re-factoring to do as well. But it works nonetheless
    Attachment 17806
    Engima did you ever go any farther with this project?

  10. #145
    Dolphe's Avatar Contributor
    Reputation
    97
    Join Date
    Oct 2012
    Posts
    614
    Thanks G/R
    0/26
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    Originally Posted by Sutur View Post
    Hi Enigma,

    I really tried to figure out how this is working. So I guess that the SNOReader from the FK got through the SNODefinitions (very old 0x10 size) and stored the IDs and the target addresses.
    Then he loaded all the data of each item stored under the target address

    ReadItemData(snoReader.GetAddressFromID(19750)); //Items_Armor
    ReadItemData(snoReader.GetAddressFromID(19753)); //Items_Other
    ReadItemData(snoReader.GetAddressFromID(19754)); //Items_Weapon
    ReadItemData(snoReader.GetAddressFromID(1189)); //Items_Legendary_Other
    ReadItemData(snoReader.GetAddressFromID(19752)); //Items_Legendary_Weapons
    ReadItemData(snoReader.GetAddressFromID(170627)); //Items_Legendary


    to match the GameBalanceId from the actor to identify the ritght item. And finally he reads out the Item Type (public DT_GBID x10C_ItemTypesGameBalanceId { get { return Field<DT_GBID>(0x10C); } }) on that item .... I am right?

    If this is true I am asking myself what are the current ids for Items_Armor, Items_Weapon and so on. I cant see a matching value in the contents of the SnoDefinitions atm.
    The id's haven't changed. The ID is from the Header.x000 e.g( Items_Armor.x000). Can send you the newest SnoReader (from FK), PM me if interested.

  11. #146
    enigma32's Avatar Legendary
    Reputation
    912
    Join Date
    Jan 2013
    Posts
    551
    Thanks G/R
    4/738
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    Originally Posted by mrnoodle View Post
    Engima did you ever go any farther with this project?
    I didn't like the structure of what I came up with, so it's dead for now. Going to need an event based ACD tracker before I continue with it.

  12. #147
    yondervaluabletuna's Avatar Private
    Reputation
    1
    Join Date
    Apr 2014
    Posts
    7
    Thanks G/R
    0/0
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    I haven't had much time to play recently, but I just wanted to let you know that I've been infinite-loop-free since making this change to ProcessMemory.cs

    Code:
    		public byte[] ReadBytes(int address, byte[] buffer, int offset, int count)
    		{
    			if (address < 0)
    				throw new ArgumentOutOfRangeException("address");
    			if (buffer == null)
    				throw new ArgumentNullException("buffer");
    			if (offset < 0)
    				throw new ArgumentOutOfRangeException("offset");
    			if (count < 0)
    				throw new ArgumentOutOfRangeException("count");
    			if (offset + count > buffer.Length)
    				throw new ArgumentOutOfRangeException();
    
    			var handle = GCHandle.Alloc(buffer, GCHandleType.Pinned);
    			try
    			{
    				int numberOfBytesRead;
    
    				NativeCalls++;
    				int bytesToRead = count != 0 ? count : (buffer.Length - offset);
    				if (Win32.ReadProcessMemory(
    					_process.Handle,
    					address,
    					handle.AddrOfPinnedObject() + offset,
    					bytesToRead,
    					out numberOfBytesRead))
    				{
    					ValidateNumberOfBytesRead(address, numberOfBytesRead, bytesToRead);
    					return buffer;
    				}
    				else
    				{
    					throw new Win32Exception();
    				}
    			}
    			finally
    			{
    				handle.Free();
    			}
    		}
    Just throwing an exception instead of returning partial/no data.

  13. #148
    NoCopyPaste's Avatar Member
    Reputation
    1
    Join Date
    Apr 2014
    Posts
    19
    Thanks G/R
    0/0
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    Hi axlrose,
    thank you very much again
    I tried, finding the NavCells from the Container, by the following Code, but it seems to be wrong. All Min and Max vectors have the same value
    Code:
     Engine.Create();
                Container<SnoDefinition<MemoryObject>> gc = Engine.Current.GlobalDefinitionContainer;
                Console.WriteLine("Size: " + gc.Count());
                foreach (SnoDefinition<MemoryObject> sd in gc)
                {
                    if (sd.x08_SnoGroupId == SnoGroupId.Scene)
                    {
                        Scene s = sd.x10_SnoItemAs<Scene>();
                        NavZoneDefinition nz = s.x180_navZoneDef;
                        NavCell[] navcells = nz.x0C_NavCells;
                        if (navcells != null)
                        {
                            Console.WriteLine(nz.x0C_NavCells.Count());
                            foreach (NavCell nc in nz.x0C_NavCells)
                            {
                                Console.WriteLine("from: " + nc.x00_min.ToString() + " to: " + nc.x0C_max.ToString());
                            }
                            //Console.WriteLine(sd + " ID: " + sd.x08_SnoGroupId + " size: " + sd.x0C_Size + "; " + sd.x10_SnoItem);
                        }
                    }
                }
    Could anyone please tell me, where my mistake is? I used the files from the auto-generated Folder for NavCell etc.

    Thanks in advance

    NoCopyPaste

  14. #149
    enigma32's Avatar Legendary
    Reputation
    912
    Join Date
    Jan 2013
    Posts
    551
    Thanks G/R
    4/738
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    Originally Posted by NoCopyPaste View Post
    Hi axlrose,
    thank you very much again
    I tried, finding the NavCells from the Container, by the following Code, but it seems to be wrong. All Min and Max vectors have the same value
    Code:
     Engine.Create();
                Container<SnoDefinition<MemoryObject>> gc = Engine.Current.GlobalDefinitionContainer;
                Console.WriteLine("Size: " + gc.Count());
                foreach (SnoDefinition<MemoryObject> sd in gc)
                {
                    if (sd.x08_SnoGroupId == SnoGroupId.Scene)
                    {
                        Scene s = sd.x10_SnoItemAs<Scene>();
                        NavZoneDefinition nz = s.x180_navZoneDef;
                        NavCell[] navcells = nz.x0C_NavCells;
                        if (navcells != null)
                        {
                            Console.WriteLine(nz.x0C_NavCells.Count());
                            foreach (NavCell nc in nz.x0C_NavCells)
                            {
                                Console.WriteLine("from: " + nc.x00_min.ToString() + " to: " + nc.x0C_max.ToString());
                            }
                            //Console.WriteLine(sd + " ID: " + sd.x08_SnoGroupId + " size: " + sd.x0C_Size + "; " + sd.x10_SnoItem);
                        }
                    }
                }
    Could anyone please tell me, where my mistake is? I used the files from the auto-generated Folder for NavCell etc.

    Thanks in advance

    NoCopyPaste
    Bug in my SnoDefinition.cs, using offset 0x0C instead of 0x10 on x10_SnoItem. Maybe that's the same problem you have.

    EDIT: The auto-generated files aren't quite accurate when it comes to pointers and arrays. I recommend you look at DarthTon's framework until I've figured it out.
    Last edited by enigma32; 06-03-2014 at 02:49 PM.

  15. #150
    NoCopyPaste's Avatar Member
    Reputation
    1
    Join Date
    Apr 2014
    Posts
    19
    Thanks G/R
    0/0
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    Thanks for your help
    but its still not working...
    i tried to find a solution in Darthtons Framework, but his NavCell stuff seems to be outdated too(the map in his simpleClient doesnt show navcells...)
    has anyone managed to get the NavCells yet and would help me pls?

    NoCopyPaste

Page 10 of 63 FirstFirst ... 6789101112131460 ... LastLast

Similar Threads

  1. [Hack] Enigma TriggerBot - AutoIT
    By Zolyrica in forum Overwatch Exploits|Hacks
    Replies: 9
    Last Post: 09-12-2016, 02:37 PM
  2. [Release] [C#] 1.0.8.16603 Enigma.D3
    By enigma32 in forum Diablo 3 Memory Editing
    Replies: 33
    Last Post: 05-16-2015, 01:40 PM
  3. Enigma's Smartcast Manager
    By da_bizkit in forum League of Legends
    Replies: 3
    Last Post: 10-22-2012, 02:11 PM
  4. request Blue suede boots -> enigma boots
    By Geico in forum WoW ME Questions and Requests
    Replies: 0
    Last Post: 12-27-2007, 05:40 AM
All times are GMT -5. The time now is 10:21 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