Updated for 2.2.0.30894, but don't expect it to work flawlessly. Only some UI controls updated and not everything SNO related has been updated (see obsolete attributes in Engine for specifics).
As always, please report any issues.
The offsets in Engine that were marked obsolete. Below are the updated ones for 2.2.30849
Hope that helps.Code:public Ptr<SnoFiles> PtrSnoFiles { get { return ReadPointer<SnoFiles>(0x01D54F08); } } public FixedArray<int> SnoIdToEntityId { get { return Read<FixedArray<int>>(0x01D65234); } } public SnoGroupSearch SnoGroupSearch { get { return ReadPointer<SnoGroupSearch>(0x01DA36E4).Dereference(); } } public Ptr<SnoFilesAsync> SnoFilesAsync { get { return ReadPointer<SnoFilesAsync>(0x01DA36E8); } } public MessageDescriptor MessageDescriptor { get { return ReadPointer<MessageDescriptor>(0x01E059E4).Dereference(); } }
@enigma32 Thank you for updating your source.
I ran into an issue with VS2013 that will not allow the project to be built.
Error 1 Duplicate method declaration C:\Users\User1\Documents\Visual Studio 2013\Projects\en2.2\Enigma.Memory\Helpers\StructHelper.il 4 Enigma.Memory
Error 2 The command ""C:\Windows\Microsoft.NET\Framework\v4.0.30319\ilasm.exe" /nologo /quiet /output:"C:\Users\User1\Documents\Visual Studio 2013\Projects\en2.2\Enigma.Memory\obj\Debug\Enigma.Memory.dll" /alignment=512 /dll /debug "C:\Users\User1\Documents\Visual Studio 2013\Projects\en2.2\Enigma.Memory\obj\Debug\Enigma.Memory.il" "C:\Users\User1\Documents\Visual Studio 2013\Projects\en2.2\Enigma.Memory\Helpers\StructHelper.il"" exited with code 1. C:\Users\User1\Documents\Visual Studio 2013\Projects\en2.2\Enigma.Memory\Enigma.Memory.csproj 165 5 Enigma.Memory
Error 3 Metadata file 'C:\Users\User1\Documents\Visual Studio 2013\Projects\en2.2\Enigma.Memory\bin\Debug\Enigma.Memory.dll' could not be found C:\Users\User1\Documents\Visual Studio 2013\Projects\en2.2\Enigma.D3\CSC Enigma.D3
Error 4 Metadata file 'C:\Users\User1\Documents\Visual Studio 2013\Projects\en2.2\Enigma.D3\bin\x86\Debug\Enigma.D3.dll' could not be found C:\Users\User1\Documents\Visual Studio 2013\Projects\en2.2\Enigma.D3.MapHack\CSC Enigma.D3.MapHack
Error 5 Metadata file 'C:\Users\User1\Documents\Visual Studio 2013\Projects\en2.2\Enigma.Memory\bin\Debug\Enigma.Memory.dll' could not be found C:\Users\User1\Documents\Visual Studio 2013\Projects\en2.2\Enigma.D3.MapHack\CSC Enigma.D3.MapHack
I have added the SNO project to the solution. and then tried to build all.. tried running studio as administrator and built the solution with the same error.. what do you think is going on?
Last edited by CKY; 04-16-2015 at 08:40 PM.
Cky try cleaning the build and removing any old data this includes and temp folders. In your case focus on the enigma.memory project.
@TGO thank you for your reply..
went to temp deleted all files in temp then ran clean..
1>------ Clean started: Project: Enigma.D3.MapHack, Configuration: Debug x86 ------
2>------ Clean started: Project: Enigma.D3, Configuration: Debug x86 ------
3>------ Clean started: Project: Enigma.Wpf, Configuration: Debug x86 ------
4>------ Clean started: Project: Enigma.Memory, Configuration: Debug Any CPU ------
========== Clean: 4 succeeded, 0 failed, 0 skipped ==========
then used rebuild command
1>------ Rebuild All started: Project: Enigma.Memory, Configuration: Debug Any CPU ------
2>------ Rebuild All started: Project: Enigma.Wpf, Configuration: Debug x86 ------
1>
1> ***** FAILURE *****
1>C:\Users\User1\Documents\Visual Studio 2013\Projects\en2.2\Enigma.Memory\Helpers\StructHelper.il(4): error : Duplicate method declaration
1>C:\Users\User1\Documents\Visual Studio 2013\Projects\en2.2\Enigma.Memory\Enigma.Memory.csproj(165,5): error MSB3073: The command ""C:\Windows\Microsoft.NET\Framework\v4.0.30319\ilasm.exe" /nologo /quiet /output:"C:\Users\User1\Documents\Visual Studio 2013\Projects\en2.2\Enigma.Memory\obj\Debug\Enigma.Memory.dll" /alignment=512 /dll /debug "C:\Users\User1\Documents\Visual Studio 2013\Projects\en2.2\Enigma.Memory\obj\Debug\Enigma.Memory.il" "C:\Users\User1\Documents\Visual Studio 2013\Projects\en2.2\Enigma.Memory\Helpers\StructHelper.il"" exited with code 1.
2> Enigma.Wpf -> C:\Users\User1\Documents\Visual Studio 2013\Projects\en2.2\Enigma.Wpf\bin\x86\Debug\Enigma.Wpf.dll
3>------ Rebuild All started: Project: Enigma.D3, Configuration: Debug x86 ------
3>CSC : error CS0006: Metadata file 'C:\Users\User1\Documents\Visual Studio 2013\Projects\en2.2\Enigma.Memory\bin\Debug\Enigma.Memory.dll' could not be found
4>------ Rebuild All started: Project: Enigma.D3.MapHack, Configuration: Debug x86 ------
4>CSC : error CS0006: Metadata file 'C:\Users\User1\Documents\Visual Studio 2013\Projects\en2.2\Enigma.D3\bin\x86\Debug\Enigma.D3.dll' could not be found
4>CSC : error CS0006: Metadata file 'C:\Users\User1\Documents\Visual Studio 2013\Projects\en2.2\Enigma.Memory\bin\Debug\Enigma.Memory.dll' could not be found
========== Rebuild All: 1 succeeded, 3 failed, 0 skipped ==========
there is an issue with the helper.il file and a duplicate method i cant seem to figure out why its thinking its duplicated.
I ran Code Analysis on it and it compiled that's the strangest thing ever.. thank you TOG
I've also noticed that on fresh compilation. It complains about duplicate method declaration but on 2nd compile it normally solves it. I'm compiling pure IL into the assembly so it's not exactly a standard way of doing it. When it works that's awesome, but when it don't...
Good to hear it got solved for you![]()
Is there a way to contribute to this?
I'm mostly interested in SNO files, most of which have "unknown" sections that are loaded as plain int arrays.
If I'm able to fully decipher some of the files, what should I do with it?
There is (was?) a wiki for WoW file formats, would be cool if there was one for D3 as well.
Last edited by d07RiV; 05-23-2015 at 10:29 AM.
Since it hasn't updated yet I'm guessing Enigma might not have time to update for 2.2.1 so if anyone needs the new offsets here they are, as for the structs it seems they haven't changed.
Code:public AttributeDescriptor[] AttributeDescriptors { get { return Read<AttributeDescriptor>(0x01B13750, 1410); } } public VideoPreferences VideoPreferences { get { return Read<VideoPreferences>(0x01B3EC40); } } public SoundPreferences SoundPreferences { get { return Read<SoundPreferences>(0x01B3ECD4); } } public GameplayPreferences GameplayPreferences { get { return Read<GameplayPreferences>(0x01B3F174); } } public SocialPreferences SocialPreferences { get { return Read<SocialPreferences>(0x01B00128); } } public ChatPreferences ChatPreferences { get { return Read<ChatPreferences>(0x01B3F204); } } public int MapActId { get { return Read<int>(0x01B8B4C8); } } [ArraySize(2550)] public UIReference[] UIReferences { get { return Read<UIReference>(0x01B8BA78, 2550); } } // 1000 + 1000 + 109 + 441 = 2550 public LevelArea LevelArea { get { return ReadPointer<LevelArea>(0x01CE4834).Dereference(); } } public string LevelAreaName { get { return ReadString(0x01CE4860, 128); } } //Didn't update for 2.2.1 public TrickleManager TrickleManager { get { return ReadPointer<TrickleManager>(0x01C36400).Dereference(); } } public BuffManager BuffManager { get { return ReadPointer<BuffManager>(0x01D6ED7C).Dereference(); } } [ArraySize(70)] public SnoGroupManager[] SnoGroupsByCode { get { return Read<Ptr<SnoGroupManager>>(0x01D873D8, 70).Select(a => a.Dereference()).ToArray(); } } [ArraySize(60)] // In reality it's 61 with last item set to null. public SnoGroupManager[] SnoGroups { get { return ReadPointer<Ptr<SnoGroupManager>>(0x01D874F4).ToArray(60).Select(a => a.Dereference()).ToArray(); } } public ObjectManager ObjectManager { get { return ReadPointer<ObjectManager>(0x01D895DC).Dereference(); } } public ObjectManager ObjectManagerPristine { get { return ReadPointer<ObjectManager>(0x01D895E0).Dereference(); } } // This address is used in initialization and finalization methods. public int ApplicationLoopCount { get { return Read<int>(0x01D89650); } } public LocalData LocalData { get { return Read<LocalData>(0x01D8A880); } } public Ptr<SnoFiles> PtrSnoFiles { get { return ReadPointer<SnoFiles>(0x01D54F08); } } public FixedArray<int> SnoIdToEntityId { get { return Read<FixedArray<int>>(0x01D9BCA4); } } public SnoGroupSearch SnoGroupSearch { get { return ReadPointer<SnoGroupSearch>(0x01DDA154).Dereference(); } } public Ptr<SnoFilesAsync> SnoFilesAsync { get { return ReadPointer<SnoFilesAsync>(0x01DDA158); } } public MessageDescriptor MessageDescriptor { get { return ReadPointer<MessageDescriptor>(0x01E3C46C).Dereference(); } } public ContainerManager ContainerManager { get { return ReadPointer<ContainerManager>(0x01E3D16C).Dereference(); } } [ArraySize(1223)] public UIHandler[] UIHandlers { get { return Read<UIHandler>(0x01B05440, 1223); } } public SnoGroupInitializer[] SnoGroupInitializers { get { return Read<SnoGroupInitializer>(0x01B0E820, 60); } }
In ObjectManager.cs
public UIManager x9AC_UI { get { return Dereference<UIManager>(0x9AC); } }
changed to
public UIManager x9B0_UI { get { return Dereference<UIManager>(0x9B0); } }
Hi Iceazuk (or Enigma), I found that v2.2.1.31666 has some interesting change. The old maphack (with the new addresses above) works well on single player. But when in multiplayer mode, the maphack only shows what the host *sees*, if the host is not you, you will see a very strange minimap.
Any idea on how to solve this? Thanks!