Cộng đồng AutoIT Việt - Autoitviet.forumvi.com
Chào mừng bạn đến với cộng đồng AutoIT Việt, hãy đăng ký một nick để cùng tham gia thảo luận nhé ^^!

Join the forum, it's quick and easy

Cộng đồng AutoIT Việt - Autoitviet.forumvi.com
Chào mừng bạn đến với cộng đồng AutoIT Việt, hãy đăng ký một nick để cùng tham gia thảo luận nhé ^^!
Cộng đồng AutoIT Việt - Autoitviet.forumvi.com
Bạn có muốn phản ứng với tin nhắn này? Vui lòng đăng ký diễn đàn trong một vài cú nhấp chuột hoặc đăng nhập để tiếp tục.
Latest topics
» [Code] Kiểm tra kết nối mạng
by jameseshell Fri Jul 31, 2015 3:29 pm

» AutoClick không chiếm chuột
by jameseshell Fri Jul 31, 2015 9:58 am

» [Sorf] Connect/Disconet Button
by thanhhan31 Fri Jun 26, 2015 3:56 am

» Giới thiệu ngôn ngữ lập trình Autoit
by vanhoa1402 Mon Jun 08, 2015 12:40 am

» [Code] Đếm ngược thời gian
by satoh290801 Sat Jun 06, 2015 10:11 am

» Debug game online
by cheater Mon Jun 01, 2015 3:15 pm

» [Thắc Mắc] cách nhập xuất dữ liệu
by cadilacst Mon Apr 27, 2015 7:14 am

» [Code] Auto Win 2c6f td1 - sv HN
by Hades Wed Jan 14, 2015 5:41 am

» [Hỏi] AutoIt với CSDL online?
by todzin Wed Nov 19, 2014 11:14 pm

» [Hỏi] Một số vấn đề về Copy & Paste file bằng ứng dụng thứ 3 (Everything.exe)
by aloatiso Tue Nov 11, 2014 10:31 pm

» Click theo điểm ảnh !
by nhatdaica055 Wed Oct 15, 2014 5:17 pm

» Nội quy diễn đàn
by lethusinh01 Fri Sep 12, 2014 3:59 am

» Hide Windows !!!
by Sweetsica Fri Aug 08, 2014 2:31 am

» Cài đặt , sử dụng và biên dịch Autoit
by mankichi Thu Jul 24, 2014 5:11 am

» Tuyển mod cho diễn đàn
by huynhlamid Fri Jan 17, 2014 3:36 pm

» PixelSearch - Quét (hay kiểm tra) điểm ảnh
by vanthang Fri Jan 17, 2014 5:49 am

» Thiệp Cực Đẹp Tặng Người Yêu !!!
by Nokia3G Mon Dec 23, 2013 12:50 pm

» Lấy đường dẫn của phần mềm chạy ngầm
by cuongkoken Sat Dec 21, 2013 1:25 am

» Xin Admin giup do
by xlove_bmt Wed Dec 18, 2013 6:40 am

» [Hỏi] Cần pro chỉ làm trainer game!
by quytucaca Wed May 29, 2013 7:43 am


Định vị 1 điểm trong game để Click Chuột

Go down

Định vị 1 điểm trong game để Click Chuột Empty Định vị 1 điểm trong game để Click Chuột

Bài gửi by Admin Wed Aug 17, 2011 9:59 am

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


;~ 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

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



Admin
Admin
Admin

Tổng số bài gửi : 63
Join date : 16/08/2011

https://autoitviet.forumvi.com

Về Đầu Trang Go down

Định vị 1 điểm trong game để Click Chuột Empty Re: Định vị 1 điểm trong game để Click Chuột

Bài gửi by Admin Wed Aug 17, 2011 10:01 am

Trong File: Function.au3

Thêm 2 hàm tớ cung cấp ở bài viết vào cuối file, hàm ShowTextTest() sẽ được thay đổi 1 tý để thực hiện ví dụ này


;~ 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

;~ Kiểm tra tọa Coords của Game
Func ShowTextTest()
If Not $GameHandle Then
tooltip(@sec&@msec&" Chưa mở game",0,0)
$GameHandle = WinGetHandle($GameTitle)
Return
EndIf

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&= @CRLF
$Text&= "MousePos: "&$Mouse[0]&"/"&$Mouse[1]&@CRLF
$Text&= "GamePos: "&$GamePos[0]&"/"&$GamePos[1]&@CRLF
$Text&= "GameSize: "&$GamePos[2]&"/"&$GamePos[3]&@CRLF
$Text&= "GameGreen: "&$GameGreen[0]&"/"&$GameGreen[1]&@CRLF
$Text&= "Coords: "&$ControlPos[0]&"/"&$ControlPos[1]&@CRLF

$Click = ClickGetPost($Option)

tooltip(@sec&@msec&" "&$Text,$Click[0],$Click[1])
EndFunc

Trong File: aFate.au3

Dòng 21 thêm:

Global $GameTitle = "FATE"
Global $GameHandle = 0

Global $Option[2] = [135,395] ;<= tọa độ Coord lấy được bằng hàm ShowTextTest()
Global $Click[2] = [0,0]



Dòng 50 sửa thành:

While 1
Sleep(270)
If $Testing Then ShowTextTest()
LScrores_Set(GameGetScores())
WEnd



Cách lấy được tham số cho $Option[2] rất đơn giản, sau khi cài đặt Code xong, bạn mở Tool lên, nếu không có Game FATE thì nó sẽ có thông báo ở Góc Trên bên Trái. Khi mở Game ở chế độ Windown 800x600, code sẽ bắt đầu hiển thị một Tooltip ngay nút Option của giao diện Game.

Khi rê chuột trong Giao diện Game hầu hết các thông số sẽ không đổi, trừ khi bạn đổi kích thước Game.
Chỉ số trên cùng MousePos là vị trí của con Chuột so với Desktop
Chỉ số dưới cùng Coords chính là tọa độ bạn cần tìm dùng để đưa vào $Option[2]

Từ thông số $Option[2] này tớ truyền vào Hàm ClickGetPost($Pos) và tính ra được vị trí của nút Option trong Game so với màn hình Desktop, sau đó tớ truyền vị trí tính được cho cái Tooltip đang hiện ra nên lúc nào Tooltip cũng hiện đúng vị trí nút Option dù game thay đổi vị trí.

Từ đó, nếu bạn truyền vị trí tính được cho Hàm MouseClick() thì tức là lúc nào nó cũng Click đúng nút Option trong Game. Bạn có thể làm tương tự như vậy cho các nút khác hoặc bất kỳ điểm nào trong Game. Tớ xin lưu ý thêm rằng tọa độ mà bạn lấy được từ hàm ShowTextTest() có thể sẽ lệch vài Pixel so với kết quả trả về của hàm ClickGetPost() và do sự sai lệnh này không lớn vì tùy Game, tùy Wind đang dùng, nên tớ bỏ qua không tính chính xác.

Chúc các bạn thành công

- LeeSai -

Admin
Admin
Admin

Tổng số bài gửi : 63
Join date : 16/08/2011

https://autoitviet.forumvi.com

Về Đầu Trang Go down

Về Đầu Trang

- Similar topics

 
Permissions in this forum:
Bạn không có quyền trả lời bài viết