-
Member
Originally Posted by
d2k2
i think for Soul Harvest you have the read the active buffs of the ACD (LocalACD) by enumerating all Attributes with the AttributeReader. I dont know if there is better way doing it with the framework
Thank you for all the help D2k2!
-
Member
d2k2, any updates on the D3Helper project or is it a done deal? No more D3Helper makes me sad I wish I knew anything about it and I would try and help. Anything a lay person can do to help? Data collection or anything?
-
Member
I was wondering if there is any way of telling if the player has collided with something. I saw this on GitHub but I am not sure how to access this or if it is what I am looking for. Thanks in advance.
Last edited by perp|ex; 09-16-2017 at 03:55 PM.
-
Member
For anybody interested I couldn't figure out any memory flag that would tell me if the player has collided with something, but I was able to tell if the player was moving. I checked the players current position vs where I told it to go and if it the Vector3s were the same then I arrived at my destination. If the Vector3 of the player was not changing and it had not made it to its destination that it collided with something while moving. After that I did a bit of back tracing then tried to make it to the destination again.
-
Member
I'm not familiar with C# so I don't understand the framework. What are the base pointer + offsets for the remaining player's skill cooldowns, or if they're on cooldown at all?
-
Contributor
Originally Posted by
Sorco
I'm not familiar with C# so I don't understand the framework. What are the base pointer + offsets for the remaining player's skill cooldowns, or if they're on cooldown at all?
Sorry but its not that easy. First you need the SnoId of the skills. Then you need to enumerate the Attribute Map to get the cooldown tick and substract it from the actual game "tick"
-
Active Member
Originally Posted by
Sorco
I'm not familiar with C# so I don't understand the framework. What are the base pointer + offsets for the remaining player's skill cooldowns, or if they're on cooldown at all?
see this post: [C#] Enigma.D3
-
Active Member
Can someone help to read the Battletag with the current MemoryModel package?
-
Contributor
Hey, Enigma
What should I do to get the current hero's CDR?
I should find the base and offset in which page?
-
Member
Hi,
I'm currently looking into switching D3Helper to the new Enigma.D3 engine (all versions of D3H I know are still on the legacy branch). So far, I've only invested a few hours and the task still seems doable except for two features where I've currently no idea how to rewrite them:
1) Obtaining the active skills and the corresponding skill graphics. My problem is that in the non-legacy engine, the entire "Enigma.D3.Memory\D3\UI" folder is gone and I have no clue how to e.g. rewrite the following code (taken from IC_Skills.cs):
Code:
var _Controls = new List<UXIcon>();
_Controls.Add(UXHelper.GetControl<UXIcon>(A_Enums.UIElements.SkillHotBar1));
_Controls.Add(UXHelper.GetControl<UXIcon>(A_Enums.UIElements.SkillHotBar2));
_Controls.Add(UXHelper.GetControl<UXIcon>(A_Enums.UIElements.SkillHotBar3));
2) Obtaining the UI object under the mouse. I cannot find the string "Mouse" anywhere in the new engine except in the key shortcut enum. How to rewrite the following code (from IC_D3UI.cs):
Code:
string current_hoverelementname = Engine.Current.ObjectManager.xA1C_Ptr_10000Bytes_UI.Dereference().x0A30_MouseOver.x008_Name;
Thanks in advance for any help.
-
Post Thanks / Like - 1 Thanks
johnbl (1 members gave Thanks to diabot for this useful post)
-
Active Member
Originally Posted by
diabot
Hi,
I'm currently looking into switching D3Helper to the new Enigma.D3 engine (all versions of D3H I know are still on the legacy branch). So far, I've only invested a few hours and the task still seems doable except for two features where I've currently no idea how to rewrite them:
1) Obtaining the active skills and the corresponding skill graphics. My problem is that in the non-legacy engine, the entire "Enigma.D3.Memory\D3\UI" folder is gone and I have no clue how to e.g. rewrite the following code (taken from IC_Skills.cs):
Code:
var _Controls = new List<UXIcon>();
_Controls.Add(UXHelper.GetControl<UXIcon>(A_Enums.UIElements.SkillHotBar1));
_Controls.Add(UXHelper.GetControl<UXIcon>(A_Enums.UIElements.SkillHotBar2));
_Controls.Add(UXHelper.GetControl<UXIcon>(A_Enums.UIElements.SkillHotBar3));
2) Obtaining the UI object under the mouse. I cannot find the string "Mouse" anywhere in the new engine except in the key shortcut enum. How to rewrite the following code (from IC_D3UI.cs):
Code:
string current_hoverelementname = Engine.Current.ObjectManager.xA1C_Ptr_10000Bytes_UI.Dereference().x0A30_MouseOver.x008_Name;
Thanks in advance for any help.
You have to code your own UXHelper class for the MemoryModel package. Some parts can be copied from the legacy one.
1) get Control by Name:
Code:
public static T GetControl<T>(string name) where T : Control
{
return GetIfNotNull(
GetControlPointer(name),
ptr => ptr.Cast<T>().Dereference());
}
private static Ptr GetControlPointer(string name)
{
return GetIfNotNull(MemoryContext.Current.DataSegment.ObjectManager.UIManager.PtrControlsMap.Dereference(), map => map[name]);
}
private static TResult GetIfNotNull<T, TResult>(T input, Func<T, TResult> getter)
{
if (input == null)
return default(TResult);
return getter.Invoke(input);
}
2) GetMouseOverControlName
Code:
public static string GetMouseOverControlName()
{
//see legacy code for 32bit offsets https://github.com/Enigma32/Enigma.D3/blob/legacy/Enigma.D3.Memory/D3/UI/UIManager.cs
return MemoryContext.Current.DataSegment.ObjectManager.UIManager.PlatformRead<UIID>(0x0A30, 0x0A38).Name;
}
Last edited by d2k2; 10-10-2017 at 05:34 AM.
-
Post Thanks / Like - 1 Thanks
diabot (1 members gave Thanks to d2k2 for this useful post)
-
Member
Thanks alot, I'll try that out!
-
Member
any1 knows how to read the chat messages with the current applicationmodel? thx in advance
-
Active Member
Originally Posted by
hefero
any1 knows how to read the chat messages with the current applicationmodel? thx in advance
I guess you just have to read the UI Control Elements and The text content of it. But thats not implemented yet in the Memorymodel.
check this how to get label text:
How to access UXhelpers to get UIrects from MemoryContext * Issue #21 * Enigma32/Enigma.D3 * GitHub
Last edited by d2k2; 10-14-2017 at 02:21 PM.
-
Member
I tried getting the control with the UXHelper from the issues section, like this:
UXControl chatMessageUi = UXHelper.GetControl<UXControl>("Root.NormalLayer.chatoutput_dialog_backgroundScr een.chat_content.MessageListContainer.chat_messagelist");
But nothing comes as label_text.
One thing I noticed is that the Chat Messages always start and end with specific Color Codes, like this
{c:ffaaaaff} Party messages {/c}
{c:ffff80ff} Whisper messages {/c}
{c:ff40ff40} Clan messages {/c}
If you scan the memory for those Color Codes you find the messages, so maybe that could be useful somehow to retrieve the messages.