#include "../Win32Tools/Win32Tools.h"
#include "../MemProc/MemProc.h"
#include "../Vector/Vector2D.h"
typedef struct {
DWORD addrX, addrY;
Vector2D v;
} Pos;
Pos *
pos_new (MemProc *mp, DWORD addrX, DWORD addrY)
{
Pos *p;
if ((p = malloc(sizeof(Pos))) == NULL)
return NULL;
p->addrX = addrX + mp->base_addr;
p->addrY = addrY + mp->base_addr;
vector2D_set_pos (
&p->v,
read_memory_as_float(mp->proc, p->addrX),
read_memory_as_float(mp->proc, p->addrY)
);
return p;
}
void
pos_refresh (MemProc *mp, Pos *p)
{
vector2D_set_pos (
&p->v,
read_memory_as_float(mp->proc, p->addrX),
read_memory_as_float(mp->proc, p->addrY)
);
}
void
pos_set (MemProc *mp, Pos *p, float newX, float newY)
{
vector2D_set_pos (&p->v, newX, newY);
write_memory_as_float(mp->proc, p->addrX, newX);
write_memory_as_float(mp->proc, p->addrY, newY);
}
int main ()
{
MemProc *mp = memproc_new("League of Legends.exe", "League of Legends (TM) Client");
if (!mp->proc)
{
error("Please launch a game");
return 0;
}
// All are world coordinates
Pos *cam = pos_new(mp, 0x039F713C, 0x039F7144); // Camera position
Pos *champ = pos_new(mp, 0x039F7318, 0x039F7320); // Champion position
Pos *mouse = pos_new(mp, 0x039F7324, 0x039F732C); // Mouse position
Pos *dest = pos_new(mp, 0x039F73F8, 0x039F7400); // Right click destination position
while (1)
{
// Get the position from the game
pos_refresh(mp, champ);
pos_refresh(mp, mouse);
pos_set (mp, cam,
(champ->v.x + mouse->v.x) / 2.0,
(champ->v.y + mouse->v.y) / 2.0
);
Sleep(5);
}
return 0;
}