Has Someone figured out how to read the BattleTag of a Player, maybe from his ACDActor obj?
Iam new to this and after Hours of Research i have no clue
Has Someone figured out how to read the BattleTag of a Player, maybe from his ACDActor obj?
Iam new to this and after Hours of Research i have no clue
I actually figured the offsets to the BattleTag Label in the Root.NormalLayer.BattleNetFriendsList_main.LayoutRoot.OverlayContainer.FriendsLi stContent.BattleTag Label
But i dont get the offsets to the UIManager.UIelementCount. I think i have already the offset to the Manager Itself but i have no clue how the proceed from here to get the element Count
In Fact i try to acces the Text from the Btag Label. In CE i have found anything backwards from the Text of the Lable wich is as it seems always NICKNAME{c:FF416380}#BTAGNR{/c}
from there i get in 3 steps to the BtagLable, but i dont get a static route.
My results so far:
obj_Manager = 0x1873414
UIManager = obj_Manager + 0x1A8
UIManager.UIelementCount = UIManager + 0x40// stand before 1.1
I dont ask to get spoonfeed but iam stuck atm. I would appreciate if someone could help me please =)
Btw at this Point thanks to DarkD3 and D3Advantures as well as the Loot Alert Project, i learned much from those
Offset is [[UIManager] + entries] ([[[0x1873414] + 0x1A8] + 0x44]).But i dont get the offsets to the UIManager.UIelementCount.
Dont't know why you need this though. Because UI elements are organized in form of table of linked lists (pointer to table at [[[0x1873414] + 0x1A8] + 0x8], number of table entries at [[[0x1873414] + 0x1A8] + 0x10]).
You can find your UI element by simply traversing this table. When you have UI element base just read element text using pointer located at [ElementBase + 0xAE0] to get your BattleTag name.
First of all: Thanks for the Reply DarthTon and for the nice work with your DarkD3 Project. I was new in this and your Code was a good point to start learning.
I found the Offset from Element Base to TextPtr also in CE followed the acces and writes Routes from the original Text Value of the Label. I got the Structure of the UIElementTable from your Code and tought i have to now how much elements i have to calc the offset to my Element. My Problem is atm the Offset to the UIManager itself (0x1A it seems to has changed or is simly wrong :/ cause all Resulst i get are false. I tried youre code and hoped to see some magic happen, but your UIManger doesnt find any Elements either.
I will try to find the right offset to the UIManger, lets hope for the best ^^
I've updated my code to 1.0.6. UI offsets there are valid, try them.
So i had litte time today and yesterday therefore my long time for a reply ^^
I did it!
But some off the Offsets i suggested where wrong or not working. Like for example the Text Pointer offset in the Element Structure. I tried to folow it but it is always wrong or points to wrong memory destinations, but I found an other way to find the text for any UIElement wich has a text so i didnt spend much time for debug there and here it is:
Offsets to the UIElements Hash Table in 1.06 in Order of execution
(items in same line means real addition and no offset to the pointers targetlocation):
0x1873414 //obj_Manager
0x794 + 0x1A8 //obj_Manager_Storage + UIManagerOffset
0x0 // get Value of the previous PointerTarget
0x8 // Offset of the Pointer to the First Adress of the Hash Table
=>i call this path "HashTablePointer"
then u can traversing the Table like a normal LinkedList
HashTablePointer + 0x210 //OffsetToFirst TextPointer
0xB30 //secoffset
0x0 //third offset
=> Read the String from this Pointer
(The Name of the Lable with the BattleTag is: "(4Bytes)+Root.NormalLayer.BattleNetFriendsList_main.LayoutRoot.OverlayContainer .FriendsListContent.BattleTag")
the Hash of it and the 4 Bytes in front changes so dont rely on this values!
Note:
Before the Friendlist UIElement is loaded the BattleTag Lable will be empty, it has to be opened once always the UI is under reload. This includes the startup of the Game as well as any switch from ingame back to menuscreen.
Therefore this Methode lacks on stability. I will continue my research to find a better way.
Greetz Api =)
PS: Tanks again to DarthTon with his DarkD3 Project without it i would not be able to learn this fast. Keep up the awesome Work!
'[PH] This text should be replaced with game data.'. This is the text value of the Root.NormalLayer.BattleNetFriendsList_main.LayoutRoot.OverlayContainer.FriendsLi stContent.BattleTag component. It will be updated to the read battle.tag only after I open the friend menu first time.