2014-09-28 75 views
0

我第一次簽出AutoIt並獲得了一些小程序來製作一些小遊戲的輸入來銷售IronIngots(以IronIngots爲例,使用「Zuflucht」 - 銷售IronIngots,使用「 Zuflucht「 - 從頭開始​​)。我想我是這樣做的,所以它應該可以工作,但可悲的是,它有一點漏洞。它的基礎是按下按鍵,而不是坐在那裏的用戶,並始終按下相同的按鍵。但有時它滯後並跳過單個按鍵。你能告訴我是否有一些錯誤?即使我用相同的startressources啓動程序(相同的遊戲位置)也會觀察到不同的結果。AutoIt v3跳過發送()輸入

你能幫助我嗎?

多數民衆贊成代碼:

Sleep(3000) 
_Ausfuehren() 

Func _Ausfuehren() 
    While 1 
     _ganzeRundeMitBlut() 
    WEnd 
EndFunc 

#cs 
Fertig 
#ce 
Func _ganzeRundeMitBlut() 
    _EineRunde() 
    _Bluttrank(3) 
    _EineRunde() 
    _Bluttrank(2) 
EndFunc 

#cs Fertig 
#ce 
Func _EineRunde() 
    _Silber() 
    _Zuflucht(0) 
    _Shop() 
    _Zuflucht(1) 
EndFunc 


#cs Fertig 
#ce 
Func _Bluttrank($Anzahl) 
    _Press("{ESC}") 
    _Press("{ENTER}") 
    _Press("{RIGHT}") 
    _Press("{ENTER}") 

    While $Anzahl > 0 
     _Press("{ENTER}") 
     $Anzahl = $Anzahl - 1 

     Sleep(2000) 
    WEnd 

    _Press("{ESC}") 
    _Press("{ESC}") 
    _Press("{ESC}") 
EndFunc 

#cs Fertig 
#ce 
Func _Zuflucht ($is_home) 
    _Press("{ESC}") 
    _Press("{DOWN}") 
    _Press("{ENTER}") 
    _Press("{ENTER}") 
    _Press("{RIGHT}") 
    _Press("{DOWN}") 
    _Press("{DOWN}") 
    _Press("{ENTER}") 
    _Press("{ENTER}") 

    If($is_home) Then 
     _Press("{DOWN}") 
     _Press("{ENTER}") 
    EndIf 
EndFunc 

#cs Fertig 
#ce 
Func _Shop() 
    _Press("{UP}") 
    _Press("{ENTER}") 
    Sleep(200) 
    _Press("{ENTER}") 
    Sleep(500) 
    _Press("{ENTER}") 
    _Press("{ENTER}") 
    _Press("{DOWN}") 
    _Press("{ENTER}") 
    _Press("{DOWN}") 
    _Press("{DOWN}") 
    _Press("{DOWN}") 
    _Press("{DOWN}") 
    _Press("{DOWN}") 
    _Press("{DOWN}") 
    _Press("{DOWN}") 
    _Press("{DOWN}") 
    _Press("{RIGHT}") 
    _Press("{ENTER}") 
    _Press("{UP}") 
    _Press("{UP}") 
    _Press("{UP}") 
    _Press("{UP}") 
    _Press("{UP}") 
    _Press("{UP}") 
    _Press("{UP}") 
    _Press("{UP}") 
    _Press("{UP}") 
    _Press("{UP}") 
    _Press("{ENTER}") 
    _Press("{ESC}") 
    _Press("{ESC}") 
EndFunc 

#cs Fertig 
#ce 
Func _Silber() 
    _Press("{RIGHT}") 
    _Press("{ENTER}") 
    _Press("{ENTER}") 
    _Press("{ENTER}") 
    _Press("{ENTER}") 
    _Press("{ENTER}") 
EndFunc 

#cs Fertig 
#ce 
Func _Press ($press_str) 
    Send($press_str) 
    Sleep(700) 
EndFunc 

回答

0

的理由讓你的問題是最有可能的是,劇本是太快遊戲遊刃有餘。由於腳本按鍵的速度比人類快1000倍。我通過添加一些sleep(100)來減慢腳本的速度。這會讓它在按下下一個鍵之前暫停0.1秒。如果您仍然遇到問題,請嘗試增加延遲時間。如果它能夠嘗試將它縮短爲額外的速度

Sleep(3000) 
_Ausfuehren() 

Func _Ausfuehren() 
    While 1 
     _ganzeRundeMitBlut() 
    WEnd 
EndFunc 

#cs 
Fertig 
#ce 
Func _ganzeRundeMitBlut() 
    _EineRunde() 
    _Bluttrank(3) 
    _EineRunde() 
    _Bluttrank(2) 
EndFunc 

#cs Fertig 
#ce 
Func _EineRunde() 
    _Silber() 
    _Zuflucht(0) 
    _Shop() 
    _Zuflucht(1) 
EndFunc 


#cs Fertig 
#ce 
Func _Bluttrank($Anzahl) 
    sleep(100) 
    _Press("{ESC}") 
    sleep(100) 
    _Press("{ENTER}") 
    sleep(100) 
    _Press("{RIGHT}") 
    sleep(100) 
    _Press("{ENTER}") 


    While $Anzahl > 0 
     _Press("{ENTER}") 
     sleep(100) 
     $Anzahl = $Anzahl - 1 

     Sleep(2000) 
    WEnd 
    sleep(100) 
    _Press("{ESC}") 
    sleep(100) 
    _Press("{ESC}") 
    sleep(100) 
    _Press("{ESC}") 
    sleep(100) 
EndFunc 

#cs Fertig 
#ce 
Func _Zuflucht ($is_home) 
    sleep(100) 
    _Press("{ESC}") 
    sleep(100) 
    _Press("{DOWN}") 
    sleep(100) 
    _Press("{ENTER}") 
    sleep(100) 
    _Press("{ENTER}") 
    sleep(100) 
    _Press("{RIGHT}") 
    sleep(100) 
    _Press("{DOWN}") 
    sleep(100) 
    _Press("{DOWN}") 
    sleep(100) 
    _Press("{ENTER}") 
    sleep(100) 
    _Press("{ENTER}") 
    sleep(100) 

    If($is_home) Then 
     sleep(100) 
     _Press("{DOWN}") 
     sleep(100) 
     _Press("{ENTER}") 
     sleep(100) 
    EndIf 
EndFunc 

#cs Fertig 
#ce 
Func _Shop() 
    sleep(100) 
    _Press("{UP}") 
    sleep(100) 
    _Press("{ENTER}") 
    Sleep(200) 
    _Press("{ENTER}") 
    Sleep(500) 
    _Press("{ENTER}") 
    sleep(100) 
    _Press("{ENTER}") 
    sleep(100) 
    _Press("{DOWN}") 
    sleep(100) 
    _Press("{ENTER}") 
    sleep(100) 
    _Press("{DOWN}") 
    sleep(100) 
    _Press("{DOWN}") 
    sleep(100) 
    _Press("{DOWN}") 
    sleep(100) 
    _Press("{DOWN}") 
    sleep(100) 
    _Press("{DOWN}") 
    sleep(100) 
    _Press("{DOWN}") 
    sleep(100) 
    _Press("{DOWN}") 
    sleep(100) 
    _Press("{DOWN}") 
    sleep(100) 
    _Press("{RIGHT}") 
    sleep(100) 
    _Press("{ENTER}") 
    sleep(100) 
    _Press("{UP}") 
    sleep(100) 
    _Press("{UP}") 
    sleep(100) 
    _Press("{UP}") 
    sleep(100) 
    _Press("{UP}") 
    sleep(100) 
    _Press("{UP}") 
    sleep(100) 
    _Press("{UP}") 
    sleep(100) 
    _Press("{UP}") 
    sleep(100) 
    _Press("{UP}") 
    sleep(100) 
    _Press("{UP}") 
    sleep(100) 
    _Press("{UP}") 
    sleep(100) 
    _Press("{ENTER}") 
    sleep(100) 
    _Press("{ESC}") 
    sleep(100) 
    _Press("{ESC}") 
    sleep(100) 
EndFunc 

#cs Fertig 
#ce 
Func _Silber() 
    sleep(100) 
    _Press("{RIGHT}") 
    sleep(100) 
    _Press("{ENTER}") 
    sleep(100) 
    _Press("{ENTER}") 
    sleep(100) 
    _Press("{ENTER}") 
    sleep(100) 
    _Press("{ENTER}") 
    sleep(100) 
    _Press("{ENTER}") 
    sleep(100) 
EndFunc 

#cs Fertig 
#ce 
Func _Press ($press_str) 
    Send($press_str) 
    Sleep(700) 
EndFunc