1 Định vị 1 điểm trong game để Click Chuột Mon Aug 22, 2011 5:34 pm
Trunks-Kun
Administrator
Click chuột làm 1 trong những điều khó khăn nhất khi làm Auto Game thời nay do các hàm ControlClick hầu như vô tác dụng. Tuy nhiên hàm MouseClick thì luôn luôn thành công, nhưng nhược điểm của nó là chỉ làm được Auto 1 Acc và phải cố định Window Game.
Code bên dưới chỉ có thể khắc phục để không phải cố định Window Game, tức là khi Auto bạn có thể đặt Game ở bất kỳ chỗ nào trên màn hình. Ý tưởng rất đơn giản:
- Đầu tiên bạn cần xác định được vị trí và kích thước của Window Game bao gồm cả phần Title bằng hàm: WinGetPos()
- Sau đó là kích thước của vùng game hiển thị (không tính phần Title của Game) bằng hàm: WinGetClientSize()
- Sau đó bạn trừ 2 kích thước cho nhau sẽ ra được tọa độ một điểm gọi là: Caret Position
- Với Caret Position bạn cộng cho một tọa độ Coords của Control, tức là 1 nút trong Game thì ta sẽ có được tọa độ cho hàm: MouseClick()
- Trong hàm dưới biến $Pos được truyền vào hàm chính là tọa độ Coords mà bạn muốn Click trong Game
- Đây là hàm xác định Coord của một Điểm trong Game
nguồn autoit.72ls.net
Code bên dưới chỉ có thể khắc phục để không phải cố định Window Game, tức là khi Auto bạn có thể đặt Game ở bất kỳ chỗ nào trên màn hình. Ý tưởng rất đơn giản:
- Đầu tiên bạn cần xác định được vị trí và kích thước của Window Game bao gồm cả phần Title bằng hàm: WinGetPos()
- Sau đó là kích thước của vùng game hiển thị (không tính phần Title của Game) bằng hàm: WinGetClientSize()
- Sau đó bạn trừ 2 kích thước cho nhau sẽ ra được tọa độ một điểm gọi là: Caret Position
- Với Caret Position bạn cộng cho một tọa độ Coords của Control, tức là 1 nút trong Game thì ta sẽ có được tọa độ cho hàm: MouseClick()
- Trong hàm dưới biến $Pos được truyền vào hàm chính là tọa độ Coords mà bạn muốn Click trong Game
- Code:
;~ Lấy tọa độ vị trí cần Click
Func ClickGetPost($Pos)
Local $GamePos = WinGetPos($GameHandle)
Local $GameGreen = WinGetClientSize ($GameHandle)
Local $Span[2] = [$GameGreen[0] - $GamePos[2],$GameGreen[1] - $GamePos[3]]
$Pos[0]+= $GamePos[0] - $Span[0]
$Pos[1]+= $GamePos[1] - $Span[1]
Return $Pos
EndFunc
- Đây là hàm xác định Coord của một Điểm trong Game
- Code:
Func ShowTextTest()
If Not $GameHandle Then Return
Local $Text = ""
Local $Mouse = MouseGetPos()
Local $GamePos = WinGetPos($GameHandle)
Local $GameGreen = WinGetClientSize ($GameHandle)
Local $ControlPos[2]
$ControlPos[0] = $Mouse[0] - $GamePos[0] + ($GameGreen[0] - $GamePos[2]) +4
$ControlPos[1] = $Mouse[1] - $GamePos[1] + ($GameGreen[1] - $GamePos[3]) +4
$Text&= $Mouse[0]&"/"&$Mouse[1]&" "&$GamePos[0]&"/"&$GamePos[1]&"-"&$GamePos[2]&"/"&$GamePos[3]&" "&$GameGreen[0]&"/"&$GameGreen[1]&@CRLF
$Text&= $ControlPos[0]&"/"&$ControlPos[1]
tooltip(@sec&@msec&" "&$Text,$GamePos[0],$GamePos[1])
EndFunc
nguồn autoit.72ls.net