Page 1 of 2

/clickalicious info

Posted: Wed Apr 16, 2003 1:47 am
by Jaerin
Well no one seems to have made real progress at figuring out the newUI. Everyone seems to be focused on finding a different solution for the mouse and click issues. Well although I can't code myself out of a bag here is a bit of info for the coders out there to work with.

Code: Select all

(Location)
MouseX = 771DA8
MouseY = 771DAC

LeftClick = 6F53DE
LeftClickConfirm = 6F53DC
LeftClickHeldConfirm = 758BB4

RightClick = 6F53DE
RightClickConfirm = 6F53DD
RightClickHeldConfirm = 6F53AE

(Pointer)
PtrMainChat=5D9644
BlankWin=5D9648
*UNKNOWN*=5D964C
FaceWin=5D9650
ItemInfo=5D9654
Note=5D9658
Help=5D965C
Book=5D9660
PetInfo=5D9664
TrainingWin=5D9668
SkillsWin=5D966C
ChooseSkill=5D9670
Friends=5D9674
AAWin=5D9678
GroupWin=5D967C
LFGWin=5D9680
LFGAddFilters=5D9684
LoadSkin=5D9688
Alarm=5D968C
MusicPlayer=5D9690
RaidWindow=5D9694
RaidOptions=5D9698
AirRemaining=5D969C
Map=5D96A0
MapToolBox=5D96A4
MapToolBar=5D96a8
TargetWin=5D96AC
HotButtons=5D96B0
ChooseColor=5D96B4
CharInfoWin=5D96B8
Options=5D96BC
BuffBar=5D96C0
Songs=5D96C4
*UNKNOWN*=5D96C8
IconOnMouse=5D96CC
CastingTime=5D96D0
SpellBar=5D96D4
Spellbook=5D96D8
Inventory=5D96DC
Bank=5D96E0
Quantity=5D96E4
Loot=5D96E8
Actions=5D96EC
Merchant=5D96F0
Trade=5D96F4
WindowSelector=5D96F8
BazaarVendor=5D96FC
BazaarSearch=5D9700
GiveWin=5D9704
Tracking=5D9708
Inspect=5D970C
EditSocial=5D9710
SendFeedback=5D9714
BugReport=5D9718
VideoMode=5D971C
EnterText=5D9720
SelectFile=5D9724
Compass=5D9728
NotesWin=5D972C
GemsGame=5D9730
*UNKNOWN*=5D9734
*UNKNOWN*=5D9738
*UNKNOWN*=5D973C
StoryWin=5D9740
JournalNPC=5D9744
JournalDialog=5D9748
JournalCatagory=5D974C
ArmorDye=5D9750


(Double Pointer)
Containers=5d9750
Mouse values are direct memory locations.

General Window Info

All the above values are pointers to the actual memory location where the window info is kept. Remember that the value at those locations is in reverse byte order.

i.e. 068d1ff0 as used below will be f01fd806 in the pointer locations

The only exception to this is Containers. Which in itself is a double pointer or a pointer to a pointer. I will explain what I've seen below.

Finding info at the locations of window info. Here is a list of info I've found thus far. Simply take the value at one of the pointers above and add the value listed below to get the actual offset of that value.

TopLeftX = +30
TopLeftY = +34
BottomRightX = +38
BottomRightY = +3C
ShowWindow = +50

Double Pointer

This is an example
5d9750->068d1ff0+004->06C53E38+30

This will give you the TopLeftX of the first container opened. Now obviously the 068d1ff0 and 06C53E38 values will change from session to session as they are dynamic.

5d9750 points you to the start of the containers. The offset contained in this pointer +4 will give you the first opened container. It's not relative to position in the pack it's relative to which is opened first. The 2nd opened container will be +8, ect...

Now this is the value of the offset where the actual window info is located and follows the same rules as other windows. The rules of how containers are managed when your opening and closing several containers in different orders is a little confusing and I haven't completely figured it out. Anyone that wants to take a look at it is welcome, but this is a damn good start.


Jaerin

Posted: Wed Apr 16, 2003 3:15 am
by ap50
In the words of a sadly missed member of the community...

Whe!

Oh joy joy, another 50 offsets to find :roll:

Nice find though.

Posted: Wed Apr 16, 2003 3:16 am
by dont_know_at_all
Bravo!

Posted: Thu Apr 17, 2003 9:27 pm
by Non M$ Coder
For those of us still climbing the MQ learning curve, does this information raise the probability of /click functionality returning? (I have a one track mind, i want a working fishing macro!)

Posted: Mon Apr 21, 2003 8:58 pm
by Jaerin
Just putting this out...anyone out there trying to use this info to get /click working?

If you are please PM me...

I would hate to see all this info go to waste...

Jaerin

Posted: Mon Apr 21, 2003 9:21 pm
by dont_know_at_all
L124RD, make Jaerin a developer.

Posted: Tue Apr 22, 2003 12:18 am
by Amadeus
Wtb HOWTO on how you discovered these opcodes out of the blue ..hehe


/sigh ...it's sucks to know C++ and totally be oblivious to the binary side of of this shit :oops:

Posted: Tue Apr 22, 2003 10:06 am
by Non M$ Coder
If someone could post a solid overview of how all the code fits together, I can pour a few hours a week looking at it. I don't really want to grab poorly documented source and start trying to decipher it. (been there, done that, not what I'd call fun even if you are getting paid a lot to do it).

guess I ought try to find my old K&R book....

Posted: Thu Apr 24, 2003 11:10 pm
by Rainbean
Throw ball, it's funny to click here and there inside EQ now.

Code: Select all

VOID DX_SetMouseTo(int x, int y)
{
	INPUT		input[1];
	UINT		ret = 0;

	input[0].type = INPUT_MOUSE;

	input[0].mi.dx = x;
	input[0].mi.dy = y;
	input[0].mi.dwFlags = MOUSEEVENTF_MOVE;
	input[0].mi.mouseData = 0;
	input[0].mi.time = 0;
	input[0].mi.dwExtraInfo = NULL;

	ret = SendInput(1, input, sizeof(INPUT));
}

VOID DX_clickLeftMouseButton()
{
	INPUT		input[1];
	UINT		ret = 0;

	input[0].type = INPUT_MOUSE;

	input[0].mi.dx = 0;
	input[0].mi.dy = 0;
	input[0].mi.dwFlags = MOUSEEVENTF_LEFTDOWN;
	input[0].mi.mouseData = 0;
	input[0].mi.time = 0;
	input[0].mi.dwExtraInfo = NULL;

	ret = SendInput(1, input, sizeof(INPUT));
	
	Sleep(100); // Sleep 0.1 second, this is must.

	input[0].mi.dx = 0;
	input[0].mi.dy = 0;
	input[0].mi.dwFlags = MOUSEEVENTF_LEFTUP;
	input[0].mi.mouseData = 0;
	input[0].mi.time = 0;
	input[0].mi.dwExtraInfo = NULL;

	ret = SendInput(1, input, sizeof(INPUT));
}

Posted: Fri Apr 25, 2003 3:44 am
by ap50
As far as I can tell, the actual clicking hasn't been the issue.. The problem is that each of the windows in EQ, Inventory, bag1-24 each have there own layer and all the clicking is doing is going all the way down to the base layer, and ignoring the one we want.

How does your code work in that respect?

Posted: Mon May 19, 2003 9:14 am
by EqMule
jaerin could you please tell me which eqgame.exe version you used when finding this info Im currently looking for stuff like this to fix us a free MacroQuest Platinum version...

Posted: Mon May 19, 2003 10:26 am
by Jaerin
Well the post was made on April 16th so it would have been whatever patch was prior to this.

According to my Eqgame.exe's it would have been the April 14th exe.

Jaerin

Posted: Mon May 19, 2003 10:34 am
by Mckorr
We probably just need to put the /click and /mouseto code into the CVS. Another version will end up here shortly anyway it seems, and we might as well all be on the same sheet of music. Include the noncrashing but nonworking ParseMouseLoc code as well, maybe someone can fix it for me :D

Posted: Mon May 19, 2003 11:24 am
by Valerian
*shrug* my parsemouseloc code works just fine, as long as I'm just trying to click auto... had it foraging for a few hours non-stop with no problems until they went down for maintenance.

only problem I see is it won't click if EQ isn't the active window, any way to fix that?

Posted: Mon May 19, 2003 1:10 pm
by EqMule
Mckorr wrote:We probably just need to put the /click and /mouseto code into the CVS. Another version will end up here shortly anyway it seems, and we might as well all be on the same sheet of music. Include the noncrashing but nonworking ParseMouseLoc code as well, maybe someone can fix it for me :D
Why do I get the feeling Im reinventing the wheel...

Im a patient man, but this whole /click thing is really starting to piss me off. If you have that code ready can you please CVS it or at least post it so other developers can help perfecting it? I would appreaciate a PM with it as well, but if you know me, I like this stuff to be open to all, so I will just post it then...

Lets move on guys... there is no reason to hold click any longer, especially not with MQ gold out there...