我最近下載了一個遊戲,我玩一個機器人,這個機器人所使用的AutoIt在屏幕上自動的動作,旁邊的AutoIt我下載了一些腳本,讓我來自動遊戲動作。我在主電腦和筆記本電腦上下載了這些腳本,因此如果需要的話,我可以在2個帳戶上運行它們。下載是完全一樣的,儘管機器人可以在我的電腦上完美工作,但它在我的筆記本電腦上運行起來很奇怪:
光標似乎能夠到我已明確告訴它去的地方,但一旦它需要imagesearch或pixelsearch它只是停止。該程序不會停止運行,並會在適當的時機繼續執行可執行的操作,但是所有圖像搜索功能都會被忽略。
的PC和筆記本電腦之間的唯一的主要性差異是,電腦是問這裏之前,運行Windows 8的
事情㈣通過搜索嘗試:
我已閱讀,imagesearch.dll應在sysWOW64爲了它的工作,我相信我已經通過複製DLL文件並將它們粘貼到syswow64。這沒有幫助。
我也嘗試將#requireadmin添加到腳本的頂部,這也沒有幫助。
這發生在我下載的所有腳本中。他們都在電腦上工作,而沒有在筆記本上工作。我沒有很多的理解,因爲我沒有自己寫。不過,我已經將它自己化了一些,因爲我在PC上編輯它以便個人使用,並使其工作得很好。所以我認爲它不能在我的筆記本電腦上運行,必定會出現一些關於Windows 8或類似的業餘錯誤。
這裏是一個示例腳本。
#RequireAdmin
#include <Misc.au3>
HotKeySet("{[}", "MakeLock")
HotKeySet("{z}", "Start")
HotKeySet("{ESC}", "_Exit")
HotKeySet("{x}", "Shafts")
HotKeySet("{c}", "Heads")
HotKeySet("{v}", "bsb")
$handle = WinGetHandle("Wurm Online", "")
Global $running=0
Global $shaftLoc
Global $headLoc
Global $shaft=0
Global $head=0
Global $bsb=0
Global $bsbloc
Func _Exit()
Exit
EndFunc ;==>_Exit
Func Getfrombsb()
MouseMove($bsbloc[0], $bsbloc[1], 5)
MouseDown("left")
Sleep(100)
MouseMove($shaftloc[0], $shaftloc[1], 5)
Sleep(100)
MouseUp("left")
sleep(2500)
send ("4")
sleep(250)
Send("{Enter}")
sleep(3000)
EndFunc
Func Shafts()
MsgBox(0, "", "title of items")
$shaft=1
EndFunc
Func Drop()
MouseMove($shaftloc[0], $shaftloc[1], 5)
MouseDown("left")
Sleep(250)
MouseMove($bsbloc[0], $bsbloc[1], 5)
MouseUp("left")
EndFunc
Func bsb()
MsgBox(0, "", "item in bsb")
$bsb=1
EndFunc
Func Heads()
MsgBox(0, "", "Click on what ur continuing")
$head=1
EndFunc
Func continue()
MouseMove($shaftloc[0], $shaftloc[1], 5)
MouseClick("left")
Sleep(100)
MouseMove($shaftloc[0], $shaftloc[1], 5)
MouseClick("right")
Sleep(1000)
$line = GetLine()
If IsArray($line) Then
Local $random2 = Random(200, 250, 1)
MouseMove($line[0], $line[1]+3*16-8, 5)
Sleep($random2-51)
MouseMove($line[0]+120, $line[1]+3*16-8, 5)
Sleep($random2+38)
MouseMove($line[0]+120, $line[1]+3*16-8+2*16, 5)
Sleep(500)
MouseMove($line[0]+200, $line[1]+3*16-8+2*16, 5)
Sleep($random2+161)
MouseMove($line[0]+200, $line[1]+3*16-8+2*16+44, 25)
Sleep($random2)
MouseClick("left")
EndIf
EndFunc
Func Start()
if $running==0 Then
$running=1
TrayTip("", "Macro started", 5)
ElseIf $running==1 Then
$running=0
TrayTip("", "Macro stopped", 5)
EndIf
EndFunc
Func GetLine()
$pos = MouseGetPos()
$samp = $pos
For $i = 0 To 48 Step 1
$samp[0] = $pos[0]+32
$samp[1] = $pos[1]+$i
$s0 = PixelGetColor($samp[0], $samp[1], $handle)
If $s0 == 0xFFFFFF Then
$s1 = PixelGetColor($samp[0]+1, $samp[1], $handle)
If $s1 == 0xFFFFFF Then
$s2 = PixelGetColor($samp[0]+2, $samp[1], $handle)
$s3 = PixelGetColor($samp[0]+3, $samp[1], $handle)
If $s2 == 0xFFFFFF AND $s3 == 0xFFFFFF Then
$line = $samp
ExitLoop
EndIf
EndIf
EndIf
$line = 0
Next
Return $line
EndFunc
While (1)
if _IsPressed("01") And $shaft==1 Then
$shaftloc = MouseGetPos()
$shaft=0
MsgBox(0, "", "shaft loc loaded")
endif
if _IsPressed("01") And $head==1 Then
$headloc = MouseGetPos()
$head=0
MsgBox(0, "", "head loc loaded")
EndIf
if _IsPressed("01") And $bsb==1 Then
$bsbloc = MouseGetPos()
$bsb=0
MsgBox(0, "", "bsb loc loaded")
EndIf
if $running==1 Then
Getfrombsb()
Local $random = Random(24000, 25000, 1)
continue()
Sleep($random)
sleep(500)
Drop()
sleep(2000)
Drop()
sleep(2000)
EndIf
Sleep(10)
WEnd
看正是它並沒有做,我可以看到這個問題棱有部分代碼如下但這一切,直到; $ line = GetLine()
$line = GetLine()
If IsArray($line) Then
Local $random2 = Random(200, 250, 1)
MouseMove($line[0], $line[1]+3*16-8, 5)
Sleep($random2-51)
MouseMove($line[0]+120, $line[1]+3*16-8, 5)
Sleep($random2+38)
MouseMove($line[0]+120, $line[1]+3*16-8+2*16, 5)
Sleep(500)
MouseMove($line[0]+200, $line[1]+3*16-8+2*16, 5)
Sleep($random2+161)
MouseMove($line[0]+200, $line[1]+3*16-8+2*16+44, 25)
Sleep($random2)
MouseClick("left")
EndIf
EndFunc
任何幫助,將不勝感激。儘管我對代碼不熟悉,但我知道如何使用堆棧溢出,因爲我的兄弟是一個.NET開發人員。我會標記這個問題,幫助我,並upvote等。
親切的問候。
$ line = GetLine()的輸出是什麼?美元線有哪些? – Sumsar1812
它在彈出框中獲得一行,但沒有任何反應,光標不會移動到圖像上的corect點。 – user3717416
在另一臺筆記本電腦上試了一下,運行windows 7似乎也起作用。但是我注意到,如果我改變遊戲的分辨率或圖形設置太多,它會停止工作,完全一樣。但是,我一直無法確定它是什麼功能,阻止它正常工作。 – user3717416