# Movement algorithm

## Recommended Posts

I am working on a bot for Eudemons. I finally got the memory reading to read the x,y position in game. I also have the center x,y.

I'm having trouble trying to come up with a loop that will take me to a destination x,y (handle to reach), from the current position (handle being read).

For instance. I'm at 400,410 , I need to get to 500, 600. I haven't found a successfull way to get from A to B. Every loop the coordinates are being checked, and once both coordinates match, to stop moving.

Could anyone help me come up with some ideas? I'll write the code, I just need some suggestions on how I can try and pinpoint this.

Thanks

##### Share on other sites

Hi,

You need to give us more information about what is actually happening. For example do you give the function the values you want to move the mouse to? Or do you always just want to move from 400,410? Can you be a bit more specific

Dave

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------"I don't need to know everything, I just need to know where to find it when I need it"....EinsteinAnd in our case... That's the AutoIT helpfile ;) Please read before posting!!!

##### Share on other sites

Alright, I'll try and be more descriptive of my goal.

What I'm trying to do:

As a first bot project, I want to make a Log bot. There are 2 static areas which I need to get to. In a loop, I have the CURRENT characters coordinates being read. I'll have the Static Coordinates predefined inside the program. I want to have the current coordinates being checked against the predefined.

If the current coordinates arent equal to the predefined, to move towards it until it reaches the predefined coordinates. I'm having trouble making the character move (mouse clicks) towards the predefined coordinates. It's either up,down,left, right, top right, topl leftk, bottom right, bottom left.

According to the current coordinates move in either one of those locations to reach the predefined.

here is what I have so far:

```#include <mem.au3>
#include <GuiConstants.au3>
#include <misc.au3>

HotKeySet("'","_exit")
\$Process = 'soul.exe' ;-> Target process
\$PID = ProcessExists(\$Process) ;-> Get Process ID
;\$Value = 12 ;-> Value to write

GuiCreate("LogBot", 111, 73,0,254 , BitOR(\$WS_OVERLAPPEDWINDOW, \$WS_CLIPSIBLINGS))

GuiSetState()

\$Label_1 = GuiCtrlCreateLabel("0,0", 10, 10, 90, 20)
\$Button_2 = GuiCtrlCreateButton("Button2", 0, 40, 110, 30)
WinActivate("[Eudemons Online] Beta Test","")
sleep(500)
WinMove("[Eudemons Online] Beta Test","",167,87)

While 1
\$msg = GuiGetMsg()
Select
Case \$msg = \$GUI_EVENT_CLOSE
ExitLoop
Case \$msg = \$Button_2

While 1

sleep(10)
\$OpenProcess = _MemOpen(0x38, False, \$PID) ;-> Enable reading/writing to the process and get the handle

; \$v_Read = _MemWrite(\$OpenProcess, \$Address, \$Value, 1);-> Write a new 1 byte value to the defined address

_MemClose(\$OpenProcess) ;-> Disable reading/writing to the process

WEnd
EndSelect
WEnd
Exit

;\$v_read is the current characters X coordinate

_MouseTrap(167,87,1188,853)         ;Traps the mouse to the Client Window Size

\$Pre_X_Coor = 400                   ;Pre-Defined X coordinate for NPC
\$Pre_Y_Coor = 500                   ;Pre-Defined Y coordinate for NPC

;Left

;Right

;Down

;Up

EndFunc

Func _Exit()
_MouseTrap()
Exit
EndFunc```
Edited by acidfear

##### Share on other sites

I would consider looking at Law of Cosines. From there you can get a general idea on how to rotate your character with the help of _Mousemoveplus.

Keep mouse moving yourself until the angle is approximately 0 (this means your facing target), then just make character move forward until the distance between you and the destination is approximately 0. This assumes that nothing is blocking your path, else you'd have to add more logic.

A* (A-star) Searching Algorithm - A.I. Artificial Intelligence bot path finding

##### Share on other sites

Ok, thanks for the links. I looked and read through some of the law of Cosines, but it still seems foggy in my mind. I can conceive a basic concept, but when I try to put it in code it doesn't seem to work right. For ex. I'd have it check X first and have it move until X is the same, and then do the Y. But it doesn't seem to work :/.

I'll try experimenting a bit more and see if I can get something close.

## Create an account

Register a new account

×

• Wiki

• Back

• Git