A forum for feature requests/discussions and user submitted patches that improve MQ2
Moderator: MacroQuest Developers
-
auth
- a ghoul

- Posts: 84
- Joined: Sun Apr 13, 2003 12:47 am
Post
by auth » Thu Sep 11, 2003 11:26 am
I have been tracing down the selector in merchantwindow for a while... I tried 3 different methods, and ALL end up with the same results.
i am certain of these following values:
MerchWindow = 17103300
Slot 0 = 17103C1C
Slot 1 = 171043D4
Slot 2 = 17104B4C
If I freeze these slots, selector stays on each one, and i can select more...
slot 2 to slot 1 = 778 hex
slot 1 to slot 0 = 7b8 hex
slot 0 to merchwind = 91c
I believe the original selector just made sure that slot0 was set at 1 when you opened up the window. Either this struct has grown this far, or I'm just going nuts. These are the only spots that these values change with the selector. I have not tried to use an unknown to get down this far, will try that in just a minute (damn 1018). I am positive that I'm not nuts, it in fact IS a long way to trace in memory (took me a couple hours) byte by byte.
Auth - "If it isn't broke, let VI patch it"
-
auth
- a ghoul

- Posts: 84
- Joined: Sun Apr 13, 2003 12:47 am
Post
by auth » Thu Sep 11, 2003 8:22 pm
Okay, Valerian stepped through this with me and this is what we have for EQWindow struct so far...
Code: Select all
// 9/11/03 - Valerian, Auth
typedef struct _EQWINDOW {
/*0x000*/ DWORD WindowID;
/*0x004*/ DWORD TimeMouseOver; //how many ms the window has had the mouse over it...
/*0x008*/ DWORD Unknown0x008; // 2000 seems a common value
/*0x00c*/ DWORD Unknown0x00c; //500 seems a common value
/*0x010*/ BYTE Flag;
/*0x011*/ BYTE MouseOver; //01 yes 00 no
/*0x012*/ BYTE Unknown0x012;
/*0x013*/ BYTE Unknown0x013;
/*0x014*/ BYTE Unknown0x014[12];
/*0x020*/ struct _EQWINDOW *pDownTheTreeOnSameWindow;
/*0x024*/ struct _EQWINDOW *pNextWindow;
/*0x028*/ DWORD Flags4;
/*0x02c*/ BYTE Unknown0x028[4];
/*0x030*/ DWORD X;
/*0x034*/ DWORD Y;
/*0x038*/ DWORD X2;
/*0x03c*/ DWORD Y2;
/*0x040*/ DWORD Unknown0x40;
/*0x044*/ DWORD Depth; //hmmm...
/*0x048*/ BYTE Unknown0x040[8]; // WAS 8!!
/*0x054*/ BYTE Open; //1 open 0 closed
/*0x055*/ BYTE Unknown0x051[7];
/*0x058*/ DWORD Unknown0x058;
/*0x05c*/ PVOID pUnknown0x05c;
/*0x064*/ struct _EQWINDOWINFO *Info;
/*0x068*/ BYTE Unknown[84];
/*0x0bc*/ union{
PITEMINFO Item;//only when structure is filled with a slot...
struct _EQWINDOW *InvDecription;
};
/*0x0c0*/ BYTE Unknown1[68];
/*0x100*/ DWORD SlotID; // slotid only after first window, first slotid is a pointer to that window
/*0x104*/ PVOID Unknown0x104;
/*0x108*/ BYTE Unknown2[12];
/*0x114*/ DWORD Selector; //this graphically selects an item on/off
/*0x118*/ DWORD PushToSelector;
/*0x11c*/ DWORD Unknown0x11c;
/*0x120*/ BYTE Unknown4[36];// was 36//364
/*0x144*/ PCONTENTS ItemDesc[80]; //the mainwindow has pointers directly to the items in the slots...
/*0x284*/ DWORD Unknown5;
/*0x288*/ DWORD SelectedSlotID;
/*0x28c*/ DWORD AddressToPointerForSelectedItem;//
/*0x290*/ DWORD Unknown6;
/*0x294*/ DWORD ItemIconwnd;
/*0x298*/ DWORD Unknown7;
/*0x29c*/ DWORD SellBuyButton;
/*0x2a0*/ struct _EQWINDOW *SlotsHandles[80];
/*0x3e0*/ DWORD DoneButton;
/*0x3e4*/ DWORD WindowFace;
} EQWINDOW, *PEQWINDOW;
I think this byte count is right... I'll run back through it more thoroughly later unless someone else corrects me first
Auth - "If it isn't broke, let VI patch it"