Hello,
Yesterday I saw a post about reversing the user interface, so by curiosity I started looking at lua_EnumerateFrames.
I started looking first for frame name, which was pretty easy, then I wanted to know if the frame was visible or not, also pretty easy, that just a boolean.
After some hour I got almost everything needed, but the frame coord was still not found, first I thought each frame coord was dependent to his parent as in Aion, but no, after looking a bit in IDA at frame GetLeft function (0x49D0B0 3.5.5a) I found that the position depend from the UI scale, so I had to found another things, that was a mess
Finally after some hour I got everything working :
- Enumerates every frames
- Get frame's parent
- Get frame name
- Get is frame is visible or not
- Get the frame effective scale (not sure about word but it's dependent to UI scale)
- Get frame rect (Left, Right, Top, Bottom)
- Get frame size (from the rect)
- Move mouse over the frame
So I maked little program that dump the UI, feel free to use it or improve it :
C# | using System; using System.Co - Anonymous - 79AbzmwF - Pastebin.com
All offsets provided is for WoW 3.3.5a 12340.
PS: For offset naming, they are probably wrong
EDIT : Correct offsets :
Code:
public enum UIFrame
{
CurrentFrame_Ptr = 0x00B499A8,
CurrentFrame_Offset = 0x78,
UIBase = 0x00B499A8,
FirstFrame = 0x0CD4,
NextFrame = 0x0CCC,
UnkDivWidth = 0x00AC0CB4,
UnkDivHeight = 0x00AC0CB8,
ScreenWidth = 0x00C7D2C8,
ScreenHeight = 0x00C7D2C4,
FrameLeft = 0x68,
FrameRight = 0x70,
FrameTop = 0x6C,
FrameBottom = 0x64,
ParentPtr = 0x94,
EffectiveScale = 0x7C,
Name = 0x1C,
Visible = 0xE0,
}