Epic Perfect World

PROJECT Advanced Macro Grid [AMG]

Offline Mentalista

  • avatar
  • Forum Veteran
  • Faction: Tyrants
Hello, im not playing, but i have acess already to the Gaia`s mind and i had a OP inspiration and since 3rd software is allowed on this server i want a help from some C++ masters to create this program of Advanced Macro Grid, that i could call to Advanced Mentalista Grid, but since i wont do it all alone, gonna stay Advanced Macro Grid, here is how it works.




As u can see, i had problem with the resolution of the screenshot since i have no acess to my old HD, i get this SS from internet, and had to look for EPW screenshot, since we are the only PW server who play adding gear to the Shortcut Bar,
this grid that goes from A~T vertically and 1~27 horizontally, its the base of the program, like a cartesian graphic, it has points, in each point of the grid, our program can simulate a mouse click, so our mad player will first go into the interface of AMG out of the PW client and choose a free key like, E,R,T,O,L...etc, inside the key he choose, he going to choose which points of the Grid this custom key gonna send a fake mouse click, so as u can check on the image, he choosed 4 points of the grid (O10)(O11)(O12)(O13), and when he press the key he choose, fake mouse clicks gonna be send to those points of the grid and he will be able to do alot of fast changes of gear and wont be necessary to add gear to the F1~F9 key, making u need to use skills with the mouse, what is bad.

To the people who going to develop this with me, just send me personal msg and we talk better, this program has no necessity to edit the EPW client, the program going to stay above of the client window, like Fraps does, i think, the grid will be visible only on the moments the player is customizing his macros.

Well factors C++zers, PM me if u want to create this tool with me.


My damage log collection NEW

Offline Frost

  • MPWGA
  • Characters: Frost
  • Faction: Wandering
All you need to do is design the grid. Then set a mouse click event. Maybe.... 73 lines of code? However, no offense but nobody is gonna waste their time making this without some form of payment. I don't mean EC either....
Last Edit: July 05, 2015, 11:29 am by Frost
"My honor is my loyalty

Offline Mentalista

  • avatar
  • Forum Veteran
  • Faction: Tyrants
All you need to do is design the grid(map maybe?). Then set a mouse click event. Maybe.... 73 lines of code? However, no offense but nobody is gonna waste their time making this without some form of payment. I don't mean EC either....
Yeah, im looking for some codes on google. This here is kinda simple
Code: [Select]
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43

Code: ("// pt is for the mouse position, wrect is for the client information. The mouse coords to be sent to the window") [Select]
[color=#500070]#include <windows.h>[/color]

[color=#0000b0]bool[/color] KeyIsPressed ( [color=#0000b0]unsigned[/color] [color=#0000b0]char[/color] k ) {
USHORT status = GetAsyncKeyState ( k );
[color=#0000b0]return[/color] (( ( status & 0x8000 ) >> 15 ) == 1) || (( status & 1 ) == 1);
}

[color=#0000b0]int[/color] WINAPI WinMain ( HINSTANCE hInst, HINSTANCE P, LPSTR CMD, [color=#0000b0]int[/color] nShowCmd ) {

HWND target = GetForegroundWindow ( );


POINT pt;
RECT wrect;

[color=#0000b0]while[/color] ( [color=#0000b0]true[/color] ) {


[color=#0000b0]if[/color] ( KeyIsPressed ( VK_CONTROL ) && KeyIsPressed ( [color=#600030]'T'[/color] ) ) {
target = GetForegroundWindow ( );
}


[color=#0000b0]if[/color] ( KeyIsPressed ( VK_CONTROL ) && KeyIsPressed ( VK_ESCAPE ) ) {
[color=#0000b0]break[/color];
}


[color=#0000b0]if[/color] ( KeyIsPressed ( VK_CONTROL ) && KeyIsPressed ( VK_LMENU ) ) {
GetCursorPos ( &pt );
GetClientRect ( target, &wrect );

PostMessage ( target, WM_LBUTTONDOWN, 0, ( pt.x - wrect.left ) & ( ( pt.y - wrect.top ) << 16 ) );
PostMessage ( target, WM_LBUTTONUP, 0, ( pt.x - wrect.left ) & ( ( pt.y - wrect.top ) << 16 ) );

Sleep ( 5 );
}

}

[color=#0000b0]return[/color] 0;

}



But i may find some better and use as base.

Edit: Actually theres a lot of ready codes, and guides of how to make mouse clicker with coordenates exe with DevC++, i think i will just have some troubles with the design =(
Last Edit: July 05, 2015, 11:34 am by Mentalista


My damage log collection NEW

Offline Frost

  • MPWGA
  • Characters: Frost
  • Faction: Wandering
Yeah, im looking for some codes on google. This here is kinda simple
Code: [Select]
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43

Code: ("// pt is for the mouse position, wrect is for the client information. The mouse coords to be sent to the window") [Select]
[color=#500070]#include <windows.h>[/color]

[color=#0000b0]bool[/color] KeyIsPressed ( [color=#0000b0]unsigned[/color] [color=#0000b0]char[/color] k ) {
USHORT status = GetAsyncKeyState ( k );
[color=#0000b0]return[/color] (( ( status & 0x8000 ) >> 15 ) == 1) || (( status & 1 ) == 1);
}

[color=#0000b0]int[/color] WINAPI WinMain ( HINSTANCE hInst, HINSTANCE P, LPSTR CMD, [color=#0000b0]int[/color] nShowCmd ) {

HWND target = GetForegroundWindow ( );


POINT pt;
RECT wrect;

[color=#0000b0]while[/color] ( [color=#0000b0]true[/color] ) {


[color=#0000b0]if[/color] ( KeyIsPressed ( VK_CONTROL ) && KeyIsPressed ( [color=#600030]'T'[/color] ) ) {
target = GetForegroundWindow ( );
}


[color=#0000b0]if[/color] ( KeyIsPressed ( VK_CONTROL ) && KeyIsPressed ( VK_ESCAPE ) ) {
[color=#0000b0]break[/color];
}


[color=#0000b0]if[/color] ( KeyIsPressed ( VK_CONTROL ) && KeyIsPressed ( VK_LMENU ) ) {
GetCursorPos ( &pt );
GetClientRect ( target, &wrect );

PostMessage ( target, WM_LBUTTONDOWN, 0, ( pt.x - wrect.left ) & ( ( pt.y - wrect.top ) << 16 ) );
PostMessage ( target, WM_LBUTTONUP, 0, ( pt.x - wrect.left ) & ( ( pt.y - wrect.top ) << 16 ) );

Sleep ( 5 );
}

}

[color=#0000b0]return[/color] 0;

}



But i may find some better and use as base.
Once you get the base done, set the mouse event to a coordinate in the grid with an input function - SendInput() will work. Also remember to set the variables properly for each call upon (Example: MOUSEEVENTF_ACTION=SOMETHING ). I highly recommend using StackOverFlow and making your code and request SSCCE. Your more likely to find experienced coders to help there.
Last Edit: July 05, 2015, 11:50 am by Frost
"My honor is my loyalty

Offline Neve

  • Forum Veteran
I see the "insults" incoming. Advanced Mentalista Grid user onli.
Avatar made by Kei

Zilara

This is too complicated for most of us, why are you trying to disrupt EPW harmony?  :'(

Offline Droopeh

  • avatar
  • Member
Anyone want to explain the reason why this would be good for the game? Instant switching gear? Doesn't that make the "def campers" even more of a problem?

I don't really pk much so I can't say for myself, but if everyone is complaining about it why do something that helps with it?

Offline Nea

  • Game Master
  • https://imgur.com/a/vsZDCYv
mouse auto clicker - set coords of each mouse click - play the macro
happy?  : )))))))))00 ?

Offline Kofte

  • avatar
  • Forum Veteran
  • Characters: Kofte & Barz
  • Faction: Tyrants
mouse auto clicker - set coords of each mouse click - play the macro
happy?  : )))))))))00 ?
who the fck is sieb?

Offline YouGotMe

  • HI <3
  • Believe me
  • Characters: CanadianBoy/HeyYouGotMe
  • Faction: Alamat
too much nerdy going on, on this thread.. I'm out 
THEY HATE US, CUZ THEY AINT US

Offline Harry

  • Forum Veteran
  • Faction: Outcasts☆
You're making this far too complicated than it is. I don't have the time to help at the moment, otherwise I would.

Offline Zhake

  • avatar
  • Ferocity★ Director
  • Characters: time
  • Faction: Outcasts☆ 2018
This method of "macro" creation is terrible imo. Just overlay a real grid that can be interacted with or register a global hook inside the client, and use packets to do whatever you need to do.

Keep in mind that regardless of whatever hooking method you use for hotkeys, that it will not work out well without getting a handle on whether or not the chat window is active. Unless people are fine with macros going off while they're talking to their e-date.

Edit: Global hook inside the client is essentially getting the active handle using GetForegroundWindow, registering the hook if it is equal to a client's handle, then unregistering if it isn't. However, in my opinion, this is a waste of time because no matter how far you expand it, the additional functionality will be minimum. Only project that would be worth anything is an expanded bar, which would have to use what I explained above.
Last Edit: July 05, 2015, 04:30 pm by Zhake

Vegas

Use AHK scripts, much easier